Analisi e progettazione orientate agli oggetti. Discorso sul metodo. Analisi e progettazione. Obiettivi della lezione



Documenti analoghi
Object Oriented Programming

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

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

UniRoma2 - Ingegneria del Software 1 1

Strumenti di modellazione. Gabriella Trucco

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

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

Concetti di base di ingegneria del software

Modellazione dei dati in UML

La specifica del problema

UML. Una introduzione incompleta. UML: Unified Modeling Language

Modellazione di sistema

PROGETTAZIONE DEL SOFTWARE

GESTIONE DEI PROCESSI

UML - Unified Modeling Language

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

UML e (R)UP (an overview)

Oggetti Lezione 3. aspetti generali e definizione di classi I

Automazione Industriale 4- Ingegneria del Software

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

Gestione del workflow

Ingegneria del Software. Introduzione ai pattern

Ingegneria del Software UML - Unified Modeling Language

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Programmazione a Oggetti Lezione 10. Ereditarieta

Corso di Informatica

Architetture software

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

Lezione 4. Modello EER

Corso: Sistemi di elaborazione delle informazioni 2. Anno Accademico: 2007/2008. Docente: Mauro Giacomini

7. Architetture Software

Introduzione a UML. Iolanda Salinari

Sequence Diagram e Collaboration Diagram

progettare buone gerarchie

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

FONDAMENTI di INFORMATICA L. Mezzalira

Progettazione orientata agli oggetti Introduzione a UML

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Progettaz. e sviluppo Data Base

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

Introduzione ad UML. Perché modelliamo

Object Oriented Software Design

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

1. BASI DI DATI: GENERALITÀ

UML Component and Deployment diagram

Organizzazione degli archivi

Programmazione a Oggetti Modulo B

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

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

INFORMATICA 1 L. Mezzalira

La Progettazione Concettuale

Organizzazione aziendale Lezione 16 BPMN. Ing. Marco Greco Tel Stanza 1S-28

Indice. Prefazione alla seconda edizione italiana XVII. Introduzione. Parte 1 Introduzione all UML e all UP 1

Rational Unified Process Introduzione

Progettazione di Basi di Dati

Programmi e Oggetti Software

Progettazione : Design Pattern Creazionali

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Approccio stratificato

Business Process Modeling and Notation e WebML

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Piano di gestione della qualità

Architetture Applicative

Modulo 4: Ereditarietà, interfacce e clonazione

Programmazione Orientata agli Oggetti in Linguaggio Java

Alessandra Raffaetà. Basi di Dati

Il Sistema Operativo

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Implementing a new ADT based on the HL7 version 3 RIM. Esempio

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Lezione 1. Introduzione e Modellazione Concettuale

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1

Progettazione del Software A.A.2008/09

UML Diagrammi delle classi. UML Diagramma classi 1

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Modello di Controllo dell Accesso basato sui ruoli (RBAC)

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

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO per la Sicurezza Funzionale

object oriented analysis

Dispensa di database Access

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

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

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Esercitazione di Basi di Dati

La Metodologia adottata nel Corso

Concetto di Funzione e Procedura METODI in Java

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Analisi dei requisiti e casi d uso

Sistemi Informativi e Sistemi ERP

Progettazione concettuale

CORSO DI PROGRAMMAZIONE JAVA

Paradigma object-oriented

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

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Cosa significa che il SW è non lineare? Piccoli cambiamenti nel codice portano a grandi cambiamenti di comportamento

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Breve Excursus su Evoluzione della Programmazione. Corso di Linguaggi e Metodologie di Programmazione

Automazione Industriale (scheduling+mms) scheduling+mms.

Transcript:

Obiettivi della lezione Analisi e progettazione orientate agli oggetti Che cos è la progettazione? Un processo che anticipa un futuro artefatto mediante problem solving creativo Quali sono le regole di buona progettazione? Aspetti critici nel progetto del software a oggetti Analisi delle alternative Iterazioni (è raro azzeccarla alla prima) Fattorizzazioni (semplificare il design) Architetture di riferimento (tecnologie e standard) Come si impara a progettare a oggetti? 1 2 Discorso sul metodo La progettazione si apprende studiando i principali paradigmi evolutisi in relazione al progresso della tecnologia e delle applicazioni; esistono oggi parecchi paradigmi di progettazione Metodologia Insieme di metodi, regole e postulati impiegati da una disciplina Analisi dei principi di conoscenza in un dominio specifico; studio dei metodi di analisi di tale dominio Paradigma Esempio, modello Il paradigma attualmente dominante è l object-oriented (OO), che si basa sulla costruzione di modelli 3 Analisi e progettazione L analisi si occupa di: Definire la soluzione giusta per il problema giusto La progettazione si occupa di Descrivere (anticipare) una soluzione al problema mediante un modello Un modello è una rappresentazione semplificata della realtà che contiene informazioni ottenute focalizzando l attenzione su alcuni aspetti cruciali e ignorando alcuni dettagli 4

