• Non ci sono risultati.

METODOLOGIA DI SVILUPPO E SCELTE TECNOLOGICHE

5. PROGETTAZIONE ED IMPLEMENTAZIONE DI SCOTT

5.1 METODOLOGIA DI SVILUPPO E SCELTE TECNOLOGICHE

SCOTT è stato realizzato tenendo in considerazione i requisiti di progettazione presentati nel paragrafo 2.2. Questi requisiti di alto livello sono stati progressivamente dettagliati attraverso la realizzazione di un semplice documento di testo. Utilizzando una strategia bottom-up, in seguito, sono stati realizzati diversi diagrammi delle classi utilizzando la notazione UML. Il processo di creazione del documento di specifica e dei vari diagrammi UML ha consentito di ottenere un visione abbastanza chiara del progetto in modo tale da passare direttamente alla fase successiva d’implementazione.

Sostanzialmente quindi, la metodologia di sviluppo software seguita è quella classica del “modello a cascata” che prevede nell’ordine l’analisi e specifica dei requisiti, la progettazione di sistema e la sua specifica, la codifica, il testing e infine il deployment.

5.1.1 Linguaggio di programmazione

Il linguaggio di programmazione che si è scelto per sviluppare il progetto è il C++. L’utilizzo del diagramma delle classi UML presuppone implicitamente la scelta di un linguaggio di programmazione orientato agli oggetti quale il C++. Inoltre, essendo le principali API di accesso alle smart card realizzate utilizzando il linguaggio c, la scelta è stata pressoché obbligata. Il motivo per cui si è scelto il C++ invece del C è essenzialmente basato sul fatto di voler sfruttare le potenzialità che offre il design object oriented lavorando ad un livello di astrazione più alto grazie anche all’utilizzo della libreria standard del C++ e di altre librerie disponibili sulla rete.

111

5.1.2 Ambienti e strumenti di sviluppo

Lo sviluppo sulla piattaforma Windows è avvenuto utilizzando una macchina con installato il sistema operativo Windows Vista Home Premium.

Gli strumenti utilizzati durante lo sviluppo sono:  Microsoft Visual Studio 2008

 Microsoft Windows SDK

 Visual Assist X for Visual Studio  Tortoise SVN

 Visual C++ Memory Leak Detector

Microsoft Visual Studio 2008 è l’ambiente di sviluppo attraverso il quale è stato possibile scrivere, compilare e linkare i file del progetto che sono stati opportunamente organizzati in soluzioni. Il Microsoft Windows SDK è un insieme di strumenti, esempi di codice, documentazione, compilatori, intestazioni e librerie che gli sviluppatori possono utilizzare per creare applicazioni per sistemi operativi Microsoft Windows. Per quanto riguarda SCOTT il Microsoft Windows SDK si è reso necessario per avere a disposizione le intestazioni e le librerie per scrivere applicazioni basate su smart card. Visual Assist X, è un plugin per Visual Studio che aumenta notevolmente la produttività durante lo sviluppo delle proprie applicazioni grazie alle avanzate funzionalità di refactoring e di supporto alla digitazione del codice. Attraverso il Visual C++ Memory Leak Detector inoltre è stato possibile verificare l’assenza di perdite di memoria a run-time.

Lo sviluppo sulla piattaforma Linux è avvenuto utilizzando una macchina con installato il sistema operativo Ubuntu 9.

Gli strumenti utilizzati sono:  Compilatore gcc  Make

 KDevelop 4  KdeSVN

112

La compilazione e il linking di SCOTT in Linux si effettua attraverso l’utilizzo di opportuni makefile che automatizzano ed ottimizzano tutto il processo di build. KDevelop è un editor di codice che è stato utilizzato solamente alcune volte in quanto la maggior parte è stato scritto su Windows utilizzando Visual Studio. Tutto il codice di SCOTT, organizzato in opportune sottocartelle, è stato inserito fin dal principio in un repository sub version in modo da avere a disposizione il controllo di versione e tenere sincronizzati i codici del progetto su Windows e Linux. A tal proposito sono stati utilizzati dei client sub version per effettuare in modo semplice le operazioni di commit e update (Tortoise SVN su Windows e KdeSVN su Linux).

5.1.3 Librerie di supporto

Il progetto SCOTT è stato realizzato sfruttando diverse librerie a supporto dello sviluppo. E’ stato fatto un uso massiccio della Standard Template Library (STL) e in particolare dei container string, vector<T>, map<T>, list<T>, queue<T> e stack<T> e dei relativi iteratori per accedere e per manipolare queste strutture dati.

