Chapter 11
Components in Product Line
Architectures
Building Reliable Componentbased
Overview
Developing a Single Product
Component Markets
Product Families and Product Lines
Product Populations
Component Approaches
Frameworks as Components
Building Reliable Componentbased
Global Software Component Market
Will it solve all our reuse problems?
Far from a global component market.
Intra-organizational reuse of core software
indispensable.
”The traditional techniques for reuse of software are still
sufficient for small product families, but for larger
product populations the best elements of single product
development and third party component markets are
required.”
Building Reliable Componentbased
Basic arguments for software product lines
Size &
Complexity
Architecture
Quality
Diversity
Product
Lines
Reuse
Components
Lead Time
Reduction
Building Reliable Componentbased
Developing a Single Product
Starting from the requirements, we define an
architecture.
The architecture decomposes the system into
subsystems and components.
We build and test the components, then the
subsystems, and finally the product.
Building Reliable Componentbased
Characteristics of Product Lines
Product Lines
Single
Product
Product
Family
Product
Population
Component
Markets
top-down
top-down
partially
bottom-up
bottom-up
planned
planned
planned /
opportunistic
opportunistic
developed
developed
developed /
available
available
intra –
organization
intra –
organization
intra –
organization
inter –
organization
Building Reliable Componentbased
Component Markets
Building systems from existing components, obtained
from third parties often has the following
characteristics:
It is a bottom-up activity (no global architecture defined).
Use of components is opportunistic (use whatever is
available).
The component software is available when starting the
project.
It results in inter-organizational reuse.
Building Reliable Componentbased
Difficulties in Component Markets
Architecture
Mismatch
Less efficient system
Scale
Reusability
Usefulness
Resources
Excess
Building Reliable Componentbased
Product Software Categorization:
Core
Few other companies are able to produce such software
Sharing is not an option
Key
Can be obtained from others
Base
Can be and is obtained from others
Building Reliable Componentbased
Product Families and Product Lines
Product family :
Is a set of products with many commonalties and few
differences.
Is intra-organizational.
Product Line:
Is a top-down, planned, proactive approach to achieve
reuse of software within a family (or population, see the
next section) of products.
Building Reliable Componentbased
Fixed Generic Architectures
The use of fixed generic architectures with variation
points:
Involve creation of a platform first, from which products
can be derived.
Are a sound basis for realizing the functional and nonfunctional properties.
Can be difficult to forecast the requirements of future
products.
Can be difficult to agree upon a single architecture in a
large multi business-line organization.
Building Reliable Componentbased
Definitions
Product Family:
Is a set of products with many commonalities and few
differences.
Product Populations:
Is a set of products with many commonalities but also
many differences.
Building Reliable Componentbased
Consequences
Development within product populations will cross
business lines, groups or division boundaries.
Common architectural rules.
Planning.
Building Reliable Componentbased
Component Approaches
Two dimensions for reuse:
Variability
Independence
Building Reliable Componentbased
Variability Versus Independence
Independence
Reusable
Composable
Lego
‘As is’
Variability
Libraries
Parameterized
Inheritance
Koala
OO
Frameworks
Frameworks as
Components
Plug-ins
Component
Frameworks
Building Reliable Componentbased
Libraries
The classical techique for organizing reusable software
Mathematical
Graphical
Library-independent interface
Libraries dependent on libraries
Building Reliable Componentbased
Object Oriented Frameworks
A set of classes from which to create an application
Inheritance allows to abstract from specific behaviour
Danger: derived classes are very dependent
Fragile base class problem
Building Reliable Componentbased
Component Frameworks
Benifits:
Components can be plugged to specialize the behavior.
Resembles OO frameworks.
Specifies interfaces between plug-ins and underlying
framework – reduces dependencies.
Downsides:
Plug-ins cannot be independently deployed.
Framework often not composable itself.
Building Reliable Componentbased
Frameworks As Components
Powerful parameterization mechanism
The ultimate solution for variability and independence
The basic mechanism for achieving composability is to
make every context dependency explicit and bindable
by a third party.
Building Reliable Componentbased
Selectable
Plug-ins
Variant
Free
Skeleton
Component Frameworks with Plug-ins
Building Reliable Componentbased
Summary
Product development:
Small product families traditional techniques
Larger product populations top-down with bottom-up
Inter-organizational reuse of software
Product lines
Component approaches
Different component models
Building Reliable Componentbased