UML e’ il
linguaggio di modellazione(rappresentazioni) universale che permette di
definire e studiare l’applicazione prima
dell’effettiva implementazione.Il suo punto di forza e’ l’indipendenza dalla
metodologia,nel senso che fornisce una serie di diagrammi standard con cui
definire i modelli e rappresentare le soluzioni.
La necessità di
un Modello per lo sviluppo del software e’ dettata principalmente per evitare
uno sviluppo in maniera spontanea e caotica
che causa problemi di qualità
dei prodotti.dei tempi di rilascio,di aggiornamento e dei costi.
Piu’ precisamente
un modello di produzione consente di pianificare le attività ,spostare
strategicamente le risorse,prevedere a priori tempi e costi .
In piu’ mostrare
un modello al cliente consente di centrare i requisiti e permette allo
sviluppatore di implementare correttamente quanto emerso nella fase di analisi.
Uml prevede
dodici tipi di diagrammi divisi in 3 categorie.
Structural:usati per definire la struttura di cio’ che si
sta modellando
Behaviour:per descrivere gli aspetti dinamici del sistema.
Model Management:per organizzare e
gestire i vari moduli della soluzione.
I Class Diagram appartengo ai
diagrammi di struttura e sono alla base di qualsiasi modellazione object-oriented.
Hanno lo scopo di
rappresentare la struttura statica del sistema.
Un Class Diagram
è una collezione di classi e interfacce tra le quali sono stabilite varie
tipologie di
relazione(collaborazioni,associazioni,ereditarietà,aggregrazioni,dipendenze).
Per ciascuna
classe si definisce uno stato(proprietà) e si espongo una serie di
comportamenti(metodi).Le classi vengono raggruppate all’interno di
package(java) o namespace(c#).
Poichè le classi
sono tra loro relazionate,esistono delle notazioni che permettono di
rappresentare le relazioni.
Associazione
Molteplicità:per esmpio per indicare una relazione 1:N
Direzione:per identificare l’oggetto contenitore e
contenuto
Aggregazione e Composizione:per esprimere che una classe e’ formata
da oggetti di un’ altra classe
Ereditarietà
Dipendenza:un elemento richiede la presenza di altre classi
Con un modello
soi’ definito e’ possibile rappresentare qualsiasi struttura dati relazionale.L’utilità
del modello UML permette di ottenere,partendo dal file XMI(file xml dei
progetti),la generazione automatica del database cosi rappresentato.
L’obiettivo di
ogni progetto a partire dalla sua idea deve essere quello di identificare le varie fasi attraverso cui
procedere,reiterare il passaggio da una fase all’altra per limare le
imperfezioni,scovare bachi e agire di conseguenza.
Indubbiamente
ogni iterazione comporta un aumento dei costi,ma farlo correttamente farà
risparmiare tempo e denaro nelle successiv implementazioni e aggiornamenti.
Le fasi
sono:Studio di fattibilità,Analisi e raccolta dei requisti,Design....
In questa fase il
lavoro del P.M. e’ concentrato principalmente sullo studio di fattibilità del
progetto per effettuare una valutazione
preliminare dei costi e dei benefici,quali risorse finanziare e umane siano
necessarie per l’attuazione del progetto.
Ad esempio alcune
società beneficiano di software gestiti da società esterne in outsourcing.Questo perchè ,in alcuni
casi,l’avvio di un progetto potrebbe comportare una preparazione ed una
infrastruttura sottostante non disponibile o troppo costosa per essere
implementata in proprio.
Vision
Dalla studio di
Fattibilità vengono estratti elementi quali:
E’ dalla visione
di tale documentazione che si decide se portare avanti o meno il progetto.
Questa fase ha lo
scopo di esplorare il problema del cliente.
Si analizza il
dominio in cui l’applicazione opererà(l’ambiente e i vincoli di natura
tecnologica),si identificano i requisiti funzionali,gli obiettivi
dell’applicazione attraverso varie interazioni con il committente e si
stabiliscono le specifiche reali del software da produrre.
Alcuni elementi
gia’ sono stati trattati nella prima fase,ma qui e’ necessario un livello molto
piu’ profondo.
Durante l’analisi
e’ necessario porsi le seguenti domande:
In questa fase
viene prodotto XXXXXXXXX,il documento
che aiuta a descrivere in maniera chiara e precisa tutti i requisiti funzionali
e non funzionali del prodotto software:
Per ogni requisito funzionale e’ necessario
specificare:
I requisiti non funzionali possono essere
ad esempio le performance,laportabiità,la sicurezza,le norme sulla privacy,la
manutenibilità ecc..
Uso dell’Uml
Durante questa
fase ci si puo’ aiutare tramite l’uso di un linguaggio descrittivo per l’individuazione
degli attori e degli oggetti coinvolti nel sistema,le relazioni tra essi,le
modalità di utilizzo e il loro stato.
Permette di
rendere chiari gli obiettivi le fasi di implementazione le varie attività e le
interazione dei gruppi di lavoro.
In questa fase
viene prodotto il piano di test di sistema XXXXXXXXX
che descrive le modalità con cui, al termine dello sviluppo,si possa
verificare il sistema sviluppato rispetto ai requisiti fissati.
In questa fase
l’attenzione del P.M. si sposta sulla
definizione dell’architettura hardware e software del sistema.
E’ estremamente
importante distinguere la tipologia dell’applicativo da realizzare:
web
based,applicazioni desktop,applicativi mobili,....
Nel caso di
sviluppo di applicazioni desktop un’altra problematica da valutare è il sistema
operativo al quale e’ destinato il progetto.Questa indicazione determina uno
dei requisti non funzionali.
Questa attività
produce il documento di specifiche di progetto XXXXXXXXX nel quale la definizione dell’architettura software puo’
essere data in maniera rigorosa.
In questa fase il
P.M. si concentra sul coordinare le attività di sviluppo dei vari gruppi di
lavoro che realizzano i moduli funzionali attraverso il tipo di programmazione
scelto(oggetti,imperativo,funzionale..).
E’ necessario
decidere quali moduli sviluppare e vengono ripresi i requisiti funzionali delle
fasi precedenti e cisascuna viene tradotta in codice.
L’obiettivo e’
scomporre il macro-problema in piccoli sotto-problemi di minore complessità.
Ogno modulo viene
sviluppato singolarmente da una o piu’ risorse che provvede a produrre,oltre al
codice sorgente,tutta la documentazione interna ed esterna necessaria,i
commenti,le scelte tecniche e soprattutto i risultati dei test preliminari sul
codice sviluppato.
Al termine dello
sviluppo dei vari moduli,il P.M. esegue un test globale sul funzionamento del
sistema determinano gli interventi successivi,se necessario reiterando alcune
fasi del processo di sviluppo.
L’ultima fase e’
la piu’ dispendiosa in termini di budget,in quanto e’ stato calcolato che piu’
del 50% dei costi complessivi vengono spesi per correggere errori,bachi ecc..
La manutenzione
comporta la correzione degli errori che non erano stati scoperti nelle fasi
precedenti ma anche l’inserimento di nuovi requisiti funzionali.
Questa
tuttavia,non puo’ essere considerata l’ultima fase,visto che il modello a
spirale e’ un ciclo senza fine nel quale tutte queste fasi si ripetono a
seconda delle necessità.