Introduction to Component-based Software Engineering
Component-based software engineering is the process of assembling the components. This approach enables component-based software engineering to emerge from the failure of object-oriented development to support effective reuse. It is a set of pre-build standardized Software components that is made available to fit in specific architectural styles for some of the other applications domain. The application is then formed by assembling these available components, instead of assembling discrete parts of conventional programming language.
For example, when we purchase a stereo system, we see that each component has been designed to fit in a specific architectural style. Connections are standardized, communication protocol has been re-established. Also, assembling the components in this stereo system is easy because you don’t have to build the system from scratch, instead, you have all the components ready and you just have to connect them properly to each other.
Computer-based Software Engineering Process
The process of computer-based software engineering is as follows:
- First, it outlines all the system requirements.
- Identify the components: it involves component searching, Component selection, and component validation.
- Modifying the requirements according to available functionality in the components.
- Once again the search the components to find if there are better components that may meet the revised requirements.
- Compose components to create the system.
Principles of Computer-based Software Engineering
- Computer-based software engineering is the rapid assembly and maintenance of computer-based systems where components have well-defined properties.
- Software component is a logically cohesive, loosely coupled module that denotes a single abstraction and can be reused in the system development.
- These components are independent of each other i.e. they do not interfere with each other because every component implementation is hidden from each other and communication between these components is through well-defined interfaces.
- Software component is deployable only if it is self-contained and operates as a standalone entity on some Component platform that implements the component model.
- A software component is service provider. The services offered by the components are made available through an interface and all Component interactions take place through that interface.
- Components should be documented properly so that possible users of the components can decide whether these components meet their needs or not.
Component composition is the process of assembling the components to create a system. It involves the integration of components with each other and with the component infrastructure. Usually, glue code is written to integrate the components. There are three types of composition sequential composition, hierarchical composition, and additive composition.
- Sequential composition: In this composition, composed components are executed in a sequence manner. This involves composing the interfaces provided by each component.
- Hierarchical composition: In this composition, one component calls on the services of another. This involves composing interfaces of one component with the required interface of another.
- Additive composition: In this composition, the interface of two components are put together to create a new component.
- While composing components, there may occur conflicts between functional and non-functional requirements and between the need for rapid delivery and system evolution.
- Proper decisions are required regarding what composition of components is efficient for delivering the Functional requirements? What composition of components can allow changes in the future? What will be the resulting properties of the composed System?
Advantages of components Based software engineering
- The reuse of components requires less time than the development of a new component. Therefore, systems can be built h faster using the Component-based software engineering process.
- Increase competitiveness by reducing the cost of software development and increasing the productivity of the software.
- Limited human talent by increasing software/person. It is possible by reuse of existing solutions, rather than invent them.
- Models the real software in the implementation environment.
- It provides an accurate picture of the existing system prior to making changes or development.
- It makes known software configuration issue through the Dependency relationship
- Reveal the bottlenecks in an implementation without focusing us to read all of the code.
Component is a distributable unit of software. It is a physical and replaceable part of the system that conforms to and provides the realization if s t of interfaces. It may form the abstraction for a set of realizing classifiers that realize its behavior. In addition, because a class itself is a subtype of an encapsulated classifier, a component may optionally have an internal structure and down a set of ports that formalize its interaction point.
This is a guide to Component-based Software Engineering. Here we discuss Introduction, Principles of Computer-based Software Engineering, Advantages of components Based software engineering. You may also have a look at the following articles to learn more –
- Coupling in Software Engineering
- Cohesion in Software Engineering
- Design Modeling in Software Engineering
- Software Engineering Interview Questions