Dicionário de Termos Técnicos em Desenvolvimento de Software
📚 Visão Geral
Este dicionário contém termos técnicos comumente utilizados em desenvolvimento de software, arquitetura de sistemas e tecnologia em geral.
🔧 Termos de Performance e Otimização
Overhead
Definição: Custo adicional ou sobrecarga que uma operação ou processo adiciona ao sistema.
Exemplo: O overhead de criar uma nova thread inclui alocação de memória, inicialização e contexto de switching.
Uso: "O overhead de fazer uma chamada HTTP é muito alto para operações simples."
Bottleneck (Gargalo)
Definição: Ponto no sistema que limita a performance ou throughput geral.
Exemplo: Um banco de dados lento pode ser o bottleneck de uma aplicação web.
Uso: "Identificamos o bottleneck na consulta SQL que estava demorando 5 segundos."
Latency (Latência)
Definição: Tempo que uma operação leva para ser completada.
Exemplo: Latência de rede é o tempo para uma requisição ir e voltar.
Uso: "A latência da API está muito alta, precisamos otimizar."
Throughput
Definição: Quantidade de trabalho que um sistema pode processar por unidade de tempo.
Exemplo: Throughput de 1000 requests por segundo.
Uso: "O throughput do sistema aumentou 50% após a otimização."
Scalability (Escalabilidade)
Definição: Capacidade de um sistema de lidar com crescimento de carga.
Exemplo: Sistema escalável pode adicionar mais servidores para suportar mais usuários.
Uso: "A arquitetura microservices oferece melhor escalabilidade."
🏗️ Termos de Arquitetura
Coupling (Acoplamento)
Definição: Grau de dependência entre componentes ou módulos.
Exemplo: Alto acoplamento significa que mudanças em um componente afetam outros.
Uso: "Precisamos reduzir o acoplamento entre os módulos."
Cohesion (Coesão)
Definição: Grau em que elementos de um módulo pertencem juntos.
Exemplo: Alta coesão significa que um módulo tem responsabilidades bem definidas.
Uso: "A classe tem alta coesão, todas as responsabilidades estão relacionadas."
Abstraction (Abstração)
Definição: Processo de esconder complexidade e mostrar apenas funcionalidades essenciais.
Exemplo: Interface que esconde detalhes de implementação.
Uso: "A abstração permite que trabalhemos com conceitos complexos de forma simples."
Encapsulation (Encapsulamento)
Definição: Agrupamento de dados e métodos que operam nesses dados.
Exemplo: Classe que mantém dados privados e métodos públicos.
Uso: "O encapsulamento protege os dados internos da classe."
🔄 Termos de Concorrência
Race Condition
Definição: Situação onde o comportamento do programa depende da ordem de execução de threads.
Exemplo: Dois threads incrementando a mesma variável simultaneamente.
Uso: "Temos uma race condition no acesso ao contador compartilhado."
Deadlock
Definição: Situação onde dois ou mais processos ficam bloqueados esperando recursos.
Exemplo: Thread A espera lock do Thread B, que espera lock do Thread A.
Uso: "O deadlock está impedindo o processamento das transações."
Starvation
Definição: Situação onde um processo não consegue acessar recursos necessários.
Exemplo: Thread de baixa prioridade nunca consegue executar.
Uso: "A starvation está afetando os processos de baixa prioridade."
💾 Termos de Banco de Dados
ACID
Definição: Propriedades que garantem confiabilidade em transações de banco de dados.
- Atomicity: Transação é indivisível
- Consistency: Dados permanecem consistentes
- Isolation: Transações não interferem entre si
- Durability: Mudanças são permanentes
Uso: "O banco garante as propriedades ACID para todas as transações."
Normalization (Normalização)
Definição: Processo de organizar dados para reduzir redundância e dependências.
Exemplo: Dividir uma tabela em múltiplas tabelas relacionadas.
Uso: "A normalização ajudou a eliminar dados duplicados."
Index
Definição: Estrutura de dados que melhora a velocidade de recuperação de dados.
Exemplo: Índice em coluna de email para busca rápida.
Uso: "Criamos um índice na coluna de data para otimizar as consultas."
🌐 Termos de Rede e Web
API (Application Programming Interface)
Definição: Conjunto de regras e protocolos para comunicação entre aplicações.
Exemplo: REST API que permite acesso a dados via HTTP.
Uso: "A API permite que diferentes sistemas se comuniquem."
REST (Representational State Transfer)
Definição: Estilo de arquitetura para sistemas distribuídos.
Exemplo: API que usa HTTP methods (GET, POST, PUT, DELETE).
Uso: "A API REST segue os princípios de recursos e estados."
GraphQL
Definição: Linguagem de consulta e runtime para APIs.
Exemplo: Permite que clientes especifiquem exatamente quais dados precisam.
Uso: "GraphQL reduz over-fetching e under-fetching de dados."
WebSocket
Definição: Protocolo de comunicação bidirecional em tempo real.
Exemplo: Chat em tempo real ou atualizações de dashboard.
Uso: "WebSocket permite comunicação em tempo real entre cliente e servidor."
🔒 Termos de Segurança
Authentication (Autenticação)
Definição: Processo de verificar a identidade de um usuário.
Exemplo: Login com usuário e senha.
Uso: "A autenticação garante que apenas usuários autorizados acessem o sistema."
Authorization (Autorização)
Definição: Processo de determinar permissões de um usuário autenticado.
Exemplo: Verificar se usuário pode acessar um recurso específico.
Uso: "A autorização controla o que cada usuário pode fazer no sistema."
Encryption (Criptografia)
Definição: Processo de converter dados em formato ilegível para proteger informações.
Exemplo: Senhas armazenadas como hash criptográfico.
Uso: "A criptografia protege dados sensíveis em trânsito e em repouso."
JWT (JSON Web Token)
Definição: Padrão para criar tokens de acesso seguros.
Exemplo: Token que contém informações do usuário e permissões.
Uso: "JWT é usado para autenticação stateless em APIs."
🐳 Termos de DevOps e Infraestrutura
Container
Definição: Unidade de software que empacota código e dependências.
Exemplo: Docker container que roda uma aplicação isolada.
Uso: "Containers garantem que a aplicação rode igual em qualquer ambiente."
Orchestration
Definição: Gerenciamento automatizado de containers e serviços.
Exemplo: Kubernetes orquestra múltiplos containers.
Uso: "A orquestração automatiza o deploy e scaling de aplicações."
CI/CD (Continuous Integration/Continuous Deployment)
Definição: Práticas para automatizar integração e deploy de código.
Exemplo: Pipeline que testa e deploya código automaticamente.
Uso: "CI/CD reduz tempo entre desenvolvimento e produção."
Infrastructure as Code (IaC)
Definição: Gerenciamento de infraestrutura através de código.
Exemplo: Terraform ou CloudFormation para criar recursos.
Uso: "IaC permite versionar e automatizar configuração de infraestrutura."
📊 Termos de Monitoramento e Observabilidade
Observability
Definição: Capacidade de entender o estado interno de um sistema através de outputs externos.
Exemplo: Logs, métricas e traces para entender comportamento.
Uso: "Observabilidade é essencial para sistemas distribuídos complexos."
SLI (Service Level Indicator)
Definição: Métrica que indica o nível de serviço.
Exemplo: Tempo de resposta, disponibilidade, throughput.
Uso: "SLIs ajudam a medir a qualidade do serviço."
SLO (Service Level Objective)
Definição: Meta específica para um SLI.
Exemplo: 99.9% de disponibilidade ou resposta < 200ms.
Uso: "SLOs definem expectativas de performance do serviço."
SLA (Service Level Agreement)
Definição: Acordo formal sobre níveis de serviço.
Exemplo: Contrato com cliente sobre disponibilidade e performance.
Uso: "SLA define obrigações contratuais de qualidade de serviço."
🧪 Termos de Testes
Unit Test
Definição: Teste que verifica uma unidade específica de código.
Exemplo: Teste de um método ou classe isoladamente.
Uso: "Unit tests garantem que cada componente funciona corretamente."
Integration Test
Definição: Teste que verifica interação entre componentes.
Exemplo: Teste de API ou comunicação com banco de dados.
Uso: "Integration tests verificam se componentes trabalham juntos."
End-to-End Test
Definição: Teste que verifica fluxo completo da aplicação.
Exemplo: Teste de cenário completo do usuário.
Uso: "E2E tests simulam uso real da aplicação."
Mock
Definição: Objeto que simula comportamento de dependência real.
Exemplo: Mock de banco de dados para testes.
Uso: "Mocks isolam unidades de código durante testes."
🔄 Termos de Padrões e Práticas
Design Pattern
Definição: Solução reutilizável para problemas comuns de design.
Exemplo: Singleton, Factory, Observer patterns.
Uso: "Design patterns ajudam a criar código mais limpo e manutenível."
Anti-pattern
Definição: Padrão que parece ser uma solução mas causa mais problemas.
Exemplo: God Object, Spaghetti Code, Golden Hammer.
Uso: "Anti-patterns devem ser evitados para manter qualidade do código."
Refactoring
Definição: Processo de melhorar código sem mudar comportamento externo.
Exemplo: Extrair método, renomear variável, reorganizar código.
Uso: "Refactoring melhora legibilidade e manutenibilidade do código."
Technical Debt
Definição: Custo adicional futuro causado por escolhas técnicas inadequadas.
Exemplo: Código legado difícil de manter ou tecnologias obsoletas.
Uso: "Technical debt precisa ser pago para evitar problemas futuros."
📈 Termos de Métricas e Analytics
KPI (Key Performance Indicator)
Definição: Métrica que indica sucesso de objetivos de negócio.
Exemplo: Taxa de conversão, tempo de resposta, satisfação do cliente.
Uso: "KPIs ajudam a medir progresso em direção aos objetivos."
ROI (Return on Investment)
Definição: Medida de eficiência de um investimento.
Exemplo: Benefício financeiro dividido pelo custo do investimento.
Uso: "ROI ajuda a justificar investimentos em tecnologia."
MTTR (Mean Time to Recovery)
Definição: Tempo médio para recuperar de uma falha.
Exemplo: Tempo para restaurar serviço após incidente.
Uso: "MTTR é uma métrica importante para SRE."
MTBF (Mean Time Between Failures)
Definição: Tempo médio entre falhas de um sistema.
Exemplo: Tempo entre incidentes de disponibilidade.
Uso: "MTBF indica confiabilidade do sistema."
🚀 Termos de Deploy e Release
Blue-Green Deployment
Definição: Estratégia de deploy com duas versões idênticas.
Exemplo: Troca instantânea entre versão antiga e nova.
Uso: "Blue-green deployment permite rollback instantâneo."
Canary Deployment
Definição: Deploy gradual para pequeno percentual de usuários.
Exemplo: Nova versão para 5% dos usuários primeiro.
Uso: "Canary deployment reduz risco de deploy de novas versões."
Rollback
Definição: Processo de reverter para versão anterior.
Exemplo: Voltar para versão estável após problema.
Uso: "Rollback é essencial para minimizar tempo de indisponibilidade."
Feature Flag
Definição: Técnica para habilitar/desabilitar funcionalidades dinamicamente.
Exemplo: Controle de acesso a novas features sem deploy.
Uso: "Feature flags permitem deploy seguro e testes A/B."
📚 Recursos Adicionais
Livros Recomendados
- "The Pragmatic Programmer" - Andrew Hunt, David Thomas
- "Clean Code" - Robert C. Martin
- "Design Patterns" - Gang of Four
- "Site Reliability Engineering" - Google
Sites e Documentações
🎯 Conclusão
Este dicionário serve como referência rápida para termos técnicos comuns em desenvolvimento de software. Manter-se atualizado com estes termos é essencial para comunicação efetiva em equipes técnicas e para compreensão de documentações e artigos técnicos.