thestorage UML-A Generated Dependency Class:aRouteCollection Association (0.25) thevehiclecollection avehicle UML-A Generated Dependency Class:theRouter Dependency (1.0) UML-A Generated Dependency Class:theRouter Dependency (0.5) UML-A Generated Dependency Class:theRouter UML-A Association UML-A Generated UML-A Generated (0.25) Association UML-A Generated Association UML-A Generated Association Generated UML-A Association UML-A Generated Association UML-A Generated Generated Association Class:aNavPoint Association (1.0) Dependency (1.0) Class:theWarehouseCollection Association Class:theRouter (1.0) Association Class:aRouteCollection (1.0) (1.0) Association Dependency (0.25) Association (0.5) (0.5) UML-A UML-A Generated UML-A Generated Association UML-A Generated Association UML-A Generated Association UML-A Generated Association UML-A Generated Class:theVehicleCollection Association UML-A Generated Association UML-A Generated Class:theVehicleCollection Association Generalization UML-A Generated UML-A Association Generalization Generated Generated Association Generalization (1.0) Class:theVehicleCollection Association Generalization (1.0) Dependency UML-A Generalization (1.0) Class:theVehicleCollection Generalization (1.0) Class:theRouter Generated Dependency Generalization (1.0) Generalization (1.0) Generalization Class:theRouter (1.0) Generalization (1.0) (0.5) Dependency (1.0) (1.0) (1.0) atruck aship aairplane thewarehousecollection UML-A UML-A Generated Association UML-A Class:theVehicleCollection Class:availableVehicleCollection Generated Generalization Dependency Class:availableVehicleCollection Dependency (0.5) (0.5) Dependency (1.0) UML-A Generated Dependency Class:theRouter Association (0.5) UML-A Generated Dependency Class:theRouter Association (0.25) UML-A Generated Dependency Class:theRouter Dependency (1.0) UML-A Generated Dependency Class:theRouter Dependency (1.0) UML-A Generated Dependency Class:theWarehouseCollection Dependency (1.0) availablevehiclecollection aroutecollection UML-A Generated Dependency Class:theRouter Association (1.0) UML-A Generated Dependency Class:theRouter Association (0.5) UML-A Generated Association Class:theWarehouseCollection Dependency (0.5) UML-A Generated UML-A Dependency Generated Dependency Class:theRouter Class:theRouter Association Association (1.0) (1.0) theawt alocation UML-A Generated Association Class:theRouter Association (0.25) availablegoods aport awarehouse UML-A Generated Association Class:aNavPoint Association (1.0) (0.5) aroute UML-A Generated Dependency Class:aRouteCollection Association (0.5) UML-A Generated Association Class:aWarehouse Association (1.0) therouter thecargorouter aportcollection thetimeneeded UML-A Generated UML-A Generated Association Association Class:aWarehouse Class:aWarehouse Association Association (0.5) (0.5) asurplus adifficiency UML-A Generated Association Class:aWarehouse Association (0.5) UML-A Generated UML-A Association Generated Class:availableGoods Association Class:aWarehouse Association (0.5) Association (0.5) UML-A Generated Association Class:aNavPoint Association (0.25) UML-A Generated Association Class:aNavPoint Association (0.25) UML-A Generated UML-A Generated Association Association Class:aWarehouse Class:aWarehouse Association UML-A Association (0.5) Generated (1.0) Association UML-A Generated Class:aNavPoint Association Association Class:aNavPoint (0.25) Association (0.25) UML-A Generated Association Class:theWarehouseCollection Dependency (0.25) UML-A Generated Association Class:aRoute Association (0.5) thegoods UML-A Generated UML-A UML-A UML-A Association Generated Generated Generated Class:aNavPoint Association Association Association Class:aRoute Class:aRoute Class:aRoute Association Association Association (0.5) Association (0.25) (0.25) (0.25) UML-A Generated Association Class:aNavPoint UML-A Generated Association Association (0.5) Class:aRoute Association (0.25) avehicedialog awarehousedialog aportdialog arouterdialog anavpoint UML-A Generated UML-A Association Generated Class:aNavPoint Association Association Class:aWarehouse (0.5) Association (0.5) UML-A Generated Association Class:aWarehouse Association (0.5) UML-A Generated Association Class:aWarehouse Association (0.5) UML-A UML-A Generated Generated Association Association Class:aDifficiency Association Association (1.0) (1.0) UML-A UML-A Generated UML-A Generated UML-A Association Generated UML-A Generated Association UML-A Generated Association UML-A Association Generated Class:aDifficiency Association UML-A Generated Association Class:aDifficiency Generated Association Association Class:aDifficiency Association (1.0) Association (1.0) Association Class:aDifficiency (1.0) Association (1.0) Association (1.0) (1.0) Association (1.0) (1.0) UML-A UML-A Generated Generated Association Association Class:aSurplus Class:aSurplus Association Association (0.5) (1.0) UML-A Generated Association Class:aRoute Association (0.5) UML-A Generated UML-A Association Generated UML-A Generated Class:aNavPoint Association Association Class:theRouter Association Class:theWarehouseCollection (1.0) De Association (0.25) I modelli del sw richiedono più viste Un buon modello include almeno quattro viste: Vista Teleologica (scopo) Vista Funzionale (compiti in relazione allo scopo) Vista Strutturale (elementi e relazioni) Vista Comportamentale (interazione dinamica tra Funzionale e Strutturale) Esempio: in UML abbiamo Use Cases Interactions between a User and the system. Process Description Overview of process goals, participants and collaboration. Funzione Interaction Diagrams Behavior of core business elements in process. State Diagrams Life cycle of core system elements in process. Comportamento Class Diagrams Basic business elements and their relationships. Deployment Diagrams Actual structure of the final system Struttura 5 Perché più viste La vista teleologica descrive scopo e usi del sistema da progettare (eg. Documento di Marketing) La vista funzionale descrive il comportamento di un sistema in relazione allo scopo (eg. Casi d uso) La vista comportamentale descrive il comportamento di un sistema in relazione ai cambiamenti del suo ambiente La vista strutturale descrive i componenti di un sistema e le loro relazioni Le prime due viste sono soggettive (descrivono le intenzioni del progettista), le seconde oggettive (descrivono proprietà future del sistema) 6 Progettazione Dopo l analisi, distinguiamo almeno due fasi di progettazione: Progettazione architetturale Decomporre il sistema in moduli Determinare le relazioni tra i moduli Progettazione dettagliata Specifica delle interfacce dei moduli Descrizione funzionale dei moduli Complessità del software Vista sorgente di un applicazione 7 8

