Stili Architetturali

Transcript

Stili Architetturali
Corso di Laurea Specialistica in Ingegneria Informatica
Corso di Ingegneria del Software
Stili Architetturali
E. TINELLI
A. A. 2008 - 2009
Architettura SW – Definizione e
Notazioni
Definizione
-2000
DefinizioneANSI/IEEE
ANSI/IEEEStd
Std1471
1471-2000
LL’organizzazione
’organizzazione basilare
omponenti,
basilaredi
diun
unsistema,
sistema,rappresentato
rappresentatodalle
dallesue
sueccomponenti,
dalle
ambiente circostante,
dallerelazioni
relazioni che
cheesistono
esistonotra
tradi
diloro
loroeecon
conl’l’ambiente
circostante,eedai
dai
principi
principiche
chegovernano
governanola
lasua
suaprogettazione
progettazioneeeevoluzione
evoluzione
• I sistemi più grandi sono eterogenei e non seguono un singolo
stile Æ uno stile è “dominante”
• Gli elementi architetturali (descritti generalmente come
rettangoli) non sono mai degli oggetti sono piuttosto dei
“macro-oggetti” caratterizzati da:
– un nome/riferimento
– un’interfaccia pubblica (che descrive i servizi che offre)
– un’implementazione privata
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
2
Pattern Architetturale
• Uno stile (o pattern) architetturale esprime una schema per
l’organizzazione strutturale fondamentale di sistemi software
• Descrive il modello organizzativo strutturale di un sistema software
in termini di: 1) sottosistemi e loro responsabilità; 2) linee guida per
organizzare le relazioni tra tali sotto sistemi.
• Ciascun pattern architetturale può essere descritto in termini di
contesto applicativo, soluzione proposta, discussione dei
punti di forza e svantaggi.
• N.B. - I pattern SW non sono tra loro indipendenti Æ alcuni
sono alternativi, altri sinergici Æ utile ragionare anche sulle
relazioni tra pattern
• Un pattern language (linguaggio di pattern) è una famiglia di
pattern correlati che risultano specifici per la progettazione di certi
tipi di sistemi o per certi tipi di requisiti
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
3
Un possibile catalogo di Pattern
• dal fango alla struttura
– per sostenere una decomposizione controllata del sistema complessivo
(decomposizione di un sistema in sottosistemi)
• Layers, Pipes-and-Filters, Blackboard, Shared Repository, Database
Access Layers (DAL), Domain Object
• sistemi distribuiti
– per fornire un’infrastruttura per applicazioni distribuite
• Client-server, Broker
• sistemi interattivi
– per strutturare sistemi software che prevedono un’interazione uomomacchina
• Model-View-Controller (MVC), Boundary-Control-Entity (BCE), BCEDbInterface (BCED)
• sistemi adattabili
– per sostenere l’adattamento del sistema – a fronte dell’evoluzione della
tecnologia e/o dei requisiti funzionali
• Reflection, Microkernel
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
4
Layers
• Si applica a grandi sistemi che si occupano della gestione di diversi aspetti e
richiedono modificabilità e portabilità
• Partiziona il sistema in una gerarchia di strati verticali:
– Ogni strato ha una responsabilità distinta e specifica
– Uno strato può comunicare solo con lo strato sottostante Æ uno strato fornisce
servizi allo strato superiore e richiede servizi allo strato inferiore
– Uno strato potrebbe essere:
• Un modulo – la comunicazione tra strati avviene come chiamate di
procedure (locali)
• Un processo - la comunicazione tra strati avviene utilizzando protocolli e
formati specifici (es. RPC, RMI, ecc)
• Diversi criteri di partizionamento:
–
–
–
–
Astrazione (presentazione, logica applicativa, dati persistenti);
Granularità (processi, servizi, moduli);
Distanza dall’HW;
Tasso di cambiamento atteso
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
5
Layers - Conseguenze
• Prestazioni
– funzionalità sono spesso implementate attraverso più strati: possono essere
richiesti diversi cambiamenti di contesto, penalizzando le prestazioni
– in alcuni casi è possibile migliorare le prestazioni associando un diverso
thread di esecuzione a ciascun evento che deve essere elaborato dal
sistema
– Può essere difficile stabilire la granularità/il numero/il livello di astrazione
degli strati
• Manutenibilità
– può essere alta se le dipendenze sono localizzate ma dipende da come i
cambiamenti si ripercuotono sul sistema Æ i cambiamenti dovrebbero essere
localizzati in singoli componenti/strati
– se le funzionalità del sistema non sono state organizzate rispetto ad alcuni
cambiamenti attesi, altri cambiamenti potranno riguardare molti strati con un
effetto domino
– Possibilità di riusare strati
• Sicurezza
– è possibile inserire strati che introducono opportuni meccanismi di sicurezza –
ad es., autenticazione, autorizzazioni, crittografia, ...
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
6
Object Model
• Guida la decomposizione di elementi architetturali più grandi (ad
es., uno strato di un’architettura secondo Layers) usando come
criteri base il Principio di Separazione degli Interessi e la
Modularità
• La decomposizione può essere guidata da un modello del dominio
(casi d’uso, requisiti non funzionali, requisiti informativi, ecc.)
• Incapsula ciascuna responsabilità funzionale distinta di un sistema
in un elemento auto-contenuto – un oggetto di dominio
– ciascun elemento deve essere internamente coeso e debolmente
accoppiato agli altri elementi
– ciascun elemento deve avere un’interfaccia separata dalla sua
implementazione
– le collaborazioni tra gli elementi devono avvenire solo sulla base
della loro interfaccia
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
7
Shared Repository
• Usato per applicazioni data-intensive in cui le interazioni tra le
componenti del sistema non sono guidate da processi specifici ma possono
essere coordinate sulla base dei dati condivisi su cui operano
• Mantiene i dati in un repository centrale condiviso da tutti i componenti
funzionali del sistema e fa guidare e coordinare il flusso di controllo della
logica applicativa dalla disponibilità qualità e stato dei dati nel repository
• L’accesso ai dati gestiti dal repository condiviso dovrebbe essere
opportunamente sincronizzato
È un punto
d’accesso a dati
condivisi ( es.
un database
relazionale, una
collezione di
oggetti in
memoria, ecc.)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
8
Database Access Layer (DAL)
• Guida la connessione tra elementi architetturali sviluppati con
tecnologia orientata agli oggetti e una base di dati relazionale
• Introduce uno strato separato per l’accesso alla base di dati (database
access layer) – tra l’applicazione e la base di dati relazionale Æ questo
strato fornisce all’applicazione un’interfaccia per l’accesso ai dati stabile
ed orientata agli oggetti (operazioni CRUD - Create, Read, Update,
Delete)
• Il DAL traduce operazioni CRUD in istruzioni SQL e si occupa di altri
aspetti quali concorrenza, transazioni, caching, accesso a DBMS diversi,
ecc.
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
9
Pipe-and-Filters
• Usato per un sistema che deve elaborare un flusso di dati (es.
compilatore) in cui l’elaborazione può essere organizzata in una
sequenza di trasformazioni:
– Filtro – consuma ed elabora dati in modo incrementale e svolge una
singola unità di elaborazione, è possibile avere più sorgenti dati
– Pipe (tubo) – collegano flussi di uscita con flussi di ingresso consecutivi
quindi definendo un preciso formato per i dati che possono attraversarle
connettono i filtri
• Conseguenze:
– La ricombinazione di filtri esistenti può portare alla definizione di nuove
pipeline di elaborazione
– È possibile l’elaborazione parallela e non sono necessari (ma possibili)
file intermedi
– Passi non consecutivi non condividono informazioni Æ difficile la
gestione degli errori, la condivisione di informazioni di stato
– Possibile overhead nella trasformazione dati inter-filtro
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
10
Client - Server
• Organizza un sistema come
– un insieme di servizi
• ciascun servizio è caratterizzato da un’interfaccia – definisce protocollo
e formato dei messaggi scambiati, meccanismi di connessione
tramite protocolli e porte
– un insieme server
• i server sono processi che erogano servizi
– un insieme di client
• i client sono processi fruitori di servizi
• i client sono attivi – i server reattivi
• un server può servire concorrentemente molti client
• Permette la condivisione di risorse, la centralizzazione
dell’elaborazione ma può verificare overhead della
comunicazione
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
11
Architetture Client – Server e Livelli
• Esistono diversi tipi di architetture client/server (C/S)
– le architetture C/S sono normalmente organizzate a livelli
– un livello (tier) corrisponde ad un nodo o gruppo di nodi di calcolo su cui è
distribuito il sistema Æ punto vista del deployment
– il sistema è organizzato come una sequenza di livelli
• ciascun livello funge da server per i suoi chiamanti nel livello precedente
• ciascun livello funge da client per il livello successivo
– i livelli sono comunemente organizzati in base al tipo di servizio (responsabilità)
che forniscono
• Si tratta di un’interpretazione particolare del pattern Layers in cui gli
strati corrispondono all’allocazione di server (processi) su nodi fisici:
• nella vista funzionale, il sistema adotta un’architettura a strati in cui gli strati sono
organizzati in base al livello di astrazione
• nella vista deployment, sistema adotta un’architettura a livelli in cui i livelli sono
organizzati in base al tipo di servizio (responsabilità) che forniscono
• ciascun livello è spesso internamente organizzato a strati
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
12
Client – Server a 2 livelli
• “thin client” - Maggior carico di comunicazione ma buona
portabilità, possibili buone prestazioni perché logica applicativa ed
acceso ai dati non sono separati, l’eventuale potenza di calcolo non
viene sfruttata
• “fat client” - Meno carico sul servente ma scarsa portabilità,
possibilità di distribuire il carico di elaborazione.
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
13
Client – Server a 3 livelli
• consente una migliore distribuzione del carico di elaborazione
• architettura più scalabile se aumenta il carico è possibile aggiungere nuovi
server mentre il livello intermedio può essere realizzato come un cluster di
calcolatori
• Presenta una maggiore complessità dell’architettura e un maggior
overhead nella comunicazione
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
14
Architettura ad oggetti distribuiti - Broker
• Costituisce un’infrastruttura di comunicazione che rende trasparenti
all’applicazione (ed al programmatore) alcune complessità della
distribuzione
• Introduce un componente broker per avere un miglior disaccoppiamento
tra client e server che offre mediante delle API funzionalità per registrare
servizi e richiedere l’esecuzione degli stessi
• il broker incapsula i dettagli dell’infrastruttura di comunicazione
• definisce un modello di programmazione distribuita in cui i client possono
richiedere servizi remoti come se fossero servizi locali. In questo modo, i
dettagli della comunicazione sono separati dalle funzionalità applicative
• Implementa la seguente dinamica di interazione
– i server registrano i propri servizi presso il broker
– i client accedono ai servizi indirettamente, tramite il broker – che inoltra le loro
richieste e gli trasmettono le risposte
• Architettura modificabile ed estensibile, servizi esistenti riusabili,
interoperabilità tra broker diversi, possibile riduzione delle prestazione,
testing complesso
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
15
Model-View-Controller (MVC)
• Divide un’applicazione interattiva in 3 componenti
– Il Model incapsula funzionalità e dati che sono indipendenti dalla
specifica rappresentazione dell’output o dal comportamento di input
– Le Views mostrano le informazioni all’utente. Una View ottiene i dati
dal Model (possono esserci più View di uno stesso Model)
– I Controller gestiscono l’input utente e la comunicazione Model-View.
I componenti Controller ricevono l’input che di solito codifica un evento
come il movimento del mouse o un input da tastiera. Gli eventi sono
poi tradotti in service request per il Model
• La consistenza tra UI e Model è garantita da un meccanismo
di propagazione dei cambiamenti
– quando un modello cambia il suo stato, notifica tutte le sue viste ed i
suoi controller del cambiamento – in modo che questi possano
aggiornare il loro stato in modo appropriato
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
16
Model-View-Controller VS
Boundary-Control-Entity
«uses»
«uses»
Boundary
«uses»
Control
Entity
Attore
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
17
Architettura orientata ai servizi
• servizi ( implementati come Web Services (WS))
– hanno l’obiettivo di incapsulare funzionalità di business (logica applicativa) per
renderle disponibili ed accessibili come servizi sul web
• SOA (Service-Oriented Architecture)
– architettura in cui le funzionalità di business vengono esposte agli utenti come
servizi riusabili e condivisi in rete
• L’ approccio “orientato ai servizi” è basato sull’idea di comporre applicazioni
sulla base della scoperta e dell’invocazione di servizi disponibili in rete
anziché costruire nuove applicazioni solo per svolgere compiti specifici
• Contesto aziendale attuale – alta competitività; integrazione di processi
e informazioni; adattamento rapido a nuovi processi di business; natura
eterogenea delle organizzazioni e delle soluzioni informatiche
(interoperabilità su diverse piattaforme)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
18
Web Services
• Hanno l’obiettivo di fornire servizi sul web a client software
• Un Web Service è un modulo software, auto-contenuto ed autodescrittivo, accessibile mediante Internet, in modo indipendente
dalla piattaforma
• Possono essere composti favorendo l’integrazione di servizi, la
creazione di processi di business completi, con un costo di sviluppo
ridotto sia nell’ambito una singola organizzazione che tra diverse
organizzazioni (integrazione di e-business)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
19
SOA e Layers
• SOA è un approccio architetturale per costruire sistemi e applicazioni
che usano un insieme di servizi – e non solo un singolo sistema
come un insieme di servizi il cui obiettivo è consentire alle
organizzazioni di sviluppare, connettere e mantenere applicazioni e
servizi di tipo enterprise in modo efficiente ed economico
• Lo stile SOA adotta Layers come primo crieterio di decomposizione:
– Livello dei Servizi di Business – ciascun dominio di business (es.
servizio bancario) è costituito da un certo numero di processi di
business (es. erogazione di un mutuo)
– Livello dei Processi di Business – ciascun processo di business
rappresenta un compito di business automatizzato ed elementare che
può essere usato in uno o più processi di business
– Accoppiamento debole tra i servizi e tra servizi-processi ottenuto
mediante incapsulamento Æ separazione tra implementazione ed
interfaccia ed interazioni basate su interfaccia
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
20
Progettazione per Componenti VS SOA
• Le architetture a componenti
– offrono vantaggi legati alla modularità,
al riuso e all’incapsulamento
– nei contesti di integrazione, ciascun
componente deve essere opportunamente
collegato ad altri componenti –
aumentando la complessità del sistema
B
A
• In un’architettura a servizi
– ciascun componente (servizio) incapsula
una funzionalità di business
– la logica dell’infrastruttura tecnologica è
portata ad di fuori dei servizi
– i servizi sono debolmente accoppiati e
possono essere integrati e composti più
facilmente e più agilmente
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
21