=Paper= {{Paper |id=None |storemode=property |title=DomoBuilder: A MultiAgent Architecture for Home Automation |pdfUrl=https://ceur-ws.org/Vol-621/paper12.pdf |volume=Vol-621 |dblpUrl=https://dblp.org/rec/conf/woa/AddisA10 }} ==DomoBuilder: A MultiAgent Architecture for Home Automation== https://ceur-ws.org/Vol-621/paper12.pdf
DomoBuilder: A MultiAgent Architecture for Home
                 Automation
                            Andrea Addis                                                Giuliano Armano
          Dept. of Electrical and Electronical Engineering              Dept. of Electrical and Electronical Engineering
                       University of Cagliari                                        University of Cagliari
                    Email: addis@diee.unica.it                                   Email: armano@diee.unica.it



   Abstract—Current technologies permit people to make use of        about occurring changes. Properties can be made read-only to
various systems able to fulfill most of their needs while being      protect them by accidental access, while methods can be used
at home. However, their use is often not intuitive and they are      to change them, or a collection of them, including the state of
also difficult to integrate. In this paper we propose a solution
to these issues, together with a pragmatical demonstration of        the component in hand.
its effectiveness. The architectural solution we devised, called        The simplest way to describe a device consists of exporting
DomoBuilder, is aimed at abstracting hardware (i.e., electronic      and clearly depicting the set of properties deemed useful for
devices) and software (i.e., applications, systems), with specific   the final user [7]. Encapsulating and combining those proper-
emphasis on the ability of simplifying human interaction while       ties allows to build new interfaces and components, so that the
combining heterogeneous devices within the same application.
In so doing, system integration is promoted, making it easier        system can be enriched with more powerful functionalities.
to devise complex devices that implement new behaviors while            From a software engineering point of view, the Agent-
preserving ease of use. A case study has also been devised           Oriented Software Engineering (AOSE) paradigm [13] allows
and implemented, which highlights the great potential of the         to embed heterogeneous devices in the same architecture,
DomoBuilder architecture.                                            also providing useful supports for communication, persistence,
                                                                     pro-activeness, and mobility. In particular, there are many
                      I. I NTRODUCTION
                                                                     evidences of the advantages in using MultiAgent Systems
   The new technological era has given birth to more and more        (MAS) for Home Automation (aka Domotics) and Ambient
powerful automatic devices for home automation, providing            Intelligence (AmI).
a huge amount of innovative devices and services. However,              Sánchez et al. [11] point out that AmI investigates ubiq-
such systems are often not intuitive, or impossible to use,          uitous computer-based services, based on a variety of objects
without a training phase (e.g., using a TV set typically             and devices, so that their intelligent and intuitive interfaces act
requires to access decoders, recorders, remote controls, and         as mediators through which people can interact with the am-
configuration panels). Even a simple MP3 reader typically            bient environment. The authors also highlight that research in
requires reading a short manual before beign able to use it.         context-aware systems has been moving towards reusable and
   Human beings feel more comfortable with describing an             adaptable architectures for managing more advanced human-
object throughout its properties; in fact, problems that occur       computer interfaces.
with new devices and their use are often due to an imperfect            Acampora and Loia [1] highlight the capability of AmI to
or missing description of the corresponding properties.              deal with a new world, where computing devices are spread
   In principle a property can be read, set, or modified.            everywhere to improve the quality of the interaction between
However, properties can be different in their meaning and            human beings and information technology and to put together
usage. For instance, some are required to describe the internal      a dynamic computational ecosystem capable of satisfying the
state of a device without the need of exporting them to the user     user requirements. They show how the design of AmI systems
(e.g., different parameters can be checked by a car for security     depends upon psychological- and social-science aspects, able
purposes, but the driver does not need to know them), some           to describe and analyze the status of a human being during
are made available to the user in “read-only” mode (e.g., the        the process of decision making performed by a system.
temperature shown by a thermostat), and others are directly             Also device coordination during the execution of services
changeable by the user (e.g., the state of a lamp).                  in AmI systems is of paramount importance, as focused in [6],
   In the Object Oriented paradigm, the scope of a property          where planning capabilities for MAS in the AmI context are
can be controlled with access modifiers. The visual develop-         analyzed.
ment approach, in which complex components export just the              According to Bergenti and Poggi [3], a real load of works
features required for their usage, uses the so-called Properties,    presents the usefulness of the AmI in the health care context.
Methods, Events (PME) model[9]. In PME, properties describe          These applications can take outstanding advantage of the
a component, methods allow to use it (modifying properties           intrinsic characteristics of MAS thanks to notable features that
and/or its state), and events allow the system to be informed        most healthcare applications share: (i) they are composed of
loosely coupled (complex) systems; (ii) they are realized in            The ability of mashing up heterogeneous devices and of
terms of heterogeneous components and legacy systems; (iii)          combining their functionalities permits to give rise to complex
they dynamically manage distributed data and resources; and          systems. Let us consider some trivial –though clarifying–
(iv) they are often accessed by remote users in (synchronous)        examples that highlight this concept: (1) “when the room
collaboration.                                                       temperature is low and the sensor detects a movement, turn
   Further approaches for service-oriented architectures [12],       on the heat pump” and (2) “when the current mp3 playlist
independent from a specific environment [5], or aggregators          has been played, turn lights on”. To this end, DomoBuilder
of technologies, for domestic health purposes [8], are also          provides a support for defining devices, for combining events,
proposed in the literature.                                          and for triggering method calls from a device to another. As
   This work presents DomoBuilder, a multiagent architecture         a result, devices can be connected together to implement new
for home automation, together with a case study aimed at             behaviors.
showing how a complex system for AmI purposes can be
easily built with it.                                                B. Interfaces
   A major issue with this work is to provide really simple hu-         Interfaces can be seen as a particular kind of device, aimed
man interfaces. In fact, in the 21th century, human beings are       at permitting the user to interact with the system. Due to a
expected to communicate with devices and systems mimicking           reflective behavior performed on top of devices, interfaces
the way they communicate with each other, e.g., throughout           in DomoBuilder can dynamically retrieve information about
natural speech and/or gestures. People that are clueless when        features of other devices. Furthermore, each device can store
it comes to computer technology should be taken as target,           visual information about its appearance and its position in the
our goal being to make the system usable also to people              environment, thus permitting to build a 3D-like visualization
that are not familiar even to simple operations like selecting,      of the structure of a system in terms of its embedded devices.
dragging and clicking items with a mouse. For this reason,              This approach makes it also easier to ask a device how it
DomoBuilder represents every single component of the system          can be useful for our purposes. 1
by its properties and shows in natural language a description
of the operations it can perform.                                    C. Agents
   The rest of the paper is organized as follows: Section               Since every device hosted by DomoBuilder must be au-
II illustrates the DomoBuilder architecture and Section III          tonomous and must natively integrate social abilities to interact
describes its “internals”. The case study is then presented in       with the other devices, the AOSE paradigm has been adopted,
Section IV. Conclusions and future work (Section V) end the          as Domobuilder has been built upon the agent framework
paper.                                                               JADE [2].
                                                                        In particular, DomoBuilder devices are in fact Jade agents.
           II. D OMO B UILDER B UILDING B LOCKS                      To define a specific kind of device one should extend the
   DomoBuilder is a multiagent architecture for home au-             Device class of DomoBuilder, setting name, description and
tomation, which promotes the abstraction of any software or          properties. This is the only information required to allow the
hardware device. Furthermore, it allows to centralize their          user and (instances of) other devices to communicate with it
control and to make uniform their interface, so that interacting     (i.e., with an instance of the device being defined).
with them becomes very easy, also thanks to the integration             A special agent called Kernel (see section III-C) has been
of special devices explicitly devised for handling human             defined –aimed at controlling the life cycle of devices and at
interfaces. According to [10], in DomoBuilder each device is         handling system events. In fact, according to[4], it is really
intended as the building block of a system –i.e., a resource or      useful to delegate a particular kind of agent to centralize
tool that has describable properties and can encapsulate some        the knowledge about the network of components embedded
kind of functions. Moreover, thanks to a centralized control, it     by a system. A GUI called Panel is also available when
is possible to connect devices for building complex systems.         a DomoBuilder system starts, together with a Clock device
                                                                     useful to temporize actions. In DomoBuilder, devices can be
A. Devices                                                           added and activated at run-time. The Kernel handles the life
                                                                     on the system and its persistence.
   Let us take as examples of device a light bulb and an mp3
player. The former has one property that describes its state         D. Containers
(i.e., on/off), and a method that allows to turn on and off (i.e.,
toggle) the light, whereas the latter can: (i) store the track         In general, a device wraps and controls the corresponding
loaded, (ii) store its state (i.e., it is playing/stopped/paused),   hardware or software device. It can communicate within the
(iii) play a particular track, (iv) search for a track, and (v)         1 See for example http://www.alice.org/. Alice is an innovative 3D pro-
trigger an event –e.g., when a track or a playlist is finished.      gramming environment that makes it easy to create an animation for telling a
Other examples of common devices used in Home Automation             story, playing an interactive game, or a video to share on the web. Alice is a
                                                                     teaching tool for introductory computing. It uses 3D graphics and a drag-and-
are a thermostat, a sensor, a microwave, and a washing-              drop interface to facilitate a more engaging, less frustrating first programming
machine.                                                             experience.
system and move across JADE containers. The containers be-
longing to the main platform are two: (i) the “Core” container,
which hosts the Kernel, and (ii) the “Devices” container, which
hosts the Panel and other devices. When additional machines
want to connect to the system, they must connect their own
JADE container to the main platform2 (see Figure 1).




                                                                                 Fig. 2.   Morettillo, a panel for controlling electronic devices




                      Fig. 1.   The system at a glance


E. General-Purpose Transducers
    As DomoBuilder is expected to deal with heterogeneous                                          Fig. 3.   The Panel Device
hardware devices, a general-purpose transducer, called Moret-
tillo, has been devised and implemented (see Figure 2).
Morettillo is a small plug-and-play hardware device equipped                  The Panel device (see Figure 3) is a very simple graphical
with radio switches, which allows to interact with up to 5                 user interface, which allow to easily communicate with the
output (wired or wireless) and 7 input channels. It is endowed             other devices, hiding the technical details concerning commu-
with a transmission channel compatible with switches working               nication.
on radio frequencies 433.92MHz x 1000W max, which are
commonly used and not expensive (about 7 Euros x plug).                    B. Events
Connected via USB and auto-powered, Morettillo is automat-                    Events are handled by the Kernel throughout an instance of
ically recognized by MS Windows.                                           the class EventHandler, which is contained in UltraUnits, a
                 III. D OMO B UILDER I NTERNALS                            general purpose library that has been implemented to provide
                                                                           a suite of tools for handling common data structures, operating
   At the first start, a default configuration is created, which           system components, data sources, and multimedia. An instance
includes a Panel and a Clock device. The former is a GUI that              of the EventHandler class is generated according to the single-
allows to interact with the system, whereas the latter is useful           ton pattern, yielding the eventHandler object, which is used to
to create temporized rules (e.g., alarms or time events).                  dispatch asynchronous events if given conditions are reached.
A. Communication                                                           A condition represents the achieved state of one or more
  Since devices are JADE agents, it is possible to communi-                variables. When a condition is reached a corresponding action
cate with them using ACL performatives according to a given                is undertaken. It is also possible to define time constraints, and
ontology.                                                                  the number of times an action can be executed.
                                                                              As an example let us assume that one wants to create the
  2 A batch file is provided to quickly and easily start a new platform.   following rule: “when the thermostat measures less than 18
degrees, the Panel must show the new temperature provided              speech engine, whereas it can be used by other devices
that the light is on. Activate this rule from December 20th ,          to communicate with the user);
2010, at 8pm and only on Monday” we must write:                     • devicePosition (optional): the physical position of a de-

Thermostat/Light Rule Example                                 vice in the environment;
Thermostat.Temperature<<18<&& /> Lamp.light==ON         • deviceImage (optional): the image used to represent the

PANEL SHOW The new temperature is %value%.                     device.
                                                           The properties of a device are identified by their name and
START 2010-12-20,DAY_OF_WEEK 2
                                                 can store a string value, optionally with the type of the value.
-1                                                         They can be set calling the method:

                                                                     putDeviceProperty (String name, String description,
C. Kernel                                                                                 String type, String format,
  The Kernel is aimed at managing (i) the life cycle of the                               String initialValue)
devices populating the system and (ii) the occurring events. In   where:
order to do this, the Kernel uses the following commands:            • name: the name of the property.
  1) Commands to Manage Devices:                                     • description: a string that describes the property, in natural
  • KERNEL_DEVICE_ADD: adds a device to the sys-                       language;
     tem defining its name (e.g., Thermostat), according             • type: the type of the property (it must be a Java class
     to the given class (e.g., domo.devs.Thermostat), and              name);
     the name of an existing container (e.g., Devices). On           • format: the property in an EBNF-like format;
     failure (e.g., when the container does not exist) a             • initialValue: a string representing the initial value (it can
     KERNEL_DEVICE_ERROR command is issued.                            be empty).
  • KERNEL_DEVICE_REMOVE: removes a device identi-                   The methods applicable to a device are identified by their
     fied by its name.                                            name, the parameters of a method (if any) being embedded into
  • KERNEL_DEVICE_ADDED:              informs the Kernel          a single string (multiple parameters can also be represented
     that a device has been correctly created. Then               in XML format). A method can be attached to a device as
     the KERNEL_EVENT_TRIGGERED command is                        follows:
     issued (e.g., KERNEL.KERNEL_DEVICE_ADDED ==                     putDeviceMethod (String name, String description,
     Thermostat).                                                                        String type, String format)
  • KERNEL_DEVICE_ERROR: informs the Kernel that an               where:
     error has been triggered by a device.                           • name: the name of the method;
  2) Commands to Handle Events:                                      • description: the description of the method in natural

  • KERNEL_EVENT_ADD: adds an event defining its prop-                 language;
     erties;                                                         • type: the type of the property, i.e., the name of a Java

  • KERNEL_EVENT_REMOVE: removes an event identified                   class;
     by its id;                                                      • format: the property in an EBNF-like format.

  • KERNEL_EVENT_TRIGGERED: informs the Kernel that               A device can handle the following commands:
     an event has been triggered (i.e., a device changed its         • DEVICE_METHOD: executes a method with its parame-
     state).                                                           ter;
                                                                     • DEVICE_MOVE: moves the device to another container;
