SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Ingegneria del Software




      Dr. Marco Bianchi
        bianchi74@gmail.com
Introduzione ai pattern
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
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
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
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
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
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
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
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
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
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
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
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
Le voci del catalogo
 “Patterns in Java”
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
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
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
Classificazione dei pattern
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
Domande?




Ingegneria del Software - A.A. 2003/2004

Contenu connexe

Similaire à Lezione 00 - Introduzione ai Design Patterns

Lezione 07 - Decorator
Lezione 07 - DecoratorLezione 07 - Decorator
Lezione 07 - DecoratorMarco Bianchi
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Lezione 02 - Delegation
Lezione 02 - DelegationLezione 02 - Delegation
Lezione 02 - DelegationMarco Bianchi
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Marco Potok
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLmatteo_gentile
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory methodMarco Bianchi
 
Informatica umanistica 2016 - 4
Informatica umanistica   2016 - 4Informatica umanistica   2016 - 4
Informatica umanistica 2016 - 4Stefano Lariccia
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object OrientedStefano Fago
 
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenniMarco Suma
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
Java Programming Language
Java Programming LanguageJava Programming Language
Java Programming LanguagePasquale Paola
 
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: AspectjMatteo Baccan
 

Similaire à Lezione 00 - Introduzione ai Design Patterns (20)

Lezione 07 - Decorator
Lezione 07 - DecoratorLezione 07 - Decorator
Lezione 07 - Decorator
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Lezione 02 - Delegation
Lezione 02 - DelegationLezione 02 - Delegation
Lezione 02 - Delegation
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory method
 
Informatica umanistica 2016 - 4
Informatica umanistica   2016 - 4Informatica umanistica   2016 - 4
Informatica umanistica 2016 - 4
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object Oriented
 
Approcci al design
Approcci al designApprocci al design
Approcci al design
 
Software_analyst
Software_analystSoftware_analyst
Software_analyst
 
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
Thesis M. Redaelli Slides EN
Thesis M. Redaelli Slides ENThesis M. Redaelli Slides EN
Thesis M. Redaelli Slides EN
 
Java Programming Language
Java Programming LanguageJava Programming Language
Java Programming Language
 
UX Patterns Library
UX Patterns LibraryUX Patterns Library
UX Patterns Library
 
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: Aspectj
 

Plus de Marco Bianchi

Lezione 12 - Observer
Lezione 12 - ObserverLezione 12 - Observer
Lezione 12 - ObserverMarco Bianchi
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - VisitorMarco Bianchi
 
Lezione 06 - Façade
Lezione 06 - FaçadeLezione 06 - Façade
Lezione 06 - FaçadeMarco Bianchi
 
Lezione 08 - Iterator
Lezione 08 - IteratorLezione 08 - Iterator
Lezione 08 - IteratorMarco Bianchi
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryMarco Bianchi
 
Lezione 01 - Singleton
Lezione 01 - SingletonLezione 01 - Singleton
Lezione 01 - SingletonMarco Bianchi
 
Applicazioni del TAL e dell'Information retrieval nel settore giuridico
Applicazioni del TAL e dell'Information retrieval nel settore giuridicoApplicazioni del TAL e dell'Information retrieval nel settore giuridico
Applicazioni del TAL e dell'Information retrieval nel settore giuridicoMarco Bianchi
 

Plus de Marco Bianchi (9)

Lezione 12 - Observer
Lezione 12 - ObserverLezione 12 - Observer
Lezione 12 - Observer
 
Lezione 11 - Bridge
Lezione 11 - BridgeLezione 11 - Bridge
Lezione 11 - Bridge
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - Visitor
 
Lezione 05 - Proxy
Lezione 05 - ProxyLezione 05 - Proxy
Lezione 05 - Proxy
 
Lezione 06 - Façade
Lezione 06 - FaçadeLezione 06 - Façade
Lezione 06 - Façade
 
Lezione 08 - Iterator
Lezione 08 - IteratorLezione 08 - Iterator
Lezione 08 - Iterator
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract Factory
 
Lezione 01 - Singleton
Lezione 01 - SingletonLezione 01 - Singleton
Lezione 01 - Singleton
 
Applicazioni del TAL e dell'Information retrieval nel settore giuridico
Applicazioni del TAL e dell'Information retrieval nel settore giuridicoApplicazioni del TAL e dell'Information retrieval nel settore giuridico
Applicazioni del TAL e dell'Information retrieval nel settore giuridico
 

Dernier

Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 

Dernier (18)

Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 

Lezione 00 - Introduzione ai Design Patterns

  • 1. Ingegneria del Software Dr. Marco Bianchi bianchi74@gmail.com
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Le voci del catalogo “Patterns in Java”
  • 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. 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. 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
  • 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