Abstract
Software reuse benefits any organization and software projects as it reduces project costs, development time, effort required and increases the team productivity, and the software quality. One of the ways to promote the benefits of the reuse software within any organization is for such organization to attain the component-based software development (Amin and Oxley, 2011).
The Advantage of Software Reuse
The main desire of the software industry is to develop software with high quality with an affordable cost within a reasonable time. One way to achieve such goal is by implementing software reusability where the process of creating new software can implement the existing software artefacts, source code and other reusable software components (Amin and Oxley, 2011).
Studies show various evidences that the software reusability can contribute in software quality, productivity, and reduces time and cost and efforts in developing software. It is imperative for software engineers and developers to treat the software reuse as part of the development discipline that can be based on science and engineering. Amin and Oxley (2011) explained that software reusability can be measured through the following categories: maturity assessment, cost-benefits model, the amount of reuse, the reusability metrics, the failure modes, and the reuse library metrics.
Implementing reuse software within any organization required initial investment to start the software reuse process; however such investment will pays off in a few reuses of such software. The development of a repository, and reuse process produces a base of knowledge that improves the quality of the software and the amount of development work required for the future projects (Jalender and Premchand, 2011).
Factors Hinder Software Reuse
Banker and Kauffman (1990) explained that having a repository for code reuse for previously written objects and other source code is a good approach to promote reusability, however the search mechanism doesn’t allow programmers to find what they need quickly, and it requires more effort from them to find what they need by identifying the right keyword that can bring a good results from the search engines.
One of the serious problems that hinder the software reuse is the existence of the incentives, and the lack of the managerial monitoring that can help promote such approach within any organization (Banker and Kauffman, 1990). That said, software reuse required the organizational mindset that can promote the software reusability, and also implementing the methodical processes that can be directed at the construction and the design level to promote the software reusability (Griss, 1995).
Griss (1995) explained that implementing a systematic reuse needs a systematic approach that requires organizational changes, and business process and management changes to achieve the following:
- Fund the product development within the organization that can decrease inter-product compatibility, and development cost.
- Implementing a long-term plan to maintain, manage, and repository reusable assets.
- Promote and deliver training to the new technology, and tools within the organization.
- Change the organization culture to recognize, and encourage through incentives and training the new processes of software reuse within the organization.
Conclusion
Software reuse is the process of developing software system from existing software instead of re-inventing the wheel, and building such software from scratch (Jalender and Premchand, 2011). Building the software the can promote reusability is imperative approach to reduce cost, and development time in the software development projects. A good example of reusability is what Microsoft implemented within the .Net Framework where such framework contains generic classes libraries, APIs, and other components that can be reused during the software development. One of the reusable components we used in our organization in addition to what already exist in the .Net Framework is Microsoft Enterprise Library where it provides developers with various ready made classes, and assemblies (called blocks) that can be used for many software layers. Some of these common blocks that usually used in almost every application is the Data Access Block, Security Block, and Data Encryption Block.
Finally, reusability is the key component in developing a rapid application development, and the future of the software development will be for the reusable components that can plug-play to the architecture of the software to increase software development productivity, and enhance the software quality (Smith, n.d.).
References
Amin, A. & Oxley, A. (2011) A Review of Software Component Reusability Assessment Approaches [Online]. Available from: http://www.scialert.net/fulltext/?doi=rjit.2011.1.11&org=10 (Accessed: 09 June 2011).
Smith, L. (n.d.) Reusability of Data Access Code in ADO.Net Application [Online]. Available from: http://www.knowdotnet.com/articles/cdataaccess.html (Accessed: 09 June 2011).
Jalender, B. & Premchand, P. (2011) Breaking the Boundaries for Software Component Reuse Technology [Online]. Available from: http://www.ijcaonline.org/volume13/number6/pxc3872458.pdf (Accessed: 09 June 2011).
Banker, R. & Kauffman, R. (1990) Factors Affecting Code Reuse [Online]. Available from: http://www.google.ca/url?sa=t&source=web&cd=6&ved=0CEcQFjAF&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.89.4049%26rep%3Drep1%26type%3Dpdf&ei=gWXuTYf5LYfHgAeunfCUDw&usg=AFQjCNGmu-NXr_u6MH_2991hzvSszC4r6w (Accessed: 09 June 2011).
Griss, M. (1995) Software Reuse: Objects and Frameworks are not Enough [Online]. Available from: http://www.hpl.hp.com/techreports/95/HPL-95-03.pdf (Accessed: 09 June 2011).