Corso di Laurea Magistrale in Ingegneria Informatica Corso di Ingegneria del A. A. 2013-2014 Architettura software 1 Architetture software
Sommario Definizioni 2
Architettura Definizione. L architettura di un sistema software è l insieme delle principali decisioni di progetto relative al sistema Altre definizioni: 3
Componente Definizione. Un componente software è un entità architetturale che Incapsula un sottoinsieme delle funzionalità del sistema e/o di data Restringe l accesso a quel sottoinsieme tramite un interfaccia esplicita Ha dipendenze esplicitamente definite sul contesto di esecuzione 4
Componente Le componenti hanno il compito di svolgere elaborazioni o gestire dati o entrambi. Un altro aspetto fondamentale è l interazione tra i vari building block. I moderni sistemi distribuiti sono costituti da numerose componenti complesse distribuite su numerosi host anche mobili e dinamicamente aggiornati anche nell arco di lunghi peridio di tempo. In questi sistemi assicurare interazioni appropriate tra i vari componenti è un compito notevolmente più complesso dell individuazione delle funzionalità di ciascuno. Le interazioni quindi sono il principale aspetto da prendere in considerazione nello sviluppo di sistemi a componenti. Le interazioni tra componenti sono gestite dai connettori 5
Connettore Definizione. Un connettore software è un elemento architetturale che consente di effettuare e regolare le interazioni tra componenti Esempi di connettori: Procedure call Shared data access RPC Adaptor 6
Notazione componente connettore componente 7
Esempio Nelle applicazioni tradizionali i connettori sono generalmente semplici procedure calla o shared data access, considerate generalmente come elementi non esplicitamente raffigurati nel modello dell architettura. In un tipico digramma boxes-and-linesle boxes sono i componenti mentre i connettori sono relegati ad un ruolo minore e rappresentati come linee senza una propria identità e senza importanti proprietà ed attributi. 8
Connettori Si tratta in questo caso di semplici connettori usati per rappresentare l interazione tra coppie di componenti. Per sistemi software più complessi, invece è necessario rappresentare i connettori come elementi a se stanti aventi una propria identità, ruoli ed un copro a livello di codice di implementazione, nonché la possibilità di servire molti componenti 9
Procedure call È il tipo più semplice di connettore: Direttamente implementato dal linguaggio di programmazione Consentono lo scambio sincrono di dati e controllo tra coppie di componenti 10
Shared data access Variabili non locali o memoria condivisa. Connettori di questo tipo consentono a componenti multiple di interagire leggendo da e scrivendo sull area condivisa. L interazione è asincrona: non vi è dipendenza temporale, né altro vincolo di spazio o tempo. 11
Distribution connectors Nei moderni sistemi distribuiti si trova questa classe di connettori. Incapsulano generalmente librerie di APIs per consentire a componenti diverse di interagire. Un distribution connector è generalmente accoppiato con un connettore più semplice che ha il compito di isolare le componenti interagenti dai dettagli del sistema distribuito. Ad esempio una RPC unisce un supporto distribuito con una procedure calls. 12
Adaptor Molti sistemi distribuiti sono costituiti da componenti software preesistenti che possono anche non essere immediatamente integrabili nel sistema in considerazione. In questi casi può essere necessario che le componenti siano integrate ed interagiscano reciprocamente. Il connettore adaptor è utilizzato per ottenere questo scopo. A secondo delle caratteristiche e del contesto in cui viene utilizzato wrappers e glue code sono due tipi di connettori adaptor molto comuni. 13
Componenti - Connettori Le componenti sono generalmente servizi applicationspecific mentre i connettori sono applicationindependent. Publish-subscribe, procedure call, asyncronous event notification hanno caratteristiche e semantica indipendente dal contesto per cui sono utilizzati, sono connettori costruiti senza un particolare obiettivo che possono poi essere applicati in applicazioni anche ripetutamente. 14
Configurazione Definizione. Una configurazione architetturale è un insieme di associazioni specifiche tra i componenti e i connettori dell architettura di un sistema software Può essere rappresentata come un grafo i nodi rappresentano le componenti e i connettori e gli archi le relative associazioni (topologie o interconnessioni). 15
Stile architetturale Definizione. Uno stile architetturale è una collezione di: decisioni di progetto architetturale applicabile in un determinato contesto di sviluppo Vincoli di progetto architetturale che sono specifici ad un particolare sistema in quel contesto Conseguenti attributi di qualità nel sistema risultante 16
Pattern architetturale Definizione. Un pattern architetturale è una collezione di decisioni di progetto architetturale applicabili ad un problema ricorrente, parametrizzate per differenti contesti di sviluppo software in cui quel problema si verifica 17
Connettori I connettori forniscono generalmente servizi quali persistenza, invocation, messaging transaction, indipendenti dal componetene per cui forniscono interazione ad altri componenti. Sono quindi considerati come «facilities components» in middleware molto diffusi come Corba RMI, ecc. Individuando queste facilities come connettori migliora e facilitò la comprensione dell architettura. Considerandolo cioè come connettori più che come componenti facilita anche il loro riutilizzo in quanto garantiscono la «separazione degli interessi» 18
Caratteristiche dei connettori Gli elementi fondamentali alla base di un connettore sono le primitive per gestire il flow of control and flow of data. Mantengono uno o più canali «ducts» utilizzati per collegare le componenti interagenti e supportare il control flow a ed il data flow tra di esse. Un duct è necessario per realizzare un connettore ma non fornisce funzionalità aggiuntive 19
Caratteristiche generali Connettori semplici sono implementati in molti linguaggi di programmazione Connettori complessi possono essere realizzati componenti numerosi connettori elementari e sono forniti da librerie e framework. La classificazione dei connettori è basata su una struttura di grafo aciclico in termini di: categorie tipi dimensioni Subdimensioni Le istanze di ciascun connettore rappresentano la specie che può appartenere anche a tipi diversi. 20
Ruolo dei connettori Ruoli forniti da un connettore: Comunicazione Coordinamento Conversione Semplificazione 21