Vai al contenuto| Home page|

   Ti trovi in: HOME »Programmi, progetti e risultati »I progetti »FIRB - Fondo per gli Investimenti della Ricerca di Base »scheda FIRB
INIZIO_TESTO_DA_INDICIZZARE

SCHEDA FIRB

italiano - english
Unità di Ricerca
  • ISTITUTO TRENTINO DI CULTURA (ITC)
    , TRENTO (TN)
  • Universita' degli Studi di ROMA "La Sapienza"
    Dip. INFORMATICA E SISTEMISTICA, ROMA (RM)
  • Universita' degli Studi di GENOVA
    Dip. INFORMATICA, SISTEMISTICA E TELEMATICA, GENOVA (GE)
  • Universita' degli Studi di TRENTO
    Dip. INFORMATICA E STUDI AZIENDALI, TRENTO (TN)
  • DELISA SPA
    LABORATORIO ANALISI, TRENTO (TN)
FIRB simili:
Classificazione scientifico-disciplinare
Classificazione brevettuale
Classificazione geografica
Bibliografia
[MCK00] J. Mylopoulos, J. Castro and M. Kolp, Tropos: Toward Agent-Oriented Information Systems Engineering, Position Paper @ the Second International Bi-Conference Workshop on Agent-Oriented Information Systems AOIS2000. Stockolm, Sweden, June 5-6, 2000.

[MNS01] Murphy, G. C., D. Notkin, and K. Sullivan. Software Reflexion Models: Bridging the Gap Between Design and Implementation. IEEE Transactions on Software Engineering, vol. 27, n. 4, pp. 364-380, April 2001.

[PBGGM01] A. Perini, P. Bresciani, P. Giorgini, F. Giunchiglia and J. Mylopoulos, A Knowledge Level Software Engineering Methodology for Agent Oriented Programming, Proceedings of the Fifth International Conference on Autonomous Agents, Montreal, Canada, 28 May - 1 June 2001.

[PGBGM01] A. Perini, P. Giorgini, P. Bresciani, F. Giunchiglia and J. Mylopoulos, Agent-Oriented Software Development: A Case Study, Centro per la Ricerca Scientifica e Tecnologica ITC-IRST, 38050 Povo (Trento), Italy, 2000.

[PTMT01] M. Pistore, A. Fuxman, J. Mylopoulos and P. Traverso, Model Checking Early Requirements Specifications in Tropos, Proceedings Fifth IEEE International Symposium on Requirements Engineering (RE01), August 27-31, 2001, Toronto, Canada.

[PP94] Paul, S. and A. Prakash. A Framework for Source Code Search Using Program Patterns. IEEE Transactions on Software Engineering, vol. 20, n. 6, pp. 463-475, June 1994.

[Pre00] R. S. Pressman Principi di Ingegneria del Software, McGraw Hill, July 2000.

[Rin99] Jussi Rintanen Constructing conditional plans by a theorem prover Journal of Artificial Intelligence Research, Vol. 10, 1999

[Ros77] D. T. Ross and K.E. Schoman, Structured Analysis for Requirements Definition, IEEE Transactions on Software Engineering, Vol. 3, No. 1, 1997, 6-15.

[RW90] Rich, C. and L. Wills. Recognizing a Program's Design: A Graph Parsing Approach. IEEE Software, vol. 7, n. 1, pp. 82-89, January 1990.

[Sch91] Schwanke, R. , An Intelligent Tool for Reengineering Software Modularity, International Conference on Software Engineering, pp. 83-92, 1991.

[SR97] Siff, M. and T. Reps. Identifying modules via concept analysis. International Conference on Software Maintenance, Bari, Italy, pp. 170-178, October 1997.

[SSC96] Sefika, M., A. Sane, and R. H. Campbell, Monitoring Compliance of a Software System with its High-Level Design Models. International Conference on Software Engineering, pp. 387-396, 1996.

