Task: Design Agent Architecture
Describe the internal structural elements and their interactions for all involved agent types to fulfill the non-functional requirements.
Disciplines: Architecture
Relationships
Parent Practices
RolesPrimary Performer: Additional Performers:
InputsMandatory:
    Optional:
      Outputs
        Main Description

        For each of the agent types identified, an internal architecture has to be designed as the basis of the development of the agents. The agent architecture has to support the capabilities of the agent type and fulfill the requirements and goals identified during requirements analysis. As the development of the system and the different agent types progresses, the design changes based on the existing development work and new or altered requirements.

        The result of this task is a self-contained internal architecture for each of the different agent types.

        In ASPECS (Cossentino et al., 2010) a similar purpose is fulfilled by the "Agent Architecture Description“ activity, part of the ”Agent society design phase“ which has a strong focus on the roles of agents: "The Agent Architecture Description (AAD) activity aims at providing precise indications on the architecture that should be adopted by agents. Indeed, the agent architecture is at least defined by the set of roles that the agent should play and the minimal set of services that implement the capacities required by these roles. The association between Agents and Agent Roles allows the identification of the set of capacities that are required by Agent Role in order to be played by agents."

        Steps
        Identify goals and requirements relevant for the agent architecture

        Select those goals and requirements that are relevant for the design of each type of agent. Work with the stakeholders and the requirements team to find out which requirements have the most impact on the agent architecture and start with these.

        If  a goal-driven requirements elicitation process was performed, the responsibilities for requirements can be used to guide the process.

        Determine architecturally significant design elements
        The identified goals and requirements, the description of the capabilities, and the domain model can provide starting points for the design elements that need to be part of the architecture.
        Create relationships between design elements
        Once the design elements have been identified, create a structure that relates them to each other based on information exchange, functional relation, provided services and so on.
        Validate agent architecture
        Ensure that the architecture fulfills the selected goals and requirements and supports the implementation of the capabilities.
        Document design decisions
        All decisions made during the design process should be well documented in an accessible form. This ensures new team members can quickly catch up and decisions can be reviewed at a later point in time for validation or revision.
        Key Considerations
        In this activity, an appropriate modeling notation is used used to describe agents and the realisations of their capacities in terms of attributes and methods. It is advisable to have separate diagrams for each agent type. If UML is used as the notation language, refer to the guideline Modelling Agents with UML of a discussion how agent concepts can be captured in UML class diagrams.
        More Information