9 Component Based SE
9 Component Based SE
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
#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
14
Szyperski: Software Component Definition
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
16
Another definition
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
20
21
22
Component Development Lifecycle
phase development packaging distribution deployment execution
representation of
component
compiler
packaging
tool
build/release tool
23
Component Development Lifecycle
phase development packaging distribution deployment execution
25