design patterns e GRASP

Documenti analoghi
Ingegneria del Software. Introduzione ai pattern

Soluzione dell esercizio del 2 Febbraio 2004

Guida Rapida all uso del License Manager di ROCKEY4Smart (V )

Progettazione : Design Pattern Creazionali

Corso di Informatica

Se un oggetto A aggrega oggetti B allora avrà informazioni su di loro

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Strumenti di modellazione. Gabriella Trucco

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

Corso di Sistemi di Elaborazione delle informazioni

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

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

1. BASI DI DATI: GENERALITÀ

Sistemi informativi secondo prospettive combinate

Informatica per la comunicazione" - lezione 13 -

Soluzione dell esercizio del 12 Febbraio 2004

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

INI0506. Progetti InI0506 DISP-URM2 UML - Introduzione 1

Mac Application Manager 1.3 (SOLO PER TIGER)

MANUALE UTENTE Fiscali Free

Database. Si ringrazia Marco Bertini per le slides

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

CREAZIONE DI UN AZIENDA

Strutturazione logica dei dati: i file

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer

Standard Nazionale di Comunicazione Mercato Gas

Implementing a new ADT based on the HL7 version 3 RIM. Esempio

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Schedulatore per la comunicazione con le Porte di Dominio

DATABASE.

Finalità della soluzione Schema generale e modalità d integrazione Gestione centralizzata in TeamPortal... 6

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

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

Cosa è un foglio elettronico

Introduzione ai database relazionali

Standard Nazionale di Comunicazione Mercato Gas

Access. P a r t e p r i m a

Standard Nazionale di Comunicazione Mercato Gas

Approccio stratificato

Organizzazione degli archivi

Sistemi Informativi e Sistemi ERP

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

Modalità e luogo del trattamento dei Dati raccolti Modalità di trattamento

Alfa Layer S.r.l. Via Caboto, Torino ALFA PORTAL

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

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

PowerSchedo. Un sistema di supporto alla decisione nel settore dell'oil&gas. For further information:

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

VERSIONE 5.1/5.2 GUIDA RAPIDA PER WEBACCESS HTML 3

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

LA SOLUZIONE. EVOLUTION, con la E LA TECNOLOGIA TRASPARENTE IL SOFTWARE INVISIBILE INVISIBILE ANCHE NEL PREZZO R.O.I. IMMEDIATO OFFERTA IN PROVA

Progettazione di Database. Un Esempio

CERTIFICATI DIGITALI. Manuale Utente

Dispensa di database Access

Esercizio 1: trading on-line

Modalità e luogo del trattamento dei Dati raccolti Modalità di trattamento

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Reti di Telecomunicazione Lezione 6

Object Oriented Programming

COSTER. Import/Export su SWC701. SwcImportExport

Programmazione Orientata agli Oggetti in Linguaggio Java

Design Pattern. Ingegneria del Software parte II. Andrea Bei

Pattern Architetturali e Analisi Architetturale

Architetture Applicative

Una metodologia per la specifica di software basato su componenti

Ingegneria del Software. Introduzione al pattern

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Per capire meglio l ambito di applicazione di un DWhouse consideriamo la piramide di Anthony, L. Direzionale. L. Manageriale. L.

ali e non funzionali con priorità (high, medium, low) Use Case con un Activity Diagram o uno State Diagr ram

Introduzione al SEO. Cimini Simonelli Testa

INVIO SMS

Descrittori di competenze per Francese e Inglese nella scuola secondaria di I grado

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Automazione Industriale 4- Ingegneria del Software

Esercitazione su Windows. Introduzione al calcolatore Introduzione a Windows

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

DATABASE. A cura di Massimiliano Buschi

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto

Analisi e progettazione del software AbcBid studio di caso 6 dicembre 2007 REQUISITI ITERAZIONE 1

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

Sicurezza dei file Le protezioni nei programmi

Manuale operatore per l utilizzo dell utente di dominio

Relazione Interoperabilità tra Aram e Pinakes3 di Valeriano Sandrucci 10/11/07

Progettazione di Basi di Dati

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

Database 1 biblioteca universitaria. Testo del quesito

Configuration Management

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

Oggetti Lezione 3. aspetti generali e definizione di classi I

Il Registro dei Servizi di OpenSPCoop i. Il Registro dei Servizi di OpenSPCoop

PROGRAMMAZIONE DISCIPLINARE INDIVIDUALE

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Istruzioni per l uso dei programmi MomCad, TraveCon, TraveFon

Transcript:

design patterns e GRASP 1 design patterns una coppia / particolarmente importante a cui viene dato un nome vengono espressi in un formato molto rigido, ad es. nome descrizione sintetica della descrizione del discussione benefici pattern correlati nomi alternativi introdotti dal libro C. Alexander, S. Ishikawa, M. Silverstain. A Pattern Language - Towns- Building-Construction. 1977. Oxford University Press. 2

