30.05.2013 Views

Piano Di Qualifica - Find and develop open source software

Piano Di Qualifica - Find and develop open source software

Piano Di Qualifica - Find and develop open source software

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong><br />

30 marzo 2010<br />

Sommario<br />

Questo documento contiene il <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> del capitolato<br />

denominato SketchYourSite, commissionato dai prof. Vardanega e<br />

Conte in rappresentanza dell’azienda proponente Zucchetti S.P.A., da<br />

parte del gruppo “StormForge Labs”.<br />

Informazioni del documento<br />

Redazione M. Pegoraro, M. Broggio<br />

Approvazione D. Baccaglini<br />

Verifica M. Polato<br />

Stato Formale<br />

Uso Esterno<br />

Nome File piano di qualifica v5.0<br />

Versione 5.0<br />

<strong>Di</strong>stribuzione StormForge Labs<br />

Vardanega Tullio<br />

Conte Renato<br />

1


<strong>Di</strong>ario delle modifiche<br />

• v5.0 approvazione del documento da parte del responsabile (D. Baccaglini,<br />

29/03/10)<br />

• v4.2 veridica del documento (M. Polato, 16/03/10)<br />

• v4.1 correzione e sistemazione generale, aggiunta delle ultime Risorse<br />

Tecnologiche (M. Pegoraro, 16/03/10)<br />

• v4.0 approvazione da parte del responsabile (M. Broggio, 07/03/10)<br />

• v3.7 verifica del documento (D. Baccaglini, 07/03/10)<br />

• v3.4 integrazione dei contenuti in Metriche di Progetto (M. Pegoraro,<br />

06/03/10)<br />

• v3.2 integrazione dei contenuti in Tecniche e metodologie di verifica<br />

(M. Pegoraro, 05/03/10)<br />

• v3.1 riorganizzazione delle sezioni del documento e integrazione dei<br />

contenuti della sezione Tecniche e metodologie di verifica (M. Pegoraro,<br />

04/03/10)<br />

• v3.0 approvazione da parte del responsabile (M. Broggio, 18/02/10)<br />

• v2.4 integrazione della sezione Tracciamento e aggiornamento di Risorse<br />

Tecnologiche (M. Pegoraro, 19/02/2010)<br />

• v2.3 aggiunta della risorse Firebug e jQuery e ampliamento della sezione<br />

2.3.2 (M. Pegoraro, 18/02/2010)<br />

• v2.2 aggiunta della risorsa YASCA (M. Pegoraro, 16/02/2010)<br />

• v2.1 integrazione delle sezioni Risorse necessarie e disponibili (M. Pegoraro,<br />

05/02/2010)<br />

• v2.0 approvazione da parte del responsabile (D. Marcato, 22/01/2010)<br />

• v1.6 integrazione dei contenuti e correzione ortografica (M. Pegoraro,<br />

22/01/2010)<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 2/26


• v1.5 aggiunte sezioni 5. Pianificazione della validazione (M. Broggio,<br />

21/01/2010)<br />

• v1.3 aggiunte sezioni 4. Tecniche e metodologie di verifica (M. Broggio,<br />

21/01/2010)<br />

• v1.1 aggiunta sezione 3. Gestione Amministrativa della revisione (D.<br />

Calonego, 20/01/10)<br />

• v1.0 approvazione da parte del Responsabile (D. Marcato, 07/12/09)<br />

• v0.9 correzione errori ortografici e verifica (D. Baccaglini, 07/12/2009)<br />

• v0.3 correzione errori e sistemazione impaginazione (A. Trombetta,<br />

04/12/2009)<br />

• v0.1 prima stesura del documento (M. Pegoraro, 02/12/2009)<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 3/26


INDICE<br />

Indice<br />

1 Introduzione 6<br />

1.1 Scopo del documento . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.2 Scopo del prodotto . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.3 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.3.1 Normativi . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.3.2 Informativi . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.4 Glossario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2 Visione generale della strategia di verifica 8<br />

2.1 Organizzazione e responsabilità . . . . . . . . . . . . . . . . . 8<br />

2.2 Ticketing ed Automazione . . . . . . . . . . . . . . . . . . . . 8<br />

2.3 Pianificazione strategica e temporale delle attività di verifica . 8<br />

2.3.1 Fase di Analisi Preliminare . . . . . . . . . . . . . . . . 9<br />

2.3.2 Fase di Analisi e Progettazione . . . . . . . . . . . . . 9<br />

2.3.3 Fase di Realizzazione e Prototipazione . . . . . . . . . 10<br />

2.3.4 Fase di Verifica e Collaudo . . . . . . . . . . . . . . . . 11<br />

2.4 Risorse necessarie e disponibili . . . . . . . . . . . . . . . . . . 11<br />

2.4.1 Risorse Tecnologiche . . . . . . . . . . . . . . . . . . . 12<br />

2.4.2 Risorse Umane . . . . . . . . . . . . . . . . . . . . . . 14<br />

3 Gestione amministrativa della revisione 15<br />

3.1 Comunicazione della risoluzione delle anomalie . . . . . . . . . 15<br />

3.2 Trattamento delle discrepanze . . . . . . . . . . . . . . . . . . 15<br />

3.3 Procedure di controllo della qualità . . . . . . . . . . . . . . . 15<br />

4 Tecniche e metodologie di verifica 16<br />

4.1 Premessa: verifica non formale e formale . . . . . . . . . . . . 16<br />

4.2 Fase di Analisi Preliminare . . . . . . . . . . . . . . . . . . . . 16<br />

4.2.1 Verifica della Documentazione . . . . . . . . . . . . . . 16<br />

4.2.2 Verifica dei Requisiti . . . . . . . . . . . . . . . . . . . 17<br />

4.3 Fase di Analisi e Progettazione . . . . . . . . . . . . . . . . . 18<br />

4.3.1 Tracciamento . . . . . . . . . . . . . . . . . . . . . . . 18<br />

4.4 Fase di Realizzazione e Prototipazione . . . . . . . . . . . . . 19<br />

4.4.1 Analisi Statica . . . . . . . . . . . . . . . . . . . . . . 19<br />

4.4.2 Analisi <strong>Di</strong>namica . . . . . . . . . . . . . . . . . . . . . 20<br />

4.5 Fase di Verifica e Collaudo . . . . . . . . . . . . . . . . . . . . 21<br />

