Component-Based Software Engineering Objectives
Component-Based Software Engineering Objectives
Topics covered
Components and component models
The CBSE process
Component composition
Component-based development
Component-based software engineering (CBSE) is an approach to software development that relies on software
reuse.
It emerged from the failure of object-oriented development to support effective reuse. Single object classes are too
detailed and specific.
Components are more abstract than object classes and can be considered to be stand-alone service providers.
CBSE essentials
Independent components specified by their interfaces.
Component standards to facilitate component integration.
Middleware that provides support for component inter-operability.
A development process that is geared to reuse.
CBSE problems
Component trustworthiness - how can a component with no available source code be trusted?
Component certification - who will certify the quality of components?
Emergent property prediction - how can the emergent properties of component compositions be predicted?
Requirements trade-offs - how do we do trade-off analysis between the features of one component and another?
Components
Components provide a service without regard to where the component is executing or its programming language
• A component is an independent executable entity that can be made up of one or more executable objects;
• The component interface is published and all interactions are through the published interface;
2
Component definitions
Councill and Heinmann:
• A software component is a software element that conforms to a component model and can be independently
deployed and composed without modification according to a composition standard.
Szyperski:
• 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-
parties.
Component characteristics 1
Component characteristics 2
Component interfaces
Provides interface
• Defines the services that are provided by the component to other components.
Requires interface
• Defines the services that specifies what services must be made available for the component to execute as
specified.
Component interfaces
Requires int erface Provides int erface
Defines the services Defines the services
from the component’s Component that are provided
environment that it by the component
uses to other components
3
addSensor
removeSensor
sensorManagement
star tSensor
Data collector stopSensor
sensorData testSensor
initialise
repor t
listAll
Component models
A component model is a definition of standards for component implementation, documentation and deployment.
Examples of component models
• EJB model (Enterprise Java Beans)
• COM+ model (.NET model)
• Corba Component Model
The component model specifies how interfaces should be defined and the elements that should be included in an
interface definition.
Composition Documentation
Usage Deployment
Interfaces
information and use
Component model
4
Middleware support
Component models are the basis for middleware that provides support for executing components.
Component model implementations provide:
• Platform services that allow components written according to the model to communicate;
• Horizontal services that are application-independent services used by different components.
To use services provided by a model, components are deployed in a container. This is a set of interfaces used to
access the service implementations.
Reusable components
The development cost of reusable components may be higher than the cost of specific equivalents. This extra
reusability enhancement cost should be an organization rather than a project cost.
Generic components may be less space-efficient and may have longer execution times than their specific
equivalents.
Component composition
The process of assembling components to create a system.
Composition involves integrating components with each other and with the component infrastructure.
Normally you have to write ‘glue code’ to integrate components.
Types of composition
Sequential composition where the composed components are executed in sequence. This involves composing the
provides interfaces of each component.
Hierarchical composition where one component calls on the services of another. The provides interface of one
component is composed with the requires interface of another.
Additive composition where the interfaces of two components are put together to create a new component.
Types of composition
Interface incompatibility
Parameter incompatibility where operations have the same name but are of different types.
Operation incompatibility where the names of operations in the composed interfaces are different.
Operation incompleteness where the provides interface of one component is a subset of the requires interface of
string location(string pn) another.
phoneDatabase (string command)
string owner (string pn)
Incompatible components addressFinder
string proper tyType (string pn)
Adaptor components
Address the problem of component incompatibility by reconciling the interfaces of the components that are
composed.
Different types of adaptor are required depending on the type of composition.
An addressFinder and a mapper component may be composed through an adaptor that strips the postal code from
an address and passes this to the mapper component.
sensorManagement addSensor
star t removeSensor
star tSensor
stop
sensor Adapter Data collector stopSensor
testSensor
sensorData
getdata initialise
repor t
listAll
Interface semantics
You have to rely on component documentation to decide if interfaces that are syntactically compatible are actually
compatible.
Consider an interface for a PhotoLibrary component:
context delete
Composition trade-offs
When composing components, you may find conflicts between functional and non-functional requirements, and
conflicts between the need for rapid delivery and system evolution.
You need to make decisions such as:
• What composition of components is effective for delivering the functional requirements?
• What composition of components allows for future change?
9
• What will be the emergent properties of the composed system?
Data
(b) Data base
collection Repor t
Key points
CBSE is a reuse-based approach to defining and implementing loosely coupled components into systems.
A component is a software unit whose functionality and dependencies are completely defined by its interfaces.
A component model defines a set of standards that component providers and composers should follow.
During the CBSE process, the processes of requirements engineering and system design are interleaved.
Component composition is the process of ‘wiring’ components together to create a system.
When composing reusable components, you normally have to write adaptors to reconcile different component
interfaces.
When choosing compositions, you have to consider required functionality, non-functional requirements and system
evolution.