Corso di Ingegneria del Softwareingsoft1/Lezioni2008-2009/...Corso di Ingegneria del Software Paolo...

Post on 19-Sep-2020

9 views 1 download

Transcript of Corso di Ingegneria del Softwareingsoft1/Lezioni2008-2009/...Corso di Ingegneria del Software Paolo...

Corso di Ingegneria del Software

Paolo Bottoni

Introduzione allo Unified Process

Alcuni lucidi sono tratti dal materiale di supporto a UML2 and the Unified Process, di Arlow e Neustadt

© Clear View Training 2010 v2.6

Obiettivi

• Discutere UP come metodo strutturato

• Presentare fasi, attività, pratiche

• Evidenziare integrazione di diversi metodi

Blocco3ARUPIngegneria del Software 2

3

Metodi strutturati

• Approcci sistematici a sviluppo progetto software

• Documentazione usa insieme modelli grafici

• Modelli possibili

– Modello oggetti

– Modello di interazione

– Modello di transizioni di stato

– Modello strutturale

– Modello flusso di dati

Ingegneria del Software Blocco3ARUP

Blocco3ARUP 4Ingegneria del Software 4

Rational Unified Process

• Derivato da lavoro su UML e processi associati

• Normalmente descritto da 3 prospettive– Prospettiva dinamica: mostra fasi in tempo

– Prospettiva statica: mostra attività processo

– Prospettiva pratiche: suggerisce buone pratiche

• Caratteristiche:– Processo guidato da casi d’uso

– Processo centrato su architettura

– Approccio focalizzato sui rischi

55

Prospettiva dinamica: Fasi RUP

• Inception (Avvio)

– Stabilire caso di business per sistema

• Elaboration

– Comprendere dominio problema e sviluppare e architettura sistema

• Construction

– Progettazione, programmazione e test funzionalità sistema

• Transition

– Stabilire sistema in ambiente di esecuzione

Ingegneria del Software Blocco3ARUP

Blocco3ARUPIngegneria del Software 6

Decisioni e pietre miliari

77

Prospettiva statica

Flusso di lavoro Descrizione

Business modelling Processi di business modellati con casi di business.

Requirements Si identificano attori che interagiscono con sistema e si sviluppano casi d'uso per modellare requisiti di sistema.

Analysis and design Si crea e documenta modello di progetto, usando modelli architetturali, componenti, a oggetti e di sequenza.

Implementation Componenti sistema implementati e strutturati in sotto-sistemi di implementazione. Generazione automatica di codice da modello può accelerare processo.

Test Processo iterativo congiunto a implementazione. Test di sistema segue completamento implementazione.

Deployment Creazione di rilascio prodotto, distribuzione a utenti e installazione in loro ambiente di lavoro.

Configuration and change management

Flusso di lavoro di supporto per gestire cambiamenti sistema.

Project management Flusso di lavoro di supporto per gestire sviluppo sistema.

Environment Rendere disponibili strumenti software appropriati a squadra sviluppo software.

Ingegneria del Software Blocco3ARUP

88

Distribuzione nelle fasi

Ingegneria del Software Blocco3ARUP

99

Contenuto delle iterazioni

• Principio: separation of concerns

• In Inception e Elaboration

– Definire ambito progetto, eliminare rischi critici, creare

architettura di base

– Iterazioni producono raffinamenti successivi

• In Construction

– Iterazioni producono incrementi

– Progetto composto da mini-progetti

• Mini-progetto realizzato in singola iterazione

• Ogni iterazione prevede attività in misura diversa

Ingegneria del Software Blocco3ARUP

10

Inception

Inception Elaboration Construction TransitionRequirements – stabilire caso di business e

ambito. Catturare requisiti fondamentali.

Analysis – stabilire la fattibilità

Design – progettare “proof of concept” o prototipi

tecnici

Implementation – costruire “proof of concept” o

prototipo tecnico

Test – generalmente non applicabilie

Fo

cu

sG

oa

ls

Stabilire fattibilità del progetto – creare “proof of concept”/prototipi tecnici

Creare caso di business

Ambito del sistema – catturare requisiti chiave

Identificare rischi critici

RA

ID

Quantità di lavoro per

le attività principali

Ingegneria del Software Blocco3ARUP

11

Inception - milestone

• Obiettivi ciclo di vita – Condizioni di soddisfazione:

– Ambito sistema definito

– Requisiti chiave sistema catturati.

• Definiti e concordati con stakeholder

– Esiste visione architetturale, schematica

