Eu tenho feito alguns cursos de design de software nos últimos semestres e, embora eu veja o benefício em grande parte do formalismo, sinto que ele não me diz nada sobre o programa em si:
- Você não pode dizer como o programa funcionará a partir da especificação de Caso de Uso, mesmo que discuta o que o programa pode fazer.
- Você não pode contar nada sobre a experiência do usuário no documento de requisitos, mesmo que ele possa incluir requisitos de qualidade.
- Os diagramas de sequência são uma boa descrição de como o software funciona como a pilha de chamadas, mas são muito limitados e oferecem uma visão altamente parcial do sistema geral.
- Os diagramas de classe são ótimos para descrever como o sistema é construído, mas são totalmente inúteis para ajudá-lo a descobrir o que o software precisa ser.
Onde está todo esse formalismo: a aparência, o funcionamento e a experiência do programa? Não faz mais sentido projetar isso? Não é melhor descobrir como o programa deve funcionar por meio de um protótipo e se esforçar para implementá-lo de verdade?
Eu sei que provavelmente estou sofrendo com o ensino de engenharia por teóricos, mas preciso perguntar: eles fazem isso na indústria? Como as pessoas descobrem o que o programa realmente é, não o que ele deve estar em conformidade? As pessoas fazem muitos protótipos ou usam principalmente as ferramentas formais como a UML e eu ainda não aprendi a usá-las?