|
The object-oriented paradigm has been successful because of its
good modularity characteristics, which supports the separation of
concerns from analysis to implementation phases. Composability problems
may be experienced when constructing new objects from existing ones,
for example when objects need to evolve due to new or changing requirements.
This experience has triggered researchers in the past years to come
up with enhancements of the OO model in an attempt to solve the
composability problems. The most well-known examples in this area
are: AOP/AspectJ, Subject-Oriented Programming & HyperJ, Adaptive
Programming and Composition Filters. Especially, the so-called non-functional
properties of software, such as access-control, history sensitivity,
synchronization and real-time behavior, make it difficult to adapt
and reuse software components. This tutorial first presents an illustrative
example, which evolves due to the changing requirements. Various
versions of this example have been implemented in a number of languages
such as C++, Java and CORBA. The tutorial will clearly illustrate
the limitations of these languages and design patterns in coping
with the changing requirements. The origin of the problems will
be analyzed in detail. As a solution to the obstacles various approaches
will be discussed. The tutorial will further focus on the composition
filters approach and will illustrate its advantages, limitations
and practical applicability in real projects.
|