– Valutazione rischi

– Caso di business

– Confermata fattibilità

– Stakeholder d’accordo con obiettivi progetto

Ingegneria del Software Blocco3ARUP

12

Elaboration

Inception Elaboration Construction TransitionRequirements – raffinare ambito del sistema e

requisiti

Analysis – stabilire cosa costruire

Design – creare struttura di base architetturale

stabile

Implementation – costruire la struttura di base

architetturale

Test – provare la struttura di base architetturale

Fo

cu

sG

oa

ls

Creare una struttura di base architetturale eseguibile

Raffinare valutazione dei rischi e definire attributi di qualità (tasso di difetti, etc.)

Catturare casi d’uso fino a 80% dei requisiti funzionali

Creare un piano con dettaglio sufficiente per la fase di costruzione

Formulare un’offerta che includa costi per risorse, tempo, equipaggiamento, personale

R AI

T

D

Ingegneria del Software Blocco3ARUP

13

Elaboration - milestone

• Architettura per ciclo di vita: Condizioni di soddisfazione– Creata base di riferimento architetturale, resistente, robusta

ed eseguibile

– Valutazione rischi aggiornata

– Creato piano di progetto che permetta di formulare offerta realistica

– Caso di business verificato rispetto a piano

– Stakeholder d’accordo su continuare

Ingegneria del Software Blocco3ARUP

14

Construction

Inception Elaboration Construction TransitionRequirements – scoprire requisiti

eventualmente mancanti

Analysis – completare il modello di analisi

Design – completare il modello di progetto

Implementation – costruire la Capacità

Operativa Iniziale

Test – provare la Capacità Operativa Iniziale

Fo

cu

sG

oa

ls

Completare identificazione, descrizione e realizzazione dei casi d’uso

Completare analisi, progetto, implementazione e prova

Mantenere l’integrità dell’architettura di sistema

Revisionare la valutazione del rischio

R A

ITD

Ingegneria del Software Blocco3ARUP

15

Construction - milestone

• Capacità Operativa Iniziale - Condizioni di

soddisfazione:

– Prodotto pronto per beta testing in ambiente

utente

Ingegneria del Software Blocco3ARUP

16

Correggere difetti

Preparare ambiente utente per il nuovo software e adattare il software per operare presso l’utente

Modificare software se emergono problemi non previsti

Creare manuale utente e altra documentazione

Fornire consulenza al cliente

Condurre revisione post-progetto

Transition

Inception Elaboration Construction TransitionRequirements – non applicabile

Analysis – non applicabile

Design – modificare il progetto se emergono

problemi durante beta test

Implementation – adattare il software per il sito

utente. Correggere errori scoperti

Test – eseguire beta test e prova di accettazione

presso l’utente

Fo

cu

sG

oa

ls

DI T

Ingegneria del Software Blocco3ARUP

17

Transition – milestone

• Rilascio prodotto - Condizioni di

soddisfazione:

– Completati beta testing, test di accettazione e

correzione difetti

– Prodotto rilasciato verso comunità utenti

Ingegneria del Software Blocco3ARUP

Take-away per fasi e attività RUP

• Fasi determinate da obiettivi, non da attività

• Attività si ripetono in diverse fasi, in diverse iterazioni

e possono essere svolte concorrentemente

• Iterazioni definite da obiettivi realizzativi, NON DAI

DOCUMENTI DA PRODURRE

• ATTIVITÀ NON SONO SEQUENZIALI

– Ma possono avere dipendenze logiche

Blocco3ARUPIngegneria del Software 18

1919

Buone pratiche RUP

• Sviluppare software iterativamente

• Gestire requisiti

– Casi d'uso e Supplementary Requirement Specification

• Usare architetture basate su componenti

• Modellare software visivamente

• Verificare qualità software

• Controllare cambiamenti software

Ingegneria del Software Blocco3ARUP

20

Modelli e Flussi di lavoro

Ingegneria del Software Blocco3ARUP

21

Notazione dei processi

Ingegneria del Software Blocco3ARUP

2222

Processo guidato da casi d’uso

• Molti tipi di utenti: attori (anche non umani)

• Caso d'uso: sequenza di azioni effettuate da

sistema per produrre risultati di valore per attore

• Modello formato da attori e casi d'uso sistema

Ingegneria del Software Blocco3ARUP

2323

Cattura dei casi d'uso

• Attività di raccolta requisiti

– Modello UC rappresenta requisiti funzionali

