Mi permetto di differire: UML può essere utilizzato per l'architettura dell'applicazione, ma è più spesso utilizzato per l'architettura tecnica (framework, diagrammi di classe o sequenza, ...), perché è qui che questi diagrammi possono essere più facilmente sincronizzati con lo sviluppo .
L'architettura dell'applicazione si verifica quando si prendono alcune specifiche funzionali (che descrivono la natura ei flussi delle operazioni senza fare ipotesi su un'implementazione futura) e le si trasformano in specifiche tecniche.
Tali specifiche rappresentano le applicazioni necessarie per l' implementazione di alcune esigenze aziendali e funzionali.
Pertanto, se è necessario elaborare diversi portafogli finanziari di grandi dimensioni (specifica funzionale), è possibile determinare che è necessario dividere tale specifica di grandi dimensioni in:
- un dispatcher per assegnare quei calcoli pesanti a diversi server
- un programma di avvio per assicurarsi che tutti i server di calcolo siano attivi e in esecuzione prima di iniziare a elaborare quei portfolio.
- una GUI per poter mostrare cosa sta succedendo.
- un componente "comune" per sviluppare gli algoritmi di portfolio specifici, indipendentemente dal resto dell'architettura dell'applicazione, al fine di facilitare i test unitari, ma anche alcuni test funzionali e di regressione.
Quindi, fondamentalmente, pensare all'architettura dell'applicazione è decidere quale "gruppo di file" è necessario sviluppare in modo coerente (non è possibile sviluppare nello stesso gruppo di file un launcher, una GUI, un dispatcher, ...: essi non sarebbe in grado di evolversi allo stesso ritmo)
Quando l'architettura di un'applicazione è ben definita, ciascuno dei suoi componenti è solitamente un buon candidato per un componente di configurazione , cioè un gruppo di file che può essere versionato come un tutto in un VCS (Version Control System), il che significa che tutti i suoi file saranno etichettati insieme ogni volta che è necessario registrare un'istantanea di quell'applicazione (di nuovo, sarebbe difficile etichettare tutto il sistema, ciascuna delle sue applicazioni non può essere in uno stato stabile allo stesso tempo)