Forces
The architecture must be flexible to address simple and sophisticated agent behavior.
The architecture must support reuse of design and code through extension for specific applications.
The architecture must address security, scalability and integration issues.
The architecture must hide low-level details such as distribution and security aspects.