• Diagramma UC descrive parte modello e mostra

associazioni fra casi e attori

• Attori definiscono ambiente sistema

• Flussi di eventi descrivono comportamenti desiderati

• Requisiti non funzionali associabili a UC

– Performance, disponibilità, accuratezza

Ingegneria del Software Blocco3ARUP

24

Flusso di lavoro di requisiti: ruoli

Ingegneria del Software Blocco3ARUP

2525

Flusso di lavoro di requisiti: Artefatti

Ingegneria del Software Blocco3ARUP

26

Completamento analisi requisiti

• Estensione flusso di lavoro base in UP con

elicitazione e tracciabilità requisiti

find functional requirements

Requirements Engineer find non-functional requirements

trace requirements to use cases

Architect

prioritise requirements

Ingegneria del Software Blocco3ARUP

2727

Evoluzione del modello dei casi d'uso

• Da modello casi d'uso a modello analisi

• Da modello analisi a modello progetto

• Classificatori e realizzazioni casi d'uso

• Classificatori hanno strutture e operazioni,

descritti da statechart

Ingegneria del Software Blocco3ARUP

2828

Modello di analisi

• Descrizione dettagliata requisiti

• Raffinamento casi d'uso:

– collaborazioni fra classificatori concettuali

• Permette creazione di architettura

• Ha carattere temporaneo (prime iterazioni)

• Per grandi sistemi mantenuto per tutto progetto

Ingegneria del Software Blocco3ARUP

2929

Flusso di lavoro di analisi: ruoli

Ingegneria del Software Blocco3ARUP

3030

Flusso di lavoro di analisi: artefatti

Ingegneria del Software Blocco3ARUP

ATTENZIONE: dipendenza logica, non temporale

3131

Costruzione modello di analisi

• Procedimento per ogni UC

– Integrazione analisi nomi-verbi

• Responsabilità UC date a classi

– Classi con responsabilità in diversi UC

– Ogni classe deve soddisfare ogni ruolo di

collaborazione definito

– (Possibile utilizzo schede CRC)

• Realizzazione UC

– Collaborazione fra elementi

Ingegneria del Software Blocco3ARUP

Analisi nomi verbi

32Ingegneria del Software Blocco3ARUP

Esempi di schede CRC

Blocco3ARUPIngegneria del Software 33

3434

Modello di progetto

• Modello gerarchico

– Esistono relazioni che attraversano gerarchia

• Realizzazioni UC tracciabili a realizzazioni in

modello di analisi

• Realizzazioni UC come stereotipi di collaborazioni

• Riferimento per implementazione

Ingegneria del Software Blocco3ARUP

3535

Flusso di lavoro di progetto: ruoli

Ingegneria del Software Blocco3ARUP

3636

Flusso di lavoro di progetto: artefatti

Ingegneria del Software Blocco3ARUP

ATTENZIONE: dipendenza logica, non temporale

3737

Costruzione modello di progetto

• Classi e realizzazioni UC progettate per

sfruttare prodotti e tecnologie utilizzabili

• Raggruppamento classi di progetto in sotto-

sistemi e definizione interfacce fra sotto-sistemi

Ingegneria del Software Blocco3ARUP

3838

Modello di dispiegamento

• Definizione organizzazione fisica sistema come

rete di nodi computazionali

• Verifica implementabilità UC per mezzo di

componenti eseguiti su nodi definiti

Ingegneria del Software Blocco3ARUP

3939

Flusso di implementazione

• Pianificare integrazioni di sistema per ogni

iterazione (incrementale)

• Distribuire sistema, componenti eseguibili su

nodi in modello di dispiegamento

• Implementare classi e sottosistemi di progetto

– Classi file di codice sorgente

• Fare test unitari su componenti

Ingegneria del Software Blocco3ARUP

4040

Modello di implementazione

• Classi progettate implementate come insiemi di file

componenti (codice sorgente)

• Classi compilate e collegate per produrre eseguibili

• Ordine implementazione/integrazione basato su UC

– Importanza della prioritizzazione

Ingegneria del Software Blocco3ARUP

Ingegneria del Software 4141

Implementazione nelle fasi

• Fuoco di fase di costruzione

• Svolta anche durante elaborazione per

creare base architetturale

• Durante transizione per gestire difetti

riscontrati durante beta test

• Aspetti minimi in inception relativi a prototipi

di interfaccia

Blocco3ARUP

4242

Flusso di test

• Verifica che sistema implementi funzionalità

descritte in UC e soddisfi requisiti di sistema

