Aula 01 — Apresentação da Disciplina e o Processo de Software
Metodologias para Desenvolvimento de Software
Curso
Engenharia de Software
Carga Horária
60 horas
Semestre
2026 / 2º
Encontros
Segundas, 3 aulas
1. Como esta disciplina funciona
Antes do conteúdo propriamente dito, é importante que fique claro o que será estudado, como o semestre está organizado e de que forma a aprendizagem será avaliada. Essa transparência não é burocracia: saber para onde se está indo é parte do processo de aprender — e, curiosamente, é também uma das primeiras lições da própria disciplina.
Ementa
Análise orientada a objetos. Introdução aos métodos ágeis. Principais práticas dos métodos ágeis: desenvolvimento dirigido por testes, programação pareada, refatoração e integração contínua. Exemplos de métodos ágeis: Programação Extrema (XP), Scrum e RUP. Prática em desenvolvimento de um sistema utilizando métodos e práticas ágeis.
Unidade I — Análise e projeto
- Arquitetura de software
- Modelos estáticos e dinâmicos
- Classes e objetos
- Pacotes e componentes
- Noções de padrões de projeto e reuso
- Projeto orientado a objetos usando UML
Unidade II — Métodos ágeis
- Métodos tradicionais versus métodos ágeis
- Manifesto Ágil
- Desenvolvimento dirigido por testes
- Programação pareada
- Refatoração e integração contínua
- XP, Scrum, Kanban, Scrumban e RUP
Avaliação
A avaliação combina duas provas teóricas e um conjunto de trabalhos distribuídos ao longo de cada bimestre. As médias são calculadas assim:
MB1 = P1 × 0,7 + MT1 × 0,3
MB2 = P2 × 0,7 + MT2 × 0,3
MF = (MB1 + MB2) ÷ 2
Em que P é a prova do bimestre e MT é a média dos trabalhos daquele bimestre. A frequência mínima exigida é de 75%.
Datas que importam
| Data | O que acontece |
|---|---|
| 03/08 | Início das aulas |
| 07/09 | Feriado — Independência (sem aula) |
| 14/09 | P1 — prova do 1º bimestre |
| 12/10 | Feriado — N. Sra. Aparecida (sem aula) |
| 02/11 | Feriado — Finados (sem aula) |
| 16/11 | Último encontro de conteúdo |
| 26/11 | P2 — prova do 2º bimestre |
Atenção ao calendário
Como conduzir a abertura em sala
2. Por que estudar metodologias de desenvolvimento?
Comece por uma pergunta honesta: você já participou de algum trabalho de programação que atrasou, precisou ser refeito ou terminou diferente do que havia sido combinado? Se a resposta for sim, você já viveu o problema central desta disciplina — e ele quase nunca é um problema de linguagem de programação.
Um estudante que aprende a programar consegue, em pouco tempo, escrever um programa que funciona. O que não é evidente é o que acontece quando esse programa cresce, quando outras pessoas precisam mexer nele, quando o cliente muda de ideia no meio do caminho e quando existe um prazo real. Nessas condições, a habilidade individual de codificar deixa de ser suficiente. O que passa a determinar o resultado é a forma como o trabalho está organizado.
Ideia central
É por isso que a ementa desta disciplina não fala de sintaxe nem de framework. Ela fala de processo, de modelagem, de práticas de equipe. São esses os elementos que separam um programa que funciona na máquina de quem escreveu de um produto de software que funciona para outras pessoas, ao longo do tempo, e que pode ser mantido por quem não o escreveu.
Pergunta para reflexão
3. O que é engenharia de software?
Existe uma confusão comum entre programar e fazer engenharia de software. Programar é escrever instruções que o computador executa. Engenharia de software é a disciplina que trata de todo o ciclo de vida do produto: entender o problema, especificar o que deve ser construído, projetar uma solução, implementá-la, verificar se está correta e mantê-la em funcionamento enquanto ela for útil.
Definições de referência
A aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, à operação e à manutenção de software.— IEEE, Standard Glossary of Software Engineering Terminology (610.12)
Uma disciplina de engenharia relacionada a todos os aspectos da produção de software, desde os estágios iniciais de especificação até a manutenção do sistema depois que ele entrou em operação.— Sommerville, Engenharia de Software, cap. 1
Repare no que as duas definições têm em comum: nenhuma delas menciona linguagem de programação. Ambas falam de abrangência (do início da especificação até depois da entrega) e de método (sistemático, disciplinado). A codificação está lá dentro, mas é uma parte entre várias.
O que a engenharia de software abrange
Análise de requisitos
Projeto
Implementação
Testes
Manutenção
Erro comum
4. O que é um processo de software?
Um processo de software é um conjunto de atividades, ações e tarefas realizadas para criar um artefato de software.
— a partir de Pressman, Engenharia de SoftwareVale separar os três termos, porque eles aparecem o semestre inteiro. Uma atividade é um objetivo amplo, aplicável a qualquer projeto (por exemplo, “comunicação”). Uma ação é um conjunto de trabalho que produz um artefato importante (por exemplo, “projeto de arquitetura”). Uma tarefa é uma unidade pequena e bem definida, com resultado concreto (por exemplo, “realizar teste de unidade do módulo de login”).
O que o processo produz são artefatos, também chamados de produtos de trabalho: programas, documentos, modelos e dados. Note que o código é apenas um dos artefatos — e frequentemente nem é o mais difícil de produzir.
Cinco perguntas para entender qualquer processo
O que é?
Quem realiza?
Por que é importante?
Quais são as etapas?
Como saber se deu certo?
5. As atividades fundamentais do processo
Existem muitos processos de software diferentes, mas todos compartilham um núcleo comum. Dois autores de referência descrevem esse núcleo de formas ligeiramente distintas — e comparar as duas descrições é mais instrutivo do que decorar qualquer uma delas.
Sommerville: quatro atividades
1. Especificação
2. Projeto e implementação
3. Validação
4. Evolução
Pressman: cinco atividades genéricas
Comunicação
Planejamento
Modelagem
Construção
Entrega
Comparando os dois autores
| Sommerville | Pressman |
|---|---|
| Especificação de software | Comunicação |
| Projeto e implementação | Planejamento |
| Validação de software | Modelagem |
| Evolução de software | Construção |
| — | Entrega |
Cuidado com a tabela acima
6. Fluxos de processo
Se as atividades são praticamente as mesmas em todos os processos, o que muda de uma metodologia para outra? Muda a ordem e a frequência com que essas atividades acontecem. A isso damos o nome de fluxo de processo.
Uma forma simples de explicar é comparar com cozinhar uma refeição. Os ingredientes podem ser os mesmos, mas o resultado muda se tudo for feito em sequência, se algumas etapas forem repetidas até acertar o ponto ou se duas pessoas trabalharem em paralelo. Em software acontece o mesmo: o conteúdo do trabalho não basta; a organização do trabalho muda o resultado.
Fluxo linear
Cada atividade acontece uma única vez, na sequência. É o fluxo do modelo cascata. Funciona quando os requisitos são estáveis e bem compreendidos desde o início.
Fluxo iterativo
Uma ou mais atividades são repetidas antes de seguir adiante. Cada volta refina o entendimento do problema.
Fluxo evolucionário
As atividades acontecem em ciclos e cada volta libera um incremento do produto. É a base dos métodos ágeis, que veremos na Unidade II.
Fluxo paralelo
Uma ou mais atividades acontecem ao mesmo tempo que outras. É comum quando partes independentes do sistema são desenvolvidas por equipes diferentes.
Nenhum desses fluxos é intrinsecamente melhor. A escolha depende do quanto se conhece do problema, do quanto os requisitos tendem a mudar e do custo de errar. Essa é a discussão que ocupará as próximas quatro aulas.
7. Síntese da aula
- Programar é uma atividade dentro da engenharia de software, não sinônimo dela.
- Processo de software é o conjunto de atividades, ações e tarefas que produz os artefatos do sistema.
- Todo projeto tem processo — a escolha é entre um processo consciente e um processo acidental.
- Sommerville descreve quatro atividades fundamentais; Pressman descreve cinco. São visões complementares, não concorrentes.
- O que distingue as metodologias entre si é o fluxo: linear, iterativo, evolucionário ou paralelo.
- Não existe processo universalmente correto: ele se ajusta ao tipo de software, à equipe e ao risco envolvido.
Fica a pergunta
8. Atividade em sala
- Descrevam o sistema em duas linhas: o que ele faz e para quem.
- Mapeiem as cinco atividades de Pressman nesse sistema: o que vocês imaginam que aconteceu em cada uma delas durante o desenvolvimento?
- Indiquem qual fluxo de processo parece ter sido usado e justifiquem com evidências observáveis no próprio produto — frequência de atualizações, mudanças de interface, presença de recursos em fase de teste, etc.
- Apontem uma decisão do produto que sugere que o time errou em alguma dessas atividades. Não é crítica gratuita: é treino de olhar técnico.
9. Perguntas para fixação e debate
- Qual a diferença entre programar e fazer engenharia de software?
- O que é um processo de software e qual problema concreto ele resolve?
- Diferencie atividade, ação e tarefa dentro de um processo, dando um exemplo de cada.
- Por que o artefato de um processo não se resume ao programa executável?
- Quais são as quatro atividades fundamentais segundo Sommerville?
- Quais são as cinco atividades genéricas segundo Pressman?
- Por que afirmar que “Sommerville e Pressman se contradizem” é uma leitura equivocada?
- Explique, com um exemplo próprio, a diferença entre fluxo linear e fluxo evolucionário.
- Por que um processo adequado a um sistema de aviação seria inadequado a um site institucional?
- Um processo muito rígido pode prejudicar um projeto? Em que situação?
10. Referências
📚 Estudo desta aula
- SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Addison Wesley, 2014. Capítulos 1 e 2.
- PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo Educacional S.A., 2021. Capítulos 1 e 2.
- FILHO, Wilson de Pádua P. Engenharia de Software — Produtos, v. 1. Rio de Janeiro: LTC, 2019. Capítulo 1.
📖 Leitura complementar
- MORAIS, Izabelly S. D.; ZANIN, Aline. Engenharia de software. Porto Alegre: Grupo Educacional S.A., 2017.
- HIRAMA, Kechi. Engenharia de Software. Rio de Janeiro: Elsevier, 2011.
- SCHACH, Stephen R. Engenharia de Software. Porto Alegre: AMGH, 2010.
- IEEE. Standard Glossary of Software Engineering Terminology (IEEE Std 610.12).
As citações desta página foram mantidas em paráfrase, sem indicação de página. Ao estudar para a prova, use a edição indicada na bibliografia da disciplina — a numeração de páginas varia entre edições e entre a versão impressa e a da Minha Biblioteca.