As design is a very complicated task, it needs to be decomposed into sub-tasks each of which requires different expertise. This specialized expertise is best represented as an agent. This way of breaking up an expert system, functionally decomposes the complicated task that the system performs into less complicated, autonomous pieces we call agents.
The multi-agent paradigm is very modular and therefore supports ease of construction and maintainability.
Another advantage of having multiple agents is the support for concurrent engineering. Each agent can have a different point of view and can therefore contribute to the design process by taking into account downstream effects of design decisions.
Some attributes of agents in general are veracity, the assumption that an agent will not knowingly communicate false information, benevolence, the assumption that agents do not have conflicting goals and that every agent will always try to do what is asked of it, and rationality, the assumption that an agent will act in order to achieve its goals [Goodwin 93].
The agents in a cooperative design system may be characterized by veracity and rationality but benevolence does not apply. It is very important that agents be allowed to have conflicting goals and this is exactly what makes design a complicated problem.