Writing Frameworks - What Does It Take?Source: firstname.lastname@example.org
Problem: A framework is a reusable design for a specific category of applications, expressed as a set of cooperating classes.
What does it take to write a framework?
Michael A. Beedle wrote:
In our experience we have found that you need to:
[Integrating these two processes together] result in [two] organizational structures: the architectural team and the client or application development team. If you lean too much on the application side you end up with the "stove-pipes" syndrome (your architecture followed the use cases too strongly). [...] If you lean too much on the architectural side, you end up in the "incongruent architecture" syndrome, your architecture will not match your requirements needs. [...]
"4)" [OO expertise] and "5)" [patterns expertise] above are not the same thing. "4)" means finding the correct semantic relationships and using the correct modeling techniques among abstract domain classes (something I call the framework "high" points). "5)" means applying advanced design techniques to implement the leaf classes around the abstract "hot spots" == the things that change. [...]
However, this will only get you a "white box" framework.
After this, you will have to parameterize it in order to convert it into a "black box" framework. (Here is where you add the parameterized factories that initialize the framework all over the place given some configuration.)
Check out "Patterns for Evolving Frameworks", the paper that Don Roberts and Ralph Johnson wrote [...]. It has many good insights on how to write frameworks. [see More Info -YS]
Taligent, Building Object-Oriented Frameworks
Don Roberts & Ralph Johnson, Evolving Frameworks - A Pattern Language for Developing Object-Oriented Frameworks
B?umer, Gryczan, Knoll, Lilienthal, Riehle & Z?llighoven, Framework Development for Large Systems
Andr? Weinand & Erich Gamma, ET++ - a Portable, Homogeneous Class Library and Application Framework