Eu discordo: UML pode ser usada para arquitetura de aplicativo, mas é mais frequentemente usada para arquitetura técnica (frameworks, classes ou diagramas de sequência, ...), porque é aqui que esses diagramas podem ser mais facilmente mantidos em sincronia com o desenvolvimento .
Arquitetura de Aplicativo ocorre quando você pega algumas especificações funcionais (que descrevem a natureza e os fluxos de operações sem fazer suposições sobre uma implementação futura) e as transforma em especificações técnicas.
Essas especificações representam os aplicativos de que você precisa para implementar algumas necessidades comerciais e funcionais.
Portanto, se você precisa processar várias grandes carteiras financeiras (especificação funcional), pode determinar que precisa dividir essa grande especificação em:
- um despachante para atribuir esses cálculos pesados a diferentes servidores
- um inicializador para garantir que todos os servidores de cálculo estejam funcionando antes de começar a processar esses portfólios.
- uma GUI para poder mostrar o que está acontecendo.
- um componente "comum" para desenvolver os algoritmos específicos do portfólio, independentemente do resto da arquitetura da aplicação, a fim de facilitar os testes de unidade, mas também alguns testes funcionais e de regressão.
Então, basicamente, pensar sobre a arquitetura do aplicativo é decidir qual "grupo de arquivos" você precisa desenvolver de forma coerente (você não pode desenvolver no mesmo grupo de arquivos um iniciador, uma GUI, um despachante, ...: eles não seria capaz de evoluir no mesmo ritmo)
Quando uma arquitetura de aplicativo é bem definida, cada um de seus componentes é geralmente um bom candidato para um componente de configuração , ou seja, um grupo de arquivos que pode ser versionado como um tudo em um VCS (Version Control System), ou seja, todos os seus arquivos serão rotulados juntos toda vez que você precisar gravar um instantâneo desse aplicativo (novamente, seria difícil rotular todo o seu sistema, cada um de seus aplicativos não pode estar em um estado estável ao mesmo tempo)