Engenharia de Software: ciclos de vida e qualidade
Escopo
Modelos de processo (cascata, incremental, espiral, ágil), engenharia de requisitos, UML, padrões de projeto (GoF), arquitetura em camadas, microsserviços, testes (unitário, integração, sistema, aceitação) e qualidade (ISO 25010, revisão, métricas).
Conceitos essenciais
Requisitos funcionais descrevem o que o sistema faz; não funcionais descrevem como (desempenho, segurança, usabilidade). Em UML, casos de uso capturam atores e interações; diagramas de classe mostram estrutura. Padrões GoF dividem-se em criacionais (Factory, Singleton), estruturais (Adapter, Facade) e comportamentais (Observer, Strategy). Microsserviços favorecem autonomia e escalabilidade, mas aumentam a complexidade operacional. Testes unitários isolam a menor unidade; testes de integração verificam interfaces entre módulos.
Armadilhas
Confundir requisito não funcional com funcional; trocar as categorias de padrões; achar que ágil dispensa documentação; confundir verificação (“construímos certo?”) com validação (“construímos o certo?”); supor que TDD é ferramenta, quando é prática de projeto.
Regra prática
Ao classificar um requisito, pergunte: “isso descreve uma ação do sistema ou uma qualidade dela?” Ação → funcional; qualidade → não funcional.
Exemplo trabalhado: “O sistema deve responder em até 2 segundos.” É não funcional (desempenho), ainda que use o verbo “deve”.