PluginArchitecture

Last edit October 9, 2009
Intent: Provide a way to extend the capabilities of a software system by addition rather than modification. This can range from traditional plug-ins and add-ons to an architecture built almost entirely of plug-ins.

Motivation: Modifiability (Requirements change). Availability. Testability. Focused features. Limited memory footprint. ...

Applicability:

Known Uses: See examples in PluginArchitectures

Related Patterns: OpenClosedPrinciple, PluggableArchitecture


Competitors

  • UnixWay: files/text/pipes
    • It is unclear how this competes. Perhaps you can offer an example, TopMind, since you contributed it?

  • Mobile Code, e.g. with ScriptingLanguage, is a competitor to "hard" PluginArchitecture (i.e. where plugins are compiled separately). E.g. as JavaScript performance and communications support goes up, the need for DLL-style browser plugins goes down.

  • PublishSubscribeModel architectures make it easy to extend a software system by adding new processes.

  • BlackboardMetaphor or the centralized Database design also allows a multi-process alternative to DLL-style plugins.


References:
See also: OpenClosedPrinciple, PluginArchitectures, PluggableArchitecture