D. Devices                                                           • DEVICE_DIE: turns off and remove a device from the
  As already pointed out, devices are agents wrapping                  list of devices.
hardware devices into DomoBuilder. Their description is set
                                                                  E. Requesting Information
during their development by calling the methods:
                                                                     Requests on different topics can be made to the Ker-
  putDeviceDescription(String deviceDescription)                  nel or to a device by sending the message “INFORMA-
  putDeviceDescription(String deviceDescription,                  TION REQUEST”. The corresponding reply will be given
                         boolean deviceVisible,                   throughout the message “INFORMATION INFORM”.
                         BufferedImage deviceImage,                  The list of topics, with the corresponding parameters and
                         Point3D devicePosition)                  answers, follows:
where:                                                               • TOPIC_DESCRIPTION: requests the description to a
  • deviceDescription: a string describing the device;                 device (parameters = none, answer = the description
  • deviceVisible (optional): a boolean value indicating               of the device in text format);
    whether the device is visible in the control panel. In           • TOPIC_PROPERTY: requests a specific property to a de-
    fact, a device can be removed from the Panel if not used           vice (parameters = the name of the property, answer
    by a user (e.g., a user may not need to interact with a            = the name of the property and its value);
  • TOPIC_EVENTS: requests the list of the events to the           device to inspect. Upon clicking, the properties of the device,
    Kernel (parameters = none, answer = the system                 together with the corresponding values, will be listed on the
    events in text format).                                        left, whereas the method buttons will appear on the right side
  • TOPIC_DEVICELIST: requests the list of the device              of the Panel.
    names to the Kernel (parameters = none, answer
    = the name of the devices in text format, one for each         B. Building a New Device
    line).                                                           To create a device, one must extend the domo.Device
                                                                   DomoBuilder class. To describe the device, together with its
To give the reader the flavor of how an information request        properties and methods, the putDeviceDescription, putDevi-
is issued, let us consider the following examples:                 ceProperty, putDeviceMethod must be called as described in
                                                                   section III-D.
> Kernel INFORMATION REQUEST TOPIC EVENTS                            For the sake of simplicity, let us take a look at the Clock
                                                                   device, which is actually already available in DomoBuilder. As
> Thermostat INFORMATION REQUEST
                                                                   we can see from Figure 4, the final device ought to have three
             TOPIC PROPERTY Temperature
                                                                   properties and three methods. An example of code follows:
  The answer is issued by the device to which the request has
been addressed throughout the overridden method:

onAnswer(String senderLocalName, String topic, String an-
swer).
                        IV. C ASE STUDY
  The case study (called DomoPro) developed in the field of
home automation consists of:
  • Panel: A GUI for the system
  • HiFi: An mp3 Reader
  • Clock: A system clock with alarm
  • Pyrotz: A device that can understand commands in nat-
                                                                               Fig. 4.   The Panel shows the Clock properties
     ural language
  • Movimentio: A movement sensor that exploit a computer
                                                                       public Clock() {
     webcam                                                                putDeviceDescription("A timer with alarm");
                                                      3
  • Nabaztag: A device to control the Nabaztag Tag , a Wi-                 [...]
                                                                           putDeviceProperty("Time", "The Actual Time", ...
     Fi enabled ambient electronic device in the shape of a                [...]
     rabbit                                                                putDeviceMethod("setAlarmTime", "Set the Alarm Time"’, ...
                                                                           [...]
  • Skype: A device that interfaces the system with the Skype
     messenger                                                             timer.start(999);
                                                                       }
  • Talker: A text to speech synthesizer
  • MailReader: A device able to read e-mails                        Note that the device timer has been instantiated to run an
  • Morettillo: A device that controls the homonym general-        action each second; i.e., every second the overridden method
     purpose hardware device                                       onTimer() will be called. In this particular case, the onTimer()
  • Piantana: A device that controls a lamp                        method will (i) update the time of the clock and (ii) check
  • Scaldabagno: A device that controls a house water heater       whether the alarm sound has to be played.
  Thanks to the portability of DomoBuilder and to the plug-          At this point, the system knows the description of this
and-play capability of Morettillo, a new installation of the       device, its readable properties, and its callable methods. To
above set of useful home automation functionalities can be         better illustrate what happens when a user or a device in the
performed in less than 10 minutes.                                 system calls a method, let us report the following Java code,
                                                                   which overrides the default onMethod() method:
A. Starting DomoPro
                                                                     @Override
   When DomoBuilder starts for the first time, a new con-            public void onMethod(String name, String value) {
                                                                         if (name.equals("setAlarmTime")) {
figuration file (i.e., domo.xml) is created; then the Kernel,                // Example of changing a property
the Panel, and the Clock start running. The properties and                   set("AlarmTime", value);
                                                                           }
methods of these devices can be easily inspected throughout              if (name.equals("playAlarm")) {
the graphical interface of the Panel (see Figure 4). In order to             // Example of calling an inner method
                                                                             soundAlarm();
do this, the user must click the button with the name of the             }
                                                                         [...]
  3 See Nabaztag on Wikipedia.                                       }
In so doing, our Clock device is ready.                                       E. Adding Events to DomoPro
                                                                                 All DomoPro devices can be used in isolation. For instance,
C. Adding Further Devices to DomoPro
                                                                              the talker could be asked to say “Hello”, the house lights
   The Kernel can be asked at any time to add further devices.                can be turned on and off (even from an Internet computer
For the sake of brevity, let us describe how to add the                       connected with Skype). More interesting is when DomoPro
Morettillo device.                                                            automatically undertakes decisions and executes complex be-
   The following command must be sent to the Kernel through                   haviors (i.e., behaviors that involve different devices). Some
the Panel command box4 :                                                      examples of complex behaviors follows:
KERNEL KERNEL_DEVICE_ADD                                                         1) When Pyrotz utters or answers something, should Talker
Morettillo
domo.ultra_devices.Morettillo
                                                                                     synthesize it.
Devices                                                   2) When somebody wakes up in the morning, turn on the
                                                                                     mp3 reader
   After that, the Morettillo button will appear on the panel,
                                                                                 3) When somebody gets back home in the afternoon, read
