I am not sure I can come up with a defn for
ArchitecturalPatterns, but I think they do exists (or at least we ought to be able to create them).
PatternsOfClientServerArchitectures may contain examples of at least one style of the thing I may be talking about.
The problem is that so far we seem to have focused on how
DesignPatterns build an architecture from the bottom up. (See
PatternsGenerateArchitectures for a bit more about this.) - However I think we need to have something which we can use at a larger grain.
ArchitecturalStyle does go some way to this but they are still not really what I am look at.
I know that
PaulDyson is interested in this stuff, and he did a session called Patterns in Software Architecture BCS-OOPS Patterns day.
This is what he said about Patterns in Software architecture...
Design patterns describe the right kinds of things for an architecture (structure, communication, philosophy) but they consider the wrong level of scale for a large system.
May be Paul would like to enter a bit more about his ideas and may be even a few patterns he proposed at that day.
Tom Mowbray's
AntiPatternsBook contains a few decent
ArchitectureAntiPatterns that I think are at the same level as the kind of stuff you're looking for. For instance one of his that I like is "don't build
StovepipeSystems". Also,
FrankBuschmann and his cohorts in the
PartyOfFive have a few good
ArchitecturalPatterns, notably
PipesAndFiltersArchitecture and a few others. I could list those out, but I don't have
PoSa handy. :( --
KyleBrown
There seems to be general agreement that
MultiCaster is an architectural pattern. I'd also claim that
WikiWikiWeb is an architectural pattern.
PartyOfFive distinguish between idioms,
DesignPatterns and
ArchitecturalPatterns, where each seems somewhat independent of the other; just as
DesignPatterns can be composed of varying idioms, so an
ArchitecturalPattern is one that can be composed of varying
DesignPatterns.
But I'll go further out on the limb than this and actually venture a definition: an architectural pattern is any pattern concerned with the construction context of a whole system, rather than just some part of it. In physical architecture equivalents would be
SkyScraper,
LofstromLoop,
IgLoo and so on.
--
PeterMerel
An architectural pattern is any pattern concerned with the construction context of a whole system, rather than just some part of it.
I think this is pretty much spot-on ... it just depends on what scale your system is. If your system is 4-5 objects then the Gof-style design patterns are architectural patterns because they consider the structure, relative communication and design philosophy for these 4-5 objects. I'm interested in the patterns that describe the structure of systems where the number of objects is measured in millions and the organizational unit is much larger than the class ... so perhaps these should be
LargeScaleSystemPatterns?
ThreeTierDistributionArchitecture,
FourLayerArchitecture,
IsolationLayer and the ubiquitous
MultiCaster all seem to fit the bill. --
PaulDyson
My attempts so far - MicroArchitecture -- RichardHenderson
OK, let's start listing them:
more...?
Here's some more from
http://www.rationalrose.com/models/architectural_patterns.htm
- Broker Pattern (Distributed Systems)
- ModelViewController (Interactive Systems)
- Presentation-Abstraction-Control (Interactive Systems)
- MicroKernel pattern (Adaptable Systems)
- Reflection (Adaptable Systems)
- Layers pattern (Mud-to-structure)
- PipesAndFilters (Mud-to-structure)
- BlackboardPattern (Mud-to-structure)
--
StevenShaw
See also
AttributeBasedArchitecturalStyles,
ProductLineArchitecture
CategoryPattern