Component –Based Development
Component –Based Development
DEVELOPMENT
INTRODUCTION
In the software engineering context, reuse is an idea both old and
new. Programmers have reused ideas, abstractions, and processes
since the earliest days of programming but the early approach to
reused was ad-hoc. Today, complex high-quality computer –based
systems must be built in a very short time and demand a more
organized approach to reuse.
ENGINEERING OF
COMPONENT-BASED
SYSTEMS
On the surface, CBSE seems quite similar to conventional or object-
oriented software engineering. The process begins when a software
team establishes requirements for the system to be built using
conventional requirements elicitation techniques. An architectural
design is established, but rather than moving immediately into more
detailed design tasks, the team examines requirements to
determine what subset is directly amenable to composition, rather
than construction. That is, the team asks the following questions for
each system requirement:
Because CBSE is an evolving discipline, it is unlikely that a unifying definition will emerge in the
near term.
THE CBSE PROCESS
A “component-based development model” was used to illustrate how a library
of reusable “candidate components” can be integrated into a typical
evolutionary process model. The CBSE process, however, must be characterized
in a manner that not only identifies candidate components but also qualifies
each component’s interface, adapts components to remove architectural
mismatches, assembles components into a selected architectural style, and
updates components as requirements for the system change .
Although the steps just noted provide a useful model for domain analysis, they
provide no guidance for deciding which software components are candidates for
reuse. Hutchinson and Hindley suggest the following set of pragmatic questions as a
guide for identifying reusable software components:
• Application front end—the GUI including all menus, panels and input and
command editing facilities.
• Database—the repository for all objects relevant to the application domain.
• Computational engine—the numerical and nonnumerical models that
manipulate data.
• Reporting facility—the function that produces output of all kinds.
• Application editor—the mechanism for customizing the application to the
needs of specific users.
COMPONENT BASED
DEVELOPMENT
Component-based development is a CBSE activity that occurs in parallel with
domain engineering. Using analysis and architectural design methods , the
software team refines an architectural style that is appropriate for the analysis
model created for the application to be built.
In reality, even after a component has been qualified for use within an application architecture,
it may exhibit conflict in one or more of the areas just noted. To mitigate against these
conflicts, an adaptation technique called component wrapping is often used. When a software
team has full access to the internal design and code for a component (often not the case when
COTS components are used) white-box wrapping is applied. Like its counterpart in software
testing , white-box wrapping examines the internal processing details of the component and
makes code-level modifications to remove any conflict. Gray-box wrapping is applied when the
component library provides a component extension language or API that enables conflicts to be
removed or masked. Black-box wrapping requires the introduction of pre- and postprocessing
at the component interface to remove or mask conflicts. The software team must determine
whether the effort required to adequately wrap a component is justified or whether a custom
component (designed to eliminate the conflicts encountered) should be engineered instead.
COMPONENT COMPOSITION
The component composition task assembles qualified, adapted, and engineered
components to populate the architecture established for an application. To accomplish
this, an infrastructure must be established to bind the components into an operational
system. The infrastructure (usually a library of specialized components) provides a
model for the coordination of components and specific services that enable
components to coordinate with one another and perform common tasks. Among the
many mechanisms for creating an effective infrastructure is a set of four
“architectural ingredients” that should be present to achieve component composition:
Data exchange model. Mechanisms that enable users and applications to interact and
transfer data (e.g., drag and drop, cut and paste) should be defined for all reusable
components. The data exchange mechanisms not only allow human-to-software and
component-to-component data transfer but also transfer among system resources
(e.g., dragging a file to a printer icon for output).
Underlying object model. The object model ensures that components developed in
different programming languages that reside on different platforms can be
interoperable. That is, objects must be capable of communicating across a network.
To achieve this, the object model defines a standard for component interoperability.
Because the potential impact of reuse and CBSE on the software industry is
enormous, a number of major companies and industry consortia3 have proposed
standards for component software:
CONTI…
OMG/CORBA. The Object Management Group has published a common
object request broker architecture (OMG/CORBA). An object request
broker (ORB) provides a variety on services that enable reusable
components (objects) to communicate with other components, regardless
of their location within a system. When components are built using the
OMG/CORBA standard, integration of those components (without
modification) within a system is assured if an interface definition language
(IDL) interface is created for every component. Using a client/server
metaphor, objects within the client application request one or more
services from the ORB server. Requests are made via an IDL or
dynamically at run time. An interface repository contains all necessary
information about the service’s request and response formats.
Program templates. The structure model can serve as a template for the
architectural design of a new program.
Once standard data, interfaces, and program templates have been established, the
designer has a framework in which to create the design. New components that
Re-Engineering
When we need to update the Forward Engineerin
software to keep it to the current
market, without impacting its
functionality, it is called software
re-engineering
It is a process where the design of
software is changed and programs
are re-written
Legacy software cannot keep
tuning with the latest technology
available in the market
For example, initially UNIX was
developed in assembly language.
When language C came into existence,Reverse Engineering
UNIX was re-engineered in C, because
working in assembly language was
difficult.
Reverse
Re-Engineering Cont. Engineeri
ng
Decide what to re-engineer. Obtain
specificati
Is it whole software or a part of it?
ons of
Perform Reverse Engineering, in existing
order to obtain specifications of softwareProgram
existing software Restructur
Restructure Program if required Change ing
For example, changing function- program
oriented programs into object- and/or
oriented programs and re-structure
data as required
data
structure
Apply Forward engineering concepts Forward
in order to get re-engineered Engineeri
software Get re- ng
engineered
software
developed
Reverse Engineering Reverse
engineering can
The abstraction level of a extract design
reverse engineering process information from
refers to the sophistication of the source code
As the abstraction level
design information that can be
extracted from source code increases, information will allow
easier understanding of the
Ideally, the abstraction level program
should be as high as possible Interactivity refers to the
The reverse engineering process degree to which the human is
should be capable of “integrated” with automated
Deriving procedural design tools to create an effective
representations (a low-level reverse engineering process
abstraction)
Program and data structure In most cases, as the
information (a somewhat higher abstraction level increases,
level of abstraction) interactivity must increase
Object models, data flow models
(a relatively high level of abstraction)
The directionality of the
Entity relationship models (a high reverse engineering process is