Qual é o Nível Certo de Detalhe para Meus Modelos Ágeis?
Originalmente postado por Marc Lankhorst*, no blog da Bizzdesign – Adaptação e tradução autorizadas
Em postagens anteriores do blog, discutimos o uso de modelos de arquitetura no desenvolvimento ágil. Provavelmente, a pergunta mais comum em modelagem é: “Qual é o nível certo de detalhe para meus modelos?” E, em um contexto ágil, isso talvez seja perguntado ainda mais frequentemente.
No entanto, isso não é algo que você pode simplesmente definir antecipadamente. Não existe um único nível ‘certo’ de detalhe. Isso depende fortemente do contexto e dos objetivos do seu esforço de modelagem.
O contexto é tudo
Claro, não é uma boa ideia documentar tudo em detalhes excruciantes. Os modelos precisam ser precisos o suficiente para seu propósito pretendido. Por exemplo, para ajudar os membros da equipe a entender uma solução no futuro; auxiliar os especialistas em DevOps a implantá-la e resolver possíveis problemas (pense em testes de integração, por exemplo); outras equipes a reutilizar componentes e serviços; e, talvez mais importante, qualquer pessoa que precise fazer alterações no futuro sem ter acesso aos desenhistas e construtores originais. É aqui que a intenção da arquitetura é especialmente importante.
Não modele mais do que você pode manter
Ter modelos muito detalhados frequentemente leva a problemas na manutenção deles, simplesmente porque você não pode dispender o esforço necessário para manter tudo atualizado. Isso, por sua vez, leva a modelos que envelhecem rapidamente e, às vezes, as pessoas se afastam da modelagem por completo porque os modelos com os quais precisam trabalhar estão sempre desatualizados. Isso claramente não é o caminho a seguir.
Portanto, você nunca deve modelar mais do que é capaz de manter (a menos que seja um modelo descartável de uso único). Mas como você decide o nível de detalhe?
Aborde o nível ‘certo’ iterativamente
Existem duas abordagens complementares a serem adotadas. Em primeiro lugar, chegar a um bom e útil nível de detalhe é um processo iterativo em si. Você pode usar o próprio processo ágil para melhorar isso. Em uma retrospectiva, você pode discutir isso e, assim, ajustar sua abordagem. Você tinha as informações certas no momento certo? O esforço necessário para criar ou atualizar seus modelos foi viável e valeu a pena? Como qualquer outra atividade em uma abordagem ágil, a modelagem deve estar sujeita a essa melhoria contínua da sua maneira de trabalhar.
Use uma abordagem baseada em riscos
Em segundo lugar, você pode usar uma abordagem baseada em riscos para decidir onde precisa de mais detalhes. A maioria dos métodos ágeis não é muito específica sobre isso, mas alguns de seus predecessores, como o Processo Unificado, são explicitamente focados em riscos e visam abordar os riscos mais críticos no início do processo. Em linha com isso, você deve criar modelos mais detalhados para aquelas áreas de uma arquitetura ou desenho onde os riscos são maiores e menos detalhes onde você pode decidir na hora e as consequências de um erro são limitadas. Por exemplo, decidir sobre uma tecnologia de infraestrutura é frequentemente de alto risco, devido ao custo envolvido e para evitar o tempo e esforço que levará para reverter essa decisão se ela revelar a escolha errada. Outras áreas comuns de alto risco são segurança e conformidade. Pense em risco de informações pessoalmente identificáveis (PII), manuseio de transações financeiras, controle de processos de fabricação, etc.
Nenhum nível único de detalhe
Isso também implica que seus modelos não terão um único nível de detalhe aplicado em toda a sua extensão. Além disso, até mesmo almejar um nível de detalhe padronizado pode levar você a gastar esforço onde não é realmente necessário e, inversamente, a faltar tempo para aquelas áreas onde realmente importa. Portanto, qualquer abordagem de modelagem que tente dizer aos modeladores antecipadamente qual é o nível ‘certo’ de detalhe provavelmente resultará em modelos que estão quase sempre em um nível ‘errado’ de detalhe – ou muito granular ou muito geral.
* Mark Lankhorst é Gerente de Consultoria & Evangelista-Chefe de Tecnologia da Bizzdesign, empresa líder em ferramentas para modelagem da arquitetura corporativa, representada no Brasil pela Centus Consultoria.