Vista di reverse engineering 9 L architettura permette di controllare la complessità Vista architetturale We can think of the architecture of a system as the common vision that all the workers (i.e., developers and other stakeholders) must agree on or at least accept 9: notification Warehouse 8: request 4: request Clock : Clock ClockConn 10: notification DeliveryPort 1: request 5: request 7: request RouterConn CargoRouter GraphicsConn GraphicsBinding : GraphicsBinding 3: request Vehicle 2: notification 6: notification 10 Cosa NON è un architettura Architettare vs integrare La maggior parte delle classi con operazioni, interfacce e attributi privati (nascosti) Meno del 10% delle classi sono rilevanti per l architettura (l altro 90% non è visibile) La maggior parte dei casi d uso I casi di test e le procedure di test Approccio tradizionale Analisi dei Requisiti Design Implementazione Il processo è sequenziale Approccio Moderno Analisi del mercato Riuso di componenti OTS Adattamento e Integrazione Il processo è concorrente 11 12

Elementi della progettazione Livelli di astrazione Procedure Funzioni Coroutine Processi Moduli Oggetti Componenti Agenti Questi diversi meccanismi linguistici vengono presi come elementi atomici della progettazione architetturale 13 } Strutture dati e algoritmo Classe (strutture dati e molti algoritmi) Package/Moduli (gruppi di classi correlate, magari interagenti via design pattern) Moduli/Sottosistemi (moduli interagenti contenenti ciascuno molte classi; solo le interfacce pubbliche La progettazione architetturale riguarda gli ultimi due livelli 14 interagiscono con altri moduli/sottosistemi) Sistemi (sistemi interagenti con altri sistemi - hardware, software ed esseri umani) Obiettivi di progettazione Semplicità Spesso si coniuga con eleganza Il codice è più semplice da capire e correggere Riduce gli errori Affidabilità e robustezza Gestire input inattesi Superare gli errori senza crash Non far danni Efficacia Risolvere i problemi giusti Efficienza Integrazione e compatibilità con altro software CPU con 3 chip (classi) Progetto semplice o complesso? Chip 1 Chip 2 Registers ALU ALU SHIFTER Shifter Chip 3 CPU con 3 chips (classi) Chip 1 Chip 2 AND gates NOT gates OR gates Chip 3 15 16

