Title: Component-Based Software Engineering
1Component-Based Software Engineering
- M.R.V. Chaudron
- M.R.V.Chaudron_at_tue.nl
- www.win.tue.nl/mchaudro/cbse
- Technische Universiteit Eindhoven
2Course Logistics
- 9 x lectures of 2 x 45 min.
- home-work read literature
- assignment
- work in groups
- design implementation
- intermediate presentations
- possibly individual test
3References Main Sources
- Main text
- Reuse-Based Software Engineering Techniques,
Organization, - and Controls, H. Mili, A. Mili, S. Yacoub E.
Addy, Wiley, 2002 - Supplementary
- Component Software Beyond Object Oriented
Programming - Clemens Szyperski, Addison-Wesley, (2nd ed,
2002) - papers from course web page www.win.tue.nl/mcha
udro/cbd - Volume II Technical Concepts of CBSE, F.
Bachman et. al., - CMU/SEI TR 2000-008, May 2000
- Components are from Mars, Chaudron De Jong,
WPDRTS - Douglas Mc Illroy, 1968/9, NATO Conference on SE
4References Background Literature
- Component-Based Development Principles and
Planning - for Business Systems, Katharine Whitehead,
Addison-Wesley 2002 - Orientation towards business systems.
- Building Reliable Component-based Software
Systems, - Ivica Crnkovic Magnus Larson (eds), Artech
House Publishers, 2002 - Orientation towards technical, embedded,
Real-Time systems - UML Components A Simple Process for Specifying
Component- - based Software, Cheesman Daniels,
Addison-Wesley - Heavily leans on UML, describes some design
guidelines for business information systems - Building Systems from Commercial Components,
Kurt C. Wallnau, Scott A. Hissam, and Robert C.
Seacord, Addison-Wesley (SEI series), 2001
5Lecture Scheme
- Introduction, Concepts, Terminology, Definitions
- Process, Requirements, Domain Analysis
- Design and Specification of Components
- COM, CORBA
- EJB, .Net
- Reuse Economics
- Real-Time Components
- Certification, Testing, Repositories, CM
- SW Composition Predictable Assembly
- Advanced topics
Selection of topics from the CBSE area Some more
stable than others.
6Who is Michel Chaudron?
- Studied CS in Leiden worked for couple of
years in IT company - joined TUE 1999.
- Teach
- Software Architecting (1st year M.Sc.)
- Component-Based Software Engineering
- Research
- Member of the System Architecture and Networking
(SAN) Group - Subjects CBSE (predicatable assembly), Sw.
Arch., empirical SE - How can we predict extra-functional properties of
the systems we design ? - Collaboration with industry ASML, Nokia, Oce,
Philips Natlab, Medical, ... - Coordinates HG 5.03, m.r.v.chaudron_at_tue.nl
www.win.tue.nl/mchaudro - secretary mw. Cecile Brouwer, HG 5.08, tel. 247
8309
7Todays Lecture
- Introduction CBSE Reuse
- Motivation
- Concepts, Definitions, Terminology
8Observations on the practice of SE
About 80 of software engineering deals with
changing existing software
It is not the strongest of the species that
survive, nor the most intelligent, but the ones
most responsive to change. -- Charles Darwin
Time to market is an important competitive
advantage incorporate successful innovations
quickly
? Systems should be built to facilitate change ?
easy removal and addition of functionality
9Problems of Software Engineering
- The size complexity of software increases
rapidly - Single products become part of product families
- Software is upgraded after deployment
- The time-to-market must decrease significantly
- The cost of products must be reduced
10The CBD-?Solution
Systems should be assembled from existing
components
Idea dates (at least) to Douglas McIlroy, NATO
Conference 1968
component-based systems
component repository market
assembly
11Why Components?
Component Library
Following other engineering disciplines (civil
and electrical), software engineering is looking
to develop a catalogue of software building
blocks.
12What is CBSE?
based on definition of SEI in CMU/SEI-2000-TR-008
- 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
13Business Drivers for CBD
Improve Productivity Build more software using
fewer resources through enabling the assembly of
systems from components that may be independently
developed by different parties.
Independent in time and space ? independent from
ultimate application ? independent from (future)
peer-components
14Aspects of Software Productivity
- Increase competitiveness (sw/money)
- Reduce cost of development and maintenance
- Increase software/
- Market share
- Reduce time-to-market (sw/time)
- Limited human talent (sw/people)
- Increase software/person
- ? reuse existing solutions, rather than invent
them
15Business Drivers for CBD Quality
Improve Quality Idea Assuming that a collection
of high-quality components is available,
assembling these should yield systems of
high-quality.
- The cost of establishing the high quality of
components is amortized over multiple use. - Multiple use of a component increases the
likelihood of finding and removing errors.
16Business Drivers for CBD Quality (2)
Improve Quality
The use of CBD requires good modular
design. This modularity provide quality
properties like maintainability, flexibility,
17Technical Drivers for CBSE
Flexibility
Interoperability
Adaptability
System Qualities
Reliability
Maintainability
Integration
CBSE may help improve system qualities
18Reuse-based Software Engineering
- Reuse-based SE has many business drivers in
common with CBSE - increase productivity quality
- reduce time-to-market,
- reduce development cost
However, reuse imposes less technical- and
design-constraints on the unit of reuse (asset ).
CBSE enables Reuse, Reuse is not sufficient for
CBSE.
19Reusable Assets
- Virtually any product of the SE process can be
reused - Requirements
- Architectures
- Designs
- design patterns
- Source Code
- ranging from to libraries, patterns, to modules,
to macros, coding conventions, ... - Test Scripts
20What is a component?
Suggestions from the audience?
Reflect on differences between civil and
electrical engineering on the one hand and
software engineering on the other hand
21CBD in Practice
Lego Fisher Technik Meccanno Ministek ...
22A component can be used within the scope of a
component-model
.Net, Enterprise Java Beans, Corba Components
...
23Component Model
- A component model is a set of agreements that is
needed to enable the combination of components.
- A component model typically addresses
- Life-cycle management instantiation,
(de)activation, removal - Binding mechanisms
- Interaction style
- Data exchange format
- Process model
Related Packaging Model
24Design Choices in Component Models
- control flow
- distribution
- mobility
- topology
- multiplicity
- binding time
- binding type
- interaction style
- platform features
- auxiliary
25Control Flow
Multiplicity Locus of control
within component
across components
1/component
1/component
26Distribution
- A collection of component resides on
- a single location
- cpu, board
- network
- (in)homogeneous
- open/closed network
- internet vs. private network
Can a single component be distributed over
multiple locations?
27Mobility
- Can components move from one location to another?
- unlimited or do they need access-rights?
- do components move themselves or are they
- moved by a (resource) manager?
28Topology
- How are components connected?
- - network (node to node)
- star (central node)
- bus (central interconnection)
- Changeability of the topology
- static
- dynamic
- - changes in links
- component creation/deletion
- changes in component location
29Multiplicity
May multiple instances of a component exist
concurrently?
30Interaction Style
- What mechanism may components use to exchange
data? - - request/response (rpc), asynchronous or
synchronous - datagram
- broadcast (multicast)
- blackboard
- streaming?
- Multiplicity of interaction styles
- - single style vs. multiple styles
31Binding
The mechanism that enables components to find
other components. This so central a topic to
CBSE that we discuss it in greater detail in a
later lecture
32Component Platform
- A component platform is run-time incarnation of
- the agreements of the component model.
- For example
33Component Platform
- Platforms typically provide support for
- Extra-functional / resource aspects
- scheduling
- quality of service management
- (dynamic) load balancing
- (re)negotatiation
- security
- fault tolerance (replication)
- - interoperabiliy (language/OS)
- Inter-component services
- binding
- interaction
- Component lifecycles
- install, replace, remove
34Component Platform
- What features does the infrastructure provide?
- (dynamic) load balancing / scheduling
- fault tolerance (replication)
- quality of service negotiation
- security
- - heterogeneous platforms (language/OS)
35What is a Component?
Probably more definitions than for software
architecture
A software component is a unit of composition
with contractually specified interfaces and
explicit context dependencies only A software
component is independently deployable and subject
to composition by third parties. Clemens
Szyperski, 1997
36What is a Component?
A reusable software component is a logically
cohesive, loosely coupled module that denotes a
single abstraction. Grady Booch, Software
Components with Ada, 1987
Tries to provides some design guidance. What is
cohesive? loosely coupled? single abstraction?
37What 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
38It depends (?)
- It depends to some degree on what you want to do
with components - REPLACING one part of an implementation with
another - then adhering to a well defined specification is
sufficient - at run-time, then mechanisms are needed for
- registering, locating / binding components
- EXTEND components
- extend interfaces, merge implementations
39It depends (?)
- TRADING (use across multiple organizations)
- need mechanism for
- hiding intellectual property
- certification
- RE-USE
- need repository for searching / matching,
versioning - economics impact granularity
- Application domain BUSINESS/EMBEDDED
- type and granularity of component
40What is independent deployment?
A software component is a unit of independent
deployment ? no dependencies on
peer-components ? some meaningful
functionality by itself components tend to be
large grained ? never partially deployed
41Object Technology and CBSE
OT is Neither Necessary Nor Sufficient for
CBSE OT was a useful and convenient starting
point for CBSE OT did not express full range of
abstractions needed by CBSE (insufficiency) It is
possible to realize CBSE without employing
OT(non-necessity) CBSE might induce substantial
changes in approach to system design, project
management, and organizational style
42Useful Distinction
component specification
has
component interface
has
architect/design
component implementation
implementation of specification
has
programmer
component instance
instantiation in a concrete device
run-time environment
43Characteristics of Components Black Box
- Black-box has well defined interfaces that
specify what it does, not how it does this. - Internals are hidden to
- prevent other components to build dependencies
on internals - allow fast understanding
- allow replacement of an implementation
- protect intellectual capital from disclosure
- This complicates diagnosing system failures
44Interfaces are central to CBSE
- Interfaces describe what a component
- .. may offer provides interface
- .. needs requires interface
- Interfaces should be first-class citizens
- Free combination of implementation and
interfaces - Components can have multiple interfaces,
- corresponding to different types of access
points
45Interfaces are central to CBSE (2)
- Standardization to avoid market fragmentation
- - Horizontal standards
- Internet, OS 's, UI's,
- - Vertical standards
- Control, ERP, TV, ...
46Component Flavours Glass, Gray or White?
Black box besides its interface and
specification, no details are known Glass
box inside of component can be seen, but not
changed White box implementation of a component
can be studied and manipulated Gray box part
of the implementation can be studied and
manipulated
What needs to be specified in order to enable
predictable composition?
47Characteristics of Components
48Characteristics of Components Cohesive
- conceptually whole
- size depends on
- complexity of the concept
- abstraction level of the concept
related unit of abstraction, abstraction of
a design decision
If components were people and computers didnt
exist, one might ask, Who is responsible for
this task?
49Characteristics of Components Genericity
The functionality a component provides may be
used in (a range of) different systems
50Characteristics of Components Self-Describing
- A component should be able to describe
- its functionality
- public interfaces
- its behaviour
- e.g. the events that it generates
- its variability/configurability
- any properties that are customizable
component specification
For run-time binding
51Scoping guidelines for components
52A Component is a unit of abstraction
- Represents a single coherent concept/responsabilit
y. - This is desirable for ease of understanding.
- This depends of the application level
- In an ERP system, a bit-component does not fit.
53A Component is a unit of accounting
- In systems with multiple (classes of) users, cost
is accounted per use. - The overhead of accounting precludes small
components. - Components should correspond to units of
Example word2pdf
54A Component is a unit of analysis
- Unit of specification
- Types of analysis
- testing
- type checking
- version control
Example ...
55A Component is a unit of compilation
- It should be possible to compile a component
without using other components. - Again, small components are not practical.
- This leaves open whether components should be
compiled at all? - Considering only executables as components avoids
compile-time dependencies.
56A Component is a unit of deployment
- Deployment is the process of readying a unit for
operation in a particular environment. - It carries all the information needed for
preparing it for execution.
57A Component is a unit of fault-containment
- Faults should be contained to a single component.
- Faults may not cause the component to display
behaviour/produce results that is not specified
by its invariants/postconditions.
- Design alternatives
- either include all exceptions in the interface
- or, ensure that no exceptions cross the
component boundary
Special attention is needed for confining memory
errors (dangling pointers, memory leaks)
Language support is needed for intercepting errors
58A Component is a unit of fault-containment
- Proper handling of unchecked exceptions
requires architectural attention. - Conventions must be part of the component model
or of an application model. - For Example
- In distributed systems, no single component can
be expected - to solve the problems of node- or network-failure.
59A Component is a unit of ...
Think whether you understand why this is
proposed. Then think whether you agree.
- extension
- instantiation
- loading
- installation
- Has to include all data-files that are needed
- May be empty (such as loading a class in Java)
- loading
- maintenance
- system management
60Obstacles to CBD
61Some Obstacles to CBSD
- Commercial Concerns
- No established market!
- Software shops
- marketing, licensing, trading,
- Legal issues liability (aansprakelijkheid)
- Business model (pay-per-copy vs. pay-per-use)
62Some Obstacles to CBSD
- Organizational Concerns
- who pays for extra development effort?
- (for making components more generic, flexible,
..) - cost of learning
63Some Obstacles to CBSD
- Technical Concerns
- Method for Design of Components
- balance genericity, flexibility,
- Adequate tools are needed
- in particular for integration of third party
components - Need for Common/Standardized
- data model, architecture
-
64Summarizing, CBSE is about
Plug Play components can be composed with
little effort preferably at run-time Interface-c
entric components can be composed without
knowing their implementation Standardization
component can be manufactured by multiple vendors
and widely reused across corporations Distribution
through Market components can be acquired and
improved though competition market, and provide
incentives to the vendors Architecture-centric
components may be designed on a pre-defined
(product-line) architecture
65Concluding Remarks 1
Whats New in CBSE? It deals with components that
were not a-priori designed to be part of the same
application There will be multiple types of
software components belonging to multiple
component architectures. A component is
characterized by technical and logical/design
properties.
66Concluding Remarks 2
- CBD aims to
- increase productivity of SE
- change-ability of software systems
- There are no fixed recipies for designing
components - only some guidelines
- It is likely that every system will need some
degree of - custom development
- Wrapping is inevitable
- CBD Reuse are become economically viable over a
series of projects at least 3 years.
67Questions?
You should know - an answer to What is a
component? including some characteristics of
components - what a component model is - the
difference between reuse and CBD
Self-Study material - paper by Doug McIlroy
Mass Produced Software Component - Tech. Report
SEI Technical Concepts of CBD
68CBSE is about managing dependencies
- Is this not addressing the symptoms, rather than
the disease? - Q Why not try to avoid dependencies in the first
place?
Type of dependencies design time tooling compi
le-time compiler, other components run-time pl
atform, other components
69Different types of run-time dependencies
- Implementation dependencies
- Control dependencies
- Temporal dependencies
- Data dependencies
70Architecture of Component Models
component
component
component
Component platform
Platform Service
- binding
- locating components
- linking components
- replacing components
HW platform
71Component Models EJB
component
component
component
Component platform
- EJB includes e.g.
- network services
- transaction services
- better EJB is tied to RMI
- which provides Middleware services
OS
Middleware
HW platform
72Component Models DCOM
component
component
component
Component platform
- DCOM
- component support is built into OS
- includes some networking services
OS
Middleware
HW platform
73Component Models CORBA
component
component
component
Component platform
CORBAs original goal was a technology for
enabling interoperation between OO applications
i.e. mainly a middleware. A component model is
derived from that.
OS
Middleware
HW platform
74(No Transcript)
75(No Transcript)
76(No Transcript)