About this software
This software intends to facilitate the development of MAS by supporting
the INGENIAS Development Process (IDP). This process was created to help
developers to use agent concepts in the context of a system development
following engineering practices. As a result, this process proposes a
set of deliverables, activities, and guidelines about how these activities
could be organized.
If you are interested in the IDP, you could review our dedicated web
site (http://grasia.fdi.ucm.es/ingenias).
Also, you can consult our published papers [1] [2]
The IDP is supported by tools that implement notation and implementation
techniques described in the original work of INGENIAS. We name these tools
the INGENIAS Development Kit (IDK), and that is what this distribution
is giving to you. To know more about the IDK, please, read the following
sections
Meta-model
INGENIAS defines a meta-model for determining what is an agent and what is a MAS. This meta-model is public and can be accesed at INGENIAS METAMODEL V1.0. The figure shows an example of the agent meta-model that INGENIAS apply. There are other parts of the INGENIAS meta-model that describe other aspects, as well. We recommend visiting the metamodel web site and surf a little through INGENIAS concepts. Readers will find explanations of what each symbol means and recommendations abot their use.
Ingenias Development Kit (IDK)
This section presents the development kit for MAS modelling, code generation,
and module extension of INGENIAS. In this document, readers will find:
What is the IDK?
IDK stands for Ingenias Development Kit. It has two parts:
- INGENIAS Editor. With it, we generate specifications of a MAS using
generic agent concepts.
- INGENIAS Tools and INGENIAS Code Generators. It is a framework that
facilitates traversing a specification and producing a single output.
This framework has been integrated with the INGENIAS Editor so that
developers can
- Include new tools in the IDE automatically. These tools process
directly existing diagrams in the tool through an API that is supplied
directly to the extension program.
- Include new code generators automatically in the IDE. A code generator
is a piece of software that can traverse different diagrams and
generate a piece of code that uses data from these diagrams. Code
generators are a feasible solution to overcome the gap from specification
to implementation.
The IDK is very important in the INGENIAS development process since it
allows rapid application development, decoupling of specification and
implementation and verification of the specification according to the
needs of the implementation.
The INGENIAS Editor
INGENIAS Editor is the main development tool for INGENIAS methodology.
It is the replacement of Rational Rose or other UML based tools for those
researchers that work with software agents. Currently, it allows to generate
a high or low level representation of Multi-Agent Systems.
This editor is the generator of the specifications later used by code
generators. There is a manual that you can consult to lear how to use
the editor.
Current version supports the following features
- Alpha version of AUML protocol diagrams (from version 2.3)
- Facilities to create/destroy/modify diagrams
- Structures diagrams with packages
- Repository of objects that keeps references to every object in any
diagram
- Integrated help for using notation of INGENIAS
- Generation of Customised HTML documentation from the diagrams
- It can obtain snapshots of diagrams in PNG format
- Automatic layout of relationships
- Cut/Copy & paste of elements of diagrams
- Save/load of your project
- Automated code generation facilities
- Handling several diagrams at the same time
- Plugin loading in run-time
AUML-like Protocol diagrams
|
First of all, this effort is not any official release of AUML,
it is a free implementation of the AUML draft available at http://www.auml.org
The IDK includes an alpha version of an AUML-like protocol diagrams.
They allow you to represent simple protocols and even analyze the
resulting diagrams from the code generation facilities. Diagrams
can be stored an restored without problems, according to our experiments.
In fact, users are advised to save frequently the diagrams to prevent
exceptions that may occur.
The definition of these diagrams is tricky at some moments. We
strongly recommed you that you read the INGENIAS manual. You will
find a whole section with instructions about how to deal with these
diagrams
This implementation bases on the last AUML draft but it is not
complete. However, it may help you to define those diagrams in a
more comfortable way.
In future relases, these diagrams will be improved and further
integrated with INGENIAS and code generation facilities.
If you want to see more snapshots of the AUML-like diagrams, please
visit our snapshot section
|
 |
Trouble shooting
- I have compiled modules and suddenly the IDE has thrown a CLASSNOTFOUND
exception. Please, check that your module has all the files it requires.
Your module can use only files from its deployment .jar or from the
classpath. If you launched the Editor with java -jar lib/ingeniaseditor.jar,
then the problem is that using "java -jar" blocks any acces
outside the referred jar, so extra libraries cannot be found. Please,
install ANT and run "ant runide"
from the distribution folder. As an alternative, include all jars in
the lib folder into your classpath and run java ingenias.editor.IDE
- I start the Editor, it shows a CLASSNOTFOUND exception, and then
it shuts down. There are modules in your ext folder that
require extra libraries. If you launched the Editor with java -jar lib/ingeniaseditor.jar,
then the problem is that using "java -jar" blocks any acces
outside the referred jar, so extra libraries cannot be found. Please,
install ANT and run "ant runide"
from the distribution folder. As an alternative, include all jars in
the lib folder into your classpath and run java ingenias.editor.IDE
- The Editor throws an IllegalArgumentException. Please, review
your module and check that you define two constructors: an empty contructor
(without parameters) and another that considers one parameter of type
String. Check the BasicToolImp.java and BasicCodeGeneratorImp.java to
see the detailed form of constructors
- My module properties do not appear in the Editor on selecting Project->Properties.
Check that you have implemented the method defaultProperties in your
module. That method defines all the properties your module may need.
- The Editor does not update a module's code. In principle, the
Editor will reload any new jar file allocated in the ext folder.
In any case, this feature fails some times. First, check other troubles
in this section and if they don't solve your problem, I would recommend
you just to shut down the Editor and then restart it.
- I get a "invalid LOC Header". This happens when the
Editor starts reading a jar file meanwhile the jar utility is generating
it. To avoid this, please, first generate the jar file somewhere else,
and then copy it to the ext folder. Please, check the script
for creating jar files in the howto section.
After an error like this, you should start again the Editor
- The ext folder shows a lot of libraries with the _ symbol preceding.
This is due the unstability of the dynamic loading procedure. The Editor
uses URLClassLoader instances to load files from jar files. On accessing
these files, the JVM locks them and windows claims that they are being
used. This is a problem if you intend to provide newer jar files with
updated classes. To solve it, current versions renames jar files before
loading them. Also, before closing the Editor, it proceeds to remove
extra jar files, keeping only last version and removing underscore symbols.
- My module seems to do always the same even if I change it and redeploy
it. Please, check that you have not compiled having as output file
one of the folders contained in your classpath. Dynamic update of classes
works only if you dont generate a module's .class files inside any existing
classpath folder.
- I get a ERROR:Not well formed.
A template used by your code generator is not correct. Please run it
through a XML parser to check that it is XML compliant. If you used
the @ format where < and > symbols are replace with @, you can
run java ingenias.generator.util.Conversor -at2 [your template].
This will generate through standard output a normalized version of your
file.
- I get a ERROR:(class: ingenias/generator/interpreter/Codegen,
method: obtainTemplateData signature: (Ljava/lang/String;)Ljava/util/Vector;)
Incompatible object argument for function call.
To solve this, just recompile your module again.
- I get a File Tag Empty exception.
Please check that you have written a valid file path in the template
between file tags. In case you have, check that every variable
referred in this tag is defined in your code generator.
- I get a ERROR:templates/XXXXXX was not
found in the classpath or current jar. Run a jar -tf
ext/mydeploymentjarfile.jar and check that the template appears
exactly in the folder that has pointed the error, in this case templates
folder. In case it is where it should be, please, check in your
classpath that your code generator binaries (.class files) do not appear
in any folder belonging to your classpath. These binaries should be
present only in your deployment jar.
- I get a ERROR:class XXXXXX not found
. Run a jar -tf ext/mydeploymentjarfile.jar and
check that the class appears exactly where it should be: in the package
structure that has pointed the error. In case it is where it should
be, please, check in your classpath that your code generator binaries
(.class files) do not appear in any folder belonging to your classpath.
These binaries should be present only in your deployment jar.
- A module I have defined does not appear in the Editor after deploying
it.
- Please, check that your module inherits from BasicToolImp or BasicCodeGeneratorImp
or that it implements BasicTool or BasicCodeGenerator interfaces.
If it does not inherit these classes or it does not implement these
interfaces, the Editor will not recognise your module.
- Please, check that your module does not name as other modules.
Module name is supposed to be unique unless you intend to replace
some existing module. If two modules have the same name, the newest
overwrites the oldest
Licensing
The software that can download here is licensed under GNU's GPL. It is
important that you know what is GPL and how it benefits you. This software
has been developed by Dr. Jorge J. Gomez Sanz and Ruben Fuentes for the
GRASIA research group (http://grasia.fdi.ucm.es)
under the direction of Dr. Juan Pavon.
Contributors
The following students have contributed to the IDK:
- Guillermo Jimenez (2003). He provided a modeling example for the Quake
(TM) game
- Juan Antonio Recio (2004). He developed a module able to map SOAR
architecture primitives into INGENIAS notation diagrams. To demonstrate
the viability of the translation procedure, there is a demo that translates
the Tank SOAR example into INGENIAS specification which is included
in the IDK 2.3 distribution. This demo runs only with the SOAR software
installes, as well as TCL/TK. More instructions can be found in the
INGENIAS manual included in the distribution or downloaded independently.
- Carlos Celorrio (2004). Modified current existing JADE module so that
it could work with JADE Leap and added the possibility of making the
agents mobile. To test the module, he defined the cinema ticked sales
scenario and a specialised module that translated the example into code.
More instructions can be found in the INGENIAS manual included in the
distribution or downloaded independently.
Credits
The creators of INGENIAS IDE are:
Jorge Gómez Sanz. Associate
Professor in the Faculty of Computer Science in Universidad Complutense
de Madrid.
Ruben Fuentes. Research Assistant
in the in the Faculty of Computer Science in Universidad Complutense de
Madrid.
Under the direction of
Juan Pavon. Professor of the Faculty
of Computer Science in the Universidad Complutense de Madrid.
References
[1] Gomez-Sanz, J. and Pavon, J. (2003). Agent oriented
software engineering with INGENIAS. In Vladim´ýr Mar´ýk
and J¨org M¨uller and Michal
Pechoucek, editor, Multi-Agent Systems and Applications III, volume 2691
of LNCS, pages 394403, Prague, Czech Republic. 3rd International
Central and Eastern European Conference on Multi-Agent Systems, CEEMAS
2003, Springer Verlag.
[2] Gomez-Sanz, Jorge J., Pavon, Juan, and Garijo,
Francisco (2002). Metamodels for building multi-agent systems. In Proceedings
of the 2002 ACM symposium on Applied computing, pages 3741. ACM
Press.
|