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:
-
In the design of a robust and flexible system architecture (cf. Apply Architectural Style)
-
In the design of the architectures of the individual agents (cf. Apply Patterns to Agent Architecture)
-
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.
|