Le nostre competenze a vostra disposizione sul blog
Amiamo il nostro lavoro e vogliamo condividerlo con voi! Tenetevi aggiornati su tutte le news e le tecnologie con le quali lavoriamo e di cui potreste avere bisogno! Seguite il nostro blog.
×

Error message

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
mattia.minotti's picture
20 Jun 2013

Progettare e sviluppare sistemi complessi è un compito che nasconde molte insidie. Concetti che appaiono lineari e di facile gestione in sistemi semplici, diventano difficili da controllare all’aumentare delle componenti in gioco e della loro complessità. La principale sfida nella creazione di sistemi computazionali moderni è quella di far fronte a tutte le problematiche che scaturiscono dall’esecuzione di componenti distribuite che interagiscono in maniera concorrente.

Ciò che serve agli sviluppatori per affrontare queste esigenze sono nuovi meta-modelli, tecnologie e metodologie che permettano di progettare soluzioni che non coinvolgano l’implementazione di intricati meccanismi di basso livello. Occorrono quindi astrazioni che incapsulino gran parte delle complessità di interazione e rendano più semplice la progettazione di sistemi distribuiti.

A questo scopo, in ambito professionale, il modello di maggior diffusione è sicuramente quello ad attori. Esistono numerose piattaforme che permettono di sviluppare software ad attori, in quasi tutti i linguaggi di programmazione più conosciuti. In ambito accademico, però, esso pare già superato (o quantomeno esteso) da un suo ben più evoluto discendente, il modello ad agenti. I sistemi multi-agente, pur essendo nati inizialmente nell’ambito dell’intelligenza artificiale, vengono oggi proposti come possibile paradigma di programmazione per sistemi concorrenti e distribuiti. Che si tratti di un’evoluzione dell’Object Oriented Programming oppure di una vera e propria rivoluzione, è tuttora oggetto di discussione.

Pur essendo poco diffusa in ambito industriale (ma molto discussa in ambito accademico) la programmazione ad agenti vanta già un ecosistema di framework e librerie piuttosto vasto. In collaborazione con il professor Alessandro Ricci ed il ricercatore Stefano Mariani del Dipartimento di Informatica, Scienza e Ingegneria di Bologna (DISI), noi di TwinLogix abbiamo vagliato diverse possibilità e siamo giunti alla decisione di tentare l’utilizzo di una di queste tecnologie innovative. La nostra scelta è ricaduta su JADE.

JADE (Java Agent DEvelopment Framework) è un framework basato su Java per lo sviluppo di applicazioni ad agenti in conformità alle specifiche FIPA per l’interoperabilità di sistemi multi-agente. Nato dalla collaborazione di diverse università e dai laboratori di Telecom Italia, esso è oggi uno degli strumenti pionieri nella programmazione ad agenti in ambito industriale.
Sebbene a voler essere rigorosi, esso non implementi a pieno il classico modello ad agenti e sia in realtà un ibrido con quello ad attori, le astrazioni che introduce risultano essere già molto innovative. Le caratteristiche salienti degli agenti JADE sono le seguenti:

  • ogni agente è eseguito da un unico thread, la concorrenza è tra agenti.
  • l’interazione tra gli agenti è affidata completamente allo scambio di messaggi FIPA.
  • la business logic di ogni agente è strutturata in termini di behaviours (in serie, parallelo, macchina a stati, ecc.)
  • i behaviours rappresentano sia la parte proattiva che reattiva dell’agente.
  • gli agenti supportano la mobilità hard (sia stato che codice).

Quello che abbiamo fatto in Twinlogix, come primo passo, è stato applicare il modello di programmazione ad agenti, utilizzando JADE, ad un problema concreto, quello della creazione di un sistema di elaborazione dati e reportistica avanzata. Partendo dal sistema esistente, che soffriva di limiti strutturali dovuti alla complessità applicativa e alla connotazione concorrente e distribuita del software, abbiamo reimplementato tutta la parte architetturale ripensandola in termini di agenti.
Dopo un comprensibile periodo di apprendimento, già dalla prima versione prototipale ci siamo accorti che i risultati erano notevoli. Ragionare con astrazioni di più alto livello aiuta a pensare alla soluzione in maniera più vicina al dominio del problema, tralasciando complicati meccanismi di basso livello. L’implementazione risulta più veloce ed il sistema più mantenibile.
Dal punto di vista tecnico, la piattaforma che abbiamo ottenuto, per il momento ci è sembrata molto stabile e gli strumenti forniti a supporto dello sviluppatore sono adeguati alla complessità del problema. La soluzione da noi implementata è stata portata recentemente in produzione e ne siamo tuttora entusiasti!

Ora non ci resta che capire quali altri orizzonti si possono aprire con l’utilizzo di queste tecnologie innovative agli altri ambiti applicativi di cui ci occupiamo ogni giorno...

Bibliografia

Wooldridge, M. J. (2002).
An Introduction to MultiAgent Systems.
John Wiley & Sons Ltd., Chichester, UK.

Omicini, A. and Poggi, A. (2006).
Multiagent systems.
Intelligenza Artificiale, III(1-2):76–83.
Special Issue: The First 50 Years of Artificial Intelligence.

http://jade.tilab.com/

Aggiungi un commento

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.