Sei sulla pagina 1di 173

Universit degli Studi di Roma La Sapienza Facolt di Scienze Matematiche Fisiche e Naturali Corso di Laurea Quinquennale in In ormatica

IngegnerIa del Software 1


Rielaborazione del corso tenuto dal professor Bottoni

Autore: Andrea Saporito Vers.: 1.2

Indice
Introduzione..........................................................................................................................................5 PARTE PRI A....................................................................................................................................! Tecnolo"ia ad o""etti........................................................................................................................... # $os%& un o""etto'............................................................................................................................. # $lassi ed istanze...............................................................................................................................# $o(e collaborano "li o""etti'......................................................................................................... # $o(e "li o""etti si identificano tra di loro'.................................................................................. 1) $lasse............................................................................................................................................. 1) Attributi..................................................................................................................................... 1) *perazioni................................................................................................................................. 11 Associazione.................................................................................................................................. 11 $lasse di associazione............................................................................................................... 12 A""re"azione e $o(posizione...................................................................................................... 12 +eneralizzazione............................................................................................................................12 Poli(orfis(o.............................................................................................................................1, Ereditariet-................................................................................................................................ 1, $lasse astratta............................................................................................................................1, *""etto $lasse............................................................................................................................... 1, PARTE SE$*./A............................................................................................................................15 In"e"neria del Soft0are...................................................................................................................... 1! Prodotto..........................................................................................................................................1! I (iti.......................................................................................................................................... 11 iti del (ana"e(ent............................................................................................................11 iti della clientela................................................................................................................1# iti del pro"ra((atore........................................................................................................1# Processo......................................................................................................................................... 2) odelli di processo................................................................................................................... 22 odello se2uenziale lineare................................................................................................. 2, odello del Protot3pin".......................................................................................................2, odello RA/....................................................................................................................... 24 odello Incre(entale...........................................................................................................25 odello a spirale.................................................................................................................. 25 odello a spirale 5I.5I.................................................................................................. 26 odello ad asse(bla""io di co(ponenti............................................................................. 2! odello dello s7iluppo concorrente.....................................................................................2! Altri (odelli......................................................................................................................... 21 Pro"etto.......................................................................................................................................... 2# Persone...................................................................................................................................... ,) Prodotto..................................................................................................................................... ,, Processo.................................................................................................................................... ,4 Il principio 555588........................................................................................................... ,4 PARTE TER9A..................................................................................................................................,5 etric:e..............................................................................................................................................,! etric:e di processo...................................................................................................................... ,! etric:e di pro"etto.......................................................................................................................,1 etric:e di(ensionali................................................................................................................... ,# etric:e basate sulle funzioni....................................................................................................... ,# Pa"ina 1

;eature Points............................................................................................................................41 *b<ect Points............................................................................................................................. 41 odello $*$* *....................................................................................................................... 42 etric:e per la 2ualit-................................................................................................................... 45 Efficienza di ri(ozione dei difetti.............................................................................................46 Inte"razione delle (etric:e nel processo soft0are........................................................................ 4! Introdurre le (etric:e................................................................................................................4! +aranzia di 2ualit- del soft0are......................................................................................................... 4# $os=& la 2ualit-'.............................................................................................................................4# >a "aranzia di 2ualit- del soft0are................................................................................................ 5) >e re7isioni del soft0are................................................................................................................5) >e re7isioni tecnic:e for(ali......................................................................................................... 51 >inee "uida per le re7isioni....................................................................................................... 52 Tecnic:e per la re7isione...........................................................................................................5, +aranzia di 2ualit- su base statistica............................................................................................. 54 Il Piano S?A.................................................................................................................................. 54 +estione delle confi"urazioni Soft0are............................................................................................. 5! Indi7iduazione de"li o""etti della confi"urazione.........................................................................51 $ontrollo delle 7ersioni................................................................................................................. 5# $ontrollo del ca(bia(ento............................................................................................................5# Esa(i della confi"urazione....................................................................................................... 61 Relazioni sulla situazione..........................................................................................................61 /ocu(enti for(ali.................................................................................................................... 62 Soft0are $:an"e Re2uest @Ric:iesta di ca(bia(entoA....................................................... 62 Soft0are $:an"e Report @Report dei ca(bia(entiA.............................................................6, En"ineerin" $:an"e *rder @E$*A....................................................................................... 64 $onfi"uration Audit Report..................................................................................................66 $onfi"uration Status Report @resoconto sullo stato della confi"urazioneA...........................6! PARTE ?BARTA..............................................................................................................................6# Bnified Process...................................................................................................................................!1 ;asi ed atti7it-................................................................................................................................ !1 ;ase 1: Inception............................................................................................................................ !2 ;ase 2: Elaboration........................................................................................................................ !, ;ase ,: $onstruction...................................................................................................................... !4 ;ase 4: Transition...........................................................................................................................!5 Re2uire(ents @Re2uisitiA............................................................................................................... !6 /ia"ra((a dei casi d%uso..........................................................................................................!1 /ocu(entare i casi d%uso...........................................................................................................1) Atti7it- e Stati........................................................................................................................... 12 /eter(inare i re2uisiti...............................................................................................................14 Atti7it- di *(brello: Sti(e.......................................................................................................15 >a scelta tra s7iluppo ed ac2uisto.........................................................................................1! Atti7it- di o(brello: Analisi dei Risc:i.................................................................................... 11 Tabella dei risc:i.................................................................................................................. #) +estione del Risc:io.............................................................................................................#, R e RIS.......................................................................................................................#4 Atti7it- di o(brello: Pianificazione.......................................................................................... #! Principi fonda(entali........................................................................................................... #! Pa"ina 2

Relazione tra personale e la7oro...........................................................................................#1 /istribuzione del carico di la7oro........................................................................................ #1 /efinizione dei co(piti di un pro"etto soft0are.................................................................. #1 Scelta dei co(piti............................................................................................................... 1)1 /efinizione di un reticolo dei co(piti................................................................................1)1 Pianificazione te(porale.................................................................................................... 1)2 Ese(pio: SurfReport.......................................................................................................... 1), Sor7e"lianza della tabella dei te(pi...................................................................................1)5 Analisi del 7alore ac2uisito................................................................................................ 1)6 $ontrollo de"li errori..........................................................................................................1)! Piano di pro"etto................................................................................................................ 1)! Riepilo"o................................................................................................................................. 1)! Riepilo"o docu(enti prodotti................................................................................................. 1)! Analis3s @AnalisiA........................................................................................................................ 1)1 $lassi di Analisi...................................................................................................................... 1)1 /ia"ra((a delle classi.......................................................................................................1)# Analisi Arc:itetturale.............................................................................................................. 112 /ia"ra((a dei PacCa"e..................................................................................................... 11, Realizzazione dei casi d%uso.................................................................................................... 115 /ia"ra((i di se2uenza...................................................................................................... 115 /ia"ra((i di collaborazione............................................................................................. 116 /ia"ra((i di se2uenza o collaborazione'.........................................................................11# Tro7are $lassi ed Associazioni............................................................................................... 11# Tro7are le classi..................................................................................................................11# Riepilo"o................................................................................................................................. 122 Riepilo"o dei docu(enti prodotti............................................................................................122 /esi"n @Pro"ettazioneA.................................................................................................................122 $lassi di pro"etto.....................................................................................................................124 $o(pletezza e sufficienza..................................................................................................124 Pri(iti7it-...........................................................................................................................124 Alta coesione...................................................................................................................... 124 Basso accoppia(ento......................................................................................................... 124 Pro"ettazione delle associazioni.........................................................................................124 $lassi collezione.................................................................................................................126 .ote e 7incoli..................................................................................................................... 12! *$>.................................................................................................................................... 12! Approccio B$E.................................................................................................................. 144 +eneralizzazioneD ereditariet-D poli(orfis(o e loro proble(i........................................... 145 Interfacce................................................................................................................................. 146 $o(e usare le interfacce'...................................................................................................14! Indi7iduare le interfacce..................................................................................................... 14# Sottosiste(i............................................................................................................................. 14# Realizzazione dei casi d%uso E pro"etto...................................................................................15) /ia"ra((i de"li stati......................................................................................................... 15) Riepilo"o................................................................................................................................. 154 Riepilo"o dei docu(enti prodotti............................................................................................155 I(ple(entation @I(ple(entazioneA.............................................................................................155 Piano d%inte"razione................................................................................................................ 155 $o(ponenti............................................................................................................................. 155 Pa"ina ,

/ia"ra((a dei co(ponenti............................................................................................... 156 /ia"ra((a di /eplo3(ent..................................................................................................... 15! Il Pro"ra((a @o siste(aA........................................................................................................ 151 Riepilo"o................................................................................................................................. 151 Riepilo"o dei docu(enti prodotti............................................................................................151 Test...............................................................................................................................................151 /ifetti dello Bnified Process........................................................................................................16) APPE./I$I..................................................................................................................................... 161 Refactorin"....................................................................................................................................... 16, $reare entit- di pro"ra((a......................................................................................................... 16, $ancellare entit- di pro"ra((a................................................................................................... 16, $a(biare entit- di pro"ra((a.....................................................................................................16, uo7ere 7ariabili (e(bro.......................................................................................................... 164 $o(posizioni pri(iti7e............................................................................................................... 164 Propriet- da non 7iolare............................................................................................................... 164 Ese(pio di refactorin" co(plesso............................................................................................... 164 Specifica de"li effetti del refactorin"...........................................................................................16! Biblio"rafia....................................................................................................................................... 1!1

Pa"ina 4

Introduzione

Introduzione
?uesta & la rielaborazione del corso di In"e"neria del Soft0are 1 tenuto dal professor Bottoni. 8o pensato di realizzare 2uesto la7oro per (ettere insie(eD in (odo ordinato e scorre7oleD tutte le inF for(azioni presentate durante il corso. Alcuni punti sono stati approfonditi rispetto a 2uanto fatto a lezioneD in 2uanto (i se(bra7a do7eroso approfondire tali ar"o(enti. Esistono ar"o(enti c:e non :o approfondito o per (ancanza di infor(azioni specific:e o perc:G si allontana7ano troppo da"li ar"o(enti trattati durante il corso. Il la7oro & ideal(ente di7iso in 2uattro parti: nella pri(a tratto la tecnolo"ia ad o""ettiD in (odo da fissare una 7olta per tutte la ter(inolo"ia c:e utilizzoD nella seconda introduco l%in"e"neria del softF 0areD nella terza parlo delle atti7it- ausiliarieD cio& di 2uelle atti7it- c:e si s7ol"ono parallela(ente alle atti7it- principali nel processo di in"e"neria del soft0are @:o ritenuto opportuno anticipare 2ueF sta parte perc:G alcuni settori dello Bnified Process c:e andrH ad analizzare nella parte successi7aD si appo""iano su"li ar"o(enti 2ui trattatiAD nella 2uarta parlo dello Bnified Process cio& di un (oF dello per l%in"e"neria del soft0are @si & scelto 2uesto ar"o(ento perc:G rappresenta lo stato dell%arte nella pro"ettazione orientata a"li o""ettiD si a77ale del lin"ua""io B > ed & una sintesi di 7ari (oF delliA. All%interno dello Bnified Process parlerH anc:e delle atti7it- di o(brelloD cio& di 2uelle atti7iF t- c:e iniziano nelle pri(issi(e fasi del processo e si s7ol"ono parallela(ente a 2uelle principali. In ulti(o darH una bre7e introduzione del Refactorin".

Pa"ina 5

!"R#$ !RIM"

Pa"ina !

Tecnolo"ia ad o""etti

#ecnologia ad oggetti
Cos' un oggetto?
Bn o""etto & un 2ualcosa c:e possiede uno statoD de"li attributi e dei comportamentiI usando la si(ilitudine con la realt-D possia(o pensare ad una tazza: essa :a uno stato @piena o 7uotaAD de"li atF tributi @for(a e coloreA (a nessun co(porta(ento @& un o""etto passi7o: 7iene rie(pito e 7iene 7uotatoD (a non lo fa auto(atica(enteAI pensando in7ece ad un cane abbia(o 7ari co(porta(enti: (an"iaD be7eD abbaiaD si (uo7eD ecc. .ei co(puter o77ia(ente un o""etto non & 2ualcosa di realeD (aD al piJD una rappresentazione: cosK la tazza riprodotta sullo sc:er(o non & una tazza realeL Proprio per 2uesto (oti7o la tazza sullo sc:er(o puH a7ere dei co(porta(enti: rie(pi per farla rie(pireD s7uota per farla s7uotare. $:ia(o dominio degli attributi l%insie(e de"li attributi caratteristici di un o""etto. Tutti "li o""etti :anno un%identit: essa rappresenta in (odo uni7oco un o""ettoI nell%ese(pio delle tazzeD due tazze possono essere u"uali @stesso statoAD (a non :anno la stessa identit-: se prendo una tazza in (anoD l%altra ri(ane sul ta7oloI sono dun2ue in "rado di distin"uere le due tazze pur essenF do esse u"uali. *77ia(ente l=ese(pio & 7alido solo se nel do(inio de"li attributi delle tazze si traF scura la posizione sul ta7olo. Per o77iare a 2uesto incon7eniente possia(o fare un ese(pio c:e non ric:iede di i"norare nel doF (inio de"li attributi nulla: nel ca(po subFato(ico o"ni particella puH essere perfetta(ente u"uale ad altre eD pur non potendo conoscere la posizione di una particellaD sia(o in "rado di bo(bardarla senza toccare le altre particelle. /i conse"uenza due particelle u"uali sono in 2ualc:e (odo disti"uiF bili e 2uindi non identic:e. .ella pro"ra((azione ad o""etti "li attributi 7en"ono anc:e c:ia(ati proprietD (entre i co(porF ta(enti sono anc:e c:ia(ati metodi od operazioni.

Classi ed istanze
Bn o""ettoD nor(al(enteD & un%istanza di una McosaN e puH essere una delle istanze della stessa McosaN. Ad ese(pio una tazza da caff& & un ele(ento dell%insie(e delle possibili tazze. >a descrizioF ne della McosaN & c:ia(ata classe. Bn o""etto & un%istanza di una classe: la classe definisce co(e sono fatti "li o""etti da essa deri7atiD 2uindi l%insie(e dei possibili statiD attributi e co(porta(entiD l%o""etto stabilisce i 7alori posseduti da"li attributi. O i(portante notare c:e i co(porta(enti sono u"uali tra tutti "li o""etti: l%azione rie(pi della tazza sar- realizzata in (odo identico indipendenteF (ente dall%istanza della tazza in 2uel (o(ento.

Come collaborano gli oggetti?


.or(al(ente & assurdo pensare c:e un o""etto 7i7a da solo senza co(unicare nulla a"li altri @se non intera"isce non :a (oti7o di esistere: pensate ad un pro"ra((a c:e 7i occupi (e(oriaD senza fare assoluta(ente nullaLA. >a co(unicazione tra due o""etti a77iene per (ezzo di (essa""i: 2uesti (essa""i atti7ano una o piJ operazioni dell%o""etto destinatario del (essa""io. Ad ese(pio ad un o""etto Spedizione 7iene c:iesto di spedire della (erceD tale o""etto (ander- dun2ue un (essa""io all%o""etto a"azzino ric:iedendo di ridurre la 2uantit- disponibile della detta (erceI in altre parole Spedizione atti7a un co(porta(ento di a"azzino: riduci erceL

Pa"ina #

Tecnolo"ia ad o""etti

Come gli oggetti si identificano tra di loro?


I((a"inia(o c:e Spedizione abbia a c:e fare con due a"azziniD uno per la (erce A ed uno per la (erce BI co(e fa a sapere a 2uale o""etto in7iare il (essa""io' Ad o"ni o""etto 7iene asse"nato un *I/ @*b<ect Identifier o Identificatore dell%o""ettoAD 2uesto identificatore & unico per o"ni o""etto e non ce ne sono (ai due u"uali. Bn *I/ & per l%esattezza un riferi(ento: se Spedizione :a accesso a"li *I/ dei suoi due a"azziniD :a accesso ai due a"azziF ni. ?uindi per poter spedire un (essa""io ad un suo a"azzinoD Spedizione de7e conoscere il suo *I/. >%*I/ 7iene anc:e detto le"a(e oD appuntoD riferi(ento. ?uesti le"a(i possono essere persistenti o transitori. Bn le"a(e & persistente se esso & (e(orizzato da 2ualc:e parte @probabil(ente un attributoA e tale parte 7iene sal7ata alla c:iusura del pro"ra((a e puH essere ripristinata successi7a(ente. Bn le"a(e & transitorio se l%*I/ non 7iene sal7ato. a se il le"a(e & transitorioD co(e si fa a conoscerlo' Esso puH essere: recuperato da un altro o"F "etto c:e lo contiene in (aniera persistenteD essere passato con un (essa""ioD od essere creato sul (o(ento. >a creazione di un *I/ a77iene 2uando si istanzia un o""etto di una classe @il costrutto ne0 del Pa7a restituisce appunto un *I/A. Bna 7olta c:e Spedizione conosce l%*I/ dei suoi (a"azziniD co(e fa ad in7iar"li un (essa""io' Supponia(o c:e Spedizione abbia (e(orizzatoD transitoria(ente o persistente(enteD "li *I/ in due attributi (erceA e (erceB. Vuole in7iare un (essa""io al a"azzino contenente la (erceAD dicendo"li di ridurre la disponibilit- della sua (erce' Bser- dun2ue (erceA.riduci erce@A. $on 2uesta sintassi si indica di prendere l%*I/ (e(orizzato in (erceA e di in7iare un (essa""io all%o"F "etto con 2uell%*I/ dicendo"li di ese"uire il co(porta(ento riduci erce. ?uesto siste(a & detto piJ bre7e(ente: In7ocare il (etodo riduci erce dell%o""etto a"azzino riF ferito da (erceA @od ancora piJ bre7e(ente In7ocare il (etodo riduci erce di (erceAA.

Classe
Abbia(o detto c:e la classe & il descrittore di un insie(e di o""etti e di essi specifica i possibili staF tiD attributi e co(porta(enti. Specific:ia(o un po% (e"lio il concetto. Possia(o considerare una classe co(e uno sta(po per la creazione de"li o""etti. >a classe indica "li attributi c:e un o""etto de7e possedere @do(inio de"li attributiA nonc:G il loro tipoI specifica alF tresK tutti i co(porta(enti dell%o""etto. /ato c:e uno stato nor(al(ente & definito attra7erso i 7alori possibili de"li attributiD la classe nor(al(ente non specifica "li stati in (aniera esplicita.

Attributi
Bn attributo & identificato da un no(e e da un tipo e puH contenere un 7aloreI le classi definiscono i tipiD (entre "li o""etti asse"nano il 7alore a"li attributi stessi. Bn tipo puH essere pri(iti7o o una classeI nel pri(o caso esso 7iene fornito dal lin"ua""io ad o""etti @strin":eD nu(eriD booleaniA (enF tre nel secondo si"nifica c:e l%attributo do7r- contenere un *I/ di un o""etto utente istanziato dalla classe definita co(e tipo @es.: (erceA & di tipo a"azzinoD si"nifica c:e l%attributo (erceA do7rcontenere un *I/ di un o""etto c:e sia un%istanza di a"azzinoA. +li attributi :anno anc:e una visibilit cio& 7iene definito 2uali o""etti possono 7edere l%attributo. Visibilit- Pubblica: l%attributo di un o""etto puH essere 7isto e (anipolato da 2ualsiasi altro o""etto c:e abbia accesso all=o""etto c:e lo contiene. Pa"ina 1)

Tecnolo"ia ad o""etti Visibilit- Privata: l%attributo di un o""etto puH essere 7isto e (anipolato solo da un o""etto c:e sia istanza della classe c:e :a dic:iarato l%attributo. Visibilit- Protetta: l%attributo di un o""etto puH essere 7isto e (anipolato da un o""etto c:e sia istanza della classe c:e :a dic:iarato l%attributo e da tutti "li o""etti istanze di classi Mfi"lieN @7edi piJ a7anti la +eneralizzazioneA. Esistono anc:e altri tipi di 7isibilit-D definite dai lin"ua""i di pro"ra((azioneD co(e Package @l=accesso & possibile anc:e a tutte le classi appartenenti allo stesso Minsie(e lo"icoNA o Friend @l=accesso & possibile anc:e alle classi definite co(e Ma(ic:eNA. A 7olte si parler- di attributi derivati: essi in realt- non esistono co(e attributi fisiciD 7en"ono in7eF ce calcolati di 7olta in 7oltaD attra7erso operazioni su altri attributiI ad ese(pio un attributo Mte(po trascorsoN puH essere deri7ato: 7iene calcolato in base alla differenza tra la dataQora corrente ed una iniziale.

Operazioni
>e operazioni specificano "li al"orit(i c:e (anipolano i dati dell%o""etto @attributiA. >%operazione puH contenere una lista di para(etri in in"resso @parametri formaliAD cui saranno asse"nati 7alori specifici nella c:ia(ata @parametri attualiA e puH restituire un 7alore all%o""etto c:ia(ante. Il no(e dell%operazione insie(e alla lista dei tipi dei para(etri for(ali & c:ia(ata firma @o signatureD in in"leseA di un%operazione. >a fir(a de7e essere unica all%interno di una classe: 2uesto si"nifica c:e una classe puH a7ere piJ operazioni con lo stesso no(eD purc:G la lista dei tipi dei para(etri forF (ali sia se(pre di7ersa. >a 7isibilit- delle operazioni se"ue le stesse re"ole della 7isibilit- de"li attributi. Prassi della pro"ra((azione ad o""etti & 2uella di rendere "li attributi non pubblici e per(ettere a"li altri di (odificare o le""ere "li e7entuali dati necessariD attra7erso appositi (etodi pubblici @in (odo da poter effettuare (a""iore controllo eQo a""iun"ere solo apposite operazioni alla letturaQ7aF riazione di un datoA

Associazione
?uando due o""etti de7ono co(unicare tra di loroD si"nifica c:e tra le due classi 7i & un%associazioF ne. >%associazione indicaD dun2ueD il fatto c:e "li o""etti delle due classi de7onoD in 2ualc:e (odoD co(unicare. >%associazione puH a7ere un no(e e le classi c:e ne fanno parte un ruolo @cio& un no(eAD se(pliceF (ente per ricordare c:e tipo di associazione :anno le due classi ed il loro ruolo. Ad ese(pio due classiD *rdine e SpedizioneD potrebbero a7ere un%associazione MSpedizione dell%ordineN con i loro ruoli di ordine e di spedizioneD ad indicare c:e le due classi de7ono collaborare per spedire un ordiF ne e c:eD rispetti7a(enteD *rdine si preoccuper- di fornire "li ordini a Spedizione c:e pro77eder- a spedirli. >%associazione puH a7ere una (olteplicit-D cio& ad o"ni capo di un associazione si stabiliscono 2uanti o""etti della classe possono partecipare alla collaborazione. .or(al(ente le (olteplicit- coF (uni sono: )..1 )..R 1..1 al (assi(o un o""etto puH partecipare all%associazione 2uanti o""etti si 7uole @co(preso zeroLA possono partecipare all%associazione uno ed un solo o""etto puH partecipare all%associazione @puH essere indicata solo con 1A Pa"ina 11

Tecnolo"ia ad o""etti 1..R R da uno a 2uanti se ne 7uole possono partecipare all%associazione .essun li(ite al nu(ero di o""etti c:e possono partecipare all%associazione

*77ia(ente possono esisterne anc:e altre. $osK l%associazione MSpedizione di un ordineN a7r- da entra(bi i lati R ad indicare nessun li(ite sul nu(ero di ordini c:e possono far parte di una spedizione e nessun li(ite al nu(ero di spedizioni atF tra7erso cui possono essere ser7iti "li ordini. >e associazioni c:e :anno ad entra(bi i capi R sono dette molti a moltiD 2uelle do7e una lato 7i & 1 e dall%altro 7i & R sono dette uno a molti o molti ad uno @a seconda da c:e MlatoN si "uarda l%assoF ciazioneA. >e associazioni possono a7ere una navigabilit esplicita cio& un%indicazione c:e indica da c:e lato & possibile percorrere l%associazioneI ad ese(pio se abbia(o un%associazione tra Btenti @c:e contieF ne i no(i de"li utenteA e Pass0ord @c:e contiene le relati7e pass0ordA & assai probabile c:e da"li utenti 7o"lia(o risalire alle pass0ordD (a non 7ice7ersaI 2uindi l%associazione a7r- una na7i"abilitda Btenti a Pass0ord. Se la na7i"abilit- non & indicataD il piJ delle 7olteD indica una na7i"abilit- biF direzionale.

Classe di associazione
Benc:G nor(al(ente non esistano in alcun lin"ua""io di pro"ra((azione le classi di associazioniD esse 7en"ono usate 2uando si 7uole asse"nare attributi eQo co(porta(enti ad un%associazione stessa. Ad ese(pio un%associazione tra Studenti e $orsi potrebbe a7ere una classe di associazione @ValutaF zioneA c:e (antiene i 7oti de"li studenti rispetto ai corsi se"uiti. .ella pratica tale classe sar- poi tradotta in una classe reale c:e a7r- due associazioni: una con StuF denti ed una con $orsi.

Aggregazione e Composizione
>%a""re"azione e la co(posizione sono due tipi di particolari di associazioni. $on 2uesti due McoF struttiN si indica c:e una classe & Mco(postaN da altre classi. In altre parole un o""etto c:e contiene tanti o""etti di una deter(inata classe 7iene detto contenitoreD (entre "li o""etti c:e fanno parte dell%o""etto contenitore sono detti a""re"ati o co(ponenti @anc:e se 2uest%ulti(o ter(ine & poco usato perc:G potrebbe causare a(bi"uit- con un ter(ine o(oni(oD (a dal si"nificato co(pletaF (ente di7ersoD usato dallo Bnified ProcessA. >%a""re"azione & un costrutto c:e i(plica transiti7it- e asi((etria: se A contiene la classe B e B contiene la classe $D allora A contiene la classe $I A non puH perH contenere se stessaD B non puH contenere A @oltre a se stessaA e $ non puH contenere nG A nG B @oltre a se stessaA. >a co(posizione a""iun"e la dipendenza esistenziale: se A contiene B attra7erso la co(posizioneD si"nifica c:e se A 7iene distruttoD allora anc:e B de7e esserlo e B non puH essere creato se non 7ieF ne creato A.

Generalizzazione
>a "eneralizzazione & una relazione MtipoFdiN tra una classe piJ "enerica @superclasseA ed una piJ specifica della precedente @sottoclasseA. >a sottoclasse & una tipolo"ia della superclasse. Bn o""etto della sottoclasse puH essere usato o7un2ue sia per(esso l%uso di un o""etto della superclasse. >a "eneralizzazione per(ette di non ridefinire propriet- "i- definite. +li attributi e le operazioni "iPa"ina 12

Tecnolo"ia ad o""etti introdotti nella superclasse possono essere riusati nella sottoclasse @si dice c:e la sottoclasse eredita "li attributi ed i (etodi della classe "enitriceA. Essa facilita la specifica incre(entaleD l%uso delle proF priet- co(uni tra classi ed una (i"liore localizzazione delle (odific:e. Anc:e la "eneralizzazione & transiti7a ed asi((etrica. Si noti c:e di ereditariet- si parla in relazione alle classiD non a"li o""etti @si applica ai tipi non ai 7aloriA.

Polimorfismo
Bn (etodo ereditato da una sottoclasse & spesso usato cosK co(%&. Tutta7ia esso puH essere (odifiF cato o riscritto co(pleta(ente. ?uando 2uesto a77iene si parla di (etodo poli(orfo: 2uale i(pleF (entazione del (etodo 7err- ese"uitaD dipender- da 2ual%& l%istanza su cui 2uel (etodo 7iene c:iaF (ato. Al c:ia(ante 2uale sia l%i(ple(entazione non i(portaD proprio perc:G le sottoclassi possono essere adoperate o7un2ue si possa adoperare una superclasse @le di7erse 7ersioni del (etodo accetF tano "li stessi tipi e restituiscono lo stesso tipoD 2uindi per la classe c:ia(ante non ca(bia nullaA.

Ereditariet
>%ereditariet- & alla base della "eneralizzazioneD senza ereditariet- le classi non potrebbero usare atF tributi od o""etti della superclasseD nG ridefinire (etodi della superclasse. A 7olte si parla di ereditariet- (ultiplaI 2uesto a77iene 2uando una classe & sottoclasse di piJ superF classi. Benc:G in certi fran"enti possa essere utile essa introduce anc:e proble(atic:e le"ate all%ereF ditariet-: se due superclassi :anno due attributi o due (etodi con la stessa fir(aD la sottoclasse 2uale eredita' $o(e fa ad usare l%una o l%altra' Per 2uesto (oti7o alcuni lin"ua""i @co(e il Pa7aA per(etF tono solo l%ereditariet- sin"ola.

Classe astratta
Bna classe astratta & una classe "enitrice c:e non :a diretta(ente istanze: solo le sue sottoclassi posF sono essere istanziate. +eneral(ente una classe & astratta perc:G al(eno uno dei suoi (etodi & astratto: cio& definisce la fir(aD (a non :a i(ple(entazione.
>e classi astratte non possono 7enir istanziate (a sono (olto utili nella (odellazione. In un certo sensoD esse definiscono un M7ocabolarioN di alto li7ello c:e arricc:isce il lin"ua""io della (odellazione. Bna classe astratta per(ette di definire alcune operazioni co(uniD lasciando alle sue sottoclassi l%i(pleF (entazione di operazioni specific:e. Ad ese(pio una classe astratta Video @per una 7ideotecaA potrebbe fornire i (etodi "enerici dei supporti 7isi7iD lasciando astratta un%operazione spesaAffitto c:e indica il costo di affitto di un 7ideo. >e sue sottoclassi Videocassetta e /V/ i(ple(enteranno il (etodo.

Oggetto Classe
Abbia(o detto c:e le classi sono "li Msta(piN per "li o""etti. In certi casiD perHD biso"na riferirsi alla classe co(e un o""etto. $iH a77iene 2uando 7i & biso"no c:e alcuni attributi siano co(uni a tutte le istanze o dei (etodi a"iscano "lobal(ente. In tal caso si parla di *""etto $lasse. Bn ese(pio di attributo co(une & un contatore c:e conta il nu(ero di istanze: essa non puH essere parte di un o""ettoD perc:G l%o""etto non sarebbe a conoscenza di altre istanze. Bn ese(pio di (etodo "lobaleD le"ato al precedenteD & un (etodo c:e restituisce il nu(ero di istanze create fino a 2uel (o(ento.

Pa"ina 1,

!"R#$ S$C%N&"

Pa"ina 15

In"e"neria del Soft0are

Ingegneria del So t'are


Bna definizione "enerale dell%in"e"neria del soft0areD puH essere: il processo da applicare al prodotF to @il soft0areA per portare a ter(ine con successoD in bre7e te(poD a costo contenuto ed ad alta 2uaF lit-D il pro"etto.
Bna definizione esatta & data dall%IEEED co(e l%unione dei se"uenti due punti: M1A Applicazione di una strate"ia siste(aF ticaD disciplinata e (isurabile allo s7iluppoD esercizio e (anutenzione del soft0are. 2A Studio delle strate"ie di cui al punto 1AN.

/un2ue dobbia(o definire prodottoD processo e pro"etto.

Prodotto
.el nostro caso il prodotto & il soft0are c:e 7o"lia(o realizzare. Andando nello specifico possia(o dire c:e il soft0are or(ai ci circonda: esistono nu(erosi siste(i (ano7rati dai co(puter e su di essi "ira il soft0are @basta pensare anc:e a 2uanti tipi di soft0are esistono: di siste(aD "estionaliD e(beddedD real ti(eD scientificoD per databaseD per 7ideo"ioc:iD per l%elaborazione di testiD per l%intelF li"enza artificialeD basato sul 0ebD (ulti(edialeD ecc.A. .or(al(ente 2uando si cerca di pensare al soft0are @inteso co(e il prodotto di un certo processoAD 7iene da para"onarlo alla produzione di un 2ualc:e o""etto. >a si(ilitudine perH :a (olte pecc:e: 1. Il soft0are si s7iluppa e si strutturaD non si fabbrica: i (etodi per fabbricare o""etti reali sono netta(ente di7ersi dai (etodi per s7iluppare un soft0are 2. Il soft0are non si consu(a: l%:ard0are tende a danne""iarsi nel corso del te(poD il soft0are no. Tutta7ia anc:e il soft0are puH essere so""etto a difettiD (a (entre nell%:ard0are il difetto corretF to non pro7oca altri proble(i @non 7erissi(oD (a corretto dal nostro punto di 7istaAD nel soft0are la (odifica puH ripercuotersi su altre parti a""iun"endo nuo7i difetti. >a cur7a di Mdeteriora(enF toN puH essere rappresentata dal successi7o dia"ra((a: /o7e la idealized cur7e & la cur7a ideale c:e accadrebbe se le correzioni e le nuo7e a""iunte non inF serissero nuo7i difetti. >%actual cur7e (ostra la cur7a reale.

Pa"ina 1!

In"e"neria del Soft0are

,. >a costruzione di (ateriali usa pezzi "i- pronti e li co(bina sola(enteD il soft0are & spesso reaF lizzato ad :oc. ?uesto in parte & do7uto al fatto c:e non se(pre il colle"a(ento di siste(i "ipronti porta al siste(a finaleI oltre a 2uesto & decisa(ente piJ difficile s7iluppare pensando al riuso ed i te(pi stretti fanno sK c:e spesso le soluzioni siano cercate solo nel ran"e interessato @e di conse"uenza non riutilizzabiliA. >%in"e"neria del soft0are cerca di in7ertire la tendenza e cerca di estendere a tutto il prodotto 2uello c:e succede adesso nelle interfacce utente @pulsantiD caselle di testoD ecc. sono ele(enti standard riutilizzatiA.

I miti
Pri(a di 7edere c:e cos%& il processoD 7edia(o di sfatare alcuni (iti.?uesti (iti sono nati a"li inizi de"li anni %!)D (a alcuni di essei potrebbero essere ancora 7alidi.
Miti del management

Mito: abbia(o "i- interi 7olu(i di standard e procedure da se"uire nello s7iluppo. .on c%& forse tutto l%indispensabile' Realt: ?uanti di 2uesti standard e procedure sono conosciute ed applicate' Sono se"uiti in (aniera co(pleta ed otti(izzata' Sono usati standard e procedure c:e riflettano i (etodi (oderni di s7ilupF po del soft0are' >a risposta a tutte 2ueste do(ande & .ESSB.A. Mito: Abbia(o i piJ (oderni stru(enti di s7iluppo. /opo tutto ac2uistia(o se(pre i co(puter piJ recenti. Realt: .on & 7ero c:e al co(puter piJ potente corrisponde un (i"lior s7iluppo del soft0are. O co(e dare una for(ula 1 ad uno c:e de7e i(parare a "uidare... Spesso sarebbe piJ con7eniente Pa"ina 11

In"e"neria del Soft0are spendere i soldi in stru(enti adatti allo s7iluppoD piuttosto c:e potenziare i co(puterD (a costrin"eF re i pro"ra((atori a la7orare a (ano @per (ancanza di stru(entiA. Mito: se sia(o in ritardo possia(o recuperare au(entando il nu(ero di pro"ra((atori. Realt: S7iluppare un soft0are non &D co(e abbia(o dettoD costruire un o""etto. I((ettere Mun%orF da (on"olaN all%interno del processo di s7iluppo rallenter- ancora di piJ lo s7iluppoD in 2uanto la nuo7a "ente do7r- essere addestrataD do7r- capire cosa :anno fatto "li altri pro"ra((atoriD ecc. Mito: se decido di far realizzare un pro"etto soft0are ad una terza parteD posso stare tran2uillo perF c:G tutto il la7oro 7err- s7olto esterna(ente. Realt: >e Mterze partiN non :annoD spessoD idea del funziona(ento internoI se non si sa "estire i propri processi interniD & assai difficile riuscire a "estire il processo s7olto da uno esterno.
Miti della clientela

Mito: un%affer(azione "enerica de"li scopi & sufficiente per co(inciare a scri7ere i pro"ra((iI i detta"li si possono trattare in se"uito. Realt: un%insufficiente descrizione preli(inare & la causa principale del falli(ento del pro"etto. Senza un%accurata descrizioneD non si riesce a definire i confini del pro"etto. Mito: I re2uisiti di un pro"etto (utano di continuoD (a i (uta(enti si "estiscono a"e7ol(ente "raF zie alla flessibilit- del soft0are. Realt: Il soft0are non & flessibileD nG tanto (eno lo & s7ilupparlo. O 7eroD i re2uisiti ca(bianoD (a apportare il ca(bia(ento durante le pri(e fasi del pro"etto & piJ facile e (eno costosoD c:e non 2uando il soft0are & pronto. Su 2uesto ar"o(ento a7re(o (odo di tornare per un approfondi(ento.
Miti del programmatore

Mito: Bna 7olta scritto e (esso in opera un pro"ra((aD il nostro la7oro & finito. Realt: >a (a""ior parte del la7oro a77iene una 7olta c:e il soft0are & stato rilasciato. Mito: ;ino a 2uando il pro"ra((a non & in condizioni di essere ese"uitoD non c%& (odo di 7alutarne la 2ualit-. Realt: Bno dei (etodi piJ efficaci di esa(e della 2ualit- del soft0areD la re7isione tecnica for(aF leD si applica "i- dall%inizio di un pro"etto. A7re(o (odo di approfondire l=ar"o(ento. Mito: il solo prodotto di un pro"etto concluso & il pro"ra((a funzionante. Realt: un pro"ra((a funzionante & solo una parte del soft0are. >a docu(entazione & il fondaF (ento di uno s7iluppo riuscito eD cosa ancora piJ i(portanteD & la "uida dell%atti7it- di (anutenzioF ne. Mito: l%in"e"neria del soft0are ci far- scri7ere un%inutile e 7olu(inosa docu(entazione c:e ine7itaF bil(ente rallenter- le cose. Realt: l%in"e"neria del soft0are punta sulla 2ualit-D la (i"liore 2uantit- porta ad un (inor la7oroD un (inor la7oro porta a te(pi di conse"na piJ rapidi. ?uello c:e porta 7ia te(po & i(parare l%in"eF "neria del soft0are @inso((aD de7e essere un in7esti(entoA. ?uando si pensa c:e non 7i & te(po per s7ol"ere un%in"e"nerizzazione del soft0areD ci si pro7i a c:iedere: MA7re(o te(po di rifarlo da zero'N.

Pa"ina 1#

In"e"neria del Soft0are

Processo
Il processo soft0are & un 2uadro di riferi(ento entro il 2uale si s7ol"ono le atti7it- necessarie alla realizzazione di soft0are di alta 2ualit-. Abbia(o definito l%in"e"neria del soft0are co(e processoI in realt- essa include i (etodiD le tecniF c:e e "li stru(enti. .onostante 2uestoD il processo ri(ane l%a(bito c:ia7e su cui ci si (uo7eD infatti in esso si stabiliF scono le aree c:ia7eD il contesto in cui si applicano i (etodi tecniciD si creano i prodotti inter(edi @(odelliD docu(entiD datiD resocontiD for(ulariD ecc.AD si stabiliscono i punti di controllo @o pietre (iF liariAD si "arantisce la 2ualit- e si "o7ernano in (odo opportuno le (odific:e. I (etodi costituiscono il sapere tecnico relati7o alla costruzione del soft0are. Essi in7estono una 7aF sta "a((a di atti7it-D c:e co(prende l%analisi dei re2uisitiD la pro"ettazioneD la costruzione dei proF "ra((iD il collaudo ed il supporto. I (etodi dell%in"e"neria del soft0are po""iano su una fa(i"lia di principi di base c:e "o7ernano ciascuna delle sue aree e co(prendono le atti7it- di (odellazione ed altre tecnic:e descritti7e. +li stru(enti dell%in"e"neria del soft0are forniscono al processo ed ai (etodi un supporto auto(aF tizzatoD in tutto od in parte. /ando una rapida panora(icaD possia(o dire c:e l%in"e"neria del soft0are tende a dare una risposta a 2ueste do(ande:

?ual%& il proble(a da risol7ere' ?uali caratteristic:e delle entit- 7en"ono utilizzate per risol7ere il proble(a' In c:e (odo l%o""etto @e 2uindi la soluzioneA sar- realizzato' In c:e (odo l%o""etto sar- costruito' In c:e (odo si condurr- la ricerca de"li errori co(piuti della pro"ettazione e costruzione dell%o"F "etto' ?uale supporto si dar- all%o""etto a lun"o ter(ineD 2uando i suoi utenti ric:iederanno correzioniD adatta(enti e (i"liora(enti'

Indipendente dall%area applicati7aD dalle di(ensioni del pro"etto e dalla sua co(plessit-D le operaF zioni coin7olte nella realizzazione del soft0are si articolano in tre fasi "eneraliD ciascuna delle 2uali & in7estita da una o piJ delle do(ande indicate in precedenza. >a fase di definizione si occupa del c:e cosa. In 2uesta fase lo s7iluppatore cerca di deter(inare 2uali siano le infor(azioni da elaborareD 2uali siano le funzioni e prestazioni atteseD 2uale debba esF sere il co(porta(ento del siste(aD 2uali interfacce si debbano definireD 2uali siano i 7incoli pro"etF tuali ed i criteri di 7alidazione in base ai 2uali 7alutare la riuscita del risultato. Si de7ono deter(inaF re i re2uisiti fonda(entali del siste(a e del soft0are. >a fase di s7iluppo si occupa del co(e. In 2uesta fase un in"e"nere del soft0are definisce co(e strutturare i datiD co(e i(ple(entare le funzioni entro una data arc:itettura soft0areD co(e i(pleF (entare i detta"li proceduraliD co(e strutturare le interfacceD co(e tradurre un pro"etto co(plessi7o in un lin"ua""io di pro"ra((azione e co(e s7ol"ere i collaudi.

Pa"ina 2)

In"e"neria del Soft0are >a fase di supporto si occupa delle (odific:e le"ate alla correzione de"li erroriD a"li adatta(enti c:e si sono resi necessari per l%e7oluzione dell%a(biente del soft0are e delle (odific:e tese a soddisfare nuo7e esi"enze della clientela. In 2uesta fase si applicano nuo7a(ente le atti7it- di definizione e s7iluppoD (a nel contesto del soft0are esistente. Si possono indi7iduare 2uattro tipi di (odific:e:

Correzioni E Anc:e in presenza delle (i"liori tecnic:e di controllo della 2ualit-D & probabile c:e "li utenti scoprano difetti nel prodotto soft0are. >a Manutenzione correttiva (odifica il soft0are allo scopo di eli(inare i difetti. Adattamenti E $on il passare del te(poD & probabile c:e si e7ol7a l%a(biente @$PBD siste(a operati7oD re"ole aziendaliD caratteristic:e esterne del prodottoD ecc.A per cui il soft0are & stato s7iluppato. >a Manutenzione adattiva consiste in (odific:e al soft0are tese ad adattarlo al nuoF 7o a(biente operati7o. Migliorie E $on l%utilizzazione del soft0areD e(er"e l%utilit- di nuo7e funzioni. >a Manutenzione perfettiva estende il soft0are oltre i re2uisiti funzionali ori"inari. Prevenzione E Il soft0are si deteriora a causa delle (odific:eI perciH allo scopo di "arantire c:e il soft0are s7ol"a il proprio co(pito rispetto ai suoi utentiD si rende necessaria la Manutenzione preventivaD detta anc:e software reengineering. In sostanzaD la (anutenzione pre7enti7a consiste in (odific:e c:e rendano piJ se(plici le correzioniD "li adatta(enti e le (i"liorie.

>e fasi e le relati7e atti7it- descritte in 2uesta panora(ica sono co(pletate da atti7it- ausiliarieD c:e si s7ol"ono durante tutto il processo:

$ontrollo e "uida del pro"etto Re7isioni tecnic:e for(ali +aranzia di 2ualit- del soft0are +estione delle confi"urazioni soft0are Preparazione e produzione di docu(enti +estione del riutilizzo isurazioni +estione dei risc:i.

.e"li ulti(i anni il SEI @Soft0are En"ineerin" InstituteA :a ideato un (odello a cin2ue li7elli c:e (isura l%efficacia "lobale dell%applicazione di tecnic:e di in"e"neria del soft0are da parte di un%aF zienda: Livello1: Iniziale E Il processo soft0are & definito di 7olta in 7olta ed in alcuni casi risulta confuso. Poc:i processi sono definiti e la riuscita dipende dall%i(pe"no indi7iduale. Livello : Ripetibile E Presenza di processi basilari di "estione di pro"ettiD 7olti a sor7e"liare costiD te(pi e funzionalit-. >a disciplina di processo necessaria :a lo scopo di ripetere il successo di proF "etti precedenti per applicazioni si(ili. ?uesto li7ello co(prende:

la "estione delle confi"urazioni soft0areI la "aranzia di 2ualit- del soft0areI la "estione dei sottocontratti per il soft0areI

Pa"ina 21

In"e"neria del Soft0are


il controllo e la sor7e"lianza del pro"ettoI la "estione dei re2uisiti

Livello!: Definito E Il processo soft0areD sia per le atti7it- di "estione sia per 2uelle di realizzazionF eD & docu(entatoD confor(e ad uno standard ed inserito in un processo soft0are su scala aziendale. *"ni pro"etto adotta una 7ersione docu(entata ed appro7ata del processo aziendale per lo s7iluppo e la (anutenzione del soft0are. ?uesto li7ello co(prende tutte le caratteristic:e definite per il >iF 7ello2. ?uesto li7ello co(prende:

le re7isioniI il coordina(ento dei "ruppiI l%in"e"neria del prodotto soft0areI la "estione inte"rata del soft0areI i pro"ra((i di addestra(entoI la definizione del processo aziendaleI l%obbietti7o pri(ario del processo aziendale

Livello": Gestito E Si raccol"ono (isure detta"liate relati7e al processo soft0are ed alla 2ualit- del prodotto. Sia il processo soft0are sia i prodotti sono 7alutati 2uantitati7a(ente e controllati (edianF te (isure detta"liate. ?uesto li7ello co(prende tutte le caratteristic:e definite per il >i7ello,. ?ueF sto li7ello co(prende:

la "estione della 2ualit- del soft0areI la "estione 2uantitati7a del processo

Livello#: Ottimizzato E Il continuo (i"liora(ento del processo & consentito dalla raccolta di dati 2uantitati7i e dal collaudo di idee e tecnolo"ie inno7ati7e. ?uesto li7ello co(prende tutte le caratteF ristic:e definite per il >i7ello4. ?uesto li7ello co(prende:

la "estione del ca(bia(ento del processoI la "estione del ca(bia(ento tecnolo"icoI la pre7enzione dei difetti

Modelli di processo
>o s7iluppo del soft0are possia(o 7ederlo co(e un%atti7it- di7isa in 2uattro fasi: Status 2uoD /efiF nizione del proble(aD S7iluppo tecnicoD Inte"razione della soluzioneI se 7edia(o 2ueste atti7itco(e l%una il se"uito dall%altra allora dall%ulti(a si puH ritornare alla pri(a e rico(inciare il procesF so. >o status 2uo rappresenta lo stato delle cose presenteD la definizione del proble(a indi7idua lo specifico proble(a da risol7ereD lo s7iluppo tecnico lo risol7eD l%inte"razione della soluzione conseF "na i risultati. Vedere cosK lo s7iluppo del soft0are & un po% se(plicisticoD per due (oti7i:

*"ni fase & in realt- una (acro faseD c:e puH essere a sua 7olta di7isa nelle stesse fasiD c:e a loro 7olta possono essere di7iseD ecc. >e fasi non sono cosK distinteD (a & difficile separarle: infatti o"ni fase :a piJ di un punto in coF (une con tutte le altre fasi.

Per 2uesti (oti7iD lo s7iluppo del soft0are & considerata un%atti7it- caotica. I (odelli c:e 2ui 7en"oF no presentati cercano di porre ordine a tale caos. Pa"ina 22

In"e"neria del Soft0are

Modello sequenziale lineare

O stato il pri(o (odello c:e fu costruito: esso si presenta co(e in fi"ura:

In 2uesto (odello la fase di analisi precede 2uella di desi"n c:e precede 2uella di scrittura del codiF ceD c:e precede il collaudo. Bna fase non puH co(inciare pri(a c:e sia finita l%altraD una 7olta conF clusa una fase non ci si (ette piJ (ano. I proble(i si 7edono subito: infatti i pro"etti reali se"uono rara(ente un flusso se2uenziale @i ca(F bia(enti causano confusioneAD 7i & difficolt- per il cliente di for(ulare i re2uisiti esplicita(enteD il cliente de7e a7ere pazienza @e spesso non ne :aAD "li s7iluppatori attendono inutil(ente Sstati blocF canti= @co(e abbia(o detto una fase non inizia se l=altra non & portata a ter(ineA.
Modello del Prototyping

?uesto (odello lo possia(o riassu(ere co(e in fi"ura nella pa"ina successi7a:

Pa"ina 2,

In"e"neria del Soft0are

$o(e si 7ede & ciclico: si parte dall=ascoltare l=utenteD si prose"ue costruendo un prototipoD lo si fa testare al clienteD lo si riascoltaD si (odifica il prototipoD lo si fa ritestare e cosK 7ia fin 2uando il softF 0are non & pronto. I prototipi 7en"ono costruiti in frettaD con scelte inade"uateD al"orit(i inefficienti ed altre cose c:e rendono funzionante il prototipo in te(pi bre7iD (a tenuto insie(e Mcon lo scotc:N. ?uando si 7uole (odificareD (olte scelte de7ono essere "ettate 7iaD rielaborateD tro7ati al"orit(i piJ efficientiD ecc. I proble(i c:e sor"ono possono essere tre: 1A Il feno(eno del t:ro0Fa0a3: si :a spesso reticenza a "ettare tutto il la7oro fatto 2A Aspettati7e irrealistic:e da parte del cliente @7edendo un prototipoD potrebbe pensare c:e per il soft0are co(pleto (anc:i poco e c:e possa essere conse"nato in te(pi troppo strettiA ,A ettendo insie(e i due proble(iD ottenia(o spesso un prodotto il cui proble(a & nella (anuteF nibilit-: alla pri(a (odifica fatta si 7erificano tutta una serie di sideFeffect c:e non fanno piJ funzionare il pro"ra((a nel (odo pre7isto.

Modello RA

Il odello RA/ @Rapid Application /e7elop(entA & un (odello c:e pre7ede di suddi7idere il la7oF ro in tea( paralleliD o"ni tea( se"ue un processo se2uenziale lineare su un periodo bre7eI il procesF so se2uenziale lineare & di7iso nei se"uenti passi:

Business (odelin" @quali dati guidano il processo? Chi li genera? Dove vanno? Chi li elabo ra?! /ata (odelin" @attributi degli oggetti e loro relazioniA Process (odelin" @operazioni di aggiunta" modifica" cancellazione o recupero di oggettiA Application "eneration @utilizza componenti esistenti e crea componenti riutilizzabili A

Pa"ina 24

In"e"neria del Soft0are

Testin" and turno7er @collaudo dei nuovi componentiA Per "randi pro"etti occorrono risorse sufficienti per creare le s2uadre ;orte i(pe"no de"li s7iluppatori e dei clienti Presuppone una soluzione (odulare Riusabilit- puH i(plicare perdita di prestazioni

Il (odello RA/ :a i se"uenti difetti:


Modello !ncrementale

Il (odello incre(entale riprende il (odello se2uenziale lineare e 7i a""iun"e la possibilit- di inseriF re incre(enti. In altre parole il prodotto non 7iene dato i((ediata(ente co(pleto di o"ni funzionaF lit-D (aD ad o"ni cicloD 7en"ono s7iluppate sin"ole funzionalit- il cui insie(e corrisponder- al proF dotto finale. >a fi"ura rappresenta tale (odello.

8a "li stessi difetti del (odello se2uenziale lineareD anc:e se in (aniera piJ (iti"ataD "razie alla realizzazione de"li incre(enti.
Modello a spirale

Il (odello a spirale & rappresentato in fi"ura

Pa"ina 25

In"e"neria del Soft0are

$on 2uesto (odello si percorre una spirale dall=inizio del pro"etto fino alla fuoriuscita del prodottoD o"ni spira & di7isa in settori: $o(unicazione col clienteD PianificazioneD Analisi del Risc:ioD Pro"etF tazioneD $ostruzione e RilascioD Valutazione da parte del cliente. Il proble(a di 2uesto (odello & la difficile 7isualizzazione della ta"lia e te(porizzazione di o"ni spira.
Modello a spirale "!#"!#

?uesto & una (odifica del (odello a spiraleI con 2uesto (odello ca(biano i settori:

Identificare "li staCe:older @con 2uesto ter(ine si intende c:iun2ue abbia un 2ualc:e interesse al prodottoQprocessoQpro"ettoA Identificare le condizioni di 7ittoria di o"ni staCe:older @con 2uesto si intende 2uando uno staCeF :older si possa ritenere soddisfatto del prodottoQprocessoQpro"ettoA .e"oziazione delle condizioni di 7ittoriaD stabilire "li obietti7iD i 7incoli e le alternati7e Valutare il processoD le alternati7e e risol7ere i risc:i /efinire il prossi(o li7ello Validare il prodotto e la definizione di processo $o((enti

Pa"ina 26

In"e"neria del Soft0are Il difetto di 2uesto (odello & c:e non se(pre le condizioni di 7ittoria sono facil(ente tro7abili ed ancor (eno ne"oziabili.
Modello ad assemblaggio di componenti

?uesto & una (odifica al (odello a spiraleD introducendo7i la riusabilit- ob<ect oriented

I difetti sono i se"uenti:


Riusabilit- ric:iede pianificazione attenta olti pro"ra((i esistenti non sono riusabili PiJ adatto per do(ini applicati7i particolari @con sc:e(i si"nificati7i di riusoA

Modello dello s$iluppo concorrente

$on 2uesto (odello si usano dei dia"ra((i di stato per o"ni atti7it-D o"ni e7ento fa scattare una transizione di stato. O un (odello utile per s7iluppo dell%or"anizzazione interna dell%azienda e 2uanF do c=& un alto "rado di interdipendenza tra (oduli di7ersi @es. applicazioni clientFser7erA

Pa"ina 2!

In"e"neria del Soft0are

Altri modelli

.el corso del te(po sono 7enuti a for(arsi altri (odelliD li presentia(o in rapida successione in 2uanto o sono in corso di studio o approfondire(o piJ a7anti:

Specific:e Tecnic:e for(ali E basata sulla lo"ica (ate(atica Tecnic:e Mdi 2uarta "enerazioneN E usando cio& lin"ua""i di definizione ad alto li7ello /A @ odel /ri7en Arc:itettureA E l=idea & 2uella di s7iluppare soft0are indipendente(ente dalla piattafor(a @PI E Platfor( Indipendent odelA a7endo (etodi di trasfor(azione per porF tarlo sotto piattafor(e specific:e @PS E Platfor( Specific odelA in bre7e te(po e (antenenF do coerenza E Tale siste(a & utile per siste(i etero"enei

Pa"ina 21

In"e"neria del Soft0are

A"ile Soft0are Pro"ra((in" E basato sul concetto c:e "randi persone fanno "randi pro"ra((iD per o"ni pezzo di pro"ra((a 7i sono due responsabili @uno propositore di soluzioniD uno critico di soluzioniD in alternanzaA e c:e le soluzioni sono condi7ise da tutti i pro"ra((atori Bnified Process E c:e 7edre(o approfondita(ente piJ a7anti

Progetto
Il pro"etto possia(o definirlo co(e 2uell%atti7it- c:eD se"uendo le linee "uida date dal processoD porta alla realizzazione del prodotto. Esistono dieci punti con i 2uali si puH capire 2uando un pro"etto & a risc:io: 1. +li s7iluppatori non co(prendono le esi"enze dei loro clienti 2. Il ca(po d%azione del prodotto & (al definito ,. >e (odific:e 7en"ono "estite in (odo non appropriato 4. $a(bia la tecnolo"ia scelta 5. >e operazioni de7ono ca(biare o sono (al definite 6. >e date di conse"na non sono realistic:e !. +li utenti sono ostili 1. Perdita delle risorse finanziarie #. Il tea( del pro"etto non contiene persone con le conoscenze appropriate 1).Il (ana"er ed i professionisti non (ettono a frutto le lezioni apprese $o(e puH un (ana"er e7itare i proble(i appena enunciati' Si su""erisce un approccio di buon senF so costituito da cin2ue punti: 1$ Partire col piede giusto: ciH si ottiene innanzitutto la7orando dura(ente @(olto dura(enteA per co(prendere il proble(a c:e de7e essere risolto e poi definendo "li o""etti e le attese realistic:e per tutti coloro c:e saranno interessati dal pro"etto. $iH de7e essere ribadito realizzando il tea( corretto ed asse"nando al tea( l%autono(iaD l%autorit- e le tecnolo"ie necessarie per s7ol"ere il laF 7oro. $ Mantenere alta l%attenzione: (olti pro"etti partono bene (a poi si disinte"rano lenta(ente. Per (antenere alta l%attenzioneD il (ana"er del pro"etto de7e fornire incenti7i per ridurre assolutaF (ente al (ini(o il rica(bio di personaleI il tea( de7e concentrarsi sulla 2ualit- in o"ni operaF zione s7olta ed il (ana"e(ent de7e fare il possibile per rispondere alle esi"enze del tea( @buroF crazia ridotta al (ini(oD eli(inare "li incontri inutili e le ric:ieste di aderenza do"(atica alle reF "ole del processoD ecc.A. !$ &erificare i progressi: per un pro"etto soft0areD i pro"ressi de7ono essere controllati a (ano a (ano c:e 7iene creato un prodotto @ad ese(pio le specific:eD il codice sor"enteD i casi di collauF doA e poi appro7ati @utilizzando re7isioni tecnic:e for(aliA nell%a(bito di un%atti7it- di 7erifica della 2ualit-. Inoltre le (isure dei processi e del pro"etto soft0are possono essere raccolte ed utiF lizzate per stabilire i pro"ressi rispetto alle indicazioni s7iluppate dall%or"anizzazione di s7iluppo soft0are. "$ Prendere decisioni intelligenti: in pratica le decisioni del pro<ect (ana"er e del tea( soft0are de7ono preferire la se(plicit-. ?uando possibile si de7e decidere di utilizzare soft0are co((erF ciale pronto all%uso o co(ponenti soft0are esistentiD decidere di e7itare interfacce personalizzate Pa"ina 2#

In"e"neria del Soft0are 2uando sono disponibili approcci standardD decidere di identificare e poi e7itare i risc:i piJ e7iF denti e decidere di allocare piJ te(po di 2uanto si possa pensare alle operazioni piJ co(plesse e risc:iose. #$ Condurre un%analisi post-mortem: stabilire un (eccanis(o "enerale per trarre lezioni da o"ni pro"etto. Valutare i te(pi pianificati ed ottenutiD racco"liere ed analizzare le 7alutazioni (etric:e del pro"etto soft0areD c:iedere le opinioni dei (e(bri del tea( e dei clienti e trascri7ere 2ueste infor(azioni. >a "estione efficace di un pro"etto soft0are si fonda sulle ,P: personeD proble(aD processo.

!ersone
>e persone sono spesso la c:ia7e di un pro"etto soft0are ed il piJ delle 7olte date un po% troppo per scontate. .el processo soft0are ed in o"ni pro"etto di s7iluppoD inter7en"ono 7arie persone c:e si possono classificare in cin2ue cate"orie: #$ gli alti dirigenti: i 2uali definiscono il contesto aziendaleD c:e spesso influenza un pro"etto in (odo si"nificati7oI %$ i capi progetto: incaricati di pianificareD (oti7areD coordinare e controllare il personale tecnicoI &$ i tecnici: dotati delle co(petenze necessarie per la realizzazione concreta di un prodotto od un%applicazioneI '$ i clienti: c:e specificano i re2uisiti del soft0are da realizzare ed altri punti di riferi(ento interni c:e :anno un interesse (ar"inale sul risultatoI ($ gli utenti finali: c:e intera"iscono col soft0are reso operati7o. .or(al(ente la struttura or"anizzati7a di un%azienda & difficile c:e ca(biD (entre i capi pro"etto ed i tecnici 7en"ono di 7olta in 7olta asse"nati a pro"etti di7ersi. O co(pito del capo pro"etto riuscire a far di7enire un "ruppo di personeD 2uello c:e 7iene definito un Mtea( coesoN:

I (e(bri della s2uadra de7ono fidarsi l%uno dell%altro >a distribuzione delle specific:e abilit- de7e essere appropriata per il proble(a O opportuno escludere dal tea( "li ele(enti particolar(ente rissosi per au(entare la coesione alF l%interno del tea( Bn tea( coeso & un "ruppo di persone unite cosK stretta(ente c:e l%intero & piJ "rande della so(F (a delle parti.

Bn tea( c:e ac2uista coesione per(ette di au(entare le probabilit- di successoD non occorre "estire i suoi (e(bri nei (odi tradizionaliD nG (oti7arli. Essi :anno preso lo slancio. $reare un tea( coesoD perHD & piJ facile a dirsi c:e a farsi. ?uello c:e si puH pro7are ad e7itare & un tea( MtossicoN:

At(osfera di la7oro frenetica in cui i (e(bri del tea( perdono ener"ie e concentrazione su"li obbietti7i del la7oro. Bn ele7ato li7ello di frustrazione causata da fattori personaliD aziendali o tecnolo"ici c:e pro7oF cano un attrito tra i (e(bri. Procedure fra((entate o poco coordinate od un (odello di processo (al definito o (al scelto c:e i(pedisce il ra""iun"i(ento del risultato

Pa"ina ,)

In"e"neria del Soft0are


Bna definizione non c:iara dei ruoliD c:e pro7oca una (ancanza di responsabilitBna continua e ripetuta serie di falli(enti c:e pro7oca pessi(is(o ed abbassa il (orale.

E7itare un tea( tossico ric:iede di la7orare sin"olar(ente su 2uesti puntiD e7itando at(osfere freneF tic:eD abbassando la frustrazioneD sce"liendo le "iuste procedure ed i (odelli di processoD definendo c:iara(ente ruoli e responsabilit-. Per l%ulti(o punto si de7ono stabilire tecnic:e specific:e per la co(unicazione e la soluzione dei proble(i. Inoltre il falli(ento di un (e(bro del tea( de7e ri"uarF dare l%intero tea(. *77ia(ente 2uando si for(ano i "ruppiD affinc:G siano tea(D & necessario considerare anc:e le caF ratteristic:e sin"ole di o"ni indi7iduo: c%& infatti c:i la7ora (e"lio sotto stressD altri 2uando 7i & piJ te(poD altri prendono decisioni se"uendo un ra"iona(ento lo"icoD altri l%i(pulso del (o(entoD alF cuni raccol"ono infor(azioni in (odo intuiti7oD altri in (odo piJ or"anizzatoD ecc. Bn capo pro"etF to c:e (etta insie(e un tea( de7e tener conto di tutti 2uesti fattori. *ltre a 2uanto detto biso"na stabilire il tipo di struttura del tea(:

'emocratico 'ecentrato (''): Bn tea( di 2uesto tipo non :a un capo per(anente. /i 7olta in 7olta 7en"ono no(inati coordinatori delle atti7it- per bre7i periodiD c:e sono poi sostituiti da alF triD incaricati di coordinare atti7it- di7erse. >e decisioni sui proble(i e sulle strate"ie sono prese per consenso. >a co(unicazione fra i (e(bri & orizzontale. Tale struttura produce un (orale ed un "rado di soddisfazione altiD si adatta (e"lio a siste(i con bassa (odularit- a causa dell%alta 2uantit- di co(unicazioni c:e esi"eD s7iluppa piJ difetti di altre struttureD i(pie"a piJ te(po a portare a ter(ine un pro"ettoD (a sono i piJ indicati 2uando si ric:iede un alto "rado di socie7oF lezza. Controllato 'ecentrato (C'): Bn tea( di 2uesto tipo :a un capo c:e coordina le atti7it- e sotF tocapi responsabili delle sottoatti7it-. >e decisioni si prendono colletti7a(enteD (a l%i(ple(entaF zione delle soluzioni & distribuita fra i sotto"ruppi a cura del capo. >a co(unicazione fra sottoF "ruppi e fra persone & orizzontale. Si :a anc:e una co(unicazione 7erticale attra7erso la "erarF c:ia.Tale struttura & piJ adatta in caso di alta (odularit- e 2uindi relati7a indipendenza fra le perF sone coin7olteD produce (eno difetti ed in te(pi piJ bre7i rispetto ad una struttura //D inoltre & piJ adatto per pro"etti di "randi di(ensioni. Controllato Accentrato (CA): >e decisioni ad alto li7ello ed il coordina(ento del tea( sono afF fidati ad un capo. >a co(unicazione fra il capo ed i (e(bri del tea( & 7erticale. Tale struttura & piJ adatta in caso di alta (odularit- e 2uindi relati7a indipendenza fra le persone coin7olteD proF duce (eno difetti ed in te(pi piJ bre7i rispetto ad una struttura //D inoltre & piJ adatto per proF "etti di "randi di(ensioni.

/etto tutto 2uestoD la lo"ica conse"uenza & c:e un buon capo pro"etto abbiaD od ac2uisisca in bre7e te(poD alcune caratteristic:e:

Motivazione: >a capacit- di incora""iare @(ediante spinte e controspinteA i tecnici a dare il (eF "lio di sG *rganizzazione: >a capacit- di plas(are i processi esistenti @o di in7entarne di nuo7iA cosK da tradurre un%idea iniziale in un prodotto finale +dee ed innovazione: >a capacit- di spin"ere le persone a creare ed ad essere creati7i anc:e enF tro i li(iti stabiliti per un prodotto od un%applicazione particolare Problem ,olving: Bn buon capo pro"etto & in "rado di deter(inare i fattori tecnici ed or"anizzaF ti7i piJ i(portantiD strutturare siste(atica(ente una soluzioneD (oti7are opportuna(ente i tecniF Pa"ina ,1

In"e"neria del Soft0are ci c:e de7ono s7ilupparlaD applicare a nuo7e soluzioni le lezioni apprese nei pro"etti passati ed essere abbastanza flessibile da saper (utare direzione se i pri(i tentati7i si ri7elano infruttuosi

+dentit manageriale: Bn buon capo pro"etto de7e assu(ersi la responsabilit- del pro"etto. /e7e essere capace di tenere salda(ente le redini 2uando & necessario e di lasciare c:e i tecnici piJ preparati se"uano il proprio istinto +ncentivazione: Per accrescere la produtti7it- di un tea(D il capo pro"etto de7e rico(pensare lo spirito di iniziati7a ed i risultati e de7e di(ostrare nei fatti di tollerare c:e si prendano risc:i raF "ione7oli +nfluenza e spirito di gruppo: Bn buon capo pro"etto de7e Mle""ereN nelle personeI de7e coF "liere i se"naliD 7erbali e noD e rea"ire alle esi"enze c:e 2uei se"nali su""eriscono. /e7e (anteF nere il controllo anc:e in situazioni critic:e. ,trategie formali- impersonali: $o(prende docu(enti e la7orati @ad ese(pio codice sor"enteAD note tecnic:eD punti di controllo del pro"ettoD tabelle dei te(pi e stru(enti di controllo del proF "ettoD ric:ieste di ca(bia(enti e docu(enti relati7iD relazioni su errori e dati d%arc:i7io Procedure formali- interpersonali: $entrata sulle atti7it- di "aranzia della 2ualit-D applicate ai Mse(ila7oratiN di un pro"etto soft0areD fra le 2uali riunioni di 7erifica dello stato ed ispezioni del pro"etto e del codice Procedure informali- interpersonali: $o(prende riunioni di "ruppo per la diffusione di inforF (azioniD per la risoluzione di proble(i e per l%indi7iduazione dei re2uisiti e la distribuzione dello staff Comunicazioni elettronic.e: $o(prende la posta elettronicaD le banc:e dati elettronic:eD i siti 0eb eD per estensioneD le 7ideoconferenze Rete interpersonale: Includono discussioni infor(ali con i (e(bri del tea( e con coloro c:e sono all%esterno del pro"etto e possono a7ere esperienza od un punto di 7ista utile per i (e(bri del tea(

Bn altra cosa da considerare sono i (etodi di co(unicazione del "ruppo:

Il "rafico se"uente (ostra una ricerca fatta nel 1##5 in cui fa 7edere l%utilizzo delle tecnic:e citate ed il loro 7alore percepito. >e tecnic:e sotto la retta sono state "iudicate (eno 7alide.

Pa"ina ,2

In"e"neria del Soft0are

!rodotto
Proprio all%inizio del pro"ettoD il capo pro"etto si tro7a di fronte ad un dile((a. E"li de7e definire sti(e 2uantitati7e ed un piano or"anizzati7oD (a non dispone di dati certi. Bn%analisi approfondita dei re2uisiti del soft0are fornirebbe i dati necessari per le sti(eD (a spesso una tale analisi ric:iede setti(ane o (esi. Pe""io ancoraD i re2uisiti sono a 7olte fluidi e so""etti a ca(bia(enti nel corso del pro"etto. Tutta7ia & necessario predisporre i((ediata(ente un piano. /i conse"uenzaD il prodotto ed il proble(a de7ono essere esa(inati senza indu"io all%inizio del proF "ettoD deter(inando al(eno la portata del pro"etto e dei suoi confini. >a portata si definisce rispondendo alle do(ande se"uenti:

Contesto: in c:e (odo il soft0are in costruzione si inserir- in un siste(aD prodotto o contesto aziendale esistente e 2uali 7incoli i(pone il contesto' *bbiettivi relativi ai dati: ?uali dati 7isibili all%utente de7e produrre il soft0are' ?uali dati forF (ano il suo input' Funzionalit e prestazioni: ?uali funzioni s7ol"e il soft0are per trasfor(are i dati di input in 2uelli di output' Si de7ono considerare aspetti specifici le"ati alle prestazioni' Pa"ina ,,

In"e"neria del Soft0are >a portata del soft0are de7e essere espressa con precisione ed in (odo co(prensibile sia a li7ello (ana"eriale sia a 2uello tecnico. >%enunciato della portata de7e precisare dei limiti. In altre parole de7ono essere indicati esplicita(ente i dati 2uantitati7i @ad ese(pio nu(ero di utenti si(ultaneiD diF (ensioni di una (ailin" listD (assi(o te(po di risposta accettabileAI de7ono essere indicati i 7incoF li e le li(itazioni @ad ese(pio li(iti di (e(oria i(posti dai costiAI de7ono essere descritti i fattori facilitanti @ad ese(pio il fatto c:e "li al"orit(i necessari siano ben noti e disponibiliA. Tro7are tutti 2uesti aspetti in (aniera co(pletaD ric:iede troppo te(po. >a soluzione (i"liore & riuF scire a sco(porre il proble(a ed estrarre le funzioni piJ i(portanti @senza le 2uali il prodotto non & 2uello 7olutoAD i li(iti piJ i(portanti @senza i 2uali il prodotto non & soddisfacenteAD ed i dati princiF pali. >%obbietti7o & 2uello c:e tro7ato il contesto si riesca a risalire ai datiD funzionalit- e prestazioni senza le 2uali il prodotto non & 2uello aspettato. A7endo 2uesti dati & possibile iniziare final(ente le sti(e.

!rocesso
;or(ato il tea( e tro7ata la portata del pro"etto & "iunto il (o(ento di (ettere in (oto il processo c:e porter- alla realizzazione del prodotto. a 2uale c:e sia il processo c:e uno 7o"lia se"uireD biF so"na riuscire a pianificare le 7arie operazioni ed asse"nare le persone. Bn utile siste(a & pre7edere una tabella do7e nelle colonne 7en"ono riportate le 7arie fasi eQo atti7iF t- necessarie al processoD nelle ri":e le 7arie funzionalit- del prodottoD nell%incrocio tra ri"a e colonF na si inseriscono i 7ari co(piti necessari. Per o"ni casella sar- poi necessario asse"nare le risorseD decidere te(pi di inizio e fineD ecc. *77ia(ente i co(piti necessariD le risorse necessarieD ecc. 7ariaF no da pro"etto a pro"ettoD in 2uanto dipendono tanto dal tipo di processo sceltoD 2uanto dal prodotto c:e si 7uole realizzare.

Il principio (((())
?uesto principio prende il no(e dalle iniziali delle 6 do(ande a cui un tea( de7e saper rispondere per 7edere se il pro"etto & ben delineato:

Perc./ (0.o) si sviluppa il progetto1 >a risposta a 2uesta do(anda consente a tutte le parti di stabilire la 7alidit- dei (oti7i pratici per cui il soft0are de7e funzionare. In altre paroleD lo scopo "iustifica l%i(pe"no di personeD te(po e denaro' Cosa (0.at) verr eseguito ed entro 2uando1 >a risposta a 2ueste do(ande aiuta il tea( a stabilire i te(pi del pro"eto identificando le operazioni principali del pro"etto ed i punti fer(i riF c:iesti dal cliente. C.i (0.o) 3 il responsabile di una funzione1 All%inizio si & detto c:e il ruolo e le responsabilit- di ciascun (e(bro del tea( de7e essere ben definito. >a risposta a 2uesta do(anF da aiuta ad ottenere ciH. 'ove (0.ere) sono le responsabilit organizzative1 .on tutti i ruoli e le responsabilit- risieF dono nel tea( soft0are. Anc:e il clienteD "li utenti ed i contatti interni del cliente :anno delle reF sponsabilit-. +n 2uale modo (4o5) il lavoro verr eseguito sia tecnicamente c.e gestionalmente1 Bna 7olF ta c:e & stato definito il ca(po d%azione del prodottoD occorre definire una strate"ia "estionale tecnica del pro"etto. +n 2uale 2uantit (4o5 muc.) 3 ric.iesta ogni singola risorsa1 >a risposta a 2uesta do(anda deri7a dalle sti(e di s7iluppo sulla base delle risposte alle precedenti do(ande.

Pa"ina ,4

!"R#$ #$R*"

Pa"ina ,5

etric:e

Metriche
Vi sono 2uattro (oti7i c:e spin"ono a (isurare il processo ed il pro"etto soft0are: caratterizzareD 7alutareD pre7edereD (i"liorare. Si caratterizza per ac2uisire conoscenze sui processiD i prodotti le risorse e "li a(bienti e per stabiliF re indicazioni di base per il confronto con i prossi(i la7ori. Si 7aluta per deter(inare lo stato rispetto ai piani. >e (isurazioni sono i sensori c:e ci fanno conoF scere 2uando i pro"etti ed i processi sono fuori controlloD in (odo da poter applicare (isure corretF ti7e. Inoltre si 7aluta per stabilire il ra""iun"i(ento de"li obbietti7i di 2ualit- e per stabilire l%i(patF to dei (i"liora(enti tecnolo"ici e di processo sui prodotti e sui processi. Si pre7ede per pianificare. >a (isura per scopi di pre7isione pre7ede l%ac2uisizione di conoscenze sulle relazioni fra processi e prodotti e la creazione di (odelli per la realizzazione di tali relazioni in (odo c:e i 7alori osser7ati per deter(inati attributi possano essere utilizzati per pre7ederne altri. $i si co(porta in 2uesto (odo perc:G si 7o"liono stabilire de"li obbietti7i ra""iun"ibili nell%a(bito dei costiD dei te(pi e della 2ualit- in (odo da poter applicare le risorse appropriate. >e (isure di pre7iF sione fun"ono anc:e da base per deter(inare le tendenze in (odo da poter sti(are i costiD i te(pi e la 2ualit- sulla base dei 7alori attuali. >e proiezioni e le sti(e basate su dati storici aiutano anc:e ad analizzare i risc:i ed a se"uire 7alutazioni sul pro"etto e sul costo. Si (isura per ottenere un (i"liora(ento 2uando si raccol"ono infor(azioni 2uantitati7e c:e aiutaF no ad identificare i punti criticiD le inefficienze e le altre opportunit- di (i"liora(ento della 2ualitdel prodotto e delle prestazioni di un processo. Anc:e se i ter(ini (isuraD (isurazione e (etrica sono spesso considerati sinoni(iD & i(portante sottolineare le sottili differenze:

Misura: fornisce una (isurazione 2uantitati7a del "radoD a((ontareD di(ensioneD capacit- di un attributo di un prodotto o di un processo. >e (isure possono essere dirette @ri":e di codice proF dotteD 7elocit- di esecuzioneD (e(oria occupataD difetti rile7ati in un dato inter7allo te(poraleD ecc.A od indirette @funzionalit-D 2ualit-D co(plessit-D efficienzaD affidabilit-D facilit- di (anutenF zioneD ecc.A. Misurazione: l%atto di deter(inare la (isura. Metrica: (ette in relazioneD secondo certi criteriD le sin"ole (isure. +ndicatore: & una co(binazione di (etric:e c:e (ette in risalto certe caratteristic:e di un proF cessoD di un pro"etto o di un prodotto.

Il difetto delle (etric:e soft0are & il fatto c:e esse non (isurano 2ualcosa di tan"ibile e co(e tale non c%& accordo su cosa si de7e (isurareD co(e (isurarloD 2uali (etric:e ed indicatori adottare.

Metric%e di processo
Esiste un solo (odo razionale di (i"liorare un processo: (isurare "li attributi specificiD rica7arne una fa(i"lia di (etric:e si"nificati7e e rica7arne de"li indicatori c:e su""eriscano una strate"ia di (i"liora(ento. +li indicatori di processo forniscono infor(azioni sull%efficacia di un processo esiF stente. Sulla base di tali indicatoriD (ana"er e tecnici sono in "rado di stabilire c:e cosa funziona a do7ere e cosa no. >a raccolta delle (etric:e di processo abbraccia tutti i pro"etti in un 7asto arco di te(po. Il loro obbietti7o & 2uello di fornire indicatori c:e conducano a (i"liora(enti a lun"o ter(iF ne del processo soft0are.

Pa"ina ,!

etric:e >%efficacia di un processo soft0are si (isura indiretta(ente. A partire dalle infor(azioni deri7ate dal processo si rica7a una fa(i"lia di (etric:e. Tali infor(azioni co(prendono il nu(ero di errori scoperti pri(a della distribuzione del soft0areD i difetti co(unicati da"li utenti finaliD i prodotti diF stribuitiD il la7oro spesoD il te(po i(pie"atoD il "rado di confor(it- alle scadenze prefissate ed altre (isure. >e (etric:e di processo si rica7ano anc:e dalla (isura delle caratteristic:e di specific:e operazioni in"e"neristic:e. Si possono ad ese(pio (isurare il la7oro ed il te(po spesi nelle atti7itausiliarie e nelle altre atti7it- "eneric:e. >e (etric:e di processo possono ri7elarsi si"nificati7a(ente benefic:e per un%azienda i(pe"nata ad accrescere il proprio li7ello di (aturit- di processo. Tutta7iaD co(e tutte le (etric:eD anc:e 2ueste sono so""ette ad abusi e per 2uesto possono creare piJ proble(i di 2uanti ne risol7ano. Bn M"alateo delle (etric:e soft0areND utile per i (ana"er e coloro c:e de7ono applicare le (etric:e di processoD puH essere il se"uente:

.ell%interpretare le (etric:e utilizzare il buon senso e la sensibilit- or"anizzati7a. $o(unicare re"olar(ente i risultati a"li indi7idui ed ai tea( c:e :anno raccolto le (isure e le (etric:e. .on ser7irsi delle (etric:e per 7alutare i sin"oli. $ollaborare con i tecnici ed i tea( per i(postare obietti7i c:iari e le (etric:e c:e aiutano a ra"F "iun"erli. .on utilizzare (ai le (etric:e co(e ar(a nei confronti dei sin"oli e dei tea(. .on cosiderare ne"ati7i i dati c:e se"nalano aree proble(atic:e. ?uei dati sono solo un indicatoF re utile a (i"liorare il processo. .on dare troppa i(portanza ad una (etrica specificaD a danno di altreD pure i(portanti.

Bn indicatore di processo utile & l%analisi dei "uastiD la 2uale si s7ol"e nel se"uente (odo: 1. +li errori ed i difetti sono classificati secondo l%ori"ine @ad ese(pio nella specificaD nella lo"icaD nella (ancanza di confor(it- a"li standard e cosK 7iaA 2. Si prende nota del costo di correzione di o"ni errore o difetto. ,. Si contano errori e difetti di o"ni cate"oria e si dispon"ono le cate"orie in ordine decrescente. 4. Si calcola il costo co(plessi7o de"li errori e dei difetti di o"ni cate"oria. 5. Si analizzano i risultati per deter(inare le cate"orie c:e co(portano i costi piJ alti. 6. Si predispone un piano di (odific:e al processo tese ad eli(inare la classe di errori e difetti piJ costosa @od a ridurne la fre2uenzaA. Bna delle cose c:e puH aiutare nell%analisi dei "uasti & costruire un "rafico c:e riporti la distribuzioF ne dei difettiD di7idendoli in cause ed ori"ini.

Metric%e di progetto
>e (etric:e di pro"etto si utilizzano per scopi strate"iciI le (isure di pro"etto ser7ono fini tattici. In altre paroleD le (etric:e di pro"etto e "li indicatori deri7ati sono sfruttati dal capo pro"etto e dal tea( per adattare la pro"ressione del pro"etto e le atti7it- tecnic:e. +li indicatori di pro"etto perF (ettono al capo pro"etto di sti(are lo stato di a7anza(ento di un pro"etto in corsoD se"uire i risc:i potenzialiD scoprire aree proble(atic:e pri(a c:e la situazione di7enti criticaD re"olare il flusso del la7oro e delle operazioni e 7alutare la capacit- del tea( di controllare la 2ualit- dei prodotti. Pa"ina ,1

etric:e In "enere la pri(a applicazione delle (etric:e di pro"etto :a luo"o nella fase di sti(a. >e (etric:e raccolte dai processi passati for(ano una base dalla 2uale rica7are sti(e dell%i(pe"no e del te(po necessari per il pro"etto in corso. .el corso del pro"ettoD le (isure di i(pe"no e te(po spesi 7en"oF no confrontati con le sti(e @e con la tabella dei te(pi del pro"ettoA. unito di 2uesti datiD il capo pro"etto sor7e"lia e pilota l%a7anza(ento del pro"etto. >o scopo delle (etric:e di pro"etto & duplice: anzitutto ridurre i te(pi di s7iluppoD su""erendo "li a""iusta(enti utili ad e7itare ritardiD a (iti"are proble(i e risc:i potenzialiI in secondo luo"oD stiF (are 7ia 7ia la 2ualit- del prodotto eD se necessarioD corre""ere l%approccio tecnico per (i"liorarla.

Metric%e dimensionali
>e (etric:e di(ensionali si otten"ono nor(alizzando le (isure di 2ualit- e produtti7it- sulla base delle di(ensioni del soft0are prodotto. Esse si basano sul nu(ero di linee di codice prodotto e sono:

errori per T>*$ @(i"liaia di linee di codiceA difetti per T>*$ costo per ri"a di codice pa"ina di docu(entazione per T>*$ erroriQ(eseFuo(o >*$ per (eseFuo(o costo per pa"ina di docu(entazione ;attori u(ani @di(ensione del "ruppoD co(petenzeA ;attori proble(atici @co(plessit-D ca(bia(entoA ;attori di processo @tecnic:eD stru(entiA ;attori di prodotto @affidabilit-D prestazioniA ;attori di risorse @personeD stru(entiA

>e (etric:e di(ensionali non sono da tutti accettate in 2uanto esse non possono (isurare:

inoltre tutte le (isure basate sulle >*$ dipendono pesante(ente dal lin"ua""io di pro"ra((azione adottato e c:e il loro i(pie"o nelle sti(e esi"e un li7ello di detta"lio non se(pre facile da ra""iunF "ere @ad ese(pioD il pianificatore de7e sti(are il nu(ero di >*$ ben pri(a delle fasi di analisi e pro"ettazioneA.

Metric%e basate sulle funzioni


>e (etric:e basate sulle funzioni adottano una (isura della funzionalit- fornita dall%applicazione. Tale (isura & deno(inata function point @o punti funzioneA. Per calcolare i punti funzione si rie(pie la se"uente tabella:

Pa"ina ,#

etric:e

I para(etri di (isurazione sono i se"uenti: 6umero di input utente: si conta o"ni input dell%utente c:e fornisce al soft0are dati applicati7i diF stinti. *ccorre distin"uere "li input dalle interro"azioniD c:e de7ono essere conte""iate a parte. 6umero di output utente: si conta o"ni output destinato all%utente c:e fornisce dati applicati7i. Per output si intendono resocontiD sc:er(ateD (essa""i d%errore e cosK 7ia. I sin"oli dati contenuti in un resoconto non sono conte""iati separata(ente. 6umero di interrogazioni utente: un%interro"azione & definita co(e un input in linea c:e suscita la "enerazione di una risposta i((ediata del soft0areD nella for(a di output in linea. Si conta o"ni inF terro"azione distinta. 6umero di file: Si conta o"ni file lo"ico principale @cio& un ra""ruppa(ento lo"ico di dati c:e posF sa far parte di un database oppure un file separatoA. 6umero di interfacce esterne: Si contano tutte le interfacce le""ibili dalla (acc:ina @ad ese(pio file di dati su supporti di (e(orizzazioneAD utilizzate per tras(ettere infor(azioni ad un altro sisteF (a. Raccolti 2uesti datiD si associa ad o"ni conte""io un indice di co(plessit-. >e aziende c:e si ser7ono dei punti funzione s7iluppano criteri per deter(inare se una certa 7oce & se(pliceD (edia o co(F plessa. In o"ni caso la deter(inazione della co(plessit- resta in parte so""etti7a. Per calcolare i punti funzione @;PAD si usa la relazione se"uente: )* = totale [ )D65 )D)1 ) i ] MtotaleN & la so((a delle 7oci rica7ate dalla tabella soprastante. +li ;i @iU1I...I14A sono 7alori di a""iusta(ento della co(plessit-D basati sulle risposte alle se"uenti do(ande: 1. Il siste(a ric:iede sal7ata""i e recuperi affidabili' 2. Si ric:iedono co(unicazioni di dati' ,. $i sono funzioni di elaborazione distribuita' 4. >e prestazioni sono un fattore critico' 5. Il siste(a funzioner- in un a(biente operati7o esistenteD utilizzato a fondo' Pa"ina 4)

etric:e 6. Il siste(a ric:iede inseri(enti di dati in linea' !. >%inseri(ento di dati in linea ric:iede c:e la relati7a transazione si articoli in piJ sc:er(i o piJ operazioni' 1. I file principali sono a""iornati in linea' #. I dati d%in"resso o di outputD i file e le interro"azioni sono co(plessi' 1).>%elaborazione interna & co(plessa' 11.Il codice & stato pro"ettato per essere riutilizzabile' 12.>a pro"ettazione ric:iede anc:e con7ersione ed installazione' 1,.Il siste(a & stato pro"ettato per essere installato in piJ or"anizzazioni' 14.>%applicazione & stata pro"ettata per facilitare le (odific:e e per essere di se(plice uso da parte dell%utente finale' >a risposta ad o"nuna di 2ueste do(ande puH andare da ) @non i(portante o non applicabileA a 5 @assoluta(ente essenzialeA. >e costanti ed i pesi 7isti precedente(ente sono deter(inati e(pirica(ente. I punti funzione cosK calcolati si utilizzano per delle (isure di produtti7it- e 2ualit-:

errori per ;P difetti per ;P costi per ;P pa"ine di docu(entazione per ;P ;P per (eseFuo(o

I function point per(ettono di confrontare lo sforzo sti(ato su due siste(i di7ersiD o per pro"etti nel te(po. Tutta7ia i punti funzione sono una (isura astratta e relativa @non concreta o assolutaLA e de7ono essere adattati per o"ni or"anizzazione o do(inio.

Feature !oints
I feature points sono un adatta(ento dei function pointsD a cui 7iene a""iunta un altro para(etro di (isurazione: "li al"orit(iL Bn Algoritmo & definito co(e un proble(a co(putazionale deli(itatoD incluso per un deter(inato pro"ra((a per co(puter. >%in7ersione di una (atriceD la decifrazione di una se2uenza di bit ed il tratta(ento di un interruzione sono tutti ese(pi di al"orit(i.

%+,ect !oints
+li ob<ect points sono una (etrica basata sulle funzioniD (aD a differenza dei function pointsD essi si incentrano sui tool di ausilio c:e per(ettono di creare 7eloce(ente sc:er(ate e report. I para(etri di confi"urazione c:e prende in esa(e sono i se"uenti:

,c.ermate: Tutto ciH c:e de7e essere 7isualizzato sullo sc:er(o Report: I 7ari report c:e de7ono essere "enerati Componenti !7L: Tutto ciH c:e de7e essere costruito Ma (anoN Pa"ina 41

etric:e Ad o"nuno di 2uesti para(etri 7iene associato un peso: Object Type ,creen Report Complexity-Weight Simple Medium Difficult 1 2 2 5 , 1

1) !7L Component I 7alori 7en"ono poi so((ati insie(e ed utilizzati per ottenere i .*PD cio& "li ob<ect points c:e ten"ono conto anc:e della percentuale di o""etti riutilizzabili +O* =O*[ 1)) reuse ] 1))

/o7e: *P & il 7alore tro7ato dalla so((a precedenteD reuse & la percentuale di riutilizzo. Tro7ato il .*P 7iene calcolato il PR*/: 'evelopers e8perience and capabilit9 +CA,: &er9 lo5 Lo5 6ominal 4ig. &er9 .ig. maturit9 and capabilit9 PR*/ 4 ! 1, 25 5) Attra7erso il .*P ed il PR*/ si puH calcolare lo sforzo ric:iesto in (esiFuo(o: sforzo = +O* PR*/

Anc:e 2uiD co(e per i function pointsD i 7alori nu(erici sono dati attra7erso dati e(pirici.

Modello COCOMO
Il (odello $*$* * & un (odello c:e cerca di aiutare il capoFpro"etto a: aA calcolare lo sforzo in (esiFuo(o pre7isto per un pro"ettoD nonc:G la sua durata bA se"uire il pro"etto durante tutte le sue fasi >a for(ula principale & 2uella del calcolo per lo sforzo in (esiFuo(o: sforzo = ,size /o7e:

A & una costante (oltiplicati7a usata per calcolare "li effetti (oltiplicati7i 2uando au(enta la "randezza del pro"etto size & la "randezza del pro"etto in (i"liaia di linee di codice B & il fattore di scala c:e indica le econo(ie e le disecono(ie in base alla "randezza del pro"etF to.

Size puH essere calcolata anc:e attra7erso i punti funzione tra(ite la se"uente tabella:

Pa"ina 42

etric:e

Tali trasfor(azioni sono state realizzate attra7erso di7ersi studi @tutt%ora in corsoA. A & una costante e(piricaD (entre B & calcolata con la for(ula: - = )D#1 )D)1 . i /o7e i 5i sono dati da 5 fattori:

>a7ori precedenti ;lessibilit- di s7iluppo Risoluzioni di Arc:itetturaQrisc:i $oesione del Tea( aturit- del Processo

*"nuno di 2uesti fattori & pesato in base al loro "rado di scala @ olto bassoD bassoD (edioD altoD (olto altoD estre(a(ente altoA. Stabilire 2ual%& il loro "rado di scala lo si fa rispondendo a delle doF (andeD (entre a c:e 7alore corrisponde il "rado di scala & un calcolo e(pirico. $alcolato lo sforzo esso 7iene a""iustato in base ai Cost Driver c:e indicano 2uanto incidono le 7aF rie parti del pro"etto sullo sforzo. ?uesti $ost /ri7er sono 21 durante le fasi del pro"ettoD (a di essi Pa"ina 4,

etric:e si usano solo ! @in realt- alcuni di 2uesti 7en"ono co(binatiA 2uando si ci tro7a all%inizio del pro"etF to e biso"na sti(are i costi. I Cost Driver sono i se"uenti:

ACAP Anal3st $apabilit3 A:;P Applications EVperience CPL; Product $o(pleVit3 'A<A /atabase Size '*C= /ocu(entation to (atc: lifec3cle needs FC+L ;acilities L<:; >an"ua"e and Tool EVperience PCAP Pro"ra((er $apabilit3 PC*6 Personnel $ontinuit3 P'+F Platfor( /ifficult3 P:R, Personnel $apabilit3 P:;P Platfor( EVperience PR:; Personnel EVperience P&*L Platfor( Volatilit3 RCP; Product Reliabilit3 and $o(pleVit3 R:L> Re2uired Soft0are Reliabilit3 R=,: Re2uired Reusabilit3 ,C:' Re2uired /e7elop(ent Sc:edule ,<*R ain Stora"e $onstraint <+M: EVecution Ti(e $onstraint <**L Bse of Soft0are Tools

>a se"uente tabella indica 2uali sono i Cost Driver usati durante le sti(e iniziali:

Pa"ina 44

etric:e

A7uti i $ost /ri7erD si calcola lo sforzo (odificato: sforzoModif = sforzo /M i


i

/o7e E

sono i $ost /ri7er calcolati.


2C/D*ercentage 1))

*ttenuto lo sforzo cosK (odificatoD lo si puH usare per calcolare il te(po:


0D/1 =[ , sforzoModif
)D,, )D2 - )D)1

/o7e T/EV & il te(poD (entre S$E/Percenta"e & la percentuale del $ost /ri7er S$E/. Esistono poi delle (odific:e al (odello per prendere in cosiderazione anc:e il riusoD la con7ersione e la rein"e"nerizzazione ed il (anteni(ento.

Metric%e per la qualit&


>o scopo pri(ario dell=in"e"neria del soft0are & 2uello di produrre siste(iD applicazioni o prodotti di alta 2ualit-. Per ra""iun"erloD "li in"e"neri del soft0are de7ono applicare (etodi efficaci abbinati a stru(enti (oderniD nel contesto di un processo soft0are (aturo. Bn buon in"e"nere del soft0are @ed un buon (ana"er del settore soft0areA de7e inoltre (isurare se l=alta 2ualit- sar- ottenuta. >e (isure c:e si possono prendere in 2uesto fran"ente possono essere:

Correttezza: un pro"ra((a c:e non operi corretta(ente & di ben poco 7alore per i suoi utenti. >a correttezza & il "rado in cui il soft0are s7ol"e la funzione ric:iesta. >a (isura di correttezza piJ co(une & il nu(ero di difetti per T>*$D intendendo per difetto un=accertata (ancanza di confor(it- ai re2uisiti. ?uando si considera la 2ualit- "lobale del prodotto soft0areD i difetti sono 2uei proble(i e7idenziati da un utente del pro"ra((a dopo c:e il pro"ra((a stesso & stato rilasciato per l=utilizzo "enerale. Per "li scopi di definizione della 2ualit-D i difetti 7en"ono contaF ti dopo un periodo di te(po standardD in "enere un anno. Facilit di manutenzione: la (anutenzione & l=atti7it- piJ costosa in ter(ini di la7oro fra 2uelle del soft0areI & l=indice della facilit- con cui un pro"ra((a puH essere corretto nel caso di rile7i un erroreD adattato nel caso in cui (uti il suo a(biente o ritoccato nel caso in cui un utente desiF deri una (odifica dei re2uisiti. .on c=& (odo di (isurare diretta(ente la facilit- di (anutenzioF neD di conse"uenza si de7e ricorrere a (isure indirette. Bna se(plice (etrica orientata al te(po & il Mte(po (edio per la (odificaN @ TT$D eanFTi(eFToF$:an"eAD cio& il te(po necessario ad Pa"ina 45

etric:e analizzare la ric:iesta di ca(bia(entoD pro"ettareD i(ple(entareD collaudare e distribuire a"li utenti l=opportuna (odifica. In (edia i pro"ra((i di facile (anutenzione esibiscono un 7alore inferiore di TT$ @per (odific:e affiniA rispetto a 2uelli di difficile (anutenzione.

+ntegrit: 2uesto attributo (isura la capacit- di un siste(a di resistere ad attacc:i @sia accidentaF liD sia intenzionaliA alla sua sicurezza. +li attacc:i possono essere ri7olti a tre co(ponenti del soft0are: pro"ra((iD dati e docu(enti. Per (isurare l=inte"rit-D si de7ono defininire due altri atF tributi: la (inaccia e la sicurezza. >a (inaccia & la probabilit- @sti(ata o rica7ata da dati e(piriF ciA c:e un attacco di un certo tipo a77en"a in un certo dato spazio di te(po. >a sicurezza & la probabilit- @pari(enti sti(ata o rica7ata da dati e(piriciA c:e l=attacco sia respinto. >=inte"rit- di un siste(a si puH allora definire cosK: integrit3 = [ 1 minaccia 1 sicurezza ] do7e la so((a si estende a tutti i tipi di attacc:i =sabilit: stabilire se un prodotto & facile da usare & tra le cose piJ difficili da (isurareI nor(alF (ente si cerca di (isurare 2uattro caratteristic:e: le co(petenze fisc:e ed intelletti7e necessarie per apprendere ed utilizzare il siste(aI il te(po necessario ad ac2uisire una (oderata disin7oltuF ra nell=uso del siste(aI l=incre(ento di produtti7it- @rispetto alla soluzione sostituita dal siste(aAD (isurato 2uando il siste(a & utilizzato in (odo (oderata(ente efficienteI una 7alutaF zione so""etti7a @tal7olta rica7ata da un 2uestionarioA delle reazioni de"li utenti.

$ icienza di rimozione dei di etti


Bna (etrica della 2ualit- utile sia a li7ello di processoD sia di pro"etto & l=efficienza di ri(ozione dei difetti @/RED /efect Re(o7al Efficienc3A. In sostanza la /RE & una (isura del potere filtrante delle atti7it- di assicurazione e controllo di 2ualit- applicate nel corso di tutte le atti7it- portanti del processo. Rispetto al processo considerato nella sua interezzaD la /RE & cosK definita: /REUEQ@EW/A do7e E & il nu(ero di errori scoperti pri(a della conse"na del soft0are all=utente finale e / & il nuF (ero di difetti scoperti dopo la conse"na. Il 7alore ideale di /RE & 1D ottenuto 2uando il soft0are non presenta difetti. In un caso reale il 7aloF re di / & (a""iore di zeroD (a 2uello di /RE puH tendere ad 1. All=interno del sin"olo pro"ettoD la /RE puH ser7ire a 7alutare la capacit- di scoprire errori da parte di un tea( pri(a di passare alla successi7a atti7it- portante od al co(pito successi7o. Per fare un ese(pioD l=analisi dei re2uisiti produce un (odello suscettibile di re7isione per la ricerca e correzioF ne de"li errori. +li errori non rile7ati passano all=operazione di pro"ettazione @nella 2uale possono essere scoperti o noA. In tale contesto la /RE & ridefinita co(e se"ue: /REi U Ei Q @Ei W EiW1 A do7e Ei & il nu(ero di errori scoperti nel corso dell=atti7it- iD EiW1 & il nu(ero di errori scoperti nel corso dell=atti7it- iW1 riconducibili ad errori non rile7ati nell=atti7it- i /al punto di 7ista della 2ualit-D l=obbietti7o di un tea( @o del sin"olo in"e"nere del soft0areA & 2uello di a77icinarsi 2uanto possibile al 7alore 1 per /REi. In altre paroleD "li errori de7ono essere filtrati pri(a di passare all=atti7it- successi7a.

Pa"ina 46

etric:e

!ntegrazione delle metric%e nel processo soft'are


Bna delle cose piJ difficili delle (etric:e & introdurle all=interno di un processo soft0are. $o(e abF bia(o detto ad inizio capitolo le (etric:e ser7ono a caratterizzareD 7alutareD pre7edere e (i"liorare. a i proble(i 2uotidiani di un pro"etto lasciano poco spazio a disposizione per le 2uestioni strateF "ic:e. I capi pro"etto de7ono preoccuparsi di 2uestioni piJ i((ediate: produrre sti(e si"nificati7e sul pro"ettoD produrre siste(i di alta 2ualit-D rispettare le scadenze. PerHD 2uando il pro"etto & co(pletatoD allo s7iluppatore piacerebbe poter rispondere ad alcune doF (ande: ?uali re2uisiti :anno piJ possibilit- di (utare' ?uali co(ponenti del siste(a sono (a"F "ior(ente so""etti ad errori' ?uanti collaudi si de7ono pianificare per o"ni (odulo' ?uanti errori di ciascun tipo & ra"ione7ole attendersi dai collaudi' Si puH dare una risposta a 2ueste do(andeD a patto di a7er raccolto le (etric:e opportune e di a7erle strutturate co(e "uida tecnica. *ccorre dun2ue stabilire una piattafor(a per le 7alutazioni (etric:eD tenendo presente c:e le inforF (azioni raccolte non de7ono essere necessaria(ente radical(ente differentiD (a le stesse 7alutazioF ni (etric:e possono ser7ire per 7ari scopi. Inoltre affinc:G sia un efficace ausilio per il (i"lioraF (ento dei processi eQo per la sti(a dei costi e de"li sforziD i dati della piattafor(a de7ono a7ere i seF "uenti attributi: i dati de7ono essere ra"ione7ol(ente precisi e de7ono essere e7itate sti(e 7a":e sui pro"etti passatiI i dati de7ono essere raccolti per il (a""ior nu(ero possibile di pro"ettiI le (isure de7ono essere unifor(iD ad ese(pio il concetto di linee di codice de7e essere interpretato allo stesso (odo in tutti i pro"etti per i 2uali sono stati raccolti i datiI le applicazioni de7ono essere si(ili al laF 7oro c:e si de7e sti(are @:a poco senso utilizzare la piattafor(a di un siste(a di elaborazione batc: per sti(are un=applicazione e(bedded in te(po realeA. I dati raccolti 7en"ono tanto dal processoD 2uanto dal pro"ettoD 2uanto dal prodottoI l=insie(e di 2uesti dati ci fornisce le (isureD dalle 2uali 7en"ono elaborate le (etric:eD dalle 2uali 7en"ono estratti "li indicatori. Ideal(ente i dati necessari do7rebbero essere raccolti 7ia 7iaI purtroppo 2uesta situazione & raraD perciH la raccolta dei dati co(porta un=inda"ine storica dei pro"etti passati e la riF costruzione dei dati rile7anti.

Introdurre le metriche
?uando si decide di iniziare le (isurazioni & facile perdersi tra la (ole delle cose (isurabili. >a reF "ola nu(ero uno & se(plice: (antere le cose se(plici. O inutile a7ere a c:e fare con (oli di dati c:e non si sa o non si :a te(po di elaborare. Per inserire le (etric:e in un processo di s7iluppoD biF so"na: 1A Indentificare "li obbietti7i 2A Indentificare cosa 7o"lia(o conoscere ,A Indentificare le entit- e "li attributi necessari @c:e cosa (isurareA 4A ;or(alizzare "li obbietti7i delle (isurazioni @co(e (isurareA 5A Stabilire co(e elaborare le (isure prese @cio& sce"liere la (etrica da se"uireA 6A Stabilire "li indicatori c:e si 7o"liono prendere in considerazione Ad ese(pio ponia(oci un obbietti7o: ridurre il te(po di 7alutazione ed i(ple(entazione delle riF c:ieste di (odifica. $osa 7o"lia(o conoscere: il te(po trascorso dalla ric:iesta al ter(ine della 7aF lutazioneD l=i(pe"no per s7ol"ere la 7alutazioneD il te(po trascorso dalla 7alutazione all=asse"naF zione dell=ordine di (odifica al personaleD l=i(pe"no necessario ad apportare la (odificaD il te(po Pa"ina 4!

etric:e necessario per apportare la (odificaD "li errori scoperti durante la (odifica ed i difetti scoperti dopo c:e la (odifica & stata rilasciata al cliente. ?uali sono le entit- e "li attributi necessari e co(e forF (alizzia(o il tutto' T2ueue & il te(po trascorso @in ore o "iorniA dalla ric:iesta al ter(ine della 7aluF tazioneD 5e7al & l=i(pe"no @in personeForaA per s7ol"ere la 7alutazioneD Te7al & il te(po trascorso @in ore o "iorniA dalla 7alutazione all=asse"na(ento dell=ordine di (odifica al personaleD 5c:an"e & l=i(F pe"no @in personeForaA necessario ad apportare la (odificaD Tc:an"e & il te(po necessario @in ore o "iorniA per apportare la (odificaD Ec:an"e & il nu(ero di errori scoperti durante la (odificaD /c:an"e & il nu(ero di difetti scoperti dopo c:e la (odifica & stata rilasciata al cliente. /opo a7er raccolto 2ueF ste (isure per una serie di (odific:eD & possibile calcolare il te(po totale trascorso dalla ric:iesta di (odifica all=i(ple(entazione della stessa e la percentuale del te(po assorbito per partireD per la 7aF lutazioneD l=asse"na(ento e l=i(ple(entazione della (odifica. Analo"a(ente si puH deter(inare le percentuali dell=i(pe"no ric:iesto per la 7alutazione e l=i(ple(entazione. ?ueste 7alutazioni (etriF c:e possono essere deter(inate nel contesto dei dati di 2ualit-D Ec:an"e e /c:an"e. >e percentuali forniF scono una conoscenza del punto in cui il processo di ric:iesta della (odifica rallenta e ciH puH porF tare a contro(isure per il (i"liora(ento del processo per ridurre T2ueueD 5e7alD Te7alD 5c:an"e eQo Ec:an"e. Inoltre si puH calcolare l=efficienza della ri(ozione dei difetti c:e puH essere confrontata col te(po trascorso e con l=i(pe"no totale necessario per deter(inare l=i(patto delle atti7it- di controllo della 2ualit- sul te(po e l=i(pe"no necessario per apportare una (odifica.

Pa"ina 41

+aranzia di 2ualit- del soft0are

-aranzia di qualit del so t'are


>a S?A E soft0are 2ualit3 assurance E & un=atti7it- c:e copre tutto il ciclo di 7ita del soft0areD e si co(pone di un=atti7it- di "estione della 2ualit-D una tecnolo"ia di in"e"neria del soft0areD re7isioni tecnic:e for(ali s7olte durante il processoD una strate"ia di collaudi su piJ li7elliD una "estione della docu(entazione e delle (odific:eD una procedura c:e "arantisca la confor(it- allo standard dello s7iluppoD e infine (eccanis(i di (isurazione e stesura dei resoconti.

Cos( la qualit&?
Il controllo della 2ualit- :a co(e ele(ento cardine il controllo delle 7ariazioni da un prodotto all=alF tro: l=obietti7o di una produzione di 2ualit- & di (ini(izzare le differenze tra i prodotti. ini(izzaF re le 7ariazioni puH si"nificare (olte cose: (ini(izzare la differenza tra le risorse pre7iste e 2uelle effetti7a(ente i(pie"ateD il nu(ero di difetti del prodotto distribuitoD la 7ariabilit- dei difetti da una 7ersione all=altra dello stesso prodotto. >a 2ualit di un o""etto & una caratteristica c:e si basa su propriet- (isurabili del prodottoD cio& su 2uantit- confrontabili con de"li standard prefissatiI nel caso del soft0areD perHD 2ueste proprietM(isurabiliN sono piJ difficili da 2uantificare rispetto a"li o""etti fisici. Tutta7iaD anc:e per il softF 0are sono state standardizzate delle (etric:e c:e ri"uardano la co(plessit- ciclo(aticaD la coesioF neD il nu(ero di functionFpointsD il nu(ero di ri":e di codice. .ella 7alutazione di un prodotto si possono indi7iduare due tipi di 2ualit-:

>a 2ualit della progettazioneD relati7a all=analisi delle caratteristic:e specificate dal pro"ettista @(aterialiD tolleranzeD prestazioni ric:iesteA E & un para(etro c:e ri"uarda i re2uisitiD le specific:e e la pro"ettazione del siste(a. >a 2ualit della conformit rappresenta il "rado di aderenza dell=i(ple(entazione rispetto a 2uanto specificato nella pro"ettazione E & una caratteristica dell=i(ple(entazione.

/efinia(o controllo di 2ualit l=insie(e de"li esa(iD delle re7isioni e dei collaudi s7olti nel corso del ciclo di 7ita del soft0areD il cui scopo & di "arantire c:e il prodotto soddisfi i re2uisiti i(postiI & i(portante c:e per o"ni la7orato siano definite specific:e (isurabiliD da usare co(e (etro di (isura per 7alutare "li o""etti prodotti. >a garanzia di 2ualit consiste di funzioni di auditin" e di stesura dei resoconti del (ana"e(entI :a lo scopo di fornire al (ana"e(ent le infor(azioni necessarie a "arantire c:e il prodotto soddisfi "li obietti7i 2ualitati7i. Il costo della 2ualit & la so((a di tutti i costi sostenuti per l=atti7it- di S?A e atti7it- correlate. ?uesti costi si possono classificare co(e:

Costi di prevenzione E co(prendono i costi per la pianificazione della 2ualit-D per le re7isioni tecnic:e for(aliD per le attrezzature necessarie per i collaudiD e per l=addestra(ento del personale addetto alla S?A. Costi di stima E sono sostenuti per le atti7it- s7olte per 7alutare la 2ualit- di un prodotto nella pri(a fase di o"ni processo. Costi dei difetti E 2uesti costi sco(parirebbero se il prodotto non ri7elasse nessun difetto pri(a della conse"na al clienteI si di7idono in costi interniD c:e si 7erificano 2uando un errore 7iene riF le7ato pri(a della conse"na @rifaci(entiD riparazioniD analisi dei "uastiA ed esterniI 2uesti ulti(i sono costi le"ati ai difetti scoperti dopo il rilascio del soft0are al cliente @risposte ai recla(iD reF stituzione e sostituzione del prodottoD assistenza tecnicaD obbli":i di "aranziaA. Pa"ina 4#

+aranzia di 2ualit- del soft0are

)a garanzia di qualit& del soft'are


/ia(o una definizione piJ for(ale del concetto di 2ualit- del soft0are: la 2ualit- & 4Il rispetto dei requisiti funzionali e prestazionali enunciati esplicitamente" la conformit3 a standard di sviluppo esplicitamente documentati e le caratteristiche implicite che ci si aspetta da un prodotto software realizzato professionalmente5 /a 2uesta definizione e(er"ono tre punti fonda(entali per lo s7ol"i(ento dell=atti7it- di S?A: 1. i re2uisiti sono alla base delle (isurazioni della 2ualit-I la non confor(it- ai re2uisiti i(plica (ancanza di 2ualit-I 2. "li standard specificati definiscono i criteri da se"uire durante lo s7iluppo del soft0areD ,. anc:e i re2uisiti i(pliciti de7ono essere tenuti in cosiderazioneI un soft0are c:e rispetta i re2uiF siti espliciti (a non 2uelli i(pliciti & spesso un soft0are di scarsa 2ualit-. O i(portante ricordare c:e il "ruppo c:e si occupa dell=atti7it- di S?A s7ol"e il ruolo di rappresenF tante del clienteD e 2uindi de7e osser7are il soft0are dal punto di 7ista del cliente. >a "aranzia di 2ualit- del soft0are co(prende un insie(e di operazioni affidate a due distinti "ruppi di la7oro: un "ruppo tecnicoD ed un "ruppo responsabile della S?A 7era e propriaI 2uest=ulti(o "ruppo & responsabile della pianificazioneD della sor7e"lianzaD della re"istrazioneD dell=analisi e delF la docu(entazione della "aranzia di 2ualit-. PiJ in detta"lioD le atti7it- s7olte da un "ruppo di S?A possono essere cosK descritte:

preparazione di un piano 26, per un progetto E il piano de7e specificare:


7alutazioni da co(piere esa(i e re7isioni da co(piere standard applicabili al pro"etto procedure di stesura di resoconti e ricerca de"li errori docu(enti da produrre "rado di risposta fornita al tea( del pro"etto

partecipazione alla stesura della descrizione del processo software del processo revisione delle attivit3 di sviluppo" in modo da verificarne la conformit3 al processo fissato esame dei lavorati software previsti" per verificarne la conformit3 a quelli definiti nel processo certificazione che le deviazioni nel lavoro e nei prodotti siano documentate e gestite secondo le procedure previste registrazione delle violazioni e resoconto alla direzione aziendale

)e re$isioni del soft'are


>e re7isioni do7rebbero essere effettuate in 7arie tappe durante il processo di s7iluppoD esse :anno il co(pito di scoprire "li errori. Esistono di7ersi tipi di re7isioni: una riunione infor(ale intorno alla (acc:ina da caff& & una for(a di re7isioneD se si discute di 2uestioni tecnic:eI una presentazione for(ale del pro"etto del soft0are ad un pubblico di clientiD diri"enti e tecnici & una for(a di re7isioF neI noi ci occupia(o in particolare dei wal7through E revisioni tecnic.e formali E c:e sono re7iF sioni condotte da tecnici per altri tecnici. Pa"ina 5)

+aranzia di 2ualit- del soft0are >e re7isioni sono una sorta di filtro per il processo di s7iluppo. $o(e per i filtri dell=ac2uaD anc:e i filtri per il soft0are tendono a rallentare il MflussoN delle atti7it- di in"e"neria del soft0are. Se sono troppo poc:i il flusso sar- MsporcoN. Se sono troppi il flusso sar- troppo lento. Bna re7isione E 2ualsiasi re7isione E & un (odo di sfruttare le differenze tra le persone per: 1. sottolineare i (i"liora(enti necessari ai risultati di o"ni persona e tea(I 2. ratificare 2uelle parti di un prodotto per le 2uali non & necessaria nG desiderata alcuna (i"lioriaI ,. conferire al la7oro tecnico una 2ualit- piJ unifor(eD od al(eno piJ pre7edibile c:e non senza reF 7isioniD al fine di renderlo (e"lio "o7ernabile. >=obbietti7o principale delle re7isioni & 2uello di scoprire "li errori durante il processo di s7iluppoD per i(pedire c:e di7entino difetti dopo la conse"na del soft0are. >=o77io beneficio & c:e "li errori non si propa"ano alle fasi successi7e del processo. +i-D perc:G o"ni errore c:e si propa"a :a la diF s"raziata conse"uenza di a(pliarsi di un certo fattoreD rendendolo cosK e7identeD (a pratica(ente MincurabileN.

)e re$isioni tecnic%e formali


+li scopi di una Re7isione Tecnica ;or(ale o ;TR E ;or(al Tec:nical Re7ie0 E sono: 1. scoprire errori nelle funzioni e nella lo"ica del soft0are 2. 7erificare c:e il soft0are soddisfi i re2uisiti ,. "arantire c:e il soft0are sia rappresentato secondo "li standard predefiniti 4. accertare c:e il soft0are sia s7iluppato in (odo unifor(e 5. rendere piJ "o7ernabili i pro"etti >e ;TR per(ettono inoltre di addestrare i tecnici (eno espertiD c:e durante le re7isioni :anno occaF sione di confrontarsi con di7ersi approcci all=analisiD alla pro"ettazione e all=i(ple(entazione del soft0areD e di "arantire la sostituibilit- e la continuit- all=interno del tea( di la7oroD in 2uanto i tecF nici 7en"ono a conoscenza anc:e delle parti del soft0are a cui non :anno la7orato. 5alCt:rou":D ispezioniD re7isioni incrociate sono tutti ese(pi di ;TRI o"ni re7isione si s7ol"e sotto for(a di riunione. >a riunione per una ;TR do7rebbe rispettare alcune caratteristic:e:

de7e coin7ol"ere da , a 5 persone o"ni partecipante de7e s7ol"ere un la7oro di preparazione alla riunione c:e non duri piJ di un paio d=ore la riunione non de7e durare piJ di due ore

Bna ;TR de7e concentrarsi su piccole porzioni del soft0areI nor(al(ente l=o""etto di una ;TR & un la7orato @ad ese(pio una parte della specifica dei re2uisitiD il pro"etto detta"liato di un (oduloD il codice sor"ente di un (oduloA. $:i :a s7iluppato il la7orato infor(a al (o(ento "iusto il capoF pro"etto c:e il la7orato & finito e necessita di una re7isione. Il capo pro"etto no(ina un re7isore capoD c:e si accerta c:e il prodotto sia pronto per la re7isione e ne distribuisce la docu(entazione ai partecipanti alla re7isioneI o"ni partecipante dedica non piJ di due ore all=esa(e della docu(entaF zione fa(iliarizzando con il prodotto da re7isionare e prendento appunti su e7entuali osser7azioni. Alla riunione partecipano lo s7iluppatore del la7oratoD il re7isore capo e "li altri re7isoriI uno dei partecipanti fun"e da se"retario della riunioneD incaricato di redi"ere una sorta di 7erbale della riuF Pa"ina 51

+aranzia di 2ualit- del soft0are nioneD incentrato sulle 2uestioni i(portanti e(erse 7ia 7ia. >=;TR si apre con la presentazione delF l=a"enda e con una bre7e introduzione dello s7iluppatore. >o stesso s7iluppatore prose"ue MpercorF rendoN il la7orato e dando spie"azioniD (entre i re7isori possono inter7enire sulla base della prepaF razione c:e :anno s7olto. A (ano a (ano c:e e(er"ono errori o proble(iD il se"retario li re"istra. Al ter(ine della riunione i re7isori decidono se accettare il la7oro cosK co(=&D respin"erlo a causa di errori "ra7i oppure accettarlo con riser7aD perc:G ci sono errori non "ra7i da corre""ere @(a non occorre una nuo7a re7isioneA. *"ni re7isione de7e essere docu(entata da una relazione c:e dica 2ual & stato l=o""etto della re7iF sioneD da c:i & stata co(piutaD cosa si & scoperto e a 2uali conclusioni si & "iunti. E= i(portante diF sciplinare anc:e co(e debbano essere risolte dopo la re7isione le 2uestioni in essa solle7ate. >a relazione consiste in "enere in un (odulo di una pa"inaD e7entual(ente corredato di alle"ati. Essa 7iene a far parte della docu(entazione del pro"etto e puH essere distribuita al capo pro"etto ed a tutti "li interessati. >=elenco delle 2uestioni ser7e a due scopi: indi7iduare aree proble(atic:e del prodotto e "uidare operati7a(ente lo s7iluppatore nella fase di correzione. >=elenco delle 2uestioni & di nor(a alle"ato alla relazione.

Linee guida per le revisioni


Elenc:ia(o alcune linee guida per le re7isioni:

rivedere il prodotto" non chi l8ha sviluppato: una re7isione tecnica for(ale coin7ol"e le persone ed il loro e"o. Se ben condottaD do7rebbe lasciare ai partecipanti una sensazione di soddisfazioneI di7ersa(enteD puH creare un=at(osfera d=in2uisizione. +li errori de7ono essere e7idenziati con "entilezzaD il tono della riunione de7e essere infor(ale (a costrutti7oD la riunione non de7e proF 7ocare i(barazzo o disprezzo. Il re7isore capo de7e condurre la riunione al fine di assicurare il (anteni(ento di tono e (odalit- appropriati e de7e i((ediata(ente arrestare una re7isione di cui :a perso il controllo. fissare un8agenda e rispettarla: "li orari sono un "rande proble(a di tutte le riunioni. Bna re7iF sione tecnica for(ale de7e se"uire la traccia prefissata e "li orari stabiliti. Il re7isore capo :a la responsabilit- di far rispettare "li orari della riunione e di riprendere le persone c:e causino ritarF di in"iustificati. limitare i dibattiti: 2ualora il re7isore faccia e(er"ere un proble(aD potrebbe 7erificarsi un disacF cordo nel (erito. In7ece di spendere te(po discutendo la 2uestioneD il proble(a do7rebbe essere annotato e ripreso per ulteriori dibattiti in altre sedi. rilevare gli errori" non cercare di risolverli tutti nel corso della riunione: una re7isione non & una sessione di la7oro dedicata alla soluzione dei proble(iI spesso la soluzione puH essere affiF data allo stesso produttoreD da solo a con l=aiuto di altri. >a soluzione dei proble(i do7rebbe esF sere ri(andata a dopo la riunione di re7isione. prendere appunti: tal7olta & una buona idea c:e la persona preposta alla stesura del 7erbale prenF da appunti su una la7a"naD in (odo c:e "li altri re7isori possano controllare i ter(ini e le prioritdelle infor(azioni c:e 7en"ono re"istrate. prevedere un numero limitato di partecipanti" che giungano alla riunione preparati: due teste raF "ionano (e"lio di unaD (a 2uattordici teste non sono necessaria(ente (e"lio di 2uattro. O i(F portante cercare di li(itare al (ini(o possibile il nu(ero di persone coin7olte. PeraltroD tutti i (e(bri del "ruppo di re7isione de7ono prepararsi pri(a dell=inizio della riunione. Il re7isore

Pa"ina 52

+aranzia di 2ualit- del soft0are capo do7rebbe in7itare a stendere co((enti scritti @c:e testi(oniano il fatto c:e il re7isore :a 7iF sto il (aterialeA.

allocare risorse e prevedere tempi per le 0)R: Al fine di rendere le riunioni efficaciD esse doF 7rebbero essere pianificate co(e un co(pito da s7ol"ersi durante il processo soft0are. Inoltre de7ono essere stabiliti i te(pi di rilascio delle (odific:e c:e sono il risultato ine7itabile di una re7isione tecnica for(ale. istruire i revisori: Per apportare un contributo si"nificati7o alle riunioniD tutti i partecipanti doF 7rebbero rice7ere un=ade"uata istruzione. Essa do7rebbe co(prendere sia "li aspetti relati7i al processoD sia "li effetti psicolo"ici della re7isione. rivedere le revisioni passate: l=esa(e a posteriori puH essere utile per rile7are proble(i connessi al processo stesso di re7isione. Il pri(o prodotto da ri7edere potrebbero essere le stesse linee "uiF da per la re7isione.

#ecniche per la revisione

5alCt:rou": strutturato E & una tecnica infor(ale c:e coin7ol"e l=autore del prodotto sottoposto a re7isione e uno o piJ s7iluppatori c:e conoscono il processo di s7iluppo. >a riunione dura dai ,) ai 6) (inutiD e non & ric:iesta una docu(entazione for(ale. >ettura del codice E due o piJ s7iluppatori le""ono il codice separata(enteD poi si riuniscono inF sie(e all=autore per discuterlo. .on c=& un processo definito per la lettura del codiceD e non & riF c:iesta docu(entazione dell=esito della re7isione. Ispezione del codice E ;a"an :a definito un processo siste(atico per la lettura del codiceD c:e co(prende pianificazioneD preparazioneD ispezioneD la7orazione e docu(entazione dei risultatiI sono specificati anc:e i ruoli dei partecipanti. /urante la riunione l=autoreD o il lettore del codiceD lo parafrasa (entre i partecipanti "li ri7ol"ono do(ande c:e possano aiutare a scoprire errori o difetti. Re7isioni del soft0are E "li autori del soft0are conducono una riunione infor(ale con i lettori per stabilire il retroscena e distribuire il (aterialeI i re7isori esa(inano il (ateriale fornito sin"olar(enteD usando una lista di punti da esa(inare co(e "uida. >=autore racco"lie le liste con i punti esa(inati e consolida i risultatiD c:e 7en"ono poi presentati al "ruppo di re7isione durante una riunione. Re7isione atti7a della pro"ettazione F o"ni re7isore rice7e una lista di punti da esa(inareI di7ersi re7isori rice7ono liste di7erseD focalizzate su di7ersi insie(i di ele(enti. >=autore del la7oro sotF toposto a re7isione incontra i 7ari re7isori indi7idual(ente per esa(inare le loro osser7azioni. >ettura basata sui difetti E si parte da un (odello di possibili difetti nel docu(ento dei re2uisiti. Per o"ni classe di difetti 7iene s7iluppato un insie(e di do(ande per caratterizzare la classeI le do(ande definiscono anc:e un insie(e di passi @scenariA c:e do7rebbero essere se"uiti durante la lettura. entre si le""e il docu(ento e si se"uono i di7ersi passiD il lettore cerca di rispondere alle do(ande presenti nello scenario. Re7isioni senza riunione F possono essere altrettanto efficaci 2uanto le re7isioni basate su riunioF niI le re7isioni indi7iduali per(ettono di tro7are piJ ele(enti da risol7ereD (a tendono a tro7are (olti difetti c:e in se"uito non si ri7elano tali @falsi positiviA ed a duplicare il la7oro. Re7isioni tecnic:e "uidate da co(puter E "li sforzi sono ri7olti allo s7iluppo di soft0are per il supporto alla distribuzione dei report sui difetti rile7atiD e all=or"anizzazione di riunioni do7e i partecipanti non risiedono nello stesso luo"o. Pa"ina 5,

+aranzia di 2ualit- del soft0are

Garanzia di qualit& su base statistica


Bn possibile controllo della 2ualit- & 2uello di basarsi su dati statistici per riconoscere le aree con (a""iori proble(i e tentari di risol7erli. ?uesta tecnica "uarda a dodici fattori:

Specific:e inco(plete od errate ;raitendi(ento delle co(unicazioni col cliente /e7iazione intenzionale delle specific:e Violazione de"li standard di pro"ra((azione Errore nella rappresentazione dei dati Incoerenza nell=interfaccia tra co(ponenti Errore lo"ico nella pro"ettazione $ollaudo inco(pleto od errato /ocu(entazione i(precisa od inco(pleta Errore nella traduzione della pro"ettazione in un lin"ua""io di pro"ra((azione Interfaccia uo(oF(acc:ina a(bi"ua od incoerente Altro

Per o"nuno di 2uesti si raccol"ono dati statistici sul nu(ero totate di erroriD su 2uelli "ra7iD 2uelli (edi e 2uelli lie7i. ettendo a confronto i dati risultanti si puH decidere 2ual=& l=area su cui a"ire per (i"liorare la 2ualit-. *ltre a 2uesto si puH calcolare l=indice degli erroriI tale indice indica 2uanto 7iene (i"liorato nel co(plesso il processo soft0are dedicato alla 2ualit-. Per calcolare l=indice de"li errori @EIA 7i & biso"no:

Ei U nu(ero totale di errori scoperti nell=iFesi(a fase del processo Si U nu(ero di errori "ra7i
i

U nu(ero di errori di "ra7it- (edia

Ti U nu(ero di errori (eno i(portanti PS U di(ensione del prodotto @in >*$D istruzioni nel pro"ettoD pa"ine di docu(entazioneA all=iF esi(a fase 0sD 0(D 0t U coefficienti di peso per le tre cate"orie di erroriI i 7alori su""eriti sono 0s U 1)D 0( U ,D 0t U 1 Q EiA W 0t@Ti Q EiA

A7endo 2ueste (isure si puH calcolare un indice di faseD PIi PIi U 0s@Si Q EiA W 0(@ /I = i *I i / *2
i

*ra si puH calcolare l=indice di errore

!l Piano *+A
Il piano S?A fornisce una "uida per l=istituzione di un protocollo di "aranzia di 2ualit-. Pa"ina 54 esso a

+aranzia di 2ualit- del soft0are punto dal "ruppo S?A e dal tea( di pro"ettoD il piano fa da 2uadro di riferi(ento per le atti7it- di S?A pre7iste per o"ni pro"etto soft0are. >a sezione Introduzione descri7e lo scopo e la portata del docu(ento. .ella sezione Compiti dell826, indica 2uali atti7it- del processo soft0are sono coperte dalla "aranF zia di 2ualit-. .ella sezione Documenti e prodotti lavorati sono elencati tutti i docu(enti citati nel pianoI sono inoltre annotati "li standard applicabili. >a sezione Management descri7e il posto occupato da S?A nella struttura aziendaleD le operazione ed atti7it- di S?A e la loro collocazione entro il processo soft0areD i ruoli or"anizzati7i e le responF sabilit- relati7e alla 2ualit- del prodotto. >a sezione Documentazione descri7e @per 7ia di ri(andiA i la7orati prodotti nel corso del processo soft0areD c:e co(prendono:

docu(enti del pro"etto @ad ese(pio il piano di pro"ettoA (odelli @ad ese(pio "li ER/D le "erarc:ie di classiA docu(enti tecnici @ad ese(pio specific:eD piani di collaudiAI docu(enti per l=utente @ad ese(pio file di "uidaA

>a stessa sezione definisce inoltre il (ini(o insie(e di se(ila7orati in "rado di "arantire un=alta 2ualit-. >a sezione 2tandard" pratiche e convenzioni elenca tutti "li standard e le pratic:e applicate nel proF cesso soft0are @ad ese(pio standard per i docu(enti e per il codiceD indicazioni per le re7isioniA. Sono inoltre elencate tutte le (etric:e di pro"ettoD processo e @in certi casiA di prodottoD c:e de7ono essere raccolte nel corso del processo. >a sezione Revisioni ed esami precisa 2uali re7isioni ed esa(i de7ono essere s7olti dal tea( di s7iF luppoD dal "ruppo S?A e dal cliente. Per o"ni re7isione ed esa(e de7e indicare per so((i capi la tecnica da applicare. >a sezione 0est ri(anda al piano ed alle procedure per i collaudi del soft0are. Essa definisce inoltre i re2uisiti di re"istrazione storica. .ella sezione Resoconto di problemi ed azione correttiva si definiscono le procedure di stesura di resocontiD controllo e risoluzione de"li errori e dei difettiD oltre ad indi7iduare "li incaricati di tale atti7it-. Il resto del piano & dedicato a"li stru(enti ed ai (etodi su cui po""iano le atti7it- di S?AD alle proF cedure di "estione della confi"urazione soft0are per il "o7erno del ca(bia(entoD alla definizione dei (odi di "estione del contrattoD ai (etodi per asse(blareD custodire e (antenere i recordD all=adF destra(ento necessario per soddisfare le esi"enze del pianoD ai (etodi per indi7iduareD 7alutareD sorF 7e"liare e controllare i risc:i.

Pa"ina 55

+estione delle confi"urazioni Soft0are

-estione delle con igurazioni So t'are


?uando si realizza del soft0areD 7i sono se(pre dei ca(bia(enti. E poic:G tali ca(bia(enti si 7eriF ficanoD occorre controllarli in (odo efficace. >a "estione delle confi"urazioni soft0are & un insie(e di atti7it- pro"ettate con lo scopo di controllare i ca(bia(enti tra(ite l=identificazione dei prodotti c:e possono ca(biareD la definizione delle relazioni fra di essiD la definizione dei (eccanis(i per la "estione delle 7ersioni di 2uesti prodottiD il controllo delle (odific:e i(poste e producendo re7isioF ni e report sulle (odific:e ese"uite. >a gestione delle configurazioni software @,CMD Soft0are $onfi"uration ana"e(entA & un=atti7iF t- ausiliariaD c:e abbraccia tutto il processo soft0are. Bn ca(bia(ento puH a77enire in 2ualsiasi (o(entoI le atti7it- di S$ :anno lo scopo di riconoscere il ca(bia(entoD controllarloD "arantire c:e sia opportuna(ente i(ple(entato e riferire a"li interessati l=a77enuto ca(bia(ento. a cos=& una confi"urazione soft0are' Bna confi"urazione soft0are & un=insie(e di pro"ra((i @nella for(a sor"ente ed ese"uibileAD docu(enti c:e descri7ono i pro"ra((i @sia per i tecniciD sia per "li utentiA e strutture dati @contenute nei pro"ra((i od esterneA. *"nuno di 2uesti ele(enti puH do7er ca(biare senza prea77iso in 2ualsiasi (o(ento del ciclo di 7ita del soft0are. ?ual=& l=ori"ine dei ca(bia(enti' >a risposta a 2uesta do(anda & tanto 7aria 2uanto la natura dei ca(bia(enti. Si possono perH indi7iduare 2uattro fonti principali di ca(bia(ento:

nuo7e condizioni aziendali o di (ercatoD c:e dettano un ca(bia(ento nei re2uisiti del prodotto o nelle re"ole aziendaliI nuo7e esi"enze della clientelaD c:e ric:iedono una (odifica nei dati prodotti da un siste(a inforF (ati7oD nella funzionalit- di un prodotto o nel ser7izio offerto da un siste(a basato sui co(puF terI la rior"anizzazione o la riduzione delle di(ensioni dell=aziendaD c:e causa un ca(bia(ento nelle precedenze fra pro"etti e nella struttura dei tea( addetti allo s7iluppo del soft0areI 7incoli finanziari o di te(po c:e costrin"ono a ridefinire il siste(a od il prodotto.

>a "estione delle confi"urazioni soft0are & un insie(e di atti7it- ideate per "estire le (odific:e per tutto il ciclo di 7ita del soft0are. >a "estione delle confi"urazioni soft0are si basa sul concetto di documento ac2uisito: Bna specifiF ca od un prodotto for(al(ente re7isionato ed accettatoD c:e ser7e in se"uito da fonda(ento di un ulteriore s7iluppo e c:e puH essere (odificato solo attra7erso procedure for(ali di controllo del ca(bia(ento. Per descri7ere il concetto si puH ricorrere ad un=analo"ia: *sser7ando le porte di una cucina di un "rande ristoranteD si puH 7edere co(e esse siano contrasse"nate dalle scritte E.TRATA ed BS$IF TA. >e porte :anno dei fer(i c:e consentono la loro apertura solo nella direzione opportuna. Se un ca(eriere prende un piatto pronto dalla cucinaD lo (ette su un 7assoio e subito si accor"e di a7er preso il piatto sba"liatoD e"li puH sostituirlo con il piatto "iusto in (odo 7eloce ed infor(ale pri(a di lasciare la cucina. SeD tutta7iaD e"li esce dalla cucinaD conse"na il piatto al cliente e solo in 2uesto (o(ento 7iene infor(ato del suo erroreD de7e se"uire una procedura fissata: 7erificare sulla nota se c=& stato un erroreD scusarsi sentita(enteD ritornare in cucina attra7erso la porta di E.TRATAD spieF "are il proble(a e cosK 7ia. Bn docu(ento ac2uisito & analo"o alla porta della cucina del ristorante. Pri(a c:e un ele(ento delF la confi"urazione soft0are sia di7entato un docu(ento ac2uisitoD le (odific:e possono essere apportate in (odo 7eloce ed infor(ale. Tutta7iaD una 7olta stabilito un docu(ento ac2uisitoD & co(e Pa"ina 5!

+estione delle confi"urazioni Soft0are se si fosse passati attra7erso l=e2ui7alente di una porta a senso unico. Si possono ancora apportar (odific:eD (a ora & necessario applicare una deter(inata procedura for(ale c:e 7aluti e 7erific:i ciascuna (odifica. .ell=in"e"neria del soft0areD definia(o un docu(ento ac2uisito co(e un Mpunto criticoN nello s7iF luppo del soft0areD se"nato dalla conse"na di un ele(ento della confi"urazione soft0are e dall=apF pro7azione di tale ele(entoD ottenuta (ediante una re7isione tecnica for(ale. Blteriori (odific:e all=arc:itettura del pro"ra((a @contenuta nella specifica di pro"ettazioneA potranno essere apportate solo dopo la loro 7alutazione ed appro7azione. Bn ele(ento di confi"urazione del soft0are & anc:e detto ,C+ @Soft0are $onfi"uration Ite(A od *ggetto della Configurazione. ?uando esso di7iene un docu(ento ac2uisito esso 7iene inserito alF l=interno di un databaseD o repositor9D do7e puH essere preso per essere utilizzato nelle altre parti del pro"etto. Tutta7iaD ribadiscoD tale o""etto non potr- essere piJ (odificatoD a (eno c:e non si passi attra7erso tutte le atti7it- della "estione della confi"urazione del soft0are. Proprio perc:G 7iene riuF tilizzatoD un o""etto della confi"urazione :a spesso 7arie dipendenze con altri o""etti della confi"uF razione.

Individuazione degli oggetti della con igurazione


Per essere tenuti sotto controlloD "li ele(enti della confi"urazione de7ono rice7ere ciascuno un no(e ed essere strutturati secondo uno sc:e(a orientato a"li o""etti. Si possono indi7iduare due tipi di o""etti: o""etti di base ed o""etti a""re"ati. Bn o""etto di base & una Munit- testualeN prodotF ta da un tecnico nel corso di analisiD pro"ettazioneD stetura del codice o collaudo. Ad ese(pioD un o""etto di base puH essere una parte della specifica dei re2uisitiD il listato di un co(ponente od una serie di casi di pro7a utilizzati per collaudare il codice. Bn o""etto a""re"ato & una collezione di o"F "etti di base o di altri o""etti a""re"ati. Ad ese(pio una MSpecifica di pro"ettazioneN & un o""etto a""re"ato in 2uanto & in realt- un elencoD dotato di no(eD co(prendente Pro"ettazione dei datiD ProF "ettazione arc:itetturaleD Pro"ettazione dei (oduliD Pro"ettazione delle interfacce. Esso contiene nient=altro c:e dei puntatori a 2uesti altri co(ponenti. *"ni o""etto & indi7iduato da una serie di caratteristic:e: un no(eD una descrizioneD un elenco di riF sorse ed una MrealizzazioneN. Il no(e & una se2uenza di caratteri c:e indi7idua uni7oca(ente l=o"F "etto. >a descrizione & un elenco di ele(enti c:e specificano: il tipo di o""etto @ad ese(pio docuF (entoD pro"ra((aD datoAD un=identificatore di pro"ettoD infor(azioni di 7ersioni o (odifica. >e riF sorse sono entit- forniteD elaborateD ric:ia(ate od in altro (odo ric:ieste dall=o""etto. Tipi di datiD funzioni specific:e o perfino no(i di 7ariabili sono ese(pi di ciH c:e puH fun"ere da risorsa per un o""etto. >a realizzazione & un puntatore all=unit- testualeD nel caso de"li o""etti baseD ed un puntaF tore nulloD nel caso di o""etti a""re"ati. .ell=indi7iduazione di o""etti della confi"urazione si de7e tener conto anc:e delle relazioni fra "li o""etti. Bn o""etto puH essere MparteFdiN un o""etto a""re"ato. >a relazione MparteFdiN deter(ina una "erarc:ia fra "li o""etti. .on & realistico supporre c:e le relazioni fra o""etti si li(itino a 2uelle "erarc:ic:eI spesso esistono relazioni orizzontali fra o""etti in ra(i di7ersi della "erarc:ia. Ad ese(pio un (odello dei dati puH essere colle"ato ad un dia"ra((a dei flussi di dati ed ad una fa(iF "lia di casi di pro7a e ciH for(a una classe di e2ui7alenza specifica. ?uesto tipo di relazione & una relazione di Mcolle"atoFaN. >a relazione MparteFdiN 7i"e all=interno di un o""etto co(postoD (entre il secondo colle"a un o""etto a""re"ato @il (odello datiA ed un o""etto base @classi di casi di pro7aA. >e relazioni fra "li o""etti della confi"urazione si possono rappresentare (ediante l=uso di I> @ odule Interconnection >an"ua"e o lin"ua""io di connessione di (oduliA. ?uesto lin"ua""io indiF caD per o"ni o""ettoD 2uali datiD funzioni e strutture rende disponibiliD di 2uali :a biso"no @relazioni Pa"ina 51

+estione delle confi"urazioni Soft0are Mcolle"atoFaNA e da cosa & co(posto @relazioni MparteFdiNA. Anc:e l=uso di dia"ra((i di classi o di casi d=uso @co(e 7edre(o 2uando parlere(o dell=Bnified ProcessAD ecc. puH aiutare a tro7are le relazioni tra "li o""etti.

Controllo delle $ersioni


?uando un o""etto & di7enuto docu(ento ac2uisito ed & stato inserito nel repositor3D da lK puH esseF re prele7ato per il suo utilizzo. .or(al(ente i repositor3 per(ettono di sce"liereD oltre all=identificatore dell=o""ettoD anc:e una seF rie di attributiD c:e possono essere se(plici co(e il nu(ero di 7ersione od estre(a(ente co(plicati co(e una serie di 7ariabili booleane c:e indicano 2uali funzioni sono state (odificate. ?uesto per(ette una certa flessibilit-I infatti si puH: tener traccia delle (odific:e apportateD s7ilupF pare 7ersioni differenti @ad ese(pio partendo dalla 7ersione 1.1D si "enerano due 7ersioni paralleleD la 1.1.1 e la 1.2AD sce"liere 2uale 7ersione utilizzare e costruire 7arianti @ad ese(pio si potrebbe coF struire un o""etto a""re"ato $ c:e usi con i (onitor a colori un o""etto AD (entre con i (onitor bianco e nero usi un o""etto BI in 2uesto caso di $ esisterebbero un=unica 7ersioneD (a due 7arianF tiA.

Controllo del cambiamento


Il controllo dei ca(bia(enti & fonda(entale. a le forze c:e lo rendono necessario lo rendono anF c:e fastidioso. $i preoccupia(o dei ca(bia(enti poic:G una piccola perturbazione del codice puH portare "ra7i proble(i nel prodotto. a puH anc:e corre""ere un "rosso errore od atti7are una nuoF 7a funzionalit-. $i preoccupia(o dei ca(bia(enti perc:G un sin"olo s7iluppatore puH (ettere a riF sc:io il pro"ettoI (a lo stesso s7iluppatore potrebbe (a"ari a7ere delle idee brillanti ed il processo di controllo di un "rosso ca(bia(ento potrebbe scora""iare 2uesta creati7it-. $i si tro7aD dun2ueD da7anti a dei fattori da bilanciare: troppo controllo sui ca(bia(enti e si creano proble(iI troppo poco e si creano altri proble(i. ;er(o restandoD 2uindiD 2uesti due puntiD un proF cesso di controllo dei ca(bia(enti & cosKD sc:e(atica(enteD rappresentato @7edi pa"ina se"uenteA:

Pa"ina 5#

+estione delle confi"urazioni Soft0are


Si riconosce l=esi"enza di una (odifica

Ric:iesta di (odifica dall=utente

>o s7iluppatore 7aluta la ric:iesta

Si produce una relazione

>=autorit- di controllo delle (odific:e decide

>a ric:iesta & posta in codaI si "enera un E$* Asse"nazione di indi7idui a"li o""etti della confi"urazione Estrazione de"li ele(enti della confi"urazione Effettuazione della (odifica Esa(e della (odifica Reinseri(ento de"li o""etti (odificati Si stabilisce un docu(ento ac2uisito per il collaudo Atti7it- di "aranzia di 2ualit- e collaudo Ratifica delle (odific:e da includere nella successi7a 7ersione @re7isioneA $ostruzione della nuo7a 7ersione del soft0are Esa(e della (odifica a tutti "li ele(enti della confi"urazione Inseri(ento delle (odific:e nella nuo7a 7ersione /istribuzione della nuo7a 7ersione

Ric:iesta respinta >=utente 7iene infor(ato

Bna ric:iesta di ca(bia(ento @7edi a7anti per un (odello for(aleA 7iene sottoposta e 7alutata per stabilire la sua 7alidit- tecnicaD i potenziali effetti collateraliD l=i(patto "lobale su"li altri o""etti delF la confi"urazione e sulle funzioni di siste(a ed i costi pre7isti. I risultati della 7alutazione 7en"ono presentati co(e un report dei ca(bia(enti @7edi a7anti per un (odello for(aleA c:e 7iene utilizzato dall=autorit- preposta al controllo dei ca(bia(entiD una persona od un "ruppo di persone c:e prende la decisione finale sullo stato e la priorit- del ca(bia(ento. Per o"ni ca(bia(ento appro7ato 7iene "enerato un ordine di ca(bia(ento @E$* E En"ineerin" $:an"e *rderD 7edi a7anti per 7edere un (odello for(aleA. ?uesto ordine descri7e i ca(bia(enti da ese"uireD i 7incoli da rispettare ed i criF teri di re7isione. >=o""etto da (odificare 7iene estratto dall=arc:i7io del pro"ettoD 7iene ese"uito il ca(bia(ento e 7en"ono applicate le atti7it- appropriate di "aranzia di 2ualit-. >=o""etto 7iene poi reinserito nell=arc:i7io e 7en"ono utilizzati "li appropriati (eccanis(i di controllo della 7ersione per creare la 7ersione successi7a del soft0are. >e operazioni di reinseri(ento e di estrazione coin7ol"ono due aspetti i(portanti: il controllo de"li accessi e la sincronizzazione. Il controllo degli accessi "o7erna i diritti di accedere ad un deter(inaF to ele(ento della confi"urazione e di (odificarlo da parte dei tecniciI la sincronizzazione "arantisce Pa"ina 6)

+estione delle confi"urazioni Soft0are c:e le (odific:e s7olte si(ultanea(ente da persone di7erse non si annullino l=una con l=altra. In seF "uito all=appro7azione di una ric:iesta e sulla base dell=E$* relati7oD un tecnico estrae un ele(ento della confi"urazione. Bna funzione di controllo de"li accessi "arantisce c:e il tecnico sia autorizzaF to all=estrazioneI il (eccanis(o di sincronizzazione (arca l=o""etto nel database cosK da i(pedirne o"ni altra (odifica fino al suo reinseri(ento. Si noti c:e resta possibile estrarre delle copieD (a le (odific:e sono i(pedite. Il tecnico (odifica una copia del docu(ento ac2uisitoD detta M7ersione estrattaN. /opo le operazioni di S?A ed i collaudiD l=o""etto (odificato 7iene reinserito e la nuo7a 7ersione del docu(ento ac2uisito 7iene sbloccata rispetto ad altre ric:ieste di (odifica. Abbia(o detto c:e una risc:iesta di ca(bia(ento de7e essere appro7ata da un=autorit- preposta al controllo dei ca(bia(enti. /ato c:e o"ni o""etto della confi"urazione :a le"a(i con altri o""etti della confi"urazioneD l=autorit- preposta al controllo dei ca(bia(enti 7aria dal se(plice capo proF "ettoD per una (odifica locale c:e non interessa altri (oduli @no(e delle 7ariabili interneD ad ese(F pioAD ad un=insie(e di esperti @rappresentanti dei settori soft0areD :ard0areD databaseD assistenzaD (arCetin" e cosK 7iaAD se la (odifica coin7ol"e altri o""etti od entra in (erito ad altri ca(pi @ca(F bia(ento dell=interfaccia utenteD ad ese(pioA. Alcune do(ande c:e l=autorit- si de7e porre sono: ?uali effetti :a la (odifica sull=:ard0are' E sulle prestazioni' In c:e (odo puH ca(biare la perF cenzione c:e il cliente :a del prodotto' $o(e incide sulla 2ualit- e sull=affidabilit-'

$sami della con igurazione


Bna 7olta c:e la ric:iesta di (odifica & stata accettataD & stato prodotto l=E$* e si & effuttata la (oF dificaD sor"e una do(anda: $o(e si puH "arantire c:e la (odifica sia stata corretta(ente effettuata' In due (odi: le re7isioni tecnic:e for(aliD descritte nel capitolo sulla ?ualit- del Soft0areD e l=esaF (e della confi"urazioneD c:e andre(o a descri7ere di se"uito. Bn esame della configurazione software co(pleta la re7isione tecnica for(aleD analizzando le caratF teristic:e dell=o""etto "eneral(ente i"norate dalla re7isione. >=esa(e de7e rispondere alle do(ande se"uenti: 1. >a (odifica specificata nell=E$* & stata effettuata' Si sono a""iunte altre (odific:e' 2. O stata s7olta una re7isione tecnica for(ale per 7alutare la correttezza sul piano tecnico' ,. Il processo soft0are & stato se"uito e "li standard di in"e"neria del soft0are sono stati applicati corretta(ente' 4. >a (odifica & stata (essa in risalto nello S$I' Sono stati specificati l=autore e la data dell=operaF zione' +li attributi dell=ele(ento della confi"urazione riflettono la (odifica' 5. Sono state ese"uite le procedure S$ per annotareD re"istrare e riferire la (odifica' 6. Sono stati opportuna(ente a""iornati tutti "li ele(enti della confi"urazione correlati'

Relazioni sulla situazione


>a stesura di resoconti & tra le atti7it- piJ i(portanti del processo di controllo e "estione del ca(F bia(ento. Infatti tali resoconti ser7ono per capire: c:e cosa & accadutoD c:i ne & il responsabileD 2uando & accadutoD c:e cosa ne subisce le conse"uenze. Inoltre i resoconti possono essere collocati in un database in lineaD cosicc:G s7iluppatori ed addetti alla (anutenzione possano accedere alle infor(azioni sulle (odific:e per parola c:ia7e. Inoltre peF riodica(ente 7iene co(pilato un resoconto sullo stato della confi"urazione per tenere a""iornati la direzione e lo staff di o"ni ca(bia(ento i(portante.

Pa"ina 61

+estione delle confi"urazioni Soft0are I resoconti sullo stato della confi"urazione s7ol"ono un ruolo 7itale nella riuscita di un pro"etto di s7iluppo di soft0are di "randi di(ensioni. >=alto nu(ero di persone coin7olte spesso fa sK c:e Mla (ano sinistra non sappia cosa fa la destraN. PuH capitare c:e due persone tentino di (odificare lo stesso o""etto con scopi contrastanti. Il tea( puH passare (esi interi costruendo pro"ra((i sulla base di una specifica :ard0are obsoleta. Bna persona c:e sarebbe in "rado di rile7are le conse"uenF ze dannose di una (odifica propostaD non sa c:e la (odifica & in effetti "i- in corso. >a stesura di resoconti sullo stato della confi"urazione contribuisce ad eli(inare proble(i di 2uesto "enere (iF "liorando la 2ualit- delle co(unicazioni fra il personale.

&ocumenti ormali
?ui di se"uito 7en"ono e7idenziati i 7ari (odelli for(ali: la ric:iesta di ca(bia(entoD il report dei ca(bia(entiD l=E$*D il confi"uration audit reportD cio& il docu(ento c:e 7iene co(pilato 2uando il ca(bia(ento de7e essere propa"atoD ed il resoconto sullo stato della confi"urazione.
*oft'are C%ange Request ,Ric%iesta di cambiamento-

?uesto docu(ento 7iene "enerato 2uando 7iene ric:iesto un ca(bia(ento. 1$? +dentificazione dello ,C+ ?uesta sezione identifica lo S$I per il 2uale il ca(bia(ento & ric:iesto. 1$1 6ome- identificazione e descrizione dello ,C+ Ven"ono specificati il no(eD il nu(ero di 7ersioneQre7isioneQ7ariante dello S$ID nonc:G il nu(eF ro delle pa"ine se 7i & un docu(ento c:e lo ri"uarda. Bna bre7e descrizione & data. 1$ Ric.iedente Il no(e della persona c:e ric:iede il ca(bia(ento 1$! +nformazioni di contatto $o(e contattare il ric:iedente @ser7e se biso"na far"li do(ande specific:eA. 1$" 'ata- luogo ed ora /o7e e 2uando il ca(bia(ento & stato ric:iesto $? 'escrizione del cambiamento ?uesta sezione presenta una bre7e descrizione della ric:iesta di ca(bia(ento $1 'escrizione ?uesta sezione presenta una detta"liata descrizione delle circostanze c:e :anno partecipato alla ric:iesta del ca(bia(ento e la ric:iesta nel desiderata. $1$1 Circostanze Infor(azioni di BacC"round ri"uardanti la ric:iesta. $1$ :sempi Infor(azioni di supporto co(e sta(pe di un report contenenti errori o un=incorretta i((a"ine nello sc:er(o $1$! +l cambiamento Bna discussione detta"liata sul ca(bia(ento ric:iesto. Pa"ina 62

+estione delle confi"urazioni Soft0are $ Ragioni e giustificazione ?uesta sezione discute perc:G il ca(bia(ento & ric:iesto e la "iustificazione per la ric:iesta. $! +nteresse percepito >a percezione del ric:iedente sull=interesse del ca(bia(ento. $" Alternative >a percezione del ric:iedente su o"ni possibile alternati7a al ca(bia(ento. $# Priorit ric.iesta >a priorit- asse"nata dal ric:iedente sul la7oroD "eneral(ente scelta da una scala di 5 possibili 7alori.
*oft'are C%ange Report ,Report dei cambiamenti-

?uesto docu(ento 7iene "enerato una 7olta 7alutato il ca(bia(ento @cio& una 7olta stabilita la sua 7alidit- tecnicaD i potenziali effetti collateraliD l=i(patto "lobale su"li altri o""etti della confi"urazioF ne e sulle funzioni di siste(a ed i costi pre7istiA. 1$? +dentificazione dello ,C+ ?uesta sezione identifica lo S$I per il 2uale il ca(bia(ento & stato ric:iesto. 1$1 6ome- identificazione e descrizione dello ,C+ Ven"ono specificati il no(eD il nu(ero di 7ersioneQre7isioneQ7ariante dello S$ID nonc:G il nu(eF ro delle pa"ine se 7i & un docu(ento c:e lo ri"uarda. Bna bre7e descrizione & data. 1$ Ric.iedente Il no(e della persona c:e ric:iede il ca(bia(ento. 1$! &alutatore Il no(e della persona c:e :a 7alutato la ric:iesta di ca(bia(ento. 1$" +nformazioni di contatto $o(e contattare il ric:iedente od il 7alutatore @ser7e se biso"na far"li do(ande specific:eA. 1$# 'ata- luogo ed ora ?uando e do7e il report dei ca(bia(enti & stato "enerato. $? &alutazione del cambiamento ric.iesto ?uesta sezione presenta una bre7e 7alutazione sulla ric:iesta di ca(bia(ento. $1 'escrizione degli ,C+ interessati ?uesta sezione discute "li S$I interessati dalla ric:iesta di ca(bia(ento. $ Categoria del cambiamento ?uesta sezione classifica il ca(bia(ento in una cate"orie di ca(bia(ento @/i baseD funzionaleD fisicaD 7edi il $onfi"uration Audit Report piJ sotto per le spie"azioni delle cate"orieA. $! ,copo del cambiamento >a 7alutazione del 7alutatore sullo scopo del ca(bia(ento includendo una lista di tutti "li S$I Pa"ina 6,

+estione delle confi"urazioni Soft0are interessati e di tutti "li utenti c:e do7ranno essere infor(ati. $!$1 Ric.iesta lavoro tecnico Bna descrizione del la7oro ric:iesto per co(pletare il ca(bia(ento $!$ Risorse speciali e tools Tools od altre risorse speciali ric:ieste sono annotate 2ui. $" :ffetti di +nteroperabilit >=i(patto del ca(bia(ento su altri siste(i. $# Risc.io tecnico Sono descritti i risc:i associati con la descrizione dei ca(bia(enti. !$? &alutazione del costo ?uesta sezione presenta una 7alutazione del costo della ric:iesta del ca(bia(ento includendo un sti(a dello sforzo e del te(po ric:iesti. "$? Raccomandazioni @ 'isposizioni ?uesta sezione presenta la racco(andazione del 7alutatore ri"uardante il ca(bia(entoD la sua prioF rit- internaD e le ulti(e disposizione sul ca(bia(entoD basati per una futura 7alutazione da parte delF la autorit- preposta al controllo dei ca(bia(enti. "$1 Raccomandazione Il ca(bia(ento 7a fatto oppure noD tenendo conto delle 7arie 7alutazioni' "$ Priorit interna ?uanto & i(portante 2uesto ca(bia(ento alla luce del la7oro c:e de7e essere effettuato e sulle altre considerazioni ri"uardanti il business Q prodotto' "$! 'isposizioni Se il ca(bia(ento andr- fatto: 2uando'
.ngineering C%ange Order ,.CO-

?uesto docu(ento 7iene prodotto una 7olta c:e il ca(bia(ento & stato appro7ato 1$? +dentificazione dello ,C+ ?uesta sezione identifica lo S$I per il 2uale il ca(bia(ento 7err- fatto. 1$1 6ome- identificazione e descrizione dello ,C+ Ven"ono specificati il no(eD il nu(ero di 7ersioneQre7isioneQ7ariante dello S$ID nonc:G il nu(eF ro delle pa"ine se 7i & un docu(ento c:e lo ri"uarda. Bna bre7e descrizione & data. 1$ Ric.iedente Il no(e della persona c:e :a ric:iesto il ca(bia(ento. 1$! &alutatore Il no(e della persona c:e :a 7alutato la ric:iesta del ca(bia(ento. 1$" +nformazioni di contatto Pa"ina 64

+estione delle confi"urazioni Soft0are $o(e contattare il ric:iedente ed il 7alutatore @ser7e se biso"na far"li do(ande specific:eA. $? 'escrizione del cambiamento c.e deve essere fatto ?uesta sezione presenta una bre7e descrizione del ca(bia(ento. $1 'escrizione deli ,C+ interessati ?uesta sezione discute "li S$I c:e saranno interessati dalla ric:iesta di ca(bia(ento. $ Categoria del cambiamento ?uesta sezione classifica il ca(bia(ento in una cate"oria di ca(bia(ento @/i baseD funzionaleD fisicaD 7edi il $onfi"uration Audit Report piJ sotto per le spie"azioni delle cate"orieA. $! ,copo del cambiamento >a 7alutazione del 7alutatore sullo scopo del ca(bia(ento includendo una lista di tutti "li S$I interessati e di tutti "li utenti c:e do7ranno essere infor(ati. $!$1 Ric.iesta lavoro tecnico Bna descrizione del la7oro ric:iesto per co(pletare il ca(bia(ento $!$ Risorse speciali e tools Tools od altre risorse speciali necessarie. $" :ffetti di +nteroperabilit >=i(patto del ca(bia(ento su altri siste(i. $# Risc.io tecnico Sono descritti i risc:i associati con la descrizione dei ca(bia(enti. !$? Analisi e progettazione delle modific.e Bna bre7e descrizione delle (odific:e al (odello di analisi e pro"ettazione c:e sono ric:ieste. !$1 'escrizione delle modific.e al modello di analisi I ca(bia(enti ric:iesti al (odello di analisi sono descritti. I (odelli di datiD funzioni e co(porF ta(enti sono tutti considerati. !$ 'escrizione delle modific.e al modello di progettazione I ca(bia(enti ric:iesti al (odello di pro"ettazione sono descritti. I (odelli di datiD arc:itettureD interfacce e li7elli di co(ponenti sono tutti considerati. "$? Re2uisiti di validazione Bna descrizione delle atti7it- di S?A e di approccio al collaudo ric:iesti per assicurare c:e il ca(F bia(ento sia fatto senza effetti collaterali. "$1 Piano rivisto /escri7e il tipo di re7isione c:e de7e essere condotto. "$ Piano di test /escri7e i test di re"ressione ed i nuo7i test c:e saranno ric:iesti.

Pa"ina 65

+estione delle confi"urazioni Soft0are


Configuration Audit Report

?uesto docu(ento 7iene prodotto una 7olta c:e il ca(bia(ento & stato attuato 1$? +nformazioni sullAaudit Bre7e descrizione dell=audit 1$1 <ipo di Audit Viene indicato il tipo di Audit "enerato. Esso puH essere:

'i base (Baseline): la (odifica ri"uarda i re2uisitiD il (odello di analisi o 2uello di pro"ettaF zione Funzionale (Functional): la (odifica ca(bia funzionalit-D perfor(anceD operazioni possibiliD docu(enti supportatiD sicurezzaD ecc. di uno S$I Fisica (P.9sical): la (odifica ca(bia :ard0areD soft0areD docu(entazione @tecnicaD utenteD strutture datiAD pro"ettazione @intesa in senso in7erso: un (odulo di7iso in due ad ese(pioAD ecc. di una S$I

1$ 'ata dellAaudit Viene indicata la data in cui & stato "enerato l=audit 1$! Responsabile dellAaudit $:i :a "enerato l=audit $? +dentificazione dello ,C+ ?uesta sezione identifica lo S$I per il 2uale il ca(bia(ento & stato fatto. $1 6ome- identificazione e descrizione dello ,C+ Ven"ono specificati il no(eD il nu(ero di 7ersioneQre7isioneQ7ariante dello S$ID nonc:G il nu(eF ro delle pa"ine se 7i & un docu(ento c:e lo ri"uarda. Bna bre7e descrizione & data. $ Responsabile Il no(e dellaQe personaQe c:e :a curato il ca(bia(ento. $! +nformazioni di contatto $o(e contattare il responsabile @ser7e se biso"na far"li do(ande specific:eA. !$? 'escrizione del cambiamento Viene fornita una descrizione esausti7a del ca(bia(ento apportatoD nonc:G di tutti i proble(i e "li errori c:e 2uesto potrebbe portare !$1 'escrizione Bna descrizione del ca(bia(ento !$ Problemi o discrepanze c.e potrebbero essere riscontrate (opzionale) Viene fornita una descrizione dei proble(i o delle discrepanze a cui si 7a incontro con 2uesto ca(bia(ento e 7en"ono descritti i relati7i punti a cui fare attenzione !$! :rrori riscontrati (opzionale) Ven"ono identificati "li altri S$I ed i punti c:e necessitano obbli"atoria(ente di controlli e (oF Pa"ina 66

+estione delle confi"urazioni Soft0are dific:e a causa del ca(bia(ento !$" Raccomandazioni ed azioni (opzionale) Ven"ono fornite le racco(andazioni e le azioni necessarie da attuareD nonc:G i responsabili.
Configuration *tatus Report ,resoconto sullo stato della configurazione-

?uesto docu(ento 7iene prodotto periodica(ente per infor(are e tenere a""iornati tutti "li interesF sati ai ca(bia(enti apportatiD 2uelli in sospesoD ecc. Il (odulo 2ui sotto stante & un ese(pio di 2uelF lo c:e contiene un resoconto sullo stato della confi"urazione. .o(e Tea( Processo di controllo del ca(bia(ento: Atti7itSetti(ana corrente $a(bia(enti sotto(essi $a(7ia(enti appro7ati $a(bia(enti ri"ettati $a(bia(enti rin7iati $a(bia(enti eccezionali $a(bia(enti in7ertiti Processo di controllo del ca(bia(ento: Stato Volu(e prodotto sotto controllo S$ Pa"ine di testo Pa"ine di pro"ettazione >inee di pseudocodice >*$ totali >*$ nuo7i e ca(biati >*$ dei casi di collaudo Pa"ine di (ateriale di test Pa"ine di risultati di test Altri o""etti Altri o""etti Setti(ana corrente $a(bia(enti dalla preceF dente setti(ana /ata Responsabile

$iclo alla data

Pa"ina 6!

+estione delle confi"urazioni Soft0are $o((enti

Pa"ina 61

!"R#$ QU"R#"

Pa"ina 6#

Bnified Process

Uni ied !rocess


>o Bnified Process & un processo di s7iluppo soft0are iterati7o ed incre(entale basato sui co(poF nentiD centrato sull%arc:itettura e "uidato dai casi d%uso. 1. $on iterati7o si intende un processo non se2uenziale c:e ripassa piJ e piJ 7olte su alcune atti7iteQo fasi di s7iluppo al fine di (i"liorare se(pre di piJ il prodotto 2. $on incre(entale si intende c:e ad o"ni interazione 7iene a""iunto 2ualcosa al prodotto ,. $on basato sui co(ponenti si intende c:e il prodotto & strutturato in (odo c:e o"ni unit- sia auF tono(a e collabori con le altre unit-I fa7orisce lo s7iluppo attra7erso la pro"ra((azione ad o"F "etti 4. $on centrato sull%arc:itettura si intende c:e si presuppone c:e si scel"a una 7olta per tutte il tipo di Msiste(aN su cui "ira la (acc:ina @clientFser7erD distribuitaD localeD centralizzataD ecc.AD i co(F porta(enti delle interfaccie @co(e de7ono dialo"are le 7arie partiAD ed in "enerale l%or"anizzazioF ne del siste(a 5. $on "uidato dai casi d%uso si intende c:e il prodotto 7iene s7iluppato "uardando principal(ente a cosa de7e fare e secondaria(ente al co(e. >o Bnified Process si basa sull%B > co(e supporto per la docu(entazione tecnica c:e 7iene proF dotta. S7iluppare un prodotto con l%ausilio dello Bnified Process si"nifica procedere a piccoli passiD (iF "liorando di 7olta in 7olta i risultati ottenuti e (odellare lo s7iluppo se"uendo una (etodolo"ia ad o""ettiD cio& si separano le co(petenze dei sin"oli (oduli del pro"ra((a.

/asi ed atti$it&
>o Bnified Process di7ide lo s7iluppo del soft0are in 4 fasiI o"ni fase & a sua 7olta costituita da 5 atti7it- @o flussi di la7oroA. *"ni fase si considera conclusa una 7olta prodotti i docu(enti pre7istiD (entre le sin"ole atti7it- a7ranno peso di7erso a seconda della fase corrente. A differenza di 2uanto ci si possa aspettare il confine delle fasi & piuttosto blando e si passa da una fase all%altra con estreF (a naturalezza. >e fasi sono le se"uenti:

+nception E >o scopo di 2uesta fase & tro7are "li obbietti7i del ciclo di 7ita :laboration E >o scopo di 2uesta fase & tro7are l%arc:itettura di base per il ciclo di 7ita Construction E >o scopo di 2uesta fase & costruire il soft0are <ransition E >o scopo di 2uesta fase & 2uello c:e 7iene definito co(e Product ReleaseD cio& il rilascio del prodotto. Re2uirements @Re2uisitiA E >o scopo di 2uesta atti7it- & tro7are cosa de7e fare il siste(a Analis9s @AnalisiA E >o scopo di 2uesta atti7it- & raffinare e strutturare i re2uisiti 'esign @Pro"ettazioneA E >o scopo di 2uesta atti7it- & realizzare i re2uisiti in un siste(a arc:itetF turale +mplementation @I(ple(entazioneA E >o scopo di 2uesta atti7it- & costruire il soft0are

>e atti7it- sono le se"uenti:


Pa"ina !1

Bnified Process

<est C >o scopo di 2uesta atti7it- & 7erficare c:e l%i(ple(entazione la7ori co(e desiderato.

*"nuna di 2ueste atti7it- o flusso di la7oro co(pare in (aniera piJ o (eno accentuata a seconda della fase in cui si ci tro7a. >a fi"ura se"uente indi7idua la relazione tra ;asi ed Atti7it-:

/ase 01 !nception
+li obbietti7i della fase di Inception sono 2uelli di stabilire delle possibilit- su ciH c:e puH fare o non fare il prodottoI puH ric:iedere delle tecnic:e di prototipizzazione al fine di 7alidare i re2uisiti ric:iesti. /urante 2uesta fase 7iene realizzato il caso di businnes cio& una 7ista ad alto li7ello su"li scopi del siste(a @approfondire(o il concetto 2uando parlere(o dell%atti7it- dei Re2uisitiA. I(porF tante notare c:e in 2uesta fase si cercano di catturare i re2uisiti essenziali affinc:G il siste(a funzioF ni. .ella fase successi7a 7erranno approfonditi i re2uisiti in (odo tale da soddisfare piena(ente il clienteI (a & i(portante c:e il pro"etto abbia uno scopo ben definito. Essendo 2uesta fase 2uella iniziale in cui si stabilisce anc:e se far partire o no il pro"ettoD & in 2ueF sta fase c:e si cerca di calcolare costi e risc:i. Il fuoco di 2uesta fase sono proprio le iterazioni preli(inariD cio& tutti "li incontri necessari a capire le esi"enze dell%utente e 7alutarne costi e risc:iI >%unica atti7it- di pro"ettazione o di i(ple(entaF zione c:e puH essere fatta & nel caso in cui si decida di realizzare un prototipo dell%interfaccia per poter dialo"are (e"lio col cliente. >e pietre (iliari della fase di Inception sono "li obbietti7i del ciclo di 7ita. Ad o"ni pietra (iliare corrisponde una docu(entazione da produrre:

Pa"ina !2

Bnified Process

Condizioni di Soddis azione


+li staCe:olders :anno appro7ato "li obbietti7i di pro"etto >a portata del siste(a & stata definita ed & stata appro7ata da"li staCe:olders I re2uisiti c:ia7e sono stati catturati Valutazioni di pro"ra((a e di costo sono stati appro7ati da"li staCe:olders

!roduzioni
Bn docu(ento di 7isione c:e dic:iara i re2uisiti principaliD le caratteristic:e ed i 7incoli del proF "etto Bn (odello di casi d%uso iniziale @sola(ente dal 1)X al 2)X co(pletoA Bn "lossario di pro"etto Bn piano di pro"etto iniziale

Bn caso di business & stato preparato dal responF $aso di business sabile di pro"etto Il responsabile di pro"etto :a effettuato una 7aF lutazione di risc:io $onfer(a di fattibilit- con "li studi tecnici eQo prototipizzazione Bn profilo di arc:itettura & stato indi7iduato Bn docu(ento o un database di 7alutazione del risc:io Bno o piJ prototipi funzionanti Bn docu(ento di arc:itettura iniziale

Bno o piJ docu(enti li 7edre(o 2uando parlere(o delle atti7it- @sono esse c:e producono i docuF (entiA.

/ase 21 .laboration
>a fase di elaboration & la fase piJ criticaD in 2uanto da essa dipendono tutte le altre fasi. >%idea & 2uella di dare un pri(o ta"lio al siste(a ese"uibileD in (odo tale da e7ol7erlo fino al sisteF (a finale. O i(portante: esso non & un prototipoL /urante 2uesta fase raffinia(o la 7alutazione del risc:ioD indi7iduia(o le risorseD il te(poD l%appaF recc:iaturaD il personale ed il costo necessari @eD o77ia(enteD si c:iede confer(a al cliente: se non passa il pro"etto abortisceAD definia(o "li attributi di 2ualit- @tasso di errori scopertiD densit- di diF fetti accettabileAD si prepara un piano di costruzione detta"liatoD si catturano l%ottanta per cento dei re2uisiti funzionali e si crea il pri(o ese"uibile sull%arc:itettura di base. Il focus di 2uesta fase & c:iara(ente sui re2uisitiD l%analisi ed il pro"etto. >%i(ple(entazione di7iene i(portante alla fine della fase 2uando l%arc:itettura di base de7e essere prodotta. *"ni atti7it- :a il suo specifico ruolo: Requisiti E de7e estrarre tutti i re2uisiti ric:iesti e raffinare 2uelli "i- estratti durante la fase di InF ception ,nalisi E de7e stabilire cosa de7e essere costruito *rogettazione E de7e creare un%arc:itettura stabile Implementazione E de7e costruire l%arc:itettura di base 0est E de7e testare l%arc:itettura di base Alla fine della fase di elaboration il siste(a de7e essere pronto per la sua costruzione. Pa"ina !,

Bnified Process >e pietre (iliari sono l%arc:itettura del ciclo di 7ita. Ad o"ni pietra (iliare corrisponde una docuF (entazione da produrre:

Condizioni di soddis azione

!roduzioni

Bn%arc:itettura di base ese"uibile e robusta & staF >%arc:itettura di base ese"uibileD il (odello staF ta creata. >%arc:itettura di base ese"uibile di(oF tico di B >D il (odello dina(ico di B >D il stra c:e il risc:io i(portante & stato identificato (odello dei casi d%uso di B > e risolto >a 7isione del prodotto & stata stabilizzata >a 7alutazione del risc:io & stata (odificata Il caso di business & stato (odificato ed & stato appro7ato da"li staCe:olders /ocu(ento di 7isione Valutazione del risc:io a""iornata $aso di business a""iornato

Bn pro"ra((a di pro"etto & stato "enerato in Piano di pro"etto a""iornato detta"lio sufficiente per per(ettere ad un%offerta realisticaD su te(poD soldi e risorse per le fasi successi7eD di essere for(ulata +li staCe:olders appro7ano il piano di pro"etto. $aso di business e piano di pro"etto Il piano di pro"etto & stato 7erificato contro il caso di business Bn accordo & ra""iunto con "li staCe:olders per /ocu(ento fir(ato continuare il pro"etto Bno o piJ docu(enti li 7edre(o 2uando parlere(o delle atti7it- @sono esse c:e producono i docuF (entiA.

/ase 31 Construction
>%obbietti7o & co(pletare tutti i re2uisitiD l%analisi ed il pro"etto ed e7ol7ere l%arc:itettura di baseD "enerata nella fase di ElaborationD nel siste(a finale. Attenzione a non perdere l%arc:itettura costruita: & tipico c:e 2uando la scadenza si a77icina si cerca di risol7ere i proble(i nel (odo piJ 7eloce possibileD spesso sfornando siste(i con bassa 2ualit- ed alto costo di (anutenzione. >%enfasi & sulla fase di i(ple(entazioneD dato c:e la (a""ior parte di analisi e pro"ettazione & "istata fatta nella fase precedente. >%atti7it- di test di7iene (olto i(portanteD in 2uanto biso"na pro7aF re le 7arie a""iunte e le relati7e inte"razioni. /urante 2uesta fase il pro"etto 7a arri7ando alla sua fase conclusi7a. >e pietre (iliari sono la possiF bilit- operati7a iniziale. Ad o"ni pietra (iliare corrisponde una docu(entazione da produrre:

Condizioni di Soddis azione


Il prodotto soft0are & sufficiente(ente stabile e sufficiente(ente di 2ualit- da essere s7iluppato per la co(unit- di utenti

!roduzioni
Il prodotto soft0areD il (odello B >D la suite di Test

Pa"ina !4

Bnified Process

Condizioni di Soddis azione


+li staCe:olders :anno appro7ato e sono pronti per la transizione del soft0are nel loro a(biente >e spese effetti7e contro le spese pre7iste sono accettabili

!roduzioni
anuali utenteD descrizione della release Piano di pro"etto

Bno o piJ docu(enti li 7edre(o 2uando parlere(o delle atti7it- @sono esse c:e producono i docuF (entiA.

/ase 41 5ransition
>a fase di Transition inizia 2uando il beta testin" & co(pletato ed il siste(a finale & s7iluppato. ?uesta fase de7e risol7ere i proble(i tro7ati durante il beta testin" ed installare il soft0are nell%a(F biente de"li utenti. So((aria(ente de7e:

$orre""ere i difetti Preparare il sito de"li utenti al nuo7o soft0are Adattare il soft0are per operare sul sito de"li utenti odificare il soft0are se proble(i i(pre7isti si presentano $reare i (anuali dell%utente ed altra docu(entazione ;ornire consulenza all%utente $ondurre una re7isione post pro"etto

Arri7ati a 2uesta faseD i "ioc:i sono fatti: il soft0are de7e essere pronto e l%unica fase di i(ple(enF tazione & la correzione di errori tro7ati durante l%ulti(o beta testin" e la preparazione al trasferiF (ento sul sito dell%utente. >a fase di test ri"uarda l%installazione del siste(a @controllare c:e tutto 7ada beneA e testare la soddisfazione dell%utente. >e pietre (iliari sono la Release Product. Ad o"ni pietra (iliare corrisponde una docu(entazione da produrre:

Condizioni di Soddis azione


Il beta testin" & co(pletatoD i ca(bia(enti neF cessari sono stati fatti e "li utenti :anno approF 7ato il siste(a >a co(unit- de"li utenti sta usando atti7a(ente il prodotto Il prodotto supporta le strate"ie accordate con "li utenti ed i(ple(entate

!roduzioni
Il prodotto soft0are

Piano di supporto all%utenteD

anuali utente

*77ia(ente con piano di supporto all%utente si intendono l%assistenza e la (anutenzione del softF 0areD nonc:G l%e7entualit- di nuo7e release in te(pi futuri.

Pa"ina !5

Bnified Process

Requirements ,Requisiti/ato c:e i re2uisiti indicano cosa de7e fare il siste(aD il co(pito di 2uesta atti7it- & capire cosa fareD non co(e. Il fatto di (antenere separate le due coseD per(ette un (i"liore s7iluppo iteratti7o ed incre(entale. >%analisi dei re2uisiti ri"uarda sia 2uelli funzionali @cosa de7e fare il pro"ra((aA c:e 2uelli non funzionali @specific:e e 7incoli sull%i(ple(entazione del siste(aA. Specificata(ente un re2uisito funzionale & alla base del siste(a e puHD spessoD essere tradotto in un caso d%uso @7edi a7antiAD (enF tre un re2uisito non funzionale non & traducibile in un caso d%usoD (a 7incola tutte le successi7e attiF 7it- i(ple(entati7e. /urante 2uesta atti7it-D 7iene prodotto il docu(ento SRS @S3ste( Re2uire(ents SpecificationAD cio& un elenco in lin"ua""io naturale dei re2usiti specificati nella for(a MIl 2istema fa funzioneN. Ad o"ni re2uisito 7iene asse"nato un identificatore uni7oco. A 2uesto docu(ento se"ue il Supple(enF tar3 Re2uire(ents Specification @anc:%esso abbre7iato con SRSAD in cui i re2uisiti sono (essi in forF (a tabellareD con le se"uenti colonne: I/ E identificatore /etta"lio E specifica in lin"ua""io naturale Tipo E & un re2uisito funzionale o non funzionale' /i cosa fa parte il re2uisito' ?uest%ulti(a doF (anda dipende da 2uali classificazioni possono essere dati ai re2uisitiI ad ese(pio ci puH esF sere il tipo Autenticazione c:e indica c:e & un re2uisito necessario all%autenticazione de"li utentiD (entre il tipo ProdottoD specifica un re2uisito per la (e(orizzazione delle infor(aF zione dei prodottiD ecc. @i tipi 7anno nel "lossarioA Priorit- E /e7e A7ereD Potrebbe A7ereD Sarebbe (e"lio A7ereD ;acoltati7oD $onsi"liatoD IndispensaF bileD ecc. @le priorit- 7anno nel "lossarioA. .ella pratica il S3ste( Re2uire(ents Specification ed il Supple(entar3 Re2uire(ents Specification 7en"ono fusi in un unico docu(ento @da cui la stessa abbre7iazioneAI l%SRS & la tabella descritta soF praD c:e 7iene 7ia 7ia rie(pita a (ano a (ano c:e 7en"ono scoperti e classificati i re2uisiti. Se(pre nella pratica l%SRS & co(pletato con i valori di pianificazione e cio&:

Stato @PropostoD appro7atoD incorporatoD 7alidatoD ecc.A Sti(a dei costi di i(ple(entazione di tale re2uisito. >i7ello di risc:io sti(ato.

>%atti7it- di estrazione dei re2uisiti ric:iede di porre attenzione sui 2uantificatori uni7ersali ed esiF stenziali: a 7olte "li utenti usano 2uesti 2uantificatori in (odo inappropriato. Ad ese(pio: MTutti "li utenti possono accedere al siste(a senza autenticarsi @nessuno esclusoA.N /opo (olte altre specifiF c:e: MEsiste un tipo di utente c:e de7e farsi autenticareD altri(enti non puH accedere.N I 2uantificatoF ri sono sba"liati: la specifica ric:iedeD infattiD c:e esistano de"li account speciali a cui si puH accedeF re dopo l%autenticazioneD se l%utente non si autenticaD 7iene usato un account "uest @ospiteA. Il glossario del progetto & un dizionario c:e associa ad o"ni parolaD il suo si"nificato. O usato per e7itare sinoni(i ed o(oni(i nel pro"etto. I pri(i sono pericolosi perc:G a no(i di7ersi corrisponF dono stesse definizioni @e si risc:ia di tro7arsi con due classi identic:e (a con no(i di7ersiAD (entre i secondi sono pericolosi perc:G a"li stessi no(i corrispondono si"nificati di7ersi @e si risc:ia di creare classi so7racaricate od addirittura con funzionalit- in contrasto tra loro e 2uindi i(possibili da realizzareA. Il "lossario e7ita di inserire 2uesti ter(iniD rendendo uni7oci si"nificati e no(i @corriF Pa"ina !6

Bnified Process spondenza uno ad unoAD sce"liendo un unico ter(ine per i sinoni(i e tro7ando nuo7i ter(ini per "li o(oni(i. .elle descrizione possono co(parire i sinoni(i per dialo"are con "li staCe:olders @c:e spesso sono restii ad adottare un lin"ua""io di7ersoA. Per tutto il ciclo di 7ita del soft0are si useranno le parole del "lossarioD 2uando biso"na riferirsi a funzionalit- del siste(a. Pri(a di partire cercando "li attori @c:i o cosa usa il siste(aA ed i casi d%uso @cosa fa il siste(aA & i(portante conoscere i li(iti del pro"etto @se(bra stupidoD (a in certi casi risulta proble(atico troF 7are i confini del pro"ettoI senza confini un pro"etto non puH finireA. Proprio per tro7are i li(iti del pro"etto 7iene introdotto il (odello di business @piJ nello specifico i casi d%uso di businessA. $on esso si cerca di focalizzare lo scopo del siste(a: si 7ede il siste(a co(e una "rande scatola neraD c:e rice7e de"li input da parte di utenti @possono essere sia persone c:e altri siste(iA esterni e forniF sce loro i risultati aspettati. A 7olte 2uesta scatola nera 7iene aperta ed a(pliata 2uando & necessario per capire il contesto in cui si opera. Ad ese(pio supponia(o di do7er realizzare un siste(a per il co((ercio elettronico di libri e cd. Visto co(e scatola neraD abbia(o un utente c:e fornisce al siF ste(a cosa 7uole co(prare ed il siste(a "li risponde c:e la (erce "li 7err- in7iataD oppure se c%& 2ualc:e proble(a. B:(... un po% poco. Apria(o la scatola nera e 7edia(o c:e essa & for(ata da alF tre scatole nere c:e a"iscono tra di loro: un (a"azzino c:e possiede "li articoliD un siste(a di autenF ticazione c:e "estisce "li utentiD un siste(a di pa"a(ento per "estire il pa"a(ento dei libriQcdD l%inF terfaccia di "estione 7erso il cliente. ?ueste scatole nere co(unicano tra di loro passandosi de"li inF put e de"li outputD in (odo tale da realizzare la scatola nera piJ "rande. Bene 2uesta descrizione sar- il nostro caso d%uso di businessD cio& su cosa dobbia(o la7orareI ciH c:e non rientra non & neF cessario. .ella pratica ci puH essere piJ di un caso d%uso di business @per 2uesto si usa il ter(ine odello di BusinessA: 2uesto capita 2uando il siste(a ric:iede di essere spezzato in piJ sottosiste(i @nell%ese(F pio precedenteD ci pote7a essere un nuo7o caso d%uso di business per la reale spedizione della (erceA. .on & se(pre facile tro7are di pri(o acc:ito ilQi casoQi di businessD nG sapere se essi 7anno di7isi in piJ casi d%uso oppure no. Proprio per 2uesto (oti7o il (odello non & considerato scolpito sulla pieF traD (a alle successi7e iterazioni puH essere espanso. >%i(portante & ricordare di non perdere di 7ista lo scopo del siste(a. Abbia(o detto c:e scopo di 2uesta atti7it- & estrarre i re2uisiti e tradurli in casi d%uso @al(eno 2uelli funzionaliA. >a pri(a do(anda da porsi &: cos%& un caso d%uso' ;or(al(ente un caso d%uso rappreF senta una funzione del business c:e & esterna(ente 7isibile ad un attore e puH essere controllata sinF "olar(ente nel processo di s7iluppo. Bn attore rappresenta c:iun2ue o 2ualun2ue cosa @personaD (acc:inarioD ecc.A intera"isca col siste(a per ottenere un ser7izio od un 2ualc:e risultato utile dal siste(a stesso. Per 7isualizzare i casi d%uso B > ci fornisce i diagrammi dei casi d:uso: con esso "li attori sono rappresentati da o(ini stilizzatiD (entre i casi d%uso da ellissi contenenti il no(e del caso d%uso. AtF tori e casi d%uso sono colle"ati tra loro con delle linee c:e rappresentano l%interazione tra i so""etti. Bn attore puH co(unicare con uno o piJ casi d%usoD (entre un caso d%uso puH co(unicare con attori e casi d%usoI 2uesto porta al fatto c:e un attore non :a senso se non intera"isce con un caso d%usoD (entre puH a7er senso un caso d%uso c:e non intera"isca con alcun attore. Entria(o nel detta"lio.

Pa"ina !!

Bnified Process

&iagramma dei casi d.uso


Il dia"ra((a dei casi d%uso asse"na i casi d%uso a"li attori ed e7idenzia le relazioni tra i casi d%uso. .el dia"ra((a dei casi d%uso un attore puH essere rappresentato da un o(ino stilizzatoD con sotto il no(e dell%attore @nor(al(ente rappresenta un attore esternoAD od un rettan"olo contenente il no(e dell%attore e la parola YactorZ @per attori c:e rappresentano classi da i(ple(entare od altri fattoriD co(e il te(poA. Bn caso d%uso & rappresentato co(e un ellissi con all%interno il no(e del caso d%uso. +li attori sono associati ai casi d%uso per (ezzo di frecce c:e puntano dall%attore al caso d%uso. >e reF lazioni tra casi d%uso sono rappresentate attra7erso frecce tratte""iate su cui 7i & asse"nato un no(e tra una lista predefinita. *ltre a 2uesto & possibile la "eneralizzazione de"li attori e dei casi d%uso. Pri(a di addentrarci ancora piJ nei particolariD 7edia(o un ese(pio c:iarificatore: Ipotizzia(o c:e una 7ideoteca decida di (odernizzare il suo siste(a di affitto e 7endita di 7ideocasF sette e /V/. Il siste(a da i(ple(entare de7e per(ettere a"li utenti in possesso di tessera di affittaF re una 7ideocassetta od un /V/. Il siste(a pre7ede la selezione della 7ideocassetta o del /V/ da un catalo"o elettronico. Senza addentrarci in altri particolari @la descrizione nor(al(ente sar- ben piJ fornita di particolariA indi7iduia(o l%attore cliente e 7ari casi d%uso: Visione$atalo"oD AffittoVideoD Affitto/V/. Rappresentia(o 2uesti casi d%uso:

Visione$atalo"o
$liente

Affitto/V/

AffittoVideo Abbia(o detto c:e & possibile la "eneralizzazione: essaD allo stesso (odo delle classiD & una relazioF ne tra due attori @o casi d%usoA: un attore @od un caso d%usoA c:e specializza un attore @od un caso d%uF soA piJ "enerale. Esso & rappresentato da una freccia con la punta trian"olare bianca. .ell%ese(pio fatto precedente(enteD ci pote7a essere il caso d%uso Affitto c:e 7eni7a specializzato dal caso d%uso AffittoVideo ed Affitto/V/:

Visione$atalo"o
$liente

Affitto/V/ Affitto AffittoVideo

Pa"ina !1

Bnified Process +li altri due tipi di associazioni tra casi d%uso sono: Inclusione @rappresentato da una freccia tratte"F "iata con la scritta YincludeZA e l%Estensione @rappresentato da una freccia tratte""iata con la scritta YeVtendZA. $on la pri(a si identifica un caso d%uso c:e include siste(atica(ente il caso d%uso colleF "ato con la frecciaI il caso d%uso non puH essere ese"uito senza ese"uire l%altro caso d%uso @non & 7ero il contrarioA. $on la seconda si intende c:e un caso d%uso estende il caso d%uso colle"ato per particolari Mpunti di estensioneNI un punto di estensione indica una condizione in cui il caso d%uso base @2uello puntato dalla frecciaA de(anda ad un altro caso d%uso la sua esecuzione. >%estensione indica co(porta(enti opzionali. ?uando si usa l%estensione & buona nor(a indicare i punti di estenF sione nel caso d%uso base. .ell%ese(pio: A""iun"ia(o c:e per affittare un fil( & necessario 7isionare il catalo"oD (a & possiF bile affittare piJ di un fil( e ritirarli in bloccoD dopo a7er fatto le proprie scelte @un po% co(e il carF rello dei siti di eFco((erceA. /un2ue Affitto include Visione$atalo"oD (entre il caso d%uso Ritira estende il caso d%uso Affitto. .el pri(o caso si intende c:e o"ni 7olta c:e biso"na Affittare @7ideoF cassetta o /V/ non i(portaA biso"na Visonare il catalo"oD (entre nel secondo si indica c:e dopo c:e l%utente :a deciso 2uale fil( affittareD lo ritira @non puH ritirare dei fil( se pri(a non :a deciso di affittarliAI tutta7ia & possibile c:e lo affitti (a non lo ritiriD perc:G pri(a 7uole Visionare nuo7aF (ente il catalo"o per tro7are un altro fil( da affittare. Prendendo spunto dalla ter(inolo"ia dell%eF co((erceD c:ia(ia(o il punto di estensione $:ecC*ut:

Visione$atalo"o
$liente include

Affitto $:eC*ut
eVtend

Affitto/V/

AffittoVideo

Ritira I(portante ricordare c:e un caso d%uso c:e ne estende un altroD puH essere asse"nato ad un attoreD in 2uanto il caso d%uso potrebbe fornire risultati ad un attore. .ell%ese(pio l%operazione di ritiro infor(a il (a"azzio della di(inuizione delle scorte. ?ui rappreF sentere(o l%attore con l%altra rappresentazione in 2uanto non & un attore u(anoD (a una parte del siF ste(a ad essere infor(ato:

Pa"ina !#

Bnified Process

Visione$atalo"o
$liente include

Affitto $:eC*ut
eVtend

Affitto/V/

AffittoVideo

Ritira

YactorZ a"azzino

.on se(pre & necessario usare le freccie tra attori e casi d%uso: se 7en"ono usate linee continue senF za freccia non si sta specificando se & l%attore c:e usa il caso d%usoD od il caso d%uso c:e d- infor(aF zioni all%attore @probabil(ente entra(biA.

&ocumentare i casi d.uso


Il dia"ra((a dei casi d%uso d- una buona panora(ica su cosa de7e fare il siste(aI tutta7ia da solo non basta: o"ni caso d%uso do7rebbe a7ere una descrizione c:e lo acco(pa"na per specificare i suoi co(pitiD e7entuali flussi alternati7i @ad ese(pio 2uando 2ualcosa non 7a a buon fineAD condizioni da rispettareD ecc. In piJ anc:e "li attori 7anno descrittiD in 2uanto non & se(pre c:iaro dal no(e il ruoF lo c:e l%attore copre. Al dia"ra((a dei casi d%uso 7en"ono dun2ue alle"ati due docu(enti: la Specifica de"li attori e la Specifica dei casi d%uso. Il pri(o docu(ento & for(ato da una se(plice tabella: Attore +' 7enitore Ruolo Descrizione del ruolo dell:attore$ *77ia(ente i testi in corsi7o 7anno sostituiti con i dati reali. Il secondo docu(ento & anc:%esso for(ato da una tabellaD (a piJ articolata: Caso d%uso +' Breve descrizione Attori Pa"ina 1) +ome del caso d:uso Identificatore -reve descrizione del caso d:uso ,ttori coinvolti +ome dell:attore Identificativo +el caso sia sotto generalizzazione" specifica quale attore specializza

Bnified Process Precondizioni Condizioni che devono essere veri ficate affinch; il caso d:uso possa essere eseguito Descrizione testuale delle operazio ni che compiono gli attori ed il caso d:uso" nonch; le risposte

Flusso Principale

,cenari secondari /ccezioni che possono avvenire nel caso d:uso <la descrizione di questo scenario = riportata su un:altra ta bella! Flussi alternativi ,lternative al flusso principale <sia errori facilmente descrivibili che vere e proprie diramazioni del flus so principale! In che stato si trova il sistema dopo l:esecuzione del caso d:uso

Postcondizioni

A 2uesta tabella 7en"ono a""iunte una tabella per descri7ere "li scenari secondari: essa contiene: Caso d%uso ,cenario secondario 2tesso nome del caso d:uso di cui questo = uno scenario secondario +ome dello scenario secondario che an diamo a specificare

Flusso Principale Descrizione testuale delle operazioni che compiono gli attori ed il caso d:uso" non ch; le risposte in questo scenario Flussi alternativi ,lternative al flusso principale <sia erro ri facilmente descrivibili che vere e pro prie diramazioni del flusso principale! in questo scenario Se un caso d%uso & una specializzazione di un altro caso d%uso @cio& stia(o usando la "eneralizzazioF neAD il titolo della pri(a ri"a di7iene M$aso d%uso fi"lioN e si a""iun"e una ri"a M+enitoreND subito sotto l%identificatoreD in cui si indica il no(e del caso d%uso c:e 7iene specializzato. Se un caso d%uso :a dei punti di estensioneD si inseriscono nel flussoD nel punto in cui possono essere ese"uitiD i loro no(i racc:iusi tra doppie parentesi an"olari @Y ZA. I casi d%uso c:e ne estendono un altro :anno la tabella la cui pri(a ri"a & ca(biata in M$aso d%uso di estensioneND 7iene a""iunta una ri"a MEstendeND subito dopo l%identificatoreD in cui si indica il no(e del caso d%uso estesoD ed il flusso principale 7iene c:ia(ato MSe"(entoN. I casi d%uso c:e includono altri casi d%uso indicano il punto in cui 7iene ese"uito un altro caso d%uso @c:e sia nel flusso principaleD in uno alternati7o od in uno scenario secondarioA con la Mdiretti7aN in clude<+ome del caso d:uso da eseguire!. O possibile a""iun"ere altre ri":e alle tabelle precedente(ente descritte inserendo infor(azioni su Pa"ina 11

Bnified Process flussi i(possibili o non per(essiD sui (essa""i sca(biati tra "li attori ed il caso d%usoD e l%uso di o"F "ettiD 7alori o risorse del siste(a. 6ota importante: i casi d%uso sono ato(iciD sca(biano infor(azioni con "li attoriD (a non tra di loF ro. I casi d%uso non possono essere usati @o & piJ difficile o MpericolosoN usarliA nel caso in cui:

Il siste(a & do(inato dai re2uisiti non funzionali Il siste(a :a poc:i utenti Il siste(a :a poc:e interfaccie

In tal caso & (e"lio cercare altre tecnic:e.

"ttivit e Stati
Altra docu(entazione c:e puH essere prodottaD ri"uarda i /ia"ra((i di Atti7it- e 2uelli de"li Stati. $on i pri(i si (odellano i flussi principali ed alternati7i di o"ni caso d%uso @danno una panora(ica d%insie(e sui flussiAD (entre i secondiD (eno usati in 2uesto (o(entoD per(ettono di (odellare stati del siste(a. $on il pri(o si prendono le descrizioni dei flussi: sia 2uello principale c:e 2uelli alternati7i sono fusi nello stesso dia"ra((a per poter far 7edere l%insie(e delle azioni co(piute dal caso d%uso preso in considerazione. Per preparare un dia"ra((a delle atti7it- si dise"na un cerc:io pieno c:e indica il punto di inizio dell%atti7it-I 2uando un caso d%uso 7iene atti7atoD si ci sposta sulla pri(a atti7it- @rappresentata da un rettan"olo dai bordi arrotondatiAD 2uando l%atti7it- :a co(piuto il suo co(pitoD si ci sposta alla seF conda e cosK 7ia fino allo stato finale @rappresentato da un cerc:io pieno inscritto in un secondo cerF c:io 7uotoA in cui il caso d%uso ter(ina. .el (o(ento in cui biso"na fare una scelta @e 2uindi passaF re ad un flusso alternati7oA il colle"a(ento a77iene attra7erso un ro(bo c:e per(ette di spezzare la linea di con"iunzione tra le atti7it- a seconda delle condizioni specificate su o"ni ra(o @sono racF c:iuse tra parentesi 2uadreAI 2uando i flussi alternati7i si riuniscono lo fanno attra7erso un secondo ro(bo. Bna delle potenzialit- del dia"ra((a delle atti7it- & la possibilit- di (ostrare atti7it- paralF lele: 2uando partono di7erse atti7it- in paralleloD una linea spessa spezza in piJ di una le linee di con"iunzione tra le atti7it- @ciH & c:ia(ato for7AI 2uando si riuniscono lo fanno attra7erso una linea spessa @ciH & c:ia(ato >oinA. ;accia(o un ese(pio: nell%affitto 7ideo il flusso principale indica: MBn cliente d- all%i(pie"ato la tessera ed il supporto 7ideo c:e 7uole nole""iare. Il 7ideo e la tessera 7en"ono letti e 2ualsiasi dettaF "lio di inade(pienza o ritardo & e7idenziato all%i(pie"atoD il 2uale de7e ric:iedere al cliente c:iariF (enti. Bn cliente puH prendere in affitto un (assi(o di otto fil(. Il cliente pa"a in contanti o carta di credito. A 2uel punto la scorta & a""iornata ed i fil( sono dati al cliente insie(e alla rice7uta d%affitto. *"ni record di affitto (e(orizza @sotto il conto del clienteA le date di uscita e di restituzioF neD insie(e all%identificazione dell%i(pie"ato. Bn record di affitto distinto & creato per o"ni 7ideo afF fittato.N I flussi alternati7i recitano: MSe il cliente & inade(pienteD e"li non puH affittare nulla. Se il cliente cerca di affittare troppi fil(D de7e rinunciare a 2ualcuno o non puH ritirarli. Se il cliente & inaffidaF bile de7e 7ersare un deposito pari al costo del periodo di affitto per ciascun fil(.N .ell%ese(pio :o o(esso 7ari altre specific:e per se(plificare un po% il dia"ra((a. Ed ecco il diaF "ra((a delle atti7it-: Pa"ina 12

Bnified Process

>e""ere tessera cliente

Verificare cliente

>e""ere supporto 7ideo

[& indade(piente\ [& inaffidabile\ [deposito rifiutato\

Ric:iedere deposito Iniziare transazione di affitto

Ri(uo7ere un supporto

[PiJ di 1 7ideo\

[1 7ideo o (eno\

A""iun"ere deposito

Re"istra affitto per o"ni 7ideo

Accettare pa"a(ento

A""iorna scorta

Sta(pare rice7uta

Ter(ina transazione affitto

Essendo poco usatoD in 2uesto contestoD il dia"ra((a de"li stati 7err- discusso successi7a(ente.

Pa"ina 1,

Bnified Process

&eterminare i requisiti
+$d$,$ 6uesto paragrafo non fa propriamente parte dello ?nified *rocess" ma si ritiene utile per una migliore chiarificazione @! Anc:e se non & possibile dare una tecnica di estrazione dei re2uisiti se(pre 7alidaD esistono alcune tecnic:e c:e possono aiutare: +nterviste: con 2ueste si intendono de"li incontri con il clienteI durante 2uesti incontri 7en"ono poF ste di7erse do(andeD affinc:G si possa capire il punto di 7ista del clienteD risol7ere i dubbiD e capire le sue reali necessit-. Il proble(a ri"uarda il fatto c:e spesso un cliente :a difficolt- od & restio ad espri(ere i re2uisiti in ter(ini co(prensibili per lo s7iluppatore. Per 2uesto & i(portante la capacitdell%inter7istatore di co(unicare e stabilire rapporti interpersonali. .or(al(ente l%inter7ista & preceduta da un 2ualc:e tipo di docu(ento c:e spie"a "li obbietti7i delF l%inter7istatore eQo pone alcuni 2uesiti di baseD in (odo da a7ere una punto di partenza ed un conteF sto per la discussione. >e inter7iste possono essere libere o strutturate @nor(al(ente ci sono entra(biA: le seconde sono una serie di do(ande "i- pronte @alcune anc:e a risposta c:iusaAD (entre con le pri(e le do(ande 7en"ono di 7olta in 7olta for(ulate in base alle necessit-. O (e"lioD tutta7iaD e7itare tre tipolo"ie di do(ande:

/o(ande nelle 2uali l%inter7istatore espri(e @diretta(ente od indiretta(enteA la propria opinione sul proble(a @Mdobbia(o fare le cose nel (odo in cui le faccia(o'NA /o(ande pre7enuteD si(ili alle precedentiD eccetto c:e l%opinione dell%inter7istatore & c:iara(enF te espressa @Mnon intendi fare 2uestoD non & 7ero'NA /o(ande contenenti "i- la risposta @Mde7i fare le cose in 2uesto (odoD non & 7ero'NA

Duestionari: I 2uestionari sono basati su dei docu(enti contenenti do(ande a risposta c:iusa. A differenza dell%inter7istaD non c%& un collo2uio tra il pro"ettista ed il cliente. ?uesto per(ette di a7eF re risposte in te(pi bre7i e di (antenere l%inter7istato anoni(oD (a possono nascere delle inco(F prensioni do7ute al fraintendi(ento delle do(ande. ?uesto siste(a ra""iun"e (e"lio i suoi scopi 2uando & usato co(e stru(ento in a""iunta alle inter7iste e le do(ande sono poste in (aniera (eno a(bi"ua possibile. .or(al(ente un 2uestionario :a tre for(e:

6uesiti a scelta multiplaD do7e c:i risponde de7e sce"liere una o piJ risposte tra un insie(e di riF sposte date. $o((enti a""iunti7i possono essere per(essi. 6uesiti a punteggioD do7e & possibile espri(ere la propria opinione su un%affer(azione @ad ese(F pio: sono piena(ente daccordoD sono daccordoD neutraleD sono in disaccordoD sono total(ente in disaccordoD non soA. 6uesti con ordinamentoD do7e le risposte fornite do7rebbero essere ordinate @per i(portanzaA con nu(eri in se2uenzaD 7alori percentualiD od altri (eccanis(i di ordina(ento.

*sservazioni e studio dei documenti e dei sistemi soft5are: ?ueste ulti(e tecnic:e possono esseF re utili in certi fran"enti e deleteri in altri casi. $on l%osser7azione si intende l%osser7are il la7oro delQdei clienteQi al fine di scoprire le procedure c:e usano e di cosa :anno biso"no. $iH & utile 2uando il cliente & incapace di fornire diretta(ente l%infor(azioneD anc:e perc:G potrebbe a7ere una conoscenza fra((entaria rispetto all%intero procesF so. Il proble(a & c:e & fastidioso essere osser7ati (entre si la7ora e si tende a se"uire procedure Pa"ina 14

Bnified Process (olto piJ for(ali saltando 2ualsiasi scorciatoia @nel bene o nel (aleA intrapresaD oppure si tende a la7orare con (a""ior i(pe"no alterando le 7alutazioni sulla co(plessit- delle operazioni coin7olte. $on lo studio dei docu(enti e dei siste(i soft0are si intende lo studio dei docu(enti dell%or"anizF zazione e dei siste(i c:e attual(ente usano al fine di farsi un%idea di co(e sono abituati a la7orare e far"li tro7areD dun2ueD un siste(a piJ fa(iliare. Il proble(a & c:e non se(pre il cliente & disposto a far conoscere le proprie condizioni di la7oro e far (ettere (ano a docu(enti a 7olte riser7ati ed i siF ste(i usati possono essere inadatti e poco facili da usare @uno dei (oti7i per cui lo 7ole7ano ca(F biareA oppure total(ente inco(prensibili a c:i non :a fa(iliarit- col prodotto. Prototipi: Se(pre piJ usatiD i prototipi non sono altro c:e siste(i Msporc:i e 7elociN. In altre parole 7en"ono preparate interfaccie del pro"ra((a con dati codificati diretta(ente al suo internoD con azioni "i- preconfi"urate e non ca(biabili. Risulta utile sia per estrarre re2uisiti difficil(ente estraibili in altri (odi @ad ese(pio con siste(i c:e de7ono fornire nuo7e funzionalit- di businessA e per iniziare a considerare anc:e l%interfaccia utente fin dai pri(i approcci. Il difetto principale dei prototipi & c:e de7ono essere considerati usa e "ettaD una 7olta c:e :anno esaurito il loro co(pito de7ono essere eli(inati e non reinseriti dentro il pro"etto c:e si 7a a coF struireD pena difficolt- di test e (anutenzione. Purtroppo spesso il cliente crede c:e se il prototipo & pronto in bre7e te(po a""iun"ere le funzionalit- reali ric:ieder- ancor (eno te(po. Infatti & tipico confondere il pro"ra((a con la sua intefaccia @estre(a(ente i(portanteD (a non & l%unica parte del pro"ettoA. ,viluppo cooperativo: In un certo senso alla base dello Bnified Process. >o s7iluppo cooperati7o ric:iede 7ari incontri con "li s7iluppatoriD ilQi clienteQi ed in "enere "li staCe:olders. Ad o"ni inconF tro biso"na discutereD approfondireD scoprireD 7alidareD ecc. le 7arie fasi dello s7iluppo del pro"etto. Se "li incontri sono ben preparatiD per(ettono di procedere celer(enteI al contrario possono rallenF tare lo s7iluppo se non si riesce a ra""iun"ere accordi in te(pi bre7i. RicordateD infineD c:e o"ni re2uisito de7e essere 7alidatoD asse"nato ad un contestoD capire se funF zionale o non funzionaleD asse"nata"li una priorit-D ecc. @in altre paroleD il docu(ento SRS de7e esF sere ben co(pilatoA.

"ttivit di %m+rello/ Stime


/urante la fase di Inception @eD co(e raffina(entoD anc:e in 2uella di ElaborationA & i(portante staF bilire se un pro"etto & fattibile o (enoD 2uanto te(poD risorse e costi pre7edaD ecc. Il proble(a & c:e all=inizio non si :a c:iaro nG la portataD nG le conoscenze necessarie e neanc:e tutti i re2uisiti. Il proF ble(a non & da pocoD 7isto c:e non si possono ri(andare alla fine del processo le sti(e necessarie. Vedia(oD co(e si potrebbe fare. >a pri(a cosa da cui partire & la portata del soft0are: ?uanto & "rande il pro"etto' ?uali sono i suoi li(iti' Rispondere a 2ueste do(andeD non & se(pre facileI tutF ta7ia realizzare un (odello di business puH dare una (ano a stabilire la portata del soft0are. $iH non basta per le sti(eI & i(portante c:e il capo pro"etto sappiaD od abbia (odo di a7ereD le risposte ad alcune do(ande:

/a do7e parte la ric:iesta di 2uesto la7oro' $:i utilizzer- la soluzione' ?uali saranno i benefici econo(ici di una soluzione otti(ale' Pa"ina 15

Bnified Process

>a soluzione si puH tro7are altro7e' ?uali sono secondo il cliente le caratteristic:e di un output soddisfacente' ?uali proble(i de7e affrontare la soluzione' O possibile (ostrare o descri7ere l=a(biente in cui la soluzione do7r- operare' $i sono 2uestioni relati7e alle prestazioni o 7incoli particolari c:e incidono sulla soluzione' ?ual=& la persona piJ indicata a rispondere alle do(ande' >e risposte sono MufficialiN' $i sono altre persone c:e possono dare infor(azioni supple(entari' >e do(ande sono rile7anti rispetto al proble(a' $=& 2ualcos=altro c:e biso"nerebbe c:iedere' Si stanno facendo troppe do(ande'

>e risposte a 2ueste do(ande 7en"ono in parte dall=analisi dei re2uisiti @fulcro di 2uesta atti7it-AD alF tre da do(ande poste al cliente. >e ulti(e tre si ri7ol"ono al capo pro"etto e do7rebbero farlo rifletF tere sul nu(ero e sulla rile7anza delle do(ande c:e do7r- porre al cliente. Bna 7olta stabilita la portata del soft0areD & necessario stabilire se esso & fattibileD 2uanto costaD 2uanto te(po ci 7uoleD le risorse necessarieD ecc. Purtroppo la (a""ior parte di 2ueste cose ric:iede una certa esperienzaD in 2uanto solo col te(po si & in "rado di capire c:e proble(i possa a7ere un tea(D le sue conoscenzeD 2uanto i(pie"ano a far 2ualcosaD ecc. Vedia(oD co(un2ueD co(e proceF dere. >a pri(a cosa c:e 7edia(o sono le risorseI & 7ero c:e esse 7en"ono asse"nate solo una 7olta c:e il pro"etto & stato suddi7iso nelle sue parti fonda(entali e si & 7isto di cosa c=& biso"no per o"ni parteD tutta7ia sapere cosa abbia(o a disposizione & utileD se non fonda(entale. >e risorse c:e si :anno a disposizione sono le risorse u(aneD le risorse soft0are riutilizzabili e le risorse a(bientali. Sulle pri(eD a parte 2uanto detto per i tea( coesiD biso"na conoscere la loro collocazione nell=azienda @(ana"erD in"e"nere seniorD ecc.A nonc:G la specializzazione @teleco(unicazioniD databaseD clientQser7erD ecc.A. >e seconde le possia(o di7idere in:

Componenti di serie: soft0are esistenteD ac2uistabile dall=esterno o s7iluppato interna(ente in pro"etti passati. ?uesti co(ponenti sono pronti all=uso e sono "i- stati certificati. Componenti gi sperimentati: specific:eD pro"ettiD codice o dati s7iluppati in pro"etti passati e si(ili al soft0are c:e si de7e realizzare. I (e(bri del tea( :anno (aturato una piena esperienza nell=area applicati7a propria di tali co(ponenti. /i conse"uenza le (odific:e da apportare co(F portano risc:i relati7a(ente bassi. Componenti parzialmente sperimentati: specific:eD pro"ettiD codice o dati per collaudi s7ilupF pati per pro"etti passatiD affini al soft0are c:e si de7e realizzareD (a so""etti a (odific:e sostanF ziali. I (e(bri del tea( :anno un=esperienza li(itata nell=area applicati7a propria di tali co(poF nentiI di conse"uenza le (odific:e da apportare co(portano risc:i sensibili. 6uovi componenti: $o(ponenti soft0are c:e de7ono essere realizzati specificata(ente per il pro"etto in corso.

.or(al(enteD 2uando si :a a c:e fare con 2uesti co(ponentiD biso"nerebbe se"uire 2uesti passi: 1. Se esistono co(ponenti di serie c:e soddisfano i re2uisiti del pro"ettoD con7iene ac2uistarli. Il Pa"ina 16

Bnified Process costo di ac2uisto ed inte"razione di co(ponenti di serie & 2uasi se(pre inferiore al costo di s7iF luppo di soft0are e2ui7alente. Per di piJ i risc:i sono relati7a(ente bassi. 2. Se si dispone di co(ponenti "i- speri(entatiD i risc:i associati al loro adatta(ento ed inte"razioF ne sono in "enere accettabili. Il piano del pro"etto de7e tener conto del loro i(pie"o. ,. Se si dispone di co(ponenti parzial(ente speri(entatiD il loro uso nel pro"etto 7a analizzato. ?ualoraD pri(a dell=inte"razione ad altri co(ponentiD essi ric:iedano (odific:e rile7antiD si de7e procedere con (olta attenzioneD poic:G il costo dell=adatta(ento @a causa de"li eccessi7i sideFefF fect c:e puH "enerareA puH superare 2uello di s7iluppo di nuo7i co(ponenti. Per 2uanto ri"urada le risorse a(bientali esse ri"uardano tutto l=:ard0are ed il soft0areD nonc:G i luo":i di la7oro (aterialiD c:e assistono allo s7iluppo. Essi possono co(prendere toolD :ard0are specializzatoD posti di la7oro particolari per il collaudoD ecc. $onoscere 2ueste risorse & i(portante per e7itare di (andare in parallelo atti7it- c:e in parallelo non possono andare a causa delle li(itaF zioni a(bientali @se ad ese(pio c=& biso"no di una postazione speciale per il collaudoD e ne abbia(o una solaD non si possono collaudare conteporanea(ente due co(ponentiA. >a parte principale dell=atti7it- di o(brello del calcolo delle sti(eD consiste del sco(porre i re2uisiF ti in proble(i piJ piccoli e facil(ente "estibili e per o"nuno di essi applicare alcune (isurazioni 7iF ste precedente(ente: >*$D ;unction PointsD ;eature PointsD *b<ect PointsD $*$* *. *77ia(ente o"nuna di 2ueste (isure & effettuata in base ad una sti(a ed andr- tenuta sotto controllo durante l=eF 7ol7ersi del pro"etto. Bna 7olta prese 2ueste (isureD si 7ede 2uanto costa realizzare un T>*$D ;P od altroD 2uanto te(po @in (esi uo(oA ci 7uole per realizzarlo e 2uindi 2uanto costa il pro"etto e 2uanti (esiFuo(o ci 7o"liono. Bn altra tecnica consiste nel fare la sti(a basandola sulle fasi del processo: in altre parole si usa una tabella nelle cui ri":e si (ettono le funzioni e nelle colonne le fasiI le colonne sono a loro 7olta sudF di7ise nelle atti7it-. All=incrocio tra ri"a e colonna 7en"ono (essi i (esiFuo(o necessari a ter(inaF re un atti7it- per una deter(inata funzione. >a so((a ci dar- il totale dei (esiFuo(o neceessari al pro"etto. Sapendo 2uanto costa un (eseFuo(oD sappia(o 2uanto 7err- a costare il pro"etto. Bn ulti(o appunto: tutte le sti(e do7rebbero dare risultati circa u"uali @7ariazioni intorno al 2)XA su tutte le 7ariabili @costi e te(pi in pri(isAD altri(enti si"nifica c:e: o non si & capito la portata del pro"ettoD o non si sono capiti i re2usitiL
)a scelta tra s$iluppo ed acquisto

$o(e abbia(o detto pri(aD ci sono dei casi in cui biso"na sce"liere se ac2uistare un co(ponente o s7ilupparlo. Espandia(o il concetto a tutto il pro"etto: 2uando si inizia un nuo7o pro"etto esistono 2uattro posF sibilit- c:e possono essere applicate a tutto il pro"etto o solo ad una parte: 1. S7iluppo da zero 2. Ser7irsi di co(ponenti "i- speri(entati o parzial(ente speri(entati ,. Ac2uistare un prodotto esistente ed adattarlo 4. Affidare lo s7iluppo ad un altro produttore @outsourcin"A >a scelta puH dipendere da 7ari fattoriI le indicazioni 2ui di se"uito possono dare una (ano: 1. Preparare una specifica delle funzionalit- e delle prestazioni attese. ?uando & possibile definire caratteristic:e (isurabili. Pa"ina 1!

Bnified Process 2. Sti(are costi e te(pi dello s7iluppo in proprio. ,. Selezionare le tre o 2uattro applicazioni candidate c:e (e"lio soddisfano i re2uisiti 4. Selezionare una serie di co(ponenti soft0are riutilizzabili atti a costruire l=applicazione ric:iesta 5. Selezionare i tre o 2uattro candidati per l=outsourcin" c:e (e"lio soddisfano i re2uisiti 6. Vedere se la data di conse"na del prodotto & anteriore alla data di co(pleta(ento del soft0are s7iluppato in proprio. !. Vedere se il costo di ac2uisto so((ato al costo di adatta(ento & inferiore al costo dello s7iluppo in proprio 1. Vedere se il costo del supporto esterno @ad ese(pio il contratto di (anutenzioneA & inferiore al costo del supporto interno. #. Valutare o"ni pacc:ettoD co(ponente o soluzione proposta sulla base della 2ualit- dei prodotti collaudatiD del supporto al clienteD del controllo del prodottoD della reputazioneD dei costi e cosK 7ia. 1).$onsultare "li altri staCe:older e c:iedere il loro parere. Per calcolare i costi di o"ni opzione biso"na anc:e 7edere la probabilit- c:e possano 7erificarsi proF ble(iI cosK per la costruzione in proprio biso"na stabilire il costo & la probabilit- c:e lo s7iluppo sia se(plice o co(plesso. Per il riutilizzo biso"na 7edere il costo e la probabilit- c:e le (odific:e sia secondarie od i(portanti ed in 2uesto caso il costo e la probabilit- c:e 2ueste (odific:e siano se(F plici o co(plesse. Per l=ac2uisto biso"na 7edere il costo e la probabilit- c:e le (odific:e da apporF tare siano (odific:e secondarie od i(portanti. Per l=outsourcin" biso"na 7edere il costo e la probaF bilit- c:e 7en"ano ric:ieste delle (odific:e o 7ada bene cosK co(=&. *77ia(ente tale Malbero di decisioneN puH essere tanto piJ profondo 2uante piJ opzioni si :anno a disposizione. Il costo atteso & pari alla so((a delle 7arie probabilit- di sce"liere un ca((ino per il costo sti(ato di 2uel ca((ino.

"ttivit di om+rello/ "nalisi dei Rischi


/urante tutto il pro"etto possono 7erificarsi 7ari proble(i. BeneD un risc:io & un proble(a potenziaF leD c:e puH 7erificarsi o (eno. O i(portante c:e fin dalle pri(e fasi si ponderi bene i risc:i c:e il pro"etto protrebbe presentare e pro77edere a "estirli. >=analisi dei risc:i ser7e proprio a 2uesto. /efinia(o un risc:io un M2ualcosaN c:e presenta due caratteristic:e:

Incertezza: il risc:io puH a77enire o noI non ci sono risc:i con la probabilit- del 1))X @e se cosK fosse sarebbe un 7incolo e non un risc:ioA *erdita: se il risc:io si realizzaD ne se"uono conse"uenze indesiderate o perdite +oti: sono 2uelli suscettibili di essere scoperti dopo un attento esa(e del piano del pro"ettoD delF l=a(biente aziendale e tecnico in cui si s7ol"e lo s7iluppo e di altre infor(azioni rile7anti @ad ese(pio data di conse"na non realisticaD (ancanza di re2uisiti docu(entati o della dic:iarazione dei portata del soft0areD a(biente di s7iluppo inade"uatoA. *revedibili: sono 2uelli dedotti dall=esperienza @ad ese(pio alto rica(bio del personaleD difficolF

Bna 7olta stabilito cos=& un risc:io & necessario stabilirne il tipo. I risc:i possono essere:

Pa"ina 11

Bnified Process t- di co(unicazione col clienteD di(inuzione dell=i(pe"no nel la7oro di fronte a ric:ieste di (aF nutenzioneA.

Imprevedibili: sono 2uelli c:e possono a77erarsiD e spesso lo fannoD (a sono estre(a(ente diffiF cili da indi7idurare in anticipo. Rischio progettuale: (ette a repenta"lio il piano del pro"etto. ?uesto si"nifica c:e se il risc:io si realizzaD (olto probabil(ente i te(pi del pro"etto si allun":eranno ed i costi cresceranno. I riF sc:i pro"ettuali co(prendono proble(i potenziali relati7i al bud"etD alla tabella dei te(piD al perF sonale @scelta ed or"anizzazioneAD alle risorseD al clienteD ai re2uisiti e "li effetti relati7i sul proF "ettoD alla co(plessit-D alla di(ensione ed al "rado di incertezza del pro"etto. Rischio 0ecnico: (ette a repenta"lio la 2ualit- e la puntualit- del prodotto. .el caso in cui un riF sc:io tecnico si a77eriD l=i(ple(entazione puH di7entare difficile od i(possibile. I risc:i tecnici indi7iduano proble(i potenziali di pro"ettazioneD i(ple(entazioneD interfaccia(entoD 7erificaD (anutenzioneD a(bi"uit- delle specific:eD incertezza tecnicaD obsolescenza tecnicaD ed i(pie"o di tecnolo"ie di a7an"uardia. I risc:i tecnici si a77erano perc:G il proble(a & piJ difficile del pre7isto. Rischio aziendale: (inaccia la sopra77i7enza del prodotto. ?uesta cate"oria co(prende risc:i c:e (ettono in pericolo il pro"etto ed il prodotto. ;ra i piJ rile7anti: realizzare un prodotto od un siste(a di alta 2ualit-D (a c:e nessuno 7uole @risc:io di (ercatoAI realizzare un prodotto c:e non rientra piJ nella strate"ia aziendale @risc:io strate"icoAI realizzare un prodotto c:e il settore co(F (erciale non & in "rado di 7endereI perdere l=appo""io della direzione aziendaleD per 7ia dei (uF ta(enti di interesse o delle persone @risc:io diretti7oAI perdita di finanzia(enti o di personale @riF sc:io finanziarioA.

*"nuno di 2uesti puH essere a sua 7olta di7iso in:

Bna 7olta detto cos=& un risc:ioD e di c:e tipo puH essereD 7edia(o co(e indi7iduarliD 7alutarli e "eF stirli. >=indi7iduazione dei risc:i & il tentati7o siste(atico di specificare le (inacce al piano di un pro"etF to @sti(eD te(piD uso delle risorse e cosK 7iaA. >=indi7iduazione dei risc:i noti e pre7edibili & il priF (o passo 7erso la pre7enzioneD 2uando possibileD e la loro "estioneD 2uando necessario. Per o"nuno dei tipi di risc:io c:e abbia(o 7isto sopraD possia(o disti"uere tra risc:i generici e spe cifici. I pri(i sono co(uni a 2ualun2ue pro"etto soft0areI i secondi si possono indi7iduare solo a patto di a7ere una c:iara 7isione della tecnolo"iaD delle persone e dell=a(biente specifici del pro"etF to in esa(e. Per stabilire i risc:i "enerali biso"na rispondere ad alcune do(ande:

I topF(ana"er della societ- di soft0are e del cliente :anno for(alizzato la realizzazione del proF "etto' +li utenti finali :anno accettato positi7a(ente la realizzazione del siste(a o prodotto' I re2uisiti sono stati ben co(presi' I clienti sono stati interessati appieno nella realizzazione dei re2uisiti' +li utenti finali :anno attese realistic:e' >a portata del pro"etto & stabile' Il tea( di in"e"neria del soft0are :a le conoscenze ade"uate' Pa"ina 1#

Bnified Process

I re2uisiti del pro"etto sono stabili' Il tea( del pro"etto :a esperienza nel ca(po della tecnolo"ia da i(ple(entare' Il nu(ero di persone c:e la7orano nel tea( del pro"etto & ade"uato allo s7ol"i(ento del la7oro' Tutte le persone interessate @i clientiQutentiA sono daccordo sull=i(portanza del pro"etto e sulla necessit- c:e 7en"a realizzato il siste(a od il prodotto'

Se una di 2ueste do(anda :a una risposta ne"ati7aD occorre s7ol"ere "li atti di riduzioneD (onitoF ra""io e "estione dei risc:i. Il "rado di risc:io del pro"etto & diretta(ente proporzionale al nu(ero di risposte ne"ati7e a 2ueste do(ande. Per 2uanto ri"uarda i re2uisiti specificiD si de7ono esa(inare il piano di pro"etto e la dic:iarazione di portata e rispondere alla do(anda: M?uali aspetti peculiari del prodotto possono (inacciare il piano del pro"etto'N Al fine di indi7iduare i risc:i & utile stilare un catalogo dei risc.iD suddi7iso in 7arie cate"orie di riF sc:i noti e pre7edibili:

'imensione del prodotto: risc:i associati alla di(ensione co(plessi7a del soft0are da costruire o (odificare. :ffetti commerciali: risc:i associati ai 7incoli i(posti dal (ana"e(ent od anc:e dal (ercato. Caratteristic.e del cliente: risc:i associati alla sofisticazione del cliente ed alla capacit- dello s7iluppatore di co(unicare te(pesti7a(ente con esso. 'efinizione del processo: risc:i associati alla precisione con cui il processo di s7iluppo & defiF nito ed & se"uito dall=or"anizzazione. Ambiente di sviluppo: risc:i associati alla disponibilit- ed alla 2ualit- de"li stru(enti utilizzati nello s7iluppo del prodotto. <ecnologia: risc:i associati alla co(plessit- del siste(a da realizzare ed alla no7it- della tecnoF lo"ia racc:iusa nel siste(a. 'imensione ed esperienza dello staff: risc:i associati all=esperienza co(plessi7aD tecnica e proF "ettuale de"li in"e"neri i(pe"nati nello s7iluppo.

>=i(ple(entazione del catalo"o dei risc:i & lasciata al tea(: alcuni potrebbero (ettere co(e pri(a cosa la di7isione tra risc:i noti e probabiliD sotto di essi (ettere le cate"orieD sotto le cate"orie (etF tere i risc:i indi7iduatiD con il relati7o tipo @tecnicoD aziendaleD strate"icoD ecc.AI altri potrebbero (ettere la suddi7isione per cate"orie e sotto di 2ueste i relati7i risc:i @con indicazioni sul tipo e sul fatto se & noto o probabileAI altri ancora potebbero (ettere in ci(a il tipo di risc:io ed a se"uire le cate"orie ed i risc:i associati @con l=indicazione se noto o probabileAI e cosK 7ia. Anc:e la descrizioF ne dei risc:i & 2ui lasciata al tea( c:e potrebbe decidere di elencare i risc:i co(e tratti peculiariD co(e risposte ad alcune do(ande od altro ancora. Bna 7olta a7uto il catalo"o dei risc:iD o"ni risc:io 7a sti(ato: cio& biso"na conoscere la probabilitc:e il risc:io sia reale e le conse"uenze dei proble(i c:e sor"ono 2ualora il risc:io si realizzi.
5abella dei risc%i

>a tecnica c:e 7iene presentata si basaD oltre c:e sul catalo"o dei risc:iD anc:e su una strate"ia su"F "erita dalla B.S. Air ;orce. ?uesta strate"ia 7uole c:e il capo pro"etto indi7idui i fattori di risc:io c:e incidono sui co(ponenti di risc:io del soft0are: prestazioniD costiD supporto e te(pi. Pa"ina #)

Bnified Process

Illustrazione # ComponentiACategoria

Ai fini della presente trattazioneD i co(ponenti di risc:io sono definiti nel (odo se"uente:

Risc.i sulle prestazioni: il "rado di incertezza sul fatto c:e il prodotto soddisfi i re2uisiti e sia adatto all=uso pre7isto. Risc.i sui costi: il "rado di incertezza sul fatto c:e il bud"et 7en"a rispettato. Risc.i sul supporto: il "rado di incertezza sul fatto c:e il soft0are risultante sia facile da corre"F "ereD adattareD potenziare. Risc.i sui tempi: il "rado di incertezza sul fatto c:e i te(pi pre7isti siano rispettati e c:e il proF dotto sia conse"nato puntual(ente.

Pa"ina #1

Bnified Process +li effetti di o"ni fattore di risc:io sono classificati in 2uattro cate"orie: trascurabileD (ar"inaleD criF tico e catastrofico. >a fi"ura deno(inata $o(ponentiQ$ate"oria indica le conse"uenze potenziali di errori @ri":e contrasse"nate da 1A o della (ancanza realizzazione di un risultato desiderato @ri":e contrasse"nate da 2A. >a cate"oria dell=effetto 7a scelta sulla base della descrizione c:e (e"lio corF risponde al caso in esa(e. .ella fi"ura la 7aluta & in lire. Vedia(o a 2uesto punto 2uesta se(plice tecnica di sti(a: la tabella dei risc.i. Si co(incia stilando un elenco di tutti i risc:iD non i(porta 2uanto re(otiD nella pri(a colonna della tabella @i risc:i 7en"onoD solita(enteD presi dal catalo"o dei risc:iA. *"ni risc:io 7iene suddi7iso per cate"oria nella seconda colonna @2ui per cate"oria intendia(o 2uelle del catalo"o dei risc:iA. .ella successi7a colonna della tabella si indica la probabilit- c:e si 7erific:i il risc:io. ?uindi 7iene conF siderato l=i(patto di ciascun risc:io. *"ni co(ponente del risc:io 7iene definito utilizzando la cateF "orizzazione presentata nella fi"ura precedente e 7iene deter(inata una cate"oria d=i(patto. Viene calcolato il li7ello (edio di o"nuno dei 2uattro co(ponenti del risc:io @prestazioniD supportoD costiD te(piA per deter(inare il 7alore "lobale d=i(patto @si puH usare il 7alore "lobale d=i(patto 2uando uno dei co(ponenti di risc:io & il piJ si"nificati7o per il pro"ra((aA. /opo a7er co(pilato le pri(e 2uattro colonneD si ordina la tabella secondo la probabilit- e le conseF "uenzeD ponendo in alto i risc:i con alta probabilit- ed alto li7ello di conse"uenze ed in basso 2uelli con bassa probabilit-. Il capo pro"etto esa(ina la tabella ordinata e traccia una linea di de(arcazioF ne orizzontale: solo i risc:i sopra la linea rice7eranno ulteriore attenzione. I risc:i sotto la linea sono nuo7a(ente 7alutati al fine di produrre una scala di precedenza secondaria. Si de7ono trattare tutti i risc:i sopra la linea di de(arcazione. .ella tabella c=& una 2uinta colonna intestata con R o RIS. ?uesta colonna contiene un puntatore ad un piano di riduzioneD sor7eF "lianza e "estione dei risc:i @RisC iti"ationD onitorin" and ana"e(ent Plan o R A od alF ternati7a(ente ad una raccolta di note infor(ati7e sui risc:i @RisC Infor(ation S:eet o RISA. VedreF (o co(e & co(posto un R o un RIS piJ a7anti. >a probabilit- di un risc:io la si calcola in (aniera e(pirica od attra7erso esperienze precedenti. Bna (ano puH darla classificando i risc:i inzial(ente co(e i(possibileD i(probabileD nor(aleD proF babileD fre2uente e poi dando ad essi un 7alore nu(erico @i(possibileU(inore del 1)XI i(probabiF leU1)F25XI nor(aleU25F5)XI probabileU5)F!5XI fre2uenteU(a""iore del !5XA. Tre fattori incidono sulle conse"uenze del realizzarsi di un risc:io: la sua naturaD la sua portata ed il te(po. >a natura di un risc:io indica 2uali proble(i possono sor"ere se il risc:io si a77era. >a porF tata di un risc:io co(bina la "ra7it- @2uanto & serioA con la sua estensione @2uanta parte del pro"etto & interessata o 2uanti clienti possono essere danne""iatiA. Il fattore te(porale co(prende il (o(enF to e lo spazio di te(po in cui "li effetti sono rile7abili.?uando si co(pila la tabella dei risc:i bisoF "na tener conto di 2uesti tre fattoriD 2uando si decide la cate"oria d=i(patto. Biso"na inoltre deterF (inareD per o"ni risc:ioD l=esposizione al risc.ioD R:D nel se"uente (odo: REUP V $ /o7e P & la probabilit- c:e si 7erific:i un risc:io e $ & il costo del pro"etto nel caso in cui si 7erifiF c:i il risc:io. >=esposizione totale calcolata per tutti i risc:i piJ ele7ati della tabella dei risc:i puH fornire un (etodo per (odificare la sti(a dei costi finali del pro"etto. PuH essere anc:e utilizzata per pre7edere la probabilit- di do7er au(entare le risorse u(ane necessarie nello s7iluppo del proF "etto. ?uesta tecnica de7e essere applicata nel corso di tutto il pro"etto al fine di stabilire se le (utate cirF costanze incidono sulla sua probabilit- e su"li effetti. In se"uito a 2uesta operazione puH essere neF Pa"ina #2

Bnified Process cessario inserire nuo7i risc:i in tabellaD eli(inarne altri non piJ rile7anti e (odificare la collocazioF ne dei restanti. A 2uesto punto abbia(o una fa(i"lia di terne [riIliIVi\ c:e ci indicano rispetti7a(ente i risc:iD la probabilit- c:e si 7erific:ino ed il relati7o i(patto. /a 2uesti biso"na rica7are i livelli di riferimento cio& un insie(e di 7alori c:e indic:ino 2uando una delle co(ponenti del risc:io supera un li7ello liF (ite da noi stabilito. /a 2uesti rica7are il punto di rottura cio& il punto in cui uno o piJ li7elli di riferi(ento :a superato la so"lia di attenzione troppo (arcata(ente: prose"uire il pro"etto porter- al falli(entoL Bna piccola nota: co(e detto la descrizione dei risc:i puH essere fatta co(e piJ a""rada. Tutta7iaD arri7ati a 2uesto punto & (e"lio essere piJ precisi e rifor(ulare i risc:i in for(ato C<C @$ondizioF ne E Transizione E $onse"uenzaA. In pratica il risc:io 7iene definito nella se"uente for(a: Dato che BcondizoneC allora vi = una <probabile! BconseguenzaC
Gestione del Risc%io

Bna 7olta c:e abbia(o stabilito i risc:iD le loro conse"uenzeD i li7elli di rferi(entoD il punto di rottuF raD ecc. biso"na decidersi a "estirli. Per far 2uesto si usano tre docu(enti: il piano di riduzione dei risc:iD la 7i"ilanza sui risc:iD la "estione dei risc:i e la pianificazione delle ur"enze. Il piano di riduzione dei risc.i indica 2uali sono le strate"ie da applicare per ridurre la probabilitc:e il risc:io si 7erific:i. Ad ese(pio se il risc:io & un alto turnFo7er del tea(D con probabilit- del !)X di accadere con conse"uenze critic:eD un piano di riduzione dei risc:i potrebbe co(prendere:

riunioni con lo staff tese a deter(inare le cause del rica(bio @ad ese(pio condizioni di la7oro inF soddisfacentiD salari bassiD (ercato del la7oro co(petiti7oAI azioni 7olte ad alle7iare 2ueste cause su cui la direzione puH inter7enire pri(a dell=a77io del proF "ettoI dopo l=a77io del pro"ettoD supporre c:e ci sar- alto rica(bio e predisporre le (isure atte a "aranF tire u"ual(ente la continuit- del la7oroI or"anizzare il tea( in (odo c:e le infor(azioni sull=atti7it- di s7iluppo siano a(pia(ente distriF buiteI definizioni di standard per la docu(entazione e di (eccanis(i c:e "arantiscano la puntuale proF duzione dei docu(entiI re7isioni colletti7e di o"ni aspetto del pro"ettoD cosK c:e piJ persone siano al corrente della siF tuazioneI predisposizione di (e(bri di riser7a per le posizioni tecnica(ente cruciali.

>a vigilanza sui risc.i & un=atti7it- 7olta a tener sotto controllo i fattori c:e possono indicare l=a7F 7icinarsi di un risc:ioD stabilirne la so"lia di attenzione e 2uando attuare le (ano7re corretti7e. .elF l%ese(pioD i fattori da sor7e"liare sono i se"uenti:

atte""ia(ento "enerale dei (e(bri del tea( e risposta alle pressioniI "rado di coesione del tea(I relazioni personali fra i (e(bri del tea(I proble(i potenziali relati7i ai co(pensi ed ai beneficiI disponibilit- di posti di la7oro alternati7iD interni all=azienda od esterniI Pa"ina #,

Bnified Process Inoltre biso"na controllare c:e tutte le (isure prese per ridurre il risc:io siano efficaci. Ad ese(pio le Mdefinizioni di standard per la docu(entazione e di (eccanis(i c:e "arantiscano la puntuale proF duzione dei docu(entiN sono un (odo di "arantire la continuit- anc:e nel caso in cui un (e(bro i(portante lasci il pro"etto. Il capo pro"etto de7e 7erificare (eticolosa(ente c:e o"ni docu(ento prodotto sia coerente e c:e offra infor(azioni necessarie ad un e7entuale nuo7o (e(ebro costretto ad unirsi al tea( del pro"etto. >a 7i"ilanza sui risc:i contiene anc:e un punto: 2uello c:e a (e piace definire co(e M assa $ritiF caN. ?uando "li MindicatoriN ra""iun"ono 2uesto punto si"nifica c:e il risc:io & certo e de7e passare la palla alla gestione dei risc.i e pianificazione delle urgenze. ?uesto docu(ento presu(e c:e i tentati7i di pre7enzione siano falliti e c:e il risc:io si sia a77erato. Indica co(e co(portarsi in tal caso. .ell=ese(pio: si dispone di personale di riser7aD le infor(azioni sono a(pia(ente docu(enF tate e distribuite tra i (e(bri del tea(I il capo pro"etto puH te(poranea(ente concentrare le risorse @e ritoccare la tabella dei te(piA sulle funzioni senza proble(i di personaleD dando (odo ai nuo7i 7enuti di inserirsi "radual(ente. Tutti coloro c:e stanno lasciando il tea( sono in7itati a sospendere il la7oro produtti7o ed a dedicare il te(po ri(asto a tras(ettere le infor(azioni utili.
RMMM e R!*

I docu(enti sopracitati 7en"ono for(al(ente (essi all=interno del piano di riduzioneD sor7e"lianza e "estione dei risc:i @RisC iti"ationD onitorin" and ana"e(ent Plan o R A od alternati7aF (ente in una raccolta di note infor(ati7e sui risc:i @RisC Infor(ation S:eet o RISA. Nota: il RIS puH anc:e essere una specifica del R >a struttura di un docu(ento R 1$? +ntroduzione ?uesta sezione fornisce un 7ista d=insie(e sul piano di riduzioneD sor7e"lianza e "estione dei risc:i. 1$1 ,copo ed intenzioni dellAattivit del RMMM Bna descrizione "enerale del fuoco del R nizzati7e. includendo obbietti7i e responsabilit- or"aF & cosK co(posta: .

1$ Ruolo organizzativo della gestione del risc.io /escrizione di c:i :a la responsabilit- per la "estione del risc:io. $? Risc.i del progetto ?uesta sezione descri7e tutti i risc:i del pro"etto conosciuti. $1 <abella del risc.io Bna presentazione di tutti i risc:iD probabilit- ed i(patti. $1$1 'escrizione del risc.io m Il risc:io ( & descritto con le sottocondizioni rile7anti. >a sezione 2.1.1 & ripetuta per o"ni riF sc:io (. $1$ Probabilit ed impatto del risc.io m >a probabilit- e l=i(patto del risc:io ( descritta nella sezione 2.1.2 & ripetuta per o"ni risc:io (.

Pa"ina #4

Bnified Process $ Raffinamento del risc.io I risc:i con alta probabilit- Q alto i(patto sono raffinati usando l=approccio $T$. !$? Piano di riduzione- sorveglianza e gestione dei risc.i ?uesta sezione discute l=R per o"ni risc:io. ?uesta sezione puH a7ere riferi(enti a fo"li RIS anzic:G a7ere tutte le descrizioni al suo interno. !$1 Riduzione del Risc.io per il risc.io m $o(e e7itia(o il risc:io (' >a sezione ,.1 & ripetuta per o"ni risc:io (. !$ Monitoraggio del Risc.io per il risc.io m ?uali condizioni dobbia(o (onitorare per deter(inare se il risc:io ( sta di7enendo piJ o (eno probabile' >a sezione ,.2 & ripetuta per o"ni risc:io (. !$! 7estione del Risc.io per il risc.io m $:e piani di e(er"enza (ettia(o nel pro"ra((a nel presupposto c:e il risc:io ( accadr-' >a sezione ,., & ripetuta per o"ni risc:io (. "$? Condizioni speciali Bna discussione sulle circostanze speciali c:e possono innescare i risc:i critici di pro"etto e le azioF ni ric:ieste c:e do7rebbero essere intrapese 2uando 2ueste condizioni accadono. Bna nota infor(ati7a sui risc:i @RISA & in7ece cosK strutturata: +' del Risc.ioE *"ni nota infor(ati7a del risc:io & creata con un unico I/. ?uesto I/ ser7e per colle"a(enti ad alF tre RIS o per colle"arsi al R <itolo del Risc.ioE Il titolo del risc:io do7rebbe essere il no(e del risc:io c:e & stato indentificato del pro"etto softF 0are. /i conse"uenzaD il titolo del risc:io de7e essere bre7e (a sufficiente(ente descritti7o c:e i (e(bri del tea( del pro"etto soft0are siano in "rado di identificarlo 7eloce(ente. 'ata +dentificazioneE >a data con la 2uale il risc:io & stato inizial(ente identificato. Btile per catalo"azione. ProbabilitE ?uesto 7alore indica la relati7a probabilit- c:e il risc:io del pro"etto si 7erific:i. PrioritE >a priorit- & il tasso di ur"enza c:e & dato ad un risc:io co(parato con altri risc:i nello stesso proF "etto. Il 7alore puH essere: BassoD edioD AltoD Br"ente. +mpattoE >=i(patto & il tasso c:e indica un possibile effetto sul pro"etto soft0are nel caso in cui il risc:io a7F 7en"a. Il 7alore puH essere: <rascurabile .essun effetto sul pro"etto. Pa"ina #5

Bnified Process Marginale 8a i(patto sul te(po necessario al co(pleta(ento del pro"etto (a non nel lun"o ter(ine. Critico Il te(po necessario al co(pleta(ento del pro"etto ric:iede pesanti (odific:e per recuperare dal risc:io. Catastrofico Il pro"etto & definiti7a(ente co(pro(esso e non puH essere co(pletato. 'escrizione del risc.ioE >a descrizione del risc:io descri7e bre7e(ente il risc:io in (odo piJ detta"liato rispetto al titolo. /i conse"uenza il risc:io do7rebbe essere descritto in ter(ini c:e o"ni (e(bro del tea( del pro"etF to soft0are sia in "rado di capirlo. Raffinamento@ContestoE ?uesta sezione del RIS do7rebbe essere usata per ricapitolare le circostanzeD le risorse ed altro inteF ressati dal risc:ioD (entre la descrizione raffinata del risc:io & di7isa in sottoFcondizioni. ,otto-condizioniE *"ni sottoFcondizione nella sezione Raffina(entoQ$ontesto do7rebbe descri7ere una condizione c:e contribuisce alla causa del risc:io. Riduzione@MonitoraggioE >a sezione RiduzioneQ onitora""io del RIS presenta una lista di proposte di azioni per eli(inare facil(ente o pre7enire il dato risc:io. *"ni azione & riferita co(e un Passo. PassiE Bn passo indi7iduale della RiduzioneQ onitora""io do7rebbe essere presa dal tea( di s7ilupF po per eli(inare o pre7enire un risc:ioD pri(a c:e esso a77en"a. 7estioneE >a sezione di "estione d- i detta"li su co(e occuparsi di un risc:io se si trasfor(a in una realt-. >a sezione della "estione include due o""etti: il piano di $ontin"enza e l=atti7atore. Piano di contingenzaE Il piano di contin"enza & un piano detta"liato per il tea( del pro"etto c:e a"isce nel caso il riF sc:io descritto a77en"a. AttivatoreE >=atti7atore del piano di contin"enza identifica l=e7ento c:e indica c:e il risc:io si & (ateriaF lizzato. >=atti7atore puH ser7ire da pro7a del tornasole 2uando si decide se pro(ul"are il piaF no di e(er"enza. ,tato correnteE >a stato corrente & definito da una lista di a""iorna(enti c:e descri7ono i ca(bia(enti di o"ni stato del risc:io in ter(ini di ca(bio di probabilit-D i(pattoD conse"uenzeD ecc. *"ni a""iorna(ento di stato de7e contenere una data ed una descrizione. 'ata statoE >a data di 2uando lo stato & ca(biato. Pa"ina #6

Bnified Process 'escrizione dello statoE /escrizione dello stato corrente o dell=azione presa in riferi(ento al risc:io identificato. ResponsabileE Il no(e del (e(bro del pro"etto c:e :a co(pilato il RIS. AssegnatoE Il no(e del (e(bro del pro"etto c:e & responsabile di esa(inare il risc:io e racco(andare le riduF zioni.

"ttivit di om+rello/ !iani icazione


Bn=altra atti7it- c:e 7iene s7olta nella fase di InceptionD (a c:e prose"ue per tutto l=arco del pro"etF toD & la pianificazione. >a pianificazione consiste nel tro7are un 2uadro di sti(a per l=asse"nazione delle 7arie risorse in un calendarioD cio& stabilire setti(ana per setti(anaD (ese per (ese o 2uanto ser7eD 2uali sono le risorse asse"nate ad una specifica parte del pro"etto. .or(al(ente la pianificaF zione & a""iornata periodica(ente per riflettere ca(bia(enti eQo ritardi 7ari. >a pianificazione de7e stabilire anc:e un M i"lior $asoN @2uando non si presenta nessun proble(aA ed un MPe""ior $asoN @2uando si presentano tutti i proble(iA. /a 2uesti due & possibile stabilire un M$aso RealisticoN @praF tica(ente una (edia tra i dueA. Pri(a di procedere nel detta"lio 7edia(o perc:G il soft0are & in ritardo. I (oti7i possono essere:

Scadenze irrealistic:e @esterneA Re2uisiti (utati non riflessi nel calendario Sottosti(a in buona fede Risc:i non considerati...

/ifficolt- tecnic:e i(pre7iste /ifficolt- u(ane $atti7a co(unicazione /ifetto nel (ana"e(ent

e cosK 7ia...

+li ulti(i due punti @Sottosti(a in buona fedeD Risc:i non consideratiA sono stati trattati precedenteF (ente. Il secondo punto @Re2uisiti (utati non riflessi nel calendarioA & il (oti7o per cui 2uesta & un=atti7it- di o(brello. Il pri(o punto & tra i piJ difficili da risol7ereD in 2uanto la "ente non se(pre :a la pazienza di aspettare e non conosce le difficolt- inerenti al pro"etto. /=altronde senza scadenF ze il pro"etto non finerebbe (ai. Per "estire le scadenze irrealistic:e si puH: ese"uire sti(e dettaF "liate basate su dati storici in (odo da tirar fuori una sti(a dei te(pi il piJ realistica possibileI se non & possibile dilatare la data di scadenzaD s7iluppare un (odello incre(entale c:e fornisce le funF zionalit- critic:e entro la scadenza ori"inale. A7uti 2uesti due biso"na spie"are la sti(a al cliente ed offrire l=alternati7a incre(entale Ms7iluppataN.
Principi fondamentali

$o(e per le altre aree dell=in"e"neria del soft0areD anc:e per la pianificazione te(porale si possono descri7ere alcuni principi fonda(entali:

Pa"ina #!

Bnified Process

Ripartizione: Bn pro"etto de7=essere ripartito in atti7it- e co(piti di di(ensioni ra"ione7oli. A tale scopo si sco(pon"ono sia il prodotto c:e il processo. +nterdipendenza: *ccorre deter(inare le dipendenze reciproc:e tra le atti7it- ed i co(piti in cui & stato ripartito il pro"ettoD alcuni co(piti possono essere s7olti in se2uenzaD altri in parallelo. Alcune atti7it- non possono ne((eno co(inciare finc:G non & disponibile un Mse(ila7oratoN prodotto da un=altra atti7it-D altre sono fra di loro indipendenti. Assegnazione del tempo: Ad o"ni co(pito si de7e asse"nare un certo nu(ero di Munit- di la7oF roN @ad ese(pio "iorniFuo(oA. Inoltre ad o"ni co(pito si de7ono attribuire la data di inizio e 2uella di fineD in funzione delle interdipendenze e della (odalit-D a te(po pieno o parzialeD con cui & s7olto &alidazione dellAassegnazione: Ad o"ni pro"etto & asse"nato un nu(ero definito di (e(bri dello staff. Al (o(ento dell=asse"nazione dei te(piD il capo pro"etto de7e accertarsi di non attriF buire piJ persone di 2uelle disponibili in o"ni istante. Responsabilit definite: *"ni co(pito de7e essere affidato ad un (e(bro del tea(. Risultati definiti: *"ni co(pito de7e produrre un risultato predefinito. Punti di controllo (o pietre miliari): Ad o"ni co(pito o "ruppo di co(piti si de7e associare un punto di controllo del pro"etto. Bn punto di controllo & co(piuto 2uando la 2ualit- di uno o piJ se(ila7orati & stata esa(inata ed appro7ata.

$iascuno dei principi appena citati de7e essere applicato ad o"ni a""iorna(ento della tabella dei te(pi.
Relazione tra personale e la$oro

>a relazione tra personale e la7oro & non lineare: il te(po supple(entare di co(unicazioneD cresce con l=au(entare del personale: E U >*$],Q@P],Rt]4A
istribuzione del carico di la$oro

>e tecnic:e di sti(a descritte precedente(ente forniscono una pre7isione delle unit- di la7oro @(esiFuo(oA necessari a co(pletare lo s7iluppo di un prodotto soft0are. .ello stabilire la distribuF zione del carico di la7oro tra le fasi di definizione e s7iluppoD si racco(anda in "enere di se"uire la re"ola detta del M4)F2)F4)N: il 4)X dell=i(pe"no & asse"nato all=analisi ed alla pro"ettazione e la stessa percentuale & attribuita ai collaudi finaliD (entre il 2)X dell=i(pe"no & dedicato alla scrittura del codice.
efinizione dei compiti di un progetto soft'are

PiJ 7olte abbia(o detto c:e un proble(a de7e essere sco(posto in un insie(e di co(piti necessario a risol7erlo. Purtroppo non esiste un insie(e di co(piti 7alido in assoluto: ciH c:e puH essere profiF cuo per un pro"etto "randeD potrebbe ri7elarsi un disastro in un pro"etto piccolo e 7ice7ersa. PerciH un pro"etto soft0are per essere efficace de7e definire una collezione di insie(i di co(pitiD ciascuno destinato a soddisfare le necessit- dei 7ari tipi di pro"etto. 1. Bn insieme di compiti & una collezione di co(pitiD la7ori e punti di controllo necessari a portare a ter(ine un pro"etto. Esso de7e essere selezionato in (odo da i(porre una disciplina sufficiente a "arantire la 2ualit- del soft0areD senza allo stesso te(po so7raccaricare il tea( di co(piti superF Pa"ina #1

Bnified Process flui. +li insie(i di co(piti de7ono soddisfare tipi di7ersi di pro"etto e "radi di7ersi di ri"ore. .on & faciF le co(pilare una classificazione co(pletaD (a la (a""ior parte dei produttori di soft0are affronta pro"etti delle cate"orie se"uenti. #$ *rogetti di innovazioneD intrapresi allo scopo di esplorare nuo7e idee o di applicare una nuo7a tecnolo"ia %$ *rogetti di sviluppo di una nuova applicazioneD intrapresi a se"uito di ric:ieste specific:e da parF te di un cliente &$ *rogetti migliorativiD 2uando un prodotto esistente & sottoposto a (odific:e sostanziali c:e posF sono ri"uardare le funzioniD le prestazioni o le interfacce osser7abili da"li utenti '$ *rogetti di manutenzioneD c:e corre""onoD adattano o estendono un prodotto esistente in (odi non diretta(ente percepibili da un utente. ($ *rogetti di ristrutturazioneD intrapresi allo scopo di ristrutturareD in tutto od in parteD un siste(a esistente. Anc:e all=interno di un tipo asse"natoD 7ari fattori influenzano la scelta dell=insie(e di co(piti. $o(binati fra loroD tali fattori offrono un=indicazione del "rado di ri"ore con il 2uale applicare il processo soft0are. In "enereD ad ese(pioD i pro"etti piccoli e non critici per l=azienda si possono afF frontare con ri"ore inferiore a 2uelli 7astiD co(plessi e critici. Si noti peraltro c:e o"ni pro"etto deF 7=essere condotto in (odo da ottenere un prodotto puntuale e di alta 2ualit-. Si possono definire 2uattro "radi di ri"ore:

+nformale: si applicano tutte le atti7it- portanti del processoD (a si ric:iede solo un insie(e (iF ni(o di co(piti. In "enerale i co(piti ausiliari sono ridotti al (ini(o e le esi"enze di docu(enF tazione (eno pesanti. Si applicano u"ual(ente tutti i principi fonda(entali dell=in"e"neria del soft0are. ,trutturato: la struttura portante del processo & piena(ente rispettata. Si applicano le atti7itportanti ed i relati7i co(piti appropriati al tipo di pro"ettoD oltre alle atti7it- ausiliarie necessarie a "arantire la 2ualit- del prodotto. I co(piti di assicurazione della 2ualit-D "estione della confi"uF razioneD docu(entazione e (isurazione sono condotti in (aniera inte"rata. Rigoroso: lo sc:e(a del processo & applicato con un li7ello di disciplina sufficiente a "arantire l=alta 2ualit- del prodotto. Si applicano tutte le atti7it- ausiliarie e si produce una ricca docu(enF tazione. F'i intervento rapidoG: si applica la struttura portante del processoD (aD a causa di una situazioF ne di e(er"enzaD si applicano solo i co(piti essenziali per (antenere un buon li7ello 2ualitati7o. /opo la conse"na del prodotto al cliente si procede a ristabilire la situazione nor(ale @cio& a co(pilare la docu(entazione co(pleta ed a s7ol"ere ulteriori re7isioniA. 6ota: Se tutto 7iene ese"uito in e(er"enzaD 7i & 2ualcosa di sba"liato nel processo soft0are o nelle persone c:e "estiF scono l=azienda od in entra(be le cose.

Il capo pro"etto de7e (ettere a punto una strate"ia siste(atica per selezionare il "rado di ri"ore opF portuno per un dato pro"etto. A tale scopoD sono stati definiti alcuni criteri di adatta(entoD a partire dai 2uali si calcola un 7alore per la selezione dell=insie(e dei co(piti. I criteri di adattamento ser7ono a deter(inare il "rado di ri"ore consi"liato con cui applicare ad un pro"etto il (odello di processo. Per i pro"etti soft0are sono stati definiti undici criteri:

Pa"ina ##

Bnified Process

/i(ensioni del pro"etto .u(ero di utenti potenziali $riticit- rispetto alla (issione aziendale >on"e7it- dell=applicazione Stabilit- dei re2uisiti ;acilit- di co(unicazione fra cliente e s7iluppatore aturit- della tecnolo"ia applicabile Vincoli prestazionali $aratteristic:e Me(bedded Q non e(beddedN $o(posizione dello staff del pro"etto ;attori di ristrutturazione

Ad o"ni criterio si asse"na un 7oto da 1 a 5D do7e 1 rappresenta un pro"etto per il 2uale si ric:iede solo un piccolo sottoinsie(e di co(piti di processo ed i re2uisiti (etodolo"ici e di docu(entazione sono (ini(iD (entre 5 rappresenta un pro"etto al 2uale si de7e applicare il corredo co(pleto di co(piti e per il 2uale i re2uisiti (etodolo"ici e di docu(entazione sono rile7anti. Per selezionare l=insie(e di co(piti adatto ad un pro"ettoD si de7ono co(piere i passi se"uenti: 1. Esa(inare i criteri indicati 2ui sopra ed asse"nate i 7oti relati7i @da 1 a 5A sulla base delle caratteF ristic:e del pro"etto. I 7oti andranno inseriti nella tabella piJ in basso 2. Esa(inare i coefficienti @pesiA asse"nati ad o"ni criterio. I 7alori dei coefficienti 7ariano da )D1 ad 1D2 e danno un=indicazione dell=i(portanza relati7a di un dato criterio per il tipo di soft0are s7iluppato nel contesto locale. Se necessarioD si possono apportare (odific:e tese a rispecc:iare le condizioni locali. ,. oltiplicare i 7alori inseriti nella tabella per i rispetti7i coefficienti e per il (oltiplicatore del tipo di pro"etto c:e si intraprende. Il (oltiplicatore 7ale ) od 1 ed indica la rile7anza del criterio nel tipo di pro"etto. Il risultato del prodotto 7oto V coefficiente V (oltiplicatore 7a inserito nella colonna Prodotto della tabellaD separata(ente per o"ni criterio.

4. $alcolare la (edia delle 7oci e porre il risultato nella casella TSS @TasC Set Selector E Selettore dell=insie(e dei co(pitiA. ?uesto 7alore "uida la scelta dell=insie(e dei co(piti piJ indicato per il pro"etto in esa(e.
Criterio di adattamento Voto e!o /i(ensioni pro"etto .u(ero utenti $riticit- aziendale >on"e7itStabilit- re2uisiti ;acilit- co(unicazioni aturit- tecnolo"ica Vincoli su prestazioni E(bedded Qnon e(bedded $o(posizione staff Interoperabilit;attori ristrutturazione Selettore @TSSA 1D2 1D1 1D1 )D# 1D2 )D# )D# )D1 1D2 1 1D1 1D2 Moltiplicatore Innovazione +uova applicazione Migliorativo Manutenzione Ristrutturazione ) 1 1 1 1 ) 1 1 1 1 ) 1 1 1 1 ) 1 1 ) ) ) 1 1 1 1 1 1 1 1 1 1 1 ) ) 1 ) 1 ) ) 1 1 1 ) ) 1 1 1 1 1 1 ) 1 1 1 1 ) ) ) ) 1 rodotto

Pa"ina 1))

Bnified Process /opo a7er calcolato il TSSD si puH consultare la tabella se"uente e ser7irsene co(e "uida per la seF lezione dell=insie(e di co(piti TSS "rado di rigore TSS ^ 1D2 Infor(ale 1D) ^ TSS ^ ,D)Strutturato TSS _ 2D4 Ri"oroso >a so7rapposizione dei 7alori di TSS nelle cate"orie conti"ue & 7oluta ed intende sottolineare co(e sia i(possibile definire contorni netti. .ell=analisi conclusi7aD il 7alore di TSSD l=esperienza ed il buon senso de7ono contribuire alla scelta dei co(piti. .or(al(ente se il selettore dell=insie(e dei co(piti & in un=area di so7rapposizioneD si de7e sce"liere il li7ello di ri"ore (eno for(ale a (eno c:e i risc:i non siano ele7ati.
*celta dei compiti

Bna 7olta stabilita la cate"oria di pro"etto ed il ri"ore necessario & "iunto il (o(ento di stabilire 2uali sono i co(piti necessari e co(e 7anno distribuiti nel processo. Stabilire 2uali sono i co(piti & una cosa c:e 7aria da pro"etto a pro"ettoD tutta7ia lo Bnified Process ci dice in cosa consistono le 7arie fasiD di conse"uenza sappia(o c:e la fase di Incenption contiene tutte le procedure iniziali atte a 7edere se il proble(a & fattibileD 2uella di Elaboration si occupa dell=analisi del proble(aD ecc. In base a 2uesto & possibile stabilireD al(eno a "randi lineeD 2uali sono i co(piti necessari nelle 7arie fasi @estrazione dei re2uisitiD calcolo sti(eD analisi di re2uisitiD ecc.A Bna 7olta 7isto a "randi linee 2uali co(piti sono necessari per la realizzazione del pro"ettoD essi 7anno raffinatiD di7isi in co(piti piJ se(plici c:e possono 7enir asse"nati ai (e(bri del tea(. Per una (a""iore esplicazione possia(o se"uire la tecnica per la sco(posizione del la7oro e la di7isioF ne dei co(piti: M5orC BreaCdo0n Structure @5BSAN. Tale tecnica inizia dall=ele(ento di (assi(o li7ello @corrispondente al pro"etto nella sua interezzaAD si sco(pone 2uindi nei suoi co(ponenti @siF ste(iD facilitiesD o""etti da conse"nareD ecc.A. $iascuno di 2uesti co(ponenti 7iene a sua 7olta sudF di7iso nei suoi co(ponenti costituti7i. ?uesta suddi7isione li7ello per li7ello prose"ue riducendo l=entit-D la co(plessit- ed il costo di ciascun ele(entoD fin 2uando non si ra""iun"e il li7ello di identificazione di un o""etto da conse"nare. ?uesto 7iene poi sco(posto nei principali co(piti c:e debbono essere ese"uiti dalle sin"ole funzioni. >=obietti7o & di identificare ele(enti e co(piti c:iaF ra(ente "estibili ed attribuibili alla responsabilit- di un (e(bro del tea( c:e possano essere pianiF ficatiD 7alutatiD sc:edulati e controllati. *"ni co(pito de7e risultare realizzabile da un (e(bro del tea( ed inte"rarsi coi co(piti s7olti da"li altri (e(bri.
efinizione di un reticolo dei compiti

;ra i sin"oli co(piti e sottoco(piti ci sono dipendenze reciproc:eD basate sulla se2uenza di s7ol"iF (ento. InoltreD 2uando il pro"etto coin7ol"e piJ personeD & fre2uente il caso in cui due o piJ co(piti siano s7olti in parallelo. In 2uesto caso occorre coordinare i co(piti s7olti si(ultanea(enteD affinF c:G siano co(pletati nel (o(ento in cui i co(piti successi7i ne ric:iedono i risultati. Bn reticolo di compiti o rete delle attivit & una rappresentazione "rafica della successione di co(piti di un pro"etto. .ella sua for(a piJ se(plice il reticolo rappresenta i co(piti piJ i(portanti. .ella fi"ura se"uente & illustrato un reticolo per un pro"etto di s7iluppo di un=idea inno7ati7a

Pa"ina 1)1

Bnified Process

.otare c:e il reticolo dei co(piti & basato sui co(piti stabili a "randi lineeD e7entual(ente di7idenF do @co(e nel caso del co(pito 1., ed 1.5A 2ualcuno di 2uesti se "i- si sa c:e possono essere di7isi in parti c:e possano procedere in parallelo. >a natura concorrente delle atti7it- di in"e"neria del soft0are i(pone alcuni i(portanti re2uisiti riF "uardo la pianificazione te(porale. Poic:G i co(piti s7olti in parallelo non sono sincronizzatiD il pianificatore de7e deter(inare le relazioni di dipendenza per coordinare l=a7anza(ento del pro"etF to. Inoltre il capo pro"etto de7e sapere 2uali co(piti si tro7ano sul ca((ino criticoD cio& 2uei co(F piti c:e de7ono rispettare i te(pi pre7isti affinc:G il pro"etto in "enerale possa rispettare la propria scadenza.
Pianificazione temporale

Stabiliti il reticolo dei co(piti e suddi7isi ulterior(ente i co(pitiD & necessario affidare i co(piti al tea( e 7edere co(e essi possano distribuirsi nel corso del te(po. Il PERT @Pro"ra( E7aluation and Re7ie0 Tec:ni2ueD tecnica di 7alutazione e re7isione dei pianiA ed il $P @$ritical Pat: et:odD (etodo del ca((ino criticoA sono due (etodi applicati allo s7iF luppo del soft0are. Entra(bi sono pilotati da infor(azioni elaborate nelle pri(e fasi di pianificaF zione di un pro"etto:

sti(e del carico di la7oroI sco(posizione delle funzioni del prodottoI selezione del (odello di processo e dell=insie(e dei co(piti appropriatiI /eco(posizione dei co(piti.

>e dipendenze reciproc:e fra i co(piti si possono espri(ere per (ezzo di un reticolo. O possibile definire i co(pitiD tecnica(ente deno(inati anc:e 5BS @5orC BreaCdo0n StructureD struttura di riF partizione del la7oroAD sia per il prodotto co(e unit-D sia per le sin"ole funzioni. Sia PERT c:e $P forniscono stru(enti 2uantitati7i c:e consentono al pianificatore di deter(inare il cammino criticoD ossia la catena di co(piti c:e deter(ina la durata di un pro"ettoD stabilire le stiF Pa"ina 1)2

Bnified Process (e piJ probabili dei te(pi necessari al co(pleta(ento di o"ni sin"olo co(pitoD applicando (odelli statisticiD calcolare i li(iti te(porali c:e definiscono la MfinestraN te(porale entro cui ciascun co(F pito de7e essere iniziato e ter(inato. Il calcolo di tali li(iti puH essere (olto utile per la pianificazione te(porale di un pro"etto. >o slitF ta(ento dei te(pi di pro"ettazione di una funzioneD ad ese(pioD puH ritardarne altre. $i possono essere alcuni i(portanti li(iti te(porali c:e possono essere dedotti dalle reti PERT o $P : il (a""ior anticipo possibile dell=inizio di un co(pitoD cio& l=istante in cui puH iniziare un co(pitoD supponendo di a7er s7olto nel (inor te(po possibile tutti i co(piti precedentiI il (a""ior ritardo possibile nell=iniziare un co(pitoD in (odo da non do7er ritardare il (ini(o te(po pre7isto per il co(pleta(ento del pro"ettoI la pri(a data possibile di co(pleta(ento @la so((a della pri(a data possibile e della durata del co(pitoAI l=ulti(a data possibile di co(pleta(ento @l=ulti(a partenF za possibile piJ la durata del co(pitoAI la flessibilit- totaleD ossia la 2uantit- di ritardi o di perdite di te(po consentita nella pianificazione dei co(pitiD in (odo da (antenere nei te(pi pre7isti il ca(F (ino critico della rete. Il calcolo dei li(iti te(porali porta alla deter(inazione del ca((ino critico e fornisce al responsaF bile del pro"etto un (etodo 2uantitati7o per la 7alutazione dell=a7anza(ento del pro"ettoD a (ano a (ano c:e i co(piti 7en"ono co(pletati. Bn altro stru(ento utile per la pianificazione te(porale & il dia"ra((a dei te(piD detto diagramma di 7antt. ?uesto dia"ra((a (ostraD per i 7ari co(pitiD la loro durata te(poraleD i punti di inizio e fineD 2uali co(piti possono essere s7olti in parallelo ed i punti di controllo. Sia PERTD sia +antt sono co(pilati a partire da stru(enti soft0are.
Esempio: SurfReport

Il cliente 7uole un ser7izio di infor(azioni su te(po e (areeI dalle ric:ieste preli(inari rice7ute dal cliente si & proceduto alla se"uente deco(posizione funzionale:

A- B- C: screen scrapers per , BR>s ': (odulo per for(attare l=e(ail :: (odulo per spedire l= e(ail F: (odulo te(porizzatore Moduli A- B- C: PerlI 1 ora ciascuno Modulo ': PerlI ,) (inuti Modulo :: PerlQsend(ailI 1 ora Modulo F: S:ell scriptQcronI 1 ora

Si & stabilito 2uanto te(po ci 7o"lia per o"ni co(pito:


,time di tempi: 5.5 ore @una personaAD ,.5 ore @, personeA /ia"ra((a di +antt

Pa"ina 1),

Bnified Process

/ia"ra((a PERT

/ia"ra((a +antt con asse"nazione risorse

Pa"ina 1)4

Bnified Process /ia"ra((a PERT con asse"nazione risorse

*or$eglianza della tabella dei tempi

>a tabella dei te(pi costituisce una "uida per il capo pro"etto. Se opportuna(ente s7iluppataD essa definisce i co(piti ed i punti di controllo c:e de7ono essere tenuti sotto controllo a (ano a (ano c:e il pro"etto a7anza. Esistono 7ari (odi per ottenere 2uesto controllo:

tenere periodic:e riunioni dedicate allo stato del pro"ettoD nel corso delle 2uali o"ni (e(bro del tea( riferisce sui pro"ressi e sui proble(iI 7alutare i risultati delle re7isioni s7olte nel corso del pro"ettoI deter(inare se i punti di controllo for(ali del pro"etto @i ro(bi nel dia"ra((a di +anttA sono portati a ter(ine nei te(pi pre7istiI confrontareD per o"ni co(pito elencato nella tabella del pro"etto @c:e riunisce tutti i co(piti con le date di inizio e fineAD la data effetti7a di inizio con 2uella pre7istaI consultare infor(al(ente i tecnici per a7ere le loro 7alutazioni so""etti7e sulla situazione e sui proble(i potenzialiI utilizzare l=analisi del 7alore ac2uisito @7edi a7antiA per stabilire 2uantitati7a(ente i pro"ressi.

.ella realt- un capo pro"etto esperto i(pie"a tutte 2ueste tecnic:e. Il capo pro"etto si ser7e del controllo per a((inistrare le risorse disponibiliD "estire i proble(i e diF ri"ere lo staff. ?uando il la7oro procede bene @te(pi e costi sono rispettatiD le re7isioni indicano un effetti7o pro"resso ed i punti di controllo sono rispettatiA il controllo non & pesante. Tutta7iaD 2ualora 7i siano proble(iD il capo pro"etto de7e esercitare un controllo per riportare la siF tuazione nei binari il piJ presto possibile. ?uando si rile7a un proble(a @ed uno slitta(ento dei te(piD & un proble(aAD si possono dirottare le risorse nell=area interessataD ad ese(pio ridistribuendo lo staff o ritoccando la tabella dei te(pi. Pa"ina 1)5

Bnified Process
Analisi del $alore acquisito

Il siste(a del 7alore ac2uisito fornisce una scala di 7alutazione di o"ni co(pito di un pro"etto softF 0areD indipendente(ente dal tipo di la7oro da s7ol"ere. Si sti(ano le ore totali per l=intero pro"etto ed ad o"ni co(pito 7iene asse"nato un 7alore ac2uisito sulla base di una sti(a percentuale del totaF le. Per deter(inare il 7alore ac2uisito de7ono essere s7olte le se"uenti operazioni: 1. /eter(inare il costo pre7isto del la7oro pianificato B$5S @Bud"eted $ost of 5orC Sc:eduledA per o"ni co(pito rappresentato nel piano. /urante l=atti7it- di sti(aD 7iene pianificato il la7oro @in oreFuo(o o "iorniFuo(oA di o"ni co(pito. PertantoD B$5Si & il costo pianificato per il co(F pito i. Per deter(inare i pro"ressi in un deter(inato punto della pianificazione del pro"ettoD si considera c:e il 7alore di B$5S & la so((a dei 7alori B$5Si di tutti i co(piti c:e de7ono esF sere co(pletati in un deter(inato (o(ento della pianificazione del pro"etto. 2. So((are i 7alori B$5S di tutti i co(piti per calcolare il costo "lobale di co(pleta(ento BA$ @Bud"et At $o(pletionA -,C = -C.2 7 per tutti i compiti 7 ,. Poi 7iene calcolato il 7alore del costo del la7oro ese"uito B$5P @Bud"eted $ost of 5orC PerF for(edA. Il 7alore B$5P & la so((a dei B$5S di tutti i co(piti c:e sono stati effetti7a(ente co(pletati in un deter(inato (o(ento della pianificazione del pro"etto. Si noti c:e la distinzione fra B$5S e B$5P sta nel fatto c:e il pri(o rappresenta il bud"et per le atti7it- c:e si pre7ede7a di co(pletare ed il secondo rappresenta il bud"et delle atti7it- effetti7aF (ente co(pletate. /ati i 7alori B$5SD BA$ e B$5P possono essere calcolati alcuni i(portanti indicatori del proF "resso del la7oro: Sc:edule Perfor(ance IndeV @indice delle prestazioni della pianificazioneA SPI U B$5P Q B$5S Sc:edule Variance @7arianza della pianificazioneA SVUB$5P E B$5S SPI & un indicatore dell=efficienza con cui il pro"etto sta utilizzando le risorse pianificate. Bn 7alore di SPI 7icino ad 1 indica un=efficiente esecuzione della pianificazione del pro"etto. SV & se(pliceF (ente un=indicazione assoluta della 7arianza rispetto alla pianificazione pre7ista. Percentuale pianificata per il co(pleta(ento U B$5S Q BA$ fornisce un=indicazione della percentuale di la7oro c:e de7e essere co(pletata nel te(po t Percentuale di co(pleta(ento U B$5P Q BA$ fornisce un=indicazione 2uantitati7a della percentuale di co(pleta(ento del pro"etto in un deter(iF nato punto del te(po t. O anc:e possibile calcolare il costo effetti7o del la7oro ese"uitoD A$5P @Actual $ost of 5orC PerF for(edA. Il 7alore di A$5P & la so((a de"li sforzi attual(ente spesi sui co(piti c:e sono stati co(pletati in un deter(inato punto della pianificazione te(porale del pro"etto. O pertanto possibile calcolare i due 7alori se"uenti: $ost Perfor(ance IndeV @indice prestazionale dei costiA $PIUB$5P Q A$5P $ost Variance @7arianza dei costiA $VUB$5P E A$5P Bn 7alore $PI 7icino ad 1 & un buon indicatore del fatto c:e il pro"etto rientra nella so((a definiF Pa"ina 1)6

Bnified Process ta. $V & un=indicazione assoluta dei rispar(i in ter(ini di costo @rispetto ai costi pianificatiA in una deter(inata fase del pro"etto. $o(e un radarD l=analisi del 7alore ac2uisito e7idenzia le difficolt- di pianificazione pri(a c:e diF 7en"ano e7identi. ?uesto consente al (ana"er del pro"etto soft0are di intraprendere azioni correttiF 7e pri(a c:e si s7iluppi una crisi del pro"etto.
Controllo degli errori

Bna delle cose da considerare 2uando si asse"nano le risorse & l=efficienza della ri(ozione dei difetF ti @7edi il capitolo etric:eA. >e 7alutazioni effettuate in tal a(bito possono essere utilizzate anc:e per indirizzare (e"lio le risorse di re7isione eQo collaudo.
Piano di progetto

*"ni passo del processo di s7iluppo produce un la7oratoD c:e de7e essere ri7isto e c:e for(a la base per i passi c:e se"uono. Il piano di pro"etto & il corona(ento delle atti7it- di pianificazione. Esso contiene una base di infor(azioni sui costi ed i te(piD da utilizzare lun"o tutto il processo soft0are. Il piano di pro"etto & un docu(ento relati7a(ente bre7eD indirizzato ad un pubblico etero"eneo. Esso de7e co(unicare la portata e le risorse al responsabile del pro"ettoD al personale tecnico ed al clienteI definire i risc:i e su""erire le tecnic:e di "o7erno dei risc:iI definire costi e te(piD per conF sentire alla direzione di esa(inarliI fornire una 7isione "lobale a tutte le persone in 2ualc:e (odo coin7olte nel pro"ettoI delineare le strate"ie per la 2ualit- e per il "o7erno dei ca(bia(enti. >a presentazione dei costi e dei te(pi 7aria a seconda del pubblico a cui & indirizzata. Se il piano & utilizzato soltanto co(e docu(ento internoD si possono presentare anc:e i risultati di ciascuna tecniF ca i(pie"ata per le sti(e dei costi. Se il piano & distribuito esterna(ente all=or"anizzazioneD 7iene fornito solo il risultato "lobale delle sti(e dei costi @si co(binano i risultati di tutte le tecnic:e i(F pie"ate a tal scopoA. Analo"a(enteD il li7ello di detta"lio del para"rafo dedicato alla pianificazione dei te(pi puH 7ariare a seconda del pubblico e del "rado di for(alit- del piano. O i(portante notare c:e la pianificazione del pro"etto soft0are non & un docu(ento statico. Infatti il tea( del pro"etto lo ri7ede ripetuta(enteD a""iornando i risc:iD le sti(eD le pianificazioni e le altre infor(azioni correlate a (ano a (ano c:e si ac2uisiscano nuo7e conoscenze sul pro"etto.

Riepilogo
Riepilo"andoD l%atti7it- di Re2uisiti @o Re2uire(entsA :a lo scopo di estrarre ed analizzare i re2uisiti di siste(a. Essa si s7ol"e in piJ iterazioni: la pri(a ser7e a controllare c:e il pro"etto sia fattibile ed abbia un costo accettabile per il clienteD le altre ser7ono ad estrarre e classificare 7ia 7ia i re2uisiti per il siste(a. /urante l%inizio di 2uesta atti7it- partono anc:e le atti7it- di o(brello c:e calcolano le sti(eD 7aluF tano i risc:i e pianificano risorse e te(pi per portare a ter(ine il pro"etto.

Riepilogo documenti prodotti


>%atti7it- di Re2uire(ents produce tutta una serie di docu(entiD il cui scopo & definire bene cosa de7e fare il siste(a. .or(al(ente il docu(ento dei re2uisiti co(prende: Il documento di visioneD contenente:

Pa"ina 1)!

Bnified Process

Premesse del progetto @*bietti7i e scopoD $ontestoD StaCe:oldersD ecc.A ,ervizi del ,istema @Scopo del siste(aD Re2uisiti ;unzionaliD Re2uisiti infor(ati7iD ecc.A &incoli @Re2uisiti di interfacciaD di prestazioneD di sicurezzaD operati7iD ecc.A

+li aspetti procedurali @proble(i apertiD pre7isione costiD ecc.A >e FAppendiciG. E 2ui includia(o:

odello di business +lossario odello dei casi d%uso @dia"ra((a e docu(entazione a""iunti7aA /ia"ra((a delle atti7it- e di stato Valutazione del risc:io @R SRS Piano di pro"etto iniziale @asse"nazione dei co(pitiD te(pi di esecuzioneD dia"ra((i PERTD ecc.A Prototipi /ocu(ento di arc:itettura iniziale D RISD tabella dei risc:iD ecc.A Sti(a del costo @per o"ni re2uisitoA

$i puH essere della /ocu(entazione a""iunti7aD co(e analisi di atti7it- precedentiD (a non & preF sente in tutti i pro"etti.

Analisys ,AnalisiScopo dell%atti7it- di analisi & 2uello di creare (odelli c:e catturano il co(porta(ento desiderato del siste(a. >%atti7it- di Analisi inizia non appena sono pronti i pri(i re2uisiti e costruisce le classi di analisi e le realizzazioni dei casi d%uso @il fuoco & ancora sul cosaA. Il (odello di analisi descri7e la storia del siste(aD cattura l%insie(e e contiene i (odelli appartenenti al do(inio del proble(a @2uindi con esclusione di classi di co(unicazione o di databaseA. Il (odelF lo de7e essere il piJ utile possibile a"li staCe:olders. Esso de7e essere il piJ se(plice possibileD non prendere decisioni sull%i(ple(entazione ed includere sola(ente classi del do(inio del proble(a. O proprio durante 2uesta atti7it- c:e si stabilisce l%arc:itettura di base. >%arc:itettura di base del softF 0are di un pro"ra((a o di un siste(a di calcolo & costituita dalle strutture del siste(aD c:e co(F prendono i co(ponenti soft0areD le loro propriet- 7isibili e le relazioni fra di essi. Tutta l%atti7it-D dun2ueD 7erte su: Indi7iduazione delle classi di analisi Analisi arc:itetturale Analisi dei casi d%uso

Classi di "nalisi
>e classi di analisi fanno una foto"rafia in "rande del siste(aD lasciando 2ualsiasi detta"lio di i(pleF Pa"ina 1)1

Bnified Process (entazione all%atti7it- di desi"n. Esse co(prendono


.o(e E Ric:iesto Attributi E sola(ente un insie(e li(itato affinc:G si possa capire cosa (e(orizza la classe. Solo il no(eI tipiD 7alori di default e 7isibilit- non sono ric:iesti etodi E solo i (etodi di alto li7ello per far capire le responsabilit- della classe. Solo il no(eI para(etriD 7alore di ritorno e 7isibilit- non sono ric:iesti. E7entuali 7alori di defaultD para(etriD tipiD ecc. 7en"ono specificati se sono necessari a far capire il (odello. /a tre a cin2ue responsabilit- per classe E le classi de7ono essere (antenute se(plici. .essuna classe de7e essere isolata E le classi 7en"ono create per cooperare tra loro. /iffidare di (olte piccole classi E A7ere (olte classi puH portare a difficolt- di (anutenzione. Ra""rupate delle funzionalit-. /iffidate di poc:e "randi classi E Proble(a in7erso. /i7idete le funzionalit-. /iffidate dei funtoidi E i funtoidi sono delle funzioni o delle procedure c:e 7en"ono a""iunte ad una classe @la classe :a solo tale (etodo o (etodi si(iliA. /iffidate delle classi onnipotenti E classi co(e Siste(a o $ontroller indicano di a7er a""iunto troppe responsabilit- a classi non ben definite. /iffidate di alberi di ereditariet- profondi E 2uesto & un catti7o uso dell%ereditariet-.
iagramma delle classi

Alcune re"ole da se"uire 2uando si cercano le classi di analisi:


Per 7isualizzare le classiD l%B > ci 7iene incontro con il dia"ra((a delle classi. +razie a 2uesto stru(ento si 7isualizzano "rafica(ente le classi e le loro associazioni. Bna classe 7iene rappresentata con un rettan"olo contenente un no(eI 2uesto rettan"olo puH essere di7iso in tre co(parti: Il pri(o riporta il no(eD il secondo "li attributi ed il terzo le operazioni. *"ni attributo & definito da un no(eD opzional(ente si puH indicare la 7isibilit-D il tipo ed un e7enF tuale 7alore di default. >a 7isibilit- & indicata attra7erso un si(bolo pri(a del no(eI tale si(bolo puH essere:

W indica c:e l%attributo & pubblico F indica c:e l%attributo & pri7ato ` indica c:e l%attributo & protetto

Il tipo & indicato con un no(eD separato dal no(e dell%attributo attra7erso i due punti. I tipi possibili in B > si classificano in tipi primitivi @cio& tipi intuiti7a(ente conosciuti co(e interiD strin":eD ecc.D oppure definiti di base nel lin"ua""io di pro"ra((azione sottostanteA e tipi classe @indica c:e l%attributo contiene il riferi(ento ad un o""etto istanza della classe specificataA. Il 7alore di default & il 7aloreD separato dal se"no di u"uale dal restoD c:e l%attributo prende auto(atiF ca(ente 2uando un o""etto 7iene istanziato. In piJ & possibile indicare se un attributo & statico @cio& un attributo co(une a tutte le istanzeA anteF Pa"ina 1)#

Bnified Process ponendo"li il si(bolo a oppure sottolineandolo. Se un attributo & deri7ato @cio& esso non esiste fisiF ca(enteD (a & rica7ato attra7erso il calcoloA allora "li si antepone il si(bolo Q Per 2uanto ri"uarda le operazioni anc:%esse sono indicate da un no(eD nor(al(ente se"uito da una coppia di parentesi. O possibile definirne la 7isibilit- @indicata co(e per "li attributiAD i para(etri c:e prende @(ettendoli dentro le parentesi c:e se"uono il no(eD e separando o"nuno di essi tra(ite la 7ir"olaA ed il tipo di ritorno @separandolo con due puntiA. Se si specificano i para(etri essi de7ono a7ere no(e e tipo @separati attra7erso i due puntiA. Anc:e i (etodi possono essere statici @cio& sono "lobaliA e co(e tali 7en"ono indicati anteponendo il si(bolo a o sottolineandoli. .on possono esistere (etodi deri7ati. Per 2uanto ri"uarda le associazioniD si indicano utilizzando una linea c:e colle"a due classi. *"ni liF nea rappresenta un%associazioneI le associazioni possono a7ere (olteplicit- @se"nata a"li estre(iAD no(i @se"ato al centroAD no(i di ruoli @se"nati a"li estre(iA. Se la linea & in realt- una frecciaD si"niF fica c:e la na7i"abilit- & solo in 2uella direzione.

In 2uesto ese(pio possia(o notare un trian"olo 7icino al no(eI 2uesto indica sola(ente la direzioF ne in cui 7a letto il no(e: la co(pa"nia assu(e delle personeD non sono le persone c:e assu(ono la co(pa"nia. Ser7e solo co(e nota all%utente per far"li capire co(e si era letta l%associazione per darF "li 2uel no(e. Ed in effetti 2ui possia(o dalla co(pa"nia risalire alle persone assunte e dalle persoF ne possia(o risalire alla co(pa"nia c:e le :a assunte. >=associazione :a inoltre una (olteplicituno a (oltiD cio& una co(pa"nia puH assu(ere piJ personeD (entre una persona puH essere assunta da una sola co(pa"nia.

In 2uesto ese(pio l=associazione :a una na7i"abilit-: 2uesto si"nifica c:e dalla co(pa"nia possiaF (o risalire alle persone (a non 7ice7ersa. Anc:e 2ui l=associazione :a una (olteplicit- uno a (olti. Possia(o notare c:e in 2uesto caso siano stati specificati i ruoli della co(pa"nia e delle personeD (entre & stato o(esso il no(e dell=associazione @c:e risc:ia7a di creare confusioneA >e associazioni possono anc:e essere ciclic:e:

subdirectory 0..* Directory 1 0..1 parent

0..*

File

Pa"ina 11)

Bnified Process Per rappresentare le associazioni di a""re"azione si usa (ettere nel lato del contenitoreD un ro(bo 7uotoD (entre per 2uelle di co(posizione si usa (ettere nel lato del contenitoreD un ro(bo pieno. >e "eneralizzazioni sono rappresentate da una frecciaD la cui punta & 7uota.

Shape draw(g:Graphics) getArea(): int getBoundingArea( :int

!"uare dra#(g:$rap%ics getArea( : int

Circle dra#(g:$rap%ics getArea( : int

Illustrazione % 6ui vediamo che sia 2quare che Circle estendono 2hape

>e classi di associazione sono colle"ate alle associazioni per (ezzo di una linea tratte""iata.

Company

* Job salary: double

Person

Infine ci possono essere le associazioni 2ualificateD cio& delle associazioni c:e indicano c:e da una classe & possibile estrarre ele(enti di un%altra classe attra7erso un classificatoreI nell%ese(pio sotto notia(o c:e (e(berId & il classificatore con il 2uale possia(o estrarre da un 2ualsiasi o""etto $lubD tutti "li o""etti e(ber c:e ne fanno parte.

Pa"ina 111

Bnified Process

Club
member&d * 1 member member&d:string
Per concludereD in 2uesto dia"ra((a & possibile rappresentare anc:e le dipendenze delle di7erse classi. >a rappresentazione a77iene per (ezzo di una freccia tratte""iata su cui 7iene posto un no(e: ^^use__ 2uesto indica c:e una classe usa l%altra @il tipo d%uso non & specificatoA. ^^call__ 2uesto indica c:e una classe c:ia(a un (etodo dell%altra ^^send__ 2uesto indica c:e una classe in7ia un se"nale all%altra ^^instantiate__ 2uesto indica c:e una classe istanzia un o""etto dell%altra *77ia(ente possono esistere altri tipi di dipendenzaD persino definiti dall%utenteD purc:G siano defiF niti da 2ualc:e parte @le""i "lossarioA.

"nalisi "rchitetturale
Il co(pito dell%analisi arc:itetturale & di di7idere le classi di analisi in pacCa"eD in (odo da di(inuiF re l%accoppia(ento tra le classi @cioG (ini(izzare le dipendenze tra i pacCa"eAD (ini(izzare il nuF (ero di ele(enti pubblici e protetti in o"ni pacCa"e e (assi(izzare il nu(ero di ele(enti pri7ati in o"ni pacCa"e. I pacCa"e (ettono insie(e classi c:e si occupano della stessa se(anticaI 7en"ono solita(ente troF 7ati osser7ando i casi d%uso e le relazioni tra le classi. I casi d%uso sono spesso realizzati attra7erso classi pro7enienti da di7ersi pacCa"eI tutta7ia uno o piJ casi d%uso c:e supportano un particolare processo od attoreD oppure un insie(e di casi d%uso relazioF natiD possono indicare un pacCa"e potenziale. >e relazioni c:e potrebbero indicare pacCa"e sono ereditariet-D a""re"azioneD co(posizione o diF pendenza. Bna 7olta indi7iduato un pacCa"e si (ini(izzano i (e(bri pubblici e protettiD infatti lo scopo del pacCa"e & 2uello di a7ere alta coesione all%internoD (a basso accoppia(ento con altri pacF Ca"e. >e dipendenze tra i 7ari pacCa"e non possono essere ciclic:eI 2uando 2uesto a77iene si"nifica c:e i due pacCa"e sono in realt- lo stesso pacCa"e duplicato od esistono ele(enti in co(une c:e in realt- de7ono far parte di un nuo7o pacCa"e. Pa"ina 112

Bnified Process In B > 2uesto 7iene rappresentato con il dia"ra((a dei PacCa"e
iagramma dei Pac6age

Il dia"ra((a dei pacCa"e & for(ato da un rettan"olo c:e contiene classi ed altri pacCa"eI in ci(a al rettan"olo 7i & un secondo rettan"olo @in (odo da for(are una sc:edaA contenente il no(e del pacF Ca"eI & possibile c:e 7i siano dipendenze tra 2uesti pacCa"eD rappresentate con freccie tratte""iate con sopra un no(e. *ltre alle dipendenze (enzionate per le classiD esistono due dipendenze i(porF tanti per i pacCa"e: ^^access__ con il 2uale si indica c:e un pacCa"e accede a"li ele(enti pubblici dell%altro pacCaF "eD facendo7i riferi(ento esplicito ^^i(port__ con il 2uale si indica c:e un pacCa"e accede a"li ele(enti pubblici dell%altro pacCaF "eD senza far7i riferi(ento in (aniera esplicitaD (a i(portando al proprio interno il na(espaceD cio& o"ni 7olta c:e si fa riferi(ento ad un o""ettoD e 2uesto non appartiene al pacCa"e correnteD 7iene riF cercato tra "li ele(enti pubblici del pacCa"e su cui 7i & la dipendenza i(port.

.el dia"ra((a 2ui sopraD possia(o notare anc:e un altro (odo di 7isualizzare il pacCa"eD 2uando non ci interessa il loro contenuto interno: il no(e 7iene (esso all%interno del rettan"olo piJ "rande. *ltre a 2uesto notia(o delle freccie con la punta 7uota: 2ueste indicano una "eneralizzazione tra pacCa"e. $:e si"nifica' Bna "eneralizzazione tra pacCa"e indica se(plice(ente c:e alcune classi "eneralizzano classi appartenenti ad un altro pacCa"e @c:e puH essere utile co(e si 7ede nell%ese(F pio sopraA. Pa"ina 11,

Bnified Process Esiste un altro (odo per 7isualizzare i pacCa"e e le classi interni ed & 2uello di (ettere i no(i dei pacCa"e preceduti da un se"no (enoD piJ o cancelletto a seconda della loro 7isibilit-. ?uesto sisteF (a fa perdere le dipendenze tra i pacCa"eD (a per(ette di 7edere a colpo d%occ:io 2uali sono "li eleF (enti pubblici e pri7ati

'ditor ( Controller ( Diagram'lements ( Domain'lements ( $rap%icsCore ) *oti+Core ) ,indo#sCore


?uesto siste(a per(ette anc:e di capire cosa estende cosaD tra i pacCa"e

Product ( Price -*ar.et ( &tem ) *icromar.et

/otels ( ( ( ( Product::Price Product::*ar.et &tem /otel 0oom1ype

Car/ire ( ( ( Product::Price Product::*ar.et &tem Car

.ell%ese(pio sopra possia(o notare c:e icro(arCet & pri7ato e 2uindi non puH essere estesoD Ite( 7iene riscritto dalle due classiD (entre Price e arCetD 7en"ono ripresi esatta(ente dalle superclassi dentro il pacCa"e Product.

Pa"ina 114

Bnified Process

Realizzazione dei casi d.uso


A (ano a (ano c:e le classi di analisi 7en"ono co(pletateD si 7ede co(e possono intera"ire per realizzare i 7ari casi d%uso. A supporto di 2uesto esistono i dia"ra((i di collaborazione e i dia"ra(F (i di se2uenza. ?uesti due dia"ra((i :anno la stessa se(antica ed espri(ono lo stesso concetto: Mco(e intera"iscono le classi al fine di realizzare il caso d%uso preso in esa(e'N. >a differenza sta nella 7isione di insie(e c:e forniscono: i pri(i centrano l%attenzione su 2uali classi la7orano per realizzare il caso d%usoD (entre la se2uenza delle operazioni & secondariaI i secondi focalizzano l%atF tenzione sulla se2uenza te(porale dei (essa""i sca(biatiD su 2uando "li o""etti 7en"ono creati e distruttiD (ettendo in secondo piano l%insie(e delle classi c:e intera"isce. Il piJ delle 7olte "li struF (enti $ASE sono in "radoD dato uno di 2uesti dia"ra((iD di "enerare l%altro.
iagrammi di sequenza
.el dia"ra((a di se2uenza "li o""etti e "li attori sono disposti in orizzontaleI la se2uenza dei (essa""i sca(biati & (ostrata dall%alto al basso nella di(ensione 7erticale. *"ni linea 7erticale & una linea te(F porale c:ia(ata linea di 7ita di un o""etto. Bna linea di 7ita & rappresentata da una linea tratte""iateD se l%o""etto non & atti7o @in attesa di istruzioniAD o con un rettan"oloD se l%o""etto sta la7orando @"li o""etti se(pre atti7iD co(e un attore od il te(poD :anno se(pre e solo un rettan"oloA. Bna freccia rappresenta un (essa""io da un o""etto c:ia(ante @senderA ad uno c:ia(ato @targetA per dir"li di ese"uire un%opeF razioneI alla fine dell%elaborazione si puH indicare il ritorno dalla c:ia(ata con una linea tratte""iata. Il (essa""io :a un no(e e puH a7ere una lista di para(etri attualiI se il (etodo de7e restituire un 7alore esso puH essere fatto in due (odi: nella c:ia(ata si specifica il 7alore di ritorno nella for(a 7al:Ufun @para(AD oppure nella freccia di ritorno si indica un no(e c:e identifica cosa sta 7enendo restituito. >a freccia di ritorno puH essere del tutto o(essa 2uando si capisce in c:e (o(ento la funzione ritorna @spessoD 2uindiD con "li o""etti c:e si ris7e"liano con una c:ia(ata e tornano in letar"o una 7olta finito l%esecuzione del (etodoA. Bn (essa""io puH essere in7iato ad una collezione di o""etti @un insie(eD una listaD ecc.AI per indicare 2uesto si usa anteporre un asterisco al no(e del (essa""io. Pri(a di addentrarF ci ulterior(ente nella sintassi di 2uesti dia"ra((iD 7edia(o un ese(pio. Vedia(o il funziona(ento di un dia"ra((a di se2uenza nel nostro ese(pio dell%affitto 7ideo.

:Affitto :$liente Affitto@A

:$atalo"o

:/V/

:V8S

Sfo"lia $atalo"o@A

;il(
[tipo*""ettoUU/V/\Affitta@A [tipo*""ettoUUV8S\Affitta@A

Pa"ina 115

Bnified Process +i- possia(o notare alcune cose non dette: /ato c:e sono "li o""etti a collaborareD si usa la notaF zione :no(eD 2uesta notazione indica c:e sto parlando di un o""etto del tipo no(eD di 2uale de"li n o""etti c:e possono 7enir creatiD non i(porta @se fosse stato i(portanteD ci sarebbe stato anc:e un no(e pri(a dei due puntiA. Anc:e l%utente 7iene considerato un o""etto se(pre atti7oD ai fini del dia"ra((a @e cosK lo sarebbe stato pure un e7entuale te(poA. Bn%altra cosa c:e si nota & l%uso delle parentesi 2uadre: in 2uesto caso si indica di se"uire la frecciaD se la condizione specificata dentro le parentesi & 7erificata @in 2uesto casoD 2uindiD si c:ia(a il (eF todo Affitta sull%o""etto /V/D se il fil( c:e 7o"lia(o affittare & un /V/D altri(enti c:ia(ia(o il (etodo Affitta sull%o""etto V8SA. .ei dia"ra((i di se2uenza si possono in7ocare anc:e (etodi propriD la creazione di nuo7i o""ettiD la loro distruzioneD ed i se"naliI con se"nale intendia(o una c:ia(ata asincronaD cio& il c:ia(ante dice ad un altro o""etto @od anc:e se stessoA di in7ocare un suo (etodoD (a non aspetta la fine delF l%esecuzione per continuare il suo la7oro.

etodo@A

Ese(pio di c:ia(ata di un proprio (etodo

/istru""i@A

/istruzione di un o""etto

.e0@A

:$atalo"o

$reazione di un o""etto di tipo $atalo"o

/ise"na@A

Ese(pio di in7io di un se"nale

?na parte del diagramma

>a parte di dia"ra((a rappresentata all%interno del rettan"oloD 7iene ese"uita sulla condizione @c:e puH essere 0:ileD forD untilD for eac:D ecc.A

[Rcond\ A 7olte i dia"ra((i di se2uenza 7en"ono realizzati a partire anc:e dai dia"ra((i di atti7it- @c:e aiutano ad indi7iduare altre operazioni c:e le classi potrebbero a7ereA.
iagrammi di collaborazione

.ei dia"ra((i di collaborazione si enfatizza il ruolo c:e :anno "li o""etti tra di loro. Escludendo l%utenteD c:e & rappresentato con un o(inoD o"ni o""etto & rappresentato con un rettan"olo con denF Pa"ina 116

Bnified Process tro il no(e del ruolo ed il tipo di o""ettoD separati dai due punti. Tutta la scritta & sottolineata.>e inF 7ocazioni tra "li o""etti sono rappresentate da freccie il cui descrittore & cosK for(ato: e7entuale condizione tra parentesi 2uadreD nu(ero di se2uenzaD il carattere due puntiD no(e del (etodo da c:ia(are @e relati7i para(etriA oppure no(e di 2uello c:e 7iene restituito. Se si 7uole o(ettere il (essa""io di ritornoD si puH (ettere il 7alore di ritorno nel no(e del (etodo c:ia(atoD separandolo con :U Ese(pio:

2*3:Course 4ne#5
1: addCourse(82*39 7: addCourse(8*66D9 1.1: ::create;;

:0egistration*anager
7.1: ::create;;

0egistrar

*66D:Course 4ne#5

?ui 7edia(o anc:e la creazione di o""etti: il (essa""io speciale ^^create__ e la specifica c:e l%o"F "etto & nuo7o @bne0cA Il lin"ua""io del dia"ra((a & in realt- piJ potenteD infatti per(ette anc:e di in7iare (essa""i a "ruppi di o""ettiD specificare processi paralleliD e specificare operazioni sull%insie(e de"li o""etti:
*<i:=1..n> 1.1: printCourse(i 1: printCourses(

:0egistration*anager
i

[i:U1..n\ [i:U1..!\ [0:ile@boolEVpA\ [until@boolEVpA\ [for eac: @collEVpA\

0egistrar
1.7: print(

*// (parallel processing)

:Course

find() includes(anObject) count()

?ui 7edia(o l%interazione specificata attra7erso il classificatore iI con 2uesto indic:ia(o c:e il (esF sa""io print successi7o de7e essere ese"uito per o"ni o""etto identificabile con iD c:e co(e si 7ede accanto puH essere specificato in di7ersi (odi:

Pa"ina 11!

Bnified Process

$on [i:U1..n\ indic:ia(o un ciclo per o"ni ele(ento della collezione $on [i:U1..!\ indic:ia(o un ciclo for da 1 a ! $on [0:ile@boolEVpA\ indic:ia(o un ciclo 0:ile $on [until@boolEVpA\ indic:ia(o un ciclo until $on [for eac: @collEVpA\ indic:ia(o di ciclare su o"ni o""etto preso dalla collezione risultante dall=esecuzione dell=espressione collEVp

>%asterisco indica un c:ia(ata dello stesso (etodo a piJ ele(enti eD co(e dice la nota in bassoD 2ueF sto puH a77enire in (aniera parallelaD oltre c:e se2uenziale. I (etodi scritti in basso a destraD indicano il tipo di operazioni effettuabili sull%insie(e stesso:

find@A F con il 2uale si cerca un ele(ento dentro l%insie(e e 7iene restituito tale o""etto includes@an*b<ectA E con il 2uale si controlla se un o""etto & dentro un insie(e count@A F con il 2uale si conta il nu(ero di ele(enti. *77ia(ente (etodi di a""iunta e ri(ozioneD i cui no(iD perHD ca(biano a seconda della se(antiF ca dell%insie(e @pilaD codaD insie(eD tabellaD ecc.A

*ltre a 2uello c:e abbia(o appena 7istoD nei dia"ra((i di collaborazione si possono indicare "li o""etti se(pre atti7i @c:e 7en"ono indicati con la parola c:ia7e T:read dentro il rettan"olo c:e ospita il no(eAD (essa""i asincroniD detti anc:e se"nali @usando una freccia con (et- puntaA ed infiF ne si possono indicare anc:e "li stati di un o""etto @necessario per capire alcune collaborazioniA:

In 2uesto caso 7edia(o l%o""etto an*rder passare dallo stato unpaidD allo stato paid attra7erso una parola c:ia7e beco(e.

Pa"ina 111

Bnified Process Ecco un ulteriore ese(pio di un dia"ra((a di collaborazione:


1.1 s:=+ind!tudent(8Jim9 1.7 c:=+indCourse(82*39 1: register!tudent(8Jim9? 82*39

:0egistration*anager
<(Bs @c>1:studentCotFound

:Course

0egistrar

<(Bc @s>1:courseCotFound <(Bs @(Bc >1:not%ingFound <s@c>1:o. 1.1.1: a!tudent:=+ind(8Jim9

<s@c>1.A register(a!tudent

aCourse ::local;;
1.7.1: aCourse:=+ind(82*39

students

courses

:!tudent

:Course

?ui possia(o notare un uso (assiccio delle cose dette precedente(ente. .otare l%uso della parola ^^local__ con la 2uale indic:ia(o c:e l%o""etto $ourseD appartenente all%insie(e $ourseD & di fatto l%o""etto tro7ato attra7erso il find@A. Blti(a cosa da dire sono i (essa""i in7iato da un o""etto a se stesso: essiD co(e abbia(o potuto 7edere ne"li ese(pi precedentiD sono rappresentati co(e un cappio sopra il rettan"olo c:e contiene il no(e. +li insie(i sono rappresentatiD co(e abbia(o 7istoD da un doppio rettan"oloD 2uasi ad indiF care una pila di rettan"oli.
iagrammi di sequenza o collaborazione?

?uale dei due dia"ra((i usareD in realt- dipende da 2uale focus si 7uole dare: se & piJ i(portante il te(poD si usa un dia"ra((a di se2uenzaD altri(enti di collaborazione.

#rovare Classi ed "ssociazioni


+$d$,$ 6uesto paragrafo non fa propriamente parte dello ?nified *rocess" ma si ritiene utile per una migliore chiarificazione @! /urante l%atti7it- di analisi & i(portante riuscire a stabilire le classi e le associazioni eD di 2uest%ultiF (eD il relati7o tipo. .on esistono tecnic:e se(pre 7alideD (a 2ualcosa possia(o dire.
5ro$are le classi

Esistono alcune tecnic:e per tro7are le classi: Approccio basato su frasi nominali: ?uesto approccio consi"lia all%analista di cercare nel docuF (ento i sostanti7i o le frasi in cui il no(e :a una pre7alenza sulla parte 7erbale @sono in "enere frasi di tipo asserti7oA. *"ni sostanti7o & considerato una classe candidata. >%elenco 7iene 2uindi suddi7iF so in tre "ruppi: classi rile7antiD classi incerteD classi irrile7anti. >e classi irrile7anti sono 2uelle esterne al do(inio del proble(a: i sostanti7i corrispondenti appaioF no nel discorsoD (a non & possibile for(ulare un%asserzione c:e descri7a il loro scopo nel contesto del siste(a di analisi.

Pa"ina 11#

Bnified Process >e classi rile7anti sono 2uelle c:e (anifesta(ente apparten"ono al do(inio del proble(a: i sostanF ti7i rappresentanti i no(i di tali classi appaiono con fre2uenza nel docu(ento dei re2uisiti ed & posF sibile confer(are l%i(portanza e la finalit- di tali classi con la conoscenza "enerale del do(inio applicati7o e con l%analisi di siste(i si(ili. >e classi incerte sono 2uelle c:e non & possibile classificare con sicurezza. Tali classi costituiscono la sfida (a""iore: & necessario analizzarle ulterior(ente per 7edere se includerle od escluderle nella lista delle classi rile7anti. Proprio l%analisi di 2uesto "ruppo per(ette di ottenere un (odello delle classi (i"liore di un altro. Il difetto di 2uesto siste(a & c:e presuppone un docu(ento dei re2uisiti co(pleto ed accuratoI in piJ l%analisi di un lun"o docu(ento testuale di7enta ben presto pesante e non conduce ad un risultaF to co(pleto ed accurato. Approccio basato sulle strutture comuni: ?uesto approccio tenta di rica7are le classi da un%analisi "enerale de"li o""etti del (ondo reale. .or(al(ente si di7idono "li o""etti in "ruppi e si cerca di rie(pire 2uesti "ruppi. /ue ese(pi: Dista # $oncetto: nozioni condi7iseD su cui esiste un accordo da una parte di un a(pia co(unit- di persone. E7ento: fatti c:e accadono in una certo istante di te(po oppure :a una durata trascurabile rispetto ad una scala di riferi(ento. *r"anizzazione: 2ualun2ue tipolo"ia di ra""ruppa(ento o collezione di cose c:e :a una precisa fiF nalit- nel contesto in esa(e. Persona: ruolo c:e una persona ri7este nel siste(a. Posto: locazioni fisic:e rile7anti per il siste(a. Dista % ;isica: & 2ualcosa c:e esiste 7era(ente Business: & rile7ante per il siste(a. >o"ica: infor(azioni Applicati7a: c:e fa parte dell%applicazione $o(puter: c:e ri"uarda la (acc:ina $o(porta(entale: c:e ri"uarda i co(porta(enti del siste(a. $o(e si 7ede dai due ese(pi non & se(pre facile rie(pirliI inoltre i ra""ruppa(enti non 7al"ono per tutti i tipi di proble(iI infine puH dare adito a di7ersi dubbi. Tutta7ia puH essere utile per conF trollare delle classi tro7ate con altri siste(i. Approccio guidato dai casi d%uso: ?uesto approccio se(brerebbe 2uello (i"lioreD in 2uanto tutto l%Bnified Process si fa "uidare dai casi d%usoI tutta7ia a 2uesto stadioD esso asso(i"lia (olto all%apF proccio basato sulle frasi no(inali e ne condi7ide pre"i e difetti. >a differenza sta nel fatto c:e (enF tre con 2uell%altro si analizza7a il docu(ento dei re2uisitiD 2ui si analizza i caso d%uso stessi e ciH puH portare ad un%analisi piJ attenta e (eno so""etta ad errori @se i casi d%uso sono stati ben costruiF ti...A. Approccio CRC: ?uesto approccio pre7ede lo s7ol"i(ento di riunioni di "ruppoD se(plificate dalF Pa"ina 12)

Bnified Process l%uso di sc:ede costituite da tre sezioni: il nome della classeD scritto nella sezione piJ in altoD le re sponsabilit3D elencate nella sezione di sinistraD i collaboratoriD elencati nella sezione di destra. >e responsabilit- sono i ser7izi @operazioniA c:e la classe & in "rado di fornire alle altre classi. Tali reF sponsabilit- possono ric:iedere la collaborazione @ser7iziA di altre classiD le 2uali sono elencate nella sezione McollaboratoriN. >%approccio $R$ & un processo dina(ico durante il 2uale "li s7iluppatori si sca(biano le sc:edeD co(pilandole col no(e delle classi ed asse"nando le responsabilit- e le collaborazioni durante Ml%eF secuzioneN di uno scenario di elaborazione @un caso d%usoA. Allor2uando siano necessari ser7izi non coperti da classi esistentiD & creata una nuo7a classe cui sono asse"nate le appropriate responsabilite collaborazioni. Se una classe di7enta troppo appesantitaD & suddi7isa in un nu(ero di classi piJ piccole. A differenza di altri approcciD l%approccio $R$ identifica le classi analizzando lo sca(bio di (esF sa""i tra "li o""etti per realizzare le funzionalit- del siste(a. >%enfasi & posta su una distribuzione unifor(e dell%Nintelli"enzaN del siste(a ed alcune classi potrebbero essere deri7ate da tale necessitMtecnicaND piuttosto c:e e(er"ere co(e Mo""etti di businessN. In tal senso l%approccio $R$ potrebbe essere adatto alla 7erifica di classi "i- scoperte per (ezzo di altri (etodi ed alla deter(inazione delF le loro propriet- @i(plicate da responsabilit- e collaborazioniA. Approccio misto: .ella pratica si usa un (isto dei 7ari approcci. ?uesti partono dalla conoscenza del proble(a ed usano le tecnic:e sopra esposte per estrarre le classi. Linee guida 1. $iascuna classe de7e a7ere una c:iara funzionalit- del siste(a 2. *"ni classe descri7e uno sta(po per un insie(e di o""etti. $lassi sin"olariD per le 2uali & possiF bile i((a"inare solo un o""etto sin"oloD non sono propria(ente buone classi. Ad ese(pio se il siste(a & pro"ettato per una sin"ola or"anizzazioneD l%esistenza di una classe *r"anizzazione non :a (olto senso. ,. *"ni classe de7e essere specificata tra(ite un insie(e di attributi. In 2uesto stadio si definiscono "li attributi essenziali per definire lo stato di una classe ed in suo co(pito. Altri attributi possono essere i"norati @(a l%analista de7e preoccuparsi c:e l%infor(azione non 7ada perdutaA. O i(probaF bile c:e tutti "li attributi siano definiti dai re2uisitiD (a in 2uesto stadio & i(portante c:e essi corF rispondano ai re2uisiti @"li altri saranno a""iunti piJ a7antiA. 4. $lassi ed attributi sono ele(enti distinti di (odellazione. Se un certo concetto debba essere (oF dellato co(e classe o co(e attributoD dipende dal do(inio applicati7o. Ad ese(pio $olore di un auto(obile & nor(al(ente percepito co(e un attributo della classe Auto(obile. Tutta7ia in una carrozzeriaD $olore & una classe con i propri attributi @lucentezzaD densit-D trasparenzaD ecc.A 5. *"ni classe co(prende un insie(e di operazioni. $o(un2ue a tale stadio non & necessario defiF nire le operazioni. Le associazioni >e associazioni tra le classi 7en"ono definite (entre si definiscono le classiI in "enerale se un attriF buto non & un tipo pri(iti7oD allora esso indica un%associazioneI se due classi collaborano fra di loroD allora 7i & un%associazione. Particolare attenzione 7a posta sulle associazioni c:e rappresentano l%a"F "re"azioneD la co(posizione e la "eneralizzazioneD in 2uanto se(antica(ente forti. Per 2uanto ri"uarda a""re"azione e co(posizione possia(o dire c:e @le parti in corsi7o indicano la Mparola c:ia7eN c:e per(ette di decidereA: Pa"ina 121

Bnified Process

Se una classe = parte di un%altra classeD allora 2uesta classe & il contenuto di un%a""re"azione o di una co(posizione. Se una classe ha o raggruppa altre classiD allora 2uesta classe & il contenitore di un%a""re"azione. Se una classe possiede o possiede in modo esclusivo altre classiD allora 2uesta classe & il conteniF tore di una co(posizione. >e caratteristic:e co(uni a piJ classi possono essere astratte in una classe piJ "enerica. Se una classe = un tipo di un%altra classeD allora 2uesta & una sottoclasse della pri(a. Se una classe puE essere un%altra classeD allora 2uesta & una superclasse della pri(a.

Per 2uanto ri"uarda la "eneralizzazione possia(o dire c:e:


*perazioni e stati A 2uesto stadio nor(al(ente non & necessario definire operazioni e statiI tutta7iaD in certi casiD 2uando & necessario alla co(prensione del siste(aD & possibile specificare le operazioni o "li stati disponibili.

Riepilogo
>%atti7it- di Analisi si preoccupa ancora del cosa il siste(a de7e fareD (a si inizia a 7ederlo dal punF to di 7ista dello s7iluppatore. Anc:%essa si s7ol"e in piJ iterazioni a (ano a (ano c:e 7en"ono scoF perti i re2uisiti. >%unica cosa Mscolpita sulla rocciaN c:e si presuppone & l%arc:itettura di baseD definiF ta alle pri(e iterazioni @se non adirittura alla pri(aA e portata a7anti per tutto il resto del pro"etto.

Riepilogo dei documenti prodotti


Bna serie di docu(enti & prodotta durante 2uesta atti7it-D tutti 7olti a capire cosa fa il siste(a dal punto di 7ista dello s7iluppatore. Essi sono:

Arc.itettura di base: 2uesta & l%arc:itettura su cui si baser- tutto il pro"etto. Bna 7olta c:e 2ueF sta arc:itettura & stabilitaD essa non potr- piJ essere 7ariata 'iagramma delle classi: (odella le classi e le associazioni del siste(a. 'iagramma di se2uenza e@o collaborazione: (odella il co(porta(ento delle classi per la risoF luzione dei casi d%uso 'iagramma dei package d%analisi: (odella co(e sono accoppiate le classi. 'iagramma delle attivit e degli stati: caso (ai siano necessari alla co(prensione. 'ocumentazione aggiuntiva: Ad ese(pio i fo"li $R$D se si usa 2uesto approccio.

esign ,Progettazione>%atti7it- di /esi"n 7erte sul co(e de7e funzionare il siste(aD piuttosto c:e sul cosa de7e fare. ?ueF sta atti7it- :a (a""ior fuoco nella parte finale della fase di Elaboration e nella pri(a parte della fase di $onstructionD (a a7endo aspetti co(uni all%atti7it- di analisiD spesso & s7olta in parallelo. >%atti7it- di /esi"n riprendeD dun2ueD i docu(enti prodotti dalla fase di analisi e 7i a""iun"e eleF (enti appartenenti al do(inio della soluzione. >o scopo & a""iun"ere al cosa il co(e: tro7ato cosa de7e fare il siste(aD biso"na tro7are co(e far"lielo fare. Ven"ono perciH a""iunte anc:e tutte 2uelle Pa"ina 122

Bnified Process classi di co(unicazione o di databaseD interfacceD utilit-D ecc. In 2uesta fase & necessario analizzare anc:e fattori co(e la perfor(anceD il t:rou":tputD la disponibilit-D la possibile distribuzione tra nodi di7ersi e la co(unicazioneD il deadlocCD il li7enessD la riconfi"urazioneD la persistenzaD la sicurezzaD la distribuzione trasparente de"li o""ettiD l%indi7iduazione ed il recupero de"li erroriD la "estione delF le transizioniD ecc. Il (odello di /esi"n 7a a "uardare l%i(ple(entazione tecnicaD osser7ando i re2uisiti non funzionali e l%arc:itettura sottostanteD (ette (a""iore risalto sulle interfacce ed in "enerale approfondisce il (odello di analisi andando a raffinarlo ed a sco(porlo ulterior(ente. O durante 2uesta atti7it- @anF c:e se & tra le pri(e cose fatteD perc:G & su di essa c:e si appo""ia il siste(aA c:e l%arc:itettura di base si e7ol7e in (aniera definiti7a andando a decidere l%esatto tipo di siste(a @clientFser7erD distriF buitoD ecc.A. Pri(a di addentrarci in 2uesta atti7it-D ci ponia(o una do(anda: per 2uale (oti7o biso"na (anteF nere due (odelliD 7isto c:e uno & un raffina(ento dell%altro' Be:D il (odello di analisi & piJ se(plice da co(prendere @contiene dal 1X al 1)X di tutte le classi del siste(aA ed & 2uindi utile per: spie"are il pro"etto a nuo7e personeD co(prendere il siste(a sucF cessi7a(enteD 7erificare la soddisfazione dei re2uisiti e tracciabilit-D pianificare il (anteni(ento ed i (i"liora(entiD co(prendere l%arc:itettura lo"icaD affidare all=esterno la costruzioneD a7ere una 7iF sione sul proble(a e 2uindi indi7iduare piJ facil(ente le fasi critic:e. Purtroppo (antenere due (odelli & piuttosto oneroso e dispendioso. Esistono 4 soluzioni al (anteni(ento dei due (odelli: 1. Raffinare il (odello di analisi nel (odello di desi"n

Bnico (odello: si perde 2uello di analisi

2. Raffinare il (odello di analisi in desi"nD usare uno stru(ento $ASE per ricostruire il (odello di analisi

odello di analisi ricostruito non "arantito essere coerente con 2uello ori"inale /ue (odelliD spesso non coerenti /ue (odelli coerentiD (a con (anteni(ento della coerenza costoso

,. $on"elare il (odello di analisiD copiarlo e raffinarlo

4. /ue (odelli separati

Se il pro"etto & "rossoD co(plesso o strate"icoD nor(al(ente ric:iede anc:e il (odello di analisi. In 2uesto caso sce"liere di (antenere il (odello di analisi @e sce"lierlo di con"elarlo o di a""iornarloA. Se il pro"etto & piccolo @(eno di 2)) classi di /esi"nA ancora co(prensibiliD non & strate"icoD od :a 7ita bre7e @(a (olti siste(i 7i7ono piJ di 2uanto attesoLA allora & (e"lio lasciar perdere di (anteF nere il (odello di analisi. In 2uesto caso si usa il (odello di analisi co(e base per 2uello di desi"n @l%e7entuale riscostruzione 7iene lasciata ad uno stru(ento $ASEA. >%atti7it- di /esi"n si basa su:

classi di pro"etto interfacce sottosiste(i di pro"etto realizzazioni di casi di uso E pro"etto Pa"ina 12,

Bnified Process

Classi di progetto
>e classi di pro"etto @o di desi"nA partono da 2uelle di analisi e le co(pletano con tutto 2uello c:e ser7e @7isibilit-D 7alori di defaultD para(etriD (etodi di supportoD costruttoriD ecc.A. Si a""iun"ono le infor(azioni di i(ple(entazione e sulle classi di supportoD co(e classi per l%accesso ai databaseD la realizzazione di +BID di accesso al siste(aD ecc. Bna classe di desi"n de7e essere co(pleta e sufficienteD pri(iti7aD a7ere alta coesione e basso acF coppia(ento.
Completezza e sufficienza

I (etodi pubblici definiscono il contratto tra le classi ed i clienti delle classiI de7ono dun2ue a7ere no(i si"nificati7iD in 2uanto essi creano attese c:e de7ono essere soddisfatteI i (etodi della classe de7ono essere focalizzati sullo scopo della classe. >a co(pletezza assicura c:e la classe soddisfi tutto 2uello c:e l%utente si aspetta da essa. >a sufficienza (antiene la classe il piJ se(plice e focalizzata possibile. >a re"ola d%oro per la co(pletezza e la sufficienza & c:e la classe de7e fare 2uello c:e l%utente si aspetta dalla classeD nG tanto di piJD nG tanto di (eno.
Primiti$it&

>a classe de7e offrire ser7izi pri(iti7i @cio& non ulterior(ente sco(ponibiliA ed ato(ici @cio& tali c:e l%operazione non puH essere interrottaAD non de7e a7ere (etodi di7ersi per fare la stessa cosa. >a pri(iti7it- & rilassabile solo 2uando 7i & un 7anta""io in ter(ini di prestazioni si"nificati7o.
Alta coesione

>e classi de7ono realizzare un sin"olo concettoD a7ere (etodi focalizzati sullo scopo della classe. Se la classe :a di7erse responsabilit-D creare classi M:elperN a cui dele"are.
7asso accoppiamento

>e classi de7ono essere associate con altre classi solo se per(ettono di realizzare responsabilit-D opF pure solo se c=& un 7ero colle"a(ento se(antico fra loro. Alcune associazioni 7en"ono dal (odello di analisiD altre da 7incoli di i(ple(entazione. ?uest%ultiF (e de7ono essere 7alutate (olto attenta(ente. >%alto accoppia(ento all=interno del pacCa"e & a((issibile.
Progettazione delle associazioni

/urante l%atti7it- di analisi si sono create delle associazioni. /urante la fase di desi"n 2ueste assoF ciazioni 7en"ono co(pletate e trasfor(ate in i(ple(entazione. /ato c:e nor(al(ente i lin"ua""i di pro"ra((azione non :anno un supporto per le associazioniD esse do7ranno essere trasfor(ate in a""re"azioni e co(posizioni. >%unico caso in cui 7en"ono laF sciate co(e associazioni & 2uando sono ciclic:e @un%a""re"azione od una co(posizione non possonF o essere ciclic:eA. Pri(a di iniziare a trasfor(are le associazioniD esse de7ono tutte a7ere:

Pa"ina 124

Bnified Process

.a7i"abilitolteplicit- da entra(bi i lati

Tutte le associazioni possono a7ere un no(e di ruolo alla fine del lato bersa"lio. Se si se"uono 2uesti accor"i(enti & possibile effettuare una (i"liore i(ple(entazione delle assocF iazioni. /un2ue i passi da se"uire sono:

A""iun"ere le (olteplicit- ed il no(e di ruolo se sono assenti /ecidere 2uale lato dell%associazione sar- il tutto e 2uale la parte +uardare la (olteplicit- dalla parte del tutto: se & esatta(ente uno allora puH essere una co(poF sizioneD altri(enti de7e essere un%a""re"azione A""iun"ere la na7i"abilit- dal tutto alla parte.

Vedia(o una ad una le 7arie associazioni. Associazioni uno ad uno: >e associazioni uno ad uno sono le piJ facili da i(ple(entareD in 2uanto i(plicano una forte relazione tra le due classi: 2uesta dun2ue sar- una co(posizione oppure un o"F "etto sar- attributo di un altro @se non & una classe particolar(ente i(portanteA. Associazioni molti ad uno: Se non :anno cicli le associazioni (olti ad uno sono rappresentate co(e a""re"azioniI in caso contrario uno de"li arc:i ri(ane co(e associazione @2uest%ulti(o caso probabil(ente indica una callbacCA. Associazioni uno a molti: ?ueste associazioni rappresentano de"li insie(i nel lato (olti. Per i(F ple(entarla si usa il supporto nati7o del lin"ua""io eQo si creano delle classi collezione @7edi classi collezioneD sottoA. Associazioni molti a molti: ?ueste associazioni non :anno alcun riferi(ento in nessun lin"ua""ioI di conse"uenza biso"na trasfor(arle in co(plicate relazioni (olti ad uno.
'sempio Centrato sulla risorsa Centrato sul compito Compito Compito
*
Allocazione

0isorsa
1

AllocaDione
*

0isorsa
1

0isorsa

AllocaDione

Compito

Centrato sullEallocaDione

0isorsa

AllocaDione

Compito

Associazioni bidirezionali: Anc:e 2ueste associazioni non :anno alcun riferi(ento nei lin"ua""i di pro"ra((azione e co(e tali 7anno (odellate in altro (odo. /ato c:e nor(al(ente rappresentano callbacC la rappresentazione c:e 7iene usata & la se"uente:

Pa"ina 125

Bnified Process

1 1

B
*

$on la freccia tratte""iata indic:ia(o c:e l%intero si passa co(e para(etro ad un (etodo della parteD o parte crea istanza intero in uno dei suoi (etodi. Classi di associazione: >e classi di associazione non :anno una trasfor(azione i((ediata in co(F posizioniD a""re"azioniD od altro. Bna classe di associazione do7r-D dun2ueD essere una classe a parte ed a7ere un 2ualc:e tipo di le"a(e con le classi c:e a7e7ano l%associazione in cui 2uesta classe era classe di associazione. Bna 7olta deciso co(e i(ple(entare la classe di associazioneD biso"ner- inF serire dei 7incoli nel (odello per ripristinare il si"nificato se(antico.
Classi collezione

>e classi collezione sono specializzate per (ane""iare collezioni di altri o""etti. :anno (etodi per a""iun"ere o""etti alla collezioneD ri(uo7ere o""etti dalla collezioneD recuperare o""etti dalla colleF zioneD (uo7ersi attra7erso "li o""etti della collezione. Esistono tanti tipi di classi collezione o"nuno con una propria prero"ati7a. B > supporta de"li steF reotipi per indicare c:e se(antica usa la classe collezione. Esistono tre (odi per rappresentare una classe collezione in B >: odellazione esplicita classe collezione

1 1

1 Fector
4Fector5*

Specificare un%i(ple(entazione il cui prodotto $ASE pro77eder- a rendere una classe colezione esplicita

Specificare la se(antica della collezioneD (a non l%i(ple(entazione

4ordered5*

+li stereotipi @cio& 2uei 7alori (essi tra parentesi "raffeA c:e l%B > supporta per le classi collezioF ne sono:

borderedc E & una collezione ordinata bunorderedc E & una collezione non ordinata bsetc E & un insie(e blifoc E & una pila b2ueuec E & una coda

Pa"ina 126

Bnified Process

bba"c E co(e bsetc (a a((ette duplicati bse2uencec E & una se2uenza ordinataD indicizzata e c:e a((ette duplicati @l%arra3 & un buon ese(pioA.

.otare c:e solo i pri(i due sono standard B >D "li altri sono usati (a non standardD 2uindi do7ranF no essere specificati nel docu(ento c:e acco(pa"na il (odello @o tra(ite l%*$>D co(e 7edre(o piJ a7antiA. >%ulti(o tipo c:e 7iene (olto usato & la (appa o dizionario. Essa non :a nG una se(antica B > nG *$>D dun2ue do7r- essere specificata nei detta"li e sar-D probabil(enteD dipendente dal lin"ua""io usato per l%i(ple(entazione. >a (appa la7ora (antenendo un insie(e di nodiD do7e o"ni nodo punF ta a due o""etti: una c:ia7e ed un o""etto 7alore. O otti(izzata per tro7are "li o""etti 7alore in base alla c:ia7e.
#ote e $incoli

.on se(pre & possibile riuscire ad espri(ere tutta la (odellazione attra7erso solo i dia"ra((iI a 7olte per specificare la se(antica del dia"ra((a & necessario introdurci note o 7incoli. B > perF (ette di fare 2uesto colle"ando l%ele(ento su cui si 7uole (ettere una notaD attra7erso una linea tratF te""iataD ad un rettan"olo con un an"olo pie"ato. All%interno di 2uesto rettan"olo 7i sar- scritta la nota. Bsare lo stereotipo ^^constraint__ i(plica c:e 2uella nota non & solo un 2ualcosa per indicare il si"nificato dell%ele(entoD (a un 7ero e proprio 7incolo. Spesso risulta necessario utilizzare i 7inF coli l- do7e il dia"ra((a delle classi di desi"n perde parte della sua se(antica @si pensi alle classi di associazione o alle relazioni (olti a (oltiD co(e 7isto pri(aA. >e note ed i 7incoli 7en"ono solita(ente descritti in lin"ua""io naturale. Tutta7ia a 7olte il lin"ua"F "io naturale puH essere fuor7iante o lasciare adito a dubbiD 2uando espri(e 7incoli. Per 2uesto & staF to s7iluppato un apposito lin"ua""io for(ale per espri(erli: esso prende il no(e di *$>.
OC)

>%*b<ect $ontrastaint >an"ua"e @*$>A & il lin"ua""io for(ale utilizzato per espri(ere 7incoli @detti anc:e in7arantiAD pre e post condizioniD "uardie. Esso & usato anc:e per espri(ere 7incoli "lobali al siste(a e non solo ad ele(enti appartenenti ad un dia"ra((a. Proprio per 2uesto (oti7o esso & spesso realizzato co(e docu(ento separato e le note B > inserite nel dia"ra((a ri(andano a 2ueF sto docu(ento. Per far ciHD o77ia(enteD o"ni 7incolo do7r- a7ere un no(e od un altro tipo di identiF ficatore uni7oco. .el corso della trattazione ci riferire(o a 2uesto ese(pio per esplicitare il lin"ua""io *$>@7isualizF zato nella pa"ina successi7aA.

Pa"ina 12!

Bnified Process

*"ni espressione *$> inizia con una dic:iarazione di contesto: esso indica a 2uale ele(ento i 7inF coli fanno riferi(ento. Esso & indicato con la parola c:ia7e conteFt. >a parola self & un siste(a per riferirsi al contesto senza dirlo esplicita(enteI ad ese(pio: conte8t $o(pan3 inv: self.nu(ber*fE(plo3ees_5) indica c:e dobbia(o prendere l=attributo .u(ber*fE(plo3ees nel contesto di $o(pan3. >a parola c:ia7e self puH essere sottointesa se il contesto ri(ane c:iaro. Se l=attributo fosse statico si potrebbe scri7ere: conte8t $o(pan3 inv: $o(pan3.nu(ber*fE(plo3ees_5) Il contesto puH essere riferito ad un no(e esplicito: conte8t c: $o(pan3 >a dic:iarazione di un in7ariante & presentata con la parola c:ia7e Invariant @a 7olte abbre7iata con invA. Tutte le in7arianti de7ono MrestituireN un 7alore booleano. Anc:e un%in7ariante puH essere rifeF rita con un no(e: conte8t c: $o(pan3 inv enou":E(plo3ees: nu(ber*fE(plo3ees_5) Pa"ina 121

Bnified Process >e pre e post condizioni sono presentate con la parola c:ia7e precondition e postcondition @a 7olte abbre7iate con pre e postA. >e pre e post condizioni de7ono essere associate ad un (etodo. Per far 2uesto si usa la se"uente sintassi di contesto: conte8t T3pe.a(e::operation.a(e@para(1: T3peD ...A: ReturnT3pe pre: para(1_... post: resultU... Ad ese(pio: conte8t Person::inco(e@d: /ateA: Inte"er post: resultU5))) Il no(e self puH essere utilizzato per riferirsi all%o""etto su cui l%operazione 7iene c:ia(ataI la paroF la c:ia7e result si riferisce al risultato dell%operazioneD se c%& ne uno. Anc:e le pre e post condizioni possono a7ere un no(e. conte8t T3pena(e::operation.a(e@para(1 : T3pe1D ... A: ReturnT3pe pre para(eter*C: para(1 _ ... post result*C: result U ... A 7olte il contesto de7e essere riferito ad uno specifico pacCa"eI la parola c:ia7e usata &D per l%apF puntoD pac7age. Ecco un ese(pio: package $o(panies conte8t $o(pan3 inv: self.(ana"er.isBne(plo3ed U false Il contesto & la classe $o(pan3 del pacCa"e $o(paniesI l%in7ariante &: la propriet- isBne(plo3ed dell%o""etto di tipo ana"er referenziato da $o(pan3 @selfA de7e essere false se(pre. >a potenza dell%*$> sta nel fatto c:e & possibile definire 7incoli (olto co(plessiI infatti pre7ede di utilizzare 7ariabili e tipi per espri(ere condizioniD nonc:G l%esecuzione su operazioni riferite ad inF sie(i.*ltre a ciH & possibile ese"uire operazioni e ric:ia(are (etodiD purc:G essi non abbia(o alF cun sideFeffect sull%o""etto e non ne ca(bino lo stato. I tipi disponibili @con le loro operazioniA sono

booleani su cui possia(o ese"uire operazioni di


d d d d d d

u"ua"lianza @b1Ub2A E ser7e a 7edere se due booleani sono u"uali and @b1 and b2A E restituisce 7ero se entra(bi sono 7eri @nota: usa la s:ortFcircuit e7aluationA or @b1 or b2A E restituisce 7ero se uno dei due & 7ero @nota: usa la s:ortFcircuit e7aluationA Vor @b1 Vor b2A E restituisce 7ero se uno dei due & 7eroD (a non entra(bi not @b1A E restituisce 7ero se b1 & falso i(plicazione @b1 i(plies b2A E restituisce 7ero se b1 & falso o se entra(bi sono 7eri

Pa"ina 12#

Bnified Process
d

if t:en else @if b1 t:en oclEVpression1 else oclEVpression2 endifA E restituisce il risultato della 7alutazione di oclEVpression1 se b1 & 7eroD altri(enti restituisce il risultato della 7alutazione di oclEVpression2. u"ua"lianza @i1Ui2A E restituisce 7ero se i due nu(eri sono u"uali di7ersit- @i1^_i2A E restituisce 7ero se i due nu(eri sono di7ersi (inoranza @i1^Ui2A E restituisce 7ero se i1 & piJ piccolo od u"uale ad i2 (inoranza stretta @i1^i2A E restituisce 7ero se i1 & piJ piccolo di i2 (a""ioranza @i1_Ui2A E restituisce 7ero se i1 & piJ "rande od u"uale ad i2 (a""ioranza stretta @i1_i2A E restituisce 7ero se i1 & piJ "rande di i2 (eno unario @Fi1A E rende un nu(ero positi7oD ne"ati7o e 7ice7ersa so((a @i1Wi2A E restituisce la so((a sottrazione @i1Fi2A E restituisce la sottrazione (oltiplicazione @i1Ri2A E restituisce la (oltiplicazione di7isione @i1Qi2A E restituisce la di7isione @co(e nu(ero realeA 7alore assoluto @i.abs@AA E restituisce il 7alore assoluto di i di7isione intera @i1.di7@i2AA E restituisce il 2uoziente della di7isione (odulo @i1.(od@i2AA E restituisce il resto della di7isione (assi(o @i1.(aV@i2AA E restituisce il piJ "rande tra i1 ed i2 (ini(o @i1.(in@i2AA E restituisce il piJ piccolo tra i1 ed i2 u"ualianza @r1Ur2A E restituisce 7ero se i due nu(eri sono u"uali di7ersit- @r1^_r2A E restituisce 7ero se i due nu(eri sono di7ersi (inoranza @r1^Ur2A E restituisce 7ero se r1 & piJ piccolo od u"uale ad r2 (inoranza stretta @r1^r2A E restituisce 7ero se r1 & piJ piccolo di r2 (a""ioranza @r1_Ur2A E restituisce 7ero se r1 & piJ "rande od u"uale ad r2 (a""ioranza stretta @r1_r2A E restituisce 7ero se r1 & piJ "rande di r2 (eno unario @Fr1A E rende un nu(ero positi7oD ne"ati7o e 7ice7ersa so((a @r1Wr2A E restituisce la so((a sottrazione @r1Fr2A E restituisce la sottrazione (oltiplicazione @r1Rr2A E restituisce la (oltiplicazione di7isione @r1Qr2A E restituisce la di7isione 7alore assoluto @r.abs@AA E restituisce il 7alore assoluto di r floor @r1.floor@AA E restituisce il piJ "rande intero c:e & piJ piccolo od u"uale ad r1

Interi su cui possia(o ese"uire operazioni di


d d d d d d d d d d d d d d d d

reali su cui possia(o ese"uire operazioni di


d d d d d d d d d d d d d

Pa"ina 1,)

Bnified Process
d

arrotonda(ento @r1.round@AA E effettua l%arrotonda(ento (ate(atico restituendo di conse"uenF za l%intero piJ 7icino ad r1. (assi(o @r1.(aV@r2AA E restituisce il piJ "rande tra r1 ed r2 (ini(o @r1.(in@r2AA E restituisce il piJ piccolo tra r1 ed r2 u"ualianza @s1Us2A E restituisce 7ero se s1 & u"uale ad s2 lun":ezza della strin"a @s.size@AA E restituisce il nu(ero di caratteri della strin"a concatenazione @s1.concat@s2AA E restituisce una strin"a c:e & la concatenazione di s1 ed s2 tutto (aiuscole @s.toBpper@AA E restituisce una strin"a in cui tutti i caratteri sono in (aiuscolo tutto (inuscole @s.to>o0er@AA E restituisce una strin"a in cui tutti i caratteri sono in (inuscolo sottostrin":e @s.substrin"@i1Di2AA E restituisce una strin"a c:e & la sottostrin"a co(presa tra il carattere nu(ero i1 ed il carattere nu(ero i2 @co(presiA

d d

strin":e su cui possia(o ese"uire operazioni di


d d d d d d

enu(erazione E 2uesto rappresenta una classe utilizzata per enu(erareI nell%ese(pio la classe SeV rappresenta un%enu(erazioneD cio& sappia(o c:e l%attributo seV di tipo SeV della classe PerF sonD potr- assu(ere solo i 7alori ale e ;e(ale. *""etti E dato c:e *$> ser7e ad B >D 2ualsiasi o""etto puH essere usato co(e tipo.

Per usare un%enu(erazione in *$> si usa il se"uente (odo: conte8t Person inv: seV U SeV::(ale $on oclEVpression si intende 2ualsiasi espressione in *$>D la 7alutazione di 2uesta espressione riF torner- se(pre un tipo @d%altronde l%*$> ser7e a 7erificare condizioniD non ad ese"uire operazioniA. &ariabile ed operazioni in *CL In *$> & possibile definirsi 7ariabili ed operazioniD in (odo da poter rendere il (odello piJ le""ibiF leI per far 2uesto su usa il costrutto let. Ad ese(pio: conte8t Person inv: let inco(e : Inte"er U self.<ob.salar3F_su(@A let :asTitle@t : Strin"A : Boolean U self.<obF_eVists@title U tA in if isBne(plo3ed t.en self.inco(e ^ 1)) else self.inco(e _U 1)) and self.:asTitle@S(ana"er=A endif & decisa(ente piJ le""ibile di conte8t Person inv: if isBne(plo3ed t.en Pa"ina 1,1

Bnified Process self.<ob.salar3F_su(@A ^ 1)) else self.<ob.salar3F_su(@A _U 1)) and self.<obF_eVist@title U S(ana"er=A endif >e espressioni let possono essere usate sia dentro in7arianti c:e dentro pre e post condizioni. TuttaF 7ia esse esistono solo all%interno del 7incoloI per farle esistere all%interno di tutto il contesto biso"na usare il costrutto definition @abbre7iato con defA conte8t Person def: let inco(e : Inte"er U self.<ob.salar3F_su(@A let :asTitle@t : Strin"A : Boolean U self.<obF_eVists@title U tA In nessun caso i no(i de7ono essere in conflitto. <ipi e commenti Pri(a di passare a 7edere co(e si co(porta *$> con "li o""etti @c:e & la parte piJ potente e co(F plicataA & (e"lio sapere un paio di cose sui tipi. *$> & un lin"ua""io forte(ente tipatoI o"ni espressione :a un tipo e nor(al(ente non 7i & (odo di confrontare od asse"nare tipi di7ersi. Tutta7ia esiste un%eccezione a 2uesta re"ola ed & la cosidetta confor(azione dei tipi: o"ni tipo si tro7a all%interno di una "erarc:iaD 2uelli c:e si tro7ano in una "eF rarc:ia piJ bassa possono essere usati in luo"o a 2uelli nella "erarc:ia piJ alta. ?uesto si unifor(a al concetto di "eneralizzazione. Proprio "razie a 2uesto possia(o usare

interi al posto dei reali insie(i al posto di collezioni @7edre(o piJ a7anti cosa intendia(o esatta(enteA ba" al posto di collezioni @7edre(o piJ a7anti cosa intendia(o esatta(enteA se2uenze al posto di collezioni @7edre(o piJ a7anti cosa intendia(o esatta(enteA sottoclassi al posto di superclassi

.essun altro tipo di sostituzione & a((essoL $o(e per i tipi interi e reali & possibile effettuare confrontiD cosK & possibile controllare se due o"F "etti sono lo stesso oppure sono due o""etti di7ersiD attra7erso l%u"ua"lianza @UA o la disu"ua"lianza @^_A. I co((enti in *$> 7en"ono fatti precedere dal doppio trattino @FFA e 7al"ono fino alla fine della liF nea. *ggetti BeneD & "iunto il (o(ento di addentrarci nell%uso de"li o""ettiD associazioni e propriet-. In *$> possia(o accedere alle classiD co(e tipiD ed ai relati7i o""etti per prendere i 7alori c:e ci ser7ono per controllare in7ariantiD pre e post condizioni. Proprio per 2uestoD dato un o""ettoD possiaF (o accedere alle sue propriet- @od attributiAD operazioni @o (etodiA senza sideFeffectD e recuperare altri o""etti colle"ati a 2uello di contesto attra7erso le sue associazioni. Per accedere ad un attributo si usa il suo no(eD e7entual(ente separandolo con un punto dal conteF sto di riferi(ento. Ad ese(pio: Pa"ina 1,2

Bnified Process conte8t Person inv: self.a"e_) >%accesso alle operazioni a77iene allo stesso (odoI tutta7iaD sicco(e possono a7ere para(etriD a7ranno se(pre una coppia di parentesi. Ad ese(pio conte8t $o(pan3 inv: self.stocCPrice@A _ ) Se il (etodo :a dei para(etri essi saranno descritti all%interno delle parentesi e7entua(ente separanF doli con 7ir"ole. 6avigazione tra le associazioni Per 2uanto ri"uarda le associazioniD noi possia(o na7i"are tra le associazioni del dia"ra((a delle classiD per recuperare o""etti colle"ati al contesto di riferi(ento ed accedere alle loro propriet- e (etodi. Per far 2uesto noi na7i":ia(o sull%associazione usando il no(e del ruolo dell%o""etto colleF "ato. Il risultato puH essere un o""etto od un insie(e a seconda della (olteplicit- @se & )..1 oppure 1 allora & un o""ettoD altri(enti & un insie(eA. Ad ese(pio conte8t $o(pan3 inv: self.(ana"er.isBne(plo3ed U false inv: self.e(plo3eeF_notE(pt3@A .ella pri(a in7ariante self.(ana"er & un o""etto in 2uanto la sua (olteplicit- & 1D (entre self.e(F plo3ee & un insie(e di o""etti PersonD in 2uanto la sua (olteplicit- & )..R ;accio notare c:e nel caso in cui il tipo di associazione sia classificato co(e borderedc e la classe alla fine dell%associazione :a (olteplicit- (a""iore di unoD allora il risultato sar- una se2uenza @Per capire (e"lio i concetti di insie(e e se2uenza e co(e possano essere utilizzatiD 7edere oltreA. .el caso in cui il no(e di ruolo (anc:iD & possibile utilizzare il no(e della classe @scritto in lettere (inuscoleA se 2uesto non crea a(bi"uit- @ad ese(pioD nelle associazioni riflessi7eD il no(e del ruoF lo di7enta obbli"atorioA. .elle associazioni )..1 & possibile considerare l%o""etto colle"ato sia co(e insie(e c:e co(e sin"oF lo ele(ento. In altre parole & possibile usare sia conte8t $o(pan3 inv: self.(ana"erF_size@A U 1 c:e conte8t $o(pan3 inv: self.(ana"er.a"e_ 4) ?uesto per(ette di fare controlli sull%esistenza o (eno dell%o""etto colle"ato: conte8t Person inv: self.0ifeF_notE(pt3@A implies self.0ife.seV U SeV::fe(ale Classi di associazione Per per(ettere la na7i"azione 7erso classi di associazioniD essi si identificano con il loro no(e scritF to a caratteri (inuscoli @co(e per 2uando (anca il no(e di ruolo nell%associazione tra classi nor(aF liA. Tutta7ia & possibile c:e 7i siano a(bi"uit- do7ute alle associazioni ricorsi7eI ad ese(pio

Pa"ina 1,,

Bnified Process

noi possia(o na7i"are 7erso la classe E(plo3eeRanCin" da due direzioniD 2uella col ruolo bosses e 2uella col ruolo e(plo3ees. Per ri(uo7ere l%a(bi"uit- si (ette dopo il no(e della classe di associaF zioneD il no(e del ruolo da cui stia(o partendoD racc:iuso tra parentesi 2uadre. ?uindi possia(o usare: conte8t Person inv: self.e(plo3eeRanCin"[bosses\F_su(@A _ ) Per intendere c:e lo 7edia(o dal lato dei bossesD oppure conte8t Person inv: self.e(plo3eeRanCin"[e(plo3ees\F_su(@A _ ) Per intendere c:e lo 7edia(o dal lato de"li e(plo3ee. /ue note: & possibile usare la sintassi delle parentesi 2uadre anc:e senza c:e 7i sia a(bi"uit-I inolF tre 2uesto tipo di na7i"azione restituisce l%insie(e di tutti "li o""etti della classe di associazione c:e sono colle"ati a"li o""etti c:e :anno il ruolo specificato. >a na7i"azione dalle classi di associazione a77iene co(e per le classi nor(ali. Associazioni 2ualificate Per na7i"are attra7erso associazioni 2ualificate abbia(o due (odi: il pri(o restituisce l%insie(e di tutti "li o""etti colle"ati al contesto ed & effettuato se(plice(ente indicando se(plice(ente il no(e del ruolo: conte8t BanC inv: self.custo(er ... Il secondo siste(a per(ette di riferirsi ad un o""etto specifico ed & effettuato indicando oltre al no(e del ruolo l%identificatore specifico tra parentesi 2uadre: conte8t BanC inv: self.custo(er[1!6442,\... *77ia(ente se c%& piJ di un 2ualificatore biso"na specificare tutti i 7alori per tutti i classificatoriD separandoli con 7ir"ole. .on & possibile specificare solo una parte dei 2ualificatori. Package A 7olte puH capitare c:e due classi abbiano lo stesso no(eD (a apperten"ano a due pacCa"e di7ersi. Per e7itare a(bi"uit-D in *$> si usa la sintassi PaCa"e.a(e::$lass.a(eD o7un2ue ce ne sia bisoF "noI in caso di pacCa"e annidati & possibile usare PacCa"e.a(e1::PacCa"e.a(e2:: ... ::PacCa"e.aF (e.::$lass.a(e

Pa"ina 1,4

Bnified Process ,ottoclassi e superclassi O possibile usare le propriet- ed i (etodi di una superclasse: conte8t B inv: self.oclAsT3pe@AA.p1 FF accede alla propriet- p1 definita in A self.p1 FF accede alla propriet- p1 definita in B *77ia(ente supponendo c:e B sia sottoclasse di A Metodi predefiniti In *$> esistono alcuni speciali (etodi c:e :anno tutti "li o""etti oclIsT3pe*f@t : *clT3peA : Boolean oclIsTind*f@t : *clT3peA : Boolean oclInState@s : *clStateA : Boolean oclIs.e0@A : Boolean oclAsT3pe@t : *clT3peA : instance of *clT3pe supert3pes@A: insie(e di tipi allSupert3pes@A: insie(e di tipi Il pri(o per(ette di controllare se il tipo dell%o""etto e t siano lo stesso: conte8t Person inv: self.oclIsT3pe*f@ Person A FF true inv: self.oclIsT3pe*f@ $o(pan3A FF false Il secondo deter(ina se t & sottotipo @sottoclasseA dell%o""etto Il terzo deter(ina se l%o""etto si tro7a nello stato sD do7e s & il no(e dato allo stato nel dia"ra((a de"li stati. In caso di stati co(postiD & possibile ric:iedere se l%o""etto si tro7i in un sottostato sepaF rando i no(i con doppi due punti @::A. Il 2uarto puH essere usato solo nelle postcondizioni e deter(ina se l%o""etto & stato creato durante l%operazione. Il 2uinto trafor(a un tipo in un altroD o per (e"lio direD considera un o""etto co(e se appartenesse ad un%altra classe purc:G co(patibile @cio& de7e essere sottoclasseA. Il sesto restituisce l%insie(e di tutti le superclassi dell%o""etto @se non ci sono superclassiD restituisce l%insie(e 7uotoD se l%o""etto & sottoclasse di una sola classeD l%insie(e a7r- un ele(ento soloA. Il setti(o ripercorre tutto l%albero di deri7azione fino alla radice e ritorna l%insie(e di tutti "li stati c:e incontra nei ca((ini. &alori precedenti nelle postcondizioni In certi casi & necessario riferirsi ad un 7alore precedente all%elaborazione. Ad ese(pio 7o"lia(o c:e un (etodo birt:da38appens so((i 1 all%et- @a"eA precedenteI 2uesto fa si c:e la postcondizione sia a"eUa"eW1D (a (ettendola cosK se(brerebbe c:e l%et- corrente de7e essere u"uale all%et- corrente piJ uno @un po% difficileA. Per eli(inare l%a(bi"uit- *$> usa la parola c:ia7e epre da posporre al no(e: conte8t Person::birt:da38appens@A post: a"e U a"eepre W 1 cosK l%a(bi"uit- & tolta: l%et- corrente de7e essere u"uale all%et- precedente piJ uno. Pa"ina 1,5

Bnified Process >a parola c:ia7e epre puH essere anc:e (essa dopo un (etodo ad indicare c:e interessa il risultato dell%operazione pri(a dell%elelaborazione corrente. conte8t $o(pan3:::ireE(plo3ee@p : PersonA pre : not e(plo3eeF_includes@pA post: e(plo3eesF_includes@pA and stocCprice@A U stocCpriceepre@A W 1) .el caso in cui la propriet- sia un o""etto possia(o a7ere: a.bepre.c FF prende il 7ecc:io 7alore delle propriet- b di aI sia esso V FF e poi prende il nuo7o 7alore della propriet- c di V a.bepre.cepre FFprende il 7ecc:io 7alore della propriet- b di aI sia esso V FF e poi prende il 7ecc:io 7alore della propriet- c di V Collezioni O "iunto il (o(ento di parlare di insie(i @SetAD se2uenze @Se2uenceA e M7ali"ieN @Ba"A. Il risultato della na7i"azione attra7erso associazioni & un insie(e @SetAD se l%associazione & identifiF cata dalla parola borderedcD allora il risultato & una se2uenza @Se2uenceA. >a co(binazione di di7erF se na7i"azioni ottiene una 7ali"ia @Ba"A. Proprio per 2uesto (oti7o 2uesti tre o""etti sono predefiniti @anc:e co(e tipoA in *$>. Tutti e tre 7en"ono accu(unati col no(e @ed il tipoA di $olleF zioneD in 2uanto il loro co(pito & contenere o""etti. In *$> abbia(o dun2ue tre tipi di collezione: SetD Se2uence e Ba". Il pri(o & l%insie(e a cui tutti sia(o abituatiD il secondo rappresenta una se2uenza di o""ettiD (entre il terzo & un insie(e c:e a(F (ette duplicati. O possibile creare 2uesti o""etti al 7olo: Per l%insie(e: Set b 1 D 2 D 5 D 11 c Set b %apple% D %oran"e%D %stra0berr3% c Per la se2uenza: Se2uence b 1D ,D 45D 2D , c Se2uence b %ape%D %nut% c Per la 7ali"ia: Ba" b1 D , D 4D ,D 5 c /ato c:e una se2uenza consecuti7a di interi & un po% tedioso crearla con 2uesta sintassiD ne & stata in7entata un%apposita: si indica il pri(o nu(ero si (ette una se2uenza di due punti @..A e si (ette l%ulti(o nu(ero. ?uindi le se"uenti due creazioni Se2uenceb 1..@6 W 4A c Se2uenceb 1..1) c sono identic:e a Se2uenceb 1D 2D ,D 4D 5D 6D !D 1D #D 1) c Esistono dun2ue tre (odi per ottenere una collezione @c:e sia un SetD un Ba" od una Se2uenceA: 1. $reandoloD co(e abbia(o 7isto sopra 2. .a7i"ando tra le associazioniD co(e abbia(o 7isto precedente(ente Pa"ina 1,6

Bnified Process ,. Attra7erso operazioni c:e restituiscono collezioniD co(e 2uella di unione di insie(i. 6$B$: In *$> non esistono collezioni di collezioniD 2uindi Setb Setb1D 2cD Setb,D 4cD Setb5D 6c c & u"uale a Setb 1D 2D ,D 4D 5D 6 c Per 2uanto ri"uarda la confor(it- di tipo abbia(o c:e o"nuno dei tre o""etti si confor(a al tipo collezione @$ollectionAD (a non tra di loro. *"nuno di 2uesti o""etti :a le proprie operazioniI per accedere alle operazioni di un insie(eD in *$> si usa la sintassi della freccia @F_A co(e abbia(o 7isto in tutti "li ese(pi sopra. Opera#ioni comuni a tutte le colle#ioni Inizia(oD dun2ueD dalle operazioni co(uni a tutte le collezioni: 2elect $on 2uesta operazione restituia(o una collezione dello stesso tipo di 2uella di partenza in cui sono 7erificate tutte le propriet- indicate. >a sintassi & collectionF_select@ booleanFeVpression A ?uindi il risultato sar- una collezione in cui tutti "li ele(enti rendono 7era la booleanFeVpression. 6ota: la booleanFeVpression puH essere anc:e data da propriet- di tipo bool o (etodi c:e restituiF scono un tipo bool. Ad ese(pio: conte8t $o(pan3 inv: self.e(plo3eeF_select@a"e _ 5)AF_notE(pt3@A Abbia(o c:e 7erranno selezionati tutti "li e(plo3ee c:e :anno la propriet- a"e piJ "rande di 5) e poi si controlla c:e l%insie(e non sia 7uoto. Bn%altra sintassi c:e per(ette di riferirsi diretta(ente a"li o""etti c:e stia(o scorrendo & collectionF_select@ 7 f booleanFeVpressionF0it:F7 A 7 & la 7ariabile di iterazione. Ad ese(pio conte8t $o(pan3 inv: self.e(plo3eeF_select@p f p.a"e _ 5)AF_notE(pt3@A Indica di prendere tutti "li ele(enti p dell%insie(e e(plo3ee tali c:e la propriet- a"e di p sia (a"F "iore di 5). Si controlla poi c:e l%insie(e risultante non sia 7uoto. >%ulti(a sintassi per(ette di tipare la 7ariabile d%iterazione: collectionF_select@ 7 : T3pe f booleanFeVpressionF0it:F7 A Se(pre nell%ese(pio conte8t $o(pan3 inv: self.e(plo3ee.select@p : Person f p.a"e _ 5)AF_notE(pt3@A Indica di prendere tutti "li ele(enti p di tipo Person dall%insie(e e(plo3ee tali c:e la propriet- a"e di p sia (a""iore di 5). Si controlla poi c:e l%insie(e risultante non sia 7uoto. Pa"ina 1,!

Bnified Process Re>ect ?uesto (etodo & l%opposto della Select: restituisce tutti "li ele(enti c:e non soddisfano l%espressione booleana. 8a la stessa sintassi di Select ed & e2ui7alente ad una Select in cui si & ne"aF ta l%espressione booleana. Collect A differenza della Select e della Re<ectD c:e restituiscono un sottocollezioneD la collect restituisce una Ba" di differenti o""ettiI ad ese(pio se 7o"lia(o sapere tutte le date di nascita di tutti "li i(F pie"ati di una co(pa"nia possia(o usare self.e(plo3eeF_collect@ birt:/ate A oppure self.e(plo3eeF_collect@ person f person.birt:/ate A oppure self.e(plo3eeF_collect@ person : Person f person.birt:/ate A /all%ese(pio si deduce c:e usa la stessa sintassi di Select e Re<ect. .otare due cose: Il tipo di o""etto restituito & un Ba" in 2uanto & possibile c:e 7i siano o""etti duF plicati @le date di nascitaD nell%ese(pioD saranno (olto facil(ente duplicateAI la seconda cosa i(porF tante & c:e la $ollect & un%operazione co(une e di conse"uenza puH essere abbre7iata con la sintassi del punto: self.e(plo3ee.birt:date & e2ui7alente a self.e(plo3eeF_collect@birt:dateA for,ll ?uando dobbia(o 7erificare un 7incolo per tutti "li ele(enti di una collezioneD possia(o usare l%oF perazione forAll: collectionF_forAll@ 7 : T3pe f booleanFeVpressionF0it:F7 A collectionF_forAll@ 7 f booleanFeVpressionF0it:F7 A collectionF_forAll@ booleanFeVpression A ?uesta operazione restituisce un bool: ritorna 7ero se tutti "li ele(enti soddisfano la booleanFeVF pressionD ritorna falso se ce ne al(eno uno c:e non la soddisfa. Ad ese(pio conte8t $o(pan3 inv: self.e(plo3eeF_forAll@ forena(e U %PacC% A inv: self.e(plo3eeF_forAll@ p f p.forena(e U %PacC% A inv: self.e(plo3eeF_forAll@ p : Person f p.forena(e U %PacC% A ?ueste tre restituiscono 7ero se la propriet- forena(e di o"ni e(plo3ee & u"uale a PacC. Esiste una 7ariante di 2uesta operazione c:e per(ette di usare piJ 7ariabili d%iterazione: se(pliceF (ente 7en"ono elencate le 7ariabili separandole con le 7ir"ole. Ad ese(pio conte8t $o(pan3 inv: Pa"ina 1,1

Bnified Process self.e(plo3eeF_forAll@ e1D e2 f e1 ^_ e2 i(plies e1.forena(e ^_ e2.forena(eA ?uesto controlla c:e non 7i siano due i(pie"ati c:e :anno lo stesso no(e. O se(antica(ente u"uaF le a conte8t $o(pan3 inv: self.e(plo3eeF_forAll@e1 f self.e(plo3eeF_forAll @e2 f e1 ^_ e2 i(plies e1.forena(e ^_ e2.forena(eAAA /Fist A 7olte sia(o interessati a sapere se esiste un o""etto c:e soddisfa una certa propriet- all%interno di una collezioneD anzic:G sapere se tutti "li ele(enti la soddisfano. >%operatore EVist ser7e proprio a 2uesto. 8a lo stesso funziona(ento di forAllD (a & un operatore esistenziale anzic:G uni7ersale. Iterate ?uesta operazione & la piJ co(plicataD (a la piJ potente tra 2uelle c:e iterano su"li ele(enti delle collezioniD tant%& 7ero c:e tutte le operazioni precedenti possono essere specificate con 2uesto operaF tore. >a sua sintassi &: collectionF_iterate@ ele( : T3peI acc : T3pe U ^eVpression_ f eVpressionF0it:Fele(FandFacc A do7e ele( & la 7ariabile d%iterazioneD (entre acc & l%accu(ulatore. Ad acc 7iene inizial(ente asseF "nato il 7alore eVpressionD poi ele( inizia a iterare tra "li ele(enti della collezione e 7iene 7alutato eVpressionF0it:Fele(FandFacc per ele(I il risultato della 7alutazione di o"ni iterazione 7iene asseF "nato ad acc. Vedia(o co(e possia(o i(ple(entare la collect con la iterate: collectionF_iterate@V : TI acc : T2 U Ba"bc f accF_includin"@V.propert3AA *77ia(ente con includin" intendia(o l%operazioneD descritta piJ a7antiD c:e per(ette di a""iun"ere ele(enti ad un insie(e. Risolvere le ambiguit3 in un operazione Pri(a di addentrarci su altre operazioni disponibiliD 7edia(o co(e (ai "li operatori precedenti :anF no tre sintassi di7erse. Il (oti7o & dato dall%a(bi"uit-. Procedia(o con un ese(pio: context Person inv: employer->forAll( employee->exists( lastName = name) ) ?ui 7en"ono introdotte tre 7ariabili i(plicita(ente. >a pri(a & selfD la seconda & l%iteratore del foF rAllD la terza & l%iteratore del eVist. >e 7arie propriet- @e(plo3erD e(plo3eeD last.a(e e na(eA de7oF no essere asse"nate a 2ueste 7ariabili.E 2ui sor"ono i proble(iD infatti e(plo3er 7iene asse"anto alla 7ariabile self di tipo Person e co(e tale de7e essere una sua propriet-D e(plo3ee puH essere asseF "nato sia a self c:e all%iteratore del forAllI (a e(plo3ee non appartiene a Person e 2uindi non ci sono a(bi"uit-. a last.a(e e .a(e possono essere asse"nate a tutte e tre le 7ariabiliD ed entra(bi apparten"ono sia a self sia al terzo iteratore @in 2uanto entra(bi di tipo PersonA. ?uesto & a(bi"uo e Pa"ina 1,#

Bnified Process non puH essere risolto. Bsando un altro tipo di sintassi il proble(a & risolto: conte8t Person inv: e(plo3erF_forAll@ e(plo3eeF_eVists@ p f p.last.a(e U na(eA A oppure conte8t Person inv: e(plo3erF_forAll@ e(plo3eeF_eVists@ self.last.a(e U na(eA A 2ize Restituisce il nu(ero di ele(enti della collezione Include Restituisce 7ero se la collezione contiene l%ele(ento specificato: collection F_ include@ob<ectA /Fclude Restituisce 7ero se la collezione .*. contiene l%ele(ento specificato: collection F_ eVclude@ob<ectA Count Restituisce il nu(ero di 7olte c:e un o""etto co(pare all%interno della collezione: collection F_ count@ob<ectA Includes,ll Restituisce 7ero se la collezione contiene tutti "li ele(enti della collezione specificata: collection F_ includesAll@collection2A /Fcludes,ll Restituisce 7ero se la collezione .*. contiene nessun ele(ento della collezione specificata: collection F_ eVcludesAll@collection2A Is/mpt9 Restituisce 7ero se la collezione & 7uota +ot/mpt9 Restituisce 7ero se la collezione & piena 2um Restituisce la so((a di tutti "li ele(enti. +li ele(enti de7ono supportare l%operazione di so((a @interi e realiA Is?nique

Pa"ina 14)

Bnified Process Restituisce 7ero se la 7alutazione dell%espressione data risulta di7ersa per o"ni ele(ento della colleF zione: collection F_ isBni2ue@eVprA 2orted-9 Restituisce una se2uenza in cui "li ele(enti sono ordinati per l%espressione. Il pri(o ele(ento & 2uell%ele(ento per cui eVpr risulta il piJ piccolo. EVpr de7e supportare l%operatore ^ ,n9 Restituisce l%ele(ento della collezione c:e rende 7era l%espressione. Se piJ di un ele(ento la soddiF sfa ne 7iene restituito uno a caso. Se nessun ele(ento la soddisfa il risultato & indefinito. $ollection F_ an3@eVprA Opera#ioni di!ponibili !olo per gli in!iemi ?uelle 2ui di se"uito 7al"ono solo per "li insie(i ?nion ?uesta operazione restituisce un insie(e c:e & l%unione dell%insie(e di partenza e 2uello specificato Set F_ union@Set2A Alternati7a(ente restituisce un Ba" c:e & l%unione tra l%insie(e di partenza ed il Ba" specificato Set F_ union@Ba"A ?guaglianza $onfronta due insie(i e restituisce 7ero se e solo se tutti "li ele(enti dell%insie(e specificato stanno in 2uello di partenza. Set U Set2 Intersection ?uesta operazione restituisce un insie(e c:e & l%intersezione dell%insie(e di partenza e 2uello speciF ficato Set F_ intersection@Set2A Alternati7a(ente restituisce un Ba" c:e & l%intersezione tra l%insie(e di partenza ed il Ba" specificaF to Set F_ intersection@Ba"A Differenza Restituisce un insie(e contenente tutti "li ele(enti c:e stanno nell%insie(e di partenzaD (a non in 2uello specificato Set E Set2 Including A""iun"e l%ele(ento specificato all%insie(e di partenza Set F_ includin"@ob<ectA /Fcluding Pa"ina 141

Bnified Process Restituisce l%insie(e di partenza (eno l%ele(ento specificato Set F_ eVcludin"@ob<ectA 29mmetricDifference Restituisce un insie(e c:e contiene tutti "li ele(enti dell%insie(e di partenza e dell%insie(e specifiF catoD purc:G non si tro7ino in entra(bi Set F_ s3((etric/ifference@Set2A ,s2equence Restituisce una se2uenza c:e contiene tutti "li ele(enti dell%insie(e di partenza con un ordine non specificato. ,s-ag Restituisce un Ba" c:e contiene tutti "li ele(enti dell%insie(e di partenza Opera#ioni di!ponibili !olo per i $ag ?uelle 2ui di se"uito 7al"ono solo per i Ba" ?nion ?uesta operazione restituisce un Ba" c:e & l%unione del Ba" di partenza e 2uello specificato Ba" F_ union@Ba"2A PuH anc:e restituire un Ba" c:e & l%unione tra il Ba" di partenza e l%insie(e specificato Ba" F_ union@SetA ?gualianza $onfronta due Ba" e restituisce 7ero se tutti "li ele(enti del Ba" specificato stanno in 2uello di parF tenza e si ripetono lo stesso nu(ero di 7olte. Ba" U Ba"2 Intersection ?uesta operazione restituisce un Ba" c:e & l%intersezione del Ba" di partenza e 2uello specificato Ba" F_ intersection@Ba"2A Alternati7a(ente restituisce un insie(e c:e & l%intersezione tra il Ba" di partenza ed l%insie(e speciF ficato Ba" F_ intersection@SetA Including A""iun"e l%ele(ento specificato al Ba" di partenza Set F_ includin"@ob<ectA /Fcluding Restituisce il Ba" di partenza (eno l%ele(ento specificato Set F_ eVcludin"@ob<ectA ,s2equence Pa"ina 142

Bnified Process Restituisce una se2uenza c:e contiene tutti "li ele(enti del Ba" di partenza con un ordine non speF cificato. ,s2et Restituisce un insie(e c:e contiene tutti "li ele(enti del Ba" di partenza con i duplicati ri(ossi. Opera#ioni di!ponibili !olo per le !e%uen#e ?uelle 2ui di se"uito 7al"ono solo per le se2uenze ?guaglianza $onfronta due se2uenze e restituisce 7ero se e solo se tutti "li ele(enti della se2uenza specificata stanno in 2uella di partenza e si tro7ano nello stesso ordine Se2uence U Se2uence2 ?nion Restituisce una se2uenza c:e contiene tutti "li ele(enti della se2uenza di partenza se"uiti da 2uella specificata Se2uence F_ union@Se2uence2A ,ppend A""iun"e l%o""etto specificato in coda alla se2uenza iniziale Se2uence F_ append@Se2uence2A *repend A""iun"e l%o""etto specificato in testa alla se2uenza iniziale Se2uence F_ prepend@Se2uence2A 2ub2equence Restituisce una se2uenza c:e contiene tutti "li ele(enti della se2uenza di partenza a partire dal nuF (ero specificato fino al secondo nu(ero specificato co(presi Se2uence F_ subSe2uence@lo0erD:i":erA ,t Restituisce l%iFesi(o ele(ento Se2uence F_ at@iA )irst Restituisce il pri(o ele(ento Dast Restituisce l%ulti(o ele(ento Including Stesso funziona(ento di Append /Fcluding Restituisce una se2uenza in cui sono state ri(osse tutte le occorrenze dell%o""etto specificato. Pa"ina 14,

Bnified Process Se2uence F_ eVcludin"@ob<ectA as-ag Restituisce un Ba" contenente tutti "li ele(enti della se2uenza inclusi i duplicati as2et Restituisce un insie(e contenente tutti "li ele(enti della se2uenza con i duplicati ri(ossi E 2uesto & tutto per l%*$> :A

Approccio 7C.

+$d$,@ 6uesto approccio non appartiene strettamente all:?nified *rocess" ma l:?MD lo supporta completamente @! Bna tecnica considerata buona nella pro"ra((azione ad o""etti & 2uella di di7idere la 7isualizzaF zioneD dall%i(ple(entazioneD dai dati associati. >%approccio B$E @Boundar3F$ontrolFEntit3 E fronF tieraD controlloD entit-A consiste in 2uesto. B > supporta 2uesto approccio usando "li stereotipi Boundar3D $ontrol ed Entit3. >a tecnica consiF steD bre7e(enteD in 2uesto: tutte le classi 7en"ono di7isi in tre (acro cate"orie @possono anc:e esseF re pacCa"eA:
v

$lasse Boundar3: descri7e "li o""etti c:e rappresentano l%interfaccia tra un attore ed il siste(a. Rappresenta una parte dello stato del siste(a c:e & presentata all%utente in for(a 7isi7a oppure sonora. $lasse $ontrol: descri7e "li o""etti c:e percepiscono "li e7enti "enerati dall%utente e controllano l%esecuzione del processo di business. Rappresenta un supporto per le operazioni e le atti7it- di un caso d%uso. $lasse Entit3: descri7e "li o""etti c:e rappresentano la se(antica delle entit- nel do(inio appliF cati7o. $orrisponde ad una struttura dati nel database del siste(a.

>e classi Boundar3 corrispondono dun2ue alla +BID le classi $ontrol corrispondono alle funzionaliF t- del siste(aD (entre 2uelle Entit3 a"li o""etti c:e rappresentano i dati nella (e(oria del siste(a @i dati nor(al(ente risiedono su file di testoD databaseD file in for(ato g >D 8T >D P/;D proprietaF rioD ecc. e non sono o""etti c:e il siste(a (anipola diretta(enteA. Bn ese(pio di classe Boundar3 puH essere la finiestra c:e si presenta all%utenteD uno della classe $ontrol puH essere la funzionalitdi ricercaD uno della classe Entit3 l%o""etto c:e per(ette l%accesso al database. >e classi Boundar3 dialo"ano con l%utente e con le classi $ontrol @non sanno neanc:e dell%esistenza delle classi Entit3AD le classi Entit3 dialo"ano con le classi $ontrol e con i dati c:e "estiscono @non sanno neanc:e dell%esistenza delle classi Boundar3A e le classi $ontrol dialo"ano con le classi BounF dar3 ed Entit3 @non sanno niente su co(e presentare all%utente i risultati od il for(ato di (e(orizzaF zione dei datiA. >%approccio B$E & un M(odo di pensareN c:e riflette una buona pratica di in"e"neria del soft0are e co(e tale do7rebbe essere parte di 2ualsiasi (etodo di s7iluppo delle applicazioneD indipendenteF (ente dalla sottostante piattafor(a d%i(ple(entazione. Il principale 7anta""io di 2uesto approccio & nel ra""ruppa(ento di classi in strati "erarc:izzatiI ciH (i"liora la co(prensione del (odello e ne riduce la co(plessit-. RiduceD inoltreD il risc:io di creare classi mostruose c:e :anno il controllo Pa"ina 144

Bnified Process sull%intera funzionalit- del siste(a. .essun lin"ua""io di pro"ra((azione per(ette di realizzare appieno 2uesto approccioD in 2uanto le classi Boundar3 non :anno nessun senso di esistere senza una classe $ontrol c:e "estisca i loro e7entiI di conse"uenza spesso le classi $ontrol e Boundar3 7en"ono fuse dai lin"ua""i di pro"ra(F (azione. /%altrondeD si pensi alla c:iusura di una finestra: 2uando si pre(e sul tasto di c:iusuraD la finestra si c:iudeD in 2uanto :a codificato al suo interno il codice di c:iusura @co(e & "iusto c:e siaD 7isto c:e (ano7ra la finestraAD (a 2uel codice appartiene al do(inio delle classi $ontrol @a"isce sulF la finestra e non presenta niente all%utente E & la finestra c:e si c:iudeD non il codiceA.
Generalizzazione8 ereditariet&8 polimorfismo e loro problemi

+$d$,$@ 6uesto non fa parte dello ?nified *rocess" ma mi sembrava doveroso trattarlo per una mi gliore comprensione @! >a "eneralizzazione & un costrutto estre(a(ente potente perc:G si porta appresso concetti di sostiF tuibilit-D ereditariet- e poli(orfis(o. Pri(a di procedere nella trattazione di tali potentiD e pericoloF seD caratteristic:e & i(portante capire la sottile differenza tra "eneralizzazione ed ereditariet-. >a "eneralizzazione & una relazione se(antica tra classi per cui l%interfaccia della sottoclasse de7e co(prendere tutte le propriet- @pubblic:e e protetteA della superclasse. >%ereditariet- & il (eccanis(o per (ezzo del 2uale ele(enti piJ specifici incorporano la struttura ed il co(porta(ento definito da ele(enti piJ "enerali. >a "eneralizzazione & un (odo di definire classi piJ specific:e @sottoclassiA c:e sono dello stesso tipo delle classi piJ "eneric:e @superclassiA. ?uesto rappresenta una "rande opportunit- perc:G perF (ette di (ettere una sottoclasse o"ni 7olta c:e 7i & biso"no di una superclasse ed ese"uire di conseF "uenza co(piti piJ specifici. Per(ette di ridurre il nu(ero di freccie nei dia"ra((iD in 2uantoD proF prio in 7irtJ della sostituibilit-D le relazioni c:e coin7ol"ono la superclasse 7al"ono anc:e per le sotF toclassi. Il (eccanis(o della sostituibilit- & "enerato "razie all%ereditariet- ed al poli(orfis(oD (a proprio per 2uesto 7i possono essere 7ari proble(iD se non bene usato. ?uando parla7a(o di co(e tro7are le associazioniD abbia(o detto c:e se una classe & un tipo di un%altra classe allora abbia(o una "eneralizzazione. ?uesto di tipo "eneralizzazione & costruito con l%ereditariet- d%interfaccia. In altre parole la sottoclasse eredita "li attributi e le operazioni della suF perclasse ed e7entual(ente puH ca(biarne l%i(ple(entazione. a l%ereditariet- puH non essere @e spesso non &A solo ereditariet- d%interfacciaD (a essa si porta appresso i(ple(entazioni per per(etF tere il riuso del codice @anzi & usata soprattutto per 2uesto scopoD per l%altro tipo si usa il costrutto delle interfacceD co(e descritto in un para"rafo successi7oA. ?uesta caratteristicaD unita al poli(orfiF s(oD per(ette di realizzare classi in "rado di estendere funzionalit-D 7ariare funzionalit- ed adiritF tura restrin"ere funzionalit- della superclasse. a 2uesto puH portare a "rossi proble(i. Bn uso corretto dell%ereditariet- d%i(ple(entazione & 2uella per estensioneD cio& una sottoclasse :a piJ propriet- o (etodi della superclasseD cio& & un tipo della superclasse. Attenzione c:eD benc:G sia c:ia(ata per estensioneD nor(al(ente il poli(orfis(o & usato per introdurre ulteriori 7incoli sulle propriet-. Bn uso proble(atico dell%ereditariet- d%i(ple(entazione & 2uello per restrizioneD cio& una sottoclasF se eli(ina (etodi eQo propriet- di una superclasse od ancora ri(uo7e dei 7incoli dalle propriet-. ?uesto (ina il riusoD in 2uanto puH darsi c:e una classe c:ia(i un (etodo della sottoclasse c:e & stato in realt- abolito o presupporre delle post condizioni c:e la sottoclasse non rispetta. Il risultato si puH i((a"inare...

Pa"ina 145

Bnified Process A 2uesto si puH a""iun"ere un uso total(ente i(proprio dell%ereditariet- d%i(ple(entazione: 2uella cosidetta per con7enienza. In 2uesto (odo si costruisce una sottoclasse solo per poter utilizzare alF cuni (etodi "i- pronti @ad ese(pio estendere una classe oto con una classe acc:inaAD a""iun"ere i (etodi non supportati dalla superclasse e ri(uo7ere 2uelli inco(patibili. ?uesto causa la totale non sostituibilit-D "rossi proble(i di (anutenzione e di co(prensione. /%altronde 2uando una (acF c:ina puH essere una (oto' Altri proble(i possono deri7are dalle (odific:e delle superclassi. Infatti i((a"inia(oci c:e ad una superclasse 7en"ano ca(biati propriet- e (etodi @fondendone alcuniD di7idendone altriD stra7ol"enF done altri ancoraAI cosa accade alle sottoclassi' Esse ereditano la nuo7a interfaccia e la nuo7a i(F ple(entazione e puH darsi c:e non riesca piJ a s7ol"ere il co(pito dato"li @ed adirittura la funzionaF lit- i(pazzisca co(pleta(enteA. Bn ulti(o proble(a dato dalla "eneralizzazione & do7uto al bindin" statico c:e 7iene fattoI se una classe & sottoclasse di un%altraD essa non puH ca(biare superclasse nel corso dell%esecuzione. /a 2ueF sto se"ue una certa ri"idit- del codice. Ad ese(pio supponia(o c:e esistano una classe I(pie"ato e due sottoclassi di 2uesta: ana"er e Pro"ra((atore. $on 2uesto sc:e(a un I(pie"ato c:e & un Pro"ra((atore non potr- (ai di7enire ana"er in 2uanto sono due classi di7erse ed un o""etto non puH ca(biare classe. In 2uest%ulti(o caso la soluzione & banale: Pro"ra((atore e ana"er non sono un tipo di i(pie"aF toD (a un tipo di >a7oroI un I(pie"ato s7ol"e un >a7oro @cio& possiede un o""etto >a7oroAI 2uando l%I(pie"ato da Pro"ra((atore di7enta ana"erD 7iene distrutto l%o""etto Pro"ra((atore e creato un o""etto ana"erI la relazione con l%o""etto I(pie"ato non ca(bia di una 7ir"olaD in 2uanto sia ProF "ra((atore c:e ana"er sono tipi di >a7oro. Il proble(a delle (odific:e puH essere a""irato con l%a""re"azioneQco(posizione: pratica(ente la classe in realt- non ne estende nessun=altraD (a possiede o""ettiQra""ruppa o""etti delle classi c:e a7rebbe do7uto estendereD e ridic:iara tutte le propriet- ed i (etodi di cui :a biso"noD dele"ando a"li o""etti da essa posseduti tutte le funzioni c:e non & in "rado di soddisfare da solo. Il proble(a & nei dia"ra((i @le relazioni si (oltiplicanoA e nella lun":ezza e co(plessit- nella realizzazione della nuo7a classe. $o(e si puH 7edere i proble(i ri(an"ono aperti. /un2ue prestare attenzione nell%uso della "eneraF lizzazione.

Inter acce
Bn%interfaccia specifica un insie(e di no(i di operazioni. >%idea c:ia7e dietro le interfacce & 2uella di separare la specifica delle funzionalit- dalla sua i(ple(entazione. /i conse"uenza l%interfaccia definisce un contratto i(ple(entato da un classificatore @classeD sottosiste(aD co(ponenteA. >%interF faccia de7e a7ere fir(a co(pleta dei suoi (etodiD se(antica dell%operazione c:e de7e s7ol"ere @teF sto o pseudocodiceAD opzional(ente 7incoliD ta"D stereotipi. .on de7e in nessun caso a7ere attributiD i(ple(entazioniD relazioni na7i"abili da sG a 2ualcos%altro. In B > un%interfaccia 7iene rappresentata in due (odi:

Pa"ina 146

Bnified Process
::inter+ace;; ActiGate actiGate( deactiGate(

ActiGate

Hone
Hone actiGate( deactiGate( !ensor actiGate( deactiGate(

!ensor actiGate( deactiGate(

actiGate( deactiGate(

$on il pri(o siste(a @rappresentato a sinistraA si indica esplicita(ente 2uali sono i (etodi c:e le classi de7ono i(ple(entare. $on il secondo siste(a @rappresentato a destraA si indica c:e le due classi i(ple(entano un interfaccia di no(e Acti7ateD le operazioni da i(ple(entare do7ranno esseF re rica7ate dai no(i dei (etodi delle classi.
Come usare le interfacce?

>e interfacce 7en"ono usate per poter per(ettere ad un classificatore di poter adoperare altre classiD senza sapere co(e 7en"ono i(ple(entati i (etodi. Ad ese(pio: >a classe Printer de7e sta(pare un docu(entoD esso puH essere un ordine @classe *rF derA o una sc:eda cliente @classe $usto(erA. Anzic:G do7er (ettere delle specific:e all%interno di Printer per sapere co(e sta(pare le relati7e classiD si lascia il co(pito ad esse facendo loro i(pleF (entare un (etodo printD definito dall%interfacciaD c:e Printer pro77eder- a c:ia(are @e Printer non :a biso"no di sapere a 2uale classe si sta ri7ol"endo per la sta(pa: uno potrebbe (ettere una classe In7oice c:e i(ple(enta tale interfaccia e Printer sar- in "rado di sta(parlaA. In B > si rappresenterebbe la cosaD cosK:

6rder ::inter+ace;; Print Customer print(g:$rap%ics :Goid ::uses;; Printer

>e interfacce 7en"ono inoltre usate per colle"are sottosiste(i @per sapere cosa sono i sottosiste(iD 7edi l%apposito para"rafo piJ sottoA.

Pa"ina 14!

Bnified Process

::subsystem;;

$2&

Customer*anager
::subsystem;;

Account*anager

Business3ogic
Bn ulti(o ese(pio potrebbe ri"uardare l%a""re"azione di interfacce: Bn ufficio & di7iso in 9oneD c:e co(prende un nu(ero di zone sussidiarieD o"ni zona :a un lettore di $ard c:e atti7a o disatti7a l%I/ $ard per 2uella zona. Bna $ard atti7ata per un a""re"ato di zone & 7alida per tutte le parti di 2uella zona. In 2uesto (odello o"ni zona & una collezione c:e contiene de"li o""etti c:e realizzano l%interfaccia Acti7ate. ?uesto rende (olto facile inserire nuo7i de7iceD co(e un allar(e antifu(o ed il suo lettore di I/ $ard.

&dCard
actiGate( deactiGate(

Hone
actiGate( deactiGate(

ActiGate * 1 Alarm
actiGate( deactiGate(

!ensor
actiGate( deactiGate(

$o(e si puH notare dalla fi"ura la relazione di a""re"azione da 9one ad Acti7ate & unidirezionale. ?uesto & necessario perc:G altri(enti altri o""etti possono a7ere associazioni 7erso l%intefacciaD (a un%interfaccia stessa non puH a7ere associazioni con nient%altro. Si nota anc:e c:e l%a""re"azione asi((etrica i(pedisce di dare se stesso co(e parte all%o""etto 9one.

Pa"ina 141

Bnified Process
!ndi$iduare le interfacce
z

/iscutere le associazioni: 7anno ad una classe o de7ono essere piJ flessibili' Se de7ono essere piJ flessibiliD probabil(ente :anno biso"no di un%interfaccia. /iscutere l=in7io dei (essa""i: 7anno ad o""etti di una sola classe o de7ono essere piJ flessibili' Se de7ono essere piJ flessibiliD probabil(ente :anno biso"no di un%interfaccia. ;attorizzare "ruppi di operazioni riusabili. Per ese(pio (olte classi del siste(a de7ono essere in "rado di sta(pare loro stessi su un dispositi7o di outputD probabil(ente ci sar- biso"no di un%inF terfaccia Print. ;attorizzare insie(i di operazioni co(uni a piJ classi. Identificare classi c:e "iocano lo stesso ruolo. Il ruolo indica una possibile interfaccia. Identificare possibili estensioni. A 7olte c%& biso"no di pro"ettare un siste(a c:e si espander- in futuro. >a do(anda & M.el futuroD altre classi a7ranno biso"no di essere a""iunte al siste(a'N Se la risposta & sKD pro7are a definire una o piJ interfaccie c:e definiscono il protocollo per a"F "iun"ere 2ueste nuo7e classi.

z z z

Sottosistemi
Bn sottosiste(a & un MpacCa"eN c:e nasconde la propria fase di desi"n. O utilizzata per separare 2uestioni relati7e al pro"ettoD rappresentare co(ponenti a "rana "rossaD racc:iudere siste(i le"ac3. Per(ettonoD inoltreD di di7idere la pro"ettazione del siste(a in piJ parti ed e7entual(ente affidarli a persone di7erse. Bn sottosiste(a & rappresentato co(e un pacCa"e con lo stereotipo Subs3ste(. tale pacCa"e puH esF sere di7iso in tre parti @nessuna delle 2uali obbli"atoriaA: *perazioni @Senza etic:ettaA: ?uesto co(parto contiene le operazioni c:e il sottosiste(a rende pubblic:e @o77ia(ente saranno realizzate da 2ualc:e classe pubblicaA. :lementi di specifica: ?uesto co(parto & per 2ue"li ele(enti co(e casi d%uso od interfacce c:e specificano alcuni aspetti del siste(a. :lementi di realizzazione: ?uesto co(parto & per 2ue"li ele(enti c:e realizzano il siste(a. Si possono 7isualizzare esplicita(ente le associazioni tra i 7ari ele(enti dei co(parti(enti. Ese(pio @e relati7a rappresentazione in B >A:

Courses
0ealiDation elements
addCourse(name:!tring :boolean remoGeCourse(name:!tring :boolean +indCourse(name:!tring :Course

0egistration*anager

!peci+ication elements
addCourse +indCourse remoGeCourse +indCourse

Il si(bolo c:e notia(o 7icino al no(e del sottosiste(a $ourses & una rappresentazione "rafica delF Pa"ina 14#

Bnified Process lo stereotipo ^^subs3ste(__. Per e7itare di esibire classi pubblic:eD o"ni sottosiste(a do7rebbe essere corredato da un%interfaccia. +li insie(i di sottosiste(i possono essere di7isi in strati ad indicare la funzionalit- di certo insie(e di sottosiste(i. I sottosiste(i (arcati con la parola c:ia7e b"lobalc sono sottosiste(i usati da tutti @ser7e ad e7itare un intrico di frecce paurosoA. Bn ese(pio:

::subsystem;;

Presentazione

$2&
Customer ::subsystem;; *anager ::subsystem;; 6rder *anager

>o"ica di Business

/o(inio

::subsystem;;
Product *anager

Customer

6rder
::subsystem;;
Account *anager

Product

Ser7izi

Accounts
::subsystem;; ::subsystem;;

::subsystem;;
Btilit3

IaGaJ.s#ing

IaGa.s"l

4global5 IaGa.util

>a costruzione di sottosiste(i a77iene attra7erso l%analisi dei pacCa"e di analisiD dall%introduzione di siste(i relati7i al do(inio della soluzione @co(e un siste(a di accesso al database o di co(unicaF zioneAD l%introduzione di siste(i cosidetti >e"ac3 @cio& in cui non si :a alcun controlloA.

Realizzazione dei casi d.uso 0 progetto


Allo stesso (odo dell%atti7it- di analisiD durante la fase di desi"n si riprendono i dia"ra((i di inteF razione per entrare nelle specific:e dei casi d%uso. Il focus in 2uesto casoD non & il cosaD (a il co(e: nei dia"ra((i d%interazione @/esi"nAD entrano in scena tutte le classi di utilit- e di contorno e speciF ficanoD per o"ni caso d%usoD tutti i passi c:e de7e effettuare il siste(a per risol7erlo. E7entuali sottoF siste(i possono essere trattati co(e scatole nere @ri(andando al sottosiste(a i detta"liA. .ei dia"ra((i di se2uenza e collaborazione i sottosiste(i 7en"ono 7isti co(e o""etti con lo stereoF tipo ^^subs3ste(__I o77ia(ente i (etodi c:e si possono in7ocare ed i risultati c:e puH dare sono dati dalle operazioni c:e il sottosiste(a rende pubblic:e.
iagrammi degli stati

Benc:G possano essere usati in altre atti7it- per c:iarificare alcune parti del pro"ettoD i dia"ra((i di atti7it- 7en"ono usati principal(ente durante l%atti7it- di /esi"nD in 2uanto & i(portante ora conoF scere l%e7ol7ersi della situazione delle classi. Si prenda ad ese(pio una classe Parser: nell%atti7it- di analisi basta7a sapere c:e esiste7a @il suo co(pito & riconoscere le strin":eAD (a nell%atti7it- di desiF "n & indispensabile sapere co(e fa e di conse"uenza tutti i suoi (uta(enti interni. >%B > 7iene incontro alla rappresentazione de"li stati di una classe attra7erso il dia"ra((a de"li statiD c:e & un dia"ra((a estre(a(ente potente @nel senso c:e ci si possono specificare (olte Pa"ina 15)

Bnified Process coseA. Tale dia"ra((a contiene uno stato iniziale ed uno finale rappresentati rispetti7a(ente con un cerF c:io pieno e con un cerc:io pieno inscritto in uno 7uoto. >o stato iniziale & in realt- uno pseudostato e passa i((ediata(ente al 7ero stato iniziale della (acc:inaI lo stato finale & in7ece uno stato 7ero e proprio. *"ni stato interno & rappresentato da un cerc:io 7uoto con dentro il no(e dello stato. In B > uno Stato & una condizione o situazione durante la 7ita di un o""ettoD durante la 2uale esso soddisfa 2ualc:e condizioneD ese"ue 2ualc:e atti7it- o & in attesa di 2ualc:e e7ento. >o Stato dipende dai 7alori de"li attributi dell=o""ettoD i suoi colle"a(enti con altri o""ettiD o da 2uello c:e sta facendo. Bno stato puH a7ere associato atti7it- ed azioni: le azioni sono istantanee e non interro(pibiliD (enF tre le atti7it- :anno una durata e sono interro(pibili. >e azioni sono di tre di7ersi tipi:
t t t

entr3 E ese"uita ad o"ni in"resso nello statoD su 2ualsiasi transizione eVit E ese"uita ad o"ni uscita dallo statoD su 2ualsiasi transizione internal E azione associata a 2ualc:e e7entoD (a c:e non fa lasciare lo stato @entr3 e eVit non 7en"ono ese"uiteA do E ese"uita fino a c:e si per(ane nello statoD puH ter(inare pri(a di lasciare lo statoD indipenF dente(ente. Produce e7ento di co(pleta(ento.

>e atti7it- sono di un tipo solo:


t

Ecco un ese(pio di stato co(pleto di azioni ed e7enti

!tateCame entry K entryAction eJit K eJitAction some'Gent K internal1ransition some6t%er'Gent K ot%er&nternal1ransition do K internalActiGity
>e transazioni tra uno stato e l%altro sono rappresentate da frecce su cui 7i possono essere scritte: E7enti E occorrenza interna o esterna c:e fa scattare la transizione. +uardie E condizione booleana c:e de7e 7erificarsi pri(a c:e la transizione possa accadere. Azione E ciH c:e 7iene ese"uito 2uando la transizione scatta.

Pa"ina 151

Bnified Process

an'Gent<a$uard>KanAction A
+li e7enti possono essere:
t

$allE7ent E Ric:iesta di esecuzione di un=azione @o se2uenza di azioniAD de7e a7ere no(i di (eF todi della classe contesto. Possono a7ere para(etri e 7alore di ritorno. Si"nalE7ent E Ricezione di un pacc:etto di infor(azioni in7iate asincrona(ente. Si"nal & ar"oF (ento dell=e7ento. $:an"eE7ent E Bsa la parola c:ia7e 5.en ed un%espressione booleana. +li attributi usati de7ono appartenere alla classe contesto. A77en"ono nel passare da false a true . Ti(eE7ent E Bsa le parole c:ia7i 5.en od after . +li attributi usati de7ono appartenere alla classe contesto. A 7olte il tipo di e7ento da usare ca(bia a seconda di co(e si 7uole 7edere il (odello: ad ese(F pio una $allE7ent puH di7enire una $:an"eE7ent se passia(o dalla 7ista esterna @osser7ia(o la te(peratura di un pazienteA a 2uella interna @2uando la te(peratura del paziente ca(biaD allora...A.

a il dia"ra((a de"li stati non si fer(a 2ui: & possibile rappresentare stati co(postiD cio& uno stato contiene una o piJ (acc:ine a stati annidate. *"ni sottostato eredita tutte le transizioni dello stato "enitore e l%annida(ento & transiti7o. Ad ese(pio
Dialing&!P entry K o++/oo. ,aitingForDial1one <dialtone> Dialing do K dial&!P
a+ter(70 seconds KnoDial1one a+ter(70 seconds KnoCarrier

,aitingForCarrier

<carrier>

cancel

CotConnected entry K on/oo.

Connected eJit K on/oo. do K useConnection

O anc:e possibile rappresentare "li stati co(posti senza far 7edere i loro stati interni @ri(andando ad un altro dia"ra((a la rappresentazioneA:

Pa"ina 152

Bnified Process

Dialing&!P entry K o++/oo.


Bno stato co(posto puH anc:e essere concorrenteD cio& due (acc:ine a stati si (uo7ono conte(poF ranea(ente 2uando si entra nello stato co(posto:

&nitialiDing!ystem &nitialiDingFire!ensors do K initialiDeFire!ensor

&nitialiDing!ecurity!ensors do K initialiDe!ecurity!ensor

*77ia(ente le (acc:ine potrebbero indicare di uscire dallo stato co(posto in (aniera indipendenF te:

*onitoring!ystem *onitoringFire!ensors do K monitorFire!ensor


+ire

!oundingFireAlarm

*onitoring!ecurity!ensors do K monitor!ecurity!ensor

intruder

!ounding&ntruderAlarm

?ualsiasi sia la transazione ese"uitaD 7iene conclusa l=atti7it- di entra(be le (acc:ine e lasciato lo stato co(posto.

Pa"ina 15,

Bnified Process Inoltre le (acc:ine interne potrebbero 7oler co(unicare tra loroI ciH & possibile o attra7erso "li atF tributi:

6rderProcessing AcceptingPayment do K acceptPayment PaidFor entry K paidFor:= true

Assembling6rder do K assemble6rder

<paidFor>

DeliGering6rder

* attra7erso i cosi detti stati di sincronizzazioneD cio& dei particolari stati do7e parte dell%esecuzione resta in attesa c:e l%altra (acc:ina sia pronta per poi prose"uire insie(e:

6rderProcessing AcceptingPayment do K acceptPayment * Assembling6rder do K assemble6rder


In realt- nell=ese(pio la pri(a (acc:ina prose"ue co(unicando all=altra la possibilit- di prose"uire. Bn%altra potenziali- del dia"ra((a de"li stati & la possibilit- di usare "li stati 8istor3 c:e per(ettoF no di ricordare lo stato in cui si & lasciata una (acc:ina e rientrare nella (acc:ina in 2uello stato anzic:G nello stato iniziale. Esistono due tipi di stati 8istor3:

PaidFor

DeliGering6rder

S:allo0 :istor3 E $i si ricorda solo dello stato al li7ello indicato. /eep :istor3 E $i si ricorda de"li stati delle sotto(acc:ine.

I pri(i stati sono indicati con una lettera 8D (entre i secondi con 8R. >a differenza tra le due ri"uarF da solo se si & in uno stato co(posto: uno stato di tipo 8 far- rico(inciare tutte le sotto(acc:ine dall%inizioD (entre uno di tipo 8R si ricorder- anc:e do7e erano arri7ate anc:e le sotto(acc:ine e le far- rico(inciare da 2uel punto.

Riepilogo
>%atti7it- di /esi"n si occupa di co(e realizzare il siste(aD basandosi sulle analisi effettuate e sulF l%arc:itettura di base definitaD inizia a s7iluppare in (odo detta"liato le 7arie operazioni necessarie alla costruzione del siste(a. Pa"ina 154

Bnified Process

Riepilogo dei documenti prodotti


Tutta una serie di docu(enti 7iene prodotta durante 2uesta atti7it-D tutti 7olti a capire co(e realizF zare il siste(a. Essi sono:

'iagramma delle classi: co(pleta tutte le classi e le associazioni dal punto di 7ista i(ple(entati7o. Trasfor(a le classi di analisi in 2uelle di desi"n e traduce i (odelli non co(paF tibili @co(e le classi di associazioneA. $o(prende anc:e le interfacce 'iagramma di se2uenza e@o collaborazione: (odella il co(porta(ento delle classi per la risoF luzione dei casi d%usoD dal punto di 7ista i(ple(entati7o @co(prese le classi di accessoA 'iagramma dei package di design: (odella co(e sono accoppiate le classi. 'iagramma degli stati: odella i co(porta(enti interni delle classi. ,ottosistemi: 7isualizza i sottosiste(i utilizzatiD do7e sono utilizzati eD per 2uelli non le"ac3D 7i sono i ri(andi alle loro specific:e i(ple(entati7eD con i rispetti7i dia"ra((i. 'ocumentazione aggiuntiva: Ad ese(pio i docu(enti *$>D l%analisi delle scelte i(ple(entatiF 7eD ecc.

!mplementation ,!mplementazione>%atti7it- di i(ple(entazione se"ue 2uella di /esi"n e trasfor(a il (odello di /esi"n in un siste(a ese"uibile. .on esiste un 7ero e proprio (odello d%i(ple(entazione e spesso esso & lasciato alla caF pacit- del pro"ra((atore. Tutta7ia un (odello di i(ple(entazione trasfor(a ele(enti del (odello di desi"n in co(ponenti e or"anizza le co(ponenti secondo (eccanis(i di strutturazione e (oduF larizzazione. /urante 2uesta atti7it- il siste(a prende 7ita: da se(plici dia"ra((i si passa a pro"ra((i ese"uibiF liD librerieD databaseD ecc. .onostante c:e il (odello di i(ple(entazione esatto sia lasciato al pro"ra((atoreD ci si aspetta c:e esso co(prenda:
| | |

Piano d%inte"razione $o(ponenti /ia"ra((a di /eplo3(ent

!iano d.integrazione
Il piano d%inte"razione consiste in una se2uenza di build @7ersione ese"uibile del siste(aAD ric:iesta per un=iterazioneD co(prendente funzionalit- da costruire per o"ni build e le parti del (odello di i(ple(entazione influenzate dal build. Bn build do7rebbe a""iun"ere funzionalit- a 2uello precedente i(ple(entando casi d=uso eQo sceF nari co(pletiD non do7rebbe includere troppe co(ponenti nuo7e o raffinateD do7rebbe essere basato sul build precedente e partire da"li strati bassi ed espandersi 7erso strati "enerali e specifici dell%apF plicazione.

Componenti
Bn co(ponente & una parte fisica e ri(piazzabile di un siste(aD c:e racc:iude l=i(ple(entazioneD & confor(e aD e fornisce la realizzazione di un insie(e di interfacce. Pa"ina 155

Bnified Process Ese(pi: ;ile sor"enteD Sottosiste(i di i(ple(entazioneD $ontrolli Acti7egD Pa7aBeansD Enterprise Pa7aBeansD Pa7a ser7letsD Pa7a Ser7er Pa"eD ecc.
iagramma dei componenti

Bn co(ponente & rappresentato "rafica(ente co(e un rettan"olo sul cui lato sinistro 7i sono due rettan"oli piJ piccoli. Il no(e identificatore del co(ponente & scritto all%interno del rettan"olo piJ "rande. .or(al(ente 7i & uno stereotipo ad indicare il tipo di co(ponente:
| | | | |

^^eVecutable__: pro"ra((a c:e puH ese"uire su un nodo ^^file__: contiene codice sor"ente o dati ^^librar3__: statica o dina(ica ^^table__: tabella di una base di dati ^^docu(ent__: docu(ento

Il dia"ra((a (ostra i co(ponenti e le loro relazioniD c:e possono essere di dipendenza o co(posiF zione. .el pri(o caso indica la necessit- di un ser7izioD nel secondo c:e 2uel co(ponente & in realtfor(ato da di7ersi co(ponenti. >e relazioni solita(ente non :anno no(e. Benc:G non sia necessaF rioD nor(al(ente i co(ponenti co(unicano attra7erso interfacceD in (odo tale c:e possano essere sostituite senza ca(biare altri co(ponenti. Ad ese(pio:

::eJecutable;; '

::document;; /

::library;; $

Pa"ina 156

Bnified Process

&iagramma di &eplo1ment
Il dia"ra((a di /eplo3(ent (ostra l=:ard0are fisico su cui il siste(a soft0are 7err- ese"uito e co(e 2uesto & distribuito sull=:ard0are. $i sono due for(e di dia"ra((a di /eplo3(ent: ;or(a di descrittore E $ontiene nodi e relazioni tra nodi e co(ponenti. Bn nodo rappresenta un tipo d%:ard0are @co(e un P$AD (entre un co(ponente rappresenta un tipo di soft0are @co(e 5ordA ;or(a d%istanza E contiene istanze di nodi e relazioni tra istanze di nodi ed istanze di co(ponenti. Bn%istanza di nodo rappresenta uno specifico identificabile pezzo :ard0are @co(e il co(puter di AndreaAD (entre un%istanza di co(ponente rappresenta una specifica istanza di un tipo di soft0are @co(e una particolare copia di 5ord usata per scri7ereA. Se non si conoscono i detta"li di una speciF fica istanza D si puH usare un%istanza anoni(a. Bna pri(a 7ersione puH essere stata creata durante l%atti7it- di desi"n @7isto c:e in 2uella si fanno le scelte i(ple(entati7eAD (a in "enere il 7ero la7oro 7iene fatto durante 2uesta atti7it-. Per costruire il dia"ra((a di deplo3(entD nor(al(enteD si inizia dalla for(a di descrittoreD c:e 7err- 7ia 7ia rafF finata (an (ano c:e si conoscono i detta"li sul sito di installazione @arri7ando alla for(a d%istanzaA. I nodi 7en"ono rappresentati da cubi contenenti un no(e ed e7entual(ente uno stereotipo c:e ne inF dic:i il tipo @^^printer__D ^^S?> Ser7er__D ecc.A. +li stereotipi 2ui usati non sono standard e le loro definizioni de7ono essere specificati c:iara(ente @nel "lossarioA. >e relazioni possono indicare connessioni di rete o re(ote ed in 2uesto caso & obbli"atorio il no(e c:e indic:i il tipo di protocollo i(pie"ato. I nodi sono locazioni fisic:eD in cui 7en"ono inseriti i 7ari co(ponenti @ed & lK c:e 7en"ono ese"uitiA. Esistono due (odi per rappresentare il conteni(ento dei co(ponenti in un nodo: uno & usare una relazione di dipendenza da un nodo ai co(ponenti c:e lK risiedonoI la seconda & di (etteF re i co(ponenti all%interno del nodo. Ad ese(pio

Pa"ina 15!

Bnified Process *ppure

Il !rogramma 2o sistema3
$%& poco da dire ed & pure o77ioD (a & di estre(a i(portanza: & durante 2uesta atti7it- c:e i proF "ra((atori si (ettono all%operaD si decidono "li al"orit(iD e si costruisce il pro"ra((a @od il sisteF (aA 7ero e proprio.

Riepilogo
/urante 2uesta atti7it- 7iene "enerato il siste(a ese"uibileD si stabilisce do7e de7ono andare le 7arie parti e cosa e co(e i(ple(entare (aterial(ente @le ri":e di codiceA.

Riepilogo dei documenti prodotti


?uesta atti7it- produce i docu(enti c:e specificano la parte i(ple(entati7a di tutto il pro"etto: essi co(prendono:

Piano d%inte"razione /ia"ra((a dei co(ponenti /ia"ra((a di /eplo3(ent Il pro"ra((a ?ualsiasi altro docu(ento c:e il pro"ra((atore ritiene i(portante @docu(entazione tecnicaD scelte i(ple(entati7eD listati di codice co((entatoD docu(entazione internaD ecc.A anuale dell%utente e docu(entazione a""iunti7a necessaria per il cliente.

5est
>%atti7it- di test & una parte (olto i(portante durante lo Bnified ProcessD infatti & co(presa in 2uasi tutte le fasi. >o Scopo & 2uello di pianificare i test per o"ni iterazione. In particolare biso"na realizF Pa"ina 151

Bnified Process zare:


t t

Test di inte"razione per o"ni build Test di siste(a alla fine dell=iterazione

Biso"na dun2ue pro"ettare e i(ple(entare i testD decidere i casi di test c:e specificano cosa pro7aF reD le procedure c:e specificano co(e ese"uire i testD i co(ponenti ese"uibili di test per l%auto(azioF neD ese"uire i test e "estirne i risultati. >a pianificazione dei test a77iene "i- durante la fase di InceptionD 2uando si definiscono a(biti del siste(a. /urante la fase di Elaboration si fanno i test sull%arc:itettura di base. /urante la fase di $onstructionD per o"ni step di i(ple(entazioneD si usano principal(ente test d%inte"razione e di siF ste(a per o"ni build. /urante la fase di Transition si identificano i difetti da pri(o uso e si utilizzaF no i re"ression test. Pri(a di perderci definiti7a(enteD cerc:ia(o di (ettere ordine. *"ni tipo di test 7iene pianificatoD cio& 7iene stabilita la strate"ia "enerale e le risorse necessarieI la strate"ia "enerale indica 2uanti test de7ono essere auto(atici e 2uanti noD cosa pro7are ed in c:e (odo. /alla strate"ia "enerale discende il (odello del test: cio& non il cosa (a il co(e pro7are i sin"oli aspetti del pro"etto @co(ponentiD +BID anuale BtenteD ecc.AI il (odello descri7e per linee "enerali i casi di testD le procedure ed i co(ponenti. O i(portante in 2uesta fase @ad o"ni iterazioneA far e7ol7ere il (odello ri(uo7endo i casi obsoletiD raffinandone altri ed a""iun"endone nuo7i. Bna 7olta stabilito il (odello si passa alla fase di pro"ettazione dei testD cio& si entra nello specifico per definire i casi di test per o"ni buildD strutturare le procedure e definire i test d%inte"razione @inteF razione fra i co(ponentiA e di siste(a @pro7ano il siste(a sotto di7erse confi"urazioniD caricoD nuF (ero di attoriD "randezza del databaseD ecc.A. Bn caso di test specifica un (odo per pro7are il siste(aD cio& cosa pro7are @insie(e di re2uisitiAD con 2uali input e con 2uali risultati attesiD sotto 2uali condizioni pro7are. Il test de7e essere possibile e non troppo costoso. I casi di test possono 7erificare casi d=uso o scenari @co(porta(ento osser7aF bileD blacC boVA e realizzazioni di casi d=uso @interazioni fra co(ponentiD 0:ite boVA. Per o"ni caso di test biso"na stabilire i suoi scenari @cio& le 7ariazioni di input ed outputA. Bna cosa se(plice & usare una (atrice: sulle ri":e si (ettono i casi di test e sulle colonne si (ettono i 7alori di input ed output aspettati per o"ni scenario. Bna procedura di test specifica co(e ese"uire i casi di test o loro partiD se de7ono essere s7olti autoF (atica(ente o (anual(ente. *"ni procedura do7rebbe testare un solo sottosiste(a. /alle procedure discendono le i(ple(entazioni dei testD cio& la definizione dei co(ponenti da reaF lizzare o (ediante pro"ra((azione specifica o tra(ite re"istrazioni delle azioni. I co(ponenti di test non sono altro c:e le procedure di test auto(atizzateD solita(ente scritte con un lin"ua""io di pro"ra((azioneD o re"istrate (ediante altri stru(enti auto(atici. Bna 7olta c:e i test sono stati preparatiD sono state asse"nate le risorse e i tool auto(atici sono funF zionanti & "iunto il (o(ento di ese"uirli: se"uendo le linee "uida del (odello e delle procedureD si pro7ano le 7arie funzionalit- del siste(a. I sin"oli co(ponenti 7en"ono testati secondo i (etodi e le procedure stabiliteI dato c:e i co(ponenF ti de7ono la7orare tra di loro si puH cercare di 7edere se a fronte di certi input danno i dati correttiI per far 2uesto si costruiscono classi fittizie c:e danno al co(ponente l%input e prendono dal co(poF nente l%output.

Pa"ina 15#

Bnified Process ?uando i 7ari co(ponenti sono pronti si ese"uono i test d%inte"razioneD cio& si 7ede se i co(ponenti la7orano da77ero tra di loro @se i co(ponenti sono correttiD (a nell%insie(e non funzionaD si"nifica c:e 2ualc:e co(ponente non d- i risultati c:e si aspetta un altro co(ponenteA. ?uando una build & pronta e tutti i test @co(presi 2uelli d%inte"razioneA sono passatiD & "iunto il (oF (ento dei test di siste(a c:e pre7edono test di installazione presso il clienteD test di confi"urazione @ad ese(pio confi"urazioni di reteAD test ne"ati7i @c:e (irano a fare andare in errore il siste(aD per 7ederne le debolezzeAD test di stress @c:e fanno la7orare il siste(a con risorse insufficientiA. I 7ari risultati 7en"ono poi confrontatiD si cercano "li erroriD si riportano "li errori al tea( di s7ilupF po c:e do7r- corre""erli @e 2uesto puH andare ad influire su tutte le atti7it-A. .or(al(ente a fine di o"ni ciclo si tirano le so((e e si cercano di 7edere 2uanti e 2uali sono stati "li errori piJ co(uni in (odo da e7itare di ripeterli successi7a(ente. .ota (olto i(portante @anc:e se "i- dettaA: l%atti7it- di test de7e essere s7olta in parallelo alle altre atti7it-I tutta7ia tutte le atti7it- de7ono dipendere da essa: seD ad ese(pioD l%arc:itettura non passa il testD allora & inutile prose"uire con le altre atti7it- c:e dipendono da essaD (a biso"ner- pri(a corF re""ere e ritestare l%arc:itettura.

ifetti dello 9nified Process


Abbia(o 7isto lo Bnified Process e co(e esso la7oraD osser7andone i 7anta""i. cess presenta anc:e dei difetti. a lo Bnified ProF

Bn paio di difetti c:e si possono notare sono do7uti alle atti7it-: esso presuppone c:e i re2uisiti siaF no espressi in lin"ua""io naturale ed & co(pito del pro"ettista tradurli in casi d%usoI 2uesto non & se(pre 7ero: esistono tutta una serie di proble(i c:e :anno una descrizione dei re2uisiti estre(aF (ente for(ale ed & difficile passare da essi a casi d%uso. Inoltre lo Bnified Process di standard preF 7ede c:e lo stesso tea( si occupi di analisiD pro"etto ed i(ple(entazioneI di7ersificare il tea( puH portare a rallenta(enti. *ltre a ciH alcuni dei "randi 7anta""i dello Bnified Process sono anc:e suoi "randi s7anta""i:
|

iterati7o ed incre(entale: 2uesto fa sK c:e il prodotto co(pleto potrebbe ric:iedere lun":i te(pi per essere pronto od adiritturaD se non si fa attenzioneD non finire (ai @tutta7ia i sin"oli incre(enF ti 7en"ono pianificatiA. $ertoD 2uesto siste(a per(ette di costruire applicazioni Msu (isuraN e di rilasciare il prodotto con (inori difetti @in 2uanto le funzionalit- 7en"ono inte"rate (an (anoA. centrato sull%arc:itettura: benc:G 2uesto per(etta di creare un siste(a c:e la7ori in (aniera e"reF "ia sull%arc:itetturaD se si ci accor"e c:e l%arc:itettura ideata non era corretta @ad ese(pio si & penF sato ad un%arc:itettura clientFser7er (entre si 7ede piJ tardi c:e era (e"lio una distribuitaAD allora si & costretti a "ettare 7ia co(pleta(ente tutto il la7oro di pro"ettazione ed i(ple(entazione ed in buona parte anc:e 2uello di analisi.

Per o77iare a 2uesti difetti & necessaria una forte di(estic:ezza e preparazione nella costruzione di soft0are con 2uesto approccio e preparare buone procedure di test c:e coin7ol"ono anc:e l%arc:itetF turaD i (anuali ed i docu(enti da produrreD ecc. >%ulti(o MdifettoND se cosK si puH direD & c:e lo Bnified Process si appo""ia ad B >D 2uesto fa si c:e i siste(i "randi sono estre(a(ente difficili da realizzare e (antenere ed i dia"ra((i B > non aiuF tano di certo alla co(prensione @7en"ono ad occupare pa"ine e pa"ine con riferi(enti incrociati 7eF ra(ente terrificantiA.

Pa"ina 16)

"!!$N&ICI

Pa"ina 161

Refactorin"

Re actoring
Il Refactorin" & un concetto Mnuo7oN con il 2uale si prende un codice e 7i si apportano particolari (odific:e. Esso cerca di:

Indi7iduare le parti di codice co(uni a di7ersi (etodi o classi anipolare il codice per (ini(izzare duplicazioni e (assi(izzare riuso antenere la se(antica delle co(putazioni /efininire le operazioni (ediante precondizioni e postcondizioni >asciare la possibilit- di co(porre refactorin" co(plessi partendo da 2uelli se(plici $reare entit- di pro"ra((a $ancellare entit- di pro"ra((a $a(biare entit- di pro"ra((a uo7ere 7ariabili (e(bro

I Refactorin" se(plici si basano su:


Creare entit& di programma


$reare nuo7e entit- di pro"ra((a si"nifica:

$reare una classe 7uota $reare una nuo7a 7ariabile (e(bro $reare una funzione (e(bro

Cancellare entit& di programma


$ancellare entit- di pro"ra((a si"inifca:

$ancellare classi non referenziate $ancellare 7ariabili non referenziate $ancellare insie(i di funzioni (e(bro

Cambiare entit& di programma


$a(biare entit- di pro"ra((a si"nifica:

$a(biare il no(e di una classe $a(biare il no(e di una 7ariabile $a(biare il no(e di una funzione (e(bro $a(biare il tipo di un insie(e di 7ariabili o funzioni $a(biare il (etodo di accesso A""iun"ere ar"o(enti alle funzioni To"liere ar"o(enti alle funzioni Riordinare "li ar"o(enti delle funzioni Pa"ina 16,

Refactorin"

A""iun"ere il corpo di una funzione $ancellare il corpo di una funzione $on7ertire un riferi(ento ad una 7ariabile in una c:ia(ata di funzione Sostituire una se2uenza di istruzioni con una c:ia(ata di funzione Espandere una funzione Min lineaN in una c:ia(ata di funzione $a(biare la superclasse di una classe

Muo$ere $ariabili membro


uo7ere 7ariabili (e(bro si"nifica:

Spostare una 7ariabile (e(bro da una sottoclasse in una superclasse Spostare una 7ariabile (e(bro da una superclasse in una sottoclasse

Composizioni primiti$e
$o(binando le Mtecnic:eN sopra riportate si possono creare Refactorin" (olto co(plessi. Alcune co(posizioni sono:

Astrarre un accesso ad una 7ariabile (e(bro $on7ertire un se"(ento di codice in una funzione Spostare una classe da un pacCa"e ad un altro

Propriet& da non $iolare


Superclassi unic:e .o(i di classe distinti .o(i dei (e(bri distinti >e 7ariabili (e(bro ereditate @In:eritedA non de7ono essere ridefinite >a ridefinizione delle funzioni (e(bre de7ono essere co(patibili con la fir(a ori"inaria +li asse"na(enti de7ono essere T3peFSafe @cio& non ci possono essere asse"na(enti di tipo erF ratiA E2ui7alenza della se(antica delle operazioni e dei riferi(enti

.sempio di refactoring complesso


Prendia(o 2ueste 2uattro classi: class Client1 { SpecServer1 serv; SpecServer1 getServer1() { ... } void exploitService() { serv = getServer1(); Pa"ina 164

Refactorin" Object result = serv.service1(this); code using result } } class Client! { SpecServer! serv; SpecServer! getServer!() { ... } void exploitService() { serv = getServer!(); Object result = serv.service!(this); code using result } } class SpecServer1 { void service1(Object re"uester) { ... } } class SpecServer! { void service!(Object re"uester) { ... } } # tras$or%ia%ole& abstract class 'bstractClient { Server serv; abstract Server getServer(); void exploitService() { serv = getServer(); Object result = serv.service(this); speci$ic'ction(result); } abstract void speci$ic'ction(Object arg); }

Pa"ina 165

Refactorin" class Client1 extends 'bstractClient { Server getServer() { code $ro% getServer1(); } void speci$ic'ction(Object arg) { previous code using result } } class Client! extends 'bstractClient { Server getServer() { code $ro% getServer!(); } void speci$ic'ction(Object arg) { previous code using result } } inter$ace Server { void service(Object re"uester()); } class SpecServer1 i%ple%ents Server { void service(Object re"uester) { service1(re"uester); } void service1(Object re"uester) { ... } } class SpecServer! i%ple%ents Server { void service(Object re"uester) { service!(re"uester); } void service!(Object re"uester) { ... } }

Pa"ina 166

Refactorin" Abbia(o applicato i se"uenti refactorin":


Trasfor(ato del codice in un (etodo @codice estratto specificAction@ob<ect ar"AA Spostato un (etodo @eVploitSer7ice@A spostato alla superclasseA rino(inato un (etodo @"etSer7er1@A e "etSer7er2@A rino(inati in "etSer7er@AA Rino(inate 7ariabili d%istanza e spostate @ser71 e ser72 spostati in Abstract$lient co(e ser7A

*pecifica degli effetti del refactoring


/ato c:e le re"ole di riscrittura definiscono "li effetti definiti diretta(ente sul codiceD c%& biso"no di (antenere coerente il (odello di desi"n con le trasfor(azioni del codice. Per far ciH biso"na anF dare a ritroso su trasfor(are tutti i dia"ra((i B >. Ecco un piccolo sc:e(a c:e indica per alcuni refactorin" alcuni dia"ra((i c:e 7anno ritoccati

Refactoring Add $lass Re(o7e $lass Rena(e $lass Re(o7e et:od Add Para(eter to et:od EVtract $ode As et:od Pus: BpQ/o0n et:od

Affected 'iagrams $lass $lassD Se2uence $lass Se2uence $lassD Se2uenceD State $lass $lassD Se2uenceD State $lassD Se2uenceD State

Creation@'eletion State State

Ecco co(e nell%ese(pio sopra ca(biano i dia"ra((i @pa"ina successi7aA.

/ia"ra((a delle classi: Pa"ina 16!

Refactorin"

$lient1 ser7 : SpecSer7er1 eVploitSer7ice@A : 7oid "etSer7er1@A : SpecSer7er1 $lient1 o0nedEle(ent eVploitSer7ice

$lient1 ser7 : SpecSer7er1 eVploitSer7ice@A : 7oid "etSer7er1@A : SpecSer7er1 specificAction@*b<ect ar"A : 7oid $lient1 o0nedEle(ent o0nedEle(ent specificAction eVploitSer7ice para(eter *b<ect

/ia"ra((a di se2uenza:

:$lient1

ser7 : SpecSer7er1

:$lient1

ser7 : SpecSer7er1

eVploitSer7ice@A ser7 U "etSer7er1@A

eVploitSer7ice@A

ser7 U "etSer7er1@A result U ser7ice1@A specificAction@resultA

result U ser7ice1@A

Pa"ina 161

Refactorin" /ia"ra((a di collaborazione:

:$lient1 first eVploitSer7ice send first sub "etSer7er1 neVt ser7ice1

:$lient1 first eVploitSer7ice sub send specificAction first sub "etSer7er1 neVt ser7ice1 neVt

Per concludere ecco alcune note sull%estrazione di codice co(e (etodo: Il codice estratto de7e costituire un bloccoD de7e fare riferi(ento a ca(pi della classe o a 7ariabili dic:iarate local(ente al blocco. .el caso in cui faccia uso di 7ariabili esterne al bloccoD 2ueste non de7ono essere (odificate nel codiceD e di7entano para(etri passati al (etodo. Bre7e(ente con lo sc:e(a:

eVploitSer7ice

call line for specificAction

eVploitSer7ice

code usin" result

result

specificAction

*b<ect

code usin" result

result

Pa"ina 16#

Biblio"rafia

4i+liogra ia
>eszeC A. aciaszecC E S7iluppo di Siste(i Infor(ati7i con B > @Analisi dei re2uisiti e pro"etto di siste(aA E AssisonF5esle3 Ro"er S. Press(an E Principi di In"e"neria del Soft0are @Terza EdizioneA E c +ra0 8ill Pi( Arlo0D Ila .eustadt E B > and Bnified Process @Practical *b<ectF*riented Analis3s and /esiF "nA E Booc: Pacobson Ru(bau": @Edizione italiana a cura della c +ra0 8illA >ucidi del corso di In"e"neria del Soft0are 1 tenuto dal professor Bottoni Vari siti Internet.

Pa"ina 1!1