One way of defining a software agent is thus as a piece of software that assists people and acts on their behalf . Though the definitions may vary between people there are a number of aspects that most people agree upon a program must posses to qualify as an agent. The agent must have control over its own actions and be able to work and launch actions independent of the user or other actors. The agents can detect changes in its environment and react to those in a timely matter by answering to events and initiate actions. The agent is able to interact and communicate with users and other agents.
Agents have a purpose and act in accordance with that purpose until it is fulfilled.
Agents can be separated in user oriented agents and collaborative agents. A user oriented agent focuses on the individual, making sure that the user's needs are fulfilled. Every agents is then in itself enough, and the owner of the agent benefits from the start. Collaborative agents are of cause also useful to the individuals but the real benefit comes from the cumulative knowledge of several cooperative agents. A critical mass of agent users must be established before any one may notice any benefits, as indicated in figure 1.