[SMB96] Shull, F., W. L. Melo, and V. R. Basili. An inductive method for discovering design patterns from object-oriented software systems. Technical report UMIACS-TR-96-10, University of Maryland, Computer Science Department, College Park, MD, 20742 USA, pp. 1-17, Oct 1996.

[Sne96] G. Snelting. Reengineering of configurations based on mathematical concept analysis. ACM Transactions on Software Engineering and Methodology, vol. 5, n. 2, pp. 146-189, 1996.

[TA01] Tonella, P. and G. Antoniol. Inference of Object Oriented Design Patterns. Journal of Software Maintenance (to appear), 2001.

[Ton01] Tonella, P. Concept Analysis for Module Restructuring. IEEE Transactions on Software Engineering, vol. 27, n. 4, pp. 351-363, April 2001.

[TR93] Turner, C. D., and D. J. Robson. The Testing of Object-Oriented Programs. Technical Report TR-13/92, Computer Science Division, School of Engineering and Computer Science, University of Durham, England, 1993.

[US94] T.E. Uribe and M.E. Stickel. Ordered binary decision diagrams and the Davis-Putnam procedure. Lecture Notes in Computer Science, 845, 1994.

[YHR95] Yeh, A., D. Harris, and H. Reubenstein. Recovering abstract data types and object instances from a conventional procedural language. Working Conference on Reverse Engineering, pages 227-236, 1995.

[Yu95] Yu, Eric. Modeling Strategic Relationships for Process Reengineering. PhD thesis, University of Toronto, Department of Computer Science, University of Toronto, 1995

[Woo97] Wood, W. Conceptual Indexing: A Better Way to Organize Knowledge. Sun Microsystem Laboratories Technical Report, 1997.
Parole Chiave
Sviluppo Software guidato dai Requisiti; Ingegneria del Software orientata agli Agenti; Metodi Automatici per l'Ingegneria del Software; Ingegneria dei Requisiti guidata dai Goal; Ragionamento Formale e Pianificazione Automatica; Elaborazione del Linguaggio Naturale

Automazione dell' Ingegneria del Software basata su Conoscenza

Istituto Trentino di Cultura (ITC)
Abstract
Nonostante le tecniche di ingegneria del software allo stato dell'arte forniscano strumenti adeguati al fine di produrre software di qualità, un ostacolo al loro utilizzo è rappresentato dalla differenza sostanziale che esiste fra l'ambiente operativo in cui deve operare il sistema software, in cui si parla di "attori", "responsabilità", "obiettivi" o "goal", "ruoli", "bisogni", e il sistema software stesso, pensato come una collezione di moduli (software), strutture dati ed interfacce.

Come conseguenza, l' analisi, la specifica e la progettazione risulta complessa e perciò spesso demandata a pochi esperti, che, grazie alla loro esperienza accumulata sul campo, riescono a mappare concetti astratti e di alto livello come "attore", "ruolo" e "goal" in appropriati moduli software, usando metodologie avanzate e raffinamenti successivi. Tutto questo richiede elevati costi indiretti di addestramento od arruolamento di personale esperto e costi dovuti all' overhead causato da attività aggiuntive, ad esempio di documentazione.

Questi costi e tempi sono un problema, soprattutto nelle piccole e medie imprese, in cui le limitate dimensioni dell' organizzazione e dei progetti in gioco non permettono di effettuare investimenti di questo tipo e dove la competitività dei nuovi prodotti software (ad esempio per applicazioni su Web, e-commerce ed e-business) impone un sempre più stretto "time to market". Questi ostacoli hanno come conseguenza la>>>

