The day-to-day work of many computer users involves the use of a variety of software tools that were not necessarily designed to work together. These tools may use different data representations and file formats and may even run on a number of different hardware platforms and operating systems. Coordinating the use of these tools, remembering the correct sequence of commands to apply each tool to a particular task and incorporating new and modified tools into the daily work patterns adds additional demands on the user's time and memory. To address this problem, the field of agent-based software engineering (ABSE) was pioneered by researchers involved with the ARPA Knowledge Sharing Effort. This field aims to automate the interoperation of disparate software components by encapsulating software tools and information servers as agents that can receive and reply to requests for services and information using a declarative knowledge representation language KIF (Knowledge Interchange Format), a communication language KQML (Knowledge Query and Manipulation Language) and a library of formal ontologies defining the vocabulary of various domains.
The agents are connected in a federation architecture which includes special facilitator agents. These receive messages and forward them to the most appropriate agent depending on the content of the message (this is known as content-based routing). Agents are responsible for registering the type of message they can handle with the facilitator. Tools can be spread across different platforms, in which case there is one facilitator agent on each machine. These communicate with each other to forward messages from agents on one machine to those on another. The resulting agent system is open and extensible: a new tool can be added to the system by providing it with a 'transducer' program (that translates between KQML and the tool's own communications protocol) or a 'wrapper' layer of code (a KQML interface written in the tool's own command or scripting language) and registering its capabilities with a facilitator agent.
Most previous work in this area has focused on large-scale software interoperation projects in domains such as concurrent engineering where a few complex tools must be used together. Our research is aimed at applying and adapting ABSE technology to smaller-scale software interoperation projects, in particular, what we call desktop utility interoperation where an evolving workbench or toolkit of general-purpose utilities and special-purpose tools is used to solve problems or process information in a user's particular problem domain.
The application domain we are currently investigating is university course administration and we aim to achieve the seamless interoperation of the tools currently used to perform this task:
We are using Java(tm) as the language in which to write the 'transducer' programs that make existing software tools act as KQML-speaking agents (with the KQML communications capabilities provided by the Java Agent Template -- see refs below). The Amzi! Java class is used to implement the facilitator agent which will consist of a Java Agent interface linked to an Amzi! Prolog program that stores agent capabilities and interests and can respond to requests to find agents that can perform particular services.
Dr Stephen Cranefield (Information Science)
Dr Martin Purvis (Information Science)
Dr Paul Gorman (Computer Science)
Aurora Diaz (Information Science & NRC, Canada)
Our agent architecture is in place and it uses the following:
Here are some publications and useful references.
Last updated 24 Aug 1996 by Aurora Diaz