{"id":171,"date":"2018-07-24T09:48:41","date_gmt":"2018-07-24T09:48:41","guid":{"rendered":"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=171"},"modified":"2018-08-07T12:42:52","modified_gmt":"2018-08-07T12:42:52","slug":"component-based-development","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/chapter\/component-based-development\/","title":{"rendered":"Component Based Development"},"content":{"raw":"&nbsp;\r\n<p style=\"text-align: justify\"><strong style=\"text-align: initial;font-size: 1em\">COMPONENT BASED DEVELOPMENT<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">Component based development is a software system development methodology where the system is developed using reusable software components. Component based development aims at improved efficiency, performance and quality of the system by recycling components.<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>LEARNING OBJECTIVES<\/strong>\r\n\r\n&nbsp;\r\n\r\n\u2022\u00a0Engineering of Component Based Software Development\r\n\r\n\u2022 Component Based Development\r\n\r\n\u2022 Standard Software packages\r\n\r\n&nbsp;\r\n\r\n<strong>ELEMENTS OF COMPONENT BASED DEVELOPMENT<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component based development is a software system development methodology where the system is developed using reusable software components. The elements of component based development include the following:<\/p>\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Reuse of software components\r\n\r\n\u00b7\u00a0 Buy, don\u2019t develop\r\n<p style=\"padding-left: 30px\">.\u00a0 \u201cCommercial off-the-shelf\u201d (COTS)<\/p>\r\n\u00b7\u00a0 Shift of attention.\r\n<p style=\"padding-left: 30px\">.\u00a0 From programming to composing<\/p>\r\n<p style=\"padding-left: 30px\">.\u00a0 From design to selection<\/p>\r\n\u00b7\u00a0 Speed of development\r\n\r\n\u00b7\u00a0 Cost efficient\r\n\r\n&nbsp;\r\n\r\n<strong>ORIGIN CBD (OR CBSE)\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component-based software engineering (CBSE) is a general approach to software development that is based on software reuse. It emerged from the failure of object-oriented development to support effective reuse. Single object classes are too detailed and specific. Components are more abstract than object classes and can be considered to be stand-alone service providers.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong style=\"font-size: 1em\"><span style=\"text-align: initial;font-size: 1em\">Definitions\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">\u201c<\/span><em style=\"font-size: 1em\">Component Based Software Engineering (CBSE) is changing the way software systems are developed. CBSE embodies the \u2018buy, don\u2019t build\u2019 philosophy\u2026CBSE shifts the emphasis from programming software to composing software systems.<\/em><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><em style=\"font-size: 1em\">Implementation has given way to integration as the focus. At its foundation is the assumption that there is sufficient commonality in many large software systems to justify developing reusable components to exploit and satisfy that commonality\u201d <\/em><span style=\"font-size: 1em\">- Clements 1995<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Component\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><em>OMG Unified Modeling Language Specification <\/em>[OMG01] defines a component as \u201c\u2026 a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.\u201d<\/p>\r\n&nbsp;\r\n\r\n<strong>OO view<\/strong><em>:\u00a0 <\/em>A component contains a set of collaborating classes\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>Conventional view: <\/strong>A component contains processing logic, the internal data structures that are required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it. The CBSE essentials are comprised of the following:<\/p>\r\n\r\n<ul>\r\n \t<li>Independent components specified by their interfaces.<\/li>\r\n \t<li>Component standards to facilitate component integration.<\/li>\r\n \t<li>Middleware that provides support for component interoperability.<\/li>\r\n \t<li>A development process that is geared to reuse<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong style=\"text-align: initial;font-size: 1em\">DESIGN PRINCIPLES\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nComponent-based software engineering (CBSE) design involves the following principles:\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Components are independent, no interference\r\n\r\n\u00b7\u00a0 Component implementations are hidden\r\n\r\n\u00b7\u00a0 Communication is through well-defined interfaces\r\n\r\n\u00b7\u00a0 Container: service provider for locating and getting component interface\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: initial\">The following figure shows the design principles for component based development where each components are independent and the component implementation is hidden. Communication among the components is done through well defined interfaces and there exists a container which provides service for locating component interface.<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-175\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES.png\" alt=\"\" width=\"377\" height=\"177\" \/>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>COMPONENT MODELS\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">A component model is a definition of standards for component implementation, documentation and deployment. The component model specifies how interfaces should be defined and the elements that should be included in an interface definition. Examples of component models<\/p>\r\n&nbsp;\r\n\r\n\u00b7\u00a0 EJB model (Enterprise Java Beans)\r\n\r\n\u00b7\u00a0 COM+ model (.NET model)\r\n\r\n\u00b7\u00a0 OMG Corba Component Model\r\n\r\n&nbsp;\r\n\r\n<strong>OMG\/ CORBA\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The Object Management Group has published <em>common object request broker architecture <\/em>(OMG\/CORBA). An object request broker (ORB) provides services that enable reusable components (objects) to communicate with other components, regardless of their location within a system. The integration of CORBA components (without modification) within a system is assured if an interface definition language (IDL) interface is created for every component. 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\u2019s request and response formats<\/p>\r\n&nbsp;\r\n\r\n<strong>SUN JAVABEANS<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The JavaBeans component system is a portable, platform independent CBSE infrastructure developed using Java. It encompasses a set of tools, called the <\/span><em style=\"text-align: initial;font-size: 1em\">Bean Development Kit <\/em><span style=\"text-align: initial;font-size: 1em\">(BDK), which allows developers to<\/span><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 analyze how existing Beans (components) work<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 customize their behavior and appearance<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 establish mechanisms for coordination and communication<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 develop custom Beans for a specific application<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>MICROSOFT COM\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The <em>component object model <\/em>(COM) provides a specification for using components produced by various vendors within a single application running under the Windows operating system.<\/p>\r\n&nbsp;\r\n\r\n\u00b7\u00a0 COM encompasses two elements:\r\n<p style=\"padding-left: 30px\">\u25e6\u00a0 COM interfaces (implemented as COM objects)<\/p>\r\n<p style=\"padding-left: 30px\">\u25e6\u00a0 A set of mechanisms for registering and passing messages between COM interfaces.<\/p>\r\n&nbsp;\r\n\r\n<strong>ENGINEERING OF CBS\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe engineering of CBS should satisfy the following aspects:\r\n\r\n&nbsp;\r\n\r\n\u25e6\u00a0 Identifying the components which are candidates for implementation\r\n\r\n\u25e6\u00a0 Qualifying the interfaces of the components\r\n\r\n\u25e6\u00a0 Adapting of the components to the architecture\r\n\r\n\u25e6\u00a0 Updating of the components due to changes in the requirements.\r\n\r\n&nbsp;\r\n\r\n<strong>CBSE Process<\/strong>\r\n\r\n&nbsp;\r\n\r\n<span style=\"font-size: 1em;text-align: initial\">The CBSE process involves the following to develop a system from reusable software components:<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0\u00a0<\/span><em style=\"text-align: initial;font-size: 1em\">Domain Engineering: \u00a0<\/em><span style=\"text-align: initial;font-size: 1em\">Library Function<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0\u00a0<\/span><em style=\"text-align: initial;font-size: 1em\">Component Based Development: <\/em><span style=\"text-align: initial;font-size: 1em\">Implementation Function CBSE<\/span>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-174\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE.png\" alt=\"\" width=\"1192\" height=\"575\" \/>\r\n\r\n<strong>Domain Engineering\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Domain Engineering focuses on identification, construction, catalog and dissemination of a set of software components, which can be applied to existing and future software for a particular domain. The most important functions during domain engineering involve analysis, construction and dissemination.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Domain Engineering Analysis is analysis of the reusable software components within a particular context or domain. Domain engineering analysis process comprises of the following actions;<\/p>\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Define the domain to be investigated and categorize the elements with respect to the domain\r\n\r\n\u00b7\u00a0 Representative sample of applications in the domain are provided such as business rules, best practices.\r\n\r\n<span style=\"font-size: 1em;text-align: initial\">\u00b7\u00a0 Develop a model for the domain.<\/span>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: justify;font-size: 1em\">Domain engineering construction is the selection of a function or object for component reuse for the construction of the software system. The objective of this process is to construct a structural model. The objects selected from a particular domain are analyzed for reusability by posing the following questions:<\/span><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is the functionality needed for future implementations?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 What is the degree of reusability (commonality)?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is there a duplication of the functions in the domain?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is the component hardware dependent?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is the design optimal for future implementations?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Can a non-reusable component be re-parameterized such that it becomes reusable?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is it useful to decompose or re-parameterize a component for reuse?<\/span><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: justify;font-size: 1em\">Domain Engineering Dissemination involves a library of components, the characterization for possible reuse of components and looking at various aspects for it.<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Component Based Development\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component based development focuses on component implementation. The component based development involves the following actions:<\/p>\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Analysis of the particular application\r\n<p style=\"padding-left: 30px\">\u25e6\u00a0 \u00a0referring to the domain model<\/p>\r\n\u00b7\u00a0 Architectural design\r\n<p style=\"padding-left: 30px\">\u25e6\u00a0 \u00a0referring to the structural model<\/p>\r\n\u00b7\u00a0 Component qualification, adaption, composition\r\n<p style=\"padding-left: 30px\">\u25e6\u00a0 \u00a0possible engineer another component<\/p>\r\n\u00b7\u00a0 Testing\r\n\r\n&nbsp;\r\n\r\n<strong>Component Qualification<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: initial\">Domain Engineering provides a library of reusable components and component qualification checks whether the component selected can perform the function required. The following aspects are checked in a component to decide their qualification.<\/span><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Can a selected component effectively be reused?<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 The effectiveness in the development and integration of tools required.<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Run time requirements : resources, speed, network protocol<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Services requirements like OS interfaces and support of other components<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0\u00a0Security features like access control and authentication protocols Component adaption<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component adaption focuses on assuring that the components are integrated easily in the architecture. The components are easily integrated by implementing consistent methods for resource management for all components, which comprises of common activities such as data management for all components. The interfaces between components and the outside world are developed in a consistent way for the easy integration and adaptation of the components. The components are integrated into the architecture by either using component wrapping or custom component.<\/p>\r\n&nbsp;\r\n\r\n<strong>Component composition<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component composition is the assembling of qualified, adapted or engineered components. Common architecture environment comprises of the elements:<\/p>\r\n&nbsp;\r\n\r\n\u25e6\u00a0 Data Exchange model: human-to-software, between components, among system resources\r\n\r\n\u25e6\u00a0 Automation, tools macro\u2019s and scripts\r\n\r\n\u25e6\u00a0 Structured Storage, accessing heterogeneous data in a single data structure\r\n\r\n\u25e6\u00a0 Underlying Object Model, assures interoperability\r\n\r\n&nbsp;\r\n\r\n<strong>CBSE PROBLEMS<\/strong>\r\n\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The problem encountered during component based software engineering process involves:<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Component trustworthiness - how can a component with no available source code be trusted?\r\n\r\n\u00b7\u00a0 Component certification - who will certify the quality of components?\r\n\r\n\u00b7\u00a0 Emergent \u00a0property \u00a0prediction \u00a0- \u00a0how \u00a0can \u00a0the \u00a0emergent \u00a0properties \u00a0of \u00a0component compositions be predicted?\r\n\r\n\u00b7\u00a0\u00a0Requirements trade-offs - how do we do trade-off analysis between the features of one component and another?\r\n\r\n&nbsp;\r\n\r\n<strong>ARIANE LAUNCHER FAILURE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">In 1996, the 1st test flight of the Ariane 5 rocket ended in disaster when the launcher went out of control 37 seconds after takeoff. The problem was due to a reused component from a previous version of the launcher (Inertial Navigation System) that failed because assumptions made when that component was developed did not hold for Ariane 5. But, the functionality that failed in this component was not at all required in Ariane 5.<\/p>\r\n&nbsp;\r\n\r\n<strong>STANDARD PACKAGES\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The standard packages for component based software engineering development include SAP, Oracle, Peoplesoft, etc. developed for specific business processes. These packages have projected strong development in the last years (shift from custom made to standard packages). It incorporates \u2018Enabler\u2019 of working in a process way (BPR) and \u2018Best practice\u2019 business processes build in. It started in the ERP environment (\u2018Enterprise Resource Planning\u2019) where primary business processes are extended to many other environments. It has made large changes in methodology for implementation of software systems.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">CBSE and standard packages change an implementation from \u2018programming to composing\u2019 and from \u2018design to select\u2019. The integration of modules in existing architectures became more and more important, as they lay the interfaces in development of the system. Customizations are made around the standard applications e.g. When modules becomes complex and has to be integrated. The aspect with relation to what is leading the \u2018requirement\u2019 or the \u2018package\u2019 becomes an\u00a0<span style=\"font-size: 1em\">important issue. The management and \u2018human factors\u2019 stay the most important aspects for the success of an implementation.<\/span><\/p>\r\n\r\n<\/div>\r\n&nbsp;\r\n\r\n<strong>Web Links<\/strong>\r\n<ul>\r\n \t<li>https:\/\/en.wikipedia.org\/wiki\/Component-based_software_engineering<\/li>\r\n \t<li>highered.mheducation.com\/sites\/dl\/free\/0073375977\/673802\/chapter10.doc<\/li>\r\n \t<li>www.rspa.com\/spi\/design-component.htm<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Supporting &amp; Reference Materials<\/strong>\r\n\r\n&nbsp;\r\n<ul>\r\n \t<li>Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2001.<\/li>\r\n \t<li>Pankaj Jalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Springer Verlag, 1997.<\/li>\r\n \t<li>Ian Sommerville, \u201cSoftware Engineering\u201d, Sixth Edition, Addison Wesley, 2000.<\/li>\r\n<\/ul>","rendered":"<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong style=\"text-align: initial;font-size: 1em\">COMPONENT BASED DEVELOPMENT<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">Component based development is a software system development methodology where the system is developed using reusable software components. Component based development aims at improved efficiency, performance and quality of the system by recycling components.<\/span><\/p>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>LEARNING OBJECTIVES<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\u2022\u00a0Engineering of Component Based Software Development<\/p>\n<p>\u2022 Component Based Development<\/p>\n<p>\u2022 Standard Software packages<\/p>\n<p>&nbsp;<\/p>\n<p><strong>ELEMENTS OF COMPONENT BASED DEVELOPMENT<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component based development is a software system development methodology where the system is developed using reusable software components. The elements of component based development include the following:<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Reuse of software components<\/p>\n<p>\u00b7\u00a0 Buy, don\u2019t develop<\/p>\n<p style=\"padding-left: 30px\">.\u00a0 \u201cCommercial off-the-shelf\u201d (COTS)<\/p>\n<p>\u00b7\u00a0 Shift of attention.<\/p>\n<p style=\"padding-left: 30px\">.\u00a0 From programming to composing<\/p>\n<p style=\"padding-left: 30px\">.\u00a0 From design to selection<\/p>\n<p>\u00b7\u00a0 Speed of development<\/p>\n<p>\u00b7\u00a0 Cost efficient<\/p>\n<p>&nbsp;<\/p>\n<p><strong>ORIGIN CBD (OR CBSE)\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component-based software engineering (CBSE) is a general approach to software development that is based on software reuse. It emerged from the failure of object-oriented development to support effective reuse. Single object classes are too detailed and specific. Components are more abstract than object classes and can be considered to be stand-alone service providers.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong style=\"font-size: 1em\"><span style=\"text-align: initial;font-size: 1em\">Definitions\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">\u201c<\/span><em style=\"font-size: 1em\">Component Based Software Engineering (CBSE) is changing the way software systems are developed. CBSE embodies the \u2018buy, don\u2019t build\u2019 philosophy\u2026CBSE shifts the emphasis from programming software to composing software systems.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><em style=\"font-size: 1em\">Implementation has given way to integration as the focus. At its foundation is the assumption that there is sufficient commonality in many large software systems to justify developing reusable components to exploit and satisfy that commonality\u201d <\/em><span style=\"font-size: 1em\">&#8211; Clements 1995<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Component\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><em>OMG Unified Modeling Language Specification <\/em>[OMG01] defines a component as \u201c\u2026 a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.\u201d<\/p>\n<p>&nbsp;<\/p>\n<p><strong>OO view<\/strong><em>:\u00a0 <\/em>A component contains a set of collaborating classes<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>Conventional view: <\/strong>A component contains processing logic, the internal data structures that are required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it. The CBSE essentials are comprised of the following:<\/p>\n<ul>\n<li>Independent components specified by their interfaces.<\/li>\n<li>Component standards to facilitate component integration.<\/li>\n<li>Middleware that provides support for component interoperability.<\/li>\n<li>A development process that is geared to reuse<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong style=\"text-align: initial;font-size: 1em\">DESIGN PRINCIPLES\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Component-based software engineering (CBSE) design involves the following principles:<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Components are independent, no interference<\/p>\n<p>\u00b7\u00a0 Component implementations are hidden<\/p>\n<p>\u00b7\u00a0 Communication is through well-defined interfaces<\/p>\n<p>\u00b7\u00a0 Container: service provider for locating and getting component interface<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: initial\">The following figure shows the design principles for component based development where each components are independent and the component implementation is hidden. Communication among the components is done through well defined interfaces and there exists a container which provides service for locating component interface.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-175\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES.png\" alt=\"\" width=\"377\" height=\"177\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES.png 377w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES-300x141.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES-65x31.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES-225x106.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DESIGN-PRINCIPLES-350x164.png 350w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>COMPONENT MODELS\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">A component model is a definition of standards for component implementation, documentation and deployment. The component model specifies how interfaces should be defined and the elements that should be included in an interface definition. Examples of component models<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 EJB model (Enterprise Java Beans)<\/p>\n<p>\u00b7\u00a0 COM+ model (.NET model)<\/p>\n<p>\u00b7\u00a0 OMG Corba Component Model<\/p>\n<p>&nbsp;<\/p>\n<p><strong>OMG\/ CORBA\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The Object Management Group has published <em>common object request broker architecture <\/em>(OMG\/CORBA). An object request broker (ORB) provides services that enable reusable components (objects) to communicate with other components, regardless of their location within a system. The integration of CORBA components (without modification) within a system is assured if an interface definition language (IDL) interface is created for every component. 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\u2019s request and response formats<\/p>\n<p>&nbsp;<\/p>\n<p><strong>SUN JAVABEANS<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The JavaBeans component system is a portable, platform independent CBSE infrastructure developed using Java. It encompasses a set of tools, called the <\/span><em style=\"text-align: initial;font-size: 1em\">Bean Development Kit <\/em><span style=\"text-align: initial;font-size: 1em\">(BDK), which allows developers to<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 analyze how existing Beans (components) work<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 customize their behavior and appearance<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 establish mechanisms for coordination and communication<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 develop custom Beans for a specific application<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>MICROSOFT COM\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The <em>component object model <\/em>(COM) provides a specification for using components produced by various vendors within a single application running under the Windows operating system.<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 COM encompasses two elements:<\/p>\n<p style=\"padding-left: 30px\">\u25e6\u00a0 COM interfaces (implemented as COM objects)<\/p>\n<p style=\"padding-left: 30px\">\u25e6\u00a0 A set of mechanisms for registering and passing messages between COM interfaces.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>ENGINEERING OF CBS\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The engineering of CBS should satisfy the following aspects:<\/p>\n<p>&nbsp;<\/p>\n<p>\u25e6\u00a0 Identifying the components which are candidates for implementation<\/p>\n<p>\u25e6\u00a0 Qualifying the interfaces of the components<\/p>\n<p>\u25e6\u00a0 Adapting of the components to the architecture<\/p>\n<p>\u25e6\u00a0 Updating of the components due to changes in the requirements.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>CBSE Process<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 1em;text-align: initial\">The CBSE process involves the following to develop a system from reusable software components:<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0\u00a0<\/span><em style=\"text-align: initial;font-size: 1em\">Domain Engineering: \u00a0<\/em><span style=\"text-align: initial;font-size: 1em\">Library Function<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0\u00a0<\/span><em style=\"text-align: initial;font-size: 1em\">Component Based Development: <\/em><span style=\"text-align: initial;font-size: 1em\">Implementation Function CBSE<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-174\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE.png\" alt=\"\" width=\"1192\" height=\"575\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE.png 1192w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-300x145.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-768x370.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-1024x494.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-65x31.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-225x109.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-350x169.png 350w\" sizes=\"auto, (max-width: 1192px) 100vw, 1192px\" \/><\/p>\n<p><strong>Domain Engineering\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Domain Engineering focuses on identification, construction, catalog and dissemination of a set of software components, which can be applied to existing and future software for a particular domain. The most important functions during domain engineering involve analysis, construction and dissemination.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Domain Engineering Analysis is analysis of the reusable software components within a particular context or domain. Domain engineering analysis process comprises of the following actions;<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Define the domain to be investigated and categorize the elements with respect to the domain<\/p>\n<p>\u00b7\u00a0 Representative sample of applications in the domain are provided such as business rules, best practices.<\/p>\n<p><span style=\"font-size: 1em;text-align: initial\">\u00b7\u00a0 Develop a model for the domain.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: justify;font-size: 1em\">Domain engineering construction is the selection of a function or object for component reuse for the construction of the software system. The objective of this process is to construct a structural model. The objects selected from a particular domain are analyzed for reusability by posing the following questions:<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is the functionality needed for future implementations?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 What is the degree of reusability (commonality)?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is there a duplication of the functions in the domain?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is the component hardware dependent?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is the design optimal for future implementations?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Can a non-reusable component be re-parameterized such that it becomes reusable?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Is it useful to decompose or re-parameterize a component for reuse?<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: justify;font-size: 1em\">Domain Engineering Dissemination involves a library of components, the characterization for possible reuse of components and looking at various aspects for it.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Component Based Development\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component based development focuses on component implementation. The component based development involves the following actions:<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Analysis of the particular application<\/p>\n<p style=\"padding-left: 30px\">\u25e6\u00a0 \u00a0referring to the domain model<\/p>\n<p>\u00b7\u00a0 Architectural design<\/p>\n<p style=\"padding-left: 30px\">\u25e6\u00a0 \u00a0referring to the structural model<\/p>\n<p>\u00b7\u00a0 Component qualification, adaption, composition<\/p>\n<p style=\"padding-left: 30px\">\u25e6\u00a0 \u00a0possible engineer another component<\/p>\n<p>\u00b7\u00a0 Testing<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Component Qualification<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: initial\">Domain Engineering provides a library of reusable components and component qualification checks whether the component selected can perform the function required. The following aspects are checked in a component to decide their qualification.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Can a selected component effectively be reused?<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 The effectiveness in the development and integration of tools required.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Run time requirements : resources, speed, network protocol<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Services requirements like OS interfaces and support of other components<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0\u00a0Security features like access control and authentication protocols Component adaption<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component adaption focuses on assuring that the components are integrated easily in the architecture. The components are easily integrated by implementing consistent methods for resource management for all components, which comprises of common activities such as data management for all components. The interfaces between components and the outside world are developed in a consistent way for the easy integration and adaptation of the components. The components are integrated into the architecture by either using component wrapping or custom component.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Component composition<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component composition is the assembling of qualified, adapted or engineered components. Common architecture environment comprises of the elements:<\/p>\n<p>&nbsp;<\/p>\n<p>\u25e6\u00a0 Data Exchange model: human-to-software, between components, among system resources<\/p>\n<p>\u25e6\u00a0 Automation, tools macro\u2019s and scripts<\/p>\n<p>\u25e6\u00a0 Structured Storage, accessing heterogeneous data in a single data structure<\/p>\n<p>\u25e6\u00a0 Underlying Object Model, assures interoperability<\/p>\n<p>&nbsp;<\/p>\n<p><strong>CBSE PROBLEMS<\/strong><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The problem encountered during component based software engineering process involves:<\/span><\/p>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Component trustworthiness &#8211; how can a component with no available source code be trusted?<\/p>\n<p>\u00b7\u00a0 Component certification &#8211; who will certify the quality of components?<\/p>\n<p>\u00b7\u00a0 Emergent \u00a0property \u00a0prediction \u00a0&#8211; \u00a0how \u00a0can \u00a0the \u00a0emergent \u00a0properties \u00a0of \u00a0component compositions be predicted?<\/p>\n<p>\u00b7\u00a0\u00a0Requirements trade-offs &#8211; how do we do trade-off analysis between the features of one component and another?<\/p>\n<p>&nbsp;<\/p>\n<p><strong>ARIANE LAUNCHER FAILURE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">In 1996, the 1st test flight of the Ariane 5 rocket ended in disaster when the launcher went out of control 37 seconds after takeoff. The problem was due to a reused component from a previous version of the launcher (Inertial Navigation System) that failed because assumptions made when that component was developed did not hold for Ariane 5. But, the functionality that failed in this component was not at all required in Ariane 5.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>STANDARD PACKAGES\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The standard packages for component based software engineering development include SAP, Oracle, Peoplesoft, etc. developed for specific business processes. These packages have projected strong development in the last years (shift from custom made to standard packages). It incorporates \u2018Enabler\u2019 of working in a process way (BPR) and \u2018Best practice\u2019 business processes build in. It started in the ERP environment (\u2018Enterprise Resource Planning\u2019) where primary business processes are extended to many other environments. It has made large changes in methodology for implementation of software systems.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">CBSE and standard packages change an implementation from \u2018programming to composing\u2019 and from \u2018design to select\u2019. The integration of modules in existing architectures became more and more important, as they lay the interfaces in development of the system. Customizations are made around the standard applications e.g. When modules becomes complex and has to be integrated. The aspect with relation to what is leading the \u2018requirement\u2019 or the \u2018package\u2019 becomes an\u00a0<span style=\"font-size: 1em\">important issue. The management and \u2018human factors\u2019 stay the most important aspects for the success of an implementation.<\/span><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p><strong>Web Links<\/strong><\/p>\n<ul>\n<li>https:\/\/en.wikipedia.org\/wiki\/Component-based_software_engineering<\/li>\n<li>highered.mheducation.com\/sites\/dl\/free\/0073375977\/673802\/chapter10.doc<\/li>\n<li>www.rspa.com\/spi\/design-component.htm<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Supporting &amp; Reference Materials<\/strong><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2001.<\/li>\n<li>Pankaj Jalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Springer Verlag, 1997.<\/li>\n<li>Ian Sommerville, \u201cSoftware Engineering\u201d, Sixth Edition, Addison Wesley, 2000.<\/li>\n<\/ul>\n","protected":false},"author":4,"menu_order":17,"template":"","meta":{"_acf_changed":false,"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-r-baskaran"],"pb_section_license":""},"chapter-type":[],"contributor":[58],"license":[],"class_list":["post-171","chapter","type-chapter","status-publish","hentry","contributor-dr-r-baskaran"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/users\/4"}],"version-history":[{"count":5,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/171\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/171\/revisions\/392"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/171\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapter-type?post=171"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/contributor?post=171"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/license?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}