Coordinatore Scientifico del Programma di Ricerca
PAOLO FAUSTO TRAVERSO, ISTITUTO TRENTINO DI CULTURA (ITC)
Obiettivo del Finanziamento
Le tecniche di ingegneria del software allo stato dell'arte forniscono strumenti adeguati al fine di produrre software di qualità, conforme a standard di omologazione e di certificazione internazionalmente riconosciuti. Un ostacolo all'utilizzo di tali tecniche in fase di progettazione e sviluppo del software, è rappresentato dalla differenza sostanziale che esiste fra l'ambiente operativo in cui deve operare il sistema software, in cui si parla di "attori", "responsabilità", "obiettivi" o "goal", "ruoli", "bisogni", e il sistema software stesso, pensato come una collezione di moduli (software), strutture dati ed interfacce.
Tale differenza fa sì che la fase di progettazione di sistemi software risulti molto complessa e nelle grandi aziende venga spesso demandata a pochi esperti, che, grazie alla loro esperienza accumulata sul campo, riescono a mappare concetti astratti e di alto livello come "attore", "ruolo" e "goal" in appropriati moduli software, usando metodologie avanzate e raffinamenti successivi. Tutto questo richiede elevati costi indiretti, legati soprattutto all'addestramento od arruolamento di personale esperto nelle metodologie ed all'overhead causato da attività aggiuntive di documentazione (si pensi, ad esempio, alla documentazione intermedia delle varie fasi del processo, ed alla necessità di condurre le modifiche in modo controllato rispetto alle diverse fasi).

Questi costi e tempi sono un problema, soprattutto nelle piccole e medie, in cui i requisiti nelle forme iniziali ("early requirements") vengono descritti come obiettivi, e gli attori vengono esplicitati con le loro dipendenze. Nel progetto, tali approcci dovranno essere estesi sostanzialmente, in modo da supportare tutte le fasi del processo di sviluppo, dalle fasi iniziali di specifica dei requisiti alle fasi di progettazione, implementazione, test e mantenimento.

- Ragionamento Automatico per la Verifica e Validazione Formale del Software.

Le tecniche di ragionamento formale, quali quelle basate su modellazione logica, deduzione interattiva o automatica e procedure di decisione ("theorem proving"), quelle basate sulla integrazione, aggiornamento e revisione della conoscenza ("belief revision") o quelle basate su tecniche di verifica dei modelli ("model checking") sono strumenti potenti per l'analisi dei sistemi software e delle loro specifiche. I potenziali vantaggi sono evidenti: data una formalizzazione delle specifiche (che le rende non ambigue), è possibile implementare servizi di integrazione, aggiornamento, verifica e validazione che siano in grado di analizzare la consistenza, le proprietà ed i raffinamenti successivi dei modelli formali, evidenziando inconsistenze ed errori di progettazione.

Le tecniche di ragionamento formale sono state però principalmente pensate (ed in pratica utilizzate) soprattutto per fasi più realizzative del processo di sviluppo (progettazione ed implementazione). Come conseguenza, i costrutti base dei linguaggi di specifica formale (quali Z, SCR, linguaggi usati in "provers" come PVS ed in "model checkers" come SPIN o NuSMV) sono sostanzialmente diversi rispetto a quelli usati nella metodologia proposta in questo progetto (goals, attori, ...).

Un obiettivo del progetto sarà quello di definire teorie e tecniche di ragionamento automatico, integrazione, aggiornamento, verifica e validazione formale che possano essere usate efficacemente anche nelle fasi iniziali del processo ("early/late requirements") e con una metodologia orientata ad attori e goals. Un primo passo in questa direzione è suggerito nei lavori che cercano di applicare tecniche formali a "goal-driven (early) requirements" con tecniche di theorem proving [Kaos] o con tecniche di model checking [FormalTropos].

Il progetto si concentrerà sull'estensione di meccanismi di integrazione di informazioni anche non consistenti [Revision,Arbitration] per affrontare il problema dell'esistenza di conflitti [Conflicts], tecniche di deduzione automatica basate su procedure di decisione per Formule Booleane Quantificate e logiche modali [Evaluate], tecniche di model checking simbolico [McMillan], e tecniche basate su teoria dei grafi.

