Designing Patterns are concerned with the Designing process and compliment Developing Patterns for implementations.
They can be utilized as standalone patterns but usually combined for best effect.
They can also be combined with design methodologies and design principles.
Designing Patterns discussed here (not Design Patterns [GOF]), are a category of Patterns that relate to the design of a Software Framework.
Designing Patterns compliment and point to Design Patterns [GOF] but are different in nature.
DesignGeneralized Find what is inherently or adherently common
DesignAbstraction Find what is common via abstraction.
DesignRefinement Refine abstract and generalized concepts.
CoalescentPatterns Use one or more Design Patterns (GOF) to achieve goal.
ApplyImmersePrinciples Apply good design principles such as IMMERSE
UseIterativeDesign Start with DesignGeneralized, then DesignAbstraction and lastly DesignRefinement
D2: Developing Patterns
Developing Patterns are used to provide Patterns for implementing Software Frameworks. Developing patterns are architecturally minded, and they serve to realize Designing Patterns by their implementation techniques.
DevelopHotspot Discover where your hotspots should be. Choose DevelopWhitebox or DevelopBlackbox
DevelopWhitebox You want less DesignRefinement or require some form of DesignAbstraction or DesignGeneralized to remain.
DevelopBlackbox You want less DesignAbstration or DesignGeneralized and want complete DesignRefinement.
ConfigurationTool You have used DesignBlackbox and require more flexibility and customization.
CodeGeneration You have used DevelopWhitebox and want to allow for easier and quicker DesignRefinement.
SoftwareFactory You have ConfigurationTool and CodeGeneration but want more power and flexibility.
D3: Documenting Patterns
Documenting Patterns are used to describe the Software Framework and aid the Deploying Patterns. They facilitate and maximize understanding and therefore protential reuse.
WritingReference You must provide a reference of interfaces.
WritingRecipe You need to provide examples of isolated features of the framework that a pure reference cannot show.
WritingCookbook You need to combine a large amount of recipes.
Self-Describing Using tools and generators, you can generate documentation.
D4: Deploying Patterns
Deploying Patterns realizes the Software Framework itself, and looks at ways that maximize the Frameworks reuse potential.
DeployAsIntegration Although Documenting Patterns are applied, Your framework requires easy and quicker implementation and adoption.
DeployWithSampleApplication You need to show off and demonstrate complex capabilities that WritingRecipe and WritingCookbooks do not show.
DeployWithTraining Although Documenting Patterns are applied you need to further adoption.
DeployWithSupport You need maximum facilitation of the framework.
Bibliography
Design Patterns: Elements of Reusable Object-Oriented Software
- Gamma, Helm, Johnson, Vlissides (Addison Wesley)
Implementing Application Frameworks
- Fayad, Schmidt, Johnson (Wiley)
Pattern-Oriented Software Architecture: A System of Patterns [Vol 1]
- Buschmann, Meunier, Rohnert, Sommerlad, Stal (Wiley)
Design, implementation and evolution of object oriented frameworks: concepts and guidelines
- J. van Gurp, J. Bosch
Available at: publications.jillesvangurp.com/spejvg.pdf