4.6 Verifica dei processi . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 4/26


INDICE<br />

5 Metriche di Progetto 23<br />

5.1 Metriche Gestionali . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

5.2 Metriche <strong>Di</strong>mensionali . . . . . . . . . . . . . . . . . . . . . . 23<br />

5.3 Metriche di Complessità . . . . . . . . . . . . . . . . . . . . . 24<br />

5.4 Metriche Chidamber-Kemerer . . . . . . . . . . . . . . . . . . 24<br />

6 Pianificazione della validazione 26<br />

6.1 Specifica della campagna di validazione . . . . . . . . . . . . . 26<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 5/26


1 Introduzione<br />

1.1 Scopo del documento<br />

Lo scopo di questo documento è gestire la qualità del prodotto pianific<strong>and</strong>one<br />

il processo, e accertare il raggiungimento dei requisiti decisi per la qualità.<br />

Questo deve assicurare che il prodotto e ogni processo siano conformi ai requisiti<br />

e ai piani di programma. Il piano di qualifica inoltre deve determinare<br />

in dettaglio i seguenti requisiti:<br />

• Funzionalità: Il prodotto dovrà soddisfare ogni specifica contenuta<br />

nel documento Analisi dei Requisiti.<br />

• Affidabilità: Il prodotto dovrà essere privo di errori grazie a controlli<br />

effettuati con vari strumenti di test.<br />

• Usabilità: L’utente finale del prodotto dovrà poter usare il prodotto in<br />

ogni sua funzionalità a prescindere dalle sue conoscenze informatiche.<br />

1.2 Scopo del prodotto<br />

L’applicativo SketchYourSite è concepito a partire da un prodotto già esistente,<br />

AjaxDraw, che propone creazione, manipolazione e salvataggio di<br />

immagini vettoriali tramite browser. SketchYourSite si propone di estendere<br />

AjaxDraw, aggiungendo funzionalità per la creazione vera e propria di pagine<br />

web, rendendolo a tutti gli effetti un disegnatore di siti web sfrutt<strong>and</strong>o le<br />

potenzialità del tag CANVAS di HTML5. Le tecnologie gestibili tramite il<br />

prodotto saranno HTML (versione 5), JavaScript e CSS. Funzioni avanzate<br />

saranno la possibilità di collegare varie pagine tra loro in modo da creare<br />

un proprio sito, il tutto gestito tramite un comodo e intuitivo schema grafico,<br />

e la compatibilità con Internet Explorer, browser molto diffuso ma senza<br />

supporto nativo del tag CANVAS. Il <strong>software</strong> verrà rilasciato con licenza<br />

GPL.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 6/26


1.3 Riferimenti<br />

1.3 Riferimenti<br />

1.3.1 Normativi<br />

• Apache License V2.0: http://www.apache.org/licenses/LICENSE-2.0<br />

• GPL: http://www.gnu.org/licenses/gpl.html<br />

1.3.2 Informativi<br />

• ISO/IEC 12207: st<strong>and</strong>ard comune per i Cicli di Vita del Software<br />

• ISO 9001-2000: descrive le terminologia e i principi essenziali dei sistemi<br />

di gestione qualità e della loro organizzazione<br />

• Slides e lezioni del corso di Ingegneria del Software, UniPD, A.A.<br />

2009/2010<br />

1.4 Glossario<br />

Per le spiegazioni sui termini tecnici, le abbreviazioni e gli acronimi usati<br />

nei documenti, si consulti il documento esterno denominato Glossario. Tali<br />

termini sono evidenziati mediante corsivo.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 7/26


2 Visione generale della strategia di verifica<br />

2.1 Organizzazione e responsabilità<br />

La strategia di verifica della StormForge Labs individua il preciso ruolo del<br />

Verificatore, colui che certifica la qualità e la conformità ai requisiti di ciò<br />

che viene prodotto. Si è determinata quindi una relazione gerarchica per le<br />

operazioni di verifica:<br />

• Verificatore: colui che, utilizz<strong>and</strong>o tecniche e strumenti preposti, esegue<br />

operativamente la verifica, notific<strong>and</strong>one i risultati al Responsabile<br />

mediante ticketing, al quale risponde anche del proprio operato.<br />

• Responsabile: prende nota dell’operato dei Verificatori, relaziona i<br />

passi della verifica al committente, comunica eventuali errori e problemi<br />

per la correzione e funge da controllore della qualità per ciò che concerne<br />

il processo di verifica.<br />

2.2 Ticketing ed Automazione<br />

Il sistema di ticketing scelto è quello fornito gratuitamente da SourceForge<br />

Trac. Attraverso questo strumento è possibile avere una gestione integrale<br />

e multifunzionale di tutte le varie fasi della verifica e della gestione di qualità.<br />

Qu<strong>and</strong>o il Verificatore riscontra un’anomalia, un problema o un bug nel<br />

materiale che sta analizz<strong>and</strong>o, apre un ticket nell’apposita sezione di SourceForge,<br />

descrivendo le problematiche riscontrate. Il ticket viene visionato<br />

dal Responsabile che poi l’assegna al membro opportuno per la soluzione.<br />

Nel ticket vengono segnati i vari sviluppi del problema fino alla chiusura che<br />

segna la soluzione del problema in coerenza con le norme qualitative decise.<br />

In ogni momento è consultabile lo storico dei ticket per avere una visione<br />

d’insieme per i problemi riscontrati, ordinati per priorità, tipologia, stato.<br />

2.3 Pianificazione strategica e temporale delle attività<br />

di verifica<br />

La strategia e il concetto di verifica sono singolarmente definiti per ogni fase<br />

dello sviluppo del progetto. <strong>Di</strong> seguito verranno illustrate per ogni singola<br />

fase in cui si renderà necessaria la verifica. Notare che di seguito viene presentata<br />

soltanto una visione a gr<strong>and</strong>i linee delle strategie di verifica per le<br />

fasi successive all’analisi: il documento è stato in seguito aggiornato, present<strong>and</strong>o<br />

in dettaglio le tecniche di verifica nella sezione Tecniche e metodologie<br />

di verifica, divise per fase di progetto.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 8/26


2.3 Pianificazione strategica e temporale delle attività di verifica<br />

2.3.1 Fase di Analisi Preliminare<br />

Qui ha luogo la verifica nel momento in cui gli Analisti producono un documento,<br />