(software) design patterns GRASP General Responsability Assignment Software Patterns Gang of Four (GoF) dal libro E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns. Addison-Wesley. 1995...molti altri meno famosi e meno importanti 3 GRASP 4

GRASP: information expert data una operazione, chi la fa? generiche responsabilità di fare sono assegnate a che ha i dati necessari Partita verifica la correttezza di una Mossa. Giocatore dovrebbe chiedere informazioni a Partita. non sempre ok chi salva lo stato degli oggetti nel database? se gli oggetti si auto-salvano l interazione con il DB è ovunque e gli oggetti fanno cose non relative al dominio (bassa coesione) 5 GRASP: high cohesion come aumentare la comprensibilità? ciascun oggetto deve solo avere funzionalità correlate nessun oggetto che rappresenta il domino sa come interagire con il DB o con una GUI molti oggetti piccoli possono essere ineffcienti specialmente in architetture distribuite. oggetti troppo piccoli devono comunicare molto con altri (alto accoppiamento) 6

GRASP: low coupling come ridurre l impatto di variazioni al progetto ridurre al minimo le dipendenze tra gli oggetti uso di interfacce semplici e stabili. evitare di far riferimento a molti oggetti esterni. alto accoppiamento con software stabile è ok, es. accoppiamento con librerie standard del linguaggio in uso 7 GRASP: high cohesion vs. low coupling grado di coesione o accoppiamento pochi metodi sono facilemente coesi ciascuna oggetto deve cooperare con molti altri ciascuna interfaccia è usata da molti oggetti coesione accoppiamento eleiminazione di metodi necessari molti metodi hanno difficilmente relazione tra loro introduzione di metodi non primitivi fascia di ottimalità numero di metodi nelle interfacce 8

chi crea un oggetto? GRASP: creator chi ha un rapporto stretto con l oggetto, es: aggrega, usa, conosce, ha dati per inizializzazare (expert). Partita aggrega istanze di StatoScacchiera e le crea la creazione può essere complessa, in tal caso si usano oggetti appositi (vedi GoF creational patterns) 9 GRASP: controller chi gestisce gli eventi in input al sistema? un oggetto che rappresenta l intera applicazione vari oggetti che rappresentano ciascuno uno use case Windows, applet, view, document non sono mai controller! la casse ControllerPagamento può gestire tutte le fasi di un pagamento benefici disaccoppiamento tra interfaccia e rappresentazione del dominio coesione 10

GRASP: pure fabrication se le soluzioni ispirate al modello di dominio non sono buone cosa si fa? si possono creare classi artificiali al fine di supportare alta coesione e basso accoppiamento PersistentStorageManager benefici alta flessibilità nel progetto va bilanciato con l uso di soluzioni ispirate al modello di dominio (vedi Expert) 11 GRASP: indirection evitare accoppiamento diretto tra due o più oggetti per aumentare le possibilità di riuso inserire un oggetto intermedio Leggere da file ci lega ad un particolare tipo di input. Leggere da un oggetto intermedio (che potremmo chiamare stream ) ci permette di leggere sia da file che da socket e di inserire nuove possibilità in futuro. benefici basso accoppiamento 12

GRASP: protected variation come ridurre l impatto di variazioni nel sistema identificare i punti di possibile variazioni e creare interfacce stabili attorno ad essi benefici estensioni al sistema sono facili da aggungere nuove impementazioni di parti del sistema basso accoppiamento il costo dei cambiamenti è ridotto 13 esempi core GRASP: protected variation hiding (encapsulation), interfacce, polimorfismo, indirezione, standards data-driven design rendere parametrizzabile il sistema in modo che il suo comportamento possa essere facilmente cambiato service lookup UDDI, Jini, JNDI Interpeter-driven design parte della logica è codificata in regole che vangono lette e interpretate 14

esempi reflection GRASP: protected variation il sistema è in grado di adattarsi ai cambiamenti del codice per mezzo di meccanismi di metalivello uniform access metodi e accesso a campi supportati con la stessa sintassi (Ada, Eiffel, C#) Liskov substitution principle protegge dalle variazioni delle classi derivate structure-hiding design (a.k.a. Don t Talk to Strangers, Law of Demeter) inviare messaggi solo a: this e oggetti aggregati a this, parametri del metodo, oggetti creati nel metodo cioè evitare: sale.getpayment().getamount().getcurrency() 15 GRASP: protected variation variation point: OK punti del progetto in cui la variabilità è certa evolution point punti del progetto in cui la variabilità è prevista proteggersi dalle variazioni solo se la probabilità è alta inutile progettare per variazioni che non avverranno mai spesso riprogettare al momento opportuno è più semplice che progettare per prevenire tutte le possibili variazioni! 16