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

1,809 views
1,735 views

Published on

Published in: Education, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,809
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
51
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×