Atualizado em 25 de setembro de 2026.
A engenharia de software é a disciplina que aplica princípios de engenharia ao desenvolvimento, à operação e à manutenção de sistemas. É uma das matérias mais cobradas nos concursos de tecnologia da informação, principalmente para analistas de sistemas de tribunais, bancos, secretarias e estatais, com questões sobre modelos de processo, requisitos, UML, testes e qualidade. Este guia resume os pontos mais cobrados. A base de programação está no guia de lógica de programação.
Modelos de processo de software
| Modelo | Características |
|---|---|
| Cascata | Fases sequenciais, como requisitos, projeto, implementação, testes e manutenção; cada fase começa quando a anterior termina, o que dificulta mudanças |
| Incremental | O sistema é entregue em partes, os incrementos, cada uma com funcionalidades completas |
| Prototipação | Constroem-se protótipos para esclarecer requisitos com o usuário antes do desenvolvimento definitivo |
| Espiral | Proposto por Barry Boehm, organiza o desenvolvimento em ciclos, com ênfase na análise de riscos a cada volta |
| RUP | Processo iterativo e incremental, dividido nas fases de concepção, elaboração, construção e transição, guiado por casos de uso |
Métodos ágeis e DevOps
Os métodos ágeis seguem o Manifesto Ágil e privilegiam entregas frequentes, colaboração com o cliente e adaptação às mudanças. Os mais cobrados são o Scrum, com sprints, papéis e artefatos definidos, tema do guia de gestão de projetos; o XP, ou Extreme Programming, com práticas como programação em par, desenvolvimento orientado a testes, integração contínua, refatoração e pequenas entregas; e o Kanban, que visualiza o fluxo de trabalho e limita o trabalho em andamento. A cultura DevOps aproxima desenvolvimento e operação, com integração e entrega contínuas.
Engenharia de requisitos e suas etapas
Os requisitos funcionais descrevem o que o sistema deve fazer, como cadastrar um processo ou emitir uma certidão. Os requisitos não funcionais descrevem restrições e atributos de qualidade, como desempenho, segurança, usabilidade, disponibilidade e portabilidade. O processo de engenharia de requisitos inclui a elicitação, com técnicas como entrevistas, questionários, workshops e observação; a análise e negociação; a especificação, em documentos ou histórias de usuário; e a validação, que confirma se os requisitos refletem as necessidades do cliente.
UML e seus diagramas
A UML é a linguagem padrão de modelagem de sistemas orientados a objetos. Os diagramas se dividem em:
- Estruturais: como os diagramas de classes, que mostram classes, atributos, métodos e relacionamentos; de objetos; de componentes; de implantação; e de pacotes.
- Comportamentais: como os diagramas de casos de uso, que mostram as interações entre atores e o sistema; de atividades, parecidos com fluxogramas; de estados, que mostram os estados de um objeto; e de sequência, que mostram a troca de mensagens entre objetos ao longo do tempo.
Testes de software: níveis e técnicas
- Níveis: teste de unidade, das menores partes do código; de integração, da comunicação entre os módulos; de sistema, do sistema completo; e de aceitação, feito com o usuário para verificar se o sistema atende às necessidades.
- Técnicas: na caixa-branca, o testador conhece o código e testa os caminhos internos; na caixa-preta, testa o comportamento externo, pelas entradas e saídas.
- Teste de regressão: verifica se as alterações não introduziram erros em partes que já funcionavam.
- Desenvolvimento orientado a testes: escreve-se o teste antes do código, e o código é desenvolvido para passar no teste.
Qualidade de software e maturidade
A norma ISO/IEC 25010 define características de qualidade do produto de software, como adequação funcional, eficiência de desempenho, compatibilidade, usabilidade, confiabilidade, segurança, manutenibilidade e portabilidade. Quanto à maturidade dos processos, o CMMI classifica as organizações em cinco níveis de maturidade, do inicial ao em otimização, e o MPS.BR, modelo brasileiro, usa sete níveis, identificados de G, o menos maduro, a A, o mais maduro.
Tipos de manutenção
A manutenção de software pode ser corretiva, para corrigir defeitos; adaptativa, para adequar o sistema a mudanças no ambiente, como uma nova legislação ou um novo sistema operacional; perfectiva, para melhorar o desempenho ou acrescentar funcionalidades; e preventiva, para melhorar a manutenibilidade e evitar problemas futuros. Nos contratos públicos de desenvolvimento, é comum medir o tamanho do software pela análise de pontos de função, que quantifica as funcionalidades do ponto de vista do usuário.
Arquitetura de software
A arquitetura define a organização geral do sistema e a forma como os componentes se comunicam. Entre os estilos mais cobrados estão a arquitetura em camadas, como apresentação, negócio e dados; o padrão MVC, que separa o modelo, a visão e o controlador; a arquitetura monolítica, em que o sistema é uma única aplicação; e a de microsserviços, em que o sistema é dividido em serviços pequenos e independentes, que se comunicam por interfaces de programação, as APIs, frequentemente no estilo REST.
Padrões de projeto
Os padrões de projeto são soluções reutilizáveis para problemas recorrentes. Os padrões catalogados pela chamada Gangue dos Quatro se dividem em criacionais, que tratam da criação de objetos, como o Singleton, que garante uma única instância de uma classe, e o Factory Method; estruturais, que tratam da composição de classes, como o Adapter e o Facade; e comportamentais, que tratam da interação entre objetos, como o Observer e o Strategy.
Histórias de usuário
Nos métodos ágeis, os requisitos costumam ser escritos como histórias de usuário, no formato "como tipo de usuário, quero uma funcionalidade, para obter um benefício", acompanhadas de critérios de aceitação que definem quando a história está pronta. Uma referência muito usada para avaliar boas histórias é que sejam independentes, negociáveis, valiosas, estimáveis, pequenas e testáveis.
Controle de versões
O controle de versões registra as alterações no código ao longo do tempo e permite o trabalho em equipe. O Git é o sistema mais usado: o desenvolvedor registra as alterações em commits, cria ramificações, as branches, para desenvolver funcionalidades em paralelo, e as integra ao código principal com o merge. A integração contínua executa automaticamente a compilação e os testes a cada alteração.
Como estudar
Monte quadros comparando os modelos de processo, os diagramas da UML e os tipos de teste e de manutenção, que são os temas mais cobrados. Depois, estude os métodos ágeis, a qualidade de software e os modelos de maturidade, e resolva questões das bancas de concursos de TI.
Nas provas discursivas de TI, é comum pedir a escolha e a justificativa de um modelo de processo para um caso concreto, considerando a estabilidade dos requisitos, os riscos e a necessidade de entregas rápidas. Por isso, além de memorizar as características, entenda quando cada modelo é mais adequado.
Exemplos de como cai
Afirmação: "O modelo cascata é adequado para projetos com requisitos instáveis." Errado. O cascata é rígido e pouco adequado a requisitos que mudam.
Afirmação: "Desempenho e segurança são exemplos de requisitos não funcionais." Certo. Descrevem atributos de qualidade.
Afirmação: "No diagrama de classes, a composição é representada por um losango vazio." Errado. O losango vazio representa a agregação; a composição usa o losango cheio.
Resumo para revisar antes da prova
Modelos cascata, incremental, prototipação, espiral com análise de riscos e RUP com quatro fases; Scrum, XP, Kanban e DevOps; requisitos funcionais e não funcionais; elicitação, análise, especificação e validação; UML com diagramas estruturais e comportamentais; associação, agregação, composição e herança; testes de unidade, integração, sistema e aceitação, caixa-branca e caixa-preta, regressão e TDD; ISO/IEC 25010, CMMI com cinco níveis e MPS.BR de G a A; manutenção corretiva, adaptativa, perfectiva e preventiva; e pontos de função.
Perguntas frequentes
Qual a diferença entre requisito funcional e não funcional?
O requisito funcional descreve o que o sistema deve fazer, como emitir um relatório ou cadastrar um usuário. O requisito não funcional descreve como o sistema deve se comportar, com restrições de qualidade, como desempenho, segurança, usabilidade e disponibilidade.
O que caracteriza o modelo espiral?
Proposto por Barry Boehm, o modelo espiral organiza o desenvolvimento em ciclos iterativos, e a sua principal característica é a análise de riscos em cada volta da espiral.
Qual a diferença entre teste de caixa-branca e de caixa-preta?
No teste de caixa-branca, o testador conhece a estrutura interna do código e testa os caminhos lógicos. No teste de caixa-preta, testa-se o comportamento externo, com base nas entradas e saídas esperadas, sem considerar o código.

