Software Reuse Csc532 Instructor: Dr. Box Student: Guangyu Chen
Outline • What is software reuse • Advantages of reuse • What is reusable • Types of software reuse • Stages for reuse development • Reusability measurement • The problem in software reuse • Impediments in software reuse • Conclusion
What is software reuse? Software reuse is the process of implementing or updating software systems using existing software assets. • The systematic development of reusable components • The systematic reuse of these components as building blocks to create new system
The advantages of reuse • 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 advantage
What is reusable? • Application system • Subsystem • Component • Module • Object • Function or Procedure
Types of software reuse • Horizontal reuse • Vertical reuse
Stages of reuse development • 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.
Reusability measurement • 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.
The problem in software reuse • The principles, methods, and skills required to develop reusable software cannot be learned effectively by generalities and platitudes. • To succeed in-the-large, reuse efforts must address both technical and non-technical issues. • 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.
Impediments in software reuse • Economic • Retrieval • Expensive • Legal • Managerial
Conclusion Software reuse is proved to be an efficient way to help improving software development quality, productivity during all these years’ practices. Although it is not perfect, but is still worthy more research effort.
References •  N. Nada, L.Luqi, M. Shing, “Software Reuse Technology Practices and Assessment Tool-Kit”, Naval Postgraduate School Computer Science Department. •  Sadahiro I, “An experience of software reuse activities”, software laboratories Nippon telegraph and telephone corporation. •  Rubin P, “The disappearance of software reuse”, reuse Inc. •  James J, “Characteristics of a flexible software factory: Organization design applied to software reuse”, Hewlett-Packard laboratories. •  J.M. Perry, “Perspective on software reuse”, GTE government systems Corporation. •  Will T, “Software reuse myths revisited”, Loral federal Systems Company. •  Jim W, “The solution to the reuse problem”, SUM micro system Inc. •  Ali Mili, “Toward an engineering discipline of software reuse”, Institute for software research. •  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. •  M. Ramachandran, “Software reuse guidelines”, School of Computing and Mathematical Sciences Liverpool John Moores University. •  Kimberly Jordan, “Software reuse term paper”, George Mason University. •  http://www.cs.wustl.edu/~schmidt/reuse-lessons.html •  http://www.baz.com/kjordan/swse625/htm/tp-kj.htm •  http://gta.georgia.gov/00/channel_modifieddate/0,2096,1070969_1209920,00.html •  http://www.selectbs.com/products/solutions/software_reuse.htm