Entenda o que é engenharia de software, o que ela faz, quais são as etapas do ciclo de vida, os principais modelos de processo e como o tema é cobrado em concursos públicos
Olá, querida(o) estudante! Neste artigo, vamos estudar uma das disciplinas mais importantes — e mais cobradas — em concursos de Tecnologia da Informação: a engenharia de software.
Entender o que é engenharia de software vai além de saber programar. A disciplina envolve o ciclo de vida do software, modelos de desenvolvimento, requisitos, testes, qualidade e métodos ágeis, além de temas mais recentes, como DevOps, integração e entrega contínuas (CI/CD), segurança, arquitetura e controle de versão.
Ao longo do texto, você vai entender como essas peças se encaixam, quando cada modelo ou técnica é mais adequado e quais diferenças conceituais as bancas mais exploram.
O que é engenharia de software
Engenharia de software é a disciplina da engenharia que trata de todos os aspectos da produção de software, desde a concepção e a especificação do sistema até a sua manutenção depois que ele entra em uso. A definição, consagrada por Ian Sommerville, é a mais cobrada em provas.
O IEEE complementa essa ideia ao definir a engenharia de software como a aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, à operação e à manutenção do software.
A disciplina surgiu no fim da década de 1960, em resposta à chamada crise do software: projetos que estouravam prazos e orçamentos, sistemas cheios de falhas e difíceis de manter. A proposta era aplicar ao software o mesmo rigor usado em outras engenharias.
O que faz a engenharia de software
Na prática, a engenharia de software organiza o desenvolvimento para que o produto final seja funcional, confiável, fácil de manter e entregue dentro do prazo e do orçamento. Para isso, ela atua em diversas frentes:
- Processos: define a sequência de atividades do desenvolvimento (os modelos de processo, como cascata e ágil).
- Requisitos: identifica e documenta o que o sistema deve fazer.
- Projeto e arquitetura: define como o sistema será estruturado.
- Qualidade e testes: verifica se o software atende aos requisitos e está livre de defeitos.
- Gerência: planeja prazos, custos, riscos, equipes e configuração (versões do software).
- Manutenção e evolução: corrige falhas e adapta o sistema a novas necessidades.
Quais são as etapas do ciclo de vida de um software
O ciclo de vida do software é o conjunto de etapas pelas quais um sistema passa, desde a ideia inicial até a sua desativação. Os nomes variam conforme o autor, mas as atividades fundamentais são:
- Levantamento e análise de requisitos: entender o problema e definir o que o sistema deve fazer, junto aos usuários e demais interessados.
- Projeto (design): definir a arquitetura, os componentes, as interfaces e o modelo de dados — ou seja, como o sistema atenderá aos requisitos.
- Implementação (codificação): transformar o projeto em código-fonte.
- Testes (verificação e validação): verificar se o software funciona corretamente e se atende às necessidades do usuário.
- Implantação (deploy): colocar o sistema em produção, disponível para os usuários.
- Manutenção e evolução: corrigir defeitos, adaptar o sistema a novos ambientes e incluir melhorias.
Sommerville resume essas atividades em quatro grandes grupos, que aparecem com frequência em provas: especificação, projeto e implementação, validação e evolução.
Um ponto importante é que essas etapas não são isoladas. Uma falha nos requisitos se propaga para o projeto, o código e os testes — e, quanto mais tarde um erro é descoberto, mais caro é corrigi-lo. Por isso, cada etapa alimenta a seguinte: os requisitos orientam o projeto e servem de base para os casos de teste, e o feedback da manutenção gera novos requisitos. O que muda de um modelo de processo para outro é a ordem e a frequência com que essas etapas acontecem.
Vale ainda conhecer a distinção entre os tipos de manutenção, tema clássico de prova:
- Corretiva: corrige defeitos encontrados.
- Adaptativa: adapta o software a mudanças no ambiente (novo sistema operacional, nova legislação).
- Perfectiva (evolutiva): inclui melhorias e novas funcionalidades.
- Preventiva: melhora a manutenibilidade para evitar problemas futuros.
Qual é a diferença entre engenharia de software e programação
Programação é a atividade de escrever código-fonte em uma linguagem de programação para resolver um problema. Engenharia de software é muito mais ampla: envolve todo o processo de produção do software, do qual a programação é apenas uma das etapas (a implementação).
Enquanto a programação responde à pergunta “como escrever este código?”, a engenharia de software se preocupa com questões como: o que exatamente o cliente precisa? Como o sistema será estruturado? Como garantir a qualidade? Quanto vai custar e quanto tempo vai levar? Como manter e evoluir o sistema por anos?
Uma boa analogia é a construção civil: saber assentar tijolos (programar) é essencial, mas construir um prédio exige projeto arquitetônico, cálculos estruturais, cronograma, orçamento e fiscalização (engenharia). Um programa pequeno, feito por uma pessoa para uso próprio, pode dispensar boa parte desse rigor; um sistema bancário ou governamental, usado por milhões de pessoas e mantido por diversas equipes, não.
Quais são os principais processos e modelos de desenvolvimento de software
Um modelo de processo de software é uma representação simplificada de como as etapas do ciclo de vida são organizadas. Os mais cobrados são:
- Cascata (waterfall ou ciclo de vida clássico): as etapas acontecem em sequência linear — requisitos, projeto, implementação, testes e implantação —, e cada fase só começa quando a anterior termina. É fortemente baseado em documentação.
- Incremental: o sistema é entregue em partes (incrementos), cada uma com uma parcela das funcionalidades. O cliente começa a usar o software mais cedo.
- Prototipação: constrói-se um protótipo rápido para ajudar o cliente a esclarecer requisitos que ainda não estão claros.
- Espiral (Barry Boehm): combina iterações com uma forte ênfase na análise de riscos a cada volta da espiral.
- Processo Unificado (RUP): iterativo e incremental, organizado em quatro fases — concepção, elaboração, construção e transição — e guiado por casos de uso e centrado na arquitetura.
- Métodos ágeis (Scrum, XP, Kanban): desenvolvimento em ciclos curtos e iterativos, com entregas frequentes, colaboração constante com o cliente e abertura a mudanças.
Qual é a diferença entre o modelo cascata e as metodologias ágeis
Essa é a comparação mais clássica do tema:
| Característica | Cascata | Ágil |
|---|---|---|
| Fluxo | Sequencial e linear | Iterativo e incremental |
| Requisitos | Definidos no início, estáveis | Evoluem ao longo do projeto |
| Entregas | Uma entrega no final | Entregas frequentes e funcionais |
| Mudanças | Caras e difíceis | Bem-vindas, mesmo tardiamente |
| Documentação | Extensa e formal | Suficiente, sem excessos |
| Participação do cliente | Concentrada no início e no fim | Contínua |
O Manifesto Ágil (2001) resume a filosofia dos métodos ágeis em quatro valores: indivíduos e interações mais que processos e ferramentas; software em funcionamento mais que documentação abrangente; colaboração com o cliente mais que negociação de contratos; e responder a mudanças mais que seguir um plano. Atenção: o manifesto não diz que os itens da direita não têm valor — apenas que os da esquerda são mais valorizados. Essa é uma pegadinha frequente.
Quando usar cada modelo
Não existe um modelo melhor em qualquer situação. A escolha depende das características do projeto:
- Cascata: requisitos estáveis e bem compreendidos, contratos de escopo fechado e sistemas críticos ou fortemente regulados, que exigem documentação formal.
- Incremental: quando o cliente precisa usar parte do sistema logo, ou há restrição de equipe ou orçamento.
- Prototipação: quando os requisitos estão vagos e o cliente precisa “ver” para decidir.
- Espiral: projetos grandes, complexos e de alto risco.
- Ágeis: requisitos incertos ou que mudam com frequência, necessidade de entregar valor rapidamente e equipes pequenas, com cliente disponível para participar.
O que são requisitos funcionais e não funcionais
Requisitos são as descrições do que o sistema deve fazer e das restrições sob as quais ele deve operar. Eles são a base de todo o desenvolvimento — e uma das principais causas de fracasso de projetos quando mal definidos. Dividem-se em dois tipos:
- Requisitos funcionais (RF): descrevem o que o sistema deve fazer — as funções e serviços oferecidos e como ele deve reagir a determinadas entradas. Exemplos: “o sistema deve permitir o cadastro de usuários”; “o sistema deve emitir relatório mensal de vendas”.
- Requisitos não funcionais (RNF): descrevem como o sistema deve ser — restrições e atributos de qualidade, como desempenho, segurança, usabilidade, disponibilidade, confiabilidade e portabilidade. Exemplos: “o sistema deve responder às consultas em até 2 segundos”; “o sistema deve estar disponível 99,9% do tempo”; “as senhas devem ser armazenadas criptografadas”.
Uma dica para não errar: se o requisito descreve uma ação ou serviço do sistema, é funcional; se descreve uma qualidade ou restrição, é não funcional. Sommerville ainda menciona os requisitos de domínio, derivados do contexto de aplicação do sistema, como regras de uma legislação específica.
O processo de trabalhar com requisitos é chamado de engenharia de requisitos e inclui atividades como elicitação (levantamento, por meio de entrevistas, questionários, workshops e observação), análise e negociação, especificação, validação e gerenciamento de mudanças.
Quais são os principais tipos de testes de software
Os testes são a principal forma de encontrar defeitos antes que o software chegue ao usuário. Eles podem ser classificados de diferentes formas.
Quanto ao nível (ou estágio) em que são aplicados:
- Teste de unidade: verifica pequenas partes isoladas do código, como funções e métodos.
- Teste de integração: verifica se os componentes funcionam corretamente em conjunto.
- Teste de sistema: avalia o sistema completo, em um ambiente semelhante ao de produção.
- Teste de aceitação: realizado com o cliente ou usuário para confirmar se o software atende às suas necessidades. Inclui os testes alfa (no ambiente do desenvolvedor) e beta (no ambiente do usuário).
Quanto à técnica:
- Caixa-preta (funcional): testa as entradas e saídas com base nos requisitos, sem olhar o código interno. Técnicas comuns: partição de equivalência e análise de valor-limite.
- Caixa-branca (estrutural): testa a lógica interna, com acesso ao código, buscando cobrir caminhos, decisões e laços.
Outros tipos frequentes em provas são o teste de regressão (garante que alterações não quebraram o que já funcionava), o teste de desempenho, incluindo os de carga e estresse, e o teste de segurança.
Também vale diferenciar verificação de validação, distinção atribuída a Boehm: a verificação pergunta “estamos construindo o produto corretamente?” (conformidade com a especificação); a validação pergunta “estamos construindo o produto certo?” (atendimento às necessidades do usuário).
Qualidade de software
A qualidade de software vai além dos testes e envolve todo o processo. A norma ISO/IEC 25010 (família SQuaRE) define as características de qualidade de um produto de software. Na versão de 2011, ainda a mais cobrada em provas, elas são: adequação funcional, eficiência de desempenho, compatibilidade, usabilidade, confiabilidade, segurança, manutenibilidade e portabilidade (a revisão de 2023 renomeou e acrescentou algumas características). Em provas, a norma costuma aparecer ao lado de modelos de maturidade de processo, como o CMMI e o MPS.BR.
O que é Scrum e qual é sua relação com a engenharia de software
O Scrum é um framework ágil para desenvolver e manter produtos complexos. Ele organiza o trabalho em ciclos curtos chamados sprints, com duração fixa de até um mês, ao fim dos quais a equipe entrega um incremento utilizável do produto.
Na engenharia de software, o Scrum é uma das formas de organizar o processo de desenvolvimento: em vez de seguir as etapas do ciclo de vida uma única vez, de forma sequencial, a equipe percorre requisitos, projeto, implementação e testes a cada sprint. Vale notar que o Scrum se concentra na gestão do trabalho e não prescreve práticas técnicas de programação — por isso, é comum combiná-lo com práticas do XP, como programação em pares, TDD e integração contínua.
Segundo o Guia do Scrum (versão de 2020), o framework é formado por:
- Responsabilidades (accountabilities): o Product Owner, que maximiza o valor do produto e gerencia o Product Backlog; o Scrum Master, que garante que o Scrum seja compreendido e aplicado; e os Developers, que constroem o incremento. Juntos, formam o Scrum Team.
- Eventos: a Sprint (que contém todos os demais), a Sprint Planning, a Daily Scrum (reunião diária de até 15 minutos), a Sprint Review e a Sprint Retrospective.
- Artefatos: o Product Backlog (lista ordenada do que é necessário no produto), o Sprint Backlog e o Incremento. Cada artefato tem um compromisso associado: a Meta do Produto, a Meta da Sprint e a Definição de Pronto, respectivamente.
Atenção às pegadinhas: desde 2020, o Guia do Scrum fala em Developers, e não mais em “Development Team”; e o Scrum não é uma metodologia completa, e sim um framework leve, que deixa propositalmente em aberto como o trabalho técnico deve ser feito.
Temas modernos: DevOps, CI/CD, segurança, arquitetura e controle de versão
A engenharia de software evoluiu, e os editais acompanharam essa mudança. Hoje, é comum encontrar os seguintes temas:
- DevOps: cultura e conjunto de práticas que aproxima as equipes de desenvolvimento (Dev) e de operações (Ops), com foco em colaboração, automação, monitoramento e entregas rápidas e confiáveis. Pode ser visto como uma extensão dos princípios ágeis até a implantação e a operação do software.
- CI/CD: a integração contínua (CI) consiste em integrar o código dos desenvolvedores ao repositório principal com frequência, executando build e testes automatizados a cada integração. A entrega contínua mantém o software sempre pronto para ser implantado (com uma aprovação manual antes da produção), enquanto a implantação contínua leva cada mudança aprovada nos testes automaticamente para produção.
- Segurança (DevSecOps): integra práticas de segurança em todo o ciclo de vida, desde os requisitos — e não apenas no final. É a ideia de shift left: antecipar a segurança e os testes para as fases iniciais.
- Arquitetura de software: define a estrutura de alto nível do sistema. Estilos frequentes em provas incluem a arquitetura em camadas, o padrão MVC, a arquitetura monolítica e os microsserviços (serviços pequenos, independentes e implantados separadamente).
- Controle de versão: registra o histórico de alterações do código e permite o trabalho simultâneo de várias pessoas. O Git é a ferramenta dominante; é um sistema distribuído, em que cada desenvolvedor tem uma cópia completa do repositório. Comandos como commit, branch, merge, push e pull aparecem com frequência em questões. Em provas, o tema costuma aparecer dentro da gerência de configuração de software.
Repare como esses temas se conectam ao ciclo de vida: o controle de versão sustenta a implementação; a CI automatiza os testes; a CD automatiza a implantação; e o DevOps integra tudo isso à operação e à manutenção.
Questões de concurso comentadas
Vamos ver como a engenharia de software costuma aparecer em provas!
1) Ano: 2025 Banca: CESPE/CEBRASPE
Julgue o próximo item, a respeito de metodologias de gerenciamento de projetos.
A metodologia cascata é altamente iterativa, permitindo revisões e alterações frequentes durante todas as fases do projeto.
Gabarito: Errado
Comentário: o item descreve características dos métodos ágeis, e não do cascata. O modelo cascata é sequencial e linear: cada fase só começa quando a anterior termina, e mudanças nos requisitos após o início do projeto são difíceis e caras. Trocar as características dos dois modelos é uma das estratégias mais comuns das bancas.
2) Ano: 2025 Banca: CESPE/CEBRASPE
A respeito de engenharia de software, julgue o item que se segue.
Em um software, os requisitos não funcionais incluem desempenho, usabilidade, confiabilidade, segurança, disponibilidade e manutenibilidade.
Gabarito: Certo
Comentário: todos os itens listados são atributos de qualidade e restrições do sistema, e não funções que ele executa — portanto, são requisitos não funcionais. Lembre-se da regra: requisito funcional descreve o que o sistema faz; requisito não funcional descreve como o sistema deve ser.
3) Ano: 2025 Banca: CESPE/CEBRASPE
Julgue o próximo item, a respeito de metodologias de gerenciamento de projetos.
No Scrum, product owner é o responsável por maximizar o valor do produto resultante do trabalho do time scrum.
Gabarito: Certo
Comentário: o item reproduz a definição do Guia do Scrum. O Product Owner é responsável por maximizar o valor do produto e por gerenciar o Product Backlog. Cuidado para não confundir com o Scrum Master, responsável pela eficácia do Scrum Team e pela correta aplicação do framework, nem com os Developers, que constroem o incremento.
O que estudar de engenharia de software para concursos públicos
A engenharia de software está presente em praticamente todos os editais de TI, especialmente para cargos de analista e técnico em desenvolvimento de sistemas. Para organizar os estudos, vale dividir o conteúdo pelos tópicos que mais se repetem:
- Conceitos fundamentais: definição de engenharia de software, crise do software e ciclo de vida.
- Modelos de processo: cascata, incremental, prototipação, espiral, modelo em V e Processo Unificado (RUP), com suas vantagens, desvantagens e indicações de uso.
- Métodos ágeis: Manifesto Ágil, Scrum (papéis, eventos e artefatos), XP e Kanban.
- Engenharia de requisitos: requisitos funcionais e não funcionais, técnicas de elicitação, casos de uso e histórias de usuário.
- Testes: níveis, caixa-preta e caixa-branca, regressão, TDD, verificação e validação.
- Qualidade: ISO/IEC 25010, CMMI e MPS.BR.
- Projeto e arquitetura: padrões de projeto, MVC, camadas, microsserviços, coesão e acoplamento.
- Modelagem: UML, com destaque para os diagramas de casos de uso, classes e sequência.
- Práticas modernas: DevOps, CI/CD, gerência de configuração e Git.
Para estudar com eficiência, foque nas diferenças conceituais, que são o principal alvo das bancas: cascata × ágil, requisito funcional × não funcional, verificação × validação, caixa-preta × caixa-branca, entrega contínua × implantação contínua, Product Owner × Scrum Master. Use as obras de Sommerville e Pressman como referência teórica, leia o Guia do Scrum na íntegra (é curto) e resolva muitas questões da banca do seu concurso.
Conclusão
A engenharia de software é a disciplina que organiza todo o processo de produção de software, da especificação à manutenção. Entender o ciclo de vida, saber quando usar cada modelo de processo, distinguir requisitos funcionais de não funcionais, conhecer os tipos de testes, o Scrum e as práticas modernas, como DevOps e CI/CD, é fundamental tanto para a prática profissional quanto para concursos de TI, em que o tema aparece com frequência e quase sempre explorando as diferenças entre conceitos.
Perguntas frequentes sobre engenharia de software
1. O que é engenharia de software? É a disciplina da engenharia que trata de todos os aspectos da produção de software, da especificação à manutenção, aplicando uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento.
2. Quais são as etapas do ciclo de vida de um software? Levantamento e análise de requisitos, projeto, implementação, testes, implantação e manutenção. Sommerville as agrupa em especificação, projeto e implementação, validação e evolução.
3. Qual é a diferença entre engenharia de software e programação? Programação é a atividade de escrever código. Engenharia de software é mais ampla e envolve todo o processo de produção — requisitos, projeto, testes, qualidade, gerência e manutenção —, do qual a programação é apenas uma etapa.
4. Qual é a diferença entre o modelo cascata e as metodologias ágeis? O cascata é sequencial, com requisitos definidos no início e uma entrega no final. As metodologias ágeis são iterativas e incrementais, com entregas frequentes, participação contínua do cliente e abertura a mudanças.
5. O que são requisitos funcionais e não funcionais? Requisitos funcionais descrevem o que o sistema deve fazer, como cadastrar usuários ou emitir relatórios. Requisitos não funcionais descrevem como o sistema deve ser, como desempenho, segurança, usabilidade e disponibilidade.
6. Quais são os principais tipos de testes de software? Quanto ao nível: unidade, integração, sistema e aceitação. Quanto à técnica: caixa-preta e caixa-branca. Também se destacam os testes de regressão, desempenho e segurança.
7. O que é Scrum e qual é sua relação com a engenharia de software? O Scrum é um framework ágil que organiza o trabalho em sprints de até um mês, com papéis, eventos e artefatos definidos. Na engenharia de software, é uma forma de organizar o processo de desenvolvimento de maneira iterativa e incremental.
8. O que estudar de engenharia de software para concursos públicos? Ciclo de vida, modelos de processo, métodos ágeis (especialmente Scrum), engenharia de requisitos, testes, qualidade (ISO/IEC 25010, CMMI e MPS.BR), arquitetura, UML e práticas como DevOps, CI/CD e controle de versão.
Referências
- SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson, 2018.
- PRESSMAN, R. S.; MAXIM, B. R. Engenharia de Software: uma abordagem profissional. 9. ed. Porto Alegre: AMGH, 2021.
- SCHWABER, K.; SUTHERLAND, J. O Guia do Scrum. 2020.
- BECK, K. et al. Manifesto para Desenvolvimento Ágil de Software. 2001.
- ISO/IEC 25010 – Systems and software Quality Requirements and Evaluation (SQuaRE).
Quer mais conteúdos de TI para concursos, com dicas e resumos rápidos? Me acompanhe no Instagram: @dev.anajbsouza 💜
![[BLACK FRIDAY 2026] R$ 2 por dia – Cabeçalho](https://blog-preparatorio-static.infra.grancursosonline.com.br/wp-content/uploads/2026/10/23113511/black-friday-2026-2reais-por-dia-cabecalho.webp)
![[BLACK FRIDAY 2026] R$ 2 por dia – Post](https://blog-preparatorio-static.infra.grancursosonline.com.br/wp-content/uploads/2026/10/23113838/black-friday-2026-2reais-por-dia-post.webp)


