Ingegneria del Software. Introduzione ai pattern



Documenti analoghi
Ingegneria del Software. Introduzione al pattern

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

7. Architetture Software

design patterns e GRASP

10. Design Patterns. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica. (Ingegneria del Software) 10. Design Patterns 1 / 36

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A Marina Mongiello

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Design patterns in Java

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Ingegneria del Software. Presentazione del pattern Proxy

Piano di gestione della qualità

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Tecnologie dei Linguaggi di Programmazione

Laboratorio di Progettazione di Sistemi Software Introduzione

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Psicomotricità su Scacchiera Gigante. Una sperimentazione nella scuola primaria

Ingegneria del Software T

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

Database. Si ringrazia Marco Bertini per le slides

La Metodologia adottata nel Corso

Fasi di creazione di un programma

Automazione Industriale 4- Ingegneria del Software

Architetture software

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Pattern software. [SAP] Chapter 13, Architectural Tactics and Patterns

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

I Sistemi Informativi

Progettazione : Design Pattern Creazionali

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Class Discovery E.

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Una metodologia per la specifica di software basato su componenti

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Project Cycle Management

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Strumenti di modellazione. Gabriella Trucco

DESIGN PATTERN ESERCITAZIONE PREPARAZIONE ALL ESAME, PARTE II INGEGNERIA DEL SOFTWARE. La soluzione corretta è la c)

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

La progettazione dell interfaccia HCI. Fabio Vitali

Lezione con la LIM. Stefania Pinnelli unisalento. Stefania Pinnelli

TECNICO SUPERIORE PER L INFORMATICA INDUSTRIALE

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

SOMMARIO DIAGRAMMI DEI PACKAGE

Uso di base delle funzioni in Microsoft Excel

La progettazione centrata sull utente nei bandi di gara

DIMENSIONI CRITERI INDICATORI

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti

CRITERI DI VALUTAZIONE SCUOLA PRIMARIA SCUOLA PRIMARIA

Progettaz. e sviluppo Data Base

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

IL MARKETING E QUELLA FUNZIONE D IMPRESA CHE:

CURRICOLO DI ITALIANO CLASSE PRIMA

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

INDUSTRIAL DESIGN [ID]

Alessandra Raffaetà. Basi di Dati

SCUOLA PRIMARIA SCIENZE NATURALI E SPERIMENTALI. Competenza: 1. Comunicazione efficace Indicatore: 1.1 Comprensione

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO

Design Pattern. Ingegneria del Software parte II. Andrea Bei

Uff. I. - OLIMPIADI DI PROBLEM SOLVING - Informatica e pensiero algoritmico nella scuola dell'obbligo

CORSO DI PROGRAMMAZIONE JAVA

Corso di Programmazione e Controllo SEDE DI FANO

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

DFD DISPENSA DEL CORSO DI SISTEMI INFORMATIVI UNIVERSITÀ DEGLI STUDI DI VERONA FACOLTÀ DI MM.FF.NN LAUREA SPECIALISTICA IN INFORMATICA

Limiti della gestione tradizionale degli archivi. Prof. Francesco Accarino IIS Altiero Spinelli

TECNICO SUPERIORE DEI TRASPORTI E DELL INTERMODALITÀ

Linee guida progetto IS. Linee guida progetto IS

SCENARIO. Personas ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

Creare diagrammi di Gantt con Visio 2003

ALBO PRETORIO WEB MANUALE DELLA PROCEDURA SOMMARIO. Uso del manuale. Informazioni generali. Interfaccia grafica. Guida di riferimento

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Università Politecnica delle Marche. Progetto Didattico

AZIENDA SIMULATA CREAZIONE DI UN APP

FONDAMENTI di INFORMATICA L. Mezzalira

Object Oriented Programming

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Trasformazione dei Processi in Progetti DIB 1

SISTEMI E RETI 4(2) 4(2) 4(2) caratteristiche funzionali

Ipertesti e Internet. Ipertesto. Ipertesto. Prof.ssa E. Gentile. a.a

SCUOLA PRIMARIA CURRICOLO DI ITALIANO SECONDO BIENNIO

Programmi e Oggetti Software

Dispensa di Informatica I.1

Raggruppamenti Conti Movimenti

TECNOLOGIA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE ALLA FINE DELLA SCUOLA PRIMARIA

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Transcript:

Ingegneria del Software Introduzione ai pattern 1

Definizione di pattern [dal [dal vocabolario vocabolario Garzanti] Garzanti] Alcuni esempi: Pattern architetturale Pattern di circuito stampato Pattern grafico 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] 2

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 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) 3

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 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. 4

Motivazioni: Perché Design Pattern? Rendono il codice più facile da capire Agevolano il riuso Semplificano la manutenzione Favoriscono l estendibilità Supportano la progettazione coordinata Per diventare Software Designer Per diventare un Campione di Scacchi bisogna: 1) Imparare le regole Nomi e movimenti possibili dei pezzi, orientazione della scacchiera, ecc. 2) Imparare i principi Valore relativo di certi pezzi, valore strategico di alcune zone della scacchiera, ecc. 3) Studiare le partite dei campioni Il gioco contiene sequenze di mosse (pattern) che devono essere capite, memorizzate e applicate ripetutamente Ci sono centinaia di sequenze da imparare Per diventare un Software Designer esperto bisogna: 1) Imparare le regole Algoritmi, strutture dati, linguaggi di programmazione, ecc. 2) Imparare i principi Programmazione strutturata, orientata agli oggetti, ecc. 3) Studiare i pattern famosi I pattern devono essere capiti, memorizzati e applicati ripetutamente Ci sono centinaia di pattern da imparare 5

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 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 6

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 Prerequisiti del corso Conoscenza dei concetti OO: Ereditarietà Polimorfismo Incapsulamento Conoscenza degli strumenti OO di Java: Classi astratte Interfacce 7

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 8

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 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 9

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 10

Domande? 11