sebbene non definitivo ma in forma consistente. Per consistente<br />

s’intende comprensivo di sufficienti contenuti da possedere un valore informativo<br />

intrinseco che gli conferisce qualità. Il Verificatore controlla che non<br />

vi siano errori ortografici, sintattici o di battitura, che non vi siano paragrafi<br />

incompleti e che il documento sia pienamente comprensibile. Terminato il<br />

controllo, il Verificatore provvederà a segnalare al Responsabile gli eventuali<br />

errori riscontrati tramite apposito ticket, senza apportare correzioni (poichè<br />

ciò esula dal suo ruolo).<br />

Quindi, le fasi attraversate da un documento sono:<br />

• Redazione: il documento viene scritto, anche parzialmente, dai redattori.<br />

• Verifica: il Verificatore controlla la qualità del documento come illustrato<br />

in questo stesso paragrafo.<br />

• Convalida: il Responsabile prende atto degli eventuali errori rinvenuti<br />

dal Verificatore con l’apertura da parte di quest’ultimo di un ticket<br />

apposito, e li comunica alla redazione per la correzione. In caso il<br />

documento superi la verifica con la chiusura del ticket, il Responsabile<br />

provvede a trasmettere il documento al Committente.<br />

L’identica procedura per la verifica della qualità dei documenti è utilizzata<br />

per la documentazione anche nelle fasi successive. Altri dettagli si possono<br />

trovare sulla sottosezione Ticketing ed Automazione di questo stesso documento.<br />

Per quanto concerne le tecniche di verifica dei requisiti determinati in fase<br />

di analisi, si veda la sottosezione Fase di Analisi Preliminare nella sezione<br />

Tecniche e metodologie di verifica in questo stesso documento.<br />

2.3.2 Fase di Analisi e Progettazione<br />

Nella progettazione vengono individuate due fasi, in ognuna delle quali si<br />

individuano diversi compiti per i Verificatori.<br />

• Progettazione architetturale: in questa fase il compito dei Verificatori<br />

è controllare le scelte architetturali dei Progettisti, assicur<strong>and</strong>osi<br />

che rispettino ogni requisito imposto dal Committente, nonchè qualsiasi<br />

requisito opzionale preventivato; fanno capo al Responsabile il quale<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 9/26


2.3 Pianificazione strategica e temporale delle attività di verifica<br />

comunicherà gli errori ai Progettisti. Ogni dettaglio architetturale deve<br />

seguire i pattern previsti. Per maggiori dettagli sull’architettura di alto<br />

livello si rim<strong>and</strong>a al documento Specifica Tecnica.<br />

• Progettazione in dettaglio: qui i Verificatori controllano che la progettazione<br />

continui seguendo le linee guida determinate durante la fase<br />

di progettazione architetturale.<br />

Con l’aiuto del documento centrale della fase di Progettazione, ovverosia la<br />

Specifica Tecnica e diagrammi allegati, si controllerà l’adesione del progetto<br />

al documento Norme di Progetto, agli st<strong>and</strong>ard scelti e ai seguenti aspetti<br />

critici:<br />

• Coerenza e correttezza delle scelte architetturali;<br />

• Completezza delle classi rispetto al tracciamento in entrambi i sensi.<br />

La relazione classi-funzionalità deve essere completa e biunivoca;<br />

• Significativa scelta dei nomi di classi e metodi;<br />

2.3.3 Fase di Realizzazione e Prototipazione<br />

Viene compiuto dai Verificatori un controllo della consistenza e della correttezza<br />

del codice scritto, nonchè della sua qualità. Ciò verrà effettuato in un<br />

lasso di tempo considerevole, durante l’intera realizzazione del progetto: ogni<br />

piccola parte indipendente dal contesto attraverserà una primaria verifica di<br />

correttezza, così da permettere modularità nella verifica del codice, e quindi<br />

efficienza e completezza della verifica.<br />

La verifica del codice prodotto in fase di realizzazione viene sottoposto a due<br />

tipi di verifica:<br />

• Verifica Statica: consiste nell’esaminare i listati preliminarmente e<br />

manualmente, senza eseguirne il codice, così da trovare velocemente<br />

gli errori sintattici più grossolani. Esistono diverse tecniche che fanno<br />

parte della verifica statica: Inspection e Walkthrough, ad esempio, due<br />

diversi procedimenti di debugging in assenza di esecuzione del codice; si<br />

può inoltre ricorrere all’uso di un analizzatore di codice, un <strong>software</strong> che<br />

analizza il sorgente senza eseguirlo (un esempio è Y.A.S.C.A., descritto<br />

in questo stesso documento nella sezione Risorse necessarie e disponibili,<br />

sottosezione Risorse Tecnologiche). La spiegazione della procedura<br />

dettagliata di verifica statica verrà data nella fase di Realizzazione in<br />

questo stesso documento.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 10/26


2.4 Risorse necessarie e disponibili<br />

• Verifica <strong>Di</strong>namica: queste tecniche, invece, prevedono la verifica tramite<br />

l’esecuzione del codice e attività di testing come Black Box (verifica<br />

che ogni funzione produca i risultati attesi in tutte le condizioni in cui<br />

essa possa eseguire, includendo test su valori tipici e valori statisticamente<br />

inattesi immessi da utenti senza conoscenza delle caratteristiche<br />

interne del prodotto) e White Box (verifica che il programma esegua<br />

correttamente in ogni condizione e che le condizioni logiche contenute<br />

eseguano correttamente in ogni possibile cammino previsto, in un<br />

utilizzo st<strong>and</strong>ard dell’applicativo). Altre tecniche verranno aggiunte e<br />

descritte in seguito, nella sezione apposita.<br />

2.3.4 Fase di Verifica e Collaudo<br />

In questa fase il gruppo dei Verificatori si propone di testare il prodotto completo,<br />

evidenzi<strong>and</strong>o errori di assemblaggio, carenze in efficienza, completezza,<br />

affidabilità e usabilità. Inoltre, verrà controllata la conformità del prodotto<br />

finale con tutti i requisiti concordati nella fase di analisi. Si distinguono due<br />

fasi:<br />

• Alpha Test: la fase preliminare di collaudo del prodotto all’interno<br />

del team, prima del rilascio ufficiale.<br />

