Luca Cabibbo
Architetture Software
Descrizioni architetturali, punti di vista e viste Dispensa ASW 140 ottobre 2014 1
Se non è stato descritto, allora non esiste. Philippe Kruchten
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Fonti
2
[SAP] Chapter 1, What is Software Architecture?
[SAP] Chapter 18, Documenting Software Architectures
[SSA] Chapter 2, Software Architecture Concepts
[SSA] Chapter 3, Viewpoints and Views
[Kruchten] Kruchten, Architectural Blueprints – The “4+1” View Model of Software Architecture, IEEE Software, 1995
[PSA] Eeles & Cripps, The Process of Software Architecting
[DSA] Clements et al., Documenting Software Architectures (SEI)
[ISO-42010] Systems and Software Engineering – Architecture Description, ISO/IEC/IEEE, 2011 Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Obiettivi e argomenti
3
Obiettivi introdurre descrizioni architetturali, viste e punti di vista
Argomenti descrizioni architetturali organizzare una descrizione architetturale viste architetturali punti di vista modello a 4+1 viste benefici nell’uso di punti di vista e viste rischi legati alle viste alcuni cataloghi di punti di vista viste di RUP, punti di vista di [SSA], punti di vista di [PSA], tipi di viste di [SAP/DSA] discussione Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Wordle
4
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Architetture sw: concetti fondamentali
5
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Descrizioni architetturali
6
Durante il processo di definizione dell’architettura di un sistema software, l’architettura va rappresentata mediante un’opportuna “descrizione architetturale”
Una descrizione architetturale (AD) [ISO-42010] è un insieme di prodotti che documentano un’architettura prodotti che costituiscono un’AD comprendono modelli architetturali (viste) – ma anche definizione della portata, vincoli, principi, giustificazione logica, ...
Una descrizione architetturale (AD) [SSA] è un insieme di prodotti che documentano un’architettura in un modo comprensibile alle parti interessate e che dimostra che l’architettura soddisfa i loro interessi
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Descrizioni architetturali
7
Una buona descrizione architetturale è la base per l’analisi delle decisioni iniziali di progetto sostiene la comunicazione con le parti interessate è una guida per lo sviluppo e l’evoluzione del sistema
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Un’osservazione
8
Un’osservazione – ovvia, ma è sempre meglio esplicitarla questa dispensa affronta il problema di “descrivere” o “documentare” un’architettura molto più rilevante è l’attività di “definizione” (ovvero, di progettazione) dell’architettura tuttavia, nella definizione di un’architettura è indispensabile utilizzare una buona descrizione – insieme a una buona “notazione” – poiché consente di concentrarsi e ragionare più facilmente su attività, problemi e decisioni di progetto significative
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Organizzare una descrizione architetturale
9
Alcune domande comuni nella progettazione dell’architettura software di un sistema quali sono i principali elementi funzionali? come interagiscono questi elementi tra loro e con il mondo esterno? come vengono gestite, memorizzate e presentate le informazioni? quali elementi hardware e software sono necessari a supportare questi elementi funzionali e queste informazioni? come vengono allocati gli elementi software a quelli hardware? quali caratteristiche e capacità operative devono essere fornite? quali ambienti di sviluppo, test, supporto e formazione? come organizzare il codice? chi sviluppa che cosa? Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Organizzare una descrizione architetturale
10
Alcune domande comuni nella progettazione dell’architettura software di un sistema quali sono i principali elementi funzionali? come interagiscono questi elementi tra loro e con il mondo esterno? Una tentazione a cui resistere: come vengono gestite, memorizzate e presentate le rispondere a tutte queste domande informazioni? mediante un singolo modello, quali elementi hardware e software sono necessari a sovraccarico, che considera insieme tutti informazioni? supportare questi elementi funzionali e queste questi aspetti. come vengono allocati gli elementi software a quelli hardware? quali caratteristiche e capacità operative devono essere fornite? quali ambienti di sviluppo, test, supporto e formazione? come organizzare il codice? chi sviluppa che cosa? Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Non un singolo modello ma tante viste
11
Una descrizione architetturale deve cogliere le caratteristiche funzionali e le proprietà di qualità del sistema – e deve essere comprensibile e di valore a tutte le parti interessate in pratica, l’esperienza dimostra che non è possibile ragionare su un’architettura software mediante un “singolo modello” piuttosto, l’architettura di un sistema complesso può essere descritta in modo molto più efficace tramite un insieme di viste, separate ma correlate, ciascuna delle quali descrive un aspetto diverso dell’architettura collettivamente, le viste descrivono l’intero sistema – le sue caratteristiche funzionali e proprietà di qualità – e dimostrano come il sistema può raggiungere i suoi obiettivi
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Non un singolo modello ma tante viste
12
Una descrizione architetturale deve cogliere le caratteristiche funzionali e le proprietà di qualità del sistema – e deve essere comprensibile e di valore a tutte le parti interessate in pratica, l’esperienza dimostra che non è possibile ragionare su un’architettura software mediante un “singolo modello” piuttosto, l’architettura di un sistema complesso può essere descritta in modo molto più efficace tramite un insieme di viste, separateQui mail correlate, ciascuna delle quali suggerimento è di operare unadescrive un aspetto diverso dell’architettura decomposizione di un sistema complesso in un insieme viste separate. collettivamente, le vistedidescrivono l’intero sistema – le sue Poiché bisogna gestire la complessità, caratteristiche funzionali e proprietà di qualità – e dimostrano prese considerazione modo come ilvanno sistema puòinraggiungere i suoiinobiettivi opportuno anche le correlazioni tra le parti – le viste devono essere correlate.
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Un’analogia
13
Medici specialisti diversi sono interessati a viste differenti del corpo umano – che, pur distinte, sono inerentemente correlate
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Viste architetturali
Una vista architetturale ha lo scopo di descrivere un insieme di elementi del sistema e di relazioni tra di essi che sono rilevanti rispetto a un certo interesse (o insieme di interessi) in effetti, la definizione di ciascuna vista è centrata su uno specifico insieme di interessi ciascuna vista descriverà gli elementi dell’architettura che sono rilevanti nei confronti di quegli interessi – ma non conterrà elementi che non sono rilevanti in tal senso in generale, ciascuna vista comprende uno o più modelli/diagrammi
Ad esempio, una “vista funzionale” è guidata da interessi funzionali e contiene elementi che hanno responsabilità funzionali ma una vista funzionale non si occupa, ad esempio, di aspetti legati alla disponibilità o alla scalabilità, e non descrive l’allocazione degli elementi funzionali ai processi e all’hardware
14
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista [SAP] una vista è una rappresentazione di un insieme coeso di elementi architetturali, che viene scritta e letta da parti interessate al sistema – una vista è la rappresentazione di un insieme di elementi e delle relazioni tra di essi [ISO-42010] una vista architetturale è un prodotto che rappresenta l’architettura di un sistema secondo la prospettiva di specifici interessi del sistema [SSA] una vista è una rappresentazione di uno o più aspetti strutturali di un’architettura, che illustra come l’architettura affronta uno o più interessi di una o più delle sue parti interessate 15
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Due questioni con le viste
16
Due questioni (per ora) con le viste quali viste creare in una descrizione architetturale? questo dipende fortemente dal sistema – intuitivamente, quelle che consentono di descrivere tutti gli interessi rilevanti delle parti interessate a quello specifico sistema ma quante? e quali? una per parte interessata? una per interesse? altro? come creare una vista architetturale? intuitivamente, dipende da quali sono gli interessi rilevanti per la vista e dalle parti interessate a cui è destinata ma quali elementi includere? a quale livello di dettaglio? come sostenere la comprensione da parti interessate diverse, ad es. che hanno un livello tecnico di comprensione differente? come sostenere l’analisi delle qualità? Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Punti di vista
Un punto di vista è una tipologia standard di vista che può essere usata in un’AD la scelta delle viste da produrre per un sistema viene spesso effettuata come una selezione da un catalogo di punti di vista – anziché decidere quali viste creare sulla base di “principi primi” questa scelta viene fatta in base agli interessi rilevanti per un sistema e agli interessi che ciascun punto di vista è in grado di affrontare
Si tratta di un’applicazione dei pattern alle AD orientata al riuso di conoscenza relativa alla “soluzione esemplare di problemi significativi e ricorrenti”
Un’analogia punto di vista : vista = classe : oggetto
17
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Punti di vista [ISO-42010] un punto di vista architetturale è una specifica delle convenzioni per la costruzione, l’interpretazione e l’uso di viste architetturali per inquadrare/elaborare specifici interessi del sistema [SSA] (adattata) un punto di vista è una collezione di pattern, template e convenzioni per costruire un tipo di vista un punto di vista definisce un insieme di interessi rilevanti per le parti interessate – nonché i principi, i modelli e le linee guida necessari per costruire viste di quel tipo
18
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Modello a 4+1 viste
L’uso di viste e punti di vista nelle descrizioni architetturali è descritto da questo celebre articolo P. Kruchten – Architectural Blueprints – The “4+1” View Model of Software Architecture – IEEE Software, 1995
Problema spesso viene usato un solo diagramma per catturare l’architettura di un sistema – inoltre quel diagramma cerca di rappresentare più di quanto è ragionevole fare che cosa rappresentano i rettangoli? codice? processi? computer? che cosa rappresentano le frecce? dipendenze di compilazione? flussi di controllo? flussi di dati?
Krutchen propone l’uso di più viste, concorrenti e correlate definendo, al tempo stesso, un primo catalogo di punti di vista
19
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Modello a 4+1 viste
Il modello a 4+1 viste di Kruchten vista logica – modello a oggetti del progetto, ispirato dal dominio, che sostiene i requisiti funzionali classi, package, script, ... + dipendenze vista dei processi – coglie gli aspetti di concorrenza e sincronizzazione del progetto processi + comunicazione interprocesso vista fisica – descrive le corrispondenze tra software ed hardware, e riflette l’aspetto della distribuzione vista di sviluppo – descrive l’organizzazione statica del software nel suo ambiente di sviluppo organizzazione a strati, organizzazione dei file, ... vista dei casi d’uso (la vista +1) – descrive le funzionalità del
sistema – consente di ragionare sulle relazioni tra viste 20
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Il modello a 4+1 viste
21
Luca Cabibbo – ASw
Descrizioni architetturali, punti di vista e viste
Esempio: vista logica HTML
HTML
JSP
servlet
JSP
JSP
servlet
HttpServlet
pojo pojo
pojo
DAO
pojo
DAO
JDBC
DDL SQL
22
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio: vista dei processi
client
client http/html
http/html web server
app server
SQL dbms server
23
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio: vista fisica
client
client
LAN
WAN web server
app server LAN dbms server
24
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio: vista dei casi d’uso
25
La vista dei casi d’uso (o degli scenari) contiene la descrizione di alcuni scenari di casi d’uso significativi in generale, per scenario si intende una situazione che il sistema dovrà probabilmente affrontare nel suo ambiente di produzione, insieme a una definizione della risposta richiesta dal sistema la vista dei casi d’uso, per ciascuno scenario (o per alcuni dei suoi passi significativi) illustra le interazioni tra gli elementi architetturali presenti nelle diverse viste
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio: vista dei casi d’uso
26
Ad es., che cosa succede quando un utente preme un pulsante per confermare un ordine? 1. il client invia una richiesta HTTP/POST remota 2. l’application server la riceve – invoca una servlet 3. la servlet delega l’esecuzione dell’operazione ai POJO 4. i POJO chiedono ai DAO di salvare i dati 5. i DAO fanno richieste JDBC 6. JDBC traduce queste richieste in comandi SQL remoti 7. questi vengono eseguiti dal DBMS 8. ...
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio: vista dei casi d’uso
Ad es., che cosa succede quando un utente preme un pulsante per confermare un ordine? 1. il client invia una richiesta HTTP/POST remota 2. l’application server la riceve – invoca una servlet 3. la servlet delega l’esecuzione dell’operazione ai POJO 4. i POJO chiedono ai DAO di salvare i dati 5. i DAO fanno“che richieste Questo cosa JDBC succede” può essere descritto separatamente, vista per vista.SQL remoti 6. JDBC traduce queste richieste in comandi La comprensione delle relazioni tra gli 7. questi vengono eseguiti dal DBMS elementi delle diverse viste si può basare 8. ... su una lettura congiunta di queste descrizioni.
27
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste e interessi
In questo modello, ogni vista contiene solo certi tipi di elementi questa è una caratteristica delle viste – ma non è la più importante piuttosto, lo scopo principale di ciascuna vista è di affrontare (ovvero, prendere in considerazione, sostenere) un certo insieme di interessi (tipi di requisiti), dal punto di vista di un certo gruppo di parti interessate
Andiamo a caratterizzare un po’ meglio le viste di Kruchten in questo senso
28
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista logica
La vista logica affronta e sostiene soprattutto gli interessi funzionali si interessa soprattutto a quello che il sistema deve fornire in termini di servizi ai suoi utenti la decomposizione – “un modello a oggetti del progetto... ispirato dal dominio... che sostiene i requisiti funzionali” – è basata su un insieme di astrazioni chiave in termini di classi e oggetti – in realtà, macro-classi e macro-oggetti identificando anche relazioni come associazioni, uso, composizione, ereditarietà, ... riferite al dominio del problema ovvero, una vista logica contiene oggetti a cui sono assegnate
responsabilità funzionali – questo insieme di oggetti deve essere tale da offrire tutti i requisiti funzionali del sistema 29
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista dei processi
La vista dei processi prende in considerazione soprattutto alcuni interessi di qualità (non funzionali), come prestazioni e scalabilità affronta aspetti relativi a concorrenza e distribuzione il sistema è descritto come un insieme di processi indipendenti (concorrenti) e comunicanti alcune relazioni di interesse tra le unità di concorrenza la comunicazione può essere basata sull’invocazione di procedure o sullo scambio di messaggi, sincrona o asincrona, oppure sulla condivisione di memoria quali possibilità di concorrenza? quali punti di sincronizzazione? intuitivamente, ciascun processo corrisponde a uno o più
oggetti della vista logica
30
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista fisica
La vista fisica prende in considerazione soprattutto ulteriori interessi di qualità, come disponibilità (tolleranza ai guasti) e scalabilità il software è in esecuzione su più nodi di calcolo, collegati in rete, che accedono a dischi condivisi questa vista descrive come gli oggetti e i processi sono fisicamente allocati su tali nodi – e come le loro necessità di comunicazione sono fisicamente sostenute da reti e dischi ad esempio, è possibile fornire scalabilità e/o disponibilità
replicando un processo su più nodi di calcolo – in tal caso, sarà necessario anche coordinare tali processi replicati
31
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista di sviluppo
La vista di sviluppo prende in considerazione ancora altri interessi di qualità, legati soprattutto alla facilità di sviluppo e manutenzione si interessa dell’effettiva organizzazione dei moduli (ovvero, del codice) da sviluppare nel loro ambiente di sviluppo si occupa anche dell’allocazione del lavoro di implementazione ai diversi team di sviluppo intuitivamente, ciascun modulo serve a implementare uno o più
oggetti della vista logica
32
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista dei casi d’uso
La vista dei casi d’uso prende in considerazione i requisiti più importanti del sistema – espressi sotto forma di scenari attenzione, non descrive solo scenari intesi come requisiti – ma anche e soprattutto il modo in cui gli elementi dell’architettura interagiscono in tali scenari – in questo modo, consente di ragionare in modo unificato sull’intero sistema gli scenari sono alla base della progettazione di un’architettura (progettazione guidata da scenari), ma anche della sua analisi (validazione), della sua comunicazione (alle parti interessate, sviluppatori compresi), nonché della sua verifica (test)
Kruchten scrive che questa vista è “ridondante” rispetto alle altre forse lo è dal punto di vista dei contenuti il ruolo degli scenari è comunque talmente fondamentale, che con questa affermazione Kruchten non intende in alcun modo sminuire il valore della vista dei casi d’uso
33
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Discussione
34
Krutchen suggerisce anche di effettuare una decomposizione distinta (in elementi e relazioni tra elementi) nell’ambito di ciascuna vista adottare uno stile architetturale in ciascuna vista la presenza di più viste favorisce la coesistenza di più stili architetturali correlare le varie viste/decomposizioni tramite la vista dei casi d’uso la vista dei casi d’uso è basata su scenari significativi utile nella progettazione, comunicazione, validazione e miglioramento delle viste utilizzare un processo iterativo ed evolutivo
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Discussione
35
Inoltre, Krutchen afferma che le varie viste non sono tra loro completamente ortogonali o indipendenti in particolare, gli elementi di una vista sono spesso correlati ad elementi di altre viste è possibile identificare delle “regole” o “euristiche” di progettazione per scegliere in modo sinergico gli elementi da collocare nelle varie viste – quelli che seguono sono solo esempi semplificati si parte dal progetto della vista logica si progetta la vista dei processi sulla base della possibilità che gli oggetti operino in modo concorrente o meno si progetta la vista fisica con riferimento alle necessità di comunicazione tra processi ... Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Discussione
36
Inoltre, Krutchen afferma che le varie viste non sono tra loro completamente ortogonali o indipendenti in particolare, gli elementi di una vista sono spesso correlati ad elementi di altre viste è possibile identificare delle “regole” o “euristiche” di progettazione per scegliere in modo sinergico gli elementi da collocare nelle varie viste – quelli che seguono sono solo esempi semplificati si parte dal progetto della vista logica si progetta la vista dei processi sulla base della possibilità che gli oggetti operino in modo concorrente o meno Guarda le frecce nella figura! alle necessità di si progetta la vista fisica con riferimento comunicazione tra processi ... Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Benefici nell’uso di punti di vista e viste
37
Separazione degli interessi – separation of concerns principio di progettazione fondamentale separa interessi distinti in aree diverse, in modo che ciascuna area abbia uno scopo coeso dividi il progetto in caratteristiche che si sovrappongono il meno possibile modellare un sistema con descrizioni separate ma correlate favorisce i processi di analisi, progettazione e comunicazione, permettendo di concentrarsi separatamente su ciascun interesse
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Benefici nell’uso di punti di vista e viste
Gestione della complessità gli interessi possono essere gestiti separatamente
Miglioramento dell’attenzione/focalizzazione dello sviluppatore l’AD contiene non solo modelli per comunicare con gli utenti o l’acquirente, ma anche modelli focalizzati sugli interessi degli sviluppatori
Comunicazione con gruppi di parti interessate ciascuna parte interessata è probabilmente interessata solo a un sottoinsieme dell’AD bisogna ricordare che i team di sviluppo sono parti interessate – e che la comunicazione tra architetto e team di sviluppo è di fondamentale importanza per il successo di un’architettura
38
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Rischi legati alle viste
39
Alcuni possibili problemi/rischi nell’uso delle viste inconsistenza la verifica della mutua coerenza delle viste è un processo manuale – può essere sostenuto da una vista “+1” e da una checklist di verifiche da fare frammentazione uso di un numero eccessivo di viste, che complica la comprensione e l’analisi dell’AD meglio concentrarsi su viste che affrontano solo interessi veramente importanti può talvolta essere accettabile avere viste “ibride” selezione di un insieme sbagliato di viste non sempre è ovvio capire quali viste usare per descrivere un certo sistema Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Rischi legati alle viste
Le seguenti osservazioni evidenziano uno dei problemi più rilevanti legato all’uso delle viste alcuni interessi possono essere effettivamente gestiti con riferimento (soprattutto) a una singola vista – ad es., la modificabilità tuttavia, altre qualità corrispondono a interessi trasversali alle varie viste – ad es., la sicurezza come è possibile controllare ed ottenere queste qualità, in modo efficace e coerente?
In pratica, questo rischio viene affrontato dagli approcci (di progettazione e validazione) basati su scenari – e, dunque, dalla vista +1 sono però necessari anche altri strumenti – stili, tattiche e prospettive architetturali
40
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Alcuni cataloghi di punti di vista
Il modello a 4+1 viste ha definito un primo “catalogo” di punti di vista dopo tale importante lavoro (che, ricordiamo, è del 1995) sono stati descritti in letteratura – ma soprattutto adottati in pratica – diversi cataloghi di punti di vista ne consideriamo brevemente alcuni
Come si potrà vedere, non esiste nessun catalogo “standard” e “universale” di punti di vista tuttavia, alcuni punti di vista (e loro combinazioni) sono piuttosto diffusi
41
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Viste di RUP
Il modello a 4+1 viste di Kruchten è stato recepito ed esteso da Unified Process (UP)
In particolare, RUP (un’implementazione di UP molto diffusa) adotta il seguente insieme di viste – fortemente basato sul modello a 4+1 viste vista logica vista dei processi vista di deployment – la vista fisica di Kruchten vista di implementazione – la vista di sviluppo di Kruchten vista dei casi d’uso vista dei dati una nuova vista, che si occupa dei dati di interesse per il sistema – nonché del modo in cui i dati sono gestiti o scambiati tra i vari elementi dell’architettura
42
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Punti di vista di [SSA]
[SSA] propone un catalogo basato su sette punti di vista Context Viewpoint
43
Functional Viewpoint
Development Viewpoint
Information Viewpoint
Deployment Viewpoint
Concurrency Viewpoint
Operational Viewpoint
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Punti di vista di [SSA]
Il catalogo di punti di vista di [SSA] il punto di vista del Contesto descrive le relazioni, le dipendenze e le interazioni tra il sistema e il suo ambiente i punti di vista Funzionale, delle Informazioni e della Concorrenza caratterizzano l’organizzazione fondamentale del sistema il punto di vista dello Sviluppo ha lo scopo di sostenere la costruzione del sistema i punti di vista di Deployment (rilascio) e Operazionale (di gestione) caratterizzano l’ambiente di utilizzo del sistema
Caratteristiche e uso (abbastanza) indipendenti per descrivere un sistema, alcune viste saranno più importanti di altre – dipende dal sistema! non tutti i sistemi richiedono tutte le viste
44
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
Punto di vista del Contesto descrive le relazioni, le dipendenze e le interazioni tra il sistema e il suo ambiente (le persone, i sistemi e le entità esterne con cui interagisce) la vista del Contesto svolge un ruolo importante perché aiuta le parti interessate a comprendere la portata e le responsabilità del sistema, e come esso si relaziona con l’organizzazione
45
Luca Cabibbo – ASw
Descrizioni architetturali, punti di vista e viste
Esempio (parziale) di diagramma di contesto Internal systems
Account System
Warehouse Management System
Distribution System
Existing data sources
Type of user
Customers
Product Database
«system» Online Catalog and Product Ordering System
Customer Database
System under discussion
46
«external» Distribution System
«external» CC Validation System
Descrizioni architetturali, punti di vista e viste
External systems
Luca Cabibbo – ASw
I punti di vista di [SSA]
Punto di vista Funzionale descrive gli elementi funzionali del sistema, le loro responsabilità, interfacce e interazioni principali pilastro di molti AD guida la forma di altre strutture e viste impatto significativo su alcune qualità del sistema – modificabilità, sicurezza, prestazioni, ...
47
Luca Cabibbo – ASw
Descrizioni architetturali, punti di vista e viste
Esempio (parziale) di vista funzionale «external» Customer Care Interface
«external» Customer Web Browser «external» Catalog Admin Web Browser
{type=HTML user interface, protocol=HTTP, number=1000 concurrent}
{number=80 concurrent}
Customer Web Interface
Manage Customer
{type=HTML user interface, protocol=HTTP, number=15 concurrent}
Query Customer Customer Information System
WebShop
Employee Web Interface Catalog Management Interface
Receive Message Place Order
Query Catalog
Order Processor {type=API callback} Publish Message «publish/ subscribe» Order Topic
Receive Message «external» Order Fulfillment
48
Product Catalog Manage Catalog {type=RPC, protocol=LU6.2} Check Level «external» Stock Inventory
Order message propagated via PUR1 EAI message endpoint to order fulfillment
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
49
Punto di vista delle Informazioni descrive il modo in cui l’architettura memorizza, manipola, gestisce e distribuisce informazioni – in termini di strutture di dati statiche e di flussi di informazioni importante perché lo scopo dei sistemi informatici è gestire informazioni
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio (parziale) di vista delle informazioni
50
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
Punto di vista della Concorrenza descrive l’organizzazione della concorrenza e mappa gli elementi funzionali su unità di concorrenza, nonché le parti concorrenti del sistema e le loro necessità e modalità di sincronizzazione struttura di processi e thread e meccanismi di comunicazione interprocesso
51
Luca Cabibbo – ASw
Descrizioni architetturali, punti di vista e viste
Esempio (parziale) di vista della concorrenza «process» DBMS Process
«process» DBMS Client «thread» Network Thread
Client Code {type= socket stream}
«thread» Query Processing Thread { number=1..40 }
Network Listener Optimizer
Client SQL Library «ipc_queue» Request Queue
Query Processor
Execution Engine
Access Engine
«thread» I/O Thread { number=1..10 }
«ipc_sh_mem» I/O Request Area
Disk IO Manager
52
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
53
Punto di vista dello Sviluppo descrive l’architettura che supporta il processo di sviluppo ad es., organizzazione del codice, dei moduli, dei test di interesse per chi sviluppa, verifica, mantiene e migliora il sistema – e per chi deve gestire tali persone
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Esempio (parziale) di vista dello sviluppo
54
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
Punto di vista del Deployment descrive l’ambiente in cui il sistema sarà rilasciato, comprese le dipendenze dall’ambiente runtime elementi hardware (computer, dischi, reti, ...), requisiti per tali elementi, corrispondenze tra elementi software e l’ambiente di esecuzione
55
Luca Cabibbo – ASw
Descrizioni architetturali, punti di vista e viste
Esempio (parziale) di vista di deployment IAF23 interface to production line monitoring hw
Production Line Interface
internode relationships show required interconnection paths
Disk Array {mftr=Sun, model=se4500} SCSI connection, not network
UML nodes used to represent hw elements within deployment environment
Primary Server {memory=8GB, model=axyz, CPU=2 x 1.8GHz, mftr=Sun}
Database Server {model=E420R, memory=16GB, mftr=Sun, CPU=2 x 1GHz}
Data Capture Service
Oracle DBMS Instance Data Access Service attributes used to indicate required hw specifications
Calculation Server {model=V880, mftr=Sun, memory=2GB, CPU=4 x 2.4GHz}
Production Line Operator PC {memory=256MB, CPU=800MHz}
Production Planner PC {memory=1GB, CPU=1GHz}
Operator Client
Planner Client
Predictive Calculator
functional elements mapped to hw nodes
56
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
57
Punto di vista Operazionale descrive come il sistema sarà usato, amministrato e supportato quando sarà in esecuzione nell’ambiente di produzione per affrontare interessi relativi alla gestione del sistema – ad es., installazione, aggiornamento, monitoraggio, gestione delle configurazioni, ...
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
I punti di vista di [SSA]
58
In [SSA], ciascun punto di vista è definito soprattutto in termini di quali sono i principali interessi affrontati da quel punto di vista quali i modelli che possono essere utilizzati – e quali elementi e relazioni vi possono comparire attività e linee guida per la realizzazione di tali modelli alcune situazioni problematiche comuni applicabilità e parti interessate bibliografia
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Vista logica e vista funzionale
Un breve confronto tra il punto di vista funzionale di [SSA] e la vista logica di Kruchten la vista logica di Kruchten è “un modello a oggetti del progetto... ispirato dal dominio... che sostiene i requisiti funzionali” la vista funzionale è “un modello del progetto... ispirato dal dominio... che sostiene i requisiti funzionali”
La visione di [SSA], più moderna riconosce ancora la rilevanza delle decomposizioni basate sul dominio del problema riconosce che la modellazione del dominio con approcci diversi più portare ad architetture differenti ma comunque significative ad es., modellazione del dominio basata su informazioni e casi d’uso nelle architetture a componenti ma, ad es., basata su attività e processi nelle architetture orientate ai servizi
59
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
[SSA] e vista dei casi d’uso
60
Nel catalogo di punti di vista di [SSA] manca una vista corrispondente a quella dei casi d’uso di Kruchten in realtà, in [SSA] le idee alla base della vista dei casi d’uso di Kruchten sono considerate fondamentali – in pratica, tali idee confluiscono nell’adozione di un processo per la definizione dell’architettura basato su scenari insomma, l’idea della vista +1 (innovativa nel 1995) è considerata oggi talmente buona e assodata che non c’è nemmeno bisogno di parlarne esplicitamente – almeno in un contesto di punti di vista
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Punti di vista di [PSA]
[PSA] introduce un catalogo basato su due tipi di punti di vista basic viewpoints – corrispondono, più o meno, ai punti di vista di [RUP] o di [SSA] cross-cutting viewpoints – casi specializzati della vista a scenari – corrispondono, più o meno, alle prospettive di [SSA] Basic Viewpoints
Cross-Cutting Viewpoints
Requirements Viewpoint
Functional Viewpoint
Deployment Viewpoint
Validation Viewpoint
Application Viewpoint Infrastructure Viewpoint System Mgmt Viewpoint Availability Viewpoint Performance Viewpoint Security Viewpoint
61
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Tipi di viste di [SAP/DSA]
Secondo [DSA] – dagli stessi autori di [SAP] – le viste architetturali possono essere generalmente suddivise in quattro categorie (viewtypes, tipi di vista), sulla base della natura degli elementi che contengono oppure degli interessi che affrontano viste a moduli i moduli sono unità di implementazione viste a componenti e connettori con riferimento alle unità di esecuzione viste di allocazione mostrano le relazioni tra elementi software ed il loro ambiente esterno viste per qualità per affrontare interessi specifici diversamente dagli altri cataloghi, i nomi dati alle viste sono
prevalentemente “sintattici” e non “semantici” 62
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste a moduli
Viste a moduli gli elementi sono moduli – unità di implementazione (codice) ai moduli vengono assegnate responsabilità funzionali meno interesse sul comportamento al tempo di esecuzione possibili relazioni tra moduli – ad es., usa, estende, dipende da, strati, ...
Module
decomposition
uses
class
layered 63
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste a moduli
64
Le viste a moduli consentono di rispondere a domande come quale è la responsabilità principale di un modulo? quali altri moduli può usare un modulo? quali altri moduli sono effettivamente usati da un modulo? quali moduli specializzano altri moduli?
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste a componenti e connettori
Viste a componenti e connettori gli elementi sono componenti runtime (unità di calcolo, processi) e connettori (meccanismi di interazione e comunicazione tra componenti) punto di vista basato su processi/task/thread relazioni – connessioni tra componenti e connettori – su porte Component-and-Connector shared data
client-server concurrency
process
pipe-and-filter 65
publish-subscribe peer-to-peer
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste a componenti e connettori
66
Le viste a componenti e connettori consentono di rispondere a domande come quali sono i principali componenti in esecuzione? come interagiscono? quali sono i dati condivisi? quali parti del sistema sono replicate? come si muovono i dati nel sistema? quali parti del sistema sono eseguite in parallelo? la struttura del sistema può cambiare durante l’esecuzione?
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste di allocazione
Viste di allocazione gli elementi sono sia elementi software (ad es., moduli) che elementi in ambienti esterni (in cui il software viene sviluppato o eseguito) relazioni – di corrispondenza/allocazione
Allocation
work assignment
implementation deployment
67
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste di allocazione
68
Le viste di allocazione consentono di rispondere a domande come su quale elemento hardware viene eseguito un componente software? in quali file viene memorizzato un elemento – durante l’implementazione, il test e la costruzione del sistema? quale è l’assegnazione di elementi software a team di sviluppo?
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
Viste per qualità
69
Viste per qualità le viste a moduli, a componenti e connettori e di allocazione sono viste strutturali, e consentono di affrontare molti interessi tuttavia, se certe proprietà di qualità sono pervasive o di particolare importanza in un sistema, le viste strutturali potrebbero essere inadeguate a ragionare in modo efficace su tali qualità – ad esempio, perché non è conveniente fare ragionamenti complessi su più viste in tal caso, è possibile usare delle viste dedicate ad affrontare degli specifici interessi di qualità ad esempio, una vista della sicurezza, delle prestazioni o della disponibilità queste viste corrispondono, più o meno, ai cross-cutting viewpoints di [PSA] e alle prospettive di [SSA]
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
- Relazioni tra cataloghi
È possibile identificare delle relazioni/corrispondenze tra punti di vista nei diversi cataloghi – ad esempio la vista Funzionale di [SSA] è un’estensione della vista logica di Kruchten di solito, una vista Funzionale di [SSA] è definita come una vista a componenti e connettori di [SAP] la vista delle Informazioni di [SSA] corrisponde alla vista dei dati di RUP la vista di Sviluppo di [SSA] può essere descritta con una vista a moduli di [SAP]
Allo stesso tempo, è difficile stabilire delle corrispondenze esatte tra punti di vista in cataloghi diversi
70
Descrizioni architetturali, punti di vista e viste
Luca Cabibbo – ASw
* Discussione
Importanza di una buona descrizione architetturale esplicita comunicazione con le parti interessate base per l’analisi delle decisioni iniziali di progetto guida allo sviluppo
I sistemi software sono troppo complessi per poter essere descritti da un singolo diagramma piuttosto, una descrizione architetturale è composta da più modelli o viste ciascuna vista affronta alcuni interessi del sistema la creazione delle viste può essere guidata da un opportuno catalogo di punti di vista
71
Luca Cabibbo – ASw
Descrizioni architetturali, punti di vista e viste
Relazioni tra concetti fondamentali relates
Architectural Element
2..*
Interelement Relationship
*
*
*
comprises comprises has an Architecture
System
can be documented by
addresses the needs of *
* Architectural Description
documents architecture for Stakeholder *
* *
comprises
has
*
* conforms to
View * 72
addresses Viewpoint
Concern *
Descrizioni architetturali, punti di vista e viste
* Luca Cabibbo – ASw