Automatizzare la validazione del software
L'UML (Unified Modelling Language) include notazioni per descrivere i diversi aspetti strutturali e comportamentali di un'applicazione, nonché informazioni legate alla piattaforma. L'approccio OMEGA alla qualità del software consiste nell'usare l'UML per descrivere un modello unico di riferimento, a partire dal quale vengono derivati modelli semanticamente correlati di funzionalità, validazione, analisi dei risultati e implementazione. A tale scopo, il progetto OMEGA ha individuato un sottoinsieme UML ragionevole ed efficace, che può essere usato per sviluppare sistemi integrati reattivi e in tempo reale. Il profilo è stato definito in fase di avvio con un cosiddetto modello Kernel, un utile sottoinsieme operativo. Nel modello Kernel OMEGA, la struttura statica del sistema viene descritta in termini di diagrammi di classe e macchine a stati, con alcune estensioni e restrizioni (soprattutto per quanto riguarda associazioni e comunicazione). Una classe è una descrizione di un insieme di oggetti che condividono attributi, operazioni, segnali, interrelazioni e semantica. Le macchine a stati delle classi definiscono il comportamento degli oggetti in un sistema. Le classi si distinguono in attive e passive; le classi attive hanno un proprio flusso di controllo e una coda associata di eventi, ed eseguono le richieste in modo run-to-completion. Il modello Kernel definisce la semantica formale per la verifica del comportamento di un insieme di classi relazionate e dei diagrammi di stato associati con gli strumenti di controllo del modello esistenti. Il comportamento del sistema viene descritto con un linguaggio esplicito di programmazione imperativa, usato per creare e distruggere oggetti, comunicare e descrivere i sistemi transizionali espansi con dati. La comunicazione tra oggetti è effettuata con segnali asincroni o con chiamate operative sincrone, durante le quali il chiamante è bloccato fino al ritorno della chiamata. Il modello Kernel OMEGA e gli ulteriori risultati migliorano gli attuali strumenti e metodi per promuovere l'automazione della validazione del software, nonché la consistenza e coerenza degli strumenti di verifica.