Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FACOLTA’ DI INGEGNERIA
Tesina di Ingegneria del Software 2
Agent AUML
e sua modellizzazione dei Sistemi
Multi Agente
Di Elisa Benetti
Introduzione ...............................................................................................1
1. Agenti
1.1. Definizione.......................................................................................3
1.2. Caratteristiche…………………………………………………..….4
1.3. Tipologie…………………………………………………………...5
1.4. Ambienti in cui lavorano……………………………………….…7
II
4. Agenti e Linguaggio a Oggetti
4.1. Differenza tra Agente e Oggetto…………………………..…..…24
4.2. Programmazione ad Oggetti ed UML………………………....…25
5. Agent UML
5.1. I Diagrammi AUML………………………………………...……30
5.1.1. Diagrammi di Interazione/Protocollo…………………...….31
5.1.2. Diagrammi di Classe……………………………………..…33
5.2. Elaborazione Interna degli Agenti…………………………….…35
5.3. Rappresentazione dei Ruoli………………………………………36
5.4. Stereotipi……………………………………………………….....39
6. Conclusioni……………………………………………………………40
III
Introduzione
1
sviluppo, che nella maggior parte dei casi sono ancora allo stadio di prototipi prodotti
nelle università e nei centri di ricerca.
Questa tesina si propone quindi di spiegare nel primo capitolo cosa si intenda con la
parola Agente, estendendo poi il concetto ai Sistemi Multi Agente (MAS) nel
capitolo due. Il terzo capitolo prende in esame come ciò che abbiamo descritto finora
sia stato definito dal FIPA (Foundation for Intelligent Physical Agents), e, dopo un
breve quarto capitolo che descrive le differenza fra i concetti di Agente ed Oggetto e
dimostra come con il linguaggio UML non possano essere modellati Agenti e MAS,
si termina con un quinto capitolo che tratta in modo approfondito l’ Agent UML,
standard sviluppato dal FIPA come estensione dell’ UML per sopperire alle carenze
suddette.
2
Capitolo 1
Agenti
1.1 Definizione
Una delle prime definizioni che sia stata data è la seguente, di Hewitt nel 1977:
“Una attore è un’ entità software che possiede un indirizzo di posta e
un comportamento. Gli attori comunicano scambiandosi messaggi e
agiscono con correntemente”.
Il concetto di attore si è poi evoluto in quello di agente, e una delle definizioni più
diffuse è del 1995, scritta da Wooldridge e Jennings:
“Un agente è un sistema informatico situato in un certo ambiente,
capace di azioni autonome in tale ambiente allo scopo di raggiungere
i propri obiettivi”.
Va chiarito, in effetti, che non esiste una definizione di agente che sia a oggi
universalmente accettata e per questo motivo spesso si rinuncia a dare una
3
definizione formale e precisa di agente, preferendo concentrarsi sulla descrizione di
altri aspetti, quali:
1.2 Caratteristiche
L' agente deve essere prima di tutto autonomo: senza alcun intervento dell' utente
deve essere in grado di eseguire azioni legate a un processo o a un obiettivo. I due
esempi più rilevanti di autonomia sono i seguenti:
autonomia dinamica (anche chiamata “proattività”, in contrapposizione alla
reattività), o capacità di dire “go”: consiste nell' essere in grado di prendere
l'iniziativa per raggiungere i propri obiettivi.
autonomia deterministica,o capacità di dire “no”: se un agente comanda un
altro agente al fine di fargli eseguire un' azione, questi può rifiutarsi.
Le altre caratteristiche proprie degli agenti, oltre all' autonomia sono:
abilità a comunicare: nel sistema possono essere presenti svariate sorgenti:
altri agenti, basi di dati, pagine web, esseri umani. L'agente deve essere in
grado di accedere alle loro informazioni, e comunicare le proprie;
capacità di cooperazione: gli agenti devono poter agire insieme nel caso si
debbano eseguire processi complessi per il raggiungimento di obiettivi comuni;
capacità di ragionamento: un agente deve poter prendere decisioni in base alla
propria esperienza e alle proprie conoscenze;
4
capacità di adattamento: (concetto noto anche come “apprendimento”) l'
agente deve poter valutare lo stato attuale del suo dominio esterno e inserire
queste informazioni all'interno delle decisioni future;
sincerità: l'agente deve sempre agire e fornire le informazioni a sua
disposizione, in modo sincero verso l'utente e gli altri agenti.
Infine l' agente deve agire sempre per il bene del suo proprietario.
Non è detto che un agente debba rispettare sempre tutte queste caratteristiche, ad
esempio vi sono molte applicazioni in cui l' apprendimento non solo non è richiesto,
ma potrebbe addirittura risultare nocivo.
Per ogni agente viene,di norma,definito un effector capacity, ovvero un insieme di
azioni per lui disponibili. Il suo problema primario diventa quindi la decisione di
quale di queste azioni effettuare per raggiungere il suo obiettivo nel miglior modo
possibile, dove con “migliore” si intende il soddisfacimento di una certa funzione
predefinita di costo o di guadagno.
1.3 Tipologie
5
della tipologia precedente, hanno capacità di apprendimento e non
comunicano solitamente con altri agenti.
Mobile Agents (agenti mobili): agenti in grado di spostarsi (migrare) da un
terminale a un altro, durante la loro stessa esecuzione.
Information/Internet Agents: agenti atti alla gestione delle informazioni,
ingenti ed eterogenee, provenienti da differenti fonti. Queste informazioni sono
spesso prelevate da Internet tramite una interazione con i motori di ricerca.
Reactive Agents (agenti reattivi): agenti privi di proattività, che agiscono solo
secondo il principio richiesta-risposta.
Hybrid Agents (agenti ibridi): agenti che combinano una o più delle tipologie
qui sopra illustrate.
Smart Agents (agenti intelligenti): agenti dotati di autonomia, collaborazione
ed apprendimento.
Il termine intelligente dipende dal contesto, ma sicuramente non significa che non
commettano errori.
Solitamente indica invece un agente in grado di ottenere i propri obiettivi eseguendo i
propri compiti in modo flessibile e razionale, date le informazioni possedute, così da
ottimizzare una data misura di prestazione.
6
1.4 Ambienti in cui lavorano
Una possibile classificazione delle possibili proprietà degli ambienti è stata data da
Russel e Norvig, nel seguente modo:
accessibilità/non accessibilità;
determinismo/non determinismo;
episodicità/non episodicità: avvenimenti periodici sono più semplici da
affrontare; l' agente infatti può in questo caso decidere quale azione compiere
basandosi unicamente sull' episodio corrente;
staticità/dinamicità;
discreto/continuo: per capire questo concetto possiamo pensare alle pedine su
una scacchiera come esempio di moto discreto, e un veicolo come esempio di
moto continuo;
Nei casi reali abbiamo una maggiore corrispondenza con le classi di ambienti più
complesse, ovvero quelle inaccessibili, non deterministiche, non episodiche,
dinamiche e continue.
7
Capitolo 2
Le motivazioni per cui si rende necessario un sistema multi agente possono essere
riassunte nei seguenti punti:
Problemi troppo grandi e complessi per un singolo agente
Necessità di una interconnessione di sistemi esistenti
Soluzioni a problemi inerentemente distribuiti (Air Traffic Control)
Soluzioni a problemi in cui l'esperienza è distribuita (Sanità)
Miglioramento della performance, nel caso la comunicazione venga limitata
Affidabilità (recover from failure) ed estensibilità
Partiamo quindi cercando di definire un sistema multi agente
2.1 Definizione
8
Figura 2.1 Architettura Multi Agente
Se gli agenti sono molto numerosi diventa difficile considerarli individualmente ed è
più conveniente trattarli collettivamente come società di agenti o agenzia.
Il termine “agenzia” è stato usato per la prima volta da M. Minsky secondo il quale
gli agenti sono quelle entità della nostra mente che sono in grado di svolgere compiti
semplici, ma presi individualmente non sono in grado di svolgere un compito
complesso.
Secondo Minsky per fare in modo che ciò sia possibile basta strutturare
adeguatamente l' interazione tra gli agenti elementari. Si rende disponibile l'
informazione di cosa un agente fa, ma non di come lo fa (interfaccia).
In questo contesto gli agenti sono sede di attività inferenziale, ovvero di una
produzione di nuova conoscenza partendo da quella di base, e sono quindi agenti
intelligenti.
Una volta progettati i singoli agenti, per inserirli infine in un' agenzia bisogna
definirne il livello di: interazione (perché gli agenti cooperano?), cooperazione (quali
meccanismi assicurano la cooperazione?), comunicazione (come comunicano tra
loro?), organizzazione.
Valutiamo un po' più approfonditamente proprio quest'ultima.
9
2.2 Organizzazione di un MAS
10
2.3 Modelli fisici
11
Molecolare: agenti visti come molecole che comunicano fra loro con messaggi,
anche di tipo broadcast.
Questi modelli riassumono al loro interno le principali strategie tramite le quali gli
agenti comunicano tra di loro. Ne analizziamo in seguito tre particolari.
12
4. Awarding: l’agente che ha inviato il task guarda le varie offerte e decide
chi assegnare al contratto e comunica la decisione a tutti coloro che
avevano fatto un’ offerta.
5. L’ appaltatore quindi spedisce il task.
Risoluzione distribuita dei problemi: esempio del metodo dei piani parziali
globali: ogni agente definisce un piano globale, lo invia agli altri agenti
coinvolti nel piano, riceve i piani globali di tutti gli altri e costruisce un piano
parziale globale; ciclicamente ognuno invia il piano parziale globale agli altri,
riceve i loro piani parziali globali e modifica il proprio; questo finchè il proprio
piano non è uguale a quelli ricevuti.
13
Capitolo 3
Fipa (Foundation for Intelligent Physical Agents) è un'associazione no-profit nata nel
1996 e registrata a Ginevra, Svizzera. E’ un'organizzazione internazionale con lo
scopo di promuovere l'industria degli agenti intelligenti sviluppando le specifiche che
sostengono l’interoperabilità fra gli agenti e le applicazioni basate su di essi.
Questo viene effettuato tramite una collaborazione aperta fra le relative
organizzazioni, che sono aziende ed università attive nel campo degli agenti. FIPA
fornisce i risultati delle relative attività disponibili a tutte le parti interessate ed
intende fornire i relativi risultati agli organismi appropriati ove necessario.
I membri di FIPA sono impegnati individualmente e collettivamente in una
competizione aperta nello sviluppo delle applicazioni basate sugli agenti, dei servizi e
delle attrezzature. Coloro che collaborano con FIPA possono essere corporazioni,
associazioni, organismi di governo od organizzazioni internazionali senza limitazioni.
Le specifiche di FIPA sono sviluppate con la partecipazione diretta dell'insieme dei
membri di FIPA. Lo stato di queste specifiche può essere Preliminare, Sperimentale,
Standard, Disapprovato od Obsoleto.
3.1 Architettura
14
Figura 3.1: Categorie delle specifiche FIPA
Agent Comunication: definisce la struttura generica del linguaggio di
comunicazione tra gli agenti (FIPA-ACL) e specifica alcuni protocolli di
interazione, che vengono formalizzati tramite diagrammi AUML.
Agent Management: definisce un’ infrastruttura generica in cui si possano
muovere gli agenti e specifica le entità necessarie alla comunicazione e alla
gestione degli agenti stessi.
Agent Message Transport: definisce come deve avvenire la trasmissione dei
messaggi.
Abstract Architecture: definisce in modo astratto le entità che compongono un
sistema ad agenti, anche attraverso rappresentazioni UML, concentrandosi
soprattutto sull’ interoperabilità tra gli agenti.
Applications: esempi di applicazioni concrete dei sistemi ad agenti.
Molte delle specifiche FIPA sono “normative”, quindi obbligatorie per ogni
implementazione, mentre altre sono “informative”, ovvero solo linee guida che non si
è obbligati a seguire.
15
Ogni agente segue un ciclo di vita riassunto nello schema seguente:
Tutti gli indirizzi che indicano dove l’agente sia stato: su quale host,
piattaforma e contenitore;
I resolver, ovvero gli agenti presso cui l’ agente in questione è registrato
Altri parametri a discrezione del progettista
Il nome dell’ agente è invariabile, tutti gli altri parametri variano durante il suo ciclo
di vita.
16
FIPA definisce questa piattaforma (Agent Platform, AP) come la realizzazione
concreta dell’ Abstract Architecture, ed è l’ambiente in cui gli agenti possonoesistere
ed interoperare.
E’ un sistema composto da uno o più contenitori di agenti, che però possono
appartenere ad ogni istante ad un solo AP, avendo però la possibilità di spostarsi da
una piattaforma all’ altra quando lo ritengono necessario.
17
3.2.2 Agent Management System (AMS)
Questo componente è una sorta di supervisore, che controlla l’ accesso e l’uso della
piattaforma. E’ implementato a sua volta come un agente ed è responsabile inoltre
dell’ identificazione e della registrazione degli agenti residenti.
L’AMS gestisce l’intero ciclo di vita di ogni agente e può richiedergli di svolgere uno
specifico compito. Inoltre, se necessario, è in grado di forzare l’esecuzione di un
particolare task. Fornisce inoltre un servizio di “white pages”, “pagine bianche”
tenendo aggiornato un indice di tutti gli agenti presenti in ogni istante sulla
piattaforma, compresi i loro AID.
Tutti gli agenti devono registrarsi presso l’AMS della propria HAP (Home Agent
Platform), cioè la AP dove sono stati creati e che è responsabile dell’identità degli
agenti stessi. Questa registrazione, tramite una fase di autenticazione, comporta
l’autorizzazione di accesso al MTP (Message Transport Service) per poter svolgere le
mansioni di invio e ricezione di messaggi.
La vita di un agente presso una AP termina con la sua deregistrazione. In questa fase
il suo AID diviene disponibile per essere assegnato, eventualmente, ad un altro
agente.
Trattandosi di un agente, anche l’AMS possiede un AID, riservato e rappresentato
nella forma seguente:
(agent-identifier
:name ams@hap
:addresses (sequence hap_transport_address))
18
l’agente è stato creato su un’altra AP ed è migrato su quella corrente.(questo
vale solo per le piattaforme che supportano gli agenti mobili.
19
3.2.4 Message Transport Service (MTS)
L’MTS è il servizio che consente agli agenti di comunicare tra di loro e con AMS e
DF.
Generalmente è implementato in un componente chiamato ACC (Agent
Communication Channel) che utilizza le informazioni dell’AMS (riguardanti lo stato,
l’identità e la locazione di appartenenza degli agenti) per gestire lo scambio di
messaggi tra gli agenti.
Gli agenti comunicano tra loro scambiandosi messaggi FIPA-ACL che vengono
fisicamente trasportati da un agente all’altro (e, se necessario, da una piattaforma
all’altra) dall’MTS utilizzando un protocollo di trasporto (MTP, Message Transport
Protocol). Affinché gli agenti residenti su due piattaforme diverse possano operare, le
due AP devono implementare i protocolli di trasporto definiti da FIPA:
20
spesso un protocollo proprietario) e con ACC il componente che gestisce la
comunicazione con altre piattaforme.
A differenza di AMS e DF, generalmente ACC non è implementato come un agente.
22
La rappresentazione fisica dei messaggi può avvenire in modi diversi.
Il formato più utilizzato è quello di stringa, di cui ne vediamo un esempio:
(request
:sender (agent-identifier :name Agent1)
:receiver (set (agent-identifier :name ams))
:content
:language
:ontology FIPA-Agent-Management
:protocol FIPA-Request
:conversation-id 12345
)
La sintassi degli elementi illustrata è chiamata Semantic Language (SL).
Gli altri linguaggi specificati da FIPA sono: Resource Description Framework
(RDF, basato su XML), Knowledge Interchange Format (KIF) e Constraint Choice
Language (CCL, per la definizione di vincoli).
23
Capitolo 4
Come già accennato nell’ introduzione, l’ avvento di una nuova tecnologia come
quella degli agenti comporta sicuramente dei rishi e il modo migliore per ridurli e
partire da solide basi preesistenti presentando quindi la tecnologia ad agenti come
un’ estensione di un paradigma già noto ed affermato: lo sviluppo del software
orientato agli oggetti.
24
Innanzitutto notiamo che gli agenti, rispetto agli oggetti, sono attivi: possono
prendere iniziative e decidere quando e come elaborare le richieste ricevute.
Inoltre gli agenti non agiscono isolati, ma in cooperazione o coordinazione con altri
agenti.
Per quanto riguarda lo scambio di messaggi, questo esiste sia nel contesto degli
agenti che in quello degli oggetti, ma con significati diversi:
per gli oggetti significa invocazione di metodi, ossia chiamate di procedure
(generalmente sincrone);
per gli agenti significa invio e ricezione di atti comunicativi (generalmente
asincroni).
Se implementati come oggetti, gli agenti si scambiano messaggi facendo riferimento
a un identificativo (ad esempio l’ AID), ma mai conservando riferimenti espliciti ad
altri agenti, né invocando direttamente i metodi.
25
Figura 4.1: Principali diagrammi UML
26
anche nelle fasi di analisi e progetto, durante le quali le classi possono
rappresentare ad esempio concetti o entità del mondo reale.
o Diagrammi degli oggetti (Object diagrams): come i diagrammi a classi,
con la differenza che rappresentano oggetti concreti, istanze delle classi.
o Diagrammi dei package (Package diagrams): dividono le classi e/o gli
oggetti in raggruppamenti (package), che possono contenere classi, altri
package, o entrambe le cose. I package formano una struttura ad albero
che consente di organizzare meglio un progetto.
Modello dinamico:
o Diagrammi di sequenza (Sequence diagrams): rappresentano le interazioni
tra gli oggetti (passaggio di messaggi) mettendo in evidenza la dimensione
temporale.
o Diagrammi di collaborazione (Collaboration diagrams): semanticamente
equivalenti ai diagrammi di sequenza, mettono tuttavia in risalto la
dimensione “spaziale” (ovvero le relazioni tra gli oggetti) rispetto a quella
temporale. Nota: i diagrammi di sequenza e di collaborazione sono
chiamati, nel loro complesso, diagrammi di interazione (Interaction
diagrams).
o Diagrammi di attività (Activity diagrams): simili ai “classici” diagrammi di
flusso (e anche, in un certo senso, alle reti di Petri), descrivono la sequenza
di operazioni che devono essere compiute per risolvere un determinato
problema. Non è detto che queste operazioni siano svolte tutte da uno stesso
oggetto: è possibile dividere un diagramma in “corsie” (swimlanes) per
rappresentare le diverse entità che svolgono le azioni.
o Diagrammi di stato (State diagrams o Statecharts): simili ai “classici”
automi a stati finiti, rappresentano i possibili stati (e le transazioni tra essi)
di un singolo oggetto. Uno stato può contenere altri stati “annidati”.
27
Modello use case:
o Diagrammi Use Case: specificano il modo in cui un sistema interagisce con
“attori esterni” (ad esempio gli utenti o altri sistemi).
Modello dell’implementazione:
o Diagrammi dei componenti (Component diagrams): rappresentano insiemi
di componenti software e le relazioni tra essi. I componenti spesso sono
istanze concrete di classi definite nel modello statico.
o Diagrammi di deployment (tradotto talvolta come diagrammi di
distribuzione o di rilascio): rappresentano i componenti hardware di un
sistema e le relazioni tra essi. Le entità hardware possono contenere i
componenti descritti dei diagrammi dei componenti.
L’UML è un vero e proprio linguaggio, con una grammatica ed una sintassi, che
fornisce tra l’altro molti meccanismi di estensione, risultando così molto flessibile e
facilmente adattabile alle esigenze degli sviluppatori. L’esempio più comune è quello
dei diagrammi ibridi, dove vengono usati simboli presi da diversi diagrammi.
Allo stato attuale questo strumento non risulta quindi sufficiente per modellare gli
agenti e i sistemi multi agente, che necessitano di una metodologia che supporti l’
intero processo di sviluppo ad agenti: pianificazione, analisi, progetto, realizzazione
del sistema , collaudo, manutenzione.
Tra le principali organizzazioni che si occupano di studiare estensioni alle
metodologie esistenti troviamo appunto FIPA, che propone l’ estensione chiamata
Agent UML (AUML), trattata nel prossimo capitolo.
29
Capitolo 5
Agent UML
30
5.1.1 Diagrammi di Protocollo
Un protocollo di interazione tra agenti (AIP, Agent Interaction Protocol) descrive un
modello di comunicazione, ovvero la sequenza consentita dei messaggi scambiati ed
eventuali vincoli sui contenuti di tali messaggi.
In AUML un AIP è rappresentato con un’estensione del diagramma di sequenza: il
diagramma di protocollo (Protocol diagram).
L’esempio che segue mostra un esempio del Contract Net, uno dei protocolli di
negoziazione più diffusi.
31
abbiamo più oggetti ma ruoli, che in questo esempio sono Initiator (entità che dà
inizio alla conversazione) e Partecipant (entità che riceve il primo messaggio).
Le frecce indicano l’ invio dei messaggi asincroni da un’ entità all’ altra, con
eventuale aggiunta di simboli alle estremità per indicarne la molteplicità.
Sono stati inoltre inseriti nuovi simboli per indicare delle “decisioni” circa i messaggi
(o atti comunicativi) da inviare, il cui significato è spiegato nella seguente figura:
32
Un protocollo, quindi, è un modello (template), i cui parametri generici sono
chiamati unbound parameters. Volendo applicare il pattern ad un caso concreto,
occorre sostituirli con i loro valori effettivi (bound parameters).
Questo modo di utilizzare i modelli fa parte dell’AUML, non dell’UML.
Nel seguente esempio in figura , i nomi dei ruoli sono stati sostituiti dai nomi
effettivi degli agenti,la deadline generica è diventata un istante di tempo; addirittura
sono stati introdotti due tipi diversi di messaggio “refuse”.
33
Una ulteriore proposta è quella nella seguente figura, e permette di specificare
informazioni più dettagliate circa un agente.
Innanzitutto si ha nella prima riga il nome della classe di agenti, seguita, dopo la
barra, da un elenco di ruoli che l’agente può ricoprire. Il nome può anche essere
sottolineato per indicare che si sta descrivendo un agente concreto (individual agent,
ovvero un’istanza) e non una classe.
La descrizione dello stato contiene un normale elenco di campi, come in UML:
tuttavia viene definito un nuovo tipo di dato, chiamato “wff” (“well formed formula”,
formula ben formata), utilizzato per rappresentare qualsiasi tipo di descrizione logica
dello stato, indipendentemente dalla particolare implementazione. Ad esempio, se si
modella un agente con la tecnica BDI, è possibile definire quattro variabili: beliefs,
desires, intentions e goals (questi ultimi, eventualmente, suddivisi in permanent-goals
e actual-goals), tutte di tipo “wff”. Alcuni attributi possono essere persistenti, in tal
caso ad ognuno di essi è aggiunto lo stereotipo “persistent”.
34
Le azioni si differenziano dai metodi in quanto modellano i comportamenti reattivi e
proattivi dell’agente, rispettivamente rappresentati dagli stereotipi “reactive” e “pro-
active” (non mostrati nella figura); le azioni sono visibili agli altri agenti, mentre i
metodi sono utilizzabili solo dall’agente stesso. Per il resto, azioni e metodi sono
specificati in modo identico, secondo le consuete regole dell’UML.
L’interfaccia di un agente verso il mondo esterno è costituita dall’invio e ricezione di
atti comunicativi, rappresentati con i due simboli a forma di frecce nella figura di
sinistra, oppure, nella figura di destra, con i cerchi che in UML rappresentano il
concetto di “interfaccia”. La notazione “atto/protocollo” (ad esempio “CA-
1/protocol” nella figura) indica che un messaggio contenente un certo tipo di atto
comunicativo è ricevuto nell’ambito di un certo protocollo (“default” indica un atto
comunicativo qualsiasi). Al posto di “atto/protocollo” si può scrivere
“protocollo[atto]”.
Infine, l’ “agent-head-automata” rappresenta il comportamento dell’agente, il suo
“motore”.
Nel prossimo paragrafo verrà trattato come il “cuore” di un agente possa essere
rappresentato tramite diagrammi di attività e stato.
36
Il fatto che una classe di agenti supporti alcuni ruoli si indica con la seguente
notazione:
nome-classe-agente / ruolo1, ruolo2, …
Per indicare invece che un certo numero di istanze (agenti) soddisfano certi ruoli, si
usa questa notazione:
istanza1, istanza2, … / ruolo1, ruolo2, … : nome-classe-agente
Nelle due figure seguenti vediamo come sia possibile modellare i ruoli con i classici
diagrammi di sequenza UML:
37
Nella prima figura, per ogni agente si ha una diversa linea di vita per ogni ruolo che
rappresenta, nella seconda ci si concentra solo sui ruoli. Si può notare come,
descrivendo pochi agenti con limitatissimi ruoli assegnati a ciascuno, risultino
diagrammi già complessi e di difficile comprensione.
L’ AUML propone due estensioni per rappresentare in maniera più agevole la
rappresentazione dei ruoli nelle conversazioni. Le prossime due figure ne danno un
esempio:
38
Nella prima figura gli agenti sono indicati soltanto una volta ciascuno, e ad ogni linea
di vita è associato un ruolo indicato dallo stereotipo “role”.
Nella seconda figura, invece, le barre di attivazione vengono “etichettate” con il
nome del ruolo.
5.4 Stereotipi
In quest’ ultimo paragrafo vengono presentati in una tabella alcuni stereotipi proposti
per rappresentare concetti usati frequentemente nell’ ambito di sistemi ad agente.
39
Capitolo 6
Conclusioni
Nell' ultimo capitolo abbiamo approfondito le novità introdotte nell' Agent UML
come estensione di UML, per rendere possibile la rappresentazione degli agenti e
dell' interazione fra questi.
Si deve ricordare però che l' AUML è ancora in fase di studio, ed ha quindi alcune
lacune ancora presenti.
Riprendiamo ad esempio i diagrammi di protocollo: questi possono essere usati per
dare informazioni su come gli agenti si attivano l'un l'altro temporalmente e, tramite l'
uso di AND, OR e XOR la possibilità che un agente richiami uno o più altri agenti in
attività parallele. E' da notare però come la gestione di eccezioni sia ancora da
definire: le proposte sono state svariate ma poco rappresentative (ad esempio Bergent
e Poggi hanno proposto piccoli commenti testuali a lato del diagramma per
specificare eccezioni).
In un paper di Lynch e Rajerdan viene proposto un diagramma, in grado di illustrare
complesse catene di attività di agenti ed eccezioni, che hanno chiamato “schedule
diagram”.
Vediamone un esempio nella figura nella pagina seguente,concludendo con questo lo
studio dell' Agent UML:
40
Figura 6.1: Schedule Diagram
Questo diagramma rappesenta un semplice processo con la richiesta “move the red
block onto the green one” dove un braccio robotico riceve istruzioni vocali per
muovere i blocchi. Vengono rappresentate atività sia sequenziali che parallele con
agenti chiamati: textOut, speak e animate. Sono infine mostrati i punti in cui l'agente
può incorrere in un fallimento: gli agenti possono infatti lanciare esplicitamente
eccezioni o, in caso di morte di un agente o timeout, le eccezioni sono lanciate dal
kernel.
L' equivalente del diagramma mostrato in figura è il codice seguente:
42