• Beta Test: la fase successiva all’alpha test. Il prodotto viene rilasciato<br />

ad alcune persone, avvis<strong>and</strong>ole che il prodotto è in uno stato di beta<br />

test e che può presentare una qualità non ottimale e può necessitare<br />

di alcune correzioni. Gli utenti sono quindi tenuti a comunicare al<br />

gruppo gli eventuali malfunzionamenti. I Verificatori hanno il compito<br />

di notificare eventuali errori.<br />

Maggiori dettagli sulle strategie di controllo del codice in fase di Verifica<br />

verranno definite in seguito, poichè è su questa fase che vengono effettuati i<br />

controlli in profondità riguardanti la qualità del codice.<br />

2.4 Risorse necessarie e disponibili<br />

<strong>Di</strong> seguito l’elenco delle risorse utilizzate dal gruppo fino e non oltre la data<br />

dell’ultima versione di questo documento:<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 11/26


2.4 Risorse necessarie e disponibili<br />

2.4.1 Risorse Tecnologiche<br />

• Browser: Firefox v3.5, Opera v10.0, Chrome v3.0.197.11, Safari v4.0<br />

e Internet Explorer v8.0. Utilizzati per la documentazione e per il test<br />

del prodotto. I rispettivi siti di riferimento sono:<br />

http://www.mozilla-europe.org/it/firefox per Firefox,<br />

http://www.opera.com per Opera,<br />

http://www.google.com/chrome per Chrome,<br />

http://www.apple.com/it/safari per Safari,<br />

http://www.microsoft.com/italy/windows/internet-explorer per Internet<br />

Explorer.<br />

• Sourceforge: il sito http://www.<strong>source</strong>forge.net offre un hosting completo<br />

per un progetto, compreso un servizio di SVN repository essenziale<br />

per la gestione dei file. Oltre a questo, il servizio prevede un bug<br />

tracker interno, un efficiente sistema di ticketing per le notifiche e la<br />

gestione delle versioni per documenti e file.<br />

• Tortoise SVN 1.6.6: é parte di un set di strumenti per lo sviluppo. In<br />

particolare, Tortoise SVN é un client Subversion multipiattaforma rilasciato<br />

con licenza GPL. Il sito di riferimento è http://tortoisesvn.tigris.org.<br />

• L ATEX1.7.0: un potente editor testuale basato sul paradigma WYSIW-<br />

YG (What You See Is What You Get), da utilizzato per la redazione<br />

dei documenti. Il sito di riferimento è http://www.latex-project.org.<br />

• Texmaker 1.9.2: si tratta di un editor per linguaggio L ATEXrilasciato<br />

con licenza GPL Permette un’agile gestione del potente linguaggio di<br />

editing, automatizz<strong>and</strong>o numerose funzioni. Il sito di riferimento è<br />

http://www.xm1math.net/texmaker.<br />

• Gantt Project 2.0.10: un programma di gestione e creazione dei<br />

<strong>Di</strong>agrammi di Gantt, utilizzati per la pianificazione delle attività del<br />

progetto e per le varie mansioni dei componenti del team. Il sito di<br />

riferimento è http://ganttproject.biz.<br />

• ArgoUML 0.28.1: programma <strong>open</strong>-<strong>source</strong> di modellazione scritto<br />

in Java utile per realizzare grafici UML, quali use case, diagrammi<br />

classe, diagramma di sequenza e altri. Il sito di riferimento è<br />

http://argouml.tigris.org.<br />

• Eclipse 3.5.1 Galileo: ambiente di sviluppo <strong>open</strong>-<strong>source</strong> IDE multilinguaggio<br />

e multipiattaforma. Il sito di riferimento è http://eclipse.org.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 12/26


2.4 Risorse necessarie e disponibili<br />

