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 394–403, 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 37–41. ACM Press.