Desenvolvimento de Sistemas
Conceitos fundamentais de engenharia de software e desenvolvimento de sistemas para concursos públicos.
Cartões · 30
- Modelo Cascata (Waterfall)
- Modelo sequencial e linear de desenvolvimento, onde cada fase deve ser concluída antes do início da próxima, com baixa tolerância a mudanças de requisitos.
- Modelo Espiral
- Modelo iterativo orientado a riscos, dividido em quatro quadrantes: determinação de objetivos, análise de riscos, desenvolvimento e planejamento da próxima fase.
- Scrum: Product Owner (PO)
- Responsável por maximizar o valor do produto e gerenciar o Product Backlog, definindo prioridades das histórias de usuário.
- Scrum: Scrum Master
- Líder servidor que atua como facilitador, garante a aplicação dos princípios do Scrum e remove impedimentos da equipe de desenvolvimento.
- Kanban: Princípio do WIP (Work in Progress)
- Limitação da quantidade de itens de trabalho em andamento simultâneo para evitar gargalos, reduzir o lead time e manter o fluxo contínuo.
- XP (Extreme Programming): Práticas Principais
- Metodologia ágil focada em excelência técnica, incluindo Programação em Par, TDD, Integração Contínua, Refatoração e Feedback Constante.
- TDD (Test-Driven Development)
- Técnica de desenvolvimento guiado por testes baseada no ciclo Red (escrever teste que falha), Green (fazer passar) e Refactor (melhorar o código).
- Requisitos Funcionais vs Não Funcionais
- Funcionais descrevem o comportamento e serviços do sistema; Não Funcionais definem restrições de qualidade como desempenho, segurança e confiabilidade.
- Casos de Uso: Include vs Extend
- Include indica execução obrigatória do caso de uso incluído; Extend representa comportamento opcional ou condicional que estende o fluxo básico.
- UML: Diagrama de Classes
- Diagrama estrutural que mapeia classes, atributos, operações e relacionamentos estáticos entre objetos no sistema.
- UML: Diagrama de Sequência
- Diagrama comportamental que modela a troca de mensagens entre objetos ordenadas cronologicamente ao longo de linhas de vida.
- UML: Diagrama de Atividades
- Diagrama comportamental que representa o fluxo de controle e de dados passo a passo entre ações e atividades do sistema.
- Acoplamento vs Coesão
- Acoplamento mede o grau de interdependência entre módulos (deseja-se fraco); Coesão mede a afinidade interna das funções de um módulo (deseja-se alta).
- Design Pattern: Singleton (GoF Criacional)
- Garante que uma classe possua apenas uma única instância em todo o ciclo de vida da aplicação e provê um ponto global de acesso a ela.
- Design Pattern: Factory Method (GoF Criacional)
- Define uma interface para criar objetos, delegando às subclasses a decisão sobre qual classe concreta específica instanciar.
- Design Pattern: Adapter (GoF Estrutural)
- Converte a interface de uma classe em outra interface esperada pelo cliente, permitindo que classes com interfaces incompatíveis trabalhem juntas.
- Design Pattern: Observer (GoF Comportamental)
- Define uma dependência um-para-muitos entre objetos, notificando e atualizando automaticamente os dependentes quando o estado do sujeito muda.
- Design Pattern: Strategy (GoF Comportamental)
- Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis em tempo de execução sem alterar o cliente.
- SOLID: Single Responsibility Principle (SRP)
- Uma classe deve ter apenas um único motivo para mudar, concentrando-se em apenas uma responsabilidade específica no domínio.
- SOLID: Open/Closed Principle (OCP)
- Entidades de software devem estar abertas para extensão, mas fechadas para modificação direta em seu código-fonte estável.
- SOLID: Liskov Substitution Principle (LSP)
- Objetos de uma superclasse devem poder ser substituídos por objetos de suas subclasses sem quebrar a consistência da aplicação.
- SOLID: Interface Segregation Principle (ISP)
- Clientes não devem ser forçados a depender de interfaces que não utilizam; muitas interfaces específicas são melhores que uma geral.
- SOLID: Dependency Inversion Principle (DIP)
- Módulos de alto nível não devem depender de módulos de baixo nível; ambos devem depender de abstrações (interfaces/classes abstratas).
- Testes de Software: Caixa-Preta vs Caixa-Branca
- Caixa-Preta avalia entradas e saídas sem conhecer a estrutura interna do código; Caixa-Branca analisa a lógica interna, caminhos e fluxos do código.
- Tipos de Testes: Unidade, Integração e Sistema
- Unidade testa o menor bloco isolado; Integração avalia a interface entre módulos combinados; Sistema valida o produto final integrado contra requisitos.
- CI/CD: Integração e Entrega Contínuas
- CI automatiza a mesclagem e teste contínuo do código; CD automatiza o processo de disponibilização e deploy em ambientes de homologação e produção.
- Arquitetura REST: Principais Restrições
- Cliente-servidor, stateless (sem estado na sessão), cacheável, interface uniforme, sistema em camadas e código sob demanda (opcional).
- Arquitetura de Microsserviços
- Abordagem que desenvolve uma aplicação como um conjunto de serviços pequenos, autônomos, fracamente acoplados e implantáveis de forma independente.
- CMMI: Níveis de Maturidade (Representação por Estágios)
- Nível 1 Inicial, Nível 2 Gerenciado, Nível 3 Definido, Nível 4 Quantitativamente Gerenciado e Nível 5 Otimizado.
- Gerência de Configuração de Software (GCS)
- Disciplina que identifica, controla, audita e documenta alterações em artefatos de software durante todo o ciclo de vida do projeto.