Chapter 10: Emerging Trends in Oop: Well-Structured Software Extensible and Reusable Systems
Chapter 10: Emerging Trends in Oop: Well-Structured Software Extensible and Reusable Systems
Frameworks
Frameworks have been recognized as one of the most promising OO technologies
because they provide large scale reuse. The reuse of individual classes, while helpful,
will not bring significant productivity leaps. Only the reuse of taylorable systems as a
whole will lead to noticeable results. Although frameworks are widely used today, there
remain many open problems to be tackled, for example:
How can a framework be designed systematically?
Current frameworks are developed in a rather ad-hoc manner by comparing existing
systems and extracting their common features. This process is iterative and good
frameworks are only obtained after many iterations.
Why is framework design not more systematic? One reason is that current design
methods hardly apply to frameworks. Their aim is to model one specific problem
but not a set of various similar problems. Traditionally, the main question is "what
are the objects in a given situation?" wheras for frameworks the main question
should be "what is to be kept flexible so that it fits several situations?". We need
special methods and guidelines for designing frameworks. Such methods could be
based on design patterns that help putting together a framework from templates of
proven OO knowledge.
o Dynamic extensibility.
Extensibility is one of the virtues of object-orientation. Yet many systems are
restricted by static extensibility. They can only be extended by interrupting their
use, relinking and reloading them. Relinking requires that the individual object
files are available, which is usually not the case in commercial systems. In
contrast, dynamic languages such as Smalltalk and Self allow extending a system
at run time without disrupting its use. This should also become possible in
compiled languages and systems (It is already the case in Java or Oberon, for
example.)
Finally, an important challenge will be to bring all these techniques to the mainstream
software industry. While many software products claim to be object-oriented, they
often just use an OO language or at best classes as a structuring aid. The idea of
(custom-) extensible systems is not yet common in practice.