Software Reuse Course: csc532 Instructor: Dr. Box Student: Guangyu Chen ABSTRACT Software reuse is one of the hottest research subjects in the software development area. The reason is obviously since software reuse can benefit in improving software quality and productivity and also can decrease software production and maintenance costs as long as the time needed to market. There are many issues about practicing software reuse. Software reuse can have different reuse level, such as application system, subsystem, module, object etc. Different approach can be applied in the reuse practice, such as horizontal reuse and vertical reuse. How to deal with the pay off and trade off is another important problem in the reuse issue. In all the work have been done with software reuse, many strategies have been employed. Among these strategies, most popular methods are routine libraries, class libraries, class frameworks, components, software architecture, application templates, domain analysis, and patterns. Although software reuse attracts people by all its predominance, its limitation also should not be ignored. Until now, several common problems have not been solved yet in the software reuse experiment. The reason causes the problems can be impediments from anywhere: organization, economic problem, administrative problem, political problem or psychological problem. INTRODUCTION Software reuse is the fundamental idea of reusing versatile information made during software development in order to reduce the effort devoted to the same job in the development of new software. [2] In today’s world, many software, especially the big projects involve the work of software reuse. Many researchers also put their effort in the research of this strategy, because of its outstanding foreground in the industry market. THE REASON TO PRACTICE SOFTWARE REUSE AND ITS ADVANTAGES Researchers put lot of efforts in the study of software reuse is because it can benefit the software engineering a lot. The main advantages of software reuse include: increase software productivity, shorten software development time, improve software system interoperability, develop software with fewer people, move personnel more easily from project to project, reduce software development and maintenance costs, produce more standardized software, produce better quality software and provide a powerful competitive advantages [12]. SOFTWARE REUSE ASSETS Software reuse is not limited to the code; it can also include the design, analysis, design process, domain knowledge, etc. In fact, the availability of reusable assets in development phases provides valuable support to design and implementation with software architectures by improving productivity, quality, and time-to-market.[1] Industry has demonstrated that reuse of software assets will provide a basis for dramatic improvements in quality and reliability, speed of delivery, and in long-term decreases in costs for software development and maintenance. [1] TYPES OF SOFTWARE REUSE 1. Horizontal reuse Horizontal reuse refers to software components used across a wide variety of applications [11]. This type of reuse includes library of components, string manipulation routines, or graphical user interface functions. 2. Vertical reuse Vertical reuse, in another way, deals with the reuse of system functional areas, or domains that can be shared between systems with similar functionality. STAGES FOR REUSE DEVELOPMENT The reuse process can be divided into a number of stages. Identify domain Identify and classify reusable abstractions Identify design/programming language constructs that support reuse Study and formulate language reuse guidelines Study and formulate domain reuse guidelines Reuse assessment—assess components based on the guidelines Reuse improvement—modify and improve these components. [10] REUSEABILITY MEASUREMENT It is very necessary to evaluate the reusability of a software asset. A practical way is using the so called quantitative metrics. Such metrics can provide the principle to determine the proper time the consider a asset’s reusability. Software assets have two qualities that enhance reusability and thus, if quantified, can serve as a basis for defining a measure of reusability: Generality enhances reusability by making the asset more widely applicable Generosity enhances reusability by reducing the cost of adapting the asset to its host system. [8] THE PROBLEM IN SOFTWARE REUSE Many problems can affect the reuse or even make it fail. The primary reasons can be following; The principles, methods, and skills required to develop reusable software cannot be learned effectively by generalities and platitudes. Instead, developers must learn concrete technical skills and gain hands-on experience by developing and applying reusable software components and frameworks in their daily professional practice.[9] To succeed in-the-large, reuse efforts must address both technical and nontechnical issues. Focusing on non-technical issues alone neglects important skills-building education that must occur to succeed with non-trivial reuse efforts. Likewise, focusing solely on technological issues neglects the deep impact that social and economic forces and processes have on the success or failure of technology adoption.[9] It's easier and more cost effective to develop and evolve networked applications by basing them on reusable distributed object computing middleware, which is software that resides between applications and the underlying operating systems, network protocol stacks, and hardware. Middleware's role is to functionally bridge the gap between application programs and the lower-level hardware and software infrastructure in order to (1) coordinate how parts of applications are connected and how they interoperate and (2) enable and simplify the integration of components developed by multiple technology suppliers. [9] INPEDIMENTS IN SOFTWARE REUSE The impediments which affect the work of reuse can be divided into several categories. Organizational impediments. As the number of developers and projects employing reusable assets increases, it becomes hard to structure an organization to provide effective feedback loops between these constituencies. [9] Economic impediments. Many organizations don’t give their reuse group a full financial support. Administrative impediments. That happens when fail to catalog, archive, retrieve reusable assets among the business units within the large organizations. Political impediments. Groups that develop reusable middleware platforms are often viewed with suspicion by application developers, who resent the fact that they may no longer be empowered to make key architectural decisions. [9] Psychological impediments. The example is, application developers may also perceive ``top down'' reuse efforts as an indication that management lacks confidence in their technical abilities. [9] CONCLUSION Software reuse is proved to be an efficient way to help improving software development quality, productivity during all these years’ practices. Like all other method, software reuse also has its own limitation, and is affected by many impediments. But it is still an research area worth more devotion and is also an powerful approach during the process of software development. Reference [1] N. Nada, L.Luqi, M. Shing, “Software Reuse Technology Practices and Assessment Tool-Kit”, Naval Postgraduate School Computer Science Department. [2] Sadahiro I, “An experience of software reuse activities”, software laboratories Nippon telegraph and telephone corporation. [3] Rubin P, “The disappearance of software reuse”, reuse Inc. [4] James J, “Characteristics of a flexible software factory: Organization design applied to software reuse”, Hewlett-Packard laboratories. [5] J.M. Perry, “Perspective on software reuse”, GTE government systems Corporation. [6] Will T, “Software reuse myths revisited”, Loral federal Systems Company. [7] Jim W, “The solution to the reuse problem”, SUM micro system Inc. [8] Ali Mili, “Toward an engineering discipline of software reuse”, Institute for software research. [9] Douglas C, “Why software reuse has failed and how to make it work for you”, Department of electrical and computer engineering of university of California. [10] M. Ramachandran, “Software reuse guidelines”, School of Computing and Mathematical Sciences Liverpool John Moores University. [11] Kimberly Jordan, “Software reuse term paper”, George Mason University. [12] http://www.cs.wustl.edu/~schmidt/reuse-lessons.html [13] http://www.baz.com/kjordan/swse625/htm/tp-kj.htm [14] http://gta.georgia.gov/00/channel_modifieddate/0,2096,1070969_1209920,00.html [15] http://www.selectbs.com/products/solutions/software_reuse.htm