Sono state inoltre utilizzate diverse librerie presenti all’interno di Boost (Boost C++ Libraries s.d.) quali:

 Smart Pointer  Regex

 File System e System  Lexical cast

 Foreach  String algo  Testing

E’ importante sottolineare che l’intero progetto è completamente basato sull’utilizzo degli Smart Pointer che assicurano un totale controllo sulla memoria

113

dinamica allocata, garantendo l’assenza di memory leak. Per maggiori informazioni sulle librerie di Boost fare riferimento a (Boost C++ Libraries s.d.).

Per realizzare il parser del descrittore del plugin è stata utilizzata la libreria

TinyXml che offre semplici funzionalità per supportare la lettura e la

manipolazione di file XML. La libreria TinyXml è stato scelta soprattutto perché è estremamente facile da utilizzare ed apprendere al contrario di altre sicuramente più avanzate ma con una curva di apprendimento decisamente più lenta. TinyXml soddisfa perfettamente i semplici requisiti di manipolazione XML richiesti dal toolkit. Per maggiori informazioni sulla libreria fare riferimento a (Tinyxml 2009). La libreria GNU Readline infine è stata utilizzata per aggiungere alla shell funzionalità tipiche delle comuni shell, in particolare la possibilità di richiamare i comandi inseriti più recentemente in modo da poterli modificare e rieseguire con molta più semplicità. Per maggiori informazioni sulla libreria fare riferimento a (Readline library s.d.).

5.1.4 Testing

Il codice principale di SCOTT, racchiuso all’interno della “SCOTT Core Library”, è stato in gran parte testato attraverso l’utilizzo di unit test in modo da evitare problematiche di regressione nei successivi aggiornamenti.

In particolare i test coprono il sistema dei tipi di SCOTT, le funzioni di formattazione, il parsing dei comandi e la risoluzione delle espressioni.

Per la scrittura dei test è stato utilizzato il framework di test presente all’interno di Boost, in modo da non aggiungere ulteriori dipendenze utilizzando un framework di test esterno ma altrettanto valido come ad esempio CppUnit. La Figura 77 mostra l’esecuzione dell’applicazione Test che esegue l’intera batteria di test definiti per SCOTT.

114

Figura 77 - Esecuzione della batteria di test per SCOTT

5.1.5 Documentazione del prodotto

Tutte le classi, i metodi e i membri presenti all’interno del progetto sono stati documentati attentamente attraverso l’utilizzo di commenti.

Doxygen è uno strumento per la generazione di documentazione di codice

sorgente. Grazie ad esso è stato possibile costruire automaticamente una documentazione in formato HTML dell’intero progetto SCOTT che può essere consultata per comprenderne meglio il funzionamento. Inoltre, attraverso il software GraphViz, è stato possibile integrare all’interno della documentazione prodotta da Doxygen anche un insieme di grafici che descrivono le relazioni tra le varie classi presenti.

5.1.6 Licenza del prodotto

Affinché SCOTT possa diventare un toolkit ampiamente diffuso per l’invio di comandi alle smart card presenti sul mercato, un importante requisito è la sua totale apertura verso la comunità degli sviluppatori.

Per questo motivo la licenza con cui SCOTT è rilasciato è la GPL, la più diffusa licenza per il software libero. Grazie a questa licenza, l’intero codice sorgente sarà disponibile a tutti e potrà essere nel tempo migliorato. Sulla base di questa scelta è stato anche possibile sfruttare delle librerie open source rilasciate con licenza GPL quali TinyXml che altrimenti non si sarebbe potuto utilizzare.

115

5.1.7 Apparecchiatura usata

Per effettuare il testing di SCOTT, in particolare per quanto riguarda la verifica della corretta implementazione dei comandi sulle smart card, sono stati utilizzati i seguenti dispositivi:

 Lettore di Smart Card “Todos Argos Mini II USB”  Smartcard Cryptoflex 8K

La Figura 78 mostra questi dispositivi.

Inoltre, solamente su Windows, in alcune occasioni è stato utilizzato un emulatore di smart card chiamato “Ugo's Smart Card Emulator”. Per maggiori informazioni sull’emulatore consultare (Chirico 2009).

Figura 78 - Lettore “Todos Argos Mini II” e smart card “Cryptoflex 8K”

Documenti correlati