Projetar módulos coesos e dependências explícitas
Use este guia como lente principal para esta situação.

Composição, baixo acoplamento, alta coesão, injeção de dependência, testes, camadas e decisões arquiteturais.
Não apenas “anexe e peça para programar”. Dê papel, contexto e critérios.
Use este guia como lente principal para esta situação.
Use este guia como lente principal para esta situação.
Use este guia como lente principal para esta situação.
Use este guia como lente principal para esta situação.
Use o guia “Introdução à Arquitetura e Design de Software” anexado como referência para analisar este projeto. Antes de alterar código: 1. Faça um diagnóstico do problema no contexto do projeto. 2. Identifique quais princípios do guia realmente se aplicam. 3. Compare a solução atual com uma alternativa mais simples. 4. Proponha uma mudança incremental e reversível. 5. Defina testes e critérios de aceite. 6. Ao final, revise a implementação contra o guia e liste trade-offs. Contexto: [DESCREVA o sistema, stack, estado atual e cenário da mudança] Objetivo: [DESCREVA o resultado observável que deve existir ao final] Restrições: [DESCREVA o que não pode mudar, compatibilidade e limites técnicos]
Use o modelo acima com dados concretos do projeto. O exemplo abaixo mostra o nível de detalhe esperado.
Contexto: Aplicação Java possui controllers criando DAOs com new e regras de negócio espalhadas entre UI e persistência. Objetivo: Propor uma separação de responsabilidades com dependências explícitas e um caminho incremental para melhorar testabilidade. Restrições: Sem big-bang rewrite; manter endpoints existentes; preferir composição e injeção por construtor; testes devem guiar a migração.
Peça análise do código e do problema antes de aplicar qualquer padrão ou princípio.
Exija justificativa: por que esta técnica é adequada e quais alternativas foram descartadas.
Finalize com testes, checklist, riscos e critérios de aceite.