SlideShare a Scribd company logo
1 of 43
Patterns, Frameworks,  Components Breve panoramica del riuso Object Oriented STEFANO  FAGO 21 Maggio 2001
Errori comuni sui PATTERN ,[object Object],[object Object],Andremo   ad esaminare:
Cosa non sono i PATTERN ,[object Object],Non è un’affermazione corretta; manca il fondamen tale aspetto di ricorsività che denota un pattern.
Cosa non sono i PATTERN(cont) ,[object Object],L’affermazione è errata dato che un pattern è in primis uno strumento concettuale del tutto svin colato dall’aspetto implementativo; anche per questo non può essere applicato meccanicamente come una regola ma necessita di training e ragiona mento.
Cosa non sono i PATTERN(cont) ,[object Object],L’affermazione risulta errata in quanto non solo  è possibile distinguere i pattern per il loro scopo,  ma esiste un ampio range di stili, detta gli, maturità, qualità.
Cosa non sono i PATTERN(cont) ,[object Object],In quanto strumento concettuale un pattern non è legato ad uno specifico tool o supporto metodolo gico. E’ da evidenziarsi però il fatto che la metodo logia object oriented si presenta come terreno fertile per la crescita dei pattern e l’automazione del loro processo descrittivo.
Cosa non fanno i PATTERN ,[object Object],[object Object],I pattern non danno garanzie di alcun tipo sono però uno strumento concettuale  che se opportunamente usato favorisce, in ultima analisi, la flessibilità e riusabilità di un progetto.
Cosa non fanno i PATTERN (cont) ,[object Object],Questa affermazione viene facilmente smentita considerando il fatto che i DESIGN PATTERN sono solo una parte di una famiglia di tool concettuali che riguarda anche altri aspetti dell’ingegneria del software. Il fatto che le comunità legate al design object oriented siano state particolarmente recettive sull’argomento, non deve elidere il carattere di generalità dei pattern.
Cosa non fanno i PATTERN (cont) ,[object Object],E’ estremamente semplice trovare documentazione ed esperienze concrete che dimostrino l’apporto positivo determinatosi dalla diffusione dei pattern in generale.
quindi i PATTERN sono... ,[object Object],[object Object],[object Object],… ma devono possedere un nome per essere facilmente riferiti ed ne devono essere puntualmente descritti i possibili trade-off (limiti, conseguenze, vantaggi, variazioni, suggerimenti implementativi…).
I FRAMEWORKS ,[object Object],[object Object],[object Object],Andremo a discutere su:
Cosa è un FRAMEWORK ,[object Object],[object Object]
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!
Cosa è un FRAMEWORK(cont) ,[object Object],[object Object],[object Object],Un FRAMEWORK permette quanto il riuso del codice che il riuso del design!
Concetti CHIAVE ,[object Object],[object Object],[object Object]
Concetti CHIAVE ,[object Object],Una classe astratta è una classe che possiede almeno un metodo non implementato, definito “astratto”. Se normalmente una classe è considerata “lo stampo” per la creazione di oggetti, una classe astratta è “il template” per le sottoclassi da cui deriveranno le specifiche applicazioni. Le classi astratte sono il progetto delle componenti di un framework!
Concetti CHIAVE (cont) ,[object Object],Un framework è rappresentato da un insieme di classi astratte e da come queste interagiscono. Quest’ultimo aspetto implica la definizione del framework come MODELLO COLLABORATIVO riferito alle componenti del framework stesso. Un framework si pone come pattern dell’interazione tra le sue componenti ed in ciò si esprime la sua capacità di riuso del design!
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.
Concetti CHIAVE (cont) ,[object Object],Lo sviluppatore non scrive codice per coordinare le componenti. Lo sviluppatore deve determinare le componenti che aderendo alla logica collaborativa del framework verranno coordinate da quest’ultimo. I framework assumono il controllo della applicazione e non il contrario!
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!
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!
… quindi un Framework è... ,[object Object],[object Object],[object Object],crea applicazioni da librerie di componenti e usa l’ereditarietà per il riuso delle implementazioni. modello collaborativo che coordina i diversi elementi che lo determinano. Descrive il tipo di oggetti di rilievo e fornisce il vocabolario per ragionare e discutere sul dominio del problema d’interesse.
… una visione d’insieme...
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.
Wolfgang Pree’s  METAPATTERNS (cont) ,[object Object],[object Object],[object Object],[object Object],termini e concetti usati: elemento di invariabilità nel framework Elemento di variazione che determina la flessibilità di un framework metodo di una classe astratta che coordina generalmente più hook method metodo astratto che determina il comportamento spefico nelle sottoclassi di un framework
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.
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.
Wolfgang Pree’s METAPATTERNS (cont) ,[object Object]
Wolfgang Pree’s METAPATTERNS (cont) ,[object Object]
Wolfgang Pree’s METAPATTERNS (cont) ,[object Object]
Wolfgang Pree’s METAPATTERNS (cont) ,[object Object]
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).
COMPONENTS ,[object Object],[object Object],[object Object]
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.
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.
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.
Concetti chiave ,[object Object],[object Object],[object Object]
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.
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.
Concetti chiave: DEPLOYMENT Il DEPLOYMENT di una componente è il file fisico (eseguibile) realizzato per l’effettiva esecuzione ed utilizzo della componente.
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.
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.
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.