close to the buttons of other devices. Please note that this
                                                                                     the emails
operation could be made completely automatic, being the
                                                                                 4) When somebody leaves the room, turn off the lights
device recognized and activated as soon as its class (e.g., jar
                                                                                 5) If somebody touches the ears of the Nabaztag, ask him
file) is added to the program folder.
                                                                                     to stop doing it
D. Analysing Some Relevant Devices of DomoPro                                              V. C ONCLUSIONS AND F UTURE W ORK
  1) Pyrotz: We prototyped Pyrotz, a device which permits                        In this paper we proposed and illustrated DomoBuilder,
to communicate with the system using natural language.                        an architectural solution aimed at abstracting hardware and
We can communicate with Pyrotz by sending the com-                            software, with specific emphasis on the ability of simplifying
mand message DEVICE_METHOD device.user Hear                                   human interaction while combining heterogeneous devices
Hello my friend!5 as well as writing Hello my Friend!                         within the same application. A case study has also been
in the big yellow text field on the Panel. It will write the                  illustrated, which highlights the great potential of the Do-
answer in the small yellow panel below (see Figure 5).                        moBuilder architecture. With DomoBuilder, it is very easy
                                                                              to devise, implement, and install easy-to-use and low-cost
                                                                              systems for Home Automation, also thanks to the uderlying
                                                                              multiagent architecture that facilitates the integration of, and
                                                                              the interaction among, heterogenous devices.

                                                                                                      ACKNOWLEDGMENTS
                                                                                 We would like to thank Marco Lai (aka Moretti) for his help
                                                                              in developing the Morettillo hardware device and Eloisa Vargiu
                      Fig. 5.   Saying hello to Pyrotz                        for her useful suggestions about the DomoBuilder architecture.

   Pyrotz can understand natural language, so, it is able to                                                R EFERENCES
