We need open architectures that continuously change and evolve to accommodate new components and meet new requirements. More and more software must operate on different platforms, without recompilation and with minimal assumptions about its operating systems and users. It must be robust, autonomous and proactive. These circumstances motivated the development of Agent Oriented Programming.
The objective of Agent Oriented (AO) Technology is to build systems applicable to real world that can observe and act on changes in the environment. Such systems must be able to behave rationally and autonomously in completion of their designated tasks. AO technology is an approach for building complex real time distributed applications. This technology is build on belief that a computer system must be designed to exhibit rational goal directed behaviour similar to that of a human being. AO technology achieves this by building entities called agents which are purposeful reactive and communication based and sometimes team oriented.
There are different programming methods. Object Oriented Programming is the successor of Structured programming. Agent oriented programming can be seen as an improvement and extension of object oriented programming. Since the word “Programming” is attached it means that both concepts are close to the programming language and implementation level. The term “Agent-Oriented Programming” was introduced by Shoham. So this AOP is a fairly new programming paradigm that supports societal view of computation. In AOP objects known as agents interact to achieve individual goals. Agents can be autonomous entities, deciding their next step without the interference of a user, or they can be controllable, serving as mediatory between user and another agent.
In AOP programming is performed at abstract level. Agent-Oriented Software Engineering is being described as a new paradigm for the research field of Software Engineering. But in order to become a new paradigm for the software industry, robust and easy-to-use methodologies and tools have to be developed. The term AOP was suggested by Shoham.
ESSENTIALS OF AN AOP
Shoham suggests that AOP system needs each of three elements to be complete
1. A formal language with clear syntax for describing the mental state. This would likely include structure for stating beliefs, passing messages etc.
2. A programming language in which to define agents. The semantics of this language should be closely related to formal language.
3. A method for converting neutral applications into agents. This kind of tool will allow an agent to communicate with a non-agent .
AGENT
Before we go in detail into the programming side of AOP lets have a look into what the agent concept is?
Agent is a software process that meets the conventions of OAA (Open Agent Architecture) society. An agent is an abstraction that enables to model a system more easily. With this paradigm, a complex system can be modeled as a set of entities, the“agents”. Agent satisfies this requirement by registering the services it can provide in an acceptable form by being able to speak the Inter agent Communication language (IACL), and by sharing the functionality common to all OAA Agent such as the ability to install triggers, manage data in certain ways etc. An agent according to Shoham is “an entity whose state is viewed as consisting of mental components such as beliefs, capabilities, choices and commitments”. This definition is cryptic at best and useless at worst. In agent Oriented programming there is no single agreed definition of entities that are dealt with it.
“What makes any hardware or software component an agent is precisely the fact that one has chosen to analyze and control it in these mental terms.” – Yoav Shoham