doc

advertisement
CSC532 Term Paper
COMPONENT BASED SOFTWARE ENGINEERING
Krishna chaitanya Dasam
kcd014@latech.edu
Abstract:
Component based Software Engineering (CBSE) is a new trend in developing high
quality software systems effectively. The basic idea behind component based
software development is to build software from already built components rather
than developing everything from scratch. CBSE looks very promising using
reusable components as they provide lot of functionalities but they are many traps
to developers that can lead to higher cost than the benefits of reusing. This article
describes a short introduction, history, establishment, benefits and limitations of
CBSE.
Introduction:
Nowadays, Software systems are becoming increasingly complex but at the same
time providing more functionality. To be able to produce such systems costeffectively, suppliers often are using Component based technologies instead of
developing all the parts from the scratch. Initially, the main aim behind the use of
components was to reduce the cost of development, but it later became more
important to reduce the time to market and to meet rapidly emerging market
demand and consumer needs.
Component based Software Engineering (CBSE) is gaining recognition as the key
technology for the construction of high-quality, evolvable, large software systems
in timely and affordable manner. The ultimate goal is to reduce developing costs
and efforts, improvement in flexibility, reliability and reusability of final
application due to (re)use of software components already tested and validated.
Indeed, in many domains significant improvements in efficient of development
have been achieved. However, including components on which the producer
doesn’t have any control can lead to unexpected results. Even the good
components can corrupt the final product if they are managed unknowingly.
History:
Since the first software crisis in the early sixties, many attempts have been made o
support the construction of especially large and high quality systems. The
procedural paradigms as well as object-oriented design have contributed in many
respects to this; nevertheless the efficient building of high quality software
systems is still an unsolved problem. A current approach to improve the situation
is CBSE, where pre-fabricated pieces of code are integrated into the software
systems being developed. The basic idea is simple, when developing new software
systems use components that are already developed. When you develop specific
functions you need in your system, develop it in that way that this function can be
used by the other systems in future. Although the idea is simple, it has been shown
that the implementation is quite hard.
The basic step in the development of software systems from reusable components
is to divide the system into well-defined components. The components that cannot
be developed internally are given for outsourcing or bought already developed
components from other companies. Figure 1 shows System reusability evolution.
In 80s the systems were monolithic; always everything is developed from the
scratch including the hardware development and the environment development. In
90s the hardware can be bought from standardized companies but still operating
environment has to be changed according to the requirement. Nowadays, typically
standard hardware, software and infrastructure are used. Only those parts that are
directly related to the customer requirements are internally developed. This led to
decrease in development time and reduction in development costs.
The idea of building products from already built software components is not a new
one in Software Engineering. Before implementing it in software engineering it
has been successfully implemented in many other disciplines, e.g.
 Building hardware computer systems, the use of pre-fabricated hardware
components and integrated circuits with standardized interfaces has been
established.
 In many Engineering disciplines, the use of pre-manufactured components
with standardized interfaces leads to efficient and cost reducing production
of products.
As the component based approach led to a more efficient production of goods in
these application fields, it is ongoing hope of the software industry to gain a
technology to create and maintain especially large software systems more
efficiently.
What is CBSE?
Component-based Software Engineering (CBSE) denotes the process of building
software by reusing pre-built software components thus basing on the meaning of
software components. There are varieties of definitions for software component in
software literature today.
 A software component is a piece of code that is small enough to get created
and maintained as a whole and large enough to offer well defined
functionality.
 A software component is a unit composition that is equipped with an
interface built upon standards in order to collaborate with other software
components and can exist independently of development or execution
environments.
 A run-time software component is a dynamically binded package of one or
more programs that are managed as a unit and accessed through interfaces
that are discovered at run-time.
 A business component represents the software implementation of business