translate sentences like: “turn on the light”, “please could                   [1] G. Acampora and V. Loia. A dynamical cognitive multi-agent system
you turn the lights on?”, “it is too dark, make light”, with,                      for enhancing ambient intelligence scenarios. In FUZZ-IEEE’09: Pro-
                                                                                   ceedings of the 18th international conference on Fuzzy Systems, pages
Piantana DEVICE_COMMAND Switch ON.                                                 770–777, Piscataway, NJ, USA, 2009. IEEE Press.
   Thanks to the event-triggering mechamism, when Pyrotz                       [2] F. Bellifemine, A. Poggi, and G. Rimassa. Developing multi-agent
says something the Talker will speech it.                                          systems with JADE. In ATAL ’00: Proceedings of the 7th International
                                                                                   Workshop on Intelligent Agents VII. Agent Theories Architectures and
   2) Skype: The system can be interfaced with the Web by                          Languages, pages 89–103, London, UK, 2001. Springer-Verlag.
wrapping any kind of Internet application. For instance, thanks                [3] F. Bergenti and A. Poggi. Multi-agent systems for e-health: Recent
to the Skype device, we can (i) directly send commands to                          projects and initiatives. In 10th Workshop dagli Oggetti agli Agenti
                                                                                   (WOA 2009), 2009.
