240 likes | 593 Views
COMPONENT-BASED SOFTWARE ENGINEERING. SANDEEP DASARI. What is Component-Based software engineering. CBSE is a process for developing computer systems using reusable software components.
E N D
COMPONENT-BASED SOFTWARE ENGINEERING SANDEEP DASARI
What is Component-Based software engineering • CBSE is a process for developing computer systems using reusable software components. • It is concerned with assembling of pre-existing software components into larger pieces of software
Component • A software component is an independently deployable implementation of some functionality, to be reused as it is in a broad spectrum of applications. • For a software component what it provides and requires should be clearly stated so that it can be used without any ambiguity.
Categories Of Components • Commercial of-the-shelf components- readily available in the market. • Qualified components—assessed by software engineers to ensure that not only functionality, but also performance, reliability, usability, and other quality factors conform to the requirements of the system/product to be built.
Categories of components • Adapted components—adapted to modify (wrapping) unwanted or undesired characteristics. • Assembled components—integrated into an architectural style and interconnected with an appropriate component infrastructure that allows the components to be coordinated and managed effectively. • Updated components—replacing existing software as new versions of components become available.
The CBSE Process • The CBSE process includes to identify candidate components, to qualify each component’s interface, to adapt components to remove architectural mismatches, to assembly components into a selected architectural style, and to update components as requirements for the system change. • The process model for component-based software engineering emphasizes parallel tracks in which domain engineering occurs concurrently with component-based development.
Domain Engineering • The idea of domain engineering is to identify, construct, catalogue and disseminate a set of software components that have applicability in existing and in the future software application. • The overall goal is to identify the common properties between various software systems and develop components so that they can be reused in various systems accordingly.
Domain Engineering • It begins by identifying the domain to be analyzed. • This model guides the developer to identify and categorize the components which are later implemented in the domain
Domain characteristics • A domain characteristic is something that is shared by all the components that are present in the given domain. • With the help of these domain characteristics it is easier to identify the components that can be used.
Component Based Development • This process basically consists of three main stages namely • qualification, • adaptation and • composition
Component Qualification • Component qualification ensures that a candidate component • will perform the function required, • will properly fit into the architectural style specified for the system, and • will exhibit the quality characteristics (e.g., performance, reliability, usability) required for the application.
Component Adaption • Most of the times even after the component has been qualified for use in the architecture it exhibits some conflicts. • To soothe these conflicts certain techniques such as component wrapping is used.
Wrapping • White-Box wrapping – this wrapping involves code level modifications in the components to avoid conflicts. This is not widely used because the COTS products are not provided with the source code.
Wrapping • Grey-Box wrapping- applied when the component library provides a component extension language or API that enables conflicts to be removed. • Black-box wrapping - introduction of pre- and post-processing at the component interface to remove or mask conflicts.
Component Composition • Architectural style depends the connection between various components and their relationships • The design of the software system should be In such a way that most of the components are replaceable or can be reused in other systems.
Quality • Ideally the components for reuse would be verified and defect-free • As the component is reused in many software systems any defect if there would be detected and corrected. So after a couple of reuses the component will have no defects.
Productivity • Productivity is increased as every time the code need not be re-written from the scratch. • The time taken to design and write the code also decreases with the use of software components.
Cost • The major expense is for the following • Commercial of-the-shelf components • The creation and maintenance of reuse repository • Training of personnel in reuse and creation of components
Reuse measure • The benefit associated with the reuse of components in a system t is given by • R(t) = [Cnoreuse – Creuse]/ Cnoreuse where Cnoreuse = cost of developing S with no reuse and Creuse = cost of developing S with reuse
Reuse measure • The value of R(t) is dependent on the number of components that can be reused within the given system. • The value of R(t) can be varied by changing the architectural design. • Hence the cost of development is dependent on the effectiveness of the architectural design.