building robust frameworks using less inheritance
Published in the proceedings of Europlop 98, this paper addressed
issues to be tackled when attempting to build robust frameworks (frameworks with
a chance of surviving over time).
The framework for a real-world large-scale reservation system was used
as one of the working examples.
The paper concentrated on how to avoid the coupling due to inheritance and state
from seizing up frameworks.
Inheritance is often overused as it seen as core of Object Oriented programming,
and objects religiously containing logic and data (with
all their specific getters and setters) can also become a barrier to reuse.
Techniques including reduction of inheritance by the use of plugin flyweight
strategies recursively organised in component structures and separation of logic
from extrinsic state (e.g. in generic containers such as
Anythings or XML) are used to tackle these coupling problems.
With C++ the structure of the language, as it then was, also meant that experimentation
with inheritance structures often lead to costly full rebuilds which negatively impacted
the desire to experiment.
The framework makes use of Reactor, ACT, Flyweight, Strategy and Composite Patterns.
The picture above, taken from the paper, shows an early attempt at graphically representing the
geometry of Design Centers (Christopher Alexander) in Coordinator or any other software.
Copyright Note: Image
Michael Kenny,Rhizomorphic GmbH
Version 2.484, 2012-06-08T01:02:02+02:00