The Fractal Model: What points do we have to make?Reusable objects are the result of an evolutionary process that is quite distinct from that that produces traditional software.
Reusable objects result from a three-phase iterative process that unfolds throughout the system, at all levels, throughout the lifecycle, within and beyond individual applications. These phases are: prototyping, exploration, and consolidation.
This perspective is builds on earlier lifecycle perspectives, particularly Boehm's Spiral Model, but is unique because it recognizes that the lifecycles of individual classes and frameworks are distinct from the applications that spawn them.
This process has characteristics in common with natural evolutionary processes.
Contemporary OOA&D bears a much closer resemblance to traditional approaches than it does to this process.
An organization that wishes to produces reusable objects must be willing to deploy technical and managerial talent in a quite unconventional way. Front-loaded, waterfall-based approaches discourage evolution.
The disciplined reuse of object-oriented components, abstract classes, and frameworks stands in stark contrast to the casual reuse of conventional libraries and program skeletons.
Objects evolve as a result of successive refactorings. Languages differ in their suitability for refactoring, and better tools are needed for it.
Structure emerges as objects evolve. There is typically a progression from a casual "white-box" inheritance-based organization to a more mature and refined "black-box" component-based structure. Not all objects complete this journey.
An obvious but important observation: For any given problem, the optimal solution is not the general solution. This is not to say that general solutions that reveal themselves only as experience with multiple reapplications is gained are not much closer to optimal than initial conjectures.
Solutions based upon superficial analysis will hew closely to the surface structure of the problem. (For instance, recursive descent vs. LR(k) approaches).
Would a story about the landmarks in the problem and solution spaces diverging as the solution space becomes populated with more interesting objects be helpful?
There is more than an incidental correspondence between the expansionary phase and the high temperature phases in simulated annealing.
The observation that the result of our evolutionary process, may, in the end, shed most of its object-oriented baggage should support, and not undermine our tale...