Saturday, January 9, 2010

Alloy e l'ingegneria del software

L'ingegneria del software un ramo dell'ingegneria relativamente giovane: "siamo ancora agli antichi romani" come dicono alcuni professori del settore.

Anche se in quest'epoca storica l'ingegneria del software rappresenta uno dei principali settori industriali (e probabilmente lo resterà ancora per molto), non esistono standard comuni universalmente adottati per la progettazione totale di un sistema. Si pensi all'ingegneria edile/civile con secoli di storia e di standard, oppure alla moderna ingegneria elettronica/elettrica che pure è abbastanza standardizzata (modelli di impianti, schemi elettrici/elettronici, ecc.).
Per l'ingegneria del software esistono standard, più o meno seguiti, per la documentazione di un progetto (vedi IEEE Std 830-1998), mentre per quanto riguarda il software design e l'implementazione esistono numerose sperimentazioni emergenti (vedi agile programming, pattern architetturali, ecc.).
Uno strumento emergente per la definizione delle specifiche di un progetto software è Alloy (usato per il progetto di Ingegneria del Software 2 al Politecnico di Milano). Si tratta di una object modelling notation progettata al MIT per la specifica di modelli di sistemi generici, ma si adatta particolarmente all'ambito della progettazione software. Questa notazione si basa sulla logica del primo ordine: tramite le varie parole chiave si definiscono atomi (rappresentanti classi, entità, ecc.) e vincoli/relazioni tra essi. Il codice che ne deriva viene analizzato dall'Alloy Analyser (sempre fornito dal MIT) progettato per usare uno fra diversi SAT solver disponibili. In questo modo l'analizzatore verifica la coerenza logica dei vari vincoli, relazioni, asserzioni ecc. e permette la visualizzazione di diversi mondi possibili secondo quando specificato. Quest'ultimo punto è molto utile per visualizzare le entità del sistema che si vuole progettare e le relazioni tra esse, infatti in questo modo spesso si riescono a trovare delle incosistenze definite male e si riesce a correggere velocemente il codice.


Alloy è utile per la progettazione ad alto livello proprio per la sua capacità di mettere subito in risalto le inconsistenze definite nell'idea generale del progetto, andando così a definire un solido modello logico di base. Tuttavia, a prima vista, è uno strumento non molto semplice da usare siccome richiede una minima competenza di logica per definire tutti i vincoli e le relazioni che spesso sfuggono ad una visione generale. Attualmente viene sfruttato (anche se raramente a livello intensivo) sia nella definizione dei requisiti di un sistema, sia nella progettazione di alto livello definita del documento di design.


Link utili ed interessanti:

0 comments:

Post a Comment