Component-based Software Engineering (CBSE) Notes

Component-based Software Engineering (CBSE)

  • Overview

  • CBSE focuses on the reuse of software components to develop applications.

Came about due to limitations in object-oriented development that did not effectively support reuse.

  • Key Characteristics of CBSE

    • Independent components that communicate through clearly defined interfaces.

    • Standards must be established for seamless integration of components.

    • Middleware is used to facilitate interoperability between components.

CBSE Essentials

  • Core Concepts

    • Components are self-contained entities that provide services without regard to execution environment or programming language.

    • Important principles:

    • Components should be independent and not interfere with each other.

    • Component implementation details are hidden; users interact through interfaces.

    • A component can be replaced by another as long as the interface is maintained.

    • Component infrastructures provide standard services.

Component Standards

  • Importance of Standards

    • Necessary for components to communicate and interoperate.

    • Major competing standards include:

    • Sun’s Enterprise Java Beans (EJB)

    • Microsoft’s Component Object Model (COM) and .NET

    • CORBA Component Model (CCM)

    • Fragmentation in standards can hinder component reusability.

Components and Their Definitions

  • Definition of Components

    • According to Councill and Heinmann: A component is a software element conforming to a component model, independently deployable and composed according to standards.

    • Szyperski states a component has specified interfaces and context dependencies and can be independently deployed.

  • Characteristics of Components

    • Composable: External interactions must occur through public interfaces.

    • Deployable: Must be self-contained and operate as stand-alone entities.

    • Documented: Should provide detailed documentation of interfaces for better understandability.

    • Independent: Can be used without reliance on specific other components.

    • Standardized: Must conform to specific component models and associated metadata.

Component Interfaces

  • Types of Interfaces

    • Provides Interface: Defines services offered by the component (essentially the component’s API).

    • Requires Interface: Specifies services needed for the component to operate (does not define how those services should be provided).

CBSE Processes

  • Development Processes

    • For Reuse: Developing components intended for reuse, often generalizing existing implementations.

    • With Reuse: Creating new applications using already available components/services.

  • Supporting Processes

    • Component Acquisition: Finding and integrating existing components.

    • Component Management: Cataloging and ensuring availability of reusable components.

    • Component Certification: Verifying the quality and compliance of components with specifications.

Component Validation & Composition

  • Validation

    • Involves developing test cases for components, ensuring specifications are detailed enough to test thoroughly.

    • Must check for unwanted functionality or malicious code.

  • Composition

    • Involves assembling components into systems:

    • Sequential Composition: Components execute in a specific sequence.

    • Hierarchical Composition: One component calls services from another.

    • Additive Composition: Combined interfaces create a new component.

    • May require writing glue code to handle integration issues and mismatch in interfaces.

  • Interface Incompatibility

    • Parameter Incompatibility: Same operation names but different types.

    • Operation Incompatibility: Different operation names between components.

    • Operation Incompleteness: Provided interfaces being subsets of required interfaces.

Trade-offs in Component Composition

  • Conflicts may arise between functional and non-functional requirements, rapid delivery needs, and ensuring system evolution. Key decisions involve:

    • Evaluating effective component compositions for delivering functionalities.

    • Ensuring selected compositions accommodate future enhancements.

    • Understanding emergent properties of the final system configuration.

Key Points

  • CBSE is an effective means of producing reusable components that simplify the development process.

  • Establishing component standards ensures consistent usage and integration across different environments.

  • Successful component management requires strict validation and certification processes to mitigate risks and enhance functionality and security.