Pattern Architetturali e Analisi Architetturale



Documenti analoghi
Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Pattern Architetturali e Analisi Architetturale

design patterns e GRASP

Architettura SW Definizione e Notazioni

Reingegnerizzazione di un Content Management System verso l accessibilità secondo la normativa italiana

Concetti di base di ingegneria del software

Ciclo di vita dimensionale

Ciclo di vita del progetto

Presentazione di Cedac Software

Trasformazione dei Processi in Progetti DIB 1

La Metodologia adottata nel Corso

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

PROGETTAZIONE E SVILUPPO DI UN. Relatore: Studente: Paolo Merialdo Valerio Barbagallo

Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite. Agile Group DIEE, Università di Cagliari

Il Pattern MVC nei Framework di sviluppo per applicazioni Web. Analisi e comparazione di SPRING MVC Framework e ASP.NET MVC Framework.

12. Evoluzione del Software

Database. Si ringrazia Marco Bertini per le slides

Rational Unified Process Introduzione

Sistemi informativi secondo prospettive combinate

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

Piano di gestione della qualità

UML e (R)UP (an overview)

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Architetture software

PROXYMA Contrà San Silvestro, Vicenza Tel Fax

Poca documentazione: uso di Story Card e CRC (Class Responsibility Collabor) Collaborazione con il cliente rispetto alla negoziazione dei contratti

Alcuni Design Pattern in Java

11. Evoluzione del Software

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Class Discovery E.

03. Il Modello Gestionale per Processi

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Project Planning. Politecnico di Milano. Progetto di Ingegneria del Software novembre Elisabetta Di Nitto Raffaela Mirandola

Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza. Roberto Ugolini roberto.ugolini@postecom.it

Politica per la Sicurezza

SCENARIO. Personas ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

Ingegneria del Software 12. Progettazione. Dipartimento di Informatica Università di Pisa A.A. 2014/15

FONDAMENTI di INFORMATICA L. Mezzalira

Progettazione : Design Pattern Creazionali

SOA GOVERNANCE: WHAT DOES IT MEAN? Giorgio Marras

Prodotto <ADAM DASHBOARD> Release <1.0> Gennaio 2015

e-dva - eni-depth Velocity Analysis

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

ANALISI E MAPPATURA DEI PROCESSI AZIENDALI

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

4.1 Che cos è l ideazione

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Approccio stratificato

Obiettivi Generali COS È

Risparmiare innovando

Coordinazione Distribuita

Ingegneria del Software T

IL MODELLO SCOR. Agenda. La Supply Chain Il Modello SCOR SCOR project roadmap. Prof. Giovanni Perrone Ing. Lorena Scarpulla. Engineering.

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

