Sei sulla pagina 1di 14

UNIVERSITÀ DEGLI STUDI DI TRIESTE

FACOLTÀ DI INGEGNERIA

Corso di Laurea in Ingegneria Informatica


Tesi di laurea triennale

Sviluppo di un front-end
grafico in .NET per un simulatore
molecolare DPD

Laureando: Relatore:
Filippo MUSCOLINO Prof. Maurizio FERMEGLIA

Anno Accademico 2007/2008


Problema

Necessità di utilizzo, all’interno del DICAMP, di un applicativo


esistente per un tipo di simulazione molecolare che tuttavia
non prevede un front-end grafico.

Obiettivo

Sviluppo di un front-end che:

• Permetta l’interfacciamento con l’applicativo esistente

• Soddisfi particolari requisiti di funzionalità ad esso mancanti


Metodologia di lavoro

• Analisi della soluzione esistente

• Raccolta dei requisiti

• Definizione dell’architettura e del contesto tecnologico

• Implementazione e interfacciamento

• Testing

• Conclusioni e sviluppi futuri


Analisi della soluzione esistente

• Input non passabile dall’esterno

• Parametri inclusi nel codice

• Ad ogni cambiamento bisogna ricompilare il programma

• Output in maniera testuale e senza indicazioni descrittive

• Nessuna visualizzazione grafica

• Interazione con il programma quasi nulla

• Non è possibile interrompere la simulazione


Requisiti funzionali

• Input passabile da interfaccia grafica

• Verranno passati i parametri più importanti

• Output di alcuni parametri in realtime (o quasi)

• Visualizzazione con supporto di grafici

• Interazione con il programma dal front-end

• Possibilità di avviare e interrompere la simulazione


Architettura iniziale
• Simulatore

• Implementato in Fortran 90

• Compilato in ambiente Linux (gfortran)

Vincoli

• Front-End

• Implementato in C#

• Compilato in ambiente Windows

• Sviluppato su .NET Framework 3.5


Portabilità?
• .NET Framework

• Esecuzione in ambiente virtuale (CLR)

• Mono

• Compatibilità con applicazioni sviluppate per piattaforma


.NET

• Ambiente virtuale (Mono Runtime)


Compilazione
× Front-end e simulatore all’interno del framework (Lahey
Visual Fortran)

 Front-end all’interno del framework, simulatore


compilato nell’ambiente nativo (gfortran, Intel Fortran)

Interfacciamento

• P/Invoke – Platform Invoke

• Utilizzo di codice esterno contenuto in una libreria

• Compilazione in libreria dinamica


Attenzione (1)

• Passaggio di parametri

• Il linguaggio chiamante deve seguire le regole del


linguaggio chiamato

• Chiamate alle subroutine in Fortran con attributo ref

• Tipi di dato definiti dai due linguaggi

• Attenzione alla corrispondenza!

• (es. real *8 in Fortran corrisponde a double in C#)


Attenzione (2)

• Multithreading

 Simulazione in background non blocca il front-end

× Il metodo Abort() non interrompe l’esecuzione di codice


unmanaged

• Gestione dello stack

• Il simulatore non nasce per l’utilizzo in libreria

• Attenzione al possibile StackOverflow


Architettura finale
Ambiente Windows Ambiente Linux
Microsoft.NET Framework MONO

Interfaccia Simulatore Interfaccia Simulatore


(C#) (F90) (C#) (F90)

Compilazionein Compilazione Compilazionein


Visual Studio Monodevelop Compilazione
conGfortano Intel
conGfortran
Visual Fortran

CIL(Common CIL(Common
Intermediate Intermediate
Language) Libreria Language) Libreria
dinamica dinamica
(.dll) (.so)

CLR(Common Language Runtime) MONO Runtime

01100101010101001100001101 01010101010011000011010100 01100101010101001100001101 01010101010011000011010100


01001011001001101111011010 11011011001001101010101011 01001011001001101111011010 11011011001001101010101011

Hardware
Testing
Conclusioni

• Interfacciamento tra front-end e simulatore raggiunto

• Requisiti funzionali soddisfatti

• Portabilità quasi completamente raggiunta

Sviluppi futuri?

• Migliore portabilità su Mono

• Compilazione e simulatore all’interno del framework

• Gestione di ulteriori parametri di simulazione


Fine

Potrebbero piacerti anche