- Pianificazione Automatica per l'Automazione del Processo Software.

Le tecniche di verifica e validazione formale sono essenzialmente delle tecniche di analisi di requisiti, specifiche, e raffinamenti. Ad esempio, data una specifica ed un suo raffinamento, le tecniche di verifica formale stabiliscono se il raffinamento è corretto rispetto alle specifiche iniziali. Al fine di automatizzare il più possibile il processo software, il progetto si pone come obiettivo lo studio e lo sviluppo di teorie e tecniche atte alla sintesi dei vari artefatti. Il problema di sintesi è il problema di supportare la generazione dei raffinamenti successivi: date le specifiche, generare il sistema che le soddisfa.

Esiste una vasta letteratura di tipo teorico e fondazionale relativa alla sintesi di programmi [proof-as-programs, ...], alla sintesi di sistemi reattivi [automa-based, ...]. Tuttavia rimane aperto il problema di come queste teorie si applichino nel processo software, ed in particolar modo ad una metodologia di specifica orientata ai goal ed agli attori.

Il progetto si pone come obiettivo quello di investigare tecniche di pianificazione automatica ("automated planning") per la sintesi dei vari artefatti del processo di sviluppo. Un problema di pianificazione è posto in termini di goal da soddisfare, e viene tipicamente risolto riducendo un goal a vari goal più specifici (denominati "subgoals"). Questo approccio sembra particolarmente adatto alla metodologia proposta, che, a partire dalla fase di "early requirements", si concentra sulle intenzioni dei diversi stakeholders modellate come goals. L'idea alla base del progetto è quello di vedere il problema di sintesi automatica dei raffinamenti successivi come un problema di pianificazione automatica.

Scopo del progetto sarà quindi quello di investigare nuove teorie di pianificazione automatica atte a supportare l'automatizzazione del processo software. Le teorie di pianificazione investigate si baseranno su diverse tecniche di base, alcune di queste in comune con le tecniche di verifica e validazione (procedure di decisione per soddisfacibilita', model checking, QBF-problem solving).

- Elaborazione del Linguaggio Naturale per l'Analisi di Documentazione

Un aspetto non trascurabile e particolarmente oneroso in ogni metodologia per il processo di sviluppo del software risiede nella necessità di analizzare ed estrarre ed organizzare informazioni a partire da (diversi tipi di) documenti in linguaggio naturale. Un sistema di supporto all'analisi di tali documenti può essere di grande aiuto a chi deve effettuare l'analisi dei requisiti, al progettista, allo sviluppatore.

I risultati ottenuti nel campo dell'Elaborazione del Linguaggio Naturale, in particolare dell'analisi terminologica, sono notevoli. La definizione di teorie e tecniche di elaborazione del linguaggio naturale per il processo software rimane però una sfida aperta.

Nel progetto, verranno considerate diverse tipologie di documenti, tra cui documenti sulla organizzazione, documenti su sistemi preesistenti e trascrizioni di interviste con gli stakeholder. Il progetto si occuperà di definire tecniche di analisi morfo-sintattica; la terminologia rilevante verra` identificata integrando tecniche statistiche e di analisi superficiale del testo. Le informazioni estratte saranno poi organizzate facendo uso di tecniche di clustering e di indicizzazione concettuale. Il risultato atteso sara` un lessico strutturato, con riferimenti alle porzioni testuali da cui l'informazione deriva, che costituira` la base per un tool interattivo di supporto alla fase di acquisizione dei requisiti.

- Analisi e testing di sistemi basati sul paradigma goal/attori

