La realizzazione di sistemi software è un?attività molto impegnativa, che coinvolge gruppi anche numerosi di persone e che richiede l?adozione di processi di sviluppo che permettano di dominare adeguatamente la complessità e di gestire proficuamente lo scambio informativo fra individui. Il processo di sviluppo è un punto cruciale, che condiziona l?esito dei progetti: la mancanza di un processo chiaro e condiviso è la principale causa del fallimento di molti progetti e questo indica l?importanza che può avere, soprattutto in campo industriale, l?adozione e il rispetto di metodologie sufficientemente rigorose. Recentemente lo sviluppo di un nuovo paradigma di programmazione sta influenzando il modo di analizzare e progettare i sistemi software: il paradigma ad agenti. Gli agenti sono sistemi hardware e/o software molto eterogenei che possiedono alcune caratteristiche comuni: autonomia, abilità sociale, reattività e pro-attività. Essi hanno obiettivi propri, esibiscono il controllo della loro attività interna e sono in grado di reagire a stimoli provenienti dall?ambiente esterno modificando le proprie strategie di azione. L?approccio ad agenti si sta dimostrando elegante ed efficiente per la realizzazione di sistemi software complessi perché permette di condurre il processo di sviluppo sfruttando astrazioni e metafore con le quali è più intuitivo modellare il dominio applicativo. Il paradigma ad agenti condiziona il processo di costruzione del software fin dalla fase di analisi e rende opportuno adottare delle metodologie di sviluppo appositamente create per trattare col concetto di agente e tecnologie che permettano di tradurre direttamente il progetto in un sistema funzionante. L?approccio ad agenti risulta particolarmente appropriato e vantaggioso quando l?analisi individua delle entità di base che possiedono obiettivi propri e manifestano comportamento autonomo perché si può mettere in corrispondenza ogni istanza di queste entità con un agente che la rappresenti. Rientrano in questa categoria i sistemi di simulazione etologici e sociali, quelli cioè che riproducono artificialmente le dinamiche di popolazioni animali o umane. L?obiettivo di questa tesi è valutare in che modo l?adozione di metodologie di analisi e progettazione del software orientate agli agenti possa influenzare positivamente lo sviluppo di sistemi complessi. La metodologia scelta è applicata alla realizzazione di un sistema di simulazione di uno scenario sociale: una battaglia medioevale. Lo scenario prevede la presenza di un certo numero di guerrieri medioevali, autonomi o semi-autonomi, organizzati in due eserciti reciprocamente ostili. L?obiettivo di un esercito è la completa distruzione di quello nemico. I guerrieri dovranno possedere alcune capacità fondamentali, come quella di muoversi, di combattere e di conoscere l?ambiente circostante. Potranno inoltre essere organizzati in strutture gerarchiche ed essere indirizzati dagli ordini di un capo. La parte fondamentale del lavoro sarà la realizzazione di un ambiente virtuale nel quale i guerrieri possano muoversi e comunicare. Modellare tramite metodologie tradizionali entità autonome dal comportamento e dalle interazioni complesse come i guerrieri medioevali, può risultare difficoltoso. Il gap tra metafore di analisi e progettazione ed entità reali può introdurre una complessità che non è presente nel problema originario. Le metodologie orientate agli agenti, al contrario, riducono il gap perché permettono di rappresentare un individuo tramite un agente e perciò velocizzano il processo di sviluppo. La simulazione di uno scenario reale è un possibile caso di studio per il quale adottare un processo di sviluppo orientato agli agenti in un contesto verosimile. Il punto fondamentale è valutare quali vantaggi si possono raggiungere, con una metodologia orientata agli agenti, in termini di tempo necessario allo sviluppo di un sistema software complesso e di facilità nella manutenzione. L?esposizione è così organizzata: Nel Capitolo 1 viene fornita la definizione di agente e vengono descritte le varie tipologie a cui è riconducibile la maggior parte dei sistemi ad agenti. Successivamente si delineano i concetti generali dell?Ingegneria del Software orientata agli agenti. Nel Capitolo 2 si dà la definizione di simulazione e di simulazione multi-agente quindi si descrive brevemente alcuni sistemi di simulazione esistenti. Nel Capitolo 3 è riportato il risultato delle ricerche effettuate sul dominio di riferimento, cioè le tattiche di battaglia degli eserciti medioevali. Nel Capitolo 4 viene descritta SODA, la metodologia orientata agli agenti che è stata adottata, e TuCSoN, l?infrastruttura utilizzata per implementare il sistema. Nel Capitolo 5 è riportata la raccolta e l?analisi dei requisiti del sistema e si motiva la divisione del sistema in due sottosistemi, per i quali vengono adottati due differenti processi di sviluppo. Nel Capitolo 6 è spiegata l?applicazione di SODA al caso di studio per condurre l?analisi e il progetto del sistema di simulazione. Nel Capitolo 7 è esposta la fase di analisi e progetto del sistema applicativo che permette l?interazione con l?utente. Nel Capitolo 8 sono descritte e motivate le scelte implementative che riguardano il sistema di simulazione di cui al cap. 5. Nel Capitolo 9 sono descritte e motivate le scelte implementative che riguardano il sistema applicativo di cui al cap. 6. Nel Capitolo 10 è sono riportati i risultati sperimentali. Infine, il Capitolo 11 espone le conclusioni raggiunte ed accenna ai possibili sviluppi futuri. |