Principles of Component Independence and Possible Outcomes for Component Replacement
There is a general agreement in the software engineering industry that a component is an independent software unit which can be composed with other independent units in order to create a software system (Sommerville, 1989). Another commonly accepted definition is that a component can be independently deployed and composed without modification according to a composition standard (Councill and Heineman, 2001).
In any system, software or hardware, in order to determine its reliability it is important to firstly establish component independence.
This is typically achieved through independent component analysis (ICA), which is a computational technique for revealing hidden factors that underlie sets of measurements or signals (Oja, 2001). The two most commonly used definitions which interpret component independence are minimization of mutual information and maximization of non-Gaussianity.
ICA is important because independence of components is a fundamental requirement for calculating system reliability (Woit, 1998) and can, to some extent, predict and prevent the possibility of system failure. Component-based system need to evolve over time in order to prevent system failure and to add new functionalities.
This evolution is typically controlled through the usage of components, which are the units of change. When one component becomes redundant, it is replaced with another, which also adheres to a standard of independence, but it is implemented in a different way.
The concept of component replacement relies on removing a component which no longer functions properly or that no longer serves the purposes for which it was initially implemented with another component that can fix the error brought on by the initial component or that can add a new function required by the system’s natural process of evolution.
However, although component replacement is practiced as a means to avoid system failure, this practice can have the very adverse effect.
As stated before, reliability of the system is strongly connected to the independence of the components that form that specific system.
Replacing an old component with a new one requires a thorough and complete analysis of the new component, both isolated and in combination with the other components forming the system.
The reliability of a system depends on how its architecture and the component interfaces can coexist in equilibrium. The introduction of a new component, with its own specific interface, might facilitate some kinds of system architecture while precluding others (Nejmeh, 1989).
In order to foresee these events, the interface of a new component has to be discovered and analyzed prior to its introduction in the system (Brown, 1996).
However, current engineering practices and techniques do not allow for a complete analysis of a component’s interface meaning that, even though a certain component may seem like a perfect match when considered alone, it can lead to system failure once implemented.
The principle of component independence, which serves as a foundation for any component-based system implies that one independent component can be replaced with another independent component, which is implemented in a different way, but that manages to ensure the coherency of the system.
However, although the independence of components is a means to ensure system reliability, such a replacement can ultimately lead to system failure, mainly because current engineering practices do not allow for an accurate analysis and evaluation on how a certain component, which has not yet been implemented, will act once integrated in the system.
- Brown, A.W. (1996). Engineering of component-based systems. Engineering of Complex Computer Systems. Second IEEE International Conference. P414-422
- Councill, W.T and Heineman, G.T.(2001) “Component-Based Software Engineering as a Unique Engineering Discipline”, Chapter 37 in G. T. Heine¬man and W. T. Councill, Editors, Component-Based Software Engineering: Putting the Pieces Together, Addison-Wesley, Boston, MA, pp. 675-964.
- Nejmeh, B (1989). Characteristics of Integrable Tools. Technical Report, Software Productivity Consortium
- Oja, E . (2001). Independent Component Analysis. Helsinki University of Technology.
- Sommerville, I (1989). Software Engineering . 3rd ed. Edinburgh : Pearson Education Limited . 405-430
- Woit, D.M. . (1998). Software component independence. High-Assurance Systems Engineering Symposium, 1998. Proceedings. Third IEEE International. 3 (1), p74-81
CTO at ITweetLive.com