L'architettura software è l'insieme delle decisioni fondamentali sull'organizzazione di un sistema software, inclusi gli elementi strutturali e le loro interfacce, così come le collaborazioni tra essi.
L'architettura software opera su una scala di alto livello, strutturando il sistema in sottosistemi più ampi e stabilendo uno stile architetturale.
È l'organizzazione su larga scala delle classi software in package, sottosistemi e strati; si chiama "logica" perché non riguarda la distribuzione fisica su dispositivi.
Rappresentano gruppi di classi, package o sottosistemi con responsabilità coese per diversi aspetti del sistema, dove gli strati superiori utilizzano i servizi di quelli inferiori.
1. Interfaccia Utente; 2. Logica Applicativa e Oggetti di Dominio; 3. Servizi Tecnici.
Si rappresenta con un diagramma dei package UML, dove c’è una corrispondenza diretta tra i package e il codice.
In un'architettura a strati stretta, uno strato può richiamare solo i servizi dello strato immediatamente sottostante, mentre in quella rilassata può richiamare anche quelli di strati inferiori a diversi livelli.
Un livello (tier) indica un nodo fisico di elaborazione, come il "livello client".
Uno strato rappresenta una sezione verticale dell'architettura logica, con un insieme di responsabilità coese.
Le partizioni rappresentano una divisione orizzontale di sottosistemi paralleli all'interno di uno strato.
1. Progettare con strati separati; 2. Non includere le risorse esterne come strato inferiore; 3. Seguire il principio di separazione Modello-Vista.
È il principio secondo cui gli oggetti non UI non devono essere direttamente accoppiati agli oggetti UI, garantendo la riusabilità e una logica applicativa separata dagli elementi dell'interfaccia.