Patterns versus building blocks
Hi,
To allow more reuse of architectural 'artifacts' in our company we are considering to introduce a more formal naming convention for these 'artifacts' and we went back to TOGAF for guidance. Two concepts stood out that we probably need:
- building blocks (https://pubs.opengroup.org/architecture/togaf9-doc/arch/chap33.html)
- patterns (https://pubs.opengroup.org/architecture/togaf9-doc/arch/chap22.html)
While TOGAF does not seem to provide a definition for a building block, I definitely like (part of) their definition of a pattern:
Patterns offer the promise of helping the architect to identify combinations of Architecture and/or Solution Building Blocks (ABBs/SBBs) that have been proven to deliver effective solutions in the past, and may provide the basis for effective solutions in the future. Building blocks are what you use: patterns can tell you how you use them, when, why, and what trade-offs you have to make in doing so
Even though it may be a philosophical discussion, I feel that there is value to distinguish between building blocks and patterns but I have a difficult time to formalize it. Therefore I attempted to create visualizations of the metamodels for buildings blocks and patterns:
A building block is simply a combination of concepts, e.g. a combination of software and hardware. This could be a metamodel for a building block:
A pattern is one or more building blocks put into concept, but it can also be constructed from other other lower-level patterns. This could be a metamodel for a pattern:
An example could be:
- building block: DataTransport.FTP
- pattern: DataTransport.FileTransfer, which consists a.o. of the building block 'DataTransport.FTP'.
However, you could also argue 'DataTransport.FTP' is a pattern since it is built from some hardware building block (a server) and some software (an FTP client) put into a certain context. This could lead to the conclusion that every building block we use as architects is actually a pattern.
Did TOGAF intend to use pattern as a kind of building block, or is there a clear distinction between the two?
Note: I realize this is not a forum about TOGAF, but in the end I wish to model such patterns and building blocks in Archimate. In order to that, I first have to understand what they mean.