A component is a part of software program code, which executes an independent task in the system. It can be a small module or sub-system itself.
Example
The login procedures used on the web can be considered as components, printing system in software can be seen as a component of the software.
Components have high cohesion of functionality and lower rate of coupling, i.e. they work independently and can perform tasks without depending on other modules.
In OOP, the objects are designed are very specific to their concern and have fewer chances to be used in some other software.
In modular programming, the modules are coded to perform specific tasks which can be used across number of other software programs.
There is a whole new vertical, which is based on re-use of software component, and is known as Component Based Software Engineering (CBSE).
Re-use can be done at various levels
● Application level – Where an entire application is used as sub-system of new software.
● Component level – Where sub-system of an application is used.
● Modules level – Where functional modules are re-used.
● Software components provide interfaces, which can be used to establish communication among different components.
Reuse Process
Two kinds of method can be adopted: either by keeping requirements same and adjusting components or by keeping components same and modifying requirements.
● Requirement Specification – The functional and non-functional requirements are specified, which a software product must comply to, with the help of existing system, user input or both.
● Design – This is also a standard SDLC process step, where requirements are defined in terms of software parlance. Basic architecture of system as a whole and its sub-systems are created.
● Specify Components – By studying the software design, the designers segregate the entire system into smaller components or sub-systems. One complete software design turns into a collection of a huge set of components working together.
● Search Suitable Components – The software component repository is referred by designers to search for the matching component, on the basis of functionality and intended software requirements..
● Incorporate Components – All matched components are packed together to shape them as complete software.