Tải bản đầy đủ (.pdf) (21 trang)

Lecture Building reliable component-based systems - Chapter 11: Components in product line architectures

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (241.91 KB, 21 trang )

Chapter 11
Components in Product Line
Architectures

Building Reliable Component­based 


Overview
Developing a Single Product
Component Markets
Product Families and Product Lines
Product Populations
Component Approaches
Frameworks as Components

Building Reliable Component­based 


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 Component­based 



Basic arguments for software product lines
Size &
Complexity
Architecture

Quality

Diversity

Product
Lines

Reuse

Components

Lead Time
Reduction

Building Reliable Component­based 


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 Component­based 


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 Component­based 



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 Component­based 


Difficulties in Component Markets
Architecture
Mismatch
Less efficient system
Scale
Reusability
Usefulness
Resources
Excess

Building Reliable Component­based 


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 Component­based 


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 Component­based 


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 Component­based 


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 Component­based 


Consequences
Development within product populations will cross
business lines, groups or division boundaries.
Common architectural rules.
Planning.

Building Reliable Component­based 


Component Approaches
Two dimensions for reuse:
Variability

Independence

Building Reliable Component­based 


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 Component­based 


Libraries
The classical techique for organizing reusable software
Mathematical
Graphical
Library-independent interface
Libraries dependent on libraries

Building Reliable Component­based 


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 Component­based 


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 Component­based 


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 Component­based 


Selectable
Plug-ins

Variant
Free
Skeleton

Component Frameworks with Plug-ins

Building Reliable Component­based 



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 Component­based 



×