Software Reusability

Introduction

Software reusability has become an essential aspect of the modern society. The increase in the software re-use can be explained by the urgent need to solve several problems involved in software development. As a result, software re-use has been viewed as a solution towards software development crisis that is rampant in the modern technology. Software reuse is the process of implementing or updating software systems using existing software components. A good software reuse process facilitates the increase of productivity, quality, and reliability, and the decrease of costs and implementation time (Ezran, Morisio & Tully, 2002). An initial investment is required to start a software reuse process, but that investment pays for itself in a few reuses. In short, the development of a reuse process and repository produces a base of knowledge that improves in quality after every reuse, minimizing the amount of development work required for future projects, and ultimately reducing the risk of new projects that are based on repository knowledge.

Literature review

The concept of software reuse is becoming important with each passing day. As a result, there have been extensive studies that are aimed to have a better understanding of how the process of software re-use is carried out, the advantages and disadvantages of the process to the IT industry. Software reuse has been defined as the process whereby one uses existing software or parts of the software to build new software and re-use the ideas with the ability to combine the different parts and form a large unit of software (Messer, 1989). The whole process is based on the domain engineering. This engineering process enables the building process of developing new software from pre-tested components thus saving time and costs of developing new software.

Although the concept of software reusability has been on the rise in the recent years, the reusability concept is as old as the humans. The development of this concept was based on offering a solution to challenges that the human face in the developing information technology. The software crisis had hit its peak, and thus, software engineers have been proactive to solve the crisis by use of tested software component. The availability of reusable software has increased significantly over time (Baldo, Moore & Rine, 1997). Development of new software is made possible by use of reusable codes that are always available at low cost either in the form of applications or form of program libraries. Previous studies have identified the most common form of reusability artifact is a source code in some programming language among many others.

As aforementioned, software reuse has major unforeseen positive effects on software development process. Thinking of effective software reuse as a problem-solving reuse provides a good general heuristic for judging a work product’s reuse potential. It has been argued that software reuse has been a major problem-solving concept. There have also been major studies that have classified the concept of software reuse along six orthogonal axes namely; transformational vs. compositional reuse, black box vs. white box reuse, abstraction reuse, and development of reusable assets vs. application reuse, procedure reuse and vertical vs. horizontal reuse (Highland, 1995).

There have also been various conceptual frameworks put across to explain the concept of software reuse. For instance,  Biggerstaff and Richter proposed a framework which classifies the available technologies for reusability into two major groups, composition technologies, and generation technologies (Baldo, Moore & Rine, 1997). Another framework developed by Freeman aimed to answer questions on what is being reused? How should it be reuse? And what is needed to enable successful reuse? The Freeman work defines five levels of reusable information code fragments, logical structure, functional architecture, environmental knowledge and external knowledge. There have also been other frameworks that try to explain the software reuse through data, code and design.

Chen and Lee have also made a significant contribution to the literature of software reuse.  Their work confirms a significant co-relation between module complexity and reusability. This stand has also been confirmed by the work of Selby.  Their work concluded that the lower the value of the complexity metrics, the higher the programmer productivity. Further studies have also suggested that basic reusability attributes depend on the qualities of correctness, testability, readability, ease of modification and performance (Messer, 1989). The research has however put emphasis on measuring these metrics before engaging in the process of software reuse.

 

References

Baldo, J., Moore, J., & Rine, D. (1997). Software reuse standards. Standardview, 5(2), 50-57. http://dx.doi.org/10.1145/260558.260559

Ezran, M., Morisio, M., & Tully, C. (2002). Practical Software Reuse. London: Springer London.

Frakes, W. (2000). Software reuse. Berlin: Springer.

Highland, H. (1995). Security and software reuse. Computers & Security, 14(7), 608. http://dx.doi.org/10.1016/0167-4048(96)81676-2

Messer, P. (1989). Software reuse: emerging technology. Information And Software Technology, 31(5), 284. http://dx.doi.org/10.1016/0950-5849(89)90012-8

Spinellis, D. (2007). Cracking Software Reuse. IEEE Softw., 24(1), 12-13. http://dx.doi.org/10.1109/ms.2007.9

 
Do you need an Original High Quality Academic Custom Essay?