Introduction to Component-Based
Software Engineering
1
Motivation
• Expansion in the use of software
– in business, industry, administration, research, and even in everyday life.
– Software is no longer used marginally in technical systems; instead it has
become a central factor in many fields.
• Features based on software functionality, rather than other system
characteristics, are becoming the most important factor in a competitive
market.
• This trend increases the demands on software products such as
– enhanced usability, robustness, reliability, flexibility, adaptability, and simpler
installation and deployment.
• As these demands are growing stronger, the complexity of processes that
software manages is increasing along with the demand for the
integration of processes from different areas.
• As a consequence, software programs are becoming increasingly large
and complex.
• The main challenge for software developers today is to cope with 2
Motivation
• Traditionally, software development addressed the
challenges of increasing complexity and dependence on
external software by:
– focusing on one system at a time
– and on satisfying delivery deadline
– and budget requirements without considering the evolutionary
needs of the system.
• Focusing on one system at a time and neglecting
forthcoming changes has led to a number of
problems:
– the failure of the majority of projects to meet their deadline,
budget, and quality requirements
– as well as the continued increase in costs associated with software
maintenance. 3
Motivation
• One key to the solution of these problems is
reusability.
• The idea of software reuse is not new. But, despite
some successes, reusability has not become a
driving force in software development.
• Many of the unsuccessful approaches to reuse did
not satisfy the basic requirements of reusability
– Reuse requires some modification of the object being
reused.
– Reuse must be integrated into specific software
development.
4
Challanges of Software Engineering
5
Component-based Development
Idea:
Build software systems from pre-existing components (like
building cars from existing components)
Building components that can be reused in different applications
Separate development of components from development
of systems
6
Component-based software construction
components
Component
#1 construction application
Component Component Component
#4 #1 #2
Component
#2
Component Component
#3 #4
Component
#3
7
Concentration on the business parts
“30 % of SW development effort is spent on infrastructure that adds no
value”
Application
Business
specific
issues
GUI
GUI
Standard
Reusable parts Communication
Data model
Deployment
------
INFRASTRUCTURE
8
What is software reuse?
Software reuse is the process whereby an
organisation employs a set of systematic operating
procedures to specify, produce, classify, retrieve,
and adapt software artifacts for the purpose of
using them in its development activities.
9
Reusable Assets
Virtually any product of the SE process can be
reused:
• Requirements
• Architectures
• Designs
– design patterns, interfaces
• Source Code
– ranging from to libraries, patterns, to modules, to
macros, coding conventions, ...
• Test Scripts 10
CBSE Goals
1. To provide support for the development of systems
as assemblies of components.
2. To support the development of components as
reusable entities.
3. To facilitate the maintenance and upgrading of
systems by customizing and replacing their
components.
11
What is CBSE?
Component-based Software Engineering is concerned with the
rapid assembly and maintenance of component-based systems,
where
• components and platforms have certified properties
• these certified properties provide the basis for
predicting properties of systems built from
components.
Predictability is a key property of mature engineering
disciplines. It enables feedback on design and adaptation;
i.e. development time is reduced because we can analyze prior
to building
12
A component can be used within the scope of a
component-model
.Net Enterprise Java Corba Components
, Beans, + ...
13
On the relation between OO and
CBD
• Object Orientation emphasizes modularity of
the construction of a system
• CBD emphasizes modularity in design,
production, deployment and use of a system.
14
Szyperski: Software Component Definition
Szyperski (Component Software beyond OO
programming)
A software component is
a unit of composition
with contractually specified interfaces
and explicit context dependencies only.
A software component
can be deployed independently
it is subject to composition by third party.
15
Composition unit
A software component is a unit of composition with
contractually specified interfaces and explicit context
dependencies only. A software component can be deployed
independently and is subject to composition by third party. –
Clemens Szyperski
System
Glue code
Components
How much components fit together?
How much costs the glue code?
16
Another definition
A software component is a software element that
confirms a component model
can be independently deployed
composed without modification according to
a composition standard.
A component model defines specific interaction
and composition standards.
G. Heineman, W. Councel, Component-based software engineering, putting
the peaces together, Addoson Wesley, 2001
17
What is a Component?
A component is a piece of software small enough
to create and maintain, big enough to deploy and
support, and with standard interfaces for
interoperability.
Jed Harris, President of CI Labs (Jan. 1995).
18
What is a Component?
- a unit of
- independent production, propertie
acquisition, deployment, and s depend
maintenance on how
- replacement
they are
- reuse
- composition used
- a package of cohesive
services
- encapsulates design intrinsic
decisions propertie
- explicit dependencies
s
- cohesive / denotes a
single abstraction
-- generic
loosely coupled
(application context /
- independent)
standardized system
interfaces
- configurable properties
- self-contained 19
What is a Component?
“A binary unit of independent production, acquisition, and deployment
that interacts to form a functioning system.”
- C. Szyperski, Component Software
“A component is an independently deliverable package of operations.”
- Texas Instruments Literature
“A replaceable unit of development work which encapsulates design
decisions and which will be composed with other components as part of
a larger unit.” - Desmond D’ Souza, in Catalysis
20
21
22
Component Development Lifecycle
phase development packaging distribution deployment execution
representation of
component
design & execution
modelling tool infrastructure
infrastructure programming tool
compiler
packaging
tool
configuration management tool
build/release tool
23
Component Development Lifecycle
phase development packaging distribution deployment execution
representation of model / specification
component e.g. UML, Petri-net
source code & data files
e.g. C++ Structured archive
e.g. zip-file
• Solid-medium that preserves file-structure
• network: requires conventions on where to install
unpack & place comp in memory
executable code
- low level machine code
- high level code for
interpretation
In different processes, components are composed
in different phases of
24
development
Summary CBSE – basic definitions
The basis is the Component
Components can be assembled
according to the rules specified by the
component model c1 c2
Components are assembled through
their Middleware
interfaces framework
A Component Composition is the process Run-time system
of assembling components to form an
assembly, a larger component or an
application
Component are performing in the Component
context of a component framework Model
All parts conform to the component
model
A component technology is a concrete
implementation of a component
model
25