Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Riuso Object Oriented
1. Patterns, Frameworks, Components Breve panoramica del riuso Object Oriented STEFANO FAGO 21 Maggio 2001
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13. Cosa è un FRAMEWORK(cont) Le due definizioni che abbiamo visto sembrano in contraddizione ma in realtà non lo sono in quanto la prima descrive la “struttura” di un framework, mentre la seconda ne evidenzia lo “scopo”. I FRAMEWORK sono una tecnica di riuso object oriented!
14.
15.
16.
17.
18. Concetti CHIAVE (cont) I concetti ora visti nascono dalla giusta strutturazione di tre elementi alla base della filosofia object orieted: DATA ABSTRACTION : classi astratte per l’incapsulamento e la tipizzazione POLIMORFISMO : per concepire elementi generici capaci di operare con un ampio spettro di collaboratori EREDITARIETA’ : per promuove il riuso del codice.
19.
20. Frameworks e Pattern I frameworks promuovono anche il riuso del design e cercano di risolvere determinati problemi ricorsivi. E’ per questi motivi che possono essere correlati ai pattern. Un Framework vuol dire anche riuso del codice e questa sua natura implementativa fa si che non si possa definirlo come pattern. Le applicazioni usando un framework ne adottano il modello collaborativo ed in ciò possono determinarsi dei pattern!
21. Frameworks e Pattern (cont) Il rapporto con i DESIGN PATTERN della GoF è particolare ed è stretto. Il perché sta nel fatto che i pattern in questione nascono essenzialmente da un’opera di disamina di framework vincenti onde isolare entità object oriented riusabili. I Design Pattern sono gli elementi micro-architetturali dei frameworks!
24. Wolfgang Pree’s METAPATTERNS Lo scopo del lavoro di W. Pree è quello di ottenere un tool potente ma semplice per semplificare la creazione di framework. Questo è possibile usando i concetti chiave sottesi ai framework ed innalzando il livello di astrazione considerato. Sarà quindi possibile isolare concetti di design (patterns) fondamentali da usare come building block nella determinazione di nuovi framework.
25.
26. Wolfgang Pree’s METAPATTERNS (cont) Il punto di partenza del lavoro di Pree è l’osservazione che nelle diverse componenti di un framework sono evidenziabili dei punti di variazione (classi e/o metodi) che permettono l’adattamento, anche a run-time, del framework in relazione ad una specifica applicazione. Tali elementi sono gli HOT SPOT.
27. Wolfgang Pree’s METAPATTERNS (cont) Hot Spot e Frozen Spot si traducono nel meta-livello proposto da Pree in HOOK e TEMPLATE, i principali metapattern che consideriamo. Dalla diversa collocazione di tali elementi e dalla loro diversa composizione derivano i metapattern che determinano il tool cercato.
28.
29.
30.
31.
32. Wolfgang Pree’s METAPATTERNS (cont) Vediamo un immediato riscontro del Tool di Pree. E’ possibile catalogare e riconoscere i GoF pattern nel nuovo metalivello. GoF pattern riconducibili al separation metapattern: Abstract Factory, Builder, Command, Interpreter, Observer, Prototype, State, Strategy. Gof pattern riconducibili al recursive combination pattern: Composite(1:n), Decorator(1:1), Chain Of Responsa bility(1:1 con unification).
33.
34. Cosa è una COMPONENTE Una COMPONENTE è un package di servizi software implementati, language-neutral, presentati in un “contenitore” incapsulato e rimpiazzabile, a cui si accede tramite una o più interfacce pubbliche. Una componente non è limitata ad una specifica applicazione o piattaforma.
35. Cosa è una COMPONENTE (cont) Language-neutral : non significa scritte in un linguaggio universale, ma progettate ed utilizzabili in modo tale che componenti scritte in linguaggi diversi possano effettivamente collaborare. Incapsulamento : ogni componente può essere sviluppata indipendentemente dalle altre perchè risulta incapsulata nella propria unità di sviluppo e testing.
36. Cosa è una COMPONENTE (cont) No Singola Piattaforma : una stessa componente può essere concepita con una data interfaccia ma implementata per piattaforme differenti. Riusabile per più applicativi : una componente offre dei servizi che possono trovare impiego in applicativi differenti determinando il riuso della componente.
37.
38. Concetti chiave: INTERFACCIA Un interfaccia indica all’utente della componente, generalmente riferito come CONSUMER, cosa la data componente può fare. Un consumer dovrebbe conoscere come usare la componente solo grazie a quanto deducibile dall’interfaccia.
39. Concetti chiave: IMPLEMENTAZIONE Un implementazione rappresenta il codice che permette il funzionamento di una componente. L’implementazione può variare e quindi una componente può avere più implementazioni. Ad esempio, una componente che offre servizi di tipo IP potrebbe avere un’implementazione relativa al TCP ed un’altra relativa all’ UDP.
40. Concetti chiave: DEPLOYMENT Il DEPLOYMENT di una componente è il file fisico (eseguibile) realizzato per l’effettiva esecuzione ed utilizzo della componente.
41. Components e Frameworks Un framework può essere visto come una componente perché riusabile all’interno di un’applicazione con altri framework ed anche perché vendibile da un dato produttore come artefatto completo; ma, in effetti… Un Framework è più propriamente un CONTESTO RIUSABILE per le COMPONENTI.
42. Components e Frameworks(cont) Un Framework, come modello collaborativo, permette la coordinazione delle diverse componenti eventualmente usate per lo specifico applicativo. Un Framework usando le date componenti e gestendo il flusso di controllo degli applicativi da esso derivati, permette il riuso delle componenti stesse.
43. Components e Frameworks(cont) Una componente nasce con lo scopo di soddisfare una o più specifiche esigenze traducibili in servizi offerti dalla componente stessa. Un framework, visto come insieme di template di classi, permette la creazione di nuove componenti e servizi anche non inizialmente previsti.