|
Component-based and architecture-centric techniques
are the basic means to achieve reuse via Software
Product Line (SPL) approaches. Component platforms
providing various mechanisms for component reuse
gain popularity.
Advanced platforms (e.g., .NET or
JEE) also start incorporating unconventional
generative mechanisms for injection of aspect code
that affects (crosscuts) many components. Aspect
code seamlessly extends functionality of base
components with extra, context-specific
functionality such as logging, synchronization or
persistence.
In this tutorial, we show how much higher levels of
reuse can be achieved by applying XVCL [1]
(http://xvcl.comp.nus.edu.sg) that supports not only
aspects, but also other powerful mechanisms for
handling variability in software, such as change
propagation and generic design. These generative
mechanisms allow us to streamline non-local
customizations with system-wide impact, that spread
over component configurations. They also help us
unify multiple similar component versions with
generic, adaptable meta-components. These strategies
can replace labor-intensive manual customizations
for reuse with semi-automated customizations,
increasing productivity during derivation of custom
systems from a reusable component base (a Product
Line Architecture, PLA). XVCL approach can reduce
the complexity of a PLA, and simplifies its
evolution by orders of magnitude as compared to
conventional component-based PLAs. The approach
works for common services such as aspects, as well
as at application domain layers of user interfaces
or business logic, which are. particularly difficult
to componentize for reuse.
Example of PL
problems we address in the tutorial: Industrial SPLs
may involve thousands of features. Features are
often inter-dependent in complex ways, affecting
many components in a PLA. Such variability requires
a mechanism to manage one-to-many, complex mappings
between variant features and affected components.
Conventional component-based and
architecture-centric approaches do not have explicit
mechanisms to manage that. The symptoms of the
problem include explosion of similar component
versions and difficulties to find, customize and
integrate component configurations during derivation
SPL members. Other problems include: the difficulty
to reuse already implemented features when deriving
new SPLC members, difficulty to enhance existing
products with product-specific features without
disconnecting them from the PLA, and difficulty to
propagate upgrades of the PLA to SPL members without
loosing product-specific customizations.
In the
tutorial, we show how the above problems can be
tackled by complementing architecture/component
approaches with a generative technique of XVCL The
idea of the approach is to build generic, adaptable
software structures, with explicit record of
customizations required to accommodate variant
features in their legal combinations into SPL
members. XVCL helps us to build such generic
structures, which become a core of PLA
representation. Concrete, executable components of a
custom SPL member are derived from XVCL-based PLA.
Differences among SPL members caused by variant
features are specified as deltas from these generic
structures, and automatically propagated to SPL
members.
The
approach to reuse presented in the tutorial has been
applied in lab studies and industrial projects [1][2].
References
1.
Jarzabek,
S. Effective Software Maintenance and Evolution:
Reuse-based Approach, Taylor & Francis CRC
Press, 2007
2.
Pettersson, U., and Jarzabek, S. “Industrial
Experience with Building a Web Portal Product Line
using a Lightweight, Reactive Approach,”
ESEC-FSE'05, European Software Engineering
Conference and ACM SIGSOFT Symposium on the
Foundations of Software Engineering, ACM Press,
September 2005, Lisbon, pp. 326-335 |