concept or business process. It consists of all software artifacts necessary to
express, implement and deploy the concept as a reusable element of a large
business system.
Software component infrastructure
Due to this understanding CBSE is not an advancement of object-oriented
software development, rather these approaches are orthogonal to each other in that
components can be implemented by object-oriented approach as well as
conventional functional or logical languages.
Establishment of CBSE:
Implementing CBSE effectively in an organization does not only affect on
software engineering process but also has impacts on large parts of the
organization. There are many frameworks and process models that are used in
implementing CBSE in an organization. They view establishment of CBSE as
bundle of activities that can be grouped in three phases called Investigation,
Planning and Implementation & Maintenance.
The Investigation phase aims at the identification of potential benefits as well as
costs that are incurred for the organization for implementing CBSE. The main
issues that are concerned here are the scope and the level of reusing components.
The supporting framework consists of management, competitors and customers.
The management deals with the issues like has the CBSE fit the culture of
organization, has it taken place earlier in the organization, are there domains
suitable for maintaining reusable components. Regarding the competitors, issues
like have they gained any advantage in using CBSE and how they used CBSE?
Concerning the customers, it is important to know to which degree they demand
modular software. This phase is critical as persons performing various tasks must
be equipped with technical as well as organizational knowledge.
The Planning phase deals with the designing the organization for CBSE. Various
aspects that are considered during planning phase are people, processes,
organizational structures, metrics, marketing, technologies and legal & contractual
issues.
In the Implementation & Maintenance phase firstly the planned design has to be
realized like timely acquisition and management of resources. Furthermore, there
are monitoring tasks such as realization of the planned design strategy with its
time and resource schedule observed, the adoption process must be monitored and
CBSE itself should be recorded in the long term by use of definite metrics.
Benefits of CBSE:
 Development cost and time: By using the components that are already
developed in developing the product, the development cost and the time in
delivering the product to the market are reduced.
 Increased productivity: As the software life cycle now requires less input
to produce the same output, productivity is increased.
 Improve software quality: As the software parts have been used multiple
times, they posses less defects than fresh coded parts.
 Increased connectivity and Interoperability: Products will plug together
more easily. The manufacturers will be able to readily sell their hardware.
 Reduced trouble shooting and maintenance: By using the components
that are already developed, the troubleshooting and the maintenance are
done easily.
 Support of prototyping: The availability of reusable components supports
prototyping and an early validation of user requirements.
 Reduced burden: The burden in creating new software systems is reduced
when components that are already developed are available.
Limitations of CBSE:
 Decreased control: As the components used for developing the product
are provided by other vendors, there is no quality control on the system
being developed.
 Higher cost: The components that are bought from vendors in order to
use develop the product may not fit exactly the required criteria of the
product. So in order to change the component according to the requirement
it may incur an additional charge that cannot be affordable by the
enterprise.
 Risk of corruption: Sometimes the components that are bought from other
vendors may spoil the entire product being developed.
Applications of CBSE:
The field of CBSE is currently in a period of rapid growth and change. So there
has been considerable work going on in the development of component
interoperability models. These component models help developers deal with
complexity of software and promote reuse. With component models, the focus is
on specifying interfaces, packaging, binding mechanisms, inter component
communication protocols.
Component models are the most important step in the software reusability. If the
components are developed independent of each other then it is highly unlikely that
components developed under such conditions are able to cooperate usefully.
A Component model supports components by forcing them to conform certain
standards and allows instances of these components to cooperate with other
components in this model.
The three major component models that are used successfully today are:
 COM
 Java Beans
 CORBA
Component Object Model (COM)
The component object model is an application program interface (API) that
provides a model for designing components that have multiple interfaces with
dynamic binding to other components. It is an open standard and can be
implemented on many different platforms.
Java Beans
The Java Beans design pattern designs a protocol to which beans must adhere.
This interface pattern mainly consists of properties, methods and events that
together define a bean interface. A Java Bean is a reusable component that support
persistency and can operate across all platforms supported by java.
CORBA
The Common Object Request Broker Architecture (CORBA) is a standard that has
been developed by Object management group (OMG). The OMG provides
guidelines and specifications to supply a common framework for integrating
application development. Primary requirements for these specifications are
reusability, portability and interoperability of object based software components in
a distributed environment.
References:
http://www.sei.cmu.edu/
http://www.mrtc.mdh.se/
http://www.fuka.info.waseda.ac.jp/
http://www.it.bond.edu.au/inft821/component/
Download