A Engenharia de Software surgiu como resposta à chamada "Crise do Software" em 1968, quando a NATO organizou a primeira conferência sobre o tema. A incapacidade de gerenciar a crescente complexidade dos sistemas levou à necessidade de abordagens mais sistemáticas.
Engenharia de Software é a aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, operação e manutenção de software.
Enquanto a Ciência da Computação foca em teoria e algoritmos, a Engenharia de Software aplica esses conhecimentos para construir sistemas úteis de forma eficiente e confiável.
Modelo | Características | Quando Usar |
---|---|---|
Cascata | Fases sequenciais rígidas, documentação extensa | Requisitos bem definidos e estáveis |
Incremental | Entrega por incrementos funcionais | Quando se pode priorizar funcionalidades |
Espiral | Riscos avaliados em ciclos iterativos | Projetos complexos com alto risco |
RUP | Processo Unificado com 4 fases (iniciação, elaboração, construção, transição) | Projetos grandes e complexos |
Definição dos requisitos e funcionalidades do sistema
Projeto e implementação do software
Testes para garantir que atende aos requisitos
Manutenção e adaptação a novas necessidades
O que o sistema deve fazer (cadastrar usuário, gerar relatório)
Restrições e qualidades do sistema (performance, segurança, usabilidade)
O documento de requisitos (SRS) deve incluir:
Interações entre atores e sistema
Estrutura estática do sistema
Interações temporais entre objetos
Fluxos de trabalho e processos
Separação entre dados, interface e lógica
Hierarquia de responsabilidades (apresentação, negócio, dados)
Separação entre provedor e consumidor de serviços
Sistema como serviços independentes e especializados
Baseadas em requisitos não-funcionais: