6. Architetture Software



Documenti analoghi
7. Architetture Software

7. Architetture Software

Modulo 2 Architetture dei SD Lezione 1

UML2. Progettazione della realizzazione dei casi d uso. Andrea Polini

UML2. Concetti base. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L31 Università di Camerino

2. Modellazione dei casi d uso

INGEGNERIA DEL SOFTWARE

Documento di Progettazione Applicazione "Agorà"

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

Pattern. Corso di ingegneria del software

Scenario-based Design

software Progettazione software IS Corso di Ingegneria del Software 1 Contenuti Progettare prima di produrre Dall analisi alla progettazione

Cosa sono i sistemi distribuiti. Prof. Andrea Omicini Corso di Sistemi Distribuiti L-A A.A. 2004/2005

1. UML 2 ed il Processo Unificato

SISTEMI INFORMATIVI E DATABASE

3. Ciclo di Vita e Processi di Sviluppo

OO design pattern. Design pattern: motivazioni

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Introduzione ad UML E.

UML2. Package di Analisi. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

UML2. Attività di Progettazione. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

rchinizer il protocollo informatico obiettivi e strategie dott. michele bianchi

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Model-View- Controller

IL PROCESSO di PROGETTAZIONE

Introduzione ai casi d uso. Iolanda Salinari

La fase di Progettazione

ARCHITECTING AND DESIGNING J2EE APPLICATIONS

" Le componenti software. " Le proprietà visibili esternamente delle componenti. " La relazione tra loro. " I servizi forniti e relativi contratti

4. Qualità. un concetto molte sfaccettature. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Architettura a oggetti distribuiti

AscotWeb - mediatore Versione dicembre 2015

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete

Unified Modeling Language (UML)

SETA Selection Tool del Sistema ARTIST

PIANO DI LAVORO ANNO SCOLASTICO 2016/2017. I.I.S.S. C. E. GADDA Sede di Langhirano MATERIA DI INSEGNAMENTO TECNOLOGIE E PROGETTAZIONE DI

Sistemi informativi secondo prospettive combinate

Gestione dello sviluppo software Modelli Base

Informazione: notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere.

Alcune idee sui sistemi software e la loro architettura

Le aree dell informatica

Architetture Distribuite

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

DIAGRAMMI DEI PACKAGE

Programmi e Oggetti Software

Il Sistema Operativo

Progettazione Logica e Modello Realizzativo

Modellazione di Applicazioni Web. Dr. Marco Benini Dipartimento di Informatica e Comunicazione Università degli Studi dell'insubria

Provincia di Ravenna. L Intranet nell esperienza della Provincia di Ravenna. Virna Bandini. Imola, 29 maggio 2007

SCD IS. Documentazione. Domande ricorrenti 1. Cosa documentare. Come documentare. Perché documentare 3. Domande ricorrenti 2. Perché documentare

Tecnologie dei Sistemi di Automazione

Java: un linguaggio per applicazioni di rete

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Progettazione software

Definizioni - 1. Ingegneria del Software modulo B 2. Processi di sviluppo software. Modelli. Modello sequenziale. Modello incrementale

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Definizioni - 1. Ingegneria del Software 2 2. Processi di sviluppo software. Ingegneria del Software 2 Processi di sviluppo software

Anni 80: reti locali di PC terminali dotati di intelligenza propria, che condividono risorse pregiate, come stampanti, dischi, etc.

MATERIALI PER LA DISCUSSIONE

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Laboratorio di Programmazione di Rete Laurea Triennale in Informatica Applicata Progetto di fine Corso - A.A. 08/09

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

1 Considerare la seguente descrizione del processo di prestito dei libri di una biblioteca, per il quale si vuole progettare un software:

9: Progettazione Architetturale

Architetture di Data Warehouse. PDF created with pdffactory trial version

Linguaggi di Programmazione

REGIONE BASILICATA PROCEDURA APERTA (AI SENSI DEL D.LGS.163/2006 E S.M.I.)

Planet School risolve i problemi di gestione e migliora i servizi

Programmi e Oggetti Software

Introduzione ai casi d uso

Isaac DE è una piattaforma Big Data completa di strumenti e servizi per l installazione, la configurazione, l uso, la gestione e il monitoraggio di

Sistemi informativi aziendali struttura e processi

[POSA] Pattern-Oriented Software Architecture A System of Patterns

Informatica. Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven

Ingegneria del Software 13c. Altre viste. Dipartimento di Informatica Università di Pisa A.A. 2014/15

SCD IS. Documentazione. Domande ricorrenti 1. Valutazione quantitativa 1. Perché documentare... UniPD Ingegneria del Software mod.

Some reasoned reflections on the real difference between OO and structured development stuff derived from a class on OO testing

SISTEMA INFORMATIVO E SISTEMA INFORMATICO. Sistema informativo e sistema informatico

Introduzione all ingegneria dei sistemi ICT

Programmazione modulare

Un nuovo approccio metodologico con FHIR

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Classi. Meccanismi di Rappresentazione e Scoperta. Andrea Polini

componenti [Cheesman&Daniels] UML Components un semplice processo per la specifica di software basato su componenti

Progettazione software

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica

Ciclo di vita di un sistema informativo

Ingegneria del Software (e Prova Finale) Luciano Baresi

Traccia delle soluzioni. Si consideri il seguente enunciato: Spett Ditta,

Transcript:

6. Architetture Software progettare la struttura Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 6. Architetture Software 1 / 20

Scopo della fase di design Nella fase di design devono essere prese decisioni sulla struttura del software. Questo implica la scomposizione del software in elementi più semplici e lo studio della loro composizione. controllo comunicazione Molte scelte possibili...quale è quella più adatta e come sono vantaggi/svantaggi di ogni scelta? Scelte architetturali inevitabilmente influenzano specifica dei requisiti. In particolare per la specifica dei sottosistemi Ingegneria del Software fornisce supporto alle decisioni ma certamente la fase di design richiede una buona dose di creatività ed esperienza (Ingegneria del Software) 6. Architetture Software 2 / 20

Architettura software Le decisioni di scomposizione del sistema in sottosistemi e la definizione della struttura e paradigmi di comunicazione costituiscono quella che viene comunemente detta architettura software. Lo studio delle archietture software costituisce una disciplina emergente ancora non completamente matura. Sistema identificato come assemblaggio di: componenti connettori L insieme di questi elementi vengono composti in una configurazione (Ingegneria del Software) 6. Architetture Software 3 / 20

Documentazione e scopi Al solito la fase di specifica architetturale produrrà documentazione utile alla descrizione/compresione dell architettura. Scopi principali di tale documentazione sono: Comunicazione tra gli attori Analisi del sistema risultante Riuso (Ingegneria del Software) 6. Architetture Software 4 / 20

Architettura e QoS Le scelte architetturali sono fortemente influenzate da fattori relativi a proprietà non funzionali. Performance: localizzare elementi critici all interno di specifici componenti. Ridurre comunicazione tra questi. Security: strutturazione a strati dove gli strati più bassi forniscono supporto a quelli più alti Safety: ridurre le componenti critiche in modo da semplificare l analisi Availability: semblificare la sostituzione di elementi del software senza dover fermare il sistema e includere meccanismi di replicazione Mantainability: ridurre la dimensione dei componenti Al solito sarà necessario mediare! Esperienza porta a definizione e riconoscimento di pattern architetturali che godono di particolari proprietà (Ingegneria del Software) 6. Architetture Software 5 / 20

Rappresentazione delle architetture Uso di diagrammi schematici scatole e linee (componenti e controllo)... È però evidente come l informazione trasportata da un tale diagramma sia piuttosto vaga e la natura delle relazioni poco esplicita linguaggi formali di specifica architetturale (Architectual Desciption Languages - ADL) Darwin C2 Kobra Wright... Differenti linguaggi semplificano strutturazione in accordo a differenti stili architetturali. (Ingegneria del Software) 6. Architetture Software 6 / 20

Questioni Rilevanti C è un architettura generica che si adatta alla richiesta e che può soddisfare i requisiti funzionali ed extra-funzionali? Il sistema dovrà essere distribuito su più machine? Ci sono stili architetturali che meglio si adattano al sistema? Approccio per strutturare il sistema? Come le varie componenti saranno decomposte in moduli? Quali strategie di controllo verranno utilizzate all interno dei componenti? Quali valutazioni devono essere condotte? Come documentare la specifica architetturale? (Ingegneria del Software) 6. Architetture Software 7 / 20

Tipiche descrizioni architetturali Modello strutturale Moello dinamico dei processi Modello delle interfacce Modello di relazione Modello di deployment UML fornisce diversi diagrammi per poter rappresentare tali informazioni (Ingegneria del Software) 6. Architetture Software 8 / 20

Organizzazione dei sistemi software stili architetturali Differenti paradigmi per la definizione della struttura di un sistema: Modello del repository Modello Cliente-Servente Modello a strati (Ingegneria del Software) 6. Architetture Software 9 / 20

Repository Si considerino sottosistemi che necessitano di comunicare pesantemente. Due possibili soluzioni: Spazio condiviso Invio dati mantenuti localmente Tipicamente la soluzione è quella di strutturare il sistema attorno ad un repository comune tra tutti i componenti del sistema (ogni componente può poi essere basato su un repository interno). Interazione tra i componenti avviene accedendo e modificando i dati nel repository. Tipica soluzione in strumenti CAD and CASE (Ingegneria del Software) 6. Architetture Software 10 / 20

