UML

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.

 

Modello di sviluppo

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.

 

Diagrammi

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

 

Reverse engineering

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.

Fasi di un progetto

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....

 

Lo studio di fattibilità

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.

 

Analisi e raccolta dei requisiti

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.

 

La fase di progettazione

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.

 

 

La fase di implementazione e test

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.

La fase di deploy

 

La fase di mantenimento

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à.