Progetto semplice o complesso? I due progetti sono funzionalmente equivalenti, ma quello di destra è Difficile da capire Difficile da correggere Difficile da estendere o migliorare Difficile da riusare. Costoso da manutenere Il progetto di sinistra è migliore: Massimizza le relazioni intraclasse (coesione) Minimizza le relazioni interclasse (accoppiamento) 17 Coesione dei moduli Misura della coerenza funzionale di un modulo Ogni modulo dovrebbe avere coesione alta Un modulo ha coerenza funzionale se fa una cosa sola - e la fa bene Le classi componenti di grossi moduli dovrebbero essere funzionalmente correlate 18 Tipi di coesione Decidere il livello di coesione Coincidentale Temporale Comunicativa Funzionale Logica Procedurale Bassa Spettro della coesione Alta incoerente coerente Coincidentale: Coincidentale: Molteplici Molteplici azioni azioni e componenti componenti completamente completamente scorrelati scorrelati Logica: Logica: serie serie di di azioni azioni o componenti componenti correlate correlate (e.g. (e.g. libreria libreria di di funzioni funzioni di di IO) IO) Temporale: Temporale: serie serie di di azioni azioni o componenti componenti simultanee simultanee (e.g. (e.g. moduli moduli di di inizializzazione) inizializzazione) Procedurale: Procedurale: serie serie di di azioni azioni che che condividono condividono sequenze sequenze di di passi passi Comunicativa: Comunicativa: coeasione coeasione procedurale procedurale sugli sugli stessi stessi dati dati Funzionale: Funzionale: una una sola sola azione azione o funzione funzione 19 Se le attività in un modulo hanno diversi livelli di coesione, il modulo ha il grado di livello peggiore 20

Accoppiamento dei moduli Accoppiamento: Misura del grado di indipendenza di un insieme di moduli I moduli di un sistema dovrebbero riportare un accoppiamento basso (o lasco) Questo si ottiene quando ci sono solo poche dipendenze tra i moduli, tutte funzionalmente rilevanti e necessarie Il software ad alto accoppiamento è fatto male (difficile da capire, mantenere, correggere, ecc ) L accoppiamento tra i moduli si riduce: eliminando relazioni non necessarie riducendo il numero delle relazioni necessarie rilassando le relazioni necessarie. 21 Tipi di accoppiamento Assenza di accoppiamento Stamp Coupling Esterno Contenuto Dati Controllo Comune Basso Spettro dell accoppiamento Alto Misura dell indipendenza funzionale di un insieme di moduli Contenuto: Contenuto: un un modulo modulo che che referenzia referenzia il il contenuto contenuto di di un un altro altro modulo modulo Comune: Comune: due due moduli moduli hanno hanno accesso accesso agli agli stessi stessi dati dati globali globali Esterno: Esterno: dati dati comuni comuni tra tra due due moduli moduli con con accesso accesso strutturato strutturato Controllo: Controllo: un un modulo modulo passa passa un un elemento elemento di di controllo controllo ad ad un un altro altro modulo modulo Stamp: Stamp: un un modulo modulo fornisce fornisce parte parte di di una una struttura struttura dati dati per per un un altro altro modulo modulo Dati: Dati: un un modulo modulo produce produce una una struttura struttura dati dati per per un un altro altro modulo modulo che che la la consuma consuma 22 Gerarchia La gerarchia dei moduli di un sistema sw riduce le dipendenze vincolando la topologia delle relazioni ra i moduli La struttura gerarchica dei moduli forma la base di progetto Decompone il dominio del problema Facilita lo sviluppo parallelo Isola le ramificazioni di modifica e versionto Permette la prototipazione rapida 23 Relazioni gerarchiche tra moduli X usa Y (dipendenza funzionale, es. call) X è_composto_da {Y,Z,W} (scomposizione architetturale: solo le foglie sono vero codice) X is_a Y (ereditarietà) X has_a Y (contenimento) 24