Repository pro e contro Metodo semplice per scambiare grosse moli di dati tra i componenti (+) Non di meno ci deve essere un accordo sul formato dei dati. Difficile riuso (-) Possibili problemi di performance (-) Un sottosistema non si interessa di come gli altri sistemi utilizzeranno i dati. Disaccoppiamento (+) Modifiche al formato possono diventare complesse (-) Centralizzazione dei dati può creare problemi di affidabilità. Attività di gestione dei dati semplificata (+) ma poco flessibile e difficile evoluzione (-) Facile integrare nuovi componenti se questi sono a conoscenza del formato distribuzione dei dati per migliorare performance complica gestione Repository di tipo blackboard (Ingegneria del Software) 6. Architetture Software 11 / 20

Client-Server Funzionalità del sistema distribuite logicamente all interno di un insieme di componenti serventi. Definizione di componenti clienti che sono quei componenti che hanno invece necessità di accedere ai servizi. Non necessariamete clienti e serventi si trovano su macchine differenti... Client-Server Pro e Contro: Certamente paradigma particolarmente adatto in ambito distribuito (+). Disaccoppia fortemente parti del sistema (serventi da clienti) rendendo facile aggiungere componenti client e server (+) Modifiche ad un servente possono portare a revisioni importanti dei cliente (-) particolarmenti difficoltose in caso di distribuzione. (Ingegneria del Software) 6. Architetture Software 12 / 20

Modello stratificato Sistema strutturato a livelli. Ogni livello fornisce un servizio più astratto ai livelli superiori. Stratificazione favorisce sviluppo incrementale ed evoluzione Modifiche ad uno strato risultano localizzate se non vengono modificate le interfacce. Altrimenti in generale propagazione al solo livello superiore. Non è sempre semplice definire struttura a strati per un sistema (Ingegneria del Software) 6. Architetture Software 13 / 20

Decomposizione modulare Sottosistemi vengono strutturati in moduli. Distinzione tra modulo e sottosistema? Due approcci fondamentali alla decomposizione in moduli: decomposizione orientata agli oggetti - il sottosistema viene strutturato come un insieme di oggetti interagenti decomposizione orientata alle funzioni (pipelining) - le attività del sottosistema vengono strutturate secondo un insieme di funzionalità da eseguire in sequenza. (Ingegneria del Software) 6. Architetture Software 14 / 20

Decomposizione object-oriented Oggetti e definizione di precise interfacce. Classici vantaggi del paradigma OO localizzazione delle modifiche (incapsulamento ed interfacce stabili) mapping su concetti reali semplice possibilità di riuso Problemi sono principalmente legati alla necessità di riferire esplicitamente gli oggetti utilizzati. Modifiche ad interfacce diventano difficilmente gestibili. (Ingegneria del Software) 6. Architetture Software 15 / 20

Pipelining Il sottosistema viene strutturato come un insieme di attività da eseguire in sequenza. Tipicamente adatta a computazione che implica successive manipolazioni di un flusso di dati I vantaggi principali riguardano: funzioni possono essere facilmente riutilizzate corrisponde spesso a come le persone strutturano o pensano alle loro attività aggiungere una funzionalità diventa piuttosto semplice possibilità di avere concorrenza può essere semplificata Gli svantaggi rigurdano la difficoltà di implementare sistemi interattivi, e la necessità di stabilire un formato di interazione tra i difersi elementi del pipeline. (Ingegneria del Software) 6. Architetture Software 16 / 20

Stili di Controllo Il controllo si riferisce a come il flusso del controllo si propaga tra i vari sottosistemi di un sistema software. Principalmente si può optare tra due stili principali: Controllo centralizzato - esiste un sottosistema che controlla gli altri ed ha anche il compito di far partire ed arrestare il sistema. Controllo basato su eventi - ogni sottosistema è capace di rispondere indipendentemente ad eventi esterni. (Ingegneria del Software) 6. Architetture Software 17 / 20

Controllo centralizzato Si distingue tipicamente tra due tipologie fondamentali: modelli call-return - il sistema parte con una routine principale (main) che passa il controllo alle altre routine le quali potranno fare lo stesso. Ogni routine si aspetta comunque di riavere il controllo indietro e dovrà dunque restituirlo. (No concorrenza) modelli con gestore - esiste un sottosistema (gestore) che può far partire concorrentemente più attività che possono procedere in parallelo. (Ingegneria del Software) 6. Architetture Software 18 / 20

Controllo centralizzato Struttura del controllo è piuttosto semplice e semplifica la fase di analisi Diventa difficile inserire comportamente eccezionali al sistema che si possono verificare ad esempio come conseguenza di eventi esterni. (Ingegneria del Software) 6. Architetture Software 19 / 20

Controllo basato su eventi L andamento del sistema e del Processo è guidato da eventi generati esternamente (Sistemi guidati da eventi). Certamente particolarmente adatto nel caso di sistemi interattivi, dove gli eventi esterni scatenano l esecuzione di particolari procedure. Tipicamente diversi modelli possono essere pensati per gestiti gli eventi: Modelli Broadcast e Publish/Subscribe Modelli ad Interrupt (Ingegneria del Software) 6. Architetture Software 20 / 20