• Modello di test formato da casi di test

– Collezione di ingressi, condizioni di esecuzione, risultati

– Tracciabilità a casi d'uso

• Black box: test definiti da casi d'uso

• White box: test definiti da realizzazioni

Ingegneria del Software Blocco3ARUP

Flusso di test: ruoli

Ingegneria del Software 43Blocco3ARUP

Take-away su flussi di lavoro

• Ogni flusso porta a elaborazione di uno o più

modelli, in maniera iterativa e incrementale

• Modelli in continua evoluzione

• Sviluppo modello porta a rivedere altri modelli

• Analisi, progetto e implementazione possono

essere interfogliati per parti specifiche

• NON CORRISPONDONO A ANALISI, PROGETTO

E IMPLEMENTAZIONE WATERFALL

Blocco3ARUPIngegneria del Software 44

4545

Processo centrato sull'architettura

• Architettura software comporta decisioni su:

– Organizzazione sistema

– Elementi strutturali, interfacce, comportamento in

collaborazioni

– Composizione elementi in sottosistemi più grandi

– Stile architetturale

• struttura alto livello, meccanismi chiave

• Centrata su come, non su cosa

– Progetto architetturale e progetto funzionale

Ingegneria del Software Blocco3ARUP

4646

Principi architetturali

• Principio: modularità

• Esempio di Ericcson AXE– Sistema di switching di telecomunicazioni

– 1970/oggi, 145 paesi, 180M linee, > 6000 scambi

• Modularità funzionale: blocchi di classi in base a funzioni

• Separazione progetto interfacce/sottosistemi di servizio

• Proiezione sottosistemi su componenti implementazione

• Basso accoppiamento fra sottosistemi: segnali

Ingegneria del Software Blocco3ARUP

4747

Influenze sull'architettura

• Casi d'uso significativi per architettura (10-15%)

• Vincoli e facilitatori

– Software disponibile (di sistema, legacy, middleware),

standard e politiche, requisiti non funzionali, distribuzione

• Esperienza

– Architetture precedenti, pattern architetturali

Ingegneria del Software Blocco3ARUP

4848

Sviluppo dell'architettura

• Iterativo in fase di elaborazione

– Decisione su disegno ad alto livello

– Aspetti generali dipendenti da dominio, scelta nodi,

selezione di vincoli e abilitatori

– Aspetti specifici applicazione

– Funzionalità completa solo quando architettura stabile

Ingegneria del Software Blocco3ARUP

4949

Viste architetturali

• Per modello di progetto

– Sottosistemi principali, interfacce, classi principali,

classi attive, cicli di vita

• Per modello di dispiegamento

– Struttura fisica in termini di nodi connessi

– Assegnazione di componenti eseguibili a nodi

• Per modello di implementazione

– Distinzione responsabilità, e.g. client-server

Ingegneria del Software Blocco3ARUP

5050

Processo iterativo e incrementale

• Sequenza di pietre miliari

• Iterazioni e incrementi per ogni fase

• Criteri essenziali

– Inception - adeguatezza (viability)

– Elaboration - realizzabilità

– Construction - operazionalità iniziale

– Transition - operazionalità finale

Ingegneria del Software Blocco3ARUP

5151

Sviluppo a piccoli passi

• Principio: incrementalità

• Pianificazione ridotta

• Specifica, progetto e implementazione ridotti

• Integrazione, test e esecuzione ridotti

• Se soddisfatti, prossimo passo

• Elaborazione feedback fra passo e successivo

Ingegneria del Software Blocco3ARUP

5252

Approccio focalizzato sui rischi

• Rischi determinano iterazioni e priorità

• Valutazione nuove tecnologie

• Soddisfazione requisiti

• Robustezza architettura

• Iterazioni esplorano rischi in ogni fase

Ingegneria del Software Blocco3ARUP

5353

Rischi relativi alle tecnologie

• Distribuzione processi su nodi, sincronizzazione

• Casi d'uso possono dipendere da tecniche

computazionali non ben sviluppate

Ingegneria del Software Blocco3ARUP

5454

Rischi relativi all'architettura

• UC selezionati non definiscono struttura sotto-

sistemi adeguata

• Framework per riuso non adeguati

• Nuove versioni software di qualità insufficiente

Ingegneria del Software Blocco3ARUP

5555

Rischi relativi a soddisfazione utente

• Inadeguatezza estrazione requisiti

• Valutazione importanza funzioni

Ingegneria del Software Blocco3ARUP