Agents and Complex Systems

Traditional objects can be thought of as passive, because they wait for a message before performing an operation. Then, once invoked, they execute their method and go back to “sleep” until the next message. A trend in many systems now is to design objects that react to events in their environment, as well as be proactive. In UML 2.0, these are known as active objects; in the agent community, they are known as agents. Whether they are called active objects or agents, this new direction is going to radically change how we design systems. The biggest challenge, however, that we face is the degree of complexity that we are about to unleash. Imagine setting free a million proactive entities to run a supply chain. We are no longer choreographing their every movement as we would with traditional agents; instead, they decide when and how to execute their methods. This is both liberating and scary. We can create complex systems, but we will not always know how to control them. In complex systems: designing the parts is not the same as designing the whole.