Corso di Ingegneria del Software - Dipartimento Informatica · Lezione 10 Da Analisi a Progetto 47...

90
Corso di Ingegneria del Software Paolo Bottoni Lezione 10: Dall'analisi al progetto

Transcript of Corso di Ingegneria del Software - Dipartimento Informatica · Lezione 10 Da Analisi a Progetto 47...

Corso di Ingegneria del Software

Paolo Bottoni

Lezione 10: Dall'analisi al progetto

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 11 Da Analisi a Progetto Ingegneria del Software I 9 9

Stereotipi in diagrammi di classe

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 11

Analisi nomi-verbi

11

Lezione 10 Da Analisi a Progetto Ingegneria del Software 12

Schede CRC

12

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 15

Notazione (1)

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 46

Generalizzando: il pattern State

Ingegneria del Software

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 60

Diagramma di sequenza per observer

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 62

Collaborazioni come pattern riusabili

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 11 Da Analisi a Progetto Ingegneria del Software I 87

Notazione

87

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

Lezione 11 Da Analisi a Progetto Ingegneria del Software I 90

Deployment: nodi e artefatti