Journal of Software Engineering and Applications, 2011, 1, 37-47
doi:10.4236/jsea.2011.41005 Published Online January 2011 (http://www.scirp.org/journal/jsea)
Copyright © 2011 SciRes. JSEA
Testing Component-Based Software: What It has
to do with Design and Component Selection
Shyam S. Pandeya, Anil K. Tripathi
Department of Computer Engineering, Institute of Technology, Banaras Hindu University, India
Email: pandeyashyam@gmail.com, anilkt@bhu.ac.in
Received November 26th, 2010; revised December 17th, 2010; accepted December 26th, 2010.
ABSTRACT
In a component-based software development life cycle, selection of preexisting components is an important task. Every
component that has to be reused has an associated risk of failure of not meeting the functional and non-functional re-
quirements. A component’s failure would lead a developer to look for some other alternative of combinations of COTS,
in-house and engineered components among possible candidate combinations. This means design itself can readily
change. The very process of design of a software system and component selection seems to be heavily dependent on
testing results. Instability of design, further, becomes more severe due to requirements change requests. Therefore, this
instability of design has to be essentially mitigated by using proper design and testing approaches, otherwise, it may
lead to exorbitan tly high testing cost due to the repeated testin g of various alternatives. How are these three activities:
Component-based software design, component selection and component-based software testing interrelated? What
process model is most suited to address this concern? This work explores the above questions and their implication in
terms of nature of a p rocess model that can be convincing in case of component-based software development.
Keywords: CBSE (Co m po ne n t -Base d S of t ware Engi neering), Software Testing, Software Process,
COTS (Commercial-Off-the-Shelf)
1. Introduction
Component based software development stresses reuse of
preexisting in-house and COTS components [1]. This
makes a developer look for the components that can be
reused in a specific case. How to select a component that
can be reused in a specific case? Traditional approach of
selecting a component based on an architectural design
of a software system is not effective [2]. A software sys-
tem must be designed around existing components [2].
Any such design would incorporate preexisting compo-
nents, and, those components, which are required to be
engineered afresh. It may happen that after expending
considerable effort in developing required components,
some faults are detected in COTS or in-house compo-
nents in terms of some mismatches, or, in form of some
design flaws. Changing design or trying a different ar-
rangement of components can only deal with this situa-
tion. This may considerably change the current design of
the system under development. As a result, in order to
test the new arrangement of components, all the previous
activities of development of driv ers, stubs etc. have to be
accomplished afresh. This exorbitant cost of testing can
be a big hurdle for success of CBS development, unless,
it is dealt with efficiently. How to inculcate these con-
cerns at process/process model level? What are the extra
key engineering phases and sub-phases that must be in-
corporated in the present processes/process models. This
work proposes a process for CBS development, which
mitigates above-mentioned risk. Further, this work com-
pares the proposed process with other CBS development
processes/process models. Section 2 introduces CBSE.
Section 3 discusses the nature of process model that can
be convincing in case of CBS development. Section 4
proposes a process model for CBS development. Section
5 compares the model proposed in this work with other
processes and process models in the literature. Section 6
discusses related work and section 7 draws conclusions.
2. CBSE
CBSE is a branch of software engineering which is con-
cerned with development of software systems based on
existing in-house and/or COTS components. Reusing pre-
viously developed components in developing software
has many benefits. Important benefits are reduced cost
and time to market [1]. Further, since a component is re-
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
38
peatedly used, it undergoes repeated testing when used in
different systems and operating environments. This will
definitely increase the quality of a stand-alone compo-
nent as well as the systems where it is being used. This
can greatly help in materializing the benefits of standard
domains. A standard domain can always provide well-
defined standard components, which can be easily reused
in any case. So, component technology heavily supports
code reuse, which was previously not the case.
CBSE approaches software development in a way,
which is very different from other previous approaches
such as procedural and object-oriented approaches. In
these approaches, often, the same team is responsible for
developing the classes and procedures that develops a
software system. This very approach is not very efficient
in developing high quality large and complex systems in
minimum time [1]. Further, procedural or object-oriented
approaches for these systems often may lead to slippage
of time schedule, and, failure of projects [1]. CBSE is
supposed to be an effective approach for these big and
complex systems. Peculiarity with CBSE is that it app-
roaches software development in a way which is similar
to that adopted by other popular engineering streams for
manufacturing products. All of them develop products
from highly reusable standardized smaller units (parts).
For example, computer hardware is obtained by assem-
bling different smaller parts like processor and other de-
vices.
In the case of CBSE there are two separate develop-
ment activities going on independently. Consequently,
we essentially have two categories of developers: Com-
ponent developers, and, system developers [1,2]. Com-
ponent developers are engaged in development of com-
ponents depending on market needs and domain exper-
tise. System developers are engaged in development of
software systems by assembling components. A System
developer makes an effort to look into repositories for
components during development of a software system. If
components are not available in repositories, then, COTS
components are searched. Lastly, if, second step also
fails then team itself needs to develop required compo-
nents.
3. Evaluating Engineering Processes/Process
Models for CBS Development
An efficient process is central to success of any software
development effort. There are several frameworks for
comparing software processes. CMMI [3] is one such
popular framework which groups the software processes
into different categories. Here, we are not concerned with
such an approach. Rather, we are interested in concerns,
which are important to be taken care of (in terms of key
phases and sub-phases) by a process/process model in
order to efficiently develop a component-based software
system. We want to judge various CBS development pro-
cesses/process models with respect to these concerns.
3.1. Requisite Features of an Engineering Process
for CBS Development
CBS Process models demonstrate that a CBS system
must be designed around available components [2]. CISD
model [4] stresses that CBS development should incor-
porate three major phases of component identification,
evaluation and integration. The Process model does spe-
cify phases for component selection, software design and
testing. But, it does not consider the coordination and
interdependence a key phases and sub-phases that are re-
quired to select COTS components and design a CBS
system. Further, it does not provide guidance regarding
approach that can be taken for testing a CBS system. Any
COTS component that has to be reused must be identi-
fied, evaluated and integrated to accomplish some system
functionality. This was formally specified by CISD mod-
el [4] in 1997. This model stresses that CBS development
should incorporate three major phases of component
identification, evaluation and integration. The work stre-
sses that in identification phase COTS components are
identified on the basis of requirement specification. In
evaluation phase, COTS components are evaluated for its
fitness. In integration phase, all the development activi-
ties are accomplished, and, components are integrated.
Many process models have been proposed apart for
CISD model [4]. None of these process models provides
insight regarding the nature of approach that can be effi-
ciently taken up for software design, component selec-
tion and testing activities. The three activities considera-
bly affect each other. A component can be selected, only,
if, it can be fitted efficiently in the software architecture.
This fitness has to be ascertained based on some verifica-
tion and validation. A well-defined sequence of phases
that can be used for above task can be a convincing
process model. An important concern in this connection
is failure of a COTS component at later stages of devel-
opment life cycle. This does considerably change the ex-
isting design. This essentially means, often, design can
change at any stage of testing leading to repeated design
and testing effort due to failure of one or more selected
COTS components in unknown way. When such a failure
occurs, a developer tries another combination of COTS
and engineered components. In order to mitigate this risk,
component selection has to be intimately connected with
design and testing strategies. Each of the abov e said three
activities heavily affects the other two. They need to be
coordinated taking previously mentioned risk into ac-
count. A criterion based component selection approach
[5] proposes a criterion set that can be used to either se-
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
39
lect a component or compare one component with anoth-
er. This does help in comparing components regarding
quality and performance of two are more components,
but, it is not very useful for component selection as it
does not consider the interdependence of component se-
lection, design and testing, and, the way, candidate COTS
components can be verified and validated for its fitness
in a reuse context. Whenever we try to reuse a compo-
nent, we should thoroughly test it for its fitness as early
as possible to get convinced that it can reliably be used in
present case as it heavily affects stability of design, and,
the other components, that have to acquired or engineered.
We can’t select all the components before starting design
as has been mentioned in CISD model [4]. In such a case,
a component that is seemingly reusable in a case might
not be a good choice, or, even might not be reused at all
due to some mismatch or fault. Further, it is not possible
to find all the reusable candidate components in absence
of design unless the system is trivially simple. An ap-
proach is required which can be used to verify and vali-
date COTS component fitness as early as possible. This
should be based on verification and validation of archi-
tectural constraints and functionalities required by over
all system. Design, component selection and testing
should go hand in hand as these three activities are high-
ly correlated. This makes it essential to go for design ap-
proach that breaks design into many less complex mod-
ules with well-defined interfaces. This not only helps in
analyzing the non-functional properties of software early
in development life cycle, but also, lets a developer to
deal with a COTS component failure more effectively.
An architectural centric approach which incorporates
non-functional parameters like performance, modifiabil-
ity, testability etc. can be an effectively taken up. This
means an iterative development, wherein an iteration is
comprised of design a little, select components, test com-
pleted functionality is the strategy feasibly applicable in
component-based software development. Any component
that has to be reused must be extensively verified for its
suitability in accomplishing overall functional and non-
functional requirements of a software system. This is ex-
tremely important activity that has to be performed. We
can’t verify all the functional an d non-functional require-
ments by conducting testing because testing might not be
immediately performed so extensively in practice. Secon-
dly, some quality parameters like performance, modifia-
bility and portability etc. may become the basis for a
component selection, and, depend on architecture of the
system, and, can most appropriately be performed by
analyzing the architecture of a system. This is often the
case with big, distributed and complex software systems.
This means it is imperative to analyze the architecture
(during component selection) in terms of constraints and
nature of interaction between modules that must be there
to meet quality and functional requirements. Therefore,
design must be verified for these functional and non-
functional requirements. This activity must precede the
choice of alternative of combinations of components to
be selected. In fact non-functional requirements should
play a key role in designing architecture itself. This
would not only make our system development governed
by non-functional requirements but also helps us in re-
jecting some infeasible alternatives of combinations of
components early in development life cycle. All these
requirements have to be taken care of by the process re-
quired to engineer a component-based soft- ware in terms
of nature of phases and sub-phases that have to be incul-
cated in the CBS development process/process model.
We can arrive at the nature of process, which might be
convincing by inculcating the support for the concerns
discussed above. The following would have to be salient
features of such a component-oriented approach for CBS
development:
1) An iterative development approach incorporating
activities like—design a little, select components and test
completed functionalities, is a reasonable approach to be
taken up. There is always a risk of failure associated with
each component selected for integration. It might not
function as required. So, each component selected must
be tested at earliest so as to get convinced that it indeed
supports the required functionalities. This will reduce
rework in terms of repeated design, selection and testing.
2) A modular design approach is important to effec-
tively use, verify and validate the COTS components.
3) It should concentrate first on important functionali-
ties to be delivered by the system. It is obviously more
applicable for large and complicated systems. Developers
want to start testing important fun c tionalities at earliest.
4) A process should drive architecture and design of a
software based on existing components. COTS compo-
nents do not come with their source code. They cannot be
tailored much. It is application design, which is required
to be developed based on existing components.
5) A component selection should not only be based on
its own functionalities, but, also, the way it works in
combination with other selected and engineered compo-
nents.
6) Process should guide and let developer reuse exist-
ing components.
7) Component selected should be reused based on ex-
tensive verification and validation for its fitness in the
current context.
8) It should help a developer negotiate for changes in
requirement speci ficat i on based on existing components.
9) Non-functional requirements like performance, mo-
difiability, changeability etc. should be central co ncern of
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
40
the design approach being taken up.
3.2. A Model f or Comparing CBS Process Models
We propose a model based on the above discussion. The
objective of such a metric model is to evaluate different
process models that have been proposed for CBS devel-
opment. We will use GQM paradigm to evaluate differ-
ent process models. The Goal of evaluation is to check
the fitness of existing process models against the features
and attributes that must be incorporated in a process mo-
del that has to be used for CBS development. This goal
must lead to the lower level goals. These lower level
goals must lead to the questions that are required to be
answered in order to answer the high level goal. These
goals have to be obtained from the problems and diffi-
culties that have been of concern for CBS development
as has been discussed in the previous section.
From previous discussion, we have come up to the fol-
lowing high-level goal:
Efficient development of software systems using pre-
existing software components.
It has to be expressed in terms of sub-goals, which
must be accomplished to meet the above goal. We ob-
viously take the lower level goals from the salient fea-
tures that have to be supported by CBS development pro-
cess. We come up with the following lower level goals.
Iterative development support utilizing design a lit-
tle, select components, and test completed functio-
nalities as an iteration.
Implementing important functionalities first.
Process should guide design around available com-
ponents in terms of phases and sub-phases required
therein.
Component selection approach based on analysis of
support for functional and non-functional rquire-
ments at following levels:
o Component
o Assemblage of components, which is affected by
the component to be selected.
Extensive verification and validation approach for
evaluating the fitness of a COTS component in a
specific reuse context by using architectural analy-
sis techniques and testing approaches.
Mechanism for requirement change negotiation.
Architectural centric development approach which
heavily stress modifiability, changeab ility, reusabil-
ity and testability etc. as important quality parame-
ters.
In order to measure above goals we need to answer
whether a process/process model has following attri butes:
Iterative development
Design a little, select a little and test a little feature
Modular design strategy
Important fu nctions first
Design approach which explicitly lets a developer
identify reusable candidate components
Coordination of design, component selection and
testing (for mitigating risk due to a COTS compo-
nent failure).
Architectural centric analysis stressing, performance,
changeability, testability and interoperability etc. as
important design goals.
We want to evaluate our processes/process models
around above questions. If a process does provide sup-
port for a certain feature we will define its measure as 1.
If a process model does not provide support then we will
use –1. In case, process model can be used for such sup-
port by further refining the process or process model, but,
it is not visible in terms of phases and sub-phases present
therein, we will use 0 as its measurement.
4. A Process Model for Designing and
Testing Component-Based Software
This work proposes a use case driven integrated method
for designing and testing a component based software.
The process stresses the use-cases and software architec-
ture as central assets for designing and testing CBS sys-
tems. Taking some use-cases at a time (in present ap-
proach) lets a developer concentrate on a smaller part of
the whole system required to be developed, and, in the
process, essentially, lets a developer divide the task into
smaller less complex design targets. Further, this lets a
developer to consider the functional requirements, non-
functional requirements, and, available components, sim-
ultaneously, in a way, which is effective in reusing ex-
isting components. This approach by its very nature dic-
tates the top down approach, which is obviously useful
and reasonable in case of component-based software, as
reusable components lets a developer access only com-
ponent level details in terms of interfaces, quality, user
documents etc. Figure 1 diagrammatically represents the
proposed process of CBS development.
Outline of such a process would be as follows:
1) Specify requirements of the software that has to be
developed in form of use-cases. Also specify non-func-
tional properties that have to be supported for each use-
case. Certain properties might apply to all the use-cases.
2) Specify the high level modules based on system's
interface with environment. Develop a high level mod-
ule-oriented architecture of the system.
3) Categorize the use-cases in terms of their impor-
tance.
4) Use the architectural design technique to refine the
high level architecture into lower level taking into acc-
ount architectural styles, reference architectures involved
sub-domains and non-functional properties of soft ware
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
41
Figure 1. Software de velopment process model for CBS systems.
into account. In each step map the functionalities re-
quired by use-cases to high-level modules. Continue this
process until modules related to most important use-case
(and related use-case) are separated out. Other modules
not related to such a use-case might not be refined at this
level necessarily.
5) Continue refining architecture based on most im-
portant use-case, and, those use-cases directly related to
the former.
6) At every step of refinement try to search for com-
ponents that can be reused in present case.
7) If some reusable candidate components are identi-
fied, various feasible architectures are documented.
8) These alternatives are rigorously analyzed for func-
tional and non-functional supports based on documenta-
tion and partial architecture of the system.
9) Unacceptable alternatives are rejected.
10) Then those that are included should be more exten-
sively analyzed by choosing criteria set that might not
necessarily incorporate only technical factors. Component
vendor reputation, experimentation facility etc. might be
of interest.
11) This phase is meant for verification of chosen ar-
chitecture and COTS components. This may incorporate
experimentation facility from vendors, and, some imple-
mentation to test chosen architecture and/or COTS com-
ponents.
12) If a failure is detected in the previous phase, the
procedure is repeated for another available architectural
alternative. If failure is due to a fault in a COTS compo-
nent rather than design fault, then, the component vendor
can be communicated so that component can be reused,
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
42
if, the fault can be managed to be removed by component
vendor.
13) If it is essential to change some requirement then
the developer negotiates with customer for the changes in
requirement specification.
14) Planning for component development, component
integration order and testing is accomplished in this phase.
Test cases are generated for integration and system tes-
ting based on some testing model.
15) Required components which are to be engineered
are developed and inte g rated in this phase.
16) The above process is repeated for all the use-cases
in order of their importance.
Start by specifying requirements of a software system
in form of use cases. Analyze the requirements for their
criticality and importance. Categorize the use-cases in
different categories based on criticality and risk-prone-
ness. Design a high level architecture of software, which
must be supported by the software system. For example,
if, requirements dictate access and modification of some
large data set in a networked environment, then, there is
always at least one database, and, clients, who can access
and modify the data. This will let a developer have a
perception of high level modules and corresponding ar-
chitecture that might be required in the current specific
case. If possible, divide use-cases in groups such that
use-cases in one group are not connected with others in
the sense that they need different components to accom-
plish the specified scenarios. Now, all these groups can
be independently implemented with well-defined inter-
faces, if there is any. Take a use case highest up in hie-
rarchy and try to document what functionalities are re-
quired for its implementation. Try to refine the existing
architecture to get architecture alternatives, which can be
used to accomplish this use case. This refinement may
also take into account those use cases which seem to be
highly related to this use case in terms of components
required. Try to make a guess of components and their
functionalities that might support the functionality dic-
tated by that use case and resultant architecture. Use
words for functionalities or from concerned domain to
search components. Components guessed should also be
searched. Scan various results for the main functionali-
ties they support and analyze their functionalities, and,
find, if they can be integrated with some home developed
components to support the functionalities. Document var-
ious feasible component combinations that can provide
the functionalities. Incorporate these components combi-
nation alternatives into the original architectu re to change
and refine this existing architecture. Collect other use
cases from the list, which directly needs these compo-
nents for accomplishment of its functionalities. Make an
analysis of these use-cases that directly need the required
functionalities from components that are there in refined
part of the given architecture. Analyze the various alter-
natives for non-functional requ irements and performance.
Those alternatives are found which are useful for their
support for implementing functional and non-functional
requirements for the use case that has been taken up, and,
the related use cases. One of these alternatives is required
to be chosen. Starting with most convincing architecture,
we must experiment various COTS components specified
there for understanding the functionalities supported by
them. This lets a developer understand COTS components
effectively. Test cases should be developed for testing
COTS component and/or non-functional requirements
(with minimum development effort), if required. We can’t
afford to design all the required components before get-
ting convinced that COTS components indeed can be
effectively be used in current context. The idea is to make
a part of the architecture stable, which is supposed to be
independent from others. This architecture should be ba-
sed on available components and their support for func-
tional and non-functional requirements. Once the archi-
tecture becomes stable based on above experimentation,
concerned COTS components are required to be inte-
grated with other components, which are required to be
engineered. The developer may need to negotiate in case
of some mismatch es in function alities supported by co m-
ponents, and, that required by use-cases. In practice, sta-
keholders are more concerned with the cost of software
even if that may lead to some changes in their original
requirements. Next, planning for development and test-
ing activities is done. Test cases are generated based on
some model of the system (part being implemented).
These test cases can be used for integration testing as
COTS and freshly engineered components are integrated.
This whole process is repeated for all the use-cases start-
ing from most critical use cases.
5. Comparing the Proposed Process Model
with Processes and Process Models
Reported in Literature
It is interesting to analyze the previously proposed pro-
cesses/process models regarding their support for CBS
development. None of the process models stress the co-
ordination of design, selection and testing. This means,
these process models do not provide much help regarding
this vital risk of volatile nature of the design in case of
CBS development. Our process model explicitly speci-
fies the approach that can reasonably be applied to miti-
gate this important risk in CBS development. Our pro-
cess model specifies key phases that can efficiently be
used for 1) Designing a CBS system by using preexisting
in-house and COTS components, and, 2) Verifying and
validating a CBS system. Below, we compare proposed
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
43
model with some important CBS centric process models.
5.1. CISD Process and the Proposed Process
CISD process model [4] incorporates three broader
phases:
The product identification: Major activity during this
phase is 1) Requirements analysis and classification 2)
Product identification and classification 3) Product pri-
oritization. COTS product identification also updates
overall architecture of a system. This approach mandates
identification of all the components and corresponding
architecture in this phase. This approach practically is not
feasible. Problem is that COTS components for big and
complex system cannot be identified based on require-
ments only. Design is essential to know various reusable
COTS components. So, design and component selection
has to go hand in hand. We need to start designing archi-
tecture based on well-defined quality parameters, and,
simultaneously, need to look for possible reusable can-
didate components. It is not practically possible to search
COTS components first and then design the architecture
based on that. In fact, analysis of architecture is essential
to know about the components that can be used. This
problem does mandate design a little, select a little and
test a little approach as has been incorporated in current
proposed process. Architectural development neither can
be delayed till component selection nor it can be accom-
plished before component selection. Architectural design
and component identification should be accomplished
simultaneously.
The product evaluation: In this phase product (com-
ponent) is evaluated for functionality, architecture and
performance. This approach seems plausible but practi-
cally can lead to very high cost of evaluation and rework
in terms of redesign and evaluation. Concern for some
non-functional requirements should start early during ar-
chitectural develo pment. Architectural development must
be governed by well-defined quality and performance
parameters. Further, development approach should stick
to design a little, select components, and test a little ap-
proach.
The product integration: In this phase all the devel-
opment work required to accomplish integration of COTS
components is accomplished. This work of big-bang in-
tegration is the central problem that has been addressed
in this work. This would certainly make CBS develop-
ment costly affair.
CISD model adequately brings forth the nature of key
activities of CBS development. But, design, component
selection and testing activities have not been coordinated
in a way, which can explicitly be followed to develop a
CBS system. The approach does not mitigate the problem
of instability of CBS design as discussed previously. It
does not stress the risk of a COTS component failure at
later stages of development life cycle. Nature of verifica-
tion and validation approach that can feasibly be taken up
is not explicit. This, lack of proper verification and vali-
dation process, is one of cen tral issues in CBSE. Process
models do not provide sufficient insight regarding the
verification and validation approach that can be taken up.
5.2. COSE and the Proposed Process
Component-oriented software engineering (COSE) pro-
cess model [6] consider a structural decomposition for
arriving at existing components. It starts with system spe-
cification. Then Decomposition is accomplished. In the
next phase, components are specified, searched, modified
and created. Then, components are integrated to get over-
all software system. Problem with this approach is that
this process model too doesn 't sufficiently stress the con-
cern of instability of design due to the failures of COTS
components at later stages of development. It does not
address the instability that can result using such an ap-
proach. It doesn't make explicit the short of verification
and validation approach that can be taken up.
5.3. A Reusable Software Component-Based De-
velopment Process Model and the Proposed
Model
This is a spiral model of software development proposed
in 2007 by M. R. J. Qureshi and S. A. Hussain for CBS
development [7]. This model is very similar to reuse
spiral [2] proposed in 1997. Spiral in this process model
consists of following phases
Communication
Planning
Analysis and component selection
Engineering and testing
Evaluation
In this process model, analysis and component selection
phase is meant for analyzing requirements for selecting
COTS components that can be used. This approach can
work for developing applications similar to that devel-
oped in past. In a new system it is not p ossible to id entify
components based on requirements only. Architectural
design and component selection must go hand in hand.
This process model does not incorporate phases and
sub-phases required for experimenting and evaluating
components. Model does not sufficiently closely consider
CBS centric concern and risk of COTS component fail-
ures. It does not provide the insight regarding:
1) Design approach that that can be taken up for maxi-
mizing reuse of existing components.
2) Component selection approach.
3) Verification and validation approach that can be
taken up.
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
44
There are other process models too but they do not m an-
date anything except components should be selected be-
fore completion of design phase. A process for CBS de-
velopment must incorporate the evaluation of components
for their fitness in ter ms of well-defined activities. In fac t,
certain problems like component trust problem [1] is direct
result of our inability of devising verification and valida-
tion strategy that can be taken up for ascertaining the fit-
ness of COTS components in a specific case. This problem
becomes more sever because of the failure of a COTS
component which can lead to the rework in terms of re-
peated design and testing effort. In Table 1, we compare
the process proposed with other CBS processes/process
models.
CBS process models do not explicitly specify the key
phases and sub-phases required to develop a CBS system.
CISD model does specify activities that have to be in-
corporated in a CBS development, but fails to provide
sufficient support for CBS design, component selection
and concern of COTS component failures in later stages
of development cycle. This is an important concern that
has been taken care of by proposed process model. What
is required is explicit phases and sub-phases that can be
followed to develop a CBS syste m. One phase should lo-
gically and smoothly lead to the next one. Previous pro-
cess models do not provide such support. They do not
sufficiently guide the way a CBS system can be verified
and validated. Proposed approach does provide insight
regarding these problems. Except third and fourth pro-
cess models, other process models do not specify the re-
use-oriented design approach that can be used for max-
imizing COTS components reuse. They do not specify
phases and considerations that have to be essentially in-
corporated in order to design a CBS system in presence
of available components.
Our process inculcates the important concerns that
must be incorporated to select components and design
software by specifying key activities and phases, and,
their appropriate ordering. Further, this approach if taken
up can greatly reduce testing effort, which, otherwise,
might be a big hurdle to successful CBS development.
6. Related Work
An important task in a CBS engineering process is com-
ponent selection. Unless, we can incorporate this concern
effectively in our engineering process, it is hard to engi-
neer CBS systems using preexisting components. A wide
variety of components for one and the same purpose may
be available. O ne has to select right compone nts for a pur-
pose under con straints that the y have to be i nterfaced with
other components. Further, the assemblage of reused and
engineered components should support the software req-
uirements. In traditional reuse approach, developers are
encouraged to look for needed components after most of
the design work has been done [2]. Rather than waiting
until design is done (and then looking in vain for matching
components), software products need to be designed
around available software components [2]. This is called
Reuse-driven development [2]. Reuse driven development
[2] dictates reused component selection early in the deve-
lopment life cycle. Further, these components not only
affect design phase but also can modify system specifica-
tion [2]. Process model doesn't provide phases that might
be required for component selection. Johannes Sametin-
ger proposes reuse spiral [2], which specifies and tailors
Boehm’s spiral as per requirements of CBS development.
Table 1. Comparison of the proposed process model with other CBS proce ss models.
Iterative
development
Design a little
test a little
approach
Important
function firstModular
Design
Design approach which
explicitly a let
developer find the
reusable candidate
components
Coordination of
design, component
selection and testing
Architecture
centric analysis
(and its early
validation by
testing)
Reuse driven process
[2] –1 –1 –1 1 –1 –1 –1
Reuse spiral [2] 1 0 1 1 0 0 0
CISD model [4] 1 –1 0 1 –1 –1 –1
Process model by Ali
H. Dogru [6] –1 –1 –1 1 1 –1 –1
Process model by J.
Gao [1] –1 –1 –1 1 1 –1 –1
Spiral process model
[7] 1 0 1 1 –1 –1 –1
Proposed process 1 1 1 1 1 1 1
Feature
Process/
Process
Model
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
45
Author asserts that reuse spiral allows explicit and early
consideration of reuse by identifying alternate means for
the implementation of components of the system to be
built. This model doesn't consider component selection
phases, and, verification and validation approach that can
feasibly be applied. Vu Tran and Dar-Biau Liu in their
work [4] conclude that Waterfall model and Spiral model
fail to reflect procurement-centric nature component-
based software engi neering process. The pape r asserts that
key engineering efforts in software integration process
include:
Classifying and deriving domain requirements for
early COTS product selection.
Partitioning system into sub-domains for COTS
product evaluation.
Defining architecture based on selected COTS pro-
duct architecture
Defining strategy and criteria for COTS product
evaluation
Identifying and prioritizing candidate COTS pro-
duct.
Evaluating prioritized COTS products.
Integrating COTS products combination in final
system.
Further, the work proposes a COTS-based Integrated
System Development (CISD) model by inculcating these
key activities. Model stresses on selection and in tegration
activities. The CISD model consists of three distinct
phases: Product Identification, Product Evaluation, and
Product Integration. Process model doesn't stress on the
interdependence of design, selection and testing. It is not
possible to identify and select all the components befo-
rehand. It has to be accomplished hand in hand with de-
sign and testing activity. A COTS component needs to be
evaluated in presence of d esign and functionality require-
ments. Independent evaluation is not of much use. Pro-
posed process explicitly makes apparent the phases of
evaluation that can be done in a specific case. The CISD
model is not p roviding t hi s very crucial su pp ort . Vu Tran,
Brad Hummel and Dar-Biau Liu in a work entitled “Un-
derstanding and Managing The Relationship Between
Requirement Changes and Product Constraints in Com-
ponent-based Software Projects” [8] asserts that change
requests drastically change previous combination of com-
ponents used for implementing the functionality. This
forces repeated rework, as new components combina-
tions are required to be evaluated every time. This has to
be mitigated effectively as it can severely hamper the
progress of development effort leading to low quality
product. Hans-Gerhard Gross and Nikolas Mayer in a
work entitled “Built-In Contract Testing in Component
Integration Testing ” [9] puts forth th e idea of built-in test
to reduce the manual effort required to evaluate the con-
formance of one component from others which are sup-
posed to be interfaced from it. Ali H. Dogru and Murat M.
Tanik in a work [6] assert the investigation of reuse
eventually matured into the “build by integration” para-
digm. Component technologies improved along with en-
gineering practices, but, they lack a m ethodology t hat uses
components within such a paradigm. Further, the paper
proposes a generic process model for CBS development.
Process model does not consider the volatility of design as
an important risk. This makes this model inappropriate for
CBS development. Jerry Zeyu Gao, H.-S. Jacob Tsao and
Ye Wu in a book entitled “testing and Quality Assurance
for Component-Based Software” [1], proposed a process
model which stresses that design has to be done around
available components. This model also doesn’t provide
any support for co mpon ent selection, software system de-
sign and testing activities. A work entitled “A COTS
Architectural Component Specification Stencil for Selec-
tion and Reasoning” [10] asserts that selection and as-
sessment of COTS components are still a challenge task.
It is hard to find the right components that exactly fit in to
the requirements. The selection processes are in general
ad-hoc. Any wrong choice of COTS components may
compromise the benefits from reusing these components
since the chosen component may mismatch with other
components and the environment. A paper entitled “Mea-
suring the usability of software components” [11] asserts
that one of the most critical processes in CBSD is the
selection of a set of software components from in-house
or external reposito ries that fulfill some architectural and
user-defined requirements. However, there is a lack of
quality models and metrics that can help evaluate the
quality characteristics of software components during this
selection process. A paper entitled “So ftware Componen t
Specification: A Study in Perspective of Component Se-
lection and Reuse”[12] asserts The current best practices
for component specification ignore information that is
vital in determining if an available, ready to use compo-
nent, contains precisely the functional and extra func-
tional properties required, and, if, that component can be
used in the target environment. One paper entitled “De-
termining criteria for Selecting Software Components:
Lessons learned” [13] asserts that component selection
relies on suitability and completeness of criteria used for
evaluation. Another paper entitled “Approximation Al-
gorithms for Software Component Selection Problem”
[14] also make similar assertion that selecting a set of
components to satisfy a set of requirements while mini-
mizing cost is becoming more difficult. A work entitled
“A reusable software component-based development pro-
cess model” [7] proposes a spiral process model for CBS
development.
Above discussion shows that most of the papers stress
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
46
that component selection is costly affair. An efficient
component selection is pivotal to CBS development. But,
they don't sufficiently stress that component selection
should not be viewed in isolation. It must be coordinated
with design and testing activities. They do not provide
guidelines regarding the phases and nature of activities
required therein. Our work stresses the coordination of
these activities and provides a feasible approach that mi-
tigates the important risk associated with instability of
design. It explicitly br ings forth the nature of verification
and validation approach that can be taken up. This was
not apparent in previous models. Further, the design ap-
proach stressed in proposed model lets a user easily look
for the kind of a COTS component that can be reused,
and, the way it has to be verified and validated for its
fitness in a specific case. The new process model brings
new issues. For example, new verification and validation
strategies are required which can be used to validate the
reuse of reusable components during architectural design.
These validation models should stress on contextual veri-
fication of reusable COTS and in-house components.
New model will have weaknesses if these issues are not
addressed properly.
7. Conclusions and Future Work
In case of CBS development there can be many choices
possible from amongst the components for a particular
situation. Not all of these possible choices can appro-
priately fit into the system guaranteeing perfect integra-
tion with full function ality and performance. Such a situ-
ation calls for testing of multiple components at the time
for ensuring their fitness for functionality and perfor-
mance requirements. The previous Process models in
CBS development do not explicitly specify the key ph-
ases and sub-phases which essentially clarify the way
component selection, CBS design, and, testing are de-
pendent on each other, and, the nature of key activities
that are required to be accomplished during those phases.
This understanding is essential to devise an appropriate
CBS development approach. An important concern is the
failures of COTS components during later stages of de-
velopment. This can lead to increased integration and
testing cost making CBS development unprofitable un-
dertaking. This work identifies the role and place of test-
ing, and, other related activities in the CBS development
process model. It further proposes a software develop-
ment process model, under CBSE, that appropriately
integrates the key design, selection and testing activities
at suitable places. Finally, this work compares proposed
model with other models available to indicate the cha-
racteristics that the proposed model does have as op-
posed to the other models. Important characteristics that
the proposed model does possess, whereas other models
may be lacking, are the following:
It mitigates the risk of COTS component failures at
later stages of development life cycle by specifying
key phases and activities therein for verifying and
validating the fitness of a COTS component in a
reuse context.
It brings forth the role and place of architectural
analysis, component evaluation and testing in CBS
systems.
It brings forth the nature of interdependence in de-
sign, component selection and testing activities in
case of CBS development.
These understanding can help in devising proper me-
thods for accomplishing CBS centric analysis, design and
testing activities, and, can be pivotal in reducing verifi-
cation and validation effort required therein.
In order to apply the proposed model, we need to de-
velop new techniques for various activities during the
various phases of software development. We need mod-
els to verify architecture early in development phase.
Further, models for verifying COTS and reusable in-
house components reuse at architectural design phase are
required.
REFERENCES
[1] J. H. Gao, H. S. J. Tsao and Y. Wu, “Te sting and Quality
Assurance for Component-Based Software,” Artech
House, Norwood, 2003.
[2] J. Sametinger, “Software Engineering with Components,”
Springer-Verlag, New York, 1997.
[3] C. Ebert and R. Dumke, “Software Measurement,”
Springer-Verlag, Berlin, 2007.
[4] V. Tran and D. Liuo, “A Procurement-Centric Model for
Engineering Component-Based Software Systems,” 5th
International Symposium on Assessment of Software
Tools (SAST'97), Pittsburgh, 2007.
[5] J. P. Carvallo, X. Franch and C. Quer, “Determining Cri-
teria for Selecting Software Components: Lessons
Learned,” IEEE Software, Vol. 24, No. 3, 2007, pp. 84-94.
doi:10.1109/MS.2007.70
[6] A. H. Dogru and M. M. Tanik, “A Process Model for
Component-Oriented Software Engineering,” IEEE Soft-
ware, Vol. 20, No. 2, 2003, pp. 34-41. doi:10.1109/
MS.2003.1184164
[7] M. R. Qureshi and S. A. Hussain, “A Reusable Software
Component-Based Development Process Model,” Ad-
vances in Software Engineering, Vol. 39, No. 2, 2008, pp.
88-94. doi:10.1016/j.advengsoft.2007.01.021
[8] V. Tran, B. Hummel, T. A. Le, J. Doan and D. Liu, “Un-
derstanding and Managing: The Relationship Between
Requirement Changes and Product Constraints in Com-
ponent-Based Software Engineering Projects,” Proceed-
ings of the Thirty-First Annual Hawaii International Con-
ference on System Sciences, Hawaii, 1998.
Testing Component-Based Software: What It has to do with Design and Component Selection
Copyright © 2011 SciRes. JSEA
47
[9] H. Gross and N. Mayer, “Built-in contract testing in
component integration testing,” Electronic Notes in Theo-
retical Computer Science, Vol. 82, No. 6, 2003, pp. 22-32.
doi:10.1016/S1571-0661(04)81022-3
[10] J. Dong, S. Yang, L. Chung, P. Alencar and D. Cowan,
“A COTS Architectural Component Specification Stencil
for Selection and Reasoning,” ACM SIGSOFT Software
Engineering Notes, Vol. 30, No. 4, 2005, pp. 1-4. doi:10.
1145/1082983.1082959
[11] M. F. Bertoa, J. M. Troya and A. Vallecillo, “Measuring
the Usability of Software Components,” Journal of Sys-
tem and Software, Vol. 79, No. 3, 2006, pp. 427-439.
doi:10.1016/j.jss.2005.06.026
[12] C. J. M. Geisterfer and S. Ghosh, “Software Component
Specification: A Study in Perspective of Component Se-
lection and Reuse,” Fifth International Conference on
Commercial-off-the-Shelf (COTS)-Based Software Sys-
tems, Washington, 2006.
[13] J. P. Carvallo, X. Franch and C. Quer, “Determining Cri-
teria for Selecting Software Components: Lessons
Learned,” IEEE Software, Vol. 24, No. 3, 2007, pp. 84-94.
doi:10.1109/MS.2007.70
[14] N. Haghpanah, S. Moaven, J. Habibi, M. Kargar and S. H.
Yeganeh, “Approximation Algorithms for Software Com-
ponent Selection Problem,” Software Engineering Confe-
rence (APSEC 2007), Japan, 2007. doi:10.1109/ASPEC.
2007.38