CAPITOLO 5: CONCLUSIONI E SVILUPPI FUTURI
95
5.
CONCLUSIONI E SVILUPPI FUTURI
Scopo della tesi è stato lo sviluppo di uno strumento per il calcolo delle dipendenze in programmi concorrenti scritti in un semplice linguaggio di programmazione, si fa infatti riferimento alla sintassi presentata nel capitolo 3.
Lo strumento realizzato permette quindi di rappresentare un programma concorrente attraverso le reti di Petri e di visualizzare le dipendenze ricavate. La procedura utilizzata ha il vantaggio di trattare in modo completo le dipendenze di programmi concorrenti, impedendo la diffusione di dipendenze banali.
Infatti, nel caso in cui un processo esegua, ad esempio, una send all’interno di entrambi i rami di un’istruzione condizionale, non consideriamo tale istruzione dipendente dalla condizione dell’istruzione condizionale, in quanto, qualunque sia l’esecuzione del programma, la comunicazione fra i processi ha luogo e nessun utente esterno può risalire al valore delle variabili implicate nella condizione.
Lo strumento consente quindi di effettuare un’analisi del flusso delle informazioni in modo completo, permettendo una valutazione dei requisiti di sicurezza di programmi concorrenti.
Nello sviluppo dello strumento si è tenuto conto dei requisiti di modificabilità e modularità del software, per questo sono state utilizzate classi distinte per la gestione della rete di Petri e per la gestione e creazione delle occurrence nets.
In questo modo è sufficiente aggiungere nuove funzioni all’interfaccia offerta dalle due classi fondamentali per estendere le funzionalità dello strumento, o per sfruttare lo strumento in altri ambiti. Così facendo inoltre anche la modifica delle funzioni già implementate, e l’individuazione dei punti che si intende modificare o estendere, risulta sicuramente più semplice.
CAPITOLO 5: CONCLUSIONI E SVILUPPI FUTURI
96 Lo strumento proposto copre però soltanto un certo tipo di programmi concorrenti, scritti con un linguaggio semplice che non prevede, ad esempio, la presenza di chiamate a funzioni o la possibilità di definire funzioni ricorsive. Quindi un aspetto che potrebbe essere interessante affrontare è proprio quello dell’estensione della procedura anche a programmi scritti in un linguaggio più avanzato.
Questa applicazione inoltre può anche essere sfruttata per analizzare altre proprietà delle occurrence nets, come ad esempio per valutare il numero di volte che scatta una transizione e quindi il grado di vitalità di una rete. Con ciò quindi potrebbero essere valutate possibili condizioni di stallo dei programmi.