Reuse in Component Based Software Engineering
Software reuse is the process through which an organization designates a set of operating procedures to specify, produce, classify, retrieve, and adapt software components with the purpose of using them in development activities (Parnas, 1994). One of the main reasons organizations have adopted component based software engineering (CBSE), a system which has highly reusable qualities, in their software development process is the reduction in development costs and increase in productivity.
Software reuse represents reusing an asset, or a component, in a different system that the one in which it was initially used (Frakes and Fox, 1995). The term software reuse might be, at first glance, somewhat misleading, but it is by no means something that can be achieved free of cost (Lim, 1994). Software reuse is a long-term investment, which can, apart from reduce cost, also increase the productivity, quality, and reliability (Haddad, Ross, and Kaensaksiri, 2010) of component based software.
Software reuse requires an array of resources needed to set up a reuse library, reuse tools, and reusable products, which will represent the foundation for future reuse projects. In some cases, software reuse may be an investment that is not worth the benefits it offers to a certain organization; there are situations when building new software with no reused assets is significantly less costly than reusing assets. In order to decide if software reuse is a feasible approach and to determine the exact cost of such an operation, each organization should undergo an accurate cost analysis.
There are numerous factors which affect the cost of software reuse. Initially, an organization has to properly describe the software or product which is being developed in order to identify its requirements. This will allow the developer to search for already existing assets which could benefit the new software. In this stage of the process, costs will relate to trials, verifications, and acquisition of assets or components.
Subsequently, the developer will be required to invest in modifying the acquired assets in order for them to perfectly suit the new software system. Some components may require significant modifications, which could result in higher costs and more effort involved than creating a component from scratch would need (Boehm, Abts, and Chulani, 2000).
New software cannot be build entirely on already-existing assets, so any software reuse process will require investments in the development of new components as well. Additionally, there will also be costs relating to the integration and testing of old and new assets in order to see how they work together. Moreover, before the new software can be ready for launch, additional money will have to be invested in infrastructure.
The exact cost of software reuse cannot be pinpointed precisely in most cases, but, usually, an accurate analysis will offer a rough estimate which will enable the developer to decide whether it is more advantageous to reuse components or to design entirely new software.
In conclusion, there are numerous factors that affect the cost of software reuse programs and each of them has to be taken into account when deciding whether reuse is the best approach an organization could use in the development of new software. Software reuse is much more complex than simply taking old assets and coming up with a new product and, consequently, its costs do not depend solely on the size of the reused components.
- Boehm, B., Abts, C., and Chulani, S. (2000). Software development cost estimation approaches - A survey. Annals of Software Engineering, 10(1-4). Springer, Netherlands, November 2000
- Frakes, W.B and Fox, C.J. (1995). Sixteen Questions about Software Reuse. CACM. 38 (6), p75-87
- Haddad, H, Ross, N., and Kaensaksiri W. (2010). Software Reuse Cost Factors. Department of Computer Science, Kennesaw State University, GA, USA
- Lim, W. C. (1994). Effects of reuse on quality, productivity, and economics. IEEE Software, 11(5), p23-30
- Parnas, D. L. (1994). Software Reuse and Component Based Software Engineering. 16th International Conference Software Engineering.
CTO at ITweetLive.com