L o. Walter Ambu japs: una soluzione agile (

GESTIONE AZIENDALE/GESTIONE DELL INNOVAZIONE E DEI PROGETTI

MANUALE DELLA QUALITÀ SEZIONE 5.1: FUNZIONAMENTO DEL SISTEMA DI GESTIONE PER LA QUALITÀ

7. Architetture Software

Generazione Automatica di Asserzioni da Modelli di Specifica

INTEGRATA OTTIMIZZAZIONE DEI PROCESSI AZIENDALI

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Le possibili sinergie della Direzione e della AQ orientate alla Buona Gestione del C.d.S.

Gestione Turni. Introduzione

Gestione del workflow

Stato delle pratiche ed esigenze degli Utenti: Opportunità oggi a disposizione e criticità ancora presenti

IN COLLABORAZIONE CON OPTA SRL

Che volontari cerchiamo? Daniela Caretto Lecce, aprile

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

7.1 Livello di completezza degli esempi

Replicazione. Requisisti di consistenza i clienti devono ricevere risposte consistenti e coerenti. Motivazioni

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A Marina Mongiello

Ingegneria del Software. Introduzione ai pattern


Fasi di creazione di un programma

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

della manutenzione, includa i requisiti relativi ai sottosistemi strutturali all interno del loro contesto operativo.

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

INFORMATICA 1 L. Mezzalira

Le fattispecie di riuso

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

Linee guida progetto IS. Linee guida progetto IS

Modellazione di sistema

Manuale della qualità. Procedure. Istruzioni operative

Realizzazione di un prototipo di un software web based per la gestione di un inventario comunale

Liceo Tecnologico. Indirizzo Informatico e Comunicazione. Indicazioni nazionali per Piani di Studi Personalizzati

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

La Norma ISO Ed Guidance on project management

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Relazione illustrativa degli Obiettivi di accessibilità

Descrizione di un algoritmo

Qualità è il grado in cui un insieme di caratteristiche intrinseche soddisfa i requisiti (UNI EN ISO 9000:2005)

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

ANALISI DEI FATTORI CHE INFLUENZANO GLI ASPETTI RAMS DEL SISTEMA SCMT

Corso di Ingegneria del software Como. Prof. Marco Brambilla. Cruscotto auto. Aramini Antonio Umberto

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Transcript:

Pattern Architetturali e Analisi Architetturale Ingegneria del Software parte II Andrea Bei

Pattern Architetturali Pattern Architetturale Descrive il modello organizzativo strutturale di un sistema software in termini di Sottosistemi e loro responsabilità Linee guida per organizzare le relazioni tra tali sottosistemi Si trova al massimo livello di astrazione in un sistema che comprende design pattern più specializzati (es: Grasp, Gof, J2EE Pattern ) La selezione di un pattern architetturale è una decisione fondamentale nella progettazione di un sistema software

Layer Il pattern Layer aiuta a strutturare applicazioni le cui funzioni possono essere decomposte in gruppi di sottoattività con responsabilità a diversi livelli di astrazione

Layer Problema Minimizzare l impatto dei cambiamenti Massimizzare l intercambiabilità di alcune parti Dare la possibilità di costruire altri sistemi con le stesse caratteristiche di basso livello Massimizzare la coesione delle responsabilità per aumentare manutenibilità e comprensibilità Soluzione Strutturare il sistema in un appropriato numero di layer posti l uno sull altro. Il livello al più basso livello di astrazione è il Layer 1 ed è la base del sistema A partire da questo sono posti gli altri Layer a livelli di astrazione via via più alti fino ad arrivare al Layer N che espone le funzionalità del sistema

Layer Scheda CRC e Struttura

Layer Scenari di comunicazione tra livelli 1. Comunicazione top-down: Un Client inoltra una request al Layer N, questo la inoltra al Layer N-1, e via di seguito fino al Layer 1. Una request a Layer i può produrre più request a Layer i-1 2. Comunicazione bottom-up: Un device driver a Layer 1 riceve un input, lo formatta (notification) e lo inoltra al Layer 2, e via di seguito fino al Layer N 3. Comunicazione top-down: Le request possono viaggiare attraverso un sottinsieme di Layer senza arrivare al Layer 1 (es: Layer N-1 è una cache) 4. Comunicazione bottom-up: Le notification possono viaggiare attraverso un sottoinsieme di Layer senza arrivare al Layer N (es: re-send notification nei protocolli di comunicazione) 5. Protocolli di comunicazione a stack

MVC Model-View-Controller (MVC) divide una applicazione interattiva in 3 componenti Il Model contiene funzionalità e dati Le Views mostrano le informazioni all utente I Controller gestiscono l input utente e la comunicazione Model-View La consistenza tra UI e Model è garantita da un meccanismo di propagazione dei cambiamenti

MVC Problema Realizzare una applicazione interattiva Forze La stessa informazione è presentata in modo diverso (es: bar o pie chart). Le modifiche della UI devono poter essere eseguite semplicemente La possibilità di supportare diversi standard 'look and feel' o la necessità di effettuare un porting della UI non dovrebbe aver impatto nel core della applicazione Soluzione Dividere l applicazione in Componenti Model: incapsulano data e funzionalità e sono indipendenti dalla specifica rappresentazione dell output o dal comportamento di input Componenti View: mostrano le informazioni all utente. Una View ottiene I dati dal Model. (possono esserci più View di uno stesso Model) Ogni View ha associato un componente Controller. I componenti Controller ricevono l input che di solito codifica un evento come il movimento del mouse o un input da tastiera Gli eventi sono tradotti in service request per il Model Il meccanismo di propagazione dei cambiamenti è basato sul pattern Observer

MVC Schede CRC e Struttura

MVC Scenario 1: un input modifica il modello e innesca il meccanismo di propagazione dei cambiamenti Il Controller accetta un input utente codificato come evento e lo traduce in una service request inoltrata al Model Il Model esegue la service request che provoca un cambiamento nei dati Il Model notifica tutte le View che sono registrate mediante il meccanismo di propagazione degli eventi (Observer) invocando il loro metodo update Ogni View richiede un aggiornamento dei dati che mostra Ogni Controller registrato esegue il retrieve dei dati per abilitare/disabilitare alcune funzioni utente (per esempio abilitare la funzione Save può essere una conseguenza del fatto che idati sono cambiati) Il Controller originale guadagna nuovamente il controllo

MVC Scenario 2: inizializzazione dell MVC Il Model viene creato Una View viene creata prendendo come parametro il Model La View esegue un subscribe al meccanismo di propagazione dei cambiamenti invocando la funzione attach La View prosegue la sua inizializzazione creando un Controller a cui passa se stessa e il Model Il Controller esegue un subscribe al meccanismo di propagazione dei cambiamenti invocando la funzione attach L applicazione inizia a processare gli eventi

Analisi Architetturale Obiettivo: progettare l architettura applicativa ciclo development di sviluppo cycle UP iterazione iteration phase fase inc ide. costruzione construction transizione transition elaborazione milestone release incremento release finale Fase: prima iterazione della fase di elaborazione (UP), inizio fase di progettazione (waterfall). In ogni caso prima di iniziare lo sviluppo Deliverable: Documento della architettura applicativa SAD (Software Architecture E la fine An di iteration una end - Un A sottoinsieme stable executable stabile The difference Document) contenente: La differenza A questo punto il iterazione point when cui si some ed subset eseguibile of the del final ( delta tra due ) between the At this point, the Tabelle di fattori architetturali sistema viene verifica significant una decisione decision prodotto product finale.. The end of releases iterazioni of 2 rilasciato system is e released Promemoria tecnici che descrivono le decisioni architetturali importante evaluation o una Rappresenta each iteration una is a subsequent successive consegnato for production ai use. valutazione occurs significativa. release minor minore release. iterations. clienti

Analisi Architetturale E una specializzazione della analisi dei requisiti. Il focus è sui requisiti che hanno un influenza maggiore sulla architettura (es: sicurezza, manutenibilità,..) Le principali attività sono: Identificare i fattori architetturali (o guide architetturali). Sono i requisiti non funzionali che influenzano l architettura. (es: tempo di risposta) Identifcare per ciascuno priorità, variabilità, rischi e scenari di qualità che rendano misurabile il fattore con affermazioni di tipo <stimolo>,<risposta misurabile>. (es: click, tempo di risposta < 3 sec) Risolvere i fattori architetturali. Identificare le soluzioni alternative e descriverle in promemoria tecnici. Le soluzioni possono comprendere ad esempio: Soluzioni ad-hoc Adozione di pattern (architetturali o di design), Adozione di framework o librerie di terze parti o open source

Analisi Architetturale Identificare i fattori architetturali Creare una tabella dei fattori architetturali: Gerarchia di priorità Vincoli e normative (es: politica fiscale nel caso di studio POS) Obiettivi di business (es: data di consegna) Altri: (es: estendibilità, manutenibilità,..)

Analisi Architetturale Risolvere i fattori architetturali Principi di base Si applicano su larga scala (a livello architetturale di sottosistemi) gli stessi principi descritti dai pattern GRASP e validi su piccola scala (a livello di oggetti) Low Coupling High Cohesion Protected Variation (Indirezioni, Interfacce, Adapter,..) Adottare Separation Of Concerns (Separazione degli interessi) Massimizzare la modularità: progettare l architettura in modo modulare facendo si che ogni sottosistema sia focalizzato solo su una specifica responsabilità (es: persistenza, sicurezza, ). E un modo per ottenere high cohesion & low coupling Usare i Decorator per aggiungere responsabilità ad un sottosistema Usare la programmazione orientata agli aspetti Usare i Pattern Architetturali Usare Framework Commerciali o Open Source Nei punti di variazione/evoluzione nella logica di business Usare meccanismi per rendere inseribili algoritmi e strategie (es: IoC, Strategy Pattern, approcci Data Driven, ) trovare il giusto equilibrio tra ingegnerizzazione insufficiente ed eccessiva

Analisi Architetturale I Promemoria Tecnici (o Schede dei problemi, Documenti degli approcci architetturali) contengono: Problema, Riepilogo della soluzione, Fattori, Soluzione, Motivazione, Problemi irrisolti,, Alternative considerate Promemoria tecnico: Adattabilità Servizi di Terze Parti Riepilogo dela soluzione: Sostenere Protected Variation usando il pattern Adapter per rendere il sistema adattabile a servizi di terze parti variabili Fattori: Adattabilità a servizi di terze parti variabili (calcolatori imposte, autorizzazione credito, inventario, ) Soluzione: Ottenere Protected Variation nel modo seguente: Analizzare diversi calcolatori delle imposte commerciali e creare una interfacce comune per le funzionalità minime comuni. Applicare Indirection utilizzando il pattern Adapter Motivazione Semplice ed economico. Garantisce una comunicazione puù veloce rispetto ad un servizio di messaging. Quest ultimo non potrebbe essere utilizzato per il servizio di autorizzazione del credito Problemi non risolti Creare un interfaccia comune per i servizi comuni potrebbe limitare l adattabilità Alternative considerate Applicare Indirection usando un sistema di messaging basato sul meccanismo publish subscribe (es: code JMS) E costoso e garantisce una affidabilità nella consegna dei messaggi maggiore di quanto non sia necessaria.