Principi Fondamentali dell'Architettura del Software
Classificato in Informatica
Scritto il in italiano con una dimensione di 9,54 KB
Principi di Architettura
- Astrazione
- Incapsulamento
- Ripartizione delle competenze
- Accoppiamento e coesione
- Senza duplicati
- Parametrizzazione e configurabilità
- Chiarezza e semplicità
- Separazione di interfaccia e implementazione
L'architettura del software ci permette di ragionare e pianificare per:
- L'affidabilità del sistema
- Evoluzione
- Riutilizzo
- Efficienza
- Migliorare la manutenzione
- Etc.
Qual è il vantaggio di studiare l'Architettura del Software?
Comprendere i dettagli di architetture selezionate favorisce la scelta delle migliori alternative nel design.
Problemi con la mancanza di Architettura
- Scarso rendimento
- Costi di manutenzione elevati
- Mal progettati per evolvere
- Riutilizzo limitato
- Progetti inefficienti
L'architettura è ...
- Una vista strutturale di alto livello
- Definisce lo stile o la combinazione di stili per una soluzione
- Si concentra sui requisiti non funzionali
- I requisiti funzionali sono soddisfatti attraverso la modellazione dell'applicazione e progettazione
- Essenziale per il successo o il fallimento di un progetto
L'architettura di un sistema software è la struttura o le strutture del sistema, composta da:
- Elementi software.
- Proprietà visibili esternamente di questi elementi.
- I rapporti tra di loro.
Ci sono due tipi di strutture che sono di interesse per un architetto:
- Strutture statiche (fase di progettazione organizzativa).
- Strutture dinamiche (organizzazione in fase di runtime).
Elementi Statici
Tratta della progettazione del sistema, quali elementi lo compongono e come si relazionano.
Questi elementi di design interno includono:
Software:
- Moduli.
- Classi
- Pacchetti
- Stored Procedures
Dati:
- Classi
- Entity / tabelle relazionali.
- File di dati
- Documenti XML / HTML.
- Etc.
Hardware Internals:
- CPU
- Componenti hardware (monitor, tastiera, ecc.)
- Componenti di rete
La disposizione di questi elementi statici (software e dati) definisce (a seconda del contesto) i partenariati di relazioni o connessione tra gli elementi.
Dinamica delle Strutture del Sistema
Mostra come il sistema opera in fase di esecuzione.
Proprietà Visibili Esternamente
Le proprietà esterne si manifestano in due modi diversi:
- Comportamento visibile verso l'esterno.
- Attributi di qualità
Comportamento Visibile all'Esterno
Queste proprietà sono correlate alla funzione svolta dal sistema dal punto di vista di un osservatore esterno.
Riguardano specificamente le interazioni funzionali tra il sistema e il suo ambiente.
Attributi di Qualità
Le proprietà esterne sono relative ai requisiti di sistema non funzionali, come prestazioni, sicurezza e manutenzione, tra gli altri.
Architettura Candidata
Un'architettura candidata per una particolare organizzazione è una struttura dinamica e statica che ha il potenziale per esibire il comportamento e gli attributi di qualità richiesti.
È possibile catturare il rapporto tra le proprietà visibili esternamente di un sistema e la sua composizione interna come segue:
- Il comportamento visibile esternamente (lo fa) è determinato dal comportamento combinato degli elementi interni.
- Le caratteristiche di qualità di un sistema, come prestazioni, scalabilità e affidabilità, tra gli altri (io lo faccio) emergono dalle proprietà di qualità degli elementi interni.
Componente Elemento (Architettura)
Un elemento costitutivo o architettonico è un elemento fondamentale da cui un sistema può essere costruito.
I componenti devono essere chiaramente definiti con i seguenti attributi:
- Un insieme di responsabilità.
- Un limite o misura.
- Un insieme di interfacce, che definiscono i servizi che il componente fornisce agli altri componenti.
Le Parti Interessate
Una delle parti interessate in un'architettura è una persona, gruppo o entità con un interesse nello sviluppo di un sistema.
Gli Stili Architettonici
Uno stile architettonico è un meccanismo descrittivo per distinguere un edificio da un altro.
Generalmente, è necessario inventare una nuova architettura software per ogni sistema di informazione. In genere, si tende ad adottare un'architettura basata su vantaggi e svantaggi per ogni caso specifico. Così, le architetture più universali includono:
Client-Server
Qualora il software distribuisce i suoi oneri computazionali in due parti distinte, senza una chiara attribuzione di ruoli. Consiste sostanzialmente in un client che effettua richieste a un altro programma (server) che risponde.
Componenti Client-Server:
- Presentazione logica: la parte dell'applicazione che interagisce con un dispositivo per l'utente finale, come un terminale, un lettore di codice a barre o un computer portatile.
- Logica di business: la parte di un'applicazione che utilizza le informazioni utente e il database per le operazioni in base ai vincoli delle regole di business.
- Logica del database: la parte di un'applicazione che manipola i dati all'interno dell'applicazione.
- Elaborazione del database: il trattamento effettivo dei dati dal database dal DBMS.
Vantaggi Client/Server
- Centralizzazione del controllo
- Scalabilità
- Facilità di manutenzione
Svantaggi Client/Server
- Congestione del traffico
- Aumento dei costi
Architettura a Più Livelli
Specializzazione in architettura client-server in cui il carico è suddiviso in tre parti (o strati) con una chiara divisione di funzioni per il livello di presentazione (interfaccia utente), uno per il calcolo (in cui avviene la modellazione del business) e uno per la conservazione (persistenza). Uno strato si riferisce solo a quello successivo.
Livelli e Strati
- Strato di presentazione: è la parte vista dall'utente (GUI)
- Livello di business: è dove i programmi sono in esecuzione, ricevono le richieste degli utenti e le risposte vengono inviate dopo il processo.
- Strato di dati: è dove risiedono i dati ed è responsabile per accedervi.
"Strati" e "livelli" non sono identici né simili.
Il termine "strato" si riferisce al modo in cui una soluzione è segmentata dal punto di vista logico:
- Presentazione.
- Logica di business.
- Dati.
Al contrario, il termine "livello" corrisponde al modo in cui sono distribuiti i livelli logici in forma fisica.
Tubi e Filtri
- Ogni componente ha un insieme di input e una serie di uscite.
- L'uscita può iniziare prima che si finisca di leggere l'input.
- Trasforma i componenti di dati (filtri).
- I connettori trasmettono dati da un luogo all'altro (tubi).
Enfatizza la trasformazione incrementale dei dati attraverso i vari componenti.
Vantaggi Tubi e Filtri
- Facile da capire. Semplice composizione di filtri.
- Supporto al riutilizzo. I filtri possono essere utilizzati in altri sistemi.
- Facile da mantenere e migliorare. I filtri possono essere sostituiti o possono essere aggiunti nuovi filtri.
- Supporto per l'esecuzione concorrente.
Stili di Architettura: Slate
Si compone di un archivio di dati centrale e una serie di componenti attivi che circondano il repository di dati.
- Il comportamento di base di ogni componente è di esaminare la tavola, fare il proprio lavoro e scrivere le proprie conclusioni sulla stessa scheda.
- Così, un altro componente è in grado di lavorare sui risultati generati da un altro.
- Il calcolo termina quando una condizione desiderata si ottiene tra i risultati pubblicati sul bordo.
La componente di controllo può attivare i componenti di trasformazione secondo un calendario predefinito o ispezionare il bordo e determinare quale elemento di trasformazione è il più adatto per il prossimo turno.
L'effetto di utilizzare lo stile lavagna attribuisce qualità:
- Performance. È uno dei punti di forza di questo stile per due motivi.
- Manutenibilità. Questo è un aspetto forte dello stile di ardesia, perché i componenti di trasformazione sono indipendenti tra loro e possono essere aggiunti o rimossi senza cambiare altri componenti.
- Affidabilità. Due cose da considerare.
Stili di Architettura: Sistemi Orientati agli Oggetti
- Lo stile OO organizza il sistema in termini di comunicazione tra gli oggetti.
- Gli oggetti sono entità che contengono lo stato e le operazioni per accedere e cambiare il loro stato.
Un oggetto di solito ha bisogno di inviare messaggi ad altri oggetti, per cui ogni oggetto è necessario mantenere riferimenti agli oggetti a cui si riferisce.