More Related Content

Similar to Riuso Object Oriented

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
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capturefcospito
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capturefcospito
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1Christian Nastasi
 
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014Marco Parenzan
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1Fabio Armani
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Usare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web ApplicationUsare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web Applicationextrategy
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Slide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptSlide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptLuca Pagliaro
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignLuca Milan
 
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...Alex Ronci
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide SitoDavide Sito
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group MilanoMassimo Groppelli
 

Similar to Riuso Object Oriented (20)

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
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1
 
Corso UML
Corso UMLCorso UML
Corso UML
 
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
Usare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web ApplicationUsare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web Application
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Slide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptSlide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScript
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven Design
 
Object Oriented Design
Object Oriented DesignObject Oriented Design
Object Oriented Design
 
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
 
Smart api
Smart apiSmart api
Smart api
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Corso GOF Design Pattern
Corso GOF Design PatternCorso GOF Design Pattern
Corso GOF Design Pattern
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group Milano
 

More from Stefano Fago

Exploring Open Source Licensing
Exploring Open Source LicensingExploring Open Source Licensing
Exploring Open Source LicensingStefano Fago
 
Non solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e PiattaformeNon solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e PiattaformeStefano Fago
 
Don’t give up, You can... Cache!
Don’t give up, You can... Cache!Don’t give up, You can... Cache!
Don’t give up, You can... Cache!Stefano Fago
 
Resisting to The Shocks
Resisting to The ShocksResisting to The Shocks
Resisting to The ShocksStefano Fago
 
Gamification - Introduzione e Idee di un NON GIOCATORE
Gamification - Introduzione e Idee di un NON GIOCATOREGamification - Introduzione e Idee di un NON GIOCATORE
Gamification - Introduzione e Idee di un NON GIOCATOREStefano Fago
 
Quale IT nel futuro delle Banche?
Quale IT nel futuro delle Banche?Quale IT nel futuro delle Banche?
Quale IT nel futuro delle Banche?Stefano Fago
 
Microservices & Bento
Microservices & BentoMicroservices & Bento
Microservices & BentoStefano Fago
 
What drives Innovation? Innovations And Technological Solutions for the Distr...
What drives Innovation? Innovations And Technological Solutions for the Distr...What drives Innovation? Innovations And Technological Solutions for the Distr...
What drives Innovation? Innovations And Technological Solutions for the Distr...Stefano Fago
 
Reasoning about QRCode
Reasoning about QRCodeReasoning about QRCode
Reasoning about QRCodeStefano Fago
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!Stefano Fago
 
Uncommon Design Patterns
Uncommon Design PatternsUncommon Design Patterns
Uncommon Design PatternsStefano Fago
 

More from Stefano Fago (13)

Exploring Open Source Licensing
Exploring Open Source LicensingExploring Open Source Licensing
Exploring Open Source Licensing
 
Non solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e PiattaformeNon solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e Piattaforme
 
Api and Fluency
Api and FluencyApi and Fluency
Api and Fluency
 
Don’t give up, You can... Cache!
Don’t give up, You can... Cache!Don’t give up, You can... Cache!
Don’t give up, You can... Cache!
 
Resisting to The Shocks
Resisting to The ShocksResisting to The Shocks
Resisting to The Shocks
 
Gamification - Introduzione e Idee di un NON GIOCATORE
Gamification - Introduzione e Idee di un NON GIOCATOREGamification - Introduzione e Idee di un NON GIOCATORE
Gamification - Introduzione e Idee di un NON GIOCATORE
 
Quale IT nel futuro delle Banche?
Quale IT nel futuro delle Banche?Quale IT nel futuro delle Banche?
Quale IT nel futuro delle Banche?
 
Microservices & Bento
Microservices & BentoMicroservices & Bento
Microservices & Bento
 
Giochi in Azienda
Giochi in AziendaGiochi in Azienda
Giochi in Azienda
 
What drives Innovation? Innovations And Technological Solutions for the Distr...
What drives Innovation? Innovations And Technological Solutions for the Distr...What drives Innovation? Innovations And Technological Solutions for the Distr...
What drives Innovation? Innovations And Technological Solutions for the Distr...
 
Reasoning about QRCode
Reasoning about QRCodeReasoning about QRCode
Reasoning about QRCode
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
Uncommon Design Patterns
Uncommon Design PatternsUncommon Design Patterns
Uncommon Design Patterns
 

Recently uploaded

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 

Recently uploaded (9)

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
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!
  • 22.
  • 23. … una visione d’insieme...
  • 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.