SOMMARIO DESIGN PATTERN

Documenti analoghi
Modulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo

Laboratorio di Progettazione di Sistemi Software Design Patterns

Design Patterns. Introduzione 2. Introduzione 3

Programmazione Orientata agli Oggetti in Linguaggio Java

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

SOMMARIO. DIAGRAMMI DI ATTIVITÀ INGEGNERIA DEL SOFTWARE Università degli Studi di Padova. Introduzione. Concetti base.

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

MODEL-VIEW-CONTROLLER PROBLEMA

Ingegneria del Software. Introduzione ai pattern

10. Design Patterns. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica. (Ingegneria del Software) 10. Design Patterns 1 / 36

UML I diagrammi implementativi

DESIGN PATTERN STRUTTURALI INGEGNERIA DEL SOFTWARE INTRODUZIONE ADAPTER. Scopo Convertire l interfaccia di una classe in un altra.

Pattern Architetturali e Analisi Architetturale

Introduzione alla programmazione Object Oriented. Luca Lista

Corso Programmazione Java Standard

Esercizi design patterns. Angelo Di Iorio,

Esercitazione sui Design Pattern

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA

Analisi e progettazione ad oggetti

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Materiale didattico. Sommario

Introduzione al Calcolo Scientifico

Gestire e rappresentare l Enterprise Architecture con TOGAF ed Archimate Obiettivi e Caratteristiche di un approccio combinato

Nell ambito quindi di un ulteriore potenziamento della propria struttura, Klopotek Software & Technology Services S.r.l.

Ingegneria del Software

Programmazione Orientata agli Oggetti in Linguaggio Java

Architetture di rete. 4. Le applicazioni di rete

Il calcolatore. Architettura di un calcolatore (Hardware)

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

Programmazione Orientata agli Oggetti

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Programmazione C Massimo Callisto De Donato

Le aree dell informatica

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

Fondamenti VBA. Che cos è VBA

design pattern una soluzione progettuale generale a un problema ricorrente

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

Elena Baralis 2007 Politecnico di Torino 1

Pattern software. [SAP] Chapter 13, Architectural Tactics and Patterns

Il pattern ABSTRACT FACTORY

Concetti Introduttivi. Il Computer

Quadro di Riferimento di Matematica

Lab 01 Introduzione a Codelite

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

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

Design patterns in Java

Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica

DESIGN PATTERN ESERCITAZIONE PREPARAZIONE ALL ESAME, PARTE II INGEGNERIA DEL SOFTWARE. La soluzione corretta è la c)

Primi passi col linguaggio C

Metodologia di lavoro: PCM & GOPP

VirtualPiano Giada Gibertoni, Meshua Galassi e Lorenzo Valentini 30 maggio

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Programmazione di INFORMATICA e Laboratorio

Strumenti per l automazione del testing di applicazioni web Javascript-based

Ingegneria del Software

Analisi e specifica dei requisiti

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

SETA Selection Tool del Sistema ARTIST

Introduzione a MapGuide Author 6.5

Ingegneria del Software. Introduzione al pattern

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Progettazione! Progettazione! Progettazione! Progettazione!

Introduzione al Model-View-Controller (MVC)

CORSO DI PROGRAMMAZIONE JAVA

PVIS: Pilz VISualization

Rappresentazione generale del problema e fasi di progettazione

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

Input/Output. Livelli del sottosistema di I/O

SISTEMI OPERATIVI, RETI, INTERNET

Transcript:

INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 rcardin@math.unipd.it 2 DESIGN PATTERN Specifica Tecnica, Definizione di Prodotto, Piano di Qualifica Revisione dei Requisiti R. Progetto Architetturale R. di Accettazione Revisione di Qualifica 3 4

INTRODUZIONE Progettare software object oriented è difficile Riusabilità Ci vuole molta esperienza Soluzioni comuni e ricorrenti (pattern) Flessibili, eleganti, riusabili Non solo progettazione di software Macbeth, novelle romantiche INTRODUZIONE Design Pattern Raccolta dell esperienza dei progettisti, presentata in un modo effettivamente utilizzabile Riutilizzo di soluzioni architetturali vincenti Nessuna soluzione nuova (o non documentata) Non vogliamo riscoprire la ruota?! Altruismo Si tende a tenere per se le soluzioni vincenti! 5 6 COS È UN DESIGN PATTERN Definizione Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Christopher Alexander Quattro elementi essenziali Nome del pattern Vocabolario di progettazione Il problema che il pattern risolve Descrizione del contesto La soluzione Elementi, relazioni, responsabilità e collaborazioni Le conseguenze Risultati e limiti della soluzione 7 8

DESIGN PATTERN: ESEMPIO DESIGN PATTERN: ESEMPIO Model View Controller (MVC) Disaccoppia le tre componenti, rendendole riusabili Model: dati di business e regole di accesso View: rappresentazione grafica Controller: reazione della UI agli input utente MVC: Model View Disaccoppiamento protocollo di notifica View deve garantire una visualizzazione consistente Diversi design pattern Observer design pattern Composite design pattern 9 10 DESIGN PATTERN: ESEMPIO MVC: View Controller Permette la modifica del comportamento in risposta all input Nessuna modifica di visualizzazione Strategy/Algorithm design pattern Altri pattern Factory Method / Template design pattern Decorator design pattern DESCRIZIONE DI UN DESIGN PATTERN Convenzioni per la specifica Nome e classificazione Sinonimi: altri nomi noti del pattern Motivazione: problema progettuale Applicabilità: contesti in cui il pattern può essere applicato Struttura: rappresentazione grafica delle classi Partecipanti: classi e/o oggetti partecipanti e responsabilità Collaborazioni tra i partecipanti Conseguenze: costi e benefici Implementazione: suggerimenti, tecniche, errori comuni Esempio di codice sorgente: possibile implementazione Utilizzo comune: il pattern nei sistemi reali Pattern correlati 11 12

