Scrum é um modelo iterativo e incremental baseado em valores ágeis . Isso significa que você não tem uma fase de design separada. A idéia é que você esteja constantemente lidando com o design, assim como você está constantemente lidando com a análise, implementação, teste e integração ao longo do projeto.
Você precisa de um pouco de planejamento para que isso funcione. Entre na reunião de planejamento do sprint , em que a equipe estima tarefas para o sprint adiante. A maioria das pessoas não percebe que isso não é apenas uma reunião de estimativa, mas também um esforço de design. Por exemplo, uma tarefa pode ser "Adicionar código para o novo modelo de carro". Você ainda não pode estimar isso, precisa saber um pouco mais. Portanto, a equipe discute o design e apresenta uma solução ampla ("subclasse Car?") E acrescenta isso como um lembrete para a tarefa. Você raramente precisa de mais formalidade do que isso. Agora você tem uma idéia de como resolver o problema. Você ainda não tem todos os detalhes e está tudo bem, você conhece o design o suficiente para poder fazer uma estimativa confortável. Sem precisar criar diagramas (neste momento).
Para documentação física real , recomendo criar um diagrama de visão geral dos sistemas em uma parede para que todos possam ver. A visão geral precisa apenas incluir as classes e módulos mais importantes e raramente deve ser atualizada. Além disso, a criação de alguns diagramas de estado para as classes mais importantes do sistema é muito útil. Polvilhe com alguns diagramas de sequência selecionados de casos de uso típicos para facilitar que as pessoas vejam rapidamente como as coisas estão conectadas. Suponho que você possa gerar diagramas de hierarquia de classes a partir do seu código, para que o problema seja facilmente resolvido.
Observe que todos os diagramas são criados após a implementação real. Isso está de acordo com o "software de trabalho sobre documentação abrangente" e o design just-in-time.
E sim, o código legível é definitivamente documentação.