Component-Based Software Engineering (CBSE) Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001
Topic: Component-Based Software Engineering - Introduction to Component-Based Software Engineering - The CBSE Process - Design Principles for CBSE - Classification and Retrieving Software Components - Component Technologies - CORBA - COM+ - Enterprise JavaBeans - Management of CBSE Jerry Gao Ph.D.9/2001 Presentation Outline All Rights Reserved
Topic: Component-Based Software Engineering During system analysis, we ask the following questions relating to software components: - Are commercial off-the-shelf (COTS) components available to implement the requirements? - Are internally developed reusable components available to implement the requirements? - Are the interfaces for available components compatible in the targeted system architecture? Component adaptation: Component composition: Component update: Jerry Gao Ph.D.9/2001 Engineering of Component-Based Systems All Rights Reserved
Topic: Component-Based Software Engineering What is Component-Based Software Engineering? Component-Based Software Engineering is a process that emphasizes the design and construction of computer-based systems using reusable software “components”. CBSE is changing the way large software systems are developed. CSBE shifts the emphasis from programming software to composing software systems based on reusable components. In CBSE, reusable component construction and component integration for software system are the major focus. Why Component-Based Software Engineering ? People believes that constructing software systems based on reusable high quality components is a cost-effective approach --> short development time, cost-reduction projects, high quality products. Jerry Gao Ph.D.9/2001 Introduction To Component-Based Software Engineering All Rights Reserved
Topic: Component-Based Software Engineering Who are involved in Component-Based Software Engineering? - System analyst - Software engineers - Component software developers - Application software integration engineers - Test engineers and QA - Project and product managers The major concerns of CBSE and software engineering: - Developing software from pre-produced parts - The ability to reuse those parts in other applications - Easily maintaining and customizing those parts to produce new functions and features Jerry Gao Ph.D.9/2001 Introduction To Component-Based Software Engineering All Rights Reserved
Topic: Component-Based Software Engineering - Lack of reusability due to: - Developed based the specific requirements - Use an ad hoc mechanisms to add reusability - Lack of standardized component interfaces between components - Component interfaces are designed for a specific project - No consistent mechanism for supporting component interactions - Lack of component interoperability - Lack consistent data exchange mechanism between components - Lack consistent interaction mechanism between components - Lack of customization - Lack of support of customization of component features and interfaces. - Poor component user interface support - Lack of development environment to support -No language, and develop tools, and service facilities for component development Jerry Gao Ph.D.9/2001 Engineering of Software Components - Issues of Traditional Software Modules All Rights Reserved
Topic: Component-Based Software Engineering - Component interface specification based on IDL (interface description language) - Consistent component naming - Meta data about component information, such as interfaces, relationships. - Interoperability - communication and data exchange among various components - Customization - interfaces for customizing components. - Composition - interfaces and rules for building assembled components based on given components - Evolution Support - rules and services for replacing components or upgrades - Packaging and deployment - packaging resources and deployment support Jerry Gao Ph.D.9/2001 Engineering of Software Components - Basic Elements of a Component Model All Rights Reserved
Topic: Component-Based Software Engineering Different descriptions of software components: - Component: a nontrivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of a well-defined architecture. - Run-time software component: a dynamic bindable package of one or more programs managed as a unit and accessed through documented interfaces that can be discovered in run time. - System component a unit of composition with contractually specified and explicit context dependencies only. - Business component: the software implementation of an “autonomous” business concept or business process. Jerry Gao Ph.D.9/2001 Engineering of Software Components All Rights Reserved
Topic: Component-Based Software Engineering In addition to COTS components, the CBSE process yields: - Qualified components: - assessed by software engineers to ensure that not only functionality, but performance, reliability, usability, and other quality factors conform to the requirements of the target system. - Adapted components: - adapted to modify unwanted or undesirable features - Assembled components: - integrated into an architectural style and interconnected with an appropriate infrastructure - Updated components: - replacing existing software by new versions of software components Jerry Gao Ph.D.9/2001 Engineering of Component-Based Systems All Rights Reserved
Jerry Gao Ph.D.9/2001 Domain Engineering Topic: Component-Based Software Engineering Domain Analysis Software Architecture Development Structural Model Domain Model Reusable Component Development Repository Reusable Artifacts/ Components
Jerry Gao Ph.D.9/2001 Component-Based Development Process Topic: Component-Based Software Engineering Analysis Architectural Design Component Qualification Component Adaptation Component Composition Component Engineering Testing Component Update Application Software
Topic: Component-Based Software Engineering Component qualification: --> ensure that a candidate component will - perform the required functions - fit into the architectural style for the system - exhibit the quality characteristics (such as performance, …) During component qualification, many factors should be considered: - application programming interface (API) - the required development and integration tools or package - run-time requirements, such as storage, speed, network protocol - service requirements, such as OS, programming language,.. - security features, including access control,... - embedded design assumptions - exceptional handling Jerry Gao Ph.D.9/2001 Engineering of Component-Based Systems All Rights Reserved
Topic: Component-Based Software Engineering Component adaptation: --> ensure that a candidate component will - perform the required functions - fit into the architectural style for the system - exhibit the quality characteristics (such as performance, …) During component qualification, many factors should be considered: - application programming interface (API) - the required development and integration tools or package - run-time requirements, such as storage, speed, network protocol - service requirements, such as OS, programming language,.. - security features, including access control,... - embedded design assumptions - exceptional handling Jerry Gao Ph.D.9/2001 Engineering of Component-Based Systems All Rights Reserved
Topic: Component-Based Software Engineering Component composition: --> assembles qualified, adapted, and engineered components to form an application system based on a well-defined architecture. Major task: --> establish an infrastructure to bind the components into an operational system. The infrastructure provides a model for the coordination of components and their interaction protocols, and specific common services There are four mechanisms for creating an effective infrastructure: - Data exchange model - Automation - Structured storage - Underlying object model Jerry Gao Ph.D.9/2001 Engineering of Component-Based Systems All Rights Reserved
Jerry Gao Ph.D.9/2001 Topic: Component-Based Software Engineering Engineering of Component-Based Systems - Component Composition Component iComponent j Data exchange model provides mechanisms to support: - human-to-software data transfer - component-to-component data transfer Component -to-component data transfer Human-to-software interactions e.g. drag and drop, cut and paste
Jerry Gao Ph.D.9/2001 Topic: Component-Based Software Engineering Engineering of Component-Based Systems - Component Composition Component i Automation facilities and tools support: -interactions between components - installation, configuration for deployment - instantiation, run, and testing - management and service Component execution and management environment Automation facility
Jerry Gao Ph.D.9/2001 Topic: Component-Based Software Engineering Engineering of Component-Based Systems - Component Composition Component i Structured storage model provides mechanisms to support heterogeneous data and resources of software components in a single structure: - various data resources, voice/video, text, data - various documents of components - creation, navigation, edition of component content documents data text Component repository
Jerry Gao Ph.D.9/2001 Topic: Component-Based Software Engineering Engineering of Component-Based Systems - Component Composition Underlying object model provides mechanisms to support component-to-component interactions over a network to achieve: - platform and language independent supporting component communications - regulate component interaction protocols - standardized component interoperability network Component
Topic: Component-Based Software Engineering Myth #1: It’s important to know what COTS components can do for you. Realty: It’s important to know what COTS components can do to you.. Myth #2: COTS-based systems can be designed “top-down”. Realty: COTS-based systems are built “bottom-up”. Myth #3: An “Open System” architecture solves the COTS component interoperability problem. Reality: There is no standard definition for “open system”, and “plug-in-and- play” doesn’t always work. Jerry Gao Ph.D.9/2001 COTS Myths and Others - Myths on infrastructure issues: All Rights Reserved
Topic: Component-Based Software Engineering Myth #4: You don’t need to test COTS components. Reality: You need to test COTS components more thoroughly because you don’t understand how they were built. Myth #5: COTS product selections are often based on extensive evaluation and analysis.. Realty:COTS product selections are often based on slick demos, web search, or reading trade journals. Myth #6:COTS components come with adequate documentation. Realty: Features sell COTS components, not documentation. Myth #7: You can configure a COTS-based system to meet your requirements. Realty:You can configure your process to meet the COTS component’s capabilities. Jerry Gao Ph.D.9/2001 COTS Myths and Others - Myths on infrastructure issues: All Rights Reserved
Topic: Component-Based Software Engineering Myth 8: The processes COTS products utilize reflect our industry’s best practice. Reality: The processes COTS products utilize often only reflect the market schedule and domain experience of the producer. Myth 9: You buy COTS component. Realty:You buy the right to use a version of a COTS component. Myth 10:Vendors will fix problems in the current release of the software component. Realty: Vendors may fix problems in the next version of the product. Myth 11: If you are a large enough customer you can influence COTS component supplier. Realty:The market influences COTS component supplier. Jerry Gao Ph.D.9/2001 COTS Myths and Others - Managerial Issues: All Rights Reserved
Topic: Component-Based Software Engineering A reusable software component can be described in many ways. An ideal description encompasses: (3C model) (a) concept(b) content (c ) context Three classification schemes: - enumerated classification - faceted classification - attribute-value classification Jerry Gao Ph.D.9/2001All Rights Reserved Classifying and Retrieving Components Description of what the component does Concept Content Context Description of how the concept is realized Description of its domain application
Topic: Component-Based Software Engineering Jerry Gao Ph.D.9/2001 Classifying and Retrieving Components All Rights Reserved Indexing vocabularies Uncontrolled Controlled ClassedKeywordTerms extracted from text Terms not extracted from text Enumerated Faceted Descriptors Subject headings With syntax Without syntax There are three types of component classification methods: -- library and information science methods -- artificial intelligence methods -- hypertext systems