Practice: Pattern-Driven MAS Design
Design the multi-agent system based on existing architectural and behavioural patterns.
Relationships
Purpose
A design conscientious of existing work enables reuse, avoids making mistakes twice, and allows tapping into the knowledge that has been created elsewhere for a cleaner, leaner, and more flexible design.
Main Description

Patterns are a key concept in software engineering since they encapsulate knowledge about solutions for common problems in a reusable form. Applying patterns in different areas during the design of a software system allows the engineer to leverage this existing knowledge and create robust and flexible solutions. The use of patterns also facilitates communication between stakeholders and makes the architecture and the implementation more comprehensible for developers and architects.

An architectural pattern (also called an architectural style) can be applied in the development of the system architecture, while more fine-grained patterns and protocols can be used to create agent architectures and define interactions between agents. In multi-agent systems, patterns can thus be applied in three areas:

  1. In the design of a robust and flexible system architecture (cf. Apply Architectural Style)
  2. In the design of the architectures of the individual agents (cf. Apply Patterns to Agent Architecture)
  3. In the design of agent interactions and protocols (cf. Apply Patterns to Agent Interactions)

In open systems, especially the third item is of importance: since agents of different prominence have to interact with each other, the standardisation of communication, including protocols and data structures that are exchanged, is paramount. All participating agents have to abide to those standards in order to ensure mutual understanding between the participants in the system.

This practice can be combined with Evolutionary Design and  Evolutionary Architecture.

How to read this practice

First, make yourself familiar with the basic concepts underlying this practice. Depending on your role in the team, you will have to understand how patterns can be worked into an existing architecture, how they can be implemented, or how they affect the communication within the team.

Then, have a look at the different tasks and the associated guidances and determine how you can apply them in your process.

Finally, if your role within the team requires it, find out which patterns you can employ in your system by going through the white papers and supporting material.