Recent advances in telecommunication technologies have transformed the world of computing. They have laid out a computation environment through which human and software agents can interoperate with remote programs, get access to spatially distributed resources and communicate with each other in a variety of modalities. This paper describes research on software agents that have a formal description of their internal structure and functioning. This makes it possible that (1) other agents can find out what they are capable of doing, and (2) they can reconfigure themselves when needed to cope with changed environments or changes in tasks [Steels 94]. Each agent has three major components: (1) a conceptual description of its capabilities and behavior, which allows it to interact with humans; (2) a formal description of its components and internal structure, which allows it to interact with other software agents; and (3) code/execution fragments implementing these capabilities, which allow it to interact with its computation environment.
The conceptual component describes the capabilities, knowledge and behavior of the agent in forms understandable by humans (natural language, graphics, simulations). Its purpose is to allow users to understand what the agent can do for them, and how it does it. This component is, in fact, a Knowledge Level model [Steels and Mc Dermott 92] [Steels 92b] [Cuena 93] of the agent that identifies its knowledge structure and components. The notion of the Knowledge Level was first introduced by [Newell 82] as an abstract level of agents description which focuses on the contents of their knowledge and how they use it, instead of on the representation and implementation of this knowledge.
The formal component, called formal Knowledge Level model, describes the components, internal structure and functioning of the agent in mathematical terms. It allows software agents to understand what the agent can do and how it does it, in an abstract and implementation-independent way. It can be formally analyzed in order to derive properties of the agent behavior, such as safeness, consistency, completeness or soundness. Most importantly, it can be formally manipulated by mathematical operations in order to adapt and increase the complexity of the system behavior.
The operational component describes the components and internal structure of the agent in machine understandable forms. It can be executed in order to perform needed computations, such as reading data-structures, executing procedures, modifying data-structures or creating new ones. It contains code/execution fragments for each component of an agent's formal KL-model, and organizes them in such a way that the agent implementation reflects the modularity and configurability of its formal KL-model.
The paper is organized as follows. In section 2, a formal KL-framework that allows the construction of modular and structured formal KL-models describing the components, internal structure and functioning of software agents is proposed. Section 3 presents several scenarios demonstrating how formal KL-models can be used by software agents to reconfigure themselves and to communicate about what they are capable of doing. Section 4 summarizes the main conclusions of our research, and compares it to related work.