Série: Fundamentos de Engenharia de Software | Parte 4 de 19 > Ministrada na Universidade Potiguar (UnP) em 2010
Na quarta aula de Engenharia de Software na Universidade Potiguar (UnP), exploramos modelos evolucionários e incrementais, focando em adaptação, exploração e reúso de software. O objetivo não era memorizar frameworks, mas entender como responder à mudança de forma inteligente.
Quando o plano precisa mudar
Abrimos com uma pergunta provocativa: o que pode dar errado em um projeto de software? A resposta, claro, é quase tudo — escopo, requisitos, pessoas, tempo, prioridades.
Falamos sobre como processos rígidos falham diante da imprevisibilidade. Introduzimos o conceito de modelo evolutivo, baseado em ciclos curtos, validação constante e entrega antecipada de valor. Esse tipo de modelo ajuda a manter o produto útil mesmo quando o contexto muda rapidamente.
Atividade: Explorando protótipos
Pedi aos alunos que imaginassem um produto digital com requisitos ainda mal compreendidos. Em grupos, eles desenharam protótipos rápidos da interface, e compartilharam dúvidas que surgiram durante o processo.
Essa atividade pode ser usada em times de produto para alinhar expectativas entre design, engenharia e negócio. O foco não é desenhar a solução perfeita, mas tornar visível aquilo que ainda não sabemos — e começar a testar desde já.
CBSE: Reutilizar para avançar
A segunda parte da aula foi dedicada à Engenharia de Software baseada em componentes (CBSE). Discutimos como a reutilização de software pode reduzir custos, aumentar a qualidade e acelerar entregas. Apresentei o processo: análise de componentes, adaptação de requisitos, projeto com reuso e integração de sistemas.
Também refletimos sobre os riscos. Produtos COTS podem trazer problemas como desempenho limitado, falta de suporte ou evolução descontrolada. Ainda assim, saber integrar e adaptar componentes prontos é uma habilidade essencial para desenvolvedores modernos.
Reusabilidade com visão de produto
Mostrei exemplos de linhas de produto — arquiteturas comuns que geram múltiplas soluções com pequenos ajustes. Usamos analogias com ERP e sistemas de fatura. Reusar não é copiar e colar, mas sim projetar para variabilidade controlada.
É importante destacar que reuso exige investimento. É uma decisão estratégica, e não uma gambiarra. Por isso, times e professores que quiserem trazer essa abordagem precisam incluir tópicos como modularidade, contratos de interface e evolução planejada.
Modelos iterativos e espiral
Na parte final da aula, discutimos os modelos iterativos e o famoso modelo espiral de Barry Boehm. Esses modelos favorecem ciclos curtos, prototipação contínua e aprendizado incremental.
Mostrei como aplicar o modelo espiral em equipes ágeis: cada iteração inclui planejamento, análise de riscos, construção de protótipos e validação. A complexidade é enfrentada com aprendizado contínuo. Usei exemplos visuais para reforçar a ideia de que nenhum projeto precisa seguir linha reta para avançar.
Aplicando na prática
Para professores ou facilitadores, essa aula pode ser replicada com foco na realidade do aluno ou equipe. Escolha um problema aberto, proponha ciclos rápidos de iteração e permita que o erro vire aprendizado. O mais importante é criar espaço para dúvida, revisão e evolução contínua.
Publicado como parte do diário de aula da disciplina de Engenharia de Software. Hoje, aprendemos que o software evolui com o mundo — e cabe a nós evoluir junto com ele.
Navegação da Série
- Introdução: Parte 1 - Por que Engenharia de Software?
- Anterior: Parte 3 - Modelo Cascata
- Atual: Parte 4 - Modelos Evolucionários
- Próxima: Parte 5 - Mentalidade Ágil
- Série completa: Por que Engenharia de Software? | Domando a Complexidade | Modelo Cascata | Modelos Evolucionários | Mentalidade Ágil | Scrum Produtividade | Ciclo Scrum | XP Qualidade & Coragem | XP Princípios & Práticas | XP na Prática | Domain-Driven Design