<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Agents on the Move: JADE for Android Devices</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Federico Bergenti</string-name>
          <email>federico.bergenti@unipr.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giovanni Caire, Danilo Gotta</string-name>
          <email>danilo.gottag@telecomitalia.it</email>
          <email>fgiovanni.caire,danilo.gottag@telecomitalia.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Telecom Italia S.p.A.</institution>
          ,
          <addr-line>10148 Torino</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universita` degli Studi di Parma</institution>
          ,
          <addr-line>43124 Parma</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-In this paper we describe the current state of the development of JADE add-on for Android, a platform module that enables the deployment of JADE agents on Android devices. First, we motivate the research and we describe the rationale of the project. Then, we detail the coarse-grained architecture of the platform module and we discuss the underlying design decisions. The API of the module is also discussed to detail how programmers use it to host JADE agents on mobile devices. Finally, we briefly outline conclusions on the presented work.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        JADE (Java Agent DEvelopment framework) is the popular
open-source framework that facilitates the development of
interoperable multi-agent systems [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]–[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. JADE is the core
of WADE (Workflows and Agents Development Environment)
(see, e.g., [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]–[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]) and it is one of the most widely used tools
for the development of agent-based systems.
      </p>
      <p>
        Among the most notable uses of JADE in an industrial
setting, Telecom Italia is currently using it to deploy in the field
mission critical applications that have direct influence on the
work of thousands technicians and millions customers. Just to
cite an example, WANTS (Workflow and AgeNTS) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] has been
used for several years to implement a mediation layer between
network elements and OSS (Operations Support Systems) for
the nationwide broadband access network of Telecom Italia.
      </p>
      <p>
        The core design decisions that characterize the architecture
of JADE and that are the ultimate responsible for its proven
modularity have already allowed JADE to fit the constraints of
mobile environments. The adoption of JADE in mobile
environments dates back to early 2000’s with LEAP (Lightweight
and Extensible Agent Platform), a EU-funded project that
provided the first implementation of JADE on the Java-enabled
telephones of the time [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>Today, the results of LEAP are returned to the community</title>
      <p>
        of JADE developers by mean of the LEAP add-on for JADE,
available open-source from the official JADE Web site [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>The LEAP add-on replaces parts of the JADE core module to form a modified runtime environment called JADE-LEAP (or “JADE powered by LEAP”) that can be deployed on a wide range of mobile devices.</title>
    </sec>
    <sec id="sec-4">
      <title>The possibility of hosting JADE agents on Android devices</title>
      <p>described in this paper is offered as an improvement of the</p>
    </sec>
    <sec id="sec-5">
      <title>LEAP add-on, and today the LEAP add-on can be configured</title>
      <p>in the four different ways described below. Though different
internally, all configurations of the LEAP add-on provide the
same API, thus offering a homogeneous layer over a diversity
of devices and networks.</p>
    </sec>
    <sec id="sec-6">
      <title>In details, the four configurations of the LEAP add-on are enumerated as follows: android—to host JADE agents on devices that supports Android 2.1 (or later);</title>
      <p>midp—to host JADE agents on devices supporting</p>
    </sec>
    <sec id="sec-7">
      <title>MIDP 1.0 (or later);</title>
      <p>pjava—to host JADE agents on devices supporting</p>
    </sec>
    <sec id="sec-8">
      <title>J2ME CDC or the obsolete PersonalJava; and</title>
      <p>dotnet—to host JADE agents on Microsoft .NET</p>
    </sec>
    <sec id="sec-9">
      <title>Framework version 1.1 or later.</title>
    </sec>
    <sec id="sec-10">
      <title>It is worth noting that JADE and JADE-LEAP were origi</title>
      <p>nally two different platforms that did not interoperate. It was
not possible to attach a JADE-LEAP container to a JADE main
container, and vice-versa. The introduction of version 4.0 of</p>
    </sec>
    <sec id="sec-11">
      <title>JADE merged JADE and JADE-LEAP into a single platform with full interoperability. This is the reason why we dropped the name JADE-LEAP and today we simply refer to JADE and its configurations for different classes of devices.</title>
    </sec>
    <sec id="sec-12">
      <title>In our opinion, the combination of the rich expressive</title>
      <p>ness of the communication among JADE agents—the IEEE</p>
    </sec>
    <sec id="sec-13">
      <title>FIPA ACL and interaction protocols—with the power and widespread adoption of Android brings a significant value to the development of innovative distributed and decentralized applications.</title>
    </sec>
    <sec id="sec-14">
      <title>II. JADE FOR ANDROID</title>
      <p>The JADE run-time was originally designed to address
a wide class of devices ranging from full featured servers
to mobile phones. In order to properly address the memory
and processing power limitations of mobile devices, and the
characteristics of wireless networks in terms of bandwidth,
latency, intermittent connectivity and address volatility, and
at the same time in order to be efficient when executed on
wired network hosts, JADE can be configured to adapt to
the characteristics of the deployment environment. The JADE
architecture, in fact, is completely modular and, by activating
specific modules, it is possible to meet different requirements
in terms of connectivity, memory and processing power.</p>
      <p>More in details, the LEAP add-on for JADE is in charge
of optimizing all communication mechanisms when dealing
with devices with limited resources and connected through
wireless networks. By activating this add-on, a JADE container
is split, as depicted in Figure 1, into a front-end running on
the mobile terminal and a back-end running on the wired
network. A suitable architectural element on the wired network,
called mediator, is in charge of instantiating and maintaining
the back-ends. To better face high workload situations, it is
possible to deploy several mediators, each of them managing
a set of back-ends.</p>
    </sec>
    <sec id="sec-15">
      <title>Each front-end is linked to its corresponding back-end</title>
      <p>through a permanent bi-directional connection. It is important
to note that it makes no difference at all, to application
developers, whether an agent is deployed on a conventional
container or on the front-end of a split container, since the
available functionality and the APIs are exactly the same.</p>
    </sec>
    <sec id="sec-16">
      <title>The split-container mechanism has a number of features, as enumerated below.</title>
    </sec>
    <sec id="sec-17">
      <title>The back-end masks to other containers the current IP address dynamically assigned to the wireless device, thereby hiding to the rest of the multi-agent system a possible change of IP address.</title>
    </sec>
    <sec id="sec-18">
      <title>The front-end is able to detect connection losses with the back-end and re-establish the connection as soon as possible.</title>
    </sec>
    <sec id="sec-19">
      <title>Both the front-end and the back-end implement a</title>
      <p>store-and-forward mechanism: messages that cannot
be delivered due to a temporary disconnection are
buffered and re-transmitted as soon as the connection
is re-established.</p>
    </sec>
    <sec id="sec-20">
      <title>Many management messages among containers—e.g.,</title>
      <p>to retrieve the address of the container where an agent
is currently running—are handled by back-ends only.
Part of the functionality of a container is delegated
to the back-end and, as a consequence, the front-end
becomes extremely lightweight in terms of required
memory and processing power. In details, the JADE
run-time memory footprint, in a MIDP 1.0
environment, is around 120 KB, and it can be further reduced
to 50 KB by using the so called ROMization technique,
i.e., by compiling JADE together with the JVM.</p>
      <p>The configuration of JADE for Android presented in this
paper is based on the infrastructure that the LEAP
addon provides. JADE containers on Android devices are all
deployed in split mode and they can all take advantage of the
aforementioned features. In particular, the management of the
volatility of the wireless network connection, as implemented
by means of the first three features in the list above, is of
peculiar interest because Android does not really provide an
effective support for it.</p>
    </sec>
    <sec id="sec-21">
      <title>HOW TO USE JADE FOR ANDROID</title>
    </sec>
    <sec id="sec-22">
      <title>Android has a very peculiar approach to the development</title>
      <p>of applications and it also introduces some new concept, and
a new nomenclature, that JADE for Android is demanded to
respect to ensure acceptability from the community of Android
developers. This is the reason why we designed JADE for</p>
    </sec>
    <sec id="sec-23">
      <title>Android with an extensive use of Android-specific concepts and with a strict adherence to the guidelines for Android development, as suggested by the official documentation.</title>
    </sec>
    <sec id="sec-24">
      <title>In details, we decided to wrap JADE for Android into a</title>
      <p>specific Android service. An Android service is an application
component that can perform long-running operations and that
does not provide a user interface. Other application
components can start a service and it will continue to run in the
background even if the user switches to other applications.</p>
    </sec>
    <sec id="sec-25">
      <title>The Android service that bundles JADE for An</title>
      <p>droid is called MicroRuntimeService (in package
jade.android) and it is responsible for configuring the</p>
    </sec>
    <sec id="sec-26">
      <title>JADE environment and for starting and stopping the JADE runtime when required.</title>
    </sec>
    <sec id="sec-27">
      <title>In order to make this service communicating with other</title>
      <p>Android application components (e.g., application
activities), the binder mechanism provided by the Android
application model has been used. The binder is a
userdefined interface exposed by an Android service when
another Android component binds to that service through
the Context.bindService() method. In our case the
binder, namely MicroRuntimeServiceBinder (in
package jade.android) includes methods to manage the life
cycle of the JADE runtime and to communicate with the JADE
agents hosted in the service.</p>
    </sec>
    <sec id="sec-28">
      <title>The first operation to activate the JADE runtime from an Android activity is to retrieve a</title>
      <p>MicroRuntimeServiceBinder object using a
subclass of ServiceConnection (in package
android.content), as follows.
serviceConnection = new ServiceConnection() {
public void onServiceConnected(</p>
      <p>ComponentName className, IBinder service) {
// Bind successful
microRuntimeServiceBinder =</p>
      <p>(MicroRuntimeServiceBinder) service;
public void onServiceDisconnected(</p>
      <p>ComponentName className) {
// Bind unsuccessful
serviceBinder = null;
};
}
}
The newly created microRuntimeServiceBinder object
is used to bind to the service—and to create it if needed—
by means of the Context.bindService() method, as
follows:
Having retrieved the MicroRuntimeServiceBinder
object it is now possible to start a JADE split container as shown
in the code snipped below:
Properties pp = new Properties();
pp.setProperty(Profile.MAIN_HOST, host);
pp.setProperty(Profile.MAIN_PORT, port);
pp.setProperty(Profile.JVM, Profile.ANDROID);
serviceBinder.startAgentContainer(pp,
new RuntimeCallback&lt;Void&gt;() {
@Override
public void onSuccess(Void thisIsNull) {
// Split container startup successful
...</p>
      <p>}
});
}
@Override
public void onFailure(Throwable t) {
// Split container startup error
...
}
}
});</p>
    </sec>
    <sec id="sec-29">
      <title>As usual in JADE development, the host and port where the main container is running—as well as other configuration options—must be specified in a Properties object.</title>
    </sec>
    <sec id="sec-30">
      <title>According to the Android best practices, all operations are asynchronous and the result is made available by means of a</title>
      <p>RuntimeCallback (in package jade.android) object.</p>
      <p>Once the JADE runtime is up and running it is possible to
start an agent as shown in the code snippet below:
serviceBinder.startAgent(nickname,
className,
new Object[] { getApplicationContext() },
new RuntimeCallback&lt;Void&gt;() {
@Override
public void onSuccess(Void thisIsNull) {
// Agent startup successful
...
@Override
public void onFailure(Throwable t) {
// Agent startup error
...</p>
      <p>It is worth noting that the application context of the current
Android application is passed to the agent as first argument. This
allows the agent to access the Android API as needed. Anyway,
this is not sufficient to let the newly created agent interact
the with user, and the cleanest way to implement interactions
between GUI components (mainly Android activities) and the
agent is to use the O2A (Object-to-Agent) interface mechanism
introduced in version 4.1.1 of JADE. This mechanism allows
an agent to expose one or more interfaces that can be retrieved
by external components. External components can trigger
agent tasks by invoking methods of such interfaces.</p>
      <p>The following code snippet shows how to define an O2A
interface that an hypothetical chat agent could expose to let
the application activity: (i) pass chat messages from the user to
the agent to have them forwarded to other users via respective
agents; and (ii) retrieve the list of users currently involved in
the chat.
public interface ChatClientInterface {
public void handleSpoken(String s);
public String[] getParticipantNames();
}</p>
    </sec>
    <sec id="sec-31">
      <title>The handleSpoken() method is used by the application activity to make the agent forward a messages to all chat participants.</title>
      <p>The getParticipantNames() method is used to
retrieve the list of users currently connected to the chat, e.g., to
have it listed to the user.</p>
    </sec>
    <sec id="sec-32">
      <title>The following statement, that should be used in the</title>
    </sec>
    <sec id="sec-33">
      <title>Agent.setup() method, shows how an agent exposes an</title>
    </sec>
    <sec id="sec-34">
      <title>O2A interface.</title>
      <p>registerO2AInterface(</p>
      <p>ChatClientInterface.class, this);</p>
    </sec>
    <sec id="sec-35">
      <title>Similarly, the following statement shows how an Android</title>
      <p>activity can retrieve the O2A interface exposed by the agent,
typically in the Activity.onCreate() method.
chatClientIf = MicroRuntime.getAgent(nickname)
.getO2AInterface(ChatClientInterface.class);
When working with JADE for Android, it is often the case
that an agent needs to proactively communicate with its user
via the application GUI. In an hypothetical chat application
when a chat agent receives a message from another chat
agent, it need to present it to its user via the common chat
trace view. The preferred way to implement this kind of
interaction is to use the mechanism that Android provides to
allow different components of an application to interact. This
is based on broadcasting so called intents that can be received
by interested components. The code snippet below shows how
a chat agent can create and broadcast an Intent (in package
android.content object to notify the GUI that a new chat
message has just been received.</p>
      <p>Intent broadcast = new Intent();
broadcast.setAction("jade.demo.chat.REFRESH");
broadcast.putExtra("msg",</p>
      <p>speaker + ": " + message + "\n");
context.sendBroadcast(broadcast);</p>
    </sec>
    <sec id="sec-36">
      <title>Where context is the field where the agent stored the applica</title>
      <p>tion context received as first startup argument.</p>
      <p>In order for the Android application to register a
receiver for the intents sent by agents, Android requires an
object of a subclass of BroadcastReceiver (in package
android.content), as follows.
private class MyReceiver
extends BroadcastReceiver {
@Override
public void onReceive(Context context,
Intent intent) {
String a = intent.getAction();
if (a.equals("jade.demo.chat.REFRESH")) {
String t = intent.getStringExtra("msg");
...
}</p>
      <p>}</p>
    </sec>
    <sec id="sec-37">
      <title>The code snippets below show how an Android activity can register a receiver to intercept intents broadcast from an agent.</title>
      <p>MyReceiver myReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("jade.demo.chat.REFRESH");
registerReceiver(myReceiver, filter);</p>
    </sec>
    <sec id="sec-38">
      <title>A very complete, yet not too complex, example of using JADE</title>
      <p>
        for Android is available in a dedicated tutorial downloadable
from JADE Web site [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and it implements an agent-based
chat application. The code snippets in this section are largely
inspired by such an example.
      </p>
      <p>Even if the full power of JADE can only be exploited
by means of specific agents and the use of agent-based
messaging, often applications simply need a way to reliably
deliver requests to service agents and have access to respective
responses. For such cases, JADE for Android provides an
helper class called MicroRuntimeGateway (in package
jade.android) that is responsible for managing the
lifecycle of the JADE service and of the embedded container.</p>
      <p>This class provides a gateway between an Android
application and a JADE multi-agent system and it maintains a
single internal gateway agent that acts as an entry point to
the JADE system. The activation/termination of such an agent
(and its underlying split container) are completely managed
by the gateway and the application developers do not need
to care about them. Moreover, the internal gateway agent is
accessible via a simple interface and it acts much like a simple</p>
    </sec>
    <sec id="sec-39">
      <title>Java object, rather than a full-featured agent. IV.</title>
    </sec>
    <sec id="sec-40">
      <title>CONCLUSION</title>
    </sec>
    <sec id="sec-41">
      <title>The motivation of the work presented in this paper is</title>
      <p>that we believe that Android developers can leverage the
features that JADE provides to simplify the development of
decentralized and distributed applications. In particular, we
think that the possibility of combining the expressiveness of</p>
    </sec>
    <sec id="sec-42">
      <title>IEEE FIPA communication with the power of Android brings</title>
      <p>a notable value to the development of innovative applications
based on the peer-to-peer paradigm.</p>
      <p>By means of JADE an Android application can easily
embed agents and therefore become part of a wider distributed
system possibly including other mobile devices (not
necessarily based on Android). JADE for Android provides an
interface that allows an application to start a local agent, trigger
behaviors and, more in general, exchange application-specific
objects with agents. It is therefore possible to discover remote
peers, carry out possibly complex conversations with them,
exploit JADE ontologies to handle structured messages, perform
background activities according to the behavior composition
model and, in general, take advantage of all features of JADE.</p>
    </sec>
    <sec id="sec-43">
      <title>We have already experienced with JADE for Android in a</title>
      <p>recent project called AMUSE (Agent-based Multi-User Social</p>
    </sec>
    <sec id="sec-44">
      <title>Environment) (see, e.g., [11]–[13]). AMUSE is a JADE-based</title>
      <p>
        open-source platform for mobile social games that features
JADE for Android to deploy agents on players’ devices, thus
exploiting the synergistic combination of powerful mobile
devices and the abilities of agents to support decentralized
coordination (see, e.g., [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]). The work in AMUSE
allowed us to improve the features and the stability of JADE
for Android and it also provided complex test cases.
Moreover, the adoption of JADE for Android suggested important
improvements in the Android-specific API.
      </p>
    </sec>
    <sec id="sec-45">
      <title>Finally, we are in the process of bridging JADE with the recent revival of the research on agent-oriented programming languages with JADEL (JADE Language), a novel programming language that eases the development of JADE agents.</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Greenwood</surname>
          </string-name>
          ,
          <article-title>Developing multi-agent systems with JADE</article-title>
          . Wiley Series in Agent Technology,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and G. Rimassa, “
          <article-title>Developing multi-agent systems with a FIPA-compliant agent framework</article-title>
          ,
          <source>” Software: Practice &amp; Experience</source>
          , vol.
          <volume>31</volume>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>128</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <article-title>[3] JADE (Java Agent DEvelopment framework) web site</article-title>
          . [Online]. Available: http://jade.tilab.com
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Banzi</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>WADE: A software platform to develop mission critical, applications exploiting agents and workflows</article-title>
          ,” in Procs.
          <source>Int'l Joint Conf</source>
          . Autonomous Agents and
          <string-name>
            <surname>Multi-Agent</surname>
            <given-names>Systems</given-names>
          </string-name>
          ,
          <year>2008</year>
          , pp.
          <fpage>29</fpage>
          -
          <lpage>36</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>G.</given-names>
            <surname>Caire</surname>
          </string-name>
          , E. Quarantotto,
          <string-name>
            <given-names>M.</given-names>
            <surname>Porta</surname>
          </string-name>
          , and G. Sacchi, “
          <article-title>WOLF: An Eclipse plug-in for WADE,” in Procs</article-title>
          .
          <source>IEEE Int'l Workshops Enabling Technologies: Infrastructures for Collaborative Enterprises</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>Interactive workflows with WADE,” in Procs</article-title>
          .
          <source>IEEE Int'l Conf. Enabling Technologies: Infrastructures for Collaborative Enterprises</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>10</fpage>
          -
          <lpage>15</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <article-title>[7] WADE (Workflows and Agents Development Environment) web site</article-title>
          . [Online]. Available: http://jade.tilab.com/wade
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          ,
          <article-title>Large-Scale Network and Service Management with WANTS</article-title>
          . In press,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Burg</surname>
          </string-name>
          , and G. Caire, “
          <article-title>Deploying FIPAcompliant systems on handheld devices,” IEEE Internet Computing</article-title>
          , vol.
          <volume>5</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>25</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “Ubiquitous information agents,
          <source>” Int'l J. Cooperative Information Systems</source>
          , vol.
          <volume>11</volume>
          , no.
          <issue>34</issue>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>244</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>Agent-based social gaming with AMUSE,” in Procs</article-title>
          . 5th
          <string-name>
            <surname>Int'l Conf</surname>
          </string-name>
          .
          <source>Ambient Systems, Networks and Technologies (ANT</source>
          <year>2014</year>
          )
          <article-title>and</article-title>
          4th
          <string-name>
            <surname>Int'l Conf</surname>
          </string-name>
          .
          <source>Sustainable Energy Information Technology (SEIT</source>
          <year>2014</year>
          )
          <article-title>, ser</article-title>
          .
          <source>Procedia Computer Science</source>
          , vol.
          <volume>32</volume>
          ,
          <year>2014</year>
          , pp.
          <fpage>914</fpage>
          -
          <lpage>919</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>An overview of the AMUSE social gaming platform</article-title>
          ,” in Procs. Workshop From Objects to Agents,
          <year>2013</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>90</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>AMUSE</surname>
          </string-name>
          (
          <article-title>Agent-based Multi-User Social Environment) web site</article-title>
          . [Online]. Available: http://jade.tilab.com/amuse
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Somacher</surname>
          </string-name>
          , “
          <article-title>A collaborative platform for fixed and mobile networks,” Communications of the ACM</article-title>
          , vol.
          <volume>45</volume>
          , no.
          <issue>11</issue>
          , pp.
          <fpage>39</fpage>
          -
          <lpage>44</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Agent-based approach to manage negotiation protocols in flexible CSCW systems</article-title>
          ,” in Procs. 4th
          <string-name>
            <surname>Int'l Conf</surname>
          </string-name>
          . Autonomous Agents,
          <year>2000</year>
          , pp.
          <fpage>267</fpage>
          -
          <lpage>268</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>