È stato utilizzato con due dei suoi numerosi plug-in: Aptana (http://www.aptana.org),<br />

un supporto per la programmazione HTML, CSS e JavaScript, e Subversive<br />

(http://www.eclipse.org/subversive) per il supporto SVN integrato<br />

in Eclipse.<br />

• jQuery 1.4.1: sono potenti librerie di sviluppo JavaScript, mirate<br />

ad ottenere il massimo dell’efficienza in poche istruzioni, aument<strong>and</strong>o<br />

l’astrazione del linguaggio JavaScript a un livello più alto. Il sito di<br />

riferimento è http://jquery.com.<br />

• Apache 2: la più diffusa piattaforma server Web modulare <strong>open</strong> <strong>source</strong>.<br />

Offre numerose funzioni: data transport, internetworking, collegamento,<br />

il tutto integrato con un’elevata sicurezza. Il sito di riferimento<br />

è httpd://apache.org.<br />

• PHP 5.2: acronimo ricorsivo di PHP: Hypertext Preprocessor. Si tratta<br />

di un linguaggio di scripting lato server <strong>open</strong> <strong>source</strong>, con paradigma<br />

orientato agli oggetti e sintassi C-like debolmente tipizzata. Utilizzato<br />

principalmente per applicativi web lato server, puó essere usato anche<br />

per semplice scripting o applicazioni st<strong>and</strong>alone. Il sito di riferimento<br />

è http://php.net.com.<br />

• MySQL 5: consiste in un DBMS (Data Base Management System)<br />

relazionale multipiattaforma, rilasciato con licenza GPL. É interfacciabile<br />

con un numeroso insieme di linguaggi e copre attualmente gran<br />

parte della sintassi base dello st<strong>and</strong>ard SQL. Il sito di riferimento è<br />

http://mysql.it.<br />

• Firebug 1.5: Un fondamentale addon per il browser Firefox, consente<br />

il debug approfondito del codice HTML e JavaScript. Consente di modificare<br />

facilmente stile e layout della pagina, e di visionare le modifiche<br />

in tempo reale. Il sito di riferimento è http://getfirebug.com.<br />

• Y.A.S.C.A. 2.1: acronimo di Yet Another Source Code Analyzer, è un<br />

applicativo multilinguaggio estendibile che permette l’analisi statica del<br />

codice. Infatti ne viene eseguita una scansione con successivo report che<br />

mette in evidenza errori, istruzioni obsolete o deprecate, offuscamento<br />

del codice. Verrà usato in modo profondo durante la successiva fase di<br />

Verifica. Il sito di riferimento è http://yasca.org.<br />

• OxyProjectMetrix 1.8: è un tool per il calcolo delle metriche, utilizzabile<br />

anche per Javascript; infatti, ogni misuratore valido per il C<br />

si può applicare al Javascript con alcuni accorgimenti. In particolare,<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 13/26


2.4 Risorse necessarie e disponibili<br />

OxyProjectMetrics è stato utilizzato per le metriche dimensionali. Il sito<br />

di riferimento è http://www.techinceptions.com/CodeMetrics.html.<br />

• SourceMonitor 2.5.1: ulteriore tool per il calcolo delle metriche, utilizzabile<br />

anche per Javascript. Si è rilevato utile per il calcolo della complessità<br />

ciclomatica. Il sito di riferimento è http://www.campwoodsw.com/<strong>source</strong>monitor.ht<br />

• JsUnit 2.2: è un porting del celebre JUnit di Java, per Javascript.<br />

Consente di automatizzare la fase di analisi dinamica tramite la definizione<br />

di una batteria di test (su pagina HTML) eseguiti automaticamente<br />

dal <strong>software</strong> stesso. Il sito di riferimento è http://www.jsunit.net.<br />

2.4.2 Risorse Umane<br />

Ogni persona collaborante al progetto e interagente con i suoi processi è<br />

considerata una risorsa umana. Ogni risorsa umana deve essere inquadrata<br />

e identificata in un ruolo ben preciso. Attualmente, il team di sviluppo<br />

presenta la seguente suddivisione di ruoli per la fase di Analisi Preliminare:<br />

• Responsabile: ha la responsabilità decisionale nel progetto. Visiona il<br />

ticket degli errori trovati dai Verificatori, e fa sì che chi di dovere li corregga.<br />

Comunica con il committente e consegna allo stesso i documenti<br />

prodotti.<br />

• Amministratore: ha funzione di controllo dei processi nel progetto.<br />

• Analista: elenca i requisiti del progetto, valuta eventuali requisiti<br />

opzionali e/o desiderabili da essere inclusi nel progetto.<br />

• Progettista: determina l’architettura del prodotto e stende le linee<br />

guida che dovranno successivamente essere seguite dal programmatore.<br />

• Verificatore: verifica che i documenti siano corretti, chiari e completi.<br />

Verifica che il prodotto sia corrispondente ai requisiti, privo di errori,<br />

efficiente e usabile.<br />

• Betatester: interviene nell’ultima fase del collaudo. Rappresenta un<br />

campione dell’utilizzatore finale al quale viene sottoposto il prodotto<br />

da testare: errori e malfunzionamenti verranno segnalati e conseguentemente<br />

eliminati.<br />

Per maggiori informazioni sull’organizzazione e divisione dei ruoli per il<br />

gruppo StormForge Labs si rim<strong>and</strong>a al documento <strong>Piano</strong> di Progetto.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 14/26


3 Gestione amministrativa della revisione<br />

3.1 Comunicazione della risoluzione delle anomalie<br />

Il Verificatore ha l’onere di comunicare al Responsabile le eventuali anomalie<br />

riscontrate in fase di correzione. La notifica avviene tramite apertura di<br />

un ticket interno visionato dal Responsabile, il quale poi lo assegna ai vari<br />

componenti del gruppo a seconda del ruolo più adatto per l’analisi e l’eventuale<br />

soluzione del problema sollevato. Una volta corrette tutte le anomalie<br />

nel prodotto dai componenti designati dal Responsabile il ticket relativo al<br />

materiale revisionato viene chiuso. Il Responsabile quindi prende atto della<br />

correzione avvenuta e convalida il prodotto.<br />

3.2 Trattamento delle discrepanze<br />

Individuata una discrepanza il Verificatore apre un ticket interno, il quale<br />

viene gestito dal Responsabile in modo analogo alla risoluzione delle anomalie.<br />

3.3 Procedure di controllo della qualità<br />

Effettuato un controllo di qualità coordinato dagli Amministratori ed eseguito<br />

dai Verificatori, viene redatto un documento con la vertenza del test, la<br />

procedura impiegata per la verifica, e il risultato di quest’ultima con specifica<br />

di congruenza con i criteri di qualità stabiliti.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 15/26


4 Tecniche e metodologie di verifica<br />

4.1 Premessa: verifica non formale e formale<br />

Ogni tecnica di verifica descritta in questo documento è applicata a prodotti<br />

e processi del progetto SyS. Tuttavia, vi è una distinzione tra procedimenti<br />

di verifica non formali e formali.<br />

• Non formale: i risultati della verifica hanno la funzione di ottenere un<br />

risultato privo di errori, anomalie od omissioni, dirigendo chi crea il<br />

prodotto verificato a un risultato migliore. Tuttavia, la verifica rimane<br />

interna, non venendo documentata né venendone riportati i risultati;<br />

non è obbligatoria la pubblicazione in documento.<br />

• Formale: la verifica eredita tutte le funzioni della verifica non formale,<br />

assieme con la nuova caratteristica di essere usata per dimostrare<br />

la qualità del lavoro svolto a committenti e proponenti di progetto. I<br />

risultati di questo tipo di verifica sono pubblicati su un documento correlato<br />

con la natura della verifica stessa, e possono essere visionati da<br />

chi chiunque sia nella lista di distribuzione. Le tecniche di verifica formali<br />

sono il tracciamento diretto e inverso, tutte le metriche applicate<br />

alla verifica, alcuni dei test più importanti della fase di Realizzazione e<br />

Prototipazione, alpha-test e beta-test; rientrano nella categoria di verifica<br />

formale anche gli incontri con il proponente in cui si presentano i<br />

prototipi previsti dal ciclo di vita scelto, poichè consistono in attività<br />

di verifica vere e proprie.<br />

4.2 Fase di Analisi Preliminare<br />

4.2.1 Verifica della Documentazione<br />

I documenti prodotti dovranno seguire il seguente iter di verifica, con successiva<br />

segnalazione degli errori eseguita come sopra spiegato.<br />

• Verifica tipografica: tramite lettura e/o controllo ortografico <strong>and</strong>ranno<br />

identificati gli errori di battitura, correggendoli. Rientra qui la<br />

correzione degli accenti e interpunzione varia.<br />

• Verifica della sintassi: tramite lettura e/o controllo sintattico automatico<br />

si correggeranno le sviste sulla costruzione delle frasi, rendendole<br />

corrette e scorrevoli.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 16/26


4.2 Fase di Analisi Preliminare<br />

• Verifica dell’impaginazione: in questa fase si controllerà che la struttura<br />

del documento stessa sia corretta: indentazione, capoversi, struttura<br />

dell’indice, struttura di titoli e sottotitoli, formato, dimensione e<br />

allineamento delle immagini e di rispettive didascalie, numerazione di<br />

pagina, header e footer di pagina.<br />

• Verifica della consistenza logica: si tratta del controllo sui concetti<br />

espressi dalle frasi, che devono essere complete, non prolisse ed avere<br />

un buon contenuto informativo. I contenuti devono ricadere nelle giuste<br />

sezioni e sottosezioni.<br />

• Verifica di struttura e contenuto: in questa ultima fase il controllo è sui<br />

contenuti effettivi del documento, i quali devono ricalcare la struttura<br />

definita per il documento stesso. Si valuta qui il valore informativo<br />

dello scritto: esso deve adempire alle aspettative e agli scopi previsti<br />

per il documento stesso.<br />

4.2.2 Verifica dei Requisiti<br />

È fondamentale eseguire un’accurata e corretta analisi dei requisiti iniziali<br />

in quanto lo svolgimento di essa in maniera superficiale o errata potrebbe<br />

portare ad un risultato che non soddisfa le richieste e quindi al fallimento<br />

del progetto: è provato che la riuscita o il fallimento di un progetto dipen-<br />

dono in larga parte dalla qualità dell’Analisi dei Requisiti.<br />

È importante<br />

quindi studiare a fondo le richieste presentate nel capitolato d’appalto e successivamente<br />

effettuare una scrupolosa e minuziosa verifica di ciò che si è<br />

estrapolato. Si ricollega anche a questa parte la verifica dell’usabilità del<br />

prodotto e della sua efficienza, i cui test avvengono in fase di Collaudo e<br />

che devono essere entrambe perfettamente in linea con i requisiti tracciati<br />

precedentemente dagli Analisti.<br />

Questi i controlli effettuati sui requisiti derivati dalla fase di Analisi (contenuti<br />

nel documento Analisi dei Requisiti):<br />

• Chiarezza formale, per evitare le ambiguità;<br />

• Indipendenza dei requisiti, per evitare le sovrapposizioni e le dipendenze<br />

tra essi;<br />

• Univocità dei requisiti;<br />

• Eliminazione dei requisiti resi obsoleti dalle scelte in fase di Progettazione;<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 17/26


4.3 Fase di Analisi e Progettazione<br />

• Corretta classificazione dei requisiti (progettuali, funzionali, prestazionali,<br />

di vincolo o di qualità, e tra questi la suddivisione in obbligatori,<br />

opzionali o desiderabili).<br />

4.3 Fase di Analisi e Progettazione<br />

Questa verifica viene effettuata controll<strong>and</strong>o il rispetto delle norme di progetto<br />

stabilite e l’aderenza allo st<strong>and</strong>ard UML adottato (le versione 2.0). In<br />

fase di Progettazione architetturale vanno verificate:<br />

• Correttezza delle associazioni;<br />

• Correttezza della cardinalità delle associazioni stesse;<br />

• Adeguatezza delle scelte architetturali generali in base ai requisiti;<br />

• Completezza delle classi in rispetto dei requisiti corrispondenti;<br />

• Significativa scelta dei nomi delle classi.<br />

E in fase di Progettazione in dettaglio:<br />

• Completezza dei singoli componenti in base alle scelte architetturali<br />

generali;<br />

• Significativa scelta dei nomi delle componenti.<br />

4.3.1 Tracciamento<br />

Il tracciamento consiste nello stendere una tabella dove ogni singolo componente<br />

architetturale del progetto viene relazionato con il corrispettivo/i<br />

requisito/i previsto nella fase di Analisi dei Requisiti, nonché ogni requisito<br />

opzionale successivamente aggiunto, che é/sono stato/i da lui soddisfatto/i.<br />

Grazie alla tecnica del tracciamento risulta immediato avere una visione dell’adempimento<br />

dei requisiti stabiliti, in quanto ha il fine di mostrare il collegamento<br />

tra ciò che viene prodotto durante i vari processi e i requisiti descritti<br />

dal capitolato d’appalto. Per il ciclo di vita da noi scelto è previsto un tracciamento<br />

in avanti per controllare che le relazioni tra gli ingressi e le uscite di<br />

ogni fase siano corrette.<br />

È previsto anche un tracciamento in senso inverso<br />

per assicurare che il risultato soddisfi effettivamente le richieste iniziali.<br />

Le risultanze del tracciamento possono essere consultate nel documento Specifica<br />

Tecnica.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 18/26


4.4 Fase di Realizzazione e Prototipazione<br />

4.4 Fase di Realizzazione e Prototipazione<br />

Le tecniche di verifica sotto descritte avranno inizio a tempo inoltrato in<br />

fase di Realizzazione, per avere il loro culmine nell’ultima fase, di Verifica e<br />

Collaudo.<br />

4.4.1 Analisi Statica<br />

Come già specificati in precedenza, l’Analisi Statica consiste in attività di<br />

verifica del codice effettuate senza l’esecuzione dello stesso, quindi ad un<br />

livello più alto ed esterno rispetto all’opposta Analisi <strong>Di</strong>namica.<br />

Gli obiettivi di questo tipo di verifica sono:<br />

• Facilità di lettura e comprensibilità del codice;<br />

• Manutenibilità del codice (si deve rendere facilmente correggibile, collaudabile<br />

ed esp<strong>and</strong>ibile);<br />

• Riusabilità del codice;<br />

Le tecniche di Analisi Statica utilizzate per questo progetto sono:<br />

• Tutte le tecniche di verifica descritte prima di questa sezione (che ovviamente<br />

ricadono nella definizione data di Analisi Statica), compresi<br />

gli incontri con il proponente.<br />

• Revisioni: le periodiche revisioni del progetto con presentazione dello<br />

stato d’avanzamento dei lavori presso i committenti possiedono tutte<br />

le caratteristiche della verifica statica, per cui ricadono sotto questa<br />

categoria.<br />

• Walkthrough: consiste nella lettura critica del codice ad ampio spettro,<br />

senza presupposti iniziali. Si simulano diverse esecuzioni del codice<br />

verific<strong>and</strong>one il buon fine. Questa tecnica di verifica verrà applicata<br />

sulle classi più importanti, a causa della sua onerosità.<br />

• Inspection: contrariamente alla regola precedente, è una tecnica di lettura<br />

mirata, con lo scopo di individuare errori critici frequenti. Alla<br />

lettura viene controllato il codice tenendo conto della seguente lista di<br />

errori da individuare:<br />

– Segmentation fault sulla lettura degli array;<br />

– Corretto uso della clausola break del costrutto switch;<br />

– Corretto uso della clausola default del costrutto switch;<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 19/26


4.4 Fase di Realizzazione e Prototipazione<br />

– Corretto incremento o decremento delle variabili di controllo dei<br />

cicli;<br />

– Corretto uso degli operatori == e =;<br />

– Assenza di variabili non inizializzate;<br />

– Corretta visibilità delle variabili;<br />

– Presenza di un controllo sugli input, per escludere gli ingressi non<br />

attesi.<br />

• Scansione Automatica: il programma Y.A.S.C.A., già descritto in questo<br />

documento, verrà usato per eseguire scansioni approfondite del codice<br />

da noi steso, a diversi livelli di tolleranza. Gli errori rinvenuti<br />

(sintassi, istruzioni obsolete) verranno corretti immediatamente.<br />

4.4.2 Analisi <strong>Di</strong>namica<br />

Si definisce Analisi <strong>Di</strong>namica ogni test che venga effettuato con l’esecuzione<br />

vera e propria del codice scritto. Anche in questo caso, come nell’Analisi Statica,<br />

la verifica può essere processata manualmente o in modo automatico.<br />

Il tool che aiuterà in questa fase è JsUnit, che verrà descritto approfonditamente<br />

nella sezione Risorse Tecnologiche.<br />

Vi sono quattro tipologie di test in programma per questa fase:<br />

• Test di unità: in questa sottofase iniziale ci si concentra sui singoli<br />

componenti. A sua volta, vi sono due tipologie di test: funzionale e<br />

strutturale. Il test funzionale serve a sincerarsi della bontà dell’output<br />

del componente a fronte di un certo numero di diversi input scelti,<br />

attesi. Viceversa, nel test strutturale si punta a testare ogni percorso<br />

implementativo interno all’unità, verific<strong>and</strong>one l’intera logica; molto<br />

più costoso, verrà utilizzato a fondo con criterio e solo dove necessario.<br />

• Test d’integrazione: a questo livello si verifica la capacità di ogni componente<br />

d’integrarsi con gli accoppiati, ossia ogni altro componente<br />

da cui dipende. L’assemblaggio dei componenti seguirà gli schemi architetturali<br />

dettati nel documento Specifica Tecnica. Qui si verifica<br />

inoltre possibilità di riuso e di estensibilità, nonchè la manutenibilità<br />

dei componenti.<br />

• Test di sistema: a questo punto il sistema è stato completamente assemblato,<br />

e si giunge al livello in cui la verifica s’incentra sul soddisfacimento<br />

dei requisiti determinati in fase iniziale.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 20/26


4.5 Fase di Verifica e Collaudo<br />

• Test di accettazione: consiste nel collaudo finale, e si divide in Alpha<br />

Test e Beta Test. Si rim<strong>and</strong>a alla sezione Pianificazione della<br />

Validazione per maggiori dettagli.<br />

Le caratteristiche secondo le quali i test saranno identificati e indicizzati sono:<br />

• Scopo del test: da definirsi in modo preciso, piò essere di natura<br />

funzionale, prestazionale o di gestione della componente.<br />

• Oggetto del test: componente, componenti da integrare oppure intero<br />

sistema.<br />

• Ripetibilità del test: le prove devono essere perfettamente deterministiche.<br />

A uguale input deve corrispondere il medesimo output, in un<br />

numero qualsiasi di test.<br />

Gli elementi di un singolo test, che <strong>and</strong>ranno poi a costituire lo scheletro del<br />

report dei test acclusi nelle Misurazioni di Progetto, sono i seguenti:<br />

• Test Case: gli estremi di una singola prova. Input, output corrispondenti<br />

e informazioni su ambiente e stato del sistema.<br />

• Test Suite: una batteria di test suite. Questi ultimi devono essere<br />

scelti per coprire il maggior numero di casi possibile pur mantenendo<br />

una fattibilità del test.<br />

• Test Procedure: i passi effettuati con i dati di Test Suite, automatizzati<br />

o meno; descritti in modo tale da garantire la ripetibilità del test.<br />

4.5 Fase di Verifica e Collaudo<br />

La fase di Verifica e Collaudo vedrà un controllo di qualità che <strong>and</strong>rà a<br />

continuare i test descritti sotto la fase di Relizzazione e Prototipazione. Le<br />

rimanenti verifiche consistono nelle metriche applicate al progetto e ai test<br />

di collaudo; la prima è esaurientemente spiegata nella sezione Metriche di<br />

Progetto, mentre la seconda nella sezione Pianificazione della Validazione,<br />

che descrive le ultimissime fasi del progetto.<br />

4.6 Verifica dei processi<br />

I processi cominciati ma non ancora finiti devono essere verificati secondo<br />

le norme descritte in questo documento. Una volta terminati vengono valutati<br />

per comprendere se, come e dove migliorarli. La qualità dei processi<br />

è garantita dalla loro organizzazione interna basata sul principio Plan, Do,<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 21/26


4.6 Verifica dei processi<br />

Check, Act (PDCA). Qualsiasi processo può essere visto come un ciclo di 4<br />

momenti:<br />

• Plan (Pianificazione): determinare obiettivi e destinatari, determinare<br />

metodi per raggiungere gli obiettivi, impegnarsi nell’istruzione e nella<br />

formazione.<br />

• Do (Esecuzione): il processo viene avviato seguendo la pianificazione<br />

decisa al punto precedente.<br />

• Check (Controllo): l’esito del processo viene analizzato e valutato come<br />

descritto in questo documento, con le tecniche di verifica previste; in<br />

questo modo si comprende se il processo corrisponde ai requisiti.<br />

• Act (Azione): vengono applicate le azioni di correzione determinate dai<br />

feedback di verifica.<br />

Figura 1: <strong>Di</strong>agramma del paradigma Plan Do Check Act<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 22/26


5 Metriche di Progetto<br />

In questa sezione sono presentate le metriche di progetto, ossia la definizione<br />

delle gr<strong>and</strong>ezze di misura che ci permetteranno di stimare la qualità di<br />

prodotti e processi. Sono divise in categorie, a seconda della natura e del<br />

prodotto o processo che vanno a misurare. <strong>Di</strong> seguito la descrizione delle<br />

metriche stesse: i risultati dei rilievi del progetto si potranno trovare nel<br />

documento Misurazioni di Progetto.<br />

5.1 Metriche Gestionali<br />

In questa sezione vengono descritte le metriche adottate a livello gestionale<br />

del progetto. Segneranno la qualità della gestione delle risorse temporali ed<br />

economiche.<br />

• BCWS (Budgeted Cost of Work Scheduled): costo previsto per il completamento<br />

del progetto, alla data corrente.<br />

• ACWP (Actual Cost of Work Performed): costo del lavoro effettivamente<br />

svolto sino ad ora, alla data corrente.<br />

• BAC (Budget At Completion): budget rimasto a disposizione per il<br />

completamento del progetto, alla data corrente.<br />

• BV (Budget Variance): indica se alla data corrente si è speso di più<br />

o di meno rispetto a quanto previsto nel budget alla data corrente. È<br />

un indicatore che ha un valore unicamente contabile e finanziario. Se<br />

BV è maggiore di 0 significa che il progetto sta spendendo il proprio<br />

budget con minor velocità di quanto pianificato, viceversa se negativo.<br />

BV = BCWS − ACWP.<br />

Le unità di misura dei costi verranno specificate nel documento Misurazioni<br />

di Progetto.<br />

Si è scelto di attenersi alle metriche gestionali più semplici da utilizzare.<br />

Questo perché adottare una misurazione più ampia avrebbe chiesto di stimare<br />

il valore di mercato del progetto ad ogni fase, stima al di fuori delle<br />

possibilità e dell’esperienza del team di sviluppo.<br />

5.2 Metriche <strong>Di</strong>mensionali<br />

• LOC (Lines Of Code): conteggio delle linee di codice. Questa variabile,<br />

delle più semplici, è di significato notoriamente variabile in funzione del-<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 23/26


5.3 Metriche di Complessità<br />

la capacità espressiva del linguaggio/i utilizzati e comprende qualsiasi<br />

cosa scritta nei file sorgente.<br />

• CLOC (Comment Lines Of Code): conteggio delle linee di commento<br />

all’interno del codice.<br />

• CC (Comment Percentage): percentuale delle linee di commento a fronte<br />

delle linee totali di codice. La percentuale dovrebbe attestarsi su un<br />

20-30% del codice per avere sufficiente significato.<br />

• ELOC (Effective Lines Of Code): misura l’ammontare delle linee di<br />

codice effettivo.<br />

• ECP (Effective Code Percentage): si tratta della percentuale del codice<br />

effettivo rispetto al codice totale.<br />

5.3 Metriche di Complessità<br />

• CC (Cyclomatic Complexity): metrica significativa dal punto di vista<br />

prestazionale, è atta a misurare la complessità dei metodi, e a verificare<br />

che essa rimanga sotto una soglia tollerabile. È definita come il minimo<br />

numero di test per testare esaurientemente il metodo sotto analisi.<br />

Vista la natura della metrica, atta a misurare linguaggi più procedurali<br />

di quelli usati, ne verrà fatto un uso molto mirato.<br />

5.4 Metriche Chidamber-Kemerer<br />

Queste metriche sono state create appositamente per valutare la bontà del<br />

codice scritto in un linguaggio orientato agli oggetti. Sebbene il Javascript<br />

non offra un vero e proprio modello a oggetti ben si presta per la valutazione<br />

sotto queste metriche, poichè aiutano a valutare la buona progettazione<br />

dell’architettura del sistema.<br />

• WMC (Weighted Methods per Class): definita come la media delle complessità<br />

ciclomatiche dei metodi implementati per classe, permette di<br />

definire la difficoltà di manutenzione di una classe, che è proporzionale<br />

alla complessità dei vari metodi. Inoltre, benchè la completezza e<br />

la buona struttura delle classi dipenda da un elevato numero di metodi,<br />

bisogna ricordare che in questo modo viene anche abbassata la<br />

versatilità della classe in vista di un riuso.<br />

• CBO (Coupling Between Objects): questa metrica si occupa delle dipendenze<br />

tra le varie classi, ed è definita come il numero di classi dello<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 24/26


5.4 Metriche Chidamber-Kemerer<br />

stesso package con le quali la classe in esame è accoppiata, ossia dalle<br />

quali dipende. La crescita incontrollata delle dipendenze tra classi<br />

ostacola fortemente riuso ed estensibilità del codice.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 25/26


6 Pianificazione della validazione<br />

6.1 Specifica della campagna di validazione<br />

La validazione del prodotto finale è un’attività fondamentale per gli sviluppatori<br />

in quanto si prova che il <strong>software</strong> rispecchi i requisiti e li esegua nel<br />

modo voluto. Uno degli obiettivi di questo test è controllare l’effettivo funzionamento<br />

del prodotto finale ed eventualmente segnalare la presenza di errori<br />

(quali bug o quant’altro) che nel caso verranno corretti secondo le procedure<br />

adottate. In mancanza di riscontro di errori, si certifica l’effettivo funzionamento<br />

del prodotto.<br />

La campagna di validazione si svolgerà in due fasi:<br />

• Alpha test: test eseguito internamente all’azienda; si provvede ad eseguire<br />

l’applicativo per controllare che rispetti le specifiche richieste.<br />

Sarà guidato dai diagrammi di casi d’uso, e avrà anche come obiettivo<br />

l’ultimissima verifica di aderenza ai requisiti dell’intero progetto.<br />

• Beta test: il prodotto viene distribuito al committente e ad una ristretta<br />

cerchia di tester esterni all’azienda per verificare in maniera più<br />

ampia e diversificata il rispetto dei requisiti e l’integrità strutturale. Ai<br />

betatester viene fornito il Manuale Utente e il sistema di ticketing per<br />

eseguire il report dei problemi riscontrati.<br />

SketchYourSite: <strong>Piano</strong> <strong>Di</strong> <strong>Qualifica</strong> v5.0 26/26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!