Sometime back we visited one of our family friends for dinner. During dinner course, I appreciated pudding by our hostess, which triggered my wife to ask for recipe. Next week, we had a pudding at home, but it was Mango pudding instead of chocolate pudding as we tasted at friend’s place. The recipe was quintessential just a starting point, my wife added her creativity by use of Mango and secret sauce of nutmeg. It turned out much better than what it started with, it was completely customized for out taste, made in local environment, using locally available ingredients, completed at pace that we were comfortable with, it used skilled but internal labor with little to no training to deliver a work product that was satisfyingly rich.
Given this, it is very important to have a good recipe to start with. A recipe has ingredients, quantities for each recipient, specific utensils or utilities and then finally a well choreographed process that allows the
cook to create his work product. Good recipes provide guidance for what can be replaced in process or ingredients to suite particular taste needs.
Is there a way we can create recipe for Software Architecture? Such recipes will have needed ingredients (needs/features/inputs), their quantities (abstraction levels), steps (may be architecture domains and process). Provide clear guidance to customize what is the required, optional or customizable in the “Recipe”. Yet allow adopting architect or organization to embed their creativity or secret sauce to suit their stakeholders needs. How do we do that?
Architecture Frameworks can be such recipes, they provide clear guidance for achieving qualitatively superior software work product. There are several EA frameworks available to fit every architectural need. If not, you can define your own (very unlikely). Every organization assumes (which they must) that they are unique in their industry and there is nothing available that can fit their needs, so such frameworks are customized to fit the needs. None of these Architecture frameworks provide guidance on impact of such customization or removal of certain steps or ingredients from such delicate and specialized recipe. The adopter needs to cautious while customizing such recipes because like food recipe, the architecture can also lead to inedible work product, and gathering bad name for the recipe.