Errori progettuali più comuni Progettazione depth first Raffinto diretto della specifica dei requisiti Non considerare possibili modifiche Progettazione iperdettagliata OO: Storia breve 1967. Simula 67 - linguaggio per simulazione 1980. Primi linguaggi basati su oggetti. Smalltalk e C++ 1984. MacOs è basato su Object Pascal 1987. Next è interamente basato su Objective-C 1990. Primi metodi di analisi e progettazione basati su oggetti: Coad, Wirfs-Brock, Booch, Rumbaugh, Jacobson 1995. Java: gli oggetti vanno in rete! 1997: UML 1.1 diventa uno standard OMG 25 26 Principali linguaggi OO Simula (anni 60) Smalltalk (fine anni 70) C++ (inizio anni 80) Objective C (fine anni 80) Eiffel (fine anni 80) Visual Basic (inizio anni 90) Delphi (Object Pascal, TurboPascal, 1995) Java (1995) C# (2000) 27 Evoluzione dei linguaggi OO! Dahl (1960s) SIMULA! Dijkstra (1970s) Abstraction! Parnas (1970s) Information Hiding 28

Classi e oggetti I linguaggi ad oggetti includono sempre un tipo di modulo chiamato classe, che è uno schema dichiarativo che definisce tipi di oggetti La dichiarazione di classe incapsula la definizione dei campi e dei metodi degli oggetti creabili come istanza della classe classe oggetto 29 Una classe in Java class Main { public static void main(string args[]) { Account paolo = new Account(); Account figaro = new Account(); double obtained; System.out.println( "Saldo di Paolo = " + paolo.account_balance() ); paolo.deposit(100.00); System.out.println( "Saldo di Paolo = " + mike.account_balance() ); obtained = paolo.withdraw(20.00); System.out.println( "Paolo ha ritirato : " + obtained); System.out.println( " Saldo di Paolo = " + paolo.account_balance() ); figaro.deposit(50.00); System.out.println( " Saldo di Figaro = " + figaro.account_balance() ); } } 30 L icona di classe in UML Definisce Uno stato persistente Un comportamento La classe ha Nome Attributi Operazioni Ha una rappresentazione grafica in forma di un rettangolo diviso in tre parti 31 Terminologia Classe. Nome collettivo (dichiarazione di tipo) di tutti gli oggetti che hanno gli stessi metodi e variabili di istanza. Oggetto: Entità strutturata (codice, dati) e con stato la cui struttura e stato è invisibile all esterno dell oggetto. Stato: Lo stato di un oggetto si accede e manipola mediante messaggi che invocano metodi Variabili di istanza: Variabili contenute nell oggetto che rappresentano il suo stato interno Messaggio Richiesta ad un oggetto di invocazione di uno dei suoi metodi Metodo Azione che accede o manipola lo stato interno del oggetto (di solito le variabili di istanza). L implementazione di tale azione è nascosta al cliente che spedisce messaggi all oggetto 32

Metodi di analisi OO Analisi OO: inizio di un processo di sviluppo OO Metodi di analisi OO: Booch: processo evolutivo basato un modello astratto a oggetti Rumbaugh: OMT (Object Modeling Technique) enfasi su modelli dinamici e funzionali Jacobson: OOSE (Object Oriented Software Engineering) enfasi sui casi d uso Coad and Yourdon: enfasi sui livelli della modellazione Wirfs-Brock: analisi e progetto sono un continuum Simili, con differenze noiose Booch, Rumbaugh e Jacobson si allearono per creare UML ed il RUP 33 Il processo OO I processi OOA hanno tutti la seguente struttura: 1. Elicitazione dei requisiti 2. Identificazione di scenari e casi d uso 3. Estrazione delle classi candidate 4. Identificazione di attributi e metodi 5. Definizione di una gerarchia di classi 6. Costruzione di un modello a oggetti e relazioni 7. Costruzione di un modello di comportamento degli oggetti 8. Revisione dell analisi rispetto ai casi d uso 9. Iterare se necessario 34 Dall Analisi al Progetto (Pressman) Il linguaggio di modellazione sc e n a r i o- ba se d e l e me n ts use-cases - text use-case diagrams activity diagrams swim lane diagrams c l a ss- ba se d e l e me n ts class diagrams analysis packages CRC models collaboration diagrams Analysis Model be h a v i or a l e l e me n ts f l ow- or i e n te d e l e me n ts data flow diagrams control-flow diagrams processing narratives state diagrams sequence diagrams Int erfa c e Design Arc hit ec t ura l Design Da t a / Cla ss Design Design Model Com ponent - Lev el Design Un linguaggio di modellazione permette di specificare, visualizzare e documentare un processo di sviluppo OO I modelli sono strumenti di comunicazione tra cliente e sviluppatori I linguaggi di modellazione più usati sono anche standardizzati 35 36