CLASSIFICAZIONE DESIGN PATTERN 13 14 RISOLVERE PROBLEMI ARCHITETTURALI Utilizzare gli oggetti appropriati È difficile decomporre il sistema in oggetti! Ogge reali ogge non reali DP permettono di identificare le astrazioni meno ovvie Utilizzare la giusta granularità Come decidere cosa deve essere un oggetto? DP forniscono la granularità più appropriata Utilizzare le giuste interfacce Gli oggetti sono conosciuti solo per il proprio insieme di operazioni DP definiscono cosa mettere/non nell interfaccia PRINCIPI DI PROGETTAZIONE Program to an interface, not an implementation. Favor object composition over class inheritance 15 16

PRINCIPI DI PROGETTAZIONE Progettare pensando al cambiamento Anticipazione di nuovi requisiti e loro estensioni Massimizza il riuso DP permettono al sistema di evolvere Creazione di oggetti indirettamente (interfacce) Decidere quale operazione utilizzare solo a runtime Limitare le dipendenze dall ambiente di esecuzione Nascondere l implementazione degli oggetti Isolare gli algoritmi che hanno possibilità di essere estesi Utilizzare astrazione e livellamento delle classi per ottenere un sistema con un basso grado di accoppiamento Aggiungere nuove funzionalità utilizzando la composizione 17 18 LIVELLI DI PROGETTAZIONE LIVELLI DI PROGETTAZIONE Progettare applicazioni Riuso interno Riduzione delle dipendenze Applicazioni Toolkit Framework Toolkit (librerie software) Insieme di oggetti correlati e riusabili progettati per fornire funzionalità generiche. Riutilizzo del codice (code reuse) C++/Java I/O stream library Framework Insieme di classi che cooperano per costruire architetture riutilizzabili per sviluppare un dominio di applicazioni Impone un disegno architetturale Riutilizzo architetturale Inversion of control Minor grado di accoppiamento possibile NON sono design pattern DP sono più astratti DP disegnano architetture più piccole DP sono meno specializzati Applicazioni Toolkit Framework 19 20

TIPOLOGIE DI PATTERN DESIGN PATTERN ARCHITETTURALI Architetturali Stili architetturali di alto livello Progettuali Definiscono micro architetture Idiomi Risolvono piccoli problemi Legati al linguaggio Pattern di alto livello Guida nella scomposizione in sottosistemi Ruoli e responsabilità Regole di comunicazione fra le componenti Agglomerati di pattern architetturali Esempi Paradigma client server Model View Controller (MVC) Peer to peer 21 22 DESIGN PATTERN PROGETTUALI DESIGN PATTERN E IDIOMI Progettazione di dettaglio di componenti Definiscono micro architetture Schema di comunicazione fra gli elementi di un sistema software Basi per costruire i pattern architetturali Sono i pattern (Gang of Four) GoF Factory Command Proxy Observer Basso livello di astrazione Specifici del linguaggio di programmazione Utilizzano direttamente direttive del linguaggio Esempio Come implementare un Singleton in Java? Definire un attributo statico e privato Implementare il metodo pubblico e statico getinstance Impostare il costruttore privato. 23 24

DESIGN PATTERN E IDIOMI Design Pattern Soluzione generica ad una classe di problemi Propone un modello architetturale Idioma Soluzione specifica ad un linguaggio Legato alla tecnologia Un design idiomatico rinuncia alla genericità della soluzione basata su un pattern a favore di una implementazione che poggia sulle caratteristiche (e le potenzialità) del linguaggio. 25 26 UTILIZZARE I DESIGN PATTERN UTILIZZARE I DESIGN PATTERN Come selezionare i DP? Considerare come il DP risolve il problema Leggere la sezione delle motivazioni Conoscere le relazioni fra DP Considerare le possibili cause di cambiamento dell architettura Considerare cosa può evolvere nell architettura Come utilizzare un design pattern Leggere il DP attentamente Rileggere le sezioni che descrivono Struttura, Partecipanti e Collaborazioni Analizzare il codice di esempio fornito Scegliere nomi appropriati per i partecipanti Definire la struttura delle classi del pattern all interno della propria applicazione Scegliere nomi appropriati per le operazioni Implementare le operazioni 27 28

ANTI PATTERN Problemi ricorrenti che si incontrano durante lo sviluppo dei programmi e che dovrebbero essere evitati, non affrontati Evitare gli errori già commessi Evidenziare perché una soluzione sbagliata può sembrare in principio corretta per un problema Descrivere come passare dalla soluzione sbagliata a quella corretta Esempi Reinventare la ruota (quadrata) Codice spaghetti Fede cieca Anomalia della sottoclasse vuota Programmazione copia e incolla RIFERIMENTI Design Patterns, Elements of Reusable Object Oriented Software, GoF, 1995, Addison Wesley MVC http://www.claudiodesio.com/ooa&d/mvc.htm Design Patterns http://sourcemaking.com/design_patterns 29 30