of Computer Sciences
Based Software Development
Muhammad 140671 A
Muheet 140707 A
Ahmad Dar 140725 A
research paper gives a short overview of Component-based Software Engineering
Building Systems from Components. The aim of the paper is to bring together
researches and practitioners from system engineering, software architecture and
from component-based software engineering communities in order to exchange experiences
and research results from these domains.
Based Software Engineering is an approach in which software system is developed
through assembly of components. Development of parts as reusable entities is
desired. In this paper we have discussed about the component based software life
cycle. CBSE technology risks are discussed and model of RAM process which is
used to control the risks is described. Embedded system implementation using component
based approach is also discussed.
Software Engineering (CBSE) is concerned with the development of software
systems from reusable parts (components), the development of components, and
system maintenance and improvement by means of component replacement or
customization. Building systems from components and building components for
different systems requires established methodologies and processes not only in
relation to development/maintenance phases, but also to the entire component
and system lifecycle including organizational, marketing, legal, and other
aspects. In addition to objectives such as component specification,
composition, and component technology development that are specific to CBSE,
there are a number of software engineering disciplines and processes that
require methodologies be specialized for application in component-based development.
Many of these methodologies are not yet established in practice, some have not
yet been developed. The progress of software development in the near future
will depend very much on the successful establishment of CBSE; this is
recognized by both industry and academia. The growing interest in CBSE is reflected
in the number of workshops and conferences with CBSE tracks.
For the last 50 years, the technology for producing computer
hardware has radically changed. At the early days, vacuum tubes and transistors
were used. Since 1975, the integrated circuits (IC) and very large-scale
integrated circuits (VLSI) have been used and will continue to do so for the
foreseeable future. A transistor is simply an on/off switch controlled by electricity.
The integrated circuit combined dozens to hundreds of transistors into a single
chip. A VLSI circuit then, is just millions of combinations of conductors,
insulators, and switches manufactured in a single, small package. The
integrated circuits (IC) and very large-scale integrated circuits (VLSI) make
the basic building blocks from which faster and less expensive computers can be
The development of
software systems from existing components continues to hold the attention of
the software engineering community. Problem is to select those components so to
reduce cost and development time, while increasing the quality of systems. Component
Based Software Engineering or CBSE represents a new development paradigm:
assembling software systems from components. Reuse of components should be increased.
Jim Q. Ning, 1997,
has discussed the technology infrastructure necessary to support CBSE.
Component based Architecture Specification Language called ASL is also
described in this paper. Interfaces and specification of components is also
discussed. Ivica Crnkovic, 2003, has discussed established methodologies and
tool support covering the entire component and system lifecycle including
technological, organizational, marketing, legal, and other aspects. Advantages
of CBSE are also discussed in this paper. Xia Cai, Michael R. Lyu, Kam-Fai Wong
Roy KO 2000, discussed the current component-based software technologies,
describe their advantages and disadvantages, and discuss the features they
inherit. Researchers also address QA issues for component-based software. As a
major contribution, they propose a QA model for component-based software
development, which covers component requirement analysis, component development,
component certification, component customization, and system architecture
design, integration, testing, and maintenance. W. Lam, A.J. Vickers 1997,
discusses the risks associated with the adoption of CBSE technology. A model of
the risk analysis and management (RAM) process for CBSE technology is proposed
as a means of controlling risks. Five CBSE technology risk areas are identified
– domain inadequacies, shortfalls in reuse components, shortfalls in the
architecture, deficiencies in the CBSE infrastructure and educational issues –
and examined. A number of risk management techniques are proposed. Mohammed A. Abdallah
2008 discusses the use of CBSE in embedded systems. This paper considers the
basic overview of component-based model and general issues about embedded
systems. The core issue is providing an example showing that how useful to
implement an embedded system using the component-based software engineering.
mainly depends on building systems from existing components, providing support
for the development of systems as assemblies of components. It is also
supporting the development of components as reusable units and it is
facilitating the maintenance and evolution of systems by customizing and
replacing their components. The component-based approach has some advantages
over the traditional programming. Firstly, advantages from the business point
of view in terms of shorter time-to-market, lower development and maintenance
costs. Secondly, advantages from technical and engineering point of view which
can be increased understandability of complex systems and increased the reusability,
interoperability, flexibility, adaptability, dependability. Thirdly, they have
advantages from strategic point of view of a society such as increasing software
market, generation of new companies. Finally, component-based approach has been
successful in many application environments.
Basic Definitions in Component-based Approach
basis logical unit of work is the component. Components can be assembled
according to the rules specified by the component model. Components are assembled
through their interfaces. A Component Composition is the process of assembling
components to form an assembly, a larger component or an application. Components
are performing in the context of a component framework. A component technology
is a concrete implementation of a component model. A software component is a
software element that confirms a component model, can be independently deployed
and composed without modification according to a composition standard. A
component model defines specific interaction and composition standards. Components
can be described in different ways like white, grey or black box. Precondition
is an assertion that the component assumes to be fulfilled before an operation is
invoked. Post condition is an assertion that the component guarantees will hold
just after an operation has been invoked, provided the operation’s
pre-conditions were true when it was invoked. Invariant is a predicate over the
interface’s state model that will always hold.
Basic Principles of the Component-based Software Engineering
It means that the same component can be used
in many systems. The desire to reuse a component leads to some technical
constraints such as: good documentation should be available to be able to reuse
a component as well as a well-organized reuse process and the similar architecture
of the components should be provided to ensure the consistency and the
efficiency of the system.
The overall system should work in spite of
which component is used. There are some limitations in this area such as: the
runtime replacement of the components.
can take one of two shapes either extending components that are part of a
system or increase the functionality of individual components. But there are
technical challenges such as: design-time.
approach is not new. Components are explicitly addressed in software
architecture and commonly used in system engineering. Yet, there is different
understanding of components in these areas. While the primary goal of software
architecture and system engineering is to understand the system by dividing it
in components and identifying components as compostable units that express
certain functions and properties, CBSE starts from the given properties of the
components and then defines a system by utilizing these properties. The main
idea for the workshop was to analyze and compare these approaches, to find
common understandings and possibly cross-fertilize the best ideas and practices
from these areas. Systems attributes in relation to component attributes and
the composition process were the primary subjects of the workshop.
The following areas of
interest were listed in the Call for paper:
Software architecture as related to CBSE.
Analysis/design methods for building
component based systems.
Selection/evolution criteria for
components and assemblies of components.
Predictability of component compositions.
Configuration management of components and
Verification of systems based on component
component based implementation, there are many functions listed in the same
block and all these blocks were written in the same module. So, this single
module is the only responsible of the total task of the system. If any error is
occurs, the designer cannot know easily where the location of the error because
the whole module is not working although there is one error in a specific part
in this module which is faulty. So, if we can collect the functions that do a
single kind task in single module, it will be easier to detect the location of
the error knowing the nature of it. These collected functions can be done in a
component. So, a single component is responsible for a single task and then it
is necessary to integrate these components together via interfaces to build the
total system. This idea can be supported in Altera Quartus II using Verilog
language. This language deals with modules so, each component is considered as
module do a specified task. It is needed to design a top level module that will
integrate or woven these components together to achieve the total system requirements
in efficient way. This illustrates how the traditional programming can be
handled in more efficient way if it deals with components. Each block now is
corresponding to a single component which in turn is mapped to a single module.
are many functions listed in the same block and all these blocks were written
in the same module. So, this single module is the only responsible of the total
task of the system. If any error is occurs, the designer cannot know easily
where the location of the error because the whole module is not working
although there is one error in a specific part in this module which is faulty.
So, if we can collect the functions that do a single kind task in single
module, it will be easier to detect the location of the error knowing the
nature of it. These collected functions can be done in a component. So, a
single component is responsible for a single task and then it is necessary to
integrate these components together via interfaces to build the total system.
This idea can be supported in Altera Quartus II using Verilog language. This
language deals with modules so, each component is considered as module do a
specified task. It is needed to design a top level module that will integrate
or woven these components together to achieve the total system requirements in
efficient way.This illustrates how the traditional programming can be handled
in more efficient way if it deals with components. Each block now is
corresponding to a single component which in turn is mapped to a single module.
software engineering is a approach of developing software systems by selecting
off-shelf components and then assemble the components with well-defined
software architecture. This approach is used to deploy the reusability in the
software engineering and to assure the quality for software development. Model
of RAM process is a structured approach which is used for controlling risks
involved in the system.
software engineering becomes a new approach in software development. Embedded systems
are used in many fields in our life. So, if the component-based approach is
used in building and designing these embedded systems, many advantages will be
achieved. Time to build an embedded system will be reduced, easy testing and
fast system maintenance and updating. In this paper, an example of how to use
the component-based software engineering in designing the embedded system is
introduced. It can be concluded that hardware language (e.g. Verilog) designers
are not professional in writing a code in efficient way. So, if there are
standards that help designers of embedded system to deal with components, the
generated systems will be more efficient and powerful. The development of using
the component-based approach in embedded systems is still slow. This area of
research needs a lot of work to develop standards to work with in designing
process and dealing with components in many programming fields.
Component Based Software Engineering can be widely used
by non-programmers for building their applications for which tools can be developed
by component assembly. Automatic component update over the Internet will be a
standard means of application improvement. Quality Assurance model can be applied
to real world projects so that it can actually guide the practices of component
based software development. Standardization of domain-specific components on
the interface level will make it possible to build applications and system from
components purchased from different vendors.
Jim Q. Ning,”Component-Based Software Engineering
(CBSE)”, IEEE 1997.
Ivica Crnkovic,”Component-based Software
Engineering – New
Challenges in Software
Development”, 2nd Int.
ITI/ 2003, June 16-1 9, 2003,
Mohammed A. Abdallah” Implementing the
Embedded Systems” IEEE
W. Lam, A.J. Vickers “Managing the Risks of
Engineering” ,IEEE 1997.
Xia Cai, Michael R. Lyu, Kam-Fai Wong, Roy KO”
Frameworks, and Quality
Assurance Schemes”, IEEE