DomoPro or (ii) chat with Pyrotz. Using an external voice                      [4] W.-H. Chen and W.-S. Tseng. A novel multi-agent framework for the
recognition software it is also possible to talk to DomoPro.                       design of home automation. Information Technology: New Generations,
                                                                                   Third International Conference on, 0:277–281, 2007.
   In principle, everybody can talk and receive answers from
                                                                               [5] G. Fiol, D. Arellano, F. J. Perales, P. Bassa, and M. Zanlongo. The
Pyrotz, even if for obvious security reasons, only selected                        intelligent butler: a virtual agent for disabled and elderly people assis-
Skype users are allowed to send command to the house in                            tance. International Symposium on Distributed Computing and Artificial
which the system has been installed.                                               Intelligence 2008 (DCAI 2008), 2009.
                                                                               [6] N. Gatti, F. Amigoni, and M. Rolando. Multiagent technology solutions
                                                                                   for planning in ambient intelligence. In WI-IAT ’08: Proceedings of the
  4 Opening the command box, a list of command templates is given.
                                                                                   2008 IEEE/WIC/ACM International Conference on Web Intelligence and
  5 The parameter device.user identifies the sender, e.g., domo.Panel. This        Intelligent Agent Technology, pages 286–289, Washington, DC, USA,
prevents other devices to communicate with it; “Hear” is the method name,          2008. IEEE Computer Society.
and the rest is the parameter of the command, or the sentence in this case     [7] G. G. Márquez. Cien años de soledad. 1967.
 [8] C. Munoz, D. Arellano, F. J. Perales, and G. Fontanet. Perceptual and
     intelligent domotics system for disabled people. In Proceedings of the
     Sixth IASTED International Conference, 2006.
 [9] K. Reisdorph and H. Ken. Borland C++ Builder. Apogeo, 1997.
[10] A. Ricci, M. Viroli, and A. Omicini. Give agents their artifacts: the
     A&A approach for engineering working environments in MAS. In E. H.
     Durfee, M. Yokoo, M. N. Huhns, and O. Shehory, editors, AAMAS, 6th
     International Joint Conference on Autonomous Agents and Multiagent
     Systems (AAMAS 2007), Honolulu, Hawaii, USA, May 14-18, 2007, page
     150. IFAAMAS, 2007.
[11] N. Sanchez, E. Mangina, J. Carbs, and J. M. Molina. Multi-agent system
     (mas) applications in ambient intelligence (ami) environments. Trends
     in Practical Applications of Agents and Multiagent Systems, 2010.
[12] N. I. Spanoudakis and P. Moraitis. An ambient intelligence application
     integrating agent and service-oriented technologies. In SGAI Conf.,
     pages 393–398, 2007.
[13] F. Zambonelli and A. Omicini. Challenges and research directions in
     agent-oriented software engineering. Journal of Autonomous Agents and
     Multiagent Systems, 9:253–283, 2004.