Component Based Software Engineering
Why Component based Software Engineering?
- CBSE increases quality, especially evolvability and maintainability
- CBSE increases productivity
- CBSE shortens development time
- Component-based software engineering (CBSE) is an approach to software development that relies on software reuse.
- CBSE emerged from the failure of object-oriented development. Single object classes are too detailed and specific.
- Components are more abstract than objects and classes. Thus, they can be considered to be stand-alone service providers.
- CBSE requires knowledge, careful planning, and methodological support.
CBSE and design principles
- Components are independent
- Component implementations are hidden
- Communication is through well-defined interfaces
- Component platforms are shared and reduce development costs.
- Component trustworthiness – how can a component with no available source code be trusted?
- Component certification – who will certify the quality of components?
- Property prediction – how can the emergent properties of component compositions be predicted?
- Component Dependability – how do we handle components which depend on other components or systems to work properly
The CBSE process
- When reusing components, it is essential to make trade-offs between ideal requirements and the services actually provided by available components
- This involves:
–Developing outline requirements
–Searching for components then modifying requirements according to available functionality.
–Searching again to find if there are better components that meet the revised requirements.
- Define the domain to be investigated.
- Categorize the items extracted from the domain.
- Collect a representative sample of applications in the domain
- Analyze each application in the sample.
- Develop an analysis model for the objects.
- Component qualification
- Component adaptation
- Component composition
- application programming interface (API)
- development and integration tools required by the component
- run-time requirements including resource usage (e.g., memory or storage), timing or speed, and network protocol
- service requirements including operating system interfaces and support from other components
- security features including access controls and authentication protocol
- exception handling
The implication of easy integration is:
- resource management have been implemented for all components in the library
- data management exist for all components
- interfaces within the architecture and with the external environment have been implemented in a consistent manner.
- An infrastructure must be established to bind components together
- Architectural ingredients for composition include:
–Data exchange model
–Underlying object model
Managing quality in CBSE
- Approach A: left to the designers
- Approach B: model provides standardized facilities for managing qualities
- Approach C: component only addresses functionality, quality in surrounding container
- Approach D: similar to C, but container interacts with platform on quality issues
Common features of component models
- Infrastructure mechanisms, for binding, execution, etc
- Binding (design time, compile time, …)
- Mechanisms for communication between components
- Discovery of components
- Announcement of component capabilities (interfaces)
- Development support
- Language independence
- Platform independence
- Analysis support
- Support for upgrading and extension
- Support for quality properties