5.1. Projeto: desafios e gestão da complexidade
O imperativo técnico número 1 do software: gerenciar a complexidade.
Resumo
- Problema perverso (wicked): só se entende o problema resolvendo-o ao menos uma vez (ponte de Tacoma).
- Projeto é desleixado, cheio de trade-offs e restrições, não determinístico, heurístico e emergente.
- Brooks: dificuldade essencial (do problema) × acidental (das ferramentas). Sobrou a essencial.
- Imperativo técnico principal: gerenciar complexidade. Ninguém consegue ter o programa inteiro na cabeça.
- Boas características: mínima complexidade, fácil manutenção, baixo acoplamento, fan-in alto, fan-out baixo/médio.
Perguntas-chave
responda de cabeça, depois abraO que é um problema perverso?
Um problema que só se define claramente depois de ser resolvido, total ou parcialmente; a solução muda o entendimento do problema.
Como reduzir a complexidade no projeto?
Minimizar a complexidade essencial que cada pessoa enfrenta por vez e impedir que a complexidade acidental cresça sem necessidade.
Quais níveis de projeto o livro descreve?
Sistema, subsistemas/pacotes, classes, rotinas e o interior de cada rotina.
Exercícios de fixação
0/5 respondidas1.
A ponte de Tacoma Narrows ilustra qual característica do projeto de software?
2.
Segundo McConnell, qual é o imperativo técnico principal do software?
3.
Um sistema sofre com uma linguagem sem gerenciamento de memória, que causa erros de ponteiro. Na classificação de Brooks, isso é dificuldade:
4.
Uma classe utilitária é usada por 40 outras classes e usa só 2. Em termos de fan-in e fan-out, isso é:
5.
Por que o livro diz que projetar é um processo "desleixado" (sloppy)?