The advent of component-based software engineering provides managers with opportunities to streamline their software development process. These opportunities exist in all phases of the software development process, from analysis to maintenance, and from project planning to project tracking. This paper will identify specific areas of software engineering that may benefit from component-based software engineering. Component-based software engineering by virtue of its inherent nature complies with the software engineering principles of modularity, abstraction, encapsulation and information hiding. The first step is to create an interface specification, which is a critical part of the analysis or design phase of component-based software engineering.
Several approaches are suitable for the creation of interface specification.
The analysis and design phase must produce the interface specification and a scenario description of how the interfaces interact to accomplish specific tasks. The answer to this question is not simple. It depends on where you want to invest your resources. An area of the system, which is stable and not expected to change in the future, is a good candidate for conversion into a component without any investment in changing its architecture. However, an area of the system, which is unstable and dynamic may require architectural changes before conversion to components.