International Conference on and Information Technology (ICCSIT'2011) Pattaya Dec. 2011

Review of Software Reusability

Neha Budhija and Satinder Pal Ahuja

Abstract— Reusability is the likelihood a segment of source The organizations that has experience in developing code that can be used again to add new functionalities with software, but not yet used the software reuse concept, slight or no modification. Reusable modules and classes there exists extra cost to develop the reusable reduce implementation time, increase the likelihood that prior components from scratch to build and strengthen their testing and use has eliminated bugs and localizes code reusable software reservoir [2].. The cost of developing modifications when a change in implementation is required. the software from scratch can be saved by identifying Subroutines or functions are the simplest form of reuse. A and extracting the reusable components from already chunk of code is regularly organized using modules or developed and existing software systems or legacy namespaces into layers. Proponents claim that objects and systems [3]. software components offer a more advanced form of reusability, although it has been tough to objectively measure and define II. RELATED WORK levels or scores of reusability. Reusability implies some explicit management of build, packaging, distribution, Software reuse has been practiced since programming installation, configuration, deployment, maintenance and began. Reuse as a distinct field of study in software upgrade issues. If these issues are not considered, , however, is often traced to Doug Mcilroy’s may appear to be reusable from design point of view, but paper which proposed basing the software industry on will not be reused in practice. This paper presents an reusable components. Other significant early reuse research empirical study of the software reuse activity by expert developments include Parnas’ idea of program families and designers in the context of object-oriented design. Our study Neighbors’ introduction of the concepts of domain and focuses on the three following aspects of reuse : (1) the domain analysis. Active areas of reuse research in the past interaction between some design processes, e.g. constructing a twenty years include reuse libraries, domain engineering problem representation, searching for and evaluating solutions, methods and tools, reuse design, design patterns, domain and reuse processes, i.e. retrieving and using previous solutions, specific soft-ware architecture, component, generators, (2) the mental processes involved in reuse, e.g. example- measurement and experimentation, and business and based retrieval or bottom-up versus top-down expanding of the finance. Important ideas emerging from this period include solution, and (3) the mental representations constructed throughout the reuse activity, e.g. dynamic versus static systematic reuse, reuse design principles such as the three representation. C’s model, module interconnection languages, commonality/variability analysis, variation point, and Keyword- Reusability, Software, Functions, Metrics. various approaches to domain specific generators. While these areas comprise the core of reuse research, software reuse research and practice has deep and complex I. INTRODUCTION interactions with other areas of computer science and HE demand for new software applications is currently software engineering. For example, though its developers did Tincreasing at the exponential rate, as is the cost to not consider themselves as doing reuse research per se, reuse develop them. The numbers of qualified and was clearly a key design goal of the Unix programming experienced professionals required for this extra work are environment. The C language was designed to be small and not increasing commensurably [1].There are two augmented with standard libraries of reusable functions . approaches for reuse of code: develop the reusable code III. TYPES OF REUSE from scratch or identify and extract the reusable code from already developed code. A. Opportunistic reuse

While getting ready to begin a project, the team realizes that there are existing components that they can reuse. Planned reuse - A team strategically designs components

Neha Budhija, is doing M.Tech(CSE) from IGCE, Abhipur, Mohali so that they'll be reusable in future projects. (Punjab), India Email: [email protected] Opportunistic reuse can be categorized further: Satinder Pal Ahuja is Associate Professor & HOD (CSE&IT), Indo Global College of Engineering, India. Email: [email protected]

113 International Conference on Computer Science and Information Technology (ICCSIT'2011) Pattaya Dec. 2011

B. Internal reuse Reusing software can speed up system production because A team reuses its own components. This may be a both development and validation time should be reduced. business decision[4], since the team may want to control F. Reliability and Safety a component critical to the project. Better system reliability is one of the goals of software C. External reuse reuse. It is argued that reusable components, because of more A team may choose to license a third-party component. careful design and testing and broader and more extensive Licensing a third-party component typically costs the usage, can be more reliable that one use equivalents. If so, team 1 to 20 percent of what it would cost to develop then it is further argued that using these more reliable internally. The team must also consider the time it takes components in a system architecture can increase the to find, learn and integrate the component. reliability of the system as a whole. Higher system reliability via generative reuse is based on the idea that replacing error IV. WHAT ARTIFACTS MAY BE REUSED? prone human processes in by automation can produce a more reliable system [7]. In principle, many different artifacts produced during the software development life cycle can be reused. Some typical VI. REUSE APPROACHES examples of reusable artifacts include: source code, analysis and design specification, plans (project management), data A. Design patterns (testing), documentation, expertise and experience (life cycle model reuse, quality assurance), and any information used to Generic abstractions that occur across applications are create software and software documentation. However, while represented as design patterns that show abstract and all of these items are useful, the most often reused artifacts concrete objects and interactions. are software components. B. Component-based development V. SOFTWARE REUSE BENEFITS Systems are developed by integrating components (collections of objects) that conform to component-model A. Increased dependability standards. Reused software, that has been tried and tested in C. Application frameworks working systems, should be more dependable than new Collections of abstract and concrete classes that can software. The initial use of the software reveals any be adapted and extended to create application systems. design and implementation faults. These are then fixed, thus reducing the number of failures when the software is D. Legacy system wrapping reused. Legacy systems that can be “wrapped‟ by defining a set of interfaces and providing access to these legacy systems B. Reduced process risk through these interfaces[6]. If software exists, there is less uncertainty in the costs of reusing that software than in the costs of development. E. Service-oriented systems This is an important factor for project management as it Systems are developed by linking shared services that reduces the margin of error in project cost estimation. may be externally provided. This is particularly true when relatively large software components such as sub-systems are reused. F. Application product lines An application type is generalised around a common C. Effective use of specialists architecture so that it can be adapted in different ways Instead of application specialists doing the same for different customers. work on different projects[5],[6], these specialists can develop reusable software that encapsulate their knowledge. G. COTS integration Systems are developed by integrating existing application D. Standards compliance systems. Some standards, such as user interface standards, can be implemented as a set of standard reusable H. Configurable vertical applications components. For example, if menus in a user interfaces A generic system is designed so that it can be are implemented using reusable components, all configured to the needs of specific system customers. applications present the same menu formats to users. The use of standard user interfaces improves I. Program libraries dependability as users are less likely to make mistakes Class and function libraries implementing commonly- when presented with a familiar interface. used abstractions are available for reuse. E. Accelerated development Bringing a system to market as early as possible is often more important than overall development costs.

114 International Conference on Computer Science and Information Technology (ICCSIT'2011) Pattaya Dec. 2011

VII. COPYRIGHT FORMS AND REPRINT ORDERS VIII. CONCLUSION Software reuse is a longtime practiced method. A. Increased maintenance costs Programmers have copied and pasted snippets of code If the source code of a reused software system or since early days of programming. Even though it might component is not available then maintenance costs may speed up the development process, this “code snippet be increased as the reused elements of the system may reuse” is very limited does not work for larger projects. The become increasingly incompatible with system changes. full benefit of software reuse can only be achieved by systematic reuse that is conducted formally as an B. Lack of tool support integral part of the software development cycle. In this CASE toolsets may not support development with reuse. paper, we have reviewed the history of software reliability It may be difficult or impossible to integrate these tools engineering, the current trends and existing problems, and with a component library system. The software process specific difficulties. Possible future directions and promising assumed by these tools may not take reuse into account. research problems in software have C. Not-invented-here syndrome also been addressed.

Some software engineers sometimes prefer to re- write components as they believe that they can improve REFERENCES on the reusable component. This is partly to do with trust [1] E. Smith, A. Al-Yasiri, and M. Merabti, A Multi-Tiered and partly to do with the fact that writing original Classification Scheme For Component Retrieval, Proc. Euromicro software is seen as more challenging than reusing other Conference, 24(Vol. 2) (1998) 882 – 889. people‟s software. [2] W. Lim, Effects of Reuse on Quality, Productivity, and Economics, IEEE Software, 11(5, Oct. 1994), 23-30. D. Creating and maintaining a component [3] G. Caldiera and V. R. Basili, Identifying and Qualifying library Populating a reusable component library and Reusable Software Components, IEEE Computer, (1991) 61-70. ensuring the software developers can use this library can [4] Software Engineering, vol SE- 12 no. 1 1994. Gert B (1988) be expensive. Our current techniques for classifying, Morality, Oxford University Press. cataloguing and retrieving software components are [5] Green R M (1994) The Ethical Manager, Macmillan Publishing. immature. [6] Gotterbam and Rogerson 1998, “The Ethics of Software Project Management”, in Ethics and Information Technology, ed. G&an E. Finding, understanding and adapting Collste, New Academic Publisher. Reusable components Software components have to be [7] William B. Frakes and Kyo Kang IEEE Transaction on software Engineering, Software Reuse Research: Status and Future, VOL. 31, discovered in a library, understood and, sometimes, NO. 7, JULY 2005. adapted to work in a new environment. Engineers must be [8] Curritt, P.A., Dyer,M, Mills, H.D, ACertifying the Reliability of reasonably confident of finding a component in the library Software,@ IEEE Transactions. before they will make routinely include a component [9] Ebru Ardil, Erdem Ucar, Parvinder S. Sandhu, “Software search as part of their normal development process. Maintenance Severity Prediction with Soft Computing Approach”, International Conference on Computer, Electrical, and Systems Science, and Engineering, Feb. 25-27, 2009, Penang, Malaysia; vol. 50, ISSN: 2070-3724, pp. 139-144.

115