Unified Modelling Language Analisi = Processo + Modelli Processo Modello prodotto UML è un sistema di notazioni principalmente grafiche (con sintassi, semantica e pragmatica predefinite) per la modellazione OO UML non è un processo, né è proprietario Combina le notazioni di Booch, Rumbaugh e Jacobson E' uno standard OMG (Object Management Group) E' definito mediante un metamodello Include: Viste (mostrano diverse facce del sistema: utente, strutturale, operazionale, ecc., anche in relazione al processo di sviluppo) Diagrammi (grafi che descrivono i contenuti di una vista) Elementi di modellazione (costrutti usati nei diagrammi) 37 1. Elicitazione dei requisiti d utente e identificazione dei casi d uso 2. Estrazione delle classi candidate, identificazione degli attributi e dei metodi, definizione della gerarchia delle classi 3. Costruzione di un modello a oggetti e relazioni 4. Costruzione di un modello operazionale degli oggetti Diagrammi e scenari dei casi d uso Schede Classe- Responsabilità Collaboratore (CRC) Diagramma delle classi Diagramma delle interazioni 38 Casi d uso Vista del sistema che mostra il suo comportamento come apparirà agli utenti esterni Partiziona le funzionalità in transazioni ( casi d uso ) significative per gli utenti ( attori ). Consiste di scenari - interazioni tipiche tra un utente ed un sistema informatico Proprietà: Mostra funzioni visibili all utente Raggiunge obiettivi specifici pr l utente Non rappresenta l ordine o il numero di volte che una funzione viene eseguita Si ottiene dialogando con l utente e il cliente Si usa per costruire i modelli strutturali e operazionali e per costruire casi di test 39 Che cos è la progettazione OO? Orientato agli oggetti: Decomposizione di un sistema mediante astrazioni di oggetto Diversa dalla decomposizione funzionale/procedurale OO Design, Analysis e Programming: OOA: Esaminare e decomporre il problema analysis OOD: Costruire un modello design OOP: realizzare il modello programming Problem OOA System OOD Model OOP Exec Program Solution 40

Approccio funzionale (non OO) I componenti sono blocchi funzionali Astrazione e incapsulamento assenti o poveri Non modella il dominio del problema Sequenziale (thread singolo) Approccio OO I componenti sono classi e oggetti Astrazione e incapsulamento sono i meccanismi principali Il sistema finale rispecchia il dominio del problema Concorrenza (thread multipli) 41 42 Il paradigma OO secondo G.Booch Forma canonica di un sistema OO Oggetti! Definizione e classificazione di nozioni base! Modelli e notazioni Classi C1 D1! Pragmatica! Base di UML e UP (con i Three Amigos di Rational) C2 C3 D2 D3 C4 C5 D4 D5 D6 C6 C7 The three amigos: Grady Booch, Jim Rumbaugh, Ivar Jacobson 43 44

Principali elementi del paradigma OO secondo Booch! Astrazione Il progettista crea le classi e gli oggetti! Incapsulamento Information hiding! Modularità Decomposizione in moduli ad accoppiamento lasco! Gerarchia ordinto di astrazioni mediante ereditarietà Elementi minori del paradigma di Booch Tipaggio Vincoli su classi e oggetti Concorrenza Thread multipli Persistenza Oggetti che sopravvivono nello spazio e nel tempo al programma che li crea 45 46! Vista logica e vista fisica Il cubo di Booch! Semantica statica e semantica dinamica Diagrammi di classe secondo Booch Classi, relazioni tra classi, utilità di classe Sem dinamica Sem statica Vista logica Struttura classi Struttura oggetti Classe Relazioni tra classi Utilità di classe Vista fisica Arch. Moduli Arch. Processi 47 48

Relazioni tra classi nel paradigma di Booch Associazioni Relazioni tra oggetti contiene Company! Job 1..! employer employee Person usa Job salary boss worker! 0..1 Relazioni tra classi Manages eredita Usa Istanza Metaclasse Account {Xor} Person Corporation 49 Fig. 3-40, UML Notation Guide 50 Riferimento: Tutorial OMG su UML di Cris Kobryn Composizione Generalizzazione Shape Window Separate Target Style scrollbar [2]: Slider title: Header body: Panel Polygon Ellipse Spline... Window 1 1 1 scrollbar 2 title 1 body 1 Shape Shared Target Style Slider Header Panel Polygon Ellipse Spline... Fig. 3-45, UML Notation Guide 51 Fig. 3-47, UML Notation Guide 52

Dipendenze Diagramma di classi in UML ClassA «friend» ClassB ClassD «instantiate» «friend» operationz() «call» ClassC «refine» ClassC combines two logical classes ClassD ClassE Fig. 3-50, UML Notation Guide 53 54 Diagrammi degli oggetti Diagrammi dei moduli (Gradygrammi)! Oggetti e relazioni tra oggetti: List of msg. label Label Main program Subprogram Specification Generic Subprogram Subprogram Body oggetto relazioni tra oggetti!visibilità e sincronizzazione!object diagram templates Task Specification Task Body Package Specification Generic Package Package Body 55 56

Diagrammi dei processi Aspetti linguistici degli oggetti!connessioni tra processore e dispositivo Processore Name Name Dispositivo Name Name label Identità Classificazione Ereditarietà Polimorfismo Information hiding (incapsulamento)!process diagram templates 57 58 Identità Ogni oggetto denota i dati che gestisce Ogni oggetto ha una identità possono esistere due oggetti con dati identici e diversa identità L identità degli oggetti si può realizzare con un id unico o con una chiave (logical pointer) Gli oggetti vengono acceduti mediante l id unico è possibile mescolare i meccanismi Classificazione Raccolta di oggetti simili: classe stessi attributi (variabili d istanza) stesse operazioni (servizi/messaggi) Classe: astrazione di attributi rilevanti le classi si riferiscono al dominio dell applicazione Una classe descrive un insieme (infinite) di oggetti = istanze della classe 59 60

Esempio: classe poligono class polygon attributi set of points line color fill color operazioni draw delete move Classe vs tipo Tipo di dato (in senso tradizionale): dominio + operazioni (e.g. Integer) Si usa per dichiarare variabili Classe: Costrutto linguistico, orientato all implementazione Realizza uno o più tipi OO Tipo OO (interfaccia): Protocollo compreso da un oggetto Insieme di messaggi (operazioni) Tipo di dato astratto: Specifica domini (sorte), operazioni e assiomi Nozione più astratta rispetto al tipo OO 61 62 Ereditarietà Usi dell ereditarietà Uso condiviso di attributi e codice in classi diversi Journal paper Publication journal title Vol issue title Authors publ. year Book Le sottoclassi ereditano tutte le proprietà della superclasse ISBN Classificare le entità di un dominio Evitare ridondanze Il codice identico si scrive una volta sola Diminuizione della dimensione del codice Riuso del codice 63 64

classificazione generalizzazione Generalizzazione Classe: definizione implicita di un insieme di oggetti unveicolo! Veicolo = Insieme di tutti i veicoli Generalizzazione: relazione di contenimento insiemistico Moto " Veicolo Veicolo una Fiat Marea Moto una Ducati 999F04 Veicolo Moto 65 Polimorfismo calcola area di un cerchio calcola area di un quadrato Le operazioni con lo stesso significato dovrebbero avere lo stesso nome overloading = stesso nome di funzione, implementazione diversa Nei linguaggi procedurali (es.c): solo per i tipi base (e.g.: int * int, real * real) 66 Information hiding Nascondere i dettagli inessenziali Accesso solo mediante le operazioni predefinite Responsibility-Driven Design Tecnica in cui le responsabilità di un oggetto guidano il suo design Si concentra sul ruolo di un oggetto e su come il suo comportamento influenza gli altri oggetti Se si comincia dalle responsabilità di un oggetto poi è più semplice Creare la sua interfaccia pubblica (come il mondo esterno accede le sue funzioni) Progettare il suo funzionto interno Tener conto degli eventi da esso riconosciuti getarea() black box a value 67 Prospettive di modellazione (Rebecca Wirfs-Brock) Esempio: Prospettive di un cavallo Vista strutturale: ha un corpo, una coda, quattro zampe (componenti) Vista comportamentale: cammina, mangia, emette versi (attività) Vista delle responsabilità: trasporta persone o merci, corre negli ippodromi (scopo entro un sistema) 68