Il progetto si pone come obiettivo quello di mettere in stretta relazione le specifiche basate sul paradigma goal/attori con l'implementazione del sistema. A questo scopo verranno sviluppate una serie di tecniche di analisi di codice che possano supportare l'attività di comprensione del sistema implementato e la tracciabilità rispetto alle specifiche basate sul paradigma goal/attori. Verranno investigate tecniche di "reverse engineering" per l'identificazione automatica degli attori specificati e delle interazioni tra le parti a partire e dal codice sviluppato. Inoltre, i casi di test da utilizzare verranno derivati dalle specifiche orientate a goal e attori. L'esecuzione dei casi di test dovrà essere adattata ad un sistema basato su un insieme di attori diversi, con obiettivi potenzialmente diversi. Il progetto investigherà tecniche di testing basate sullo stato e tecniche specifiche per sistemi concorrenti.

Il progetto si pone come obiettivo quello di formare studenti universitari, a livello di laurea, di dottorato e di ``master'', sugli argomenti relativi a questo nuovo approccio all'ingegneria del software. Questo verrà effettuato
- introducendo quanto più possibile un alto numero di dottorandi attuali alle tematiche oggetto di questa proposta,
- prevedendo la formazione di un alto numero di nuovi dottorati che svolgano la loro attività di ricerca all'interno del progetto, e che risultino quindi alla fine esperti sulla tematica,
- organizzando scuole estive internazionali (anche dopo la fine del progetto) mirate anche a studenti universitari alla fine del loro percorso di studi di secondo livello,
- offrendo a studenti con curriculum informatico seminari specialistici integrati (quando possibile) all'interno dei corsi di Ingegneria del Software, e tesi di laurea di secondo livello su tematiche inerenti il progetto,
- offrendo a ricercatori ed industrie anche non facenti parte dei gruppi proponenti il progetto, collaborazioni all'attività di ricerca, creando in questo modo nuovi canali per la disseminazione dei risultati raggiunti,
- organizzando alla fine del progetto un evento internazionale, aperto a tutto il mondo accademico ed industriale, al fine di pubblicizzare i risultati raggiunti col progetto.

La valorizzazione dei economico-produttiva dei risultati verrà favorita attraverso la partecipazione del partner industriale e dalla già accertata capacità della proposta progettuale di attrarre risorse finanziarie per l'ampliamento e la disseminazione dei risultati attesi.

Il progetto proposto verrà organizzato in
- Attività mirate alla definizione di una metodologia e di un processo di sviluppo che supportino l'approccio basato sul paradigma goal/attori.
- Attività mirate alla definizione di teorie e tecniche basate sul paradigma goal/attori (specifica, verifica/validazione, pianificazione automatica, elaborazione del linguaggio naturale e analisi di codice e tecniche di testing)
- L'integrazione delle tecniche sviluppate in un "tool" di supporto
- Una definizione di un case study industriale guidato dai bisogni di una media azienda, con relativa sperimentazione e valutazione della metodologia e delle tecniche proposte

I risultati attesi si possono quindi riassumere in:
- Metodologia di "Knowledge Level Automated Software Engineering", rivolta a mettere in stretta relazione le prime fasi del processo con quelle successive.
- Framework di specifica orientato agli attori ed ai goal, rivolto a supportare con questi concetti di alto livello tutte le fasi del processo.
- Teorie e tecniche di Verifica/Validazione formale, rivolte all'analisi dei requisiti nelle prime fasi dello sviluppo, e ad analizzare specifiche basate su goal e attori
- Teorie e tecniche di Pianificazione Automatica in grado di sintettizzare raffinamenti successivi a partire dalle specifiche dei goal
- Teorie e tecniche di Elaborazione del Linguaggio Naturale per per estrarre, organizzare e gestire informazioni presenti in formato testuale nei documenti di acquisizione dei requisiti.
- Teorie e tecniche di analisi del codice rivolte a supportare la comprensione del sistema implementato, la tracciabilità sulle specifiche, la generazione di casi di test e la loro esecuzione.
- Un prototipo che funga da dimostratore concettuale in cui le tecniche sviluppate vengano integrate
- Applicazione del sistema software ad un case study industriale]>>>

Durata
36 mesi