Since each individual agent can be crafted to be an expert in solving a specific problem or performing a particular task, you can build systems that exhibit complex behaviors by using a collection of relatively simple agents. Sometimes, however, we do need to build agents that are quite smart. With the agent-based approach, you can implement agents with sophisticated intellectual capabilities such as the ability to reason, learn, or plan. In addition, intelligent software agents can utilize extensive amounts of knowledge about their problem domain. This means that the underlying agent architecture must support sophisticated reasoning, learning, planning, and knowledge representation.
Software agents provide an ideal mechanism for integrating legacy systems with new data systems.
Agents are well-suited to implementing these middleware applications. Agents can be used to perform data translation and implement data systems interfaces that meet a wide variety of requirements. In many applications, system developers have legacy code that performs some unique function which is needed in their new applications. A software agent can be used to invoke and execute this legacy code, leveraging the value of the existing code base. Note that the software agent implementation must provide the appropriate support to enable execution of native software and legacy code.