Aula 01 — Apresentação da Disciplina e o Processo de Software

Metodologias para Desenvolvimento de Software

Nesta primeira aula vamos combinar como a disciplina funciona e responder a uma pergunta que sustenta todo o semestre: por que a forma de desenvolver software importa tanto quanto o software que se desenvolve?

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

DataO que acontece
03/08Início das aulas
07/09Feriado — Independência (sem aula)
14/09P1 — prova do 1º bimestre
12/10Feriado — N. Sra. Aparecida (sem aula)
02/11Feriado — Finados (sem aula)
16/11Último encontro de conteúdo
26/11P2 — prova do 2º bimestre

Atenção ao calendário

Três feriados caem em segunda-feira neste semestre. Isso significa três encontros a menos do que o normal. O tempo de estudo fora da sala — aquilo que o plano de ensino chama de Estudo Discente Autônomo — não é opcional: ele integra a carga horária da disciplina e é o que vai manter o ritmo.

Como conduzir a abertura em sala

Comece pedindo que a turma lembre de um projeto que atrasou ou precisou ser refeito. Depois, conduza a discussão para a pergunta central da disciplina: o problema estava no código ou na forma como o trabalho foi organizado? Essa pergunta prepara a transição para processo de software sem parecer uma definição solta.

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

Software não falha apenas por erro de código. Ele falha por requisito mal entendido, por mudança não absorvida, por falta de comunicação e por ausência de um processo que dê ordem ao trabalho. Metodologias existem para tratar exatamente esse tipo de falha.

É 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

Se dois times recebem exatamente os mesmos requisitos, o mesmo prazo e programadores igualmente competentes, o que pode fazer com que um entregue e o outro nã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

Identificar as necessidades e expectativas dos usuários e demais interessados.

Projeto

Decidir como o sistema será estruturado antes de escrever o código.

Implementação

Construir o sistema — a parte que normalmente se associa a “fazer software”.

Testes

Verificar e validar se o sistema faz o que deveria fazer.

Manutenção

Corrigir problemas e adaptar o sistema a novas necessidades. Costuma ser a fase mais longa e mais cara do ciclo de vida — e a que mais sofre com decisões ruins tomadas lá no começo.

Erro comum

Achar que “engenharia de software é para projetos grandes”. O tamanho muda o rigor aplicado, não a necessidade. Um trabalho de faculdade feito em trio já tem requisitos, projeto, implementação, teste e manutenção — mesmo que essas etapas aconteçam de forma implícita e desorganizada. A pergunta nunca é “tem processo?”, e sim “o processo é consciente ou acidental?”.

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 Software

Vale 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 é?

Um roteiro de passos previsíveis que ajuda a chegar a um resultado de qualidade dentro do prazo. Sem ele, o trabalho tende ao improviso.

Quem realiza?

Engenheiros de software e seus gerentes adaptam o processo às suas necessidades e o seguem. O cliente também participa: ele define, valida e testa.

Por que é importante?

Porque traz estabilidade, controle e organização a uma atividade que, sem isso, seria caótica. Mas atenção: um processo moderno deve incluir apenas o que é adequado à equipe e ao produto — processo em excesso também atrapalha.

Quais são as etapas?

Variam conforme o software. Um processo adequado a um sistema de aviação é diferente do processo adequado a um site institucional.

Como saber se deu certo?

Existem modelos de avaliação de maturidade de processo, mas os melhores indicadores continuam sendo a qualidade do produto, o cumprimento dos prazos e a viabilidade do software a longo prazo.

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

A funcionalidade do software e as restrições a seu funcionamento devem ser definidas.

2. Projeto e implementação

O software deve ser produzido para atender às especificações.

3. Validação

O software deve ser validado para garantir que atende às demandas do cliente.

4. Evolução

O software deve evoluir para atender às necessidades de mudança dos clientes.

Pressman: cinco atividades genéricas

Comunicação

Antes de qualquer trabalho técnico, é preciso colaborar com o cliente e demais interessados para entender objetivos e definir as características do software.

Planejamento

O plano de projeto é o mapa da jornada: tarefas, riscos, recursos, resultados esperados e cronograma.

Modelagem

Assim como arquitetos e engenheiros, criamos modelos para entender melhor o que o software precisa fazer e como será estruturado. É toda a Unidade I desta disciplina.

Construção

Geração do código e testes para identificar e corrigir erros.

Entrega

O software é entregue, o cliente avalia e fornece o retorno que alimenta os ajustes seguintes.

Comparando os dois autores

SommervillePressman
Especificação de softwareComunicação
Projeto e implementaçãoPlanejamento
Validação de softwareModelagem
Evolução de softwareConstrução
—Entrega

Cuidado com a tabela acima

Ela alinha as listas lado a lado, mas não é uma equivalência termo a termo. Os dois autores estão descrevendo o mesmo fenômeno com granularidades diferentes: Pressman detalha o começo (comunicação e planejamento) e o fim (entrega); Sommerville agrupa. Se você entender isso, entendeu por que existe mais de um modelo de processo — e essa é a pergunta que abre a próxima aula.

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

Comunicação→Planejamento→Modelagem→Construção→Entrega

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

Comunicação⇄Planejamento⇄Modelagem⇄Construção⇄Entrega

Uma ou mais atividades são repetidas antes de seguir adiante. Cada volta refina o entendimento do problema.

Fluxo evolucionário

Ciclo 1↻Ciclo 2↻Ciclo 3↻Versão cada vez mais completa

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

Modelagem‖Construção‖Entrega

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

Se o processo é sempre o mesmo conjunto de atividades, o que acontece quando decidimos executá-las uma única vez, em sequência rígida, sem voltar atrás?

8. Atividade em sala

Em duplas ou trios, escolham um sistema de software que vocês usam com frequência (aplicativo de banco, iFood, o sistema acadêmico da faculdade, um jogo online).
  1. Descrevam o sistema em duas linhas: o que ele faz e para quem.
  2. Mapeiem as cinco atividades de Pressman nesse sistema: o que vocês imaginam que aconteceu em cada uma delas durante o desenvolvimento?
  3. 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.
  4. 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.
Duas ou três duplas apresentarão o mapeamento no fechamento da aula.

9. Perguntas para fixação e debate

  1. Qual a diferença entre programar e fazer engenharia de software?
  2. O que é um processo de software e qual problema concreto ele resolve?
  3. Diferencie atividade, ação e tarefa dentro de um processo, dando um exemplo de cada.
  4. Por que o artefato de um processo não se resume ao programa executável?
  5. Quais são as quatro atividades fundamentais segundo Sommerville?
  6. Quais são as cinco atividades genéricas segundo Pressman?
  7. Por que afirmar que “Sommerville e Pressman se contradizem” é uma leitura equivocada?
  8. Explique, com um exemplo próprio, a diferença entre fluxo linear e fluxo evolucionário.
  9. Por que um processo adequado a um sistema de aviação seria inadequado a um site institucional?
  10. 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.