Software Agents
The software world is one of great richness and diversity. Many thousands of software
products are available to users today, providing a wide variety of information and services in a wide variety of domains. While most of these programs provide their users with significant value when used in isolation, there is increasing demand for programs that can interoperate - to exchange information and services with other programs and thereby solve problems that cannot be solved alone.
Part of what makes interoperation dificult is heterogeneity. Programs are written
by different people, at different times, in different languages; and, as a result, they often provide different interfaces. The dificulties created by heterogeneity are exacerbated by dynamics in the software environment. Programs are frequently rewritten; new programs are added; old programs removed.
Agent-based software engineering was invented to facilitate the creation of software
able to interoperate in such settings. In this approach to software development, application
programs are written as software agents, i.e. "software components" that communicate
with their peers by exchanging messages in an expressive agent communication language.