L'architettura logica di un sistema software è l'organizzazione su larga scala delle classi software in package, sottoinsiemi e strati. L'architettura di un sistema software può essere organizzata secondo diversi "stili". Uno stile comune per l'architettura logica è l'architettura a strati, in cui il sistema è formato da un insieme di elementi chiamati strati. Ciascuno strato è un gruppo a grana molto grossa di classi, package o sottoinsiemi, che ha delle responsabilità coese rispetto a un aspetto importante del sistema.
Gli strati più alti ricorrono ai servizi degli strati più bassi. In genere non avviene il contrario.
Normalmente gli strati sono:
In un'architettura a strati stretta, uno strato può richiamare i servizi dello strato immediatamente sottostante. Questa struttura è comune nei protocolli di rete organizzati a pila. Nell'ambito del software l'architettura a strati è più flessibile.
In uno strato, le responsabilità degli oggetti devono essere fortemente correlate l'uno all'altro, e non devono essere mischiate con le responsabilità degli altri strati. Per esempio, gli oggetti dello strato UI devono essere incentrati sulle attività dell'interfaccia utente (catturare eventi del mouse, della tastiera, ...). Gli oggetti dello strato della logica applicativa o del dominio devono essere incentrati sulla logica applicativa (calcolare il totale di una vendita o le imposte su di essa).
L'interfaccia utente non deve implementare logica applicativa.
Un oggetto Java Swing Frame non deve contenere logica per calcolare le imposte di una vendita.
D'altra canto, oggetti del dominio non devono svolgere compiti della UI, come catturare eventi emessi da mouse o tastiera. Ciò violerebbe i principi di una chiara separazione degli interessi.
Lo strato del dominio è parte del software, mentre il modello di dominio è parte dell'analisi da un punto di vista concettuale. Essi non sono la stessa cosa. Tuttavia, si può creare uno strato del dominio ispirandosi al modello di dominio, in tal modo si ottiene un salto rappresentazionale basso tra il dominio del mondo reale e il progetto software.
Modello: sinonimo per lo strato di oggetti del dominio.
Vista: sinonimo per gli oggetti dell'interfaccia utente.
Gli oggetti del modello non devono avere una conoscenza diretta degli oggetti della vista.
Durante il lavoro di analisi, sono stati abbozzati alcuni SSD per gli scenari dei casi d'uso. Sono stati identificati gli eventi di input nel sistema da parte di attori esterni, per richiedere l'esecuzione delle operazioni di sistema.
Gli SSD, mostrano queste operazioni di sistema, ma nascondono gli oggetti specifici della UI. Ciò nonostante, normalmente saranno gli oggetti dello strato UI del sistema a catturare queste richieste di operazioni di sistema, solitamente attraverso una UI grafica (GUI).
Gli oggetti dello strato UI inoltreranno le richieste da parte dello strato UI allo strato del dominio.
I messaggi inviati dallo strato UI allo strato del dominio saranno i messaggi mostrati negli SSD.
Prossimo argomento: Fase di progettazione (a oggetti)