Corso di Ingegneria del Software Paolo Bottoni Lezione 11: Progetto Architetturale Obiettivi • • • • • Introdurre importanza progetto architetturale. Spiegare decisioni di progetto architetturale. Illustrare alcune architetture di applicazione. Illustrare alcune architetture distribuite. Discutere architetture di riferimento per comunicare e confrontare architetture. Ingegneria del Software Lezione11Architetture 2 Architettura software • Progetto architetturale: Processo che identifica sotto-sistemi e quadro di riferimento per controllo e comunicazione sotto-sistemi. • Risultato è descrizione di architettura software. Ingegneria del Software Lezione11Architetture 3 Progetto architetturale • • • • Stadio iniziale processo di progetto. Collegamento tra specifica e progetto. Spesso condotto in parallelo con specifica Comporta identificazione componenti principali sistema e loro comunicazioni. Ingegneria del Software Lezione11Architetture 4 Vantaggi di un'architettura esplicita • Comunicazione con stakeholder – Architettura focalizza discussione. • Analisi sistema – Investigare soddisfazione requisiti non funzionali. • Riuso su larga scala. – Riutilizzabile per vari sistemi. Ingegneria del Software Lezione11Architetture 5 Architettura e requisiti non-funzionali • Prestazioni – Localizzare operazioni critiche e minimizzare comunicazioni. – Usare componenti di grana grossa piuttosto che fine. • Sicurezza – Usare architettura stratificata con valori critici in strati interni. • Salvaguardia – Localizzare caratteristiche critiche in piccolo numero di sottosistemi. • Disponibilità – Includere componenti ridondanti e meccanismi di tolleranza a errori. • Manutenibilità – Usare componenti di grana fine, rimpiazzabili. Ingegneria del Software Lezione11Architetture 6 Conflitti architetturali • Uso di componenti di grana grossa migliora prestazioni ma riduce manutenibilità. • Introduzione dati ridondanti migliora disponibilità, ma più difficile garantire sicurezza. • Localizzare caratteristiche di salvaguardia porta a più comunicazione, quindi degrada prestazioni. Ingegneria del Software Lezione11Architetture 7 Strutturazione del sistema • Decomposizione in sotto-sistemi interagenti. • Diagramma a blocchi mostra visione generale struttura sistema. • Modelli più specifici per condivisione dati fra sotto-sistemi, distribuzione e interfacciamento. Ingegneria del Software Lezione11Architetture 8 Decisioni di progetto architetturale • • • • • • • • Esiste architettura applicativa generica? Come sarà distribuito sistema? Quali stili architetturali sono appropriati? Che approccio sarà usato per strutturare sistema? Come sarà decomposto sistema in moduli? Che strategia di controllo sarà usata? Come sarà valutato progetto architetturale? Come sarà documentata architettura? Ingegneria del Software Lezione11Architetture 9 Riuso dell'architettura • Per sistemi stesso dominio spesso architetture simili che riflettono concetti dominio. • Linee di prodotti applicativi costruiti intorno ad architettura base con varianti che soddisfano particolari requisiti cliente. Ingegneria del Software Lezione11Architetture 10 Stili architetturali • Modello architetturale di sistema può conformarsi a generico modello o stile architetturale. • Conoscenza stili semplifica definizione architettura. • Grandi sistemi spesso eterogenei. – Non seguono singolo stile architetturale. Ingegneria del Software Lezione11Architetture 11 Modelli architetturali • • • • • Usati per documentare progetto architetturale. Modello strutturale statico per componenti principali. Modello di processo dinamico per struttura processo. Modello di interfaccia per interfacce sotto-sistemi. Modello di relazioni per relazioni fra sotto-sistemi – Es. Modello di flusso dei dati • Modello di distribuzione per distribuzione su macchine. Ingegneria del Software Lezione11Architetture 12 Architetture di applicazione generiche • Sistemi applicativi progettati per rispondere a bisogno organizzativo • Attività economiche hanno caratteristiche comuni. Sistemi con architettura comune che riflette requisiti applicativi. • Architettura generica configurata e adattata per rispondere a requisiti specifici. Ingegneria del Software Lezione11Architetture 13 Uso di architetture di applicazione • • • • • Punto di partenza per progetto architetturale Lista di controllo per progetto Modo di organizzare lavoro gruppo di sviluppo Mezzo per valutare componenti per riuso Vocabolario per parlare di tipi dell'applicazione. Ingegneria del Software Lezione11Architetture 14 Tipi di applicazione • Applicazioni di elaborazione dati – Guidate da dati, elaborano dati a lotti senza intervento utente esplicito durante elaborazione. • Applicazioni di elaborazione di transazioni – Centrate su dati, elaborano richieste utente e aggiornano informazioni in base di dati. • Sistemi di elaborazione di eventi – Azioni sistema da interpretazione eventi in ambiente • Sistemi di elaborazione di linguaggi – Intenzioni utente specificate in linguaggio formale elaborato e interpretato da sistema. Ingegneria del Software Lezione11Architetture 15 Esempi • Sistemi di elaborazione dati – Sistemi di addebito – Sistemi di paghe • Sistemi di elaborazione di transazioni – Sistemi di e-commerce – Sistemi di prenotazione • Sistemi di elaborazione di eventi – Elaboratori di testi – Sistemi a tempo reale • Sistemi di elaborazione di linguaggi – Compilatori – Interpreti di comandi Ingegneria del Software Lezione11Architetture 16 Sistemi di elaborazione dati • Basi di dati solitamente ordini di grandezza maggiori del software stesso. • Dati introdotti e ottenuti in lotti – Ingresso: insieme di numeri di clienti e letture associate di contatori elettrici. – Uscita: insieme di bollette corrispondenti, una per ogni numero cliente. • Struttura: ingresso-elaborazione-uscita. Ingegneria del Software Lezione11Architetture 17 Ingresso-elaborazione-uscita • Componente ingresso legge dati da documento o base di dati, controlla validità, accoda dati validi. • Componente processo preleva transazione da coda ingresso, crea nuova struttura con risultati calcolo. • Componente uscita legge strutture, le organizza e le scrive su base di dati o manda a stampante. Sistema Ingresso Processo Uscita Printer Database Ingegneria del Software Lezione11Architetture 18 Diagramma di flusso dati per stipendi Tax deduction + SS number + tax office Employee records Read employee record Decoded employee record Read monthly pay data Write pension data Monthly pay rates Compute salary Pay information Print payslip Empoyee data + deductions Net payment + bank account info. Tax tables Monthly pay data Ingegneria del Software Tax transactions Pension data Pension deduction + SS number Valid employee record Validate employee data Write tax transactions Social security deduction + SS number PRINTER Write bank transaction Bank transactions Write social security data Social security data Lezione11Architetture 19 Sistemi di elaborazione transazioni • Elabora richieste utente di informazione da base di dati o di aggiornamento base. • Prospettiva utente: – Sequenza coerente di operazioni che soddisfa obiettivo. • Es. trovare orari voli da Londra a Parigi. • Richieste utente verso servizio asincrone. – Elaborate da gestore transazioni. I/O processing Ingegneria del Software Application log Transaction manager Lezione11Architetture Database 20 Organizzazione sistema bancomat Input Get customer account id Process Output Print details Query account Validate card Return card Update account Select service ATM Ingegneria del Software Dispense cash Database Lezione11Architetture ATM 21 Strato intermedio gestione transazioni • Gestisce comunicazione con diversi tipi di terminali (es. Bancomat e terminali a sportello), serializza dati e li invia per elaborazione. • Elaborazione richiesta in base di dati. • Risultati a terminale tramite gestore di transazioni. Interrogazioni e aggiornamenti conti Transazioni serializzate Gestore elaborazione remota Base di dati conti Bancomat e sportelli Ingegneria del Software Lezione11Architetture 22 Architettura di applicazione stratificata • Tipica per sistemi informativi • Strato di presentazione – presentazione risultati calcolo – raccolta ingressi utente Interfaccia utente Comunicazioni con utente Ritrovamento e modifica informazione Gestione transazioni Base di dati • Strato di comunicazione con utente – Disaccoppiamento da dispositivo • Strato di elaborazione – fornisce funzionalità specifiche applicazione • Es. in sistema bancario, "apri conto", "chiudi conto" • Strato di gestione dati – Gestisce basi dati. Ingegneria del Software Lezione11Architetture 23 Architettura LIBSYS • Sistema biblioteca LIBSYS. • Strato di comunicazione utente – Componente per login. – Gestore moduli e interrogazioni. – Gestore stampa. • Strato ritrovamento informazione – – – – Ricerca distriibuita. Ritrovamento documento. Gestore dei diritti. Contabilità. Ingegneria del Software Lezione11Architetture 24 Organizzazione LIBSYS Web browser interface LIBSYS login Distributed search Forms and query manager Document retrieval Print manager Rights manager Accounting Library index DB1 Ingegneria del Software DB2 DB3 DB4 Lezione11Architetture DBn 25 Sistemi di allocazione risorse • Quantità fissata di risorse da allocare a utenti. • Esempi: – Sistemi di gestione orario. – Sistemi di biblioteca. – Sistemi di controllo traffico aereo. Ingegneria del Software Lezione11Architetture 26 Architetture sistemi di allocazione risorse • Sistemi stratificati: – – – – – – – – Base di dati di risorse. User interface Insieme di regole per allocazione Gestore di risorse User Query Resource authentication delivery management Allocatore di risorse Autenticazione utente Resource Resource policy Resource management allocation control Gestore interrogazioni Componente consegna risorse Transaction management Interfaccia utente Resource database Ingegneria del Software Lezione11Architetture 27 Architettura di sistema e-commerce • Sistemi di gestione risorse su Internet che accettano ordini elettronici per merci o servizi. • Più livelli – strati applicativi associati a ogni livello. Web browser Ingegneria del Software Web server Application server Lezione11Architetture Database server 28 Sistemi di elaborazione eventi • Rispondono a eventi nel loro ambiente • Tempo dell'evento impredicibile. • Tipi più comuni – Sistemi a tempo reale – Sistemi di editing Ingegneria del Software Lezione11Architetture 29 Sistemi di editing • Sistemi a utenti singoli • Devono fornire retroazione rapida ad azioni utente • Organizzati su transazioni lunghe. – Possono includere strumenti per recupero. Ingegneria del Software Lezione11Architetture 30 Componenti sistemi di editing • Naturalmente orientati a oggetti: – – – – – – – Schermo –gestisce memoria schermo e individua eventi. Evento – riconosce eventi e li passa a elaborazione. Comando – esegue comando utente. Dati editor – gestisce struttura dati editor. Dati ausiliari – gestisce altri dati, es. stili e preferenze. Sistema di documenti – gestisce I/O documenti. Display – aggiorna immagine schermo. Ingegneria del Software Lezione11Architetture 31 Architettura sistema editing File System save open Ancillary data Editor data Ancillary commands Editing commands Command Display interpret update Event Screen process refresh Ingegneria del Software Lezione11Architetture 32 Sistemi elaborazione linguaggio • Accetta linguaggio naturale o artificiale come ingresso e genera rappresentazione diversa. • Può includere interprete per agire su istruzioni linguaggio in elaborazione. • Usati quando modo più semplice per risolvere problema è descrivere algoritmo o dati di sistema. – Strumenti Meta-CASE elaborano descrizioni di strumenti, regole di metodi, etc. e generano strumenti. Ingegneria del Software Lezione11Architetture 33 Sistema elaborazione linguaggio Translator Instructions Check syntax Check semantics Generate Abstract m/c instructions Interpreter Data Ingegneria del Software Fetch Execute Lezione11Architetture Results 34 Componenti elaboratore di linguaggio • • • • • • Analizzatore lessicale Tabella dei simboli Analizzatore sintattico Albero sintattico Analizzatore semantico Generatore di codice Ingegneria del Software Lezione11Architetture 35 Stili di decomposizione modulare • Decomposizione di sotto-sistemi in moduli. • Non c'è distinzione rigida fra organizzazione sistema e decomposizione modulare. Ingegneria del Software Lezione11Architetture 36 Sotto-sistemi e moduli • Sotto-sistema è sistema in sé con operazioni indipendenti da servizi forniti da altri sotto-sistemi. • Modulo è componente di sistema che fornisce servizi ad altre componenti, ma non è normalmente considerato sistema separato. Ingegneria del Software Lezione11Architetture 37 Decomposizione modulare • Due modelli: – Modello a oggetti: decomposizione in oggetti interagenti. – Modello a condotta, o flusso di dati: decomposizione in modelli funzionali che trasformano ingressi in uscite. • Se possibile, decisioni su concorrenza ritardate fino a implementazione dei moduli. Ingegneria del Software Lezione11Architetture 38 Metodi di progetto I • Decomposizione funzionale – – – – Ripartisce funzioni o requisiti in moduli Inizia da funzioni elencate in specifica requisiti Progetto a basso livello divide in sottofunzioni, assegnate a sottomoduli Descrive dipendenze di chiamate fra moduli Ingegneria del Software Lezione11Architetture 39 Metodi di progetto II • Decomposizione orientata alle caratteristiche – Assegna caratteristiche a moduli – Progetto alto livello: servizio e collezione di caratteristiche – Progetto a basso livello: • come ogni caratteristica incrementa servizio • Interazioni fra caratteristiche Ingegneria del Software Lezione11Architetture 40 Metodi di progetto III • Decomposizione orientata ai dati • Fuoco su come ripartizione dati fra moduli • Progetto alto livello: strutture dati concettuali • Progetto basso livello • Distribuzione dati fra moduli • Dati distribuiti realizzano modelli concettuali Ingegneria del Software Lezione11Architetture 41 Metodi di progetto IV • Decomposizione orientata a processi • Sistema ripartito in processi concorrenti • Progetto alto livello: • Identifica compiti principali sistema • Assegna compiti a processi da eseguire • Specifica come si coordinano compiti • Progetto a basso livello: dettagli su processi Ingegneria del Software Lezione11Architetture 42 Metodi di progetto V • Decomposizione orientata a eventi • Fuoco su eventi da gestire • Assegna responsibilità per eventi a diversi moduli • Progetto alto livello: cataloga eventi attesi in input per sistema • Progetto basso livello: • Decomposizione sistema in stati • Specifica come eventi attivano trasformazioni di stato Ingegneria del Software Lezione11Architetture 43 Metodi di progetto VI • Decomposizione orientata a oggetti • Assegna oggetti a moduli • Progetto alto livello: • Identifica tipi di oggetti in sistema • Specifica relazioni fra oggetti • Progetto basso livello dettaglia attributi e operazioni oggetti Ingegneria del Software Lezione11Architetture 44 Modelli a oggetti • Strutturano sistema in insieme di oggetti debolmente accoppiati con interfacce ben definite. • Decomposizione orientata a oggetti interessata a identificare classi di oggetti, attributi e operazioni. • Quando implementati, oggetti creati da classi e modello di controllo coordina operazioni oggetti. Ingegneria del Software Lezione11Architetture 45 Sistema di elaborazione delle fatture Customer customer# name address credit period Payment invoice# date amount customer# Ingegneria del Software Receipt Invoice invoice# date amount customer invoice# date amount customer# issue () sendReminder () acceptPayment () sendReceipt () Lezione11Architetture 46 Vantaggi del modello a oggetti • Accoppiamento debole: Implementazione modificabile senza influenzare altri oggetti. • Oggetti possono riflettere entità mondo reale. • Linguaggi OO largamente usati • Problemi: – Da cambiamenti interfaccia oggetti. – Entità complesse difficili da rappresentare come oggetti. Ingegneria del Software Lezione11Architetture 47 Condotte orientate alla funzione • Trasformazioni funzionali – Elaborano ingressi e producono uscite. • Modello a condotta e filtri – Es. shell UNIX • Adatto per: – trasformazioni sequenziali – modello di elaborazione a lotti – sistemi di elaborazione dati. • Non adatto a sistemi interattivi. Ingegneria del Software Lezione11Architetture 48 Sistema di elaborazione di fattura Lettura invoices Fatture Issue receipts Receipts Find payments due Issue payment r eminder Identify payments Reminders Payments Ingegneria del Software Lezione11Architetture 49 Modello a condotta di compilatore Symbol table Syntax tree Lexical analysis Ingegneria del Software Syntactic analysis Semantic analysis Lezione11Architetture Code generation 50 Vantaggi modello a condotta • • • • Supporta riuso di trasformazioni. Intuitivo per comunicazione con stakeholder. Facile aggiungere nuove trasformazioni. Implementazione semplice. – Sistema concorrente o sequenziale • Problema: – Richiede formato comune per trasferimento dati. – Difficile supporto per interazione basata su eventi. Ingegneria del Software Lezione11Architetture 51 Organizzazione di sistema • Strategia di base per strutturare sistema. • Tre stili organizzativi largamente usati: – Stile a deposito di dati condiviso – Stile a servizi e server condivisi – Stile a macchina astratta o stratificato Ingegneria del Software Lezione11Architetture 52 Modello a deposito • Sotto-sistemi devono scambiare dati: – Dati condivisi mantenuti in base di dati o deposito centrale, acceduti da ogni sotto-sistema. – Ogni sotto-sistema mantiene propria base di dati e passa dati esplicitamente ad altri sotto-sistemi. • Modello a deposito più usato quando si devono condividere grandi quantità di dati. Ingegneria del Software Lezione11Architetture 53 Architettura strumenti CASE Editor di progetti Traduttore progetti Deposito dati progetto Analizzatore progetto Ingegneria del Software Generatore di codice Editor di programmi Generatore rapporti Lezione11Architetture 54 Caratteristiche modello a deposito • Vantaggi – – – – Modo efficiente di condividere grandi quantità di dati. Sotto-sistemi non interessati a come prodotti dati. Gestione centralizzata per backup, sicurezza, ecc. Modello di condivisione pubblicato come schema deposito • Svantaggi – Sotto-sistemi devono accordarsi su modello dati deposito. • Compromessi inevitabili. – Evoluzione dati difficile e costosa. – Non c'è spazio per politiche di gestione specifiche. – Difficile distribuire efficacemente. Ingegneria del Software Lezione11Architetture 55 Modello a deposito di compilatore Lexical analyser Pretty printer Editor Syntax analyser Semantic analyser Abstract syntax tree Grammar definition Symbol table Output definition Optimiser Code generator Repository Ingegneria del Software Lezione11Architetture 56 Modello client-server • Distribuzione dati ed elaborazione fra componenti. • Server indipendenti forniscono servizi specifici, es. stampa, gestione dati. • Clienti chiamano servizi. • Rete permette a clienti di accedere a server. – Clienti conoscono server, server non necessitano conoscere clienti • Clienti e server processi logici. • Rapporto processori e processi non necessariamente 1:1. Ingegneria del Software Lezione11Architetture 57 Calcolatori in una rete C/S c1 CC1 c2 CC2 CC3 c3, c4 Network s1, s2 s3, s4 SC2 Server computer SC1 c5, c6, c7 c8, c9 CC4 Ingegneria del Software CC5 C10, C11, C12 Client computer CC6 Lezione11Architetture 58 Biblioteca di film e foto Client 1 Client 2 Client 3 Client 4 Internet Catalogue server Video server Picture server Web server Library catalogue Film clip files Digitised photographs Film and photo info Ingegneria del Software Lezione11Architetture 59 Caratteristiche client-server • Vantaggi – Distribuzione dati immediata. – Uso efficace sistemi interconnessi. • Può richiedere hardware più economico. – Facile aggiungere nuovi server o aggiornare esistenti. • Svantaggi – Mancano modelli condivisi di dati. Sottosistemi con diverse organizzazioni dati. Scambio può essere inefficiente. – Gestione ridondante in ogni server. – Nessun registro centrale di nomi e servizi. Può essere difficile trovare quali server e servizi sono disponibili. Ingegneria del Software Lezione11Architetture 60 Clienti "sottili" e "grassi" • Modello a cliente sottile – Elaborazione e gestione di dati su server. Cliente responsabile solo software presentazione. • Modello a cliente grasso – Server responsabile solo gestione dati. Cliente ha logica applicazione e interazione con utente. Presentation Thin-client Presentation Application processing Client Ingegneria del Software Data management Application processing Client Fat-client Server Server Data management Lezione11Architetture 61 Modello a cliente sottile • Per sistemi in lascito migrati a client-server. – Sistema in lascito come server a se stante – Interfaccia grafica implementata su client. • Svantaggio principale: – Pesante carico di elaborazione su server e rete. Ingegneria del Software Lezione11Architetture 62 Modello a cliente grasso • Più elaborazione delegata al cliente. • Più adatto per nuovi sistemi C/S con capacità del sistema cliente note in anticipo. • Gestione più complessa. Nuove versioni applicazione vanno installate su tutti i clienti. Ingegneria del Software Lezione11Architetture 63 Sistema bancomat client-server ATM ATM Account server Teleprocessing monitor Customer account database ATM ATM Ingegneria del Software Lezione11Architetture 64 Architetture a tre livelli • Ogni strato eseguibile su processore dedicato. – Prestazioni migliori di cliente sottile – Più semplice da gestire di cliente grasso. • Architettura più scalabile – Nuovi server aggiungibili se domanda aumenta. Presentation Client Ingegneria del Software Server Server Application processing Data management Lezione11Architetture 65 Sistema bancario via Internet Client HTTP interaction Client Web server Database server SQL query Account service provision SQL Customer account database Client Client Ingegneria del Software Lezione11Architetture 66 Uso di architetture C/S Architettura Applicazione C/S a due livelli con clienti sottili Sistemi in lascito dove non pratico separare elaborazione e gestione dati. Peso su computazione con poca gestione dati (e.g. compilatori). . Peso su dati con poca elaborazione (e.g. browsing e querying). C/S a due livelli con clienti grassi Elaborazione fornita da software esterno su client (e.g. Excel). Richiesta computazione grandi quantità dati (e.g. visualizzazIone dati). Funzionalità utente relativamente stabili con gestione sistema stabile. C/S a tre o più strati Applicazioni su grande scala con centinaia o migliaia di clienti. Dati e applicazioni volatili. Integrazione di dati da fonti multiple. Ingegneria del Software Lezione11Architetture 67 Modello a macchina astratta (stratificata) • Usato per modellare interfacciamento di sotto-sistemi. • Organizza sistema in insieme di strati (macchine astratte). – Ogni strato fornisce insieme di servizi. • Sviluppo incrementale di sotto-sistemi in strati diversi. – Cambiamento interfaccia strato influenza solo strato adiacente. • Organizzazione sistema spesso artificiale. Ingegneria del Software Lezione11Architetture 68 Sistema di gestione delle versioni Strato gestione configurazione sistema Strato sistema gestione oggetti Strato sistema base di dati Strato sistema operativo Ingegneria del Software Lezione11Architetture 69 Stili di controllo • Interesse: flusso di controllo tra sotto-sistemi. Distinto da modello decomposizione sistema. • Controllo centralizzato – Sotto-sistema specifico con responsabilità generale di controllo. Fa partire e arrestare altri sotto-sistemi. • Controllo basato su eventi – Ogni sotto-sistema può rispondere a eventi generati esternamente da altri sotto-sistemi o da ambiente. Ingegneria del Software Lezione11Architetture 70 Controllo centralizzato • Sotto-sistema di controllo assume responsabilità gestione esecuzione altri sotto-sistemi. • Modello a chiamata e ritorno – Modello a sottoprogrammi top-down. Controllo parte in cima a gerarchia di subroutine e si muove verso basso. Applicabile a sistemi sequenziali. • Modello di gestore – Applicabile a sistemi concorrenti. Componente specifica controlla arresto, partenza e coordinamento di altri processi di sistema. Implementabile in programma sequenziale come struttura case. Ingegneria del Software Lezione11Architetture 71 Modello a chiamata e ritorno Main program Routine 1 Routine 1.1 Ingegneria del Software Routine 1.2 Routine 2 Routine 3 Routine 3.1 Lezione11Architetture Routine 3.2 72 Controllo di sistema in tempo reale Actuator processes Sensor processes System controller Computation processes Ingegneria del Software User interface Lezione11Architetture Fault handler 73 Sistemi guidati da eventi • Eventi generati esternamente. Temporizzazione eventi fuori da controllo sotto-sistemi che li elaborano. • Due modelli principali – Modelli broadcast. Evento trasmesso a ogni sotto-sistema. Ogni sottosistema in grado di gestire evento può farlo – Modelli guidati da interruzioni in sistemi a tempo reale. Interruzioni individuate da gestore interruzioni e passate a componente per elaborazione • Altri modelli guidati da eventi. – fogli elettronici – sistemi di regole Ingegneria del Software Lezione11Architetture 74 Modello broadcast • Integrare sotto-sistemi su calcolatori diversi in una rete. • Sotto-sistemi registrano proprio interesse in tipi di eventi. – Su occorrenza evento, controllo a sotto-sistema che può gestirlo. • Politica di controllo non incorporata in evento o gestore. – Sotto-sistemi decidono su eventi di interesse per loro. • Sotto-sistemi non sanno se o quando evento gestito. Sub-system1 Sub-system2 Sub-system3 Sub-system4 Event and message handler Ingegneria del Software Lezione11Architetture 75 Sistemi guidati da interruzioni • Usati in sistemi a tempo reale – essenziale risposta veloce a evento. • Tipi di interruzione noti – gestore definito per ogni tipo. • Tipi associati a locazioni di memoria • Interruttore hardware trasferisce controllo a gestore. • Difficile da programmare e validare. Ingegneria del Software Lezione11Architetture 76 Controllo guidato da interruzioni Interrupts Interrupt vector Handler1 Handler2 Handler3 Handler4 Process1 Process2 Process3 Process4 Ingegneria del Software Lezione11Architetture 77 Architetture a oggetti distribuiti • Non c'è distinzione fra cliente e server • Ogni entità distribuibile è oggetto – Fornisce e riceve servizi a e da altri oggetti. • Comunicazione fra oggetti attraverso middleware – Ricevitore di richieste di oggetti. • Più complesse da progettare di sistemi C/S. Ingegneria del Software Lezione11Architetture 78 Architettura a oggetti distribuiti o1 o2 o3 o4 S (o1) S (o2) S (o3) S (o4) Object request broker o5 o6 S (o5) S (o6) Ingegneria del Software Lezione11Architetture 79 Vantaggi architettura a oggetti distribuiti • Permette di ritardare decisioni su dove e come fornire servizi. • Architettura molto aperta. Risorse possono essere aggiunte dinamicamente. • Sistema flessibile e scalabile. • Possibile riconfigurare dinamicamente sistema con oggetti che migrano in rete. Ingegneria del Software Lezione11Architetture 80 Architetture peer-to-peer (p2p) • Sistemi decentralizzati – Computazioni possono essere condotte in ogni nodo. • Sistema globale sfrutta potenza computazionale e di memoria di gran numero di calcolatori in rete. • Uso crescente a livello di impresa. Ingegneria del Software Lezione11Architetture 81 Modelli architetturali p2p • Architettura di rete logica – Architetture decentralizzate – Architetture semicentralizzate • Architettura di applicazione – Organizzazione generica di componenti Ingegneria del Software Lezione11Architetture 82 Architettura p2p decentralizzata n4 n6 n8 n7 n2 n1 3 n1 2 n3 n1 3 n9 n1 n1 0 n1 1 n5 Ingegneria del Software Lezione11Architetture 83 Architettura p2p semi-centralizzata Discovery server n4 n1 n3 n6 n5 n2 Ingegneria del Software Lezione11Architetture 84 Architetture orientate ai servizi • Servizi forniti esternamente (web service). • Servizio Web, approccio standard per rendere disponibile e accessibile componente riusabile tramite Web. – Esempio: servizio di sottomissione per tasse: utenti compilano moduli fiscali e li sottomettono. Ingegneria del Software Lezione11Architetture 85 Servizi web Service registry Publish Find Service requestor Ingegneria del Software Service provider service Bind Lezione11Architetture 86 Servizi e oggetti distribuiti • • • • • • • Indipendenza fornitore Pubblicizzazione disponibilità servizio Potenzialmente, assegnazione servizio a run-time Costruzione di nuovi servizi attraverso composizione. Pagamento per uso dei servizi Applicazioni più piccole e compatte Applicazioni reattive e adattive. Ingegneria del Software Lezione11Architetture 87 Standard di servizi • Servizi basati su standard condivisi, basati su XML. – Possono essere forniti su ogni piattaforma e scritti in qualsiasi linguaggio di programmazione. • Standard principali – SOAP - Simple Object Access Protocol; – WSDL - Web Services Description Language; – UDDI - Universal Description, Discovery and Integration. Ingegneria del Software Lezione8Architetture 88 Scenario di servizi • Sistema informativo per automobile fornisce a guidatori informazioni su tempo, condizioni traffico, informazione locale, etc. • Collegato a autoradio – Informazione trasmessa come segnale su canale specifico • Auto dispone di ricevitore GPS • Basandosi su posizione, sistema accede a vari servizi di informazione – Informazione può essere trasmessa in linguaggio guidatore Ingegneria del Software Lezione8Architetture 89 Sistema auto Road traffic info Weather info Facilities info gps coord Road locator gps coord gps coord Mobile Info Service Translator Info stream Language info Traffic info Collates information Service discovery Finds available services command gps coord Receiver Transmitter User inter face Receives information stream from services Sends position and information request to services Receives request from user Radio Translates digital info stream to radio signal Locator Discovers car position In-car software system Ingegneria del Software Lezione8Architetture 90 Architetture di riferimento • Modelli architetturali possono essere specifici a qualche dominio applicativo. • Due tipi di modelli specifici a dominio – Modelli generici: • astrazioni da sistemi reali, incapsulano caratteristiche principali. – Modelli di riferimento: • modelli astratti, idealizzati. • Forniscono mezzo di informazione su classe di sistemi, e di confronto fra architetture diverse. Derivati da studio dominio. – Es. Modello OSI stratificato per sistemi di comunicazione. • Generici bottom-up; riferimento top-down. Ingegneria del Software Lezione8Architetture 91 Modello di riferimento OSI 7 Application Application 6 Presentation Presentation 5 Session Session 4 Transport Transport 3 Network Network Network 2 Data link Data link Data link 1 Physical Physical Physical Communications medium Ingegneria del Software Lezione8Architetture 92 Modello di riferimento CASE • Servizio di deposito dati – Memorizzazione e gestione elementi dati • Servizi di integrazione dati – Gestione gruppi di entità • Servizi di gestione compiti – Definizione e attivazione di modelli di processo • Servizi di messaggistica – Comunicazione fra strumenti e fra strumenti e ambiente • Servizi di interfacce utente – Sviluppo di interfacce utente Ingegneria del Software Lezione8Architetture 93 Modello di riferimento ECMA Data repository services Data integ ration services Tool slots Task management services User inter face services Ingegneria del Software Lezione8Architetture Message services 94