5
Petri partendo dalle regole generali di trasformazione e mostrando come tali regole
costituiscano l'ossatura degli elementi software sviluppati nell'ambito di questa tesi.
Nel capitolo I tratteremo il multiformalismo, partendo dalla definizione di sistema
complesso e di modello.
Nel capitolo II affronteremo la metodologia Model Engineering, con le sue
applicazioni e una breve descrizione dei suoi linguaggi di applicazione.
Nel capitolo III definiremo la trasformazione di un modello, elencando le varie
metodologie e soffermandoci su una di esse: il QVT. Successivamente, attraverso
un esempio di trasformazione, descriveremo il linguaggio ATL basato su QVT e la
sua ATL Virtual Machine (Eclipse).
Nel capitolo IV affronteremo la problematica dei sistemi critici, introducendo come
metodo di verifica i metodi formali e un framework per l’analisi di essi :
OsMoSYS.
Nel capitolo V descriveremo l’adapter, descrivendo la sua architettura, il suo
funzionamento e gli strumenti per l’implementazione di esso.
Nel capitolo VI tratteremo della trasformazione Albero dei guasti Rete di Petri,
definendo le regole di trasformazione e gli strumenti per l’implementazione.
6
CAPITOLO I
IL MULTIFORMALISMO NELLO STUDIO DEI SISTEMI
COMPLESSI
1.1 Sistemi e modelli
Un modello è la rappresentazione di idee e conoscenze relative ad un sistema: esso
è il risultato di un processo di interpretazione, guidato dalle idee e dalle conoscenze
possedute dal soggetto che lo interpreta. Le regole sintattiche e semantiche che
guidano il modellista alla creazione di un modello rappresentano il linguaggio
(anche detto formalismo) cui il modello è conforme. Un esempio di facile intuizione
è rappresentato da un’azione che ognuno di noi quotidianamente compie: la
comunicazione verbale. Ognuno di noi esprime idee e concetti in frasi attraverso la
costruzione di periodi sintatticamente conformi ad un preciso linguaggio: l’italiano.
Come per il linguaggio naturale, anche i linguaggi per la modellazione di sistemi
hardware/software sono differenti e consentono di specificarne il comportamento in
tutte le loro sfumature; tali linguaggi sono in genere classificati per diverse
caratteristiche, tra cui:
grafici o testuali: i linguaggi di modellazione grafici sono basati su uno o più
tipi di diagrammi, costruiti a partire da simboli grafici con una semantica
chiaramente definita. I linguaggi non grafici usano un linguaggio formale
testuale, spesso paragonabile per struttura a un linguaggio di
programmazione;
interpretabili o non interpretabili: alcuni linguaggi di modellazione hanno
una sintassi e una semantica tali da consentire l'interpretazione e
l'elaborazione dei modelli da parte di specifiche applicazioni software.
L'elaborazione può avere diversi scopi: un modello può essere per esempio
eseguito (in tal modo fornendo una simulazione più o meno completa del
7
comportamento del sistema modellato) o tradotto (per esempio generando
codice sorgente utilizzabile nell'implementazione del sistema, o altri
artefatti).
oggetto della modellazione: diversi linguaggi consentono la modellazione di
diversi aspetti di un sistema software. Ad esempio i linguaggi di data
modeling sono orientati alla descrizione delle strutture dati utilizzate dal
sistema; altri linguaggi possono enfatizzare le caratteristiche funzionali, il
comportamento dinamico, gli aspetti di concorrenza, le performance o altro. I
linguaggi non orientati alla modellazione di sistemi software possono essere
classificati in funzione del particolare contesto in cui si applicano (per
esempio modellazione dei processi di business).
Queste distinzioni non sono rigide. Ad esempio, in molti linguaggi di modellazione
coesistono simboli grafici e notazioni testuali; in molti casi i modelli sono
parzialmente interpretabili; e diversi linguaggi forniscono strumenti complementari
per modellare diversi aspetti di un sistema.
Elenchiamo solo alcuni esempi principali di linguaggi di modellazione:
Diagramma E-R (Entity-Relationship): linguaggio grafico di data modeling
orientato alla descrizione della struttura delle basi dati relazionali. Un
modello E-R si basa su un insieme di concetti molto vicini alla realtà di
interesse: quindi facilmente intuibili dai progettisti (e in genere considerati
sufficientemente comprensibili e significativi anche per i non-tecnici), ma
non implementabili sugli elaboratori. Infatti, pur essendo orientato alla
progettazione di basi di dati, il modello prescinde dai criteri specifici di
organizzazione fisica dei dati persistenti nei sistemi informatici.
Diagramma di flusso (e le loro varianti, come i diagrammi di flusso
strutturati): linguaggio grafico orientato alla modellazione di algoritmi. Esso
consente di descrivere le differenti operazioni sotto forma di uno schema in
cui le diverse fasi del processo e le differenti condizioni che devono essere
8
rispettate vengono rappresentati da simboli grafici detti blocchi elementari. I
blocchi sono collegati tra loro tramite frecce che indicano la cronologia. I
diagrammi trovano la loro applicazione in diversi ambiti, oltre che in
informatica: in campo industriale schematizzano i processi, in campo
economico vengono usati a supporto delle presentazioni per aiutare i
destinatari a visualizzare meglio i contenuti.
Unified Modeling Language (UML): linguaggio di modellazione di uso
generale parzialmente basato sul paradigma object-oriented; è lo standard
dominante nel contesto dell'analisi e della progettazione a oggetti. UML
comprende elementi tratti da numerosi linguaggi di modellazione antecedenti
ad esso, fra cui OMT, Booch, e Statechart. La notazione UML è semi-grafica
e semi-formale; un modello UML è costituito da una collezione organizzata
di diagrammi correlati, costruiti componendo elementi grafici (con
significato formalmente definito), elementi testuali formali, ed elementi di
testo libero. Ha un grande potere descrittivo. UML è un linguaggio di
modellazione general purpose, che fornisce concetti e strumenti applicabili
in tutti i contesti. Poiché particolari domini applicativi o famiglie di
applicazioni potrebbero aver bisogno di concetti ulteriori e specifici, UML
fornisce un meccanismo standard che consente di estendere il linguaggio.
Rete di Petri (Petri Nets): modello matematico di rappresentazione di sistemi
concorrenti con una rappresentazione standard in forma di diagramma. Esso
descrive la struttura di un sistema distribuito attraverso l’uso di un grafo
bipartito con delle annotazioni. Una rete di Petri ha dei nodi posti, dei nodi
transizioni e degli archi diretti che connettono posti e transizioni. Uno dei
vantaggi ambiti di modellazione delle reti di Petri è costituito dai sistemi
concorrenti per i quali è inoltre possibile delineare formalmente proprietà
desiderabili del sistema, come la liveness (ad esempio, in un sistema che non
deve mai bloccarsi) o la boundedness (ad esempio, le risorse di un sistema
9
come la CPU sono limitate).
Tra i linguaggi si distinguono quelli che posseggono una forte base matematica sia
nelle regole di modellazione che in quelle di metodi formali [1], cioè di linguaggi,
tecniche e strumenti matematicamente fondati che si prestano alla specifica e alla
verifica dei sistemi.
Vale la pena sottolineare i motivi che spingono i progettisti all’uso dei metodi
formali nell’analisi dei sistemi complessi. Per sua stessa natura, un metodo formale
permette la descrizione di un sistema complesso eliminando le ambiguità che
possono invece presentarsi in una descrizione informale, e di conseguenza
eliminando una possibile causa d’errore nella sintesi o nell’analisi del sistema.
L’utilizzo di un metodo formale consente di acquisire una comprensione più
profonda, precisa e dettagliata del sistema sotto esame, e inoltre rende più semplice
la possibilità della verifica e della dimostrazione rigorosa della correttezza di tale
sistema.
D’altra parte, c’è da dire che l’utilizzo dei metodi formali nella pratica è ancora
fortemente penalizzato da una serie di fattori: innanzitutto, è evidente che il prezzo
da pagare per l’introduzione di un metodo formalmente rigoroso è la necessità, da
parte del modellista, di avere solide conoscenze e capacità matematiche. I
formalismi matematici, infatti, sono spesso difficili da utilizzare e possono risultare
ostici al neofita. Inoltre, le tecniche di soluzione relative ad un determinato metodo
formale diventano spesso difficili o addirittura impossibili da utilizzare al crescere
della complessità del sistema, di fatto vanificando la scelta dell’utilizzo di tale
metodo; a complicare le cose, può accadere che gli strumenti disponibili non
supportino alcune tecniche o siano troppo difficili da utilizzare. Infine data la
complessità dei sistemi eterogenei, un singolo formalismo non è, in genere,
abbastanza espressivo per descrivere tutti gli aspetti desiderati del sistema, e
pertanto risulta difficile condurre delle analisi quantitative e qualitative utilizzando
un unico formalismo.
Viste le caratteristiche fondamentali, i pregi e i difetti dei metodi formali, è logico
10
attendersi lo sviluppo di tutta una serie di approcci e punti di vista differenti e/o
alternativi rispetto a tali metodi, dipendenti dal campo applicativo in cui si intende
applicarli e dal tipo di problemi che si vuole risolvere.
1.2 I sistemi complessi
Un sistema complesso è un sistema in cui gli elementi subiscono continue
modifiche singolarmente prevedibili, ma di cui non è possibile, o è molto difficile,
prevedere uno stato futuro. Un sistema è tanto più complesso quanti più parametri
sono necessari per la sua descrizione. Dunque maggiore è la quantità e la varietà
delle relazioni fra gli elementi e maggiore è la sua complessità.
Alcune caratteristiche tipiche che possono verificarsi, tutte insieme o in parte,
classificate da [2] sono:
agent-based: il sistema è caratterizzato dall’avere diversi componenti diversi
ognuno dei quali lavora per portare a compimento il proprio compito;
non-linearità: il comportamento del sistema e degli agenti non segue le leggi
di linearità (effetto butterfly);
eterogeneità: gli agenti differiscono in comportamento, natura ed obiettivo;
dinamicità: le caratteristiche del sistema e degli agenti non sono costanti ma
cambiano nel tempo;
retroazione: i cambiamenti ed i comportamenti sono spesso conseguenza di
retroazioni che gli agenti ricevono dall’ambiente in cui operano;
organizzazione: gli agenti sono organizzati in gruppi o gerarchie;
emergenza: l’interazione tra gli agenti provocano macro comportamenti a
livello sistemico non predicabili a partire da quelli dei singoli agenti.
Esempi di sistemi complessi possono essere tratti da ogni campo delle scienze
naturali ed ingegneristiche: sistemi economici e politici, ecosistemi, sistemi di