Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ingegneria del Software




      Dr. Marco Bianchi
        bianchi74@gmail.com
Introduzione ai pattern
Definizione di pattern


                                                                    [dal vocabolario
            ...
Riguardo i pattern…



• “Ogni pattern descrive:
   – un problema che si ripresenta più volte
     nel suo ambiente,
   – ...
Software Pattern


•    Software Pattern
    Rappresentano soluzioni a problematiche ricorrenti
    che si incontrano dura...
Un po’ di storia


1977-1979 Christopher Alexander, un architetto, scrive due
   testi che descrivono pattern per architet...
Tipi di Software Pattern



•   Design Patterns      per lo sviluppo del software
             (spesso object-oriented)

•...
Design Pattern

• I Design Pattern possono essere classificati in funzione del
  loro livello di astrazione/dettaglio

   ...
Motivazioni: Perché Design
                  Pattern?


• Rendono il codice più facile da capire

• Agevolano il riuso

• ...
Per diventare Software
                      Designer…
 Per diventare un Campione di                Per diventare un Softw...
Come è descritto un pattern

• Generalmente la descrizione di un pattern include:
   – Una descrizione del problema, tra c...
Il “catalogo” di riferimento del corso



• Testo di riferimento del corso:
    Patterns in Java – Volume 1
    Mark Grand...
Riferimenti on-line



• The Design Patterns – J.W.Cooper
  (http://www.patterndepot.com/put/8/JavaPatterns.htm)

• Thinki...
Prerequisiti del corso


• Conoscenza dei concetti OO:
   – Ereditarietà
   – Polimorfismo
   – Incapsulamento


• Conosce...
Le voci del catalogo
 “Patterns in Java”
Elementi di un pattern in “Patterns in Java”
                        (1/3)



•   Pattern Name
    – Titolo della sezione
...
Elementi di un pattern in “Patterns in Java”
                        (2/3)




•   Solution
    – Descrizione di una soluz...
Elementi di un pattern in “Patterns in Java”
                        (3/3)




•   Java API Usage
    – Eventuale presenta...
Classificazione dei pattern
Classificazione dei pattern

•   Creazionali
    – Forniscono meccanismi per la creazione di oggetti
       • Es. Factory ...
Domande?




Ingegneria del Software - A.A. 2003/2004
Upcoming SlideShare
Loading in …5
×

Lezione 00 - Introduzione ai Design Patterns

2,019 views

Published on

Published in: Education, Technology, Business
  • Be the first to comment

Lezione 00 - Introduzione ai Design Patterns

  1. 1. Ingegneria del Software Dr. Marco Bianchi bianchi74@gmail.com
  2. 2. Introduzione ai pattern
  3. 3. Definizione di pattern [dal vocabolario [dal vocabolario Garzanti] Garzanti] Alcuni esempi: Pattern architetturale Pattern di circuito stampato Pattern grafico Ingegneria del Software - A.A. 2003/2004
  4. 4. Riguardo i pattern… • “Ogni pattern descrive: – un problema che si ripresenta più volte nel suo ambiente, – gli aspetti fondamentali della soluzione a tale problema, – in modo tale che si possa riutilizzare la soluzione milioni di volte, – senza dover ripetere le stesse operazioni più volte” [Christopher Alexander] Ingegneria del Software - A.A. 2003/2004
  5. 5. Software Pattern • Software Pattern Rappresentano soluzioni a problematiche ricorrenti che si incontrano durante le varie fasi di sviluppo del software • I software pattern sono utili per: – catturare l’esperienza e la saggezza degli esperti “Sbagliando si impara…” vs. “Impara dai successi altrui…” – evitare di perder tempo nella ricerca di soluzioni già esistenti – creare un linguaggio che semplifichi la comunicazione e la comprensione tra gli addetti ai lavori Ingegneria del Software - A.A. 2003/2004
  6. 6. Un po’ di storia 1977-1979 Christopher Alexander, un architetto, scrive due testi che descrivono pattern per architetture di costruzione e di pianificazione urbana 1987 Cunningham e Beck applicano le idee di Alexander per sviluppare cinque pattern per progettare User Interface 1994 Gamma, Helm, Vlissides e Johnson pubblicano il testo Design Patterns, successivamente soprannominato “Gang of Four” (GoF) Ingegneria del Software - A.A. 2003/2004
  7. 7. Tipi di Software Pattern • Design Patterns per lo sviluppo del software (spesso object-oriented) • Analysis Patterns per definire modelli di analisi ricorrenti e riutilizzabili • Organization Patterns per strutturare organizzazioni e progetti • Process Patterns per definire processi di sviluppo software Ingegneria del Software - A.A. 2003/2004
  8. 8. Design Pattern • I Design Pattern possono essere classificati in funzione del loro livello di astrazione/dettaglio – Architectural Design Patterns Descrivono l’organizzazione strutturale fondamentale di un sistema software in termini di sottosistemi, dei loro compiti e delle modalità di interazione. – Design Patterns Forniscono uno schema per raffinare i sottosistemi o componenti di un sistema software. In genere descrivono strutture ricorrenti di componenti comunicanti che risolvono un generico problema di progettazione in un particolare contesto. – Idioms o Coding Design Patterns Pattern di basso livello specifico di un linguaggio di programmazione. Un idioma descrive come implementare particolari aspetti dei componenti o le relazioni tra essi utilizzando caratteristiche del linguaggio di programmazione scelto. Ingegneria del Software - A.A. 2003/2004
  9. 9. Motivazioni: Perché Design Pattern? • Rendono il codice più facile da capire • Agevolano il riuso • Semplificano la manutenzione • Favoriscono l’estendibilità • Supportano la progettazione coordinata Ingegneria del Software - A.A. 2003/2004
  10. 10. Per diventare Software Designer… Per diventare un Campione di Per diventare un Software Scacchi bisogna: Designer esperto bisogna: 1) Imparare le regole 1) Imparare le regole • Nomi e movimenti possibili dei pezzi, orientazione della • Algoritmi, strutture dati, scacchiera, ecc. linguaggi di 1) Imparare i principi programmazione, ecc. • Valore relativo di certi pezzi, 1) Imparare i principi valore strategico di alcune • Programmazione zone della scacchiera, ecc. strutturata, orientata agli 1) Studiare le partite dei oggetti, ecc. campioni • Il gioco contiene sequenze di 1) Studiare i pattern mosse (pattern) che devono “famosi” essere capite, memorizzate e • I pattern devono essere applicate ripetutamente capiti, memorizzati e • Ci sono centinaia di sequenze applicati ripetutamente da imparare • Ci sono centinaia di pattern da imparare Ingegneria del Software - A.A. 2003/2004
  11. 11. Come è descritto un pattern • Generalmente la descrizione di un pattern include: – Una descrizione del problema, tra cui: • un esempio concreto • una soluzione specifica al problema concreto – Considerazioni che guidano alla formulazione di una soluzione generica – Una soluzione generica – Le conseguenze, positive e negative, nell’utilizzare una data soluzione per risolvere un problema – Un elenco di pattern simili • I cataloghi di pattern presentano una scheda, contenente le informazioni sopra elencate, per ogni pattern Ingegneria del Software - A.A. 2003/2004
  12. 12. Il “catalogo” di riferimento del corso • Testo di riferimento del corso: Patterns in Java – Volume 1 Mark Grand Wiley • Altri riferimenti: – Design Patterns Gamma, Helm, Johnson, Vlissides Addison-Wesley Ingegneria del Software - A.A. 2003/2004
  13. 13. Riferimenti on-line • The Design Patterns – J.W.Cooper (http://www.patterndepot.com/put/8/JavaPatterns.htm) • Thinking in Pattern – B. Eckel (http://www.mindview.net/) • Patterns Home Page: http://www.hillside.net/patterns/ • Patterns Discussion FAQ: http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html Ingegneria del Software - A.A. 2003/2004
  14. 14. Prerequisiti del corso • Conoscenza dei concetti OO: – Ereditarietà – Polimorfismo – Incapsulamento • Conoscenza degli strumenti OO di Java: – Classi astratte – Interfacce Ingegneria del Software - A.A. 2003/2004
  15. 15. Le voci del catalogo “Patterns in Java”
  16. 16. Elementi di un pattern in “Patterns in Java” (1/3) • Pattern Name – Titolo della sezione – Riferimento bibliografico • Synopsis – Esposizione sintetica e sistematica del pattern • Context – Descrizione del problema che il pattern risolve • Forces – Riassunto delle considerazioni che conducono alla soluzione generica presentata nella sezione Solutions Ingegneria del Software - A.A. 2003/2004
  17. 17. Elementi di un pattern in “Patterns in Java” (2/3) • Solution – Descrizione di una soluzione generica al problema che il pattern risolve • Consequences – Spiegazione delle implicazioni, positive e negative, nell’utilizzo del pattern • Implementation – Presentazione degli aspetti da considerare in fase di implementazione – In alcuni casi, descrizioni di varianti e/o semplificazioni Ingegneria del Software - A.A. 2003/2004
  18. 18. Elementi di un pattern in “Patterns in Java” (3/3) • Java API Usage – Eventuale presentazione di utilizzo del pattern all’interno delle API Java • Code Example – Codice di esempio che mostra un semplice utilizzo pratico del pattern • Related Patterns – Elenco di pattern in qualche modo correlati Ingegneria del Software - A.A. 2003/2004
  19. 19. Classificazione dei pattern
  20. 20. Classificazione dei pattern • Creazionali – Forniscono meccanismi per la creazione di oggetti • Es. Factory Method • Strutturali – Gestiscono la separazione tra interfaccia e implementazione e le modalità di composizione tra oggetti • Es. Adapter – Adatta l’interfaccia di una classe secondo necessità • Comportamentali – Consentono la modifica del comportamento degli oggetti minimizzando la necessità di cambiare il codice • Es. Iterator – Fornisce una modalità di accesso sequenziale ad un insieme di elementi, indipendentemente dalla loro natura Ingegneria del Software - A.A. 2003/2004
  21. 21. Domande? Ingegneria del Software - A.A. 2003/2004

×