Complexidade de Software

TL;DR

Galho 12 de Fundamentos. O estudo daquilo que torna software difícil de construir e manter — complexidade essencial vs. acidental, os limites da abstração, carga cognitiva, as três dívidas (técnica, cognitiva, intenção) e o decaimento dos sistemas no tempo. A espinha: o que ajuda a entender ou gerenciar a complexidade do software?

Sobre este galho

Cobre a complexidade como o problema central do software, de ponta a ponta: por que software é difícil (Brooks, Tar Pit, Hickey, Naur), os mecanismos com que a gerenciamos e onde eles falham (abstração, information hiding, módulos, carga cognitiva), as três dívidas do Triple Debt Model (Storey) e a gestão da complexidade no tempo e no todo (entropia, manutenção, pensamento sistêmico, Lei de Conway).

Não cobre: Design Patterns e estilos arquiteturais (ficam em Arquitetura); as manifestações AI-specific dos débitos (ficam em O Lado Sombrio da IA, sob a lente da IA — este galho trata sob a lente geral/atemporal, cross-linkado).

Iniciado

  1. 01 - A complexidade como problema central — a dificuldade-raiz do software; Brooks, No Silver Bullet.
  2. 02 - Complexidade essencial vs. acidental — a distinção de Brooks; estado e Out of the Tar Pit.
  3. 03 - Simplicidade não é facilidade — Hickey, Simple Made Easy; complecting.
  4. 04 - O programa como teoria — Naur, theory-building; conhecimento tácito.

Adepto

  1. 05 - Abstração - a ferramenta central — information hiding (Parnas); esconder decisões voláteis.
  2. 06 - Abstrações que vazam — Spolsky, Lei das Abstrações Vazadas; Lei de Hyrum.
  3. 07 - Módulos profundos e rasos — Ousterhout, A Philosophy of Software Design.
  4. 08 - Carga cognitiva e legibilidade — cognitive load; menor surpresa; obscuridade.
  5. 09 - As três dívidas do software — Triple Debt Model (Storey): técnica/cognitiva/intenção.
  6. 10 - Dívida técnica — Cunningham; juros; atalhos no código.
  7. 11 - Dívida cognitiva — erosão do entendimento compartilhado (perspectiva geral).
  8. 12 - Dívida de intenção — Storey/Osmani/Fowler; externalizar rationale.

Magus

  1. 13 - Entropia de software e decaimento — bit rot, broken windows, big ball of mud.
  2. 14 - Manutenção e evolução — legado como gestão de complexidade no tempo.
  3. 15 - Pensamento sistêmico — feedback, emergência, parte vs. todo.
  4. 16 - Lei de Conway — complexidade organizacional ↔ arquitetural.

Todas as notas

TABLE fase, status, updated
FROM "03-Dominios/Fundamentos/Complexidade de Software"
WHERE type = "concept"
SORT file.name ASC

Veja também

16 items neste arquivo.