Progettazione guidata dalle responsabilità Le responsabilità di una classe si classificano come: Conoscere A quali domande deve rispondere? Fare Quali operazioni deve eseguire? Applicare Quali regole deve applicare e/o imporre? Esempio Una festa Quali sono gli oggetti? Padroni di casa Person (superclass) Ospiti Invito Indirizzo» Della festa» Dell ospite Data Tema Cibo e bevande Musica 69 70 Esempio Quali sono i metodi? comprare cucinare invitare occorre la lista degli (oggetti) invitati pulire la casa RSVP andare alla festa Quali sono le responsabilità dei vari oggetti? Approccio Definire il problema Creare gli scenari d uso Mediante interviste Concentrarsi sulel operazioni principali Usare le schede CRC Oggetti Iniziare con quelli più importanti Responsabilità Le cose principali che fanno gli oggetti più importanti Relazioni con altri oggetti 71 72

Schede CRC CRC Card Classe, Responsabilità, Collaborazione responsabilità: compiti da eseguire collaborazioni: altri oggetti che cooperano con questo Responsabilità: Class : Superclasse: Sottoclassi: Collaborazioni: Class : Superclass: Subclasses: Padrone Persona Responsibilities: Collaborations: Invita Compra Pulisce_casa Invito, Persona, Lista Denaro, Negozio, Cibo, Spugna, Straccio, 73 74 CRC Card Da CRC a UML Class : Superclass: Subclasses: Ospite Persona Responsibilities: Collaborations: RSVP Telefono, Padrone Le schede CRC definiscono le classi principali e le loro interazioni Strumento di brainstorming Se ne scrivono tante, se ne buttano tante UML Per raffinare il progetto Per descrivere il progetto ad altri 75 76

UML: Unified Modeling Language I tre passi del progetto OO Notazione per progetto OO Associata ad un metodo Parecchi tipi di diagrammi Diagrammi di classe Struttura statica Diagrammi Casi d Uso Funzionalità Diagrammi di sequenza Vista temporale dello scambio di messaggi tra le classi Tre passi iterabili 1. Modellazione dei casi d uso Determinare come si ottengono i risultati principali Orientata alle azioni Tecnica: linguaggio naturale 2. Modellazione delle classi (e degli oggetti) Determinare le classi con attributi e relazioni Orientata ai dati Tecnica: schede CRC e poi diagrammi UML di classe 3. Modellazione dinamica Determinare le azioni eseguite da o su ciascuna classe Orientata alle azioni Tecnica: diagrammi di sequenza e interazione 77 Il design del sw nel SWEBOK Software Design 1. Software Design Fundamentals 2. Key Issues in Software Design 3. Software Structure and Architecture General design concepts Concurrency The context of software design Control and handling of events Architectural structures and viewpoints The software design process Distribution of components Architectural styles (macroarchitectural patterns) Enabling techniques Error and exception handline and fault tolerance Design patterns (microarchitectural patterns) Interaction and presentation 4. Software Design Quality Analysis and Evaluation Quality attributes Quality analysis and evaluation techniques 5. Software Design Notations Structural descriptions (static view) Behavior descriptions (dynamic view) Measures Families of programs and frameworks Data persistence 6. Software Design Strategies and Methods General Strategies Function-oriented (structured) design Object-oriented design 78 Riferimenti Capitolo 3 del SWEBOK Software design IEEE Recommended Practice for Software Design Descriptions (IEEE 1016-1998) Booch, Object oriented analysis and design with applications, AW 1993 Wirfs-Brock and Mckean, Object Design: Roles, Responsibilities and Collaborations, AW 2002 Data-structrure centered design Component-based design (CBD) Other methods Figure 1 Breakdown of topics for the Software Design KA 79 80