Corso di Ingegneria del Software - Dipartimento Informatica · Lezione 10 Da Analisi a Progetto 47...
Transcript of Corso di Ingegneria del Software - Dipartimento Informatica · Lezione 10 Da Analisi a Progetto 47...
Flusso di lavoro di analisi: ruoli e
artefatti
Lezione 10 Da Analisi a Progetto Ingegneria del Software 2 Lezione 10 Da Analisi a Progetto 2 Ingegneria del Software
Lezione 11 Da Analisi a Progetto Ingegneria del Software 3 3
Da casi d'uso ad analisi
• Linguaggio cliente
• Vista esterna
• Struttura a use-case
• Contratto tra cliente e
sviluppatori
• Non formalmente corretto
• Funzionalità
• Casi d'uso da analizzare
ulteriormente
• Linguaggio sviluppatore
• Vista interna
• Struttura stereotipi e package
• Usato da sviluppatori
• Formalmente corretto
• Realizzazioni
• Deriva da casi d'uso
Casi d'uso Analisi
Lezione 11 Da Analisi a Progetto Ingegneria del Software 4 4
Stereotipi per classi d'analisi
<<entity>> <<boundary>> <<control>>
Lezione 10 Da Analisi a Progetto Ingegneria del Software 5 5
Stereotipo <<entity>>
• Informazione lunga durata, spesso persistente
• Dati e comportamenti per fenomeni o concetti
• Derivabili da classi di modelli di business o di
dominio, ma più orientate a sistema
Lezione 10 Da Analisi a Progetto Ingegneria del Software 6 6
Stereotipo <<boundary>>
• Interazione tra sistema e attori (umani/dispositivi)
• Isola cambiamenti interfacce utenti, comunicazione
• Spesso astrazione elemento software di interfaccia
• Non richiede di descrivere realizzazione fisica
• Corrispondenza con attori
Lezione 10 Da Analisi a Progetto Ingegneria del Software 7 7
Stereotipo <<control>>
• Coordinamento, sequenza, transazioni e controllo
per altri oggetti
• Logica di business non legata a specifiche entità
• Dinamica sistema
• Associabili a casi d'uso (controllo flusso eventi)
Lezione 10 Da Analisi a Progetto Ingegneria del Software 8 8
Identificazione delle classi (analisi)
• Classi entità definite da descrizione casi
d'uso e modello dominio
• Classi boundary per ogni attore
• Classi entity per ogni entità
• Classi di controllo definite da caso d'uso
Lezione 10 Da Analisi a Progetto Ingegneria del Software 10 10
Consigli empirici
• Usare sempre linguaggio di business
• Modelli devono “raccontare una storia”
• Mantenersi a livello generale
• Distinguere domini di problema e soluzione
• Minimizzare accoppiamento
• Introdurre ereditarietà solo se gerarchie in dominio
• Valutare utilità per stakeholder
Lezione 10 Da Analisi a Progetto Ingegneria del Software 13 13
Package
• Contenitore e possessore per elementi di modello
• Utilizzi – Raggruppa elementi in relazione semantica
– Definisce confine semantico in modello
– Fornisce elementi a gestione configurazione
– Fornisce unità per sviluppo parallelo (design)
– Fornisce namespace incapsulato con unicità di nomi
• Ogni elemento appartiene a uno e un solo package
Lezione 10 Da Analisi a Progetto Ingegneria del Software 14
Package di analisi
• Contengono
– Casi d'uso
– Classi di analisi
– Realizzazioni di casi d'uso
Lezione 10 Da Analisi a Progetto Ingegneria del Software 16
Notazione (2)
Editor
+ Controller + DiagramElements + DomainElements + GraphicsCore - MotifCore - WindowsCore
Editor:Controller
Lezione 10 Da Analisi a Progetto Ingegneria del Software 17
Analisi architetturale
Organizzazione in package coesi e stratificazione
Sales Products
AccountManagement InventoryManagement
Lezione 10 Da Analisi a Progetto Ingegneria del Software 18
Identificazione package d'analisi
• Raggruppare cluster di classi coesi
• Trovare gerarchie di ereditarietà
• Casi d'uso per processo o attore possono
indicare package
• Alta coesione dentro package
• Basso accoppiamento fra package
• Evitare package annidati
Lezione 10 Da Analisi a Progetto Ingegneria del Software 19 19
Dipendenze cicliche
• Fondere in unico package
• Fattorizzare elementi comuni in nuovo package
• Attenzione a orientamento associazioni!
Lezione 10 Da Analisi a Progetto Ingegneria del Software 20 20
Elementi della realizzazione
• Diagrammi di classi di analisi – Classi di analisi che interagiscono per realizzare caso d’uso
• Diagrammi di interazione – Collaborazioni e interazioni tra istanze che lo realizzano
• istantanee esecuzione
• Requisiti speciali – Identificazione nuovi requisiti specifici a caso d’uso
• Raffinamento casi d’uso – Si può dovere aggiornare caso d’uso
Lezione 10 Da Analisi a Progetto Ingegneria del Software 21
Stereotipi in diagrammi di interazione
21
Lezione 10 Da Analisi a Progetto 22 22
Obiettivi flusso di lavoro di progetto
• Comprensione di vincoli non-funzionali e tecnologici
• Requisiti di sottosistemi, interfacce, classi
• Decomposizione lavoro implementativo
• Interfacce fra sottosistemi
• Astrazione implementazione
Ingegneria del Software
Lezione 10 Da Analisi a Progetto Ingegneria del Software 23 23
Caratteristiche del design
• Specifica completa implementazione di funzionalità.
• Dominio del problema e Dominio della soluzione
– Requsiti: da dominio problema
– Analisi: esplora dominio da punto di vista stakeholder.
– Progetto: considera soluzioni tecniche in dominio
soluzione per fornire modello implementabile di sistema.
Lezione 10 Da Analisi a Progetto Ingegneria del Software 24 24
Flusso di lavoro di Design
• Principalmente fine Elaboration e inizio Construction
• Aspetti comuni ad Analysis, svolgimento parallelo.
• UP prevede unico team che svolge fasi da
Requirements ad Analysis a Design
• Fuoco su obiettivo piuttosto che su compito.
Lezione 10 Da Analisi a Progetto Ingegneria del Software 25 25
Flusso di lavoro di progetto: ruoli e artefatti
da Arlow, Neustadt, UML and the Unified Process, Addison Wesley, 2002
Lezione 10 Da Analisi a Progetto Ingegneria del Software 26
Modelli di Analisi e Design
• Concettuale
• Generico (per vari design)
• Stereotipi concettuali
• Meno formale e costoso
• Pochi strati
• Dinamico (comunicazione)
• Non legato a tool
• Non richiesto mantenerlo
• Definisce struttura, anche architetturale
• Fisico
• Specifico applicazione
• Stereotipi linguaggio
• Più formale e costoso
• Molti strati
• Dinamico (sequence)
• Round-trip con implementation
• Mantenuto
• Dà forma a sistema, mantenendo struttura
Lezione 10 Da Analisi a Progetto Ingegneria del Software 27
Tracciabilità
<<analysisModel>>
Model <<analysisSystem>
System
<<designModel>>
Model <<designSystem>>
System
<<trace>> <<trace>>
Lezione 10 Da Analisi a Progetto Ingegneria del Software 28
Conseguenze
• Più enfasi su interfacce
– forte ruolo architetturale in progetto
• Package di analisi decomponibili in più
sottosistemi di progetto
– e.g. sottosistemi corrispondenti a diversi
componenti
• Quanti modelli?
Lezione 10 Da Analisi a Progetto Ingegneria del Software 29
Scelte
• Raffinare modello di analisi in progetto – Unico modello di progetto, si perde modello di analisi
• Raffinare modello di analisi in progetto, strumento ricostruisce vista di analisi – Modello di analisi ricostruito non garantito accettabile
• Congelare modello di analisi, copiarlo e raffinarlo – Due modelli, non coerenti
• Due modelli separati – Mantenimento coerenza costoso
Lezione 10 Da Analisi a Progetto Ingegneria del Software 30
Vantaggi di mantenere modello di analisi
• Poche classi, più comprensibile
• Utile per
– spiegare progetto a nuove persone
– comprendere sistema successivamente
– soddisfazione requisiti e tracciabilità
– pianificare mantenimento e miglioramenti
– comprendere architettura logica
– affidare costruzione esternamente
Lezione 10 Da Analisi a Progetto Ingegneria del Software 31
Casi in cui non serve
• Sistemi piccoli (meno di 200 classi di
Design), ancora comprensibili
• Sistemi non strategici
• Sistemi con vita breve
– Ma molti sistemi vivono più di quanto atteso!
Lezione 10 Da Analisi a Progetto Ingegneria del Software 32
Componenti del modello di progetto
• Analoghe a modello di analisi, ma più
formate e con dettagli di implementazione
– sottosistemi di progetto
– classi di progetto
– interfacce
– realizzazioni di casi di uso - progetto
– diagramma di deployment
Lezione 10 Da Analisi a Progetto 33
Sottosistemi
• Alta coesione, basso accoppiamento
• Separazione di responsabilità
• Strati di applicazione tracciabili a package o classi
di analisi
• Wrapper per riuso di prodotti (middleware o
sistema) o sistemi legacy (a livello di applicazione)
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 34
Sottosistemi di servizio
• Localizzano servizi, facilitano cambiamento.
• Identificati da package di analisi.
• Possono fornire servizi in termini di interfacce
• Soddisfano requisiti non-funzionali
• Decomponibili per dispiegamento
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 35
Identificazione di classi attive
• Analisi requisiti di concorrenza
– Performance, throughput, disponibilità
– Distribuzione su nodi diversi (anche per gestione
comunicazione fra nodi)
– Analisi problemi specifici (e.g. deadlock, liveness,
riconfigurazione)
• Definizione ciclo di vita
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 36
Meccanismi generici
• Persistenza
• Distribuzione trasparente di oggetti
• Aspetti di sicurezza
• Individuazione e recupero di errori
• Gestione transazioni
– Modellabili come collaborazioni/protocolli
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 37
Origini delle classi di progetto
• Dominio del problema
– raffinamento classi di analisi
• aggiunta di dettagli di implementazione
• separazione di classe di analisi in classi diverse
• Dominio della soluzione
– biblioteche di classi di utilità e componenti riusabili
– middleware, GUI framework
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 38
Classi di progetto
• Completare insieme attributi
• Trasformare operazioni in insieme completo di metodi
BankAccount
name number balance
deposit() withdraw() calculateInterest()
BankAccount
-name: String -number: String -balance: double = 0
+BankAccount(name: String, number: String) +deposit(m:double):void +withdraw(m:double):boolean +calculateInterest():double +getName():String +setName(n:String):void +getBalance():double +BankAccount(name: String, number: String, m:double)
<<trace>>
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 39
Classi di design corrette
• Considerare punto di vista clienti classi
• Classi devono essere
– Complete e sufficienti
– Primitive
– Alta coesione
– Basso accoppiamento
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 40
Completezza e sufficienza
• Metodi pubblici definiscono contratto
• Nomi significativi: creano attese da soddisfare
• Metodi focalizzati su scopo classe.
• Non aggiungere caratteristiche
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 41
Primitive
• Offrire servizi primitivi e atomici
• Non avere metodi diversi per stessa cosa
• Primitività rilassabile solo quando vantaggio
prestazioni significativo
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 42
Alta coesione
• Realizzazione di singolo concetto
• Metodi focalizzati su scopo della classe
• Se classe ha diverse responsabilità, creare
classi “helper” a cui delegare
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 43
Basso accoppiamento
• Associazioni fra classi derivate da responsabilità
• Associare classi solo se vero collegamento semantico
• Fonti per associazioni:
– modello di analisi
– vincoli di implementazione.
• Accoppiamento entro package ammissibile
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 44
Ereditarietà in progetto
• In analisi ammessa solo per IS_A
• In progetto per riusare codice, ma:
– forte accoppiamento
– bassa incapsulazione, cambiamenti si propagano
– non flessibile, gerarchia rimane fissa
• aggregazione e composizione, alternative flessibili
Ingegneria del Software
Lezione 10 Da Analisi a Progetto Ingegneria del Software 45
Esempio
Employee
Manager Programmer
john:Programmer
<<instance>>
Employee
Manager Programmer
john:Employee
<<instance>>
Job
:Manager :Programmer
Lezione 10 Da Analisi a Progetto 47
Realizzazione di interfacce
• Ereditarietà comprende due aspetti
– interfaccia: metodi pubblici classe di base
– implementazione: attributi, associazioni, metodi privati e
protetti classe di base
• Realizzazione di interfaccia
– interfaccia: insieme di metodi pubblici, no implementazione
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 48
Interfaccia
• Specifica e dà nome a insieme di operazioni
• Separa specifica di funzionalità da sua
implementazione da parte di classificatore
• Definisce contratto implementato (pubblicamente)
da classificatore (classe, sottosistema, componente)
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 49
Struttura di interfaccia
• Deve avere
– segnatura completa operazioni
– semantica operazioni (testo,pseudocode)
– (opzionali) stereotipi, vincoli, tag
• Non può avere
– istanze
– implementazioni di operazioni
• Può dichiarare proprietà, ma realizzazione
non richiede implementazione strutturale
Ingegneria del Software
Lezione 11 Da Analisi a Progetto 50
Sintassi grafica
<<interface>> Activate
activate() deactivate()
Sensor
activate() deactivate()
Zone
activate() deactivate()
Sensor
activate() deactivate()
Zone
activate() deactivate()
Activate
Ingegneria del Software
Lezione 11 Da Analisi a Progetto 51
Disaccoppiamento da classi
specifiche
Printer
Customer
<<interface>> Print
print(g:Graphics):void
Order <<uses>>
Ingegneria del Software
Lezione 11 Da Analisi a Progetto 52
Interfacce fra sottosistemi
<<subsystem>>
GUI
<<subsystem>>
BusinessLogic
CustomerManager AccountManager
Ingegneria del Software
Lezione 11 Da Analisi a Progetto 53
Aggregazioni di interfacce
Activate
IdCard
activate() deactivate()
Zone
activate() deactivate()
Alarm
activate() deactivate()
Sensor
activate() deactivate()
1
*
Ingegneria del Software
Lezione 10 Da Analisi a Progetto 54
Individuare le interfacce
• Discutere associazioni
– vanno a singola classe o devono essere più flessibili?
• Discutere invio messaggi
– vanno a oggetti di singola classe?
• Fattorizzare gruppi di operazioni riusabili
• Fattorizzare insiemi di operazioni comuni a più classi
• Identificare classi che giocano stesso ruolo
• Identificare possibili estensioni
Ingegneria del Software
Lezione 10 Da Analisi a Progetto Ingegneria del Software 55
Relazioni fra modelli di analisi e di progetto
Analysis class
Design class
<<interface>> Interface
<<trace>>
1
0..*
0..*
Use case realization - analysis
Use case realization - design
<<trace>>
1 1
Lezione 10 Da Analisi a Progetto Ingegneria del Software 56
• Descrivono struttura di ruoli.
– Collettivamente ottengono funzionalità desiderata
• Scopo primario spiegare funzionamento sistema
• Sopprime dettagli identità o classe partecipanti
• Rappresentata da tipo classificatore
– Entità cooperanti come ruoli ricoperti da istanze.
– Connettori definiscono cammini di comunicazione
• Entità cooperanti giocano ruoli e comunicano
– Entità proprietarie di collaborazioni
– Vista di insieme di classificatori.
– Caratteristiche richieste per svolgere ruolo
Collaborazioni
Lezione 10 Da Analisi a Progetto Ingegneria del Software 57
• Relazioni fra ruoli rilevanti mostrate come connettori
• Ruoli ricoperti da istanze durante interazione.
• Ruoli di collaborazione definiscono uso istanze
– Specifica proprietà istanze per partecipare collaborazione
• Tipo ruolo definisce insieme caratteristiche istanze
• Connettori tra ruoli specificano cammini fra istanze
Collaborazioni
Lezione 10 Da Analisi a Progetto Ingegneria del Software 58
• Collaborazione specializzata da altre collaborazioni
• Se ruolo esteso, tipo ruolo in collaborazione
specializzata conforme a tipo ruolo in generale
• Specializzazione tipi di ruolo non implica
specializzazione classificatori che realizzano ruolo
– Sufficiente conformità a vincoli per ruoli
• Collaborazione non direttamente istanziabile
– Realizzata da cooperazione istanze che ricoprono ruoli
Specializzazione di collaborazioni
Lezione 11 Da Analisi a Progetto Ingegneria del Software I 59
Esempio
Lezione 11 Da Analisi a Progetto
Lezione 10 Da Analisi a Progetto Ingegneria del Software 61
• Uso: spiegare relazioni tra proprietà classificatore
• Pattern descritto da collaborazione in contesto
– Entità specifiche contesto legate a ruoli collaborazione
• Caratteristiche strutturali
• Specifiche di istanze
• Ruoli in collaborazioni contenenti quella usata
• Più occorrenze collaborazione in classificatore
– Ognuna con diversi insiemi di ruoli e connettori
– Stesso ruolo può essere coinvolto in occorrenze multiple
– Dipendenze fra caratteristiche tipo collaborazione
(fornitore) e caratteristiche classificatore (cliente)
Uso di collaborazione
Lezione 10 Da Analisi a Progetto Ingegneria del Software 63
Raffinamento modello di analisi
• Associazioni aggregazioni o composizioni
• Implementazione classi di associazione
• Gestione molteplicità e direzionalità: – associazioni uno a molti
– associazioni molti a molti
– associazioni bidirezionali
Lezione 10 Da Analisi a Progetto Ingegneria del Software 64 64
Implementazione di parte_di
• Realizzate attraverso attributi
• Modellazione come attributi per tipi primitivi,
di utilità, o comunque non interessanti da
modellare in sé
• Altrimenti realizzazioni complesse
Lezione 10 Da Analisi a Progetto Ingegneria del Software 65 65
Raffinamento
• Aggiungere molteplicità e nomi di ruolo se
assenti in analisi
• Stabilire ruoli intero e parte
• Se molteplicità intero == 1
– possibile uso composizione
– altrimenti usare aggregazione
• Navigabilità unidirezionale
– da intero a parte
Lezione 10 Da Analisi a Progetto Ingegneria del Software 66 66
Gestione molteplicità
• Associazioni 1-a-1 – composizione, fusione in singolo classe, attributo se
parte non importante
• Associazioni n-a-1 – parte condivisa, non composizione
– se non ci sono cicli, usare aggregazione
• Associazioni 1-a-n – collezione di parti, supporto nativo, o classi collezione
Lezione 10 Da Analisi a Progetto Ingegneria del Software 67 67
Collezioni
• Hanno metodi:
– add(o: Object):Boolean
– remove(o: Object):Boolean
– Object find(d:Descriptor)
– Object next()
– Boolean hasNext()
Lezione 10 Da Analisi a Progetto Ingegneria del Software 68 68
Tre strategie
• Modellazione esplicita classe collezione
• Specificare implementazione a CASE
• Specificare semantica collezione, ma non
implementazione
A Vector B 1 * 1 1
A {Vector}* 1
B
A {ordered}* 1
B
Lezione 10 Da Analisi a Progetto Ingegneria del Software 69 69
Proprietà semantiche collezioni
• In UML
– {ordered}, {unordered}
• Definite da utente (esempi)
– {sorted} secondo qualche chiave
– {indexed} chiave numerica
– {set} duplicati non ammessi
– {lifo} organizzazione a stack
– {queue} organizzazione a coda
Lezione 10 Da Analisi a Progetto Ingegneria del Software 70 70
Relazioni reificate
• Non supportate direttamente da nessun
linguaggio (per ora)
– associazioni m-a-n
– associazioni bidirezionali
– association classes
Lezione 10 Da Analisi a Progetto Ingegneria del Software 71 71
Associazioni m-a-n
• Realizzate con aggregazione, decisione su quale
capo rappresenta intero
Task Resource * *
Resource-centric Task Resource * *
Allocation 1 1
Task-centric Resource Task * *
Allocation 1 1
Allocation-centric Resource Task
* * Allocation
1 1
Lezione 10 Da Analisi a Progetto Ingegneria del Software 72 72
Associazioni bidirezionali
Usate per modellare callback
A B 1 *
A B 1 *
1 *
<<trace>> <<trace>>
Intero passa se stesso come parametro a metodo parte, o parte crea istanza intero in suo metodo
A B 1 *
1 *
Lezione 10 Da Analisi a Progetto Ingegneria del Software 73 73
Classi di associazione
Company Person
Job
salary:double
* *
Company Person
Job
salary:double 1
* 1
*
{una persona può avere solo un lavoro con una compagnia}
Lezione 10 Da Analisi a Progetto Ingegneria del Software 74 74
Casi d’uso dall’analisi
• Raffinamento
– Diagrammi di interazione di progetto
– Diagrammi di classi
• Fuoco sul come
– Scopo esplicativo
– Modellazione esaustiva solo per generazione
automatica di codice, rara
Lezione 10 Da Analisi a Progetto Ingegneria del Software 75 75
Interazioni con sottosistemi
• Sottosistemi come black box
• Forma di descrittore per diagrammi di interazione
Sales Agent
<<subsystem>> :Customer
CustomerManager::getCustomerDetails(cid)
Lezione 10 Da Analisi a Progetto Ingegneria del Software 76 76
Nuovi diagrammi
• Illustrazione di questioni tecniche da Progetto
• Diagrammi che illustrano meccanismi specifici,
possono riguardare diversi casi d’uso
– e.g. persistenza, distribuzione, transazioni
Lezione 10 Da Analisi a Progetto Ingegneria del Software 77 77
Modello di implementazione
• Implementazione di elementi modello di progetto
in termini di componenti
• Organizzazione componenti secondo meccanismi
di strutturazione e modularizzazione
Lezione 10 Da Analisi a Progetto Ingegneria del Software 78 78
Dipendenza dal design
• Modello di implementazione in corrispondenza
<<trace>> 1 a 1 con modello di progetto
• Vista di implementazione su modello di progetto
• Fa parte modello di progetto
Lezione 10 Da Analisi a Progetto Ingegneria del Software 79 79
Artefatti prodotti
• Piano di integrazione – Sequenza di build (versione eseguibile di sistema) per iterazione
• Funzionalità da costruire per ogni build
• Parti modello di implementazione influenzate da build
• Diagramma di componenti – Dipendenze fra componenti software che implementano sistema
• Diagramma di dispiegamento – Nodi fisici su cui porre software e dipendenze fra i nodi
Lezione 10 Da Analisi a Progetto Ingegneria del Software 80 80
Build
• Build dovrebbe aggiungere funzionalità a precedente
implementando casi d’uso e/o scenari completi
• Non includere troppe componenti nuove o raffinate
• Deve essere basato sul build precedente
• Partire da strati bassi ed espandersi verso strati generali
e specifici di applicazione
Lezione 10 Da Analisi a Progetto Ingegneria del Software 81
Componenti
• Parte modulare di sistema.
– Incapsula contenuto
– Manifestazione rimpiazzabile entro ambiente
• Definisce comportamento in termini di interfacce
– Usabile come tipo
– Sostituibilità solo se tipi conformi
• Unità di riuso
• Manifestato in artefatti
– Disposti in ambiente esecuzione
81
Esempi: • File sorgente • Sottosistemi di implementazione • Controlli ActiveX • JavaBeans • Enterprise JavaBeans • Java servlets • Java Server Pages
Lezione 10 Da Analisi a Progetto Ingegneria del Software 82 82
Stereotipi di artefatti
• <<executable>>: programma eseguibile su nodo
• <<file>>: contiene codice sorgente o dati
• <<library>>: statica o dinamica
• <<table>>: tabella di base di dati
• <<document>>: documento
• <<subsystem>>: unità in decomposizione gerarchica
Lezione 10 Da Analisi a Progetto Ingegneria del Software 83
Sottosistemi
• Componenti con stereotipo <<subsystem>>
• Si usano in Design e Implementation
• Contengono:
– classi di progetto e interfacce
– realizzazioni di casi d’uso
– altri sottosistemi
– elementi di specifica (e.g. casi d’uso)
• Usati per: – separare questioni relative a progetto
– rappresentare componenti a grana grossa
– racchiudere sistemi legacy
Lezione 10 Da Analisi a Progetto Ingegneria del Software 84
Costruzione di sottosistemi
• Suddivisione di package di analisi
• Altri sottosistemi relativi a dominio soluzione
– classi di accesso a basi di dati
– classi di comunicazione
• Dipendenze fra sottosistemi
Lezione 10 Da Analisi a Progetto Ingegneria del Software 85
Stratificazione
<<subsystem>>
GUI
<<subsystem>>
Customer
<<subsystem>>
Order
<<subsystem>>
Product
<<subsystem>>
Accounts
<<subsystem>>
javax.swing
<<subsystem>>
java.sql <<subsystem>>
java.util
{global}
Order Manager
Customer Manager
Product Manager
Account Manager
pre
senta
tion
busin
ess logic
utility
dom
ain
serv
ices
Lezione 10 Da Analisi a Progetto Ingegneria del Software 86
Connettori
• Estensione da classi strutturate
– Aggiungono contratti e notazione specifica
• delegation lega contratto a realizzazione
• assembly lega parti in cui alcune forniscono
e altre usano servizi
86
Lezione 10 Da Analisi a Progetto Ingegneria del Software 88 88
Diagrammi di deployment
• Hardware fisico su cui eseguire e distribuire software.
• Forma di descrittore contiene – Nodi: tipi di hardware
– Componenti: tipi di software
– Relazioni fra nodi
• Forma di istanza: – Istanze di nodi: specifici elementi hardware
– Istanze di software: copie specifiche
– Relazioni fra istanze di nodi
Lezione 10 Da Analisi a Progetto Ingegneria del Software 89 89
Creazione dei diagrammi
• Prima versione creata durante progettazione.
• In genere prima forma di descrittore.
• Raffinata man mano che si conoscono
dettagli su sito di installazione