An Objective Reuse Metric: Model and Methology

Software reuse is an effective way to gain productivity in constructing software systems. In order to continuously monitor the progress of reuse in the context of a project, we need an objective and repeatable way to measure the extent of reuse. This paper proposes a model and methodology to automatically compute a general objective reuse measure from the source code of applications and reusable software repositories. Unlike consumer-oriented reuse measures in the literature, this measure is useful from the viewpoints of both reuse consumers and reuse producers. The former can use it to estimate the extent of reuse in their applications while the latter can use it to determine the impact of certain reusable components. In contrast to other objective code-based measures, our measure is both complete and precise in that it is calculated based on and only on those code entities that are essential to the functioning of an application. While the model and methodology are largely language-independent, we have implemented tools to compute the reuse measure from C code. We report experiences from using the measure on a few large software systems and discuss its use in discovering and encouraging reuse.

[1]  William B. Frakes,et al.  Reuse level metrics , 1994, Proceedings of 1994 3rd International Conference on Software Reuse.

[2]  Yih-Farn Chen,et al.  REVERSE ENGINEERING: , 1995, Documentary Across Platforms.

[3]  John Favaro,et al.  What price reusability?: a case study , 1991, SETA1.

[4]  J. E. Gaffney,et al.  Software reuse—key to enhanced productivity: some quantitative models , 1989 .

[5]  David G. Korn,et al.  SFIO: Safe/Fast String/File IO , 1991, USENIX Summer.

[6]  Wayne C. Lim,et al.  Effects of reuse on quality, productivity, and economics , 1994, IEEE Software.

[7]  William M. Evanco,et al.  Projecting Software Defects From Analyzing Ada Designs , 1992, IEEE Trans. Software Eng..

[8]  Yih-Farn Robin Chen,et al.  Incl: A Tool to Analyze Include Files , 1992, USENIX Summer.

[9]  Glenn S. Fowler A case for make , 1990, Softw. Pract. Exp..

[10]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

[11]  Linda M. Wills,et al.  Reverse Engineering , 1996, Springer US.

[12]  David S. Rosenblum Towards A Method Of Programming With Assertions , 1992, International Conference on Software Engineering.

[13]  Balachander Krishnamurthy,et al.  Generalized event-action handling , 1995 .

[14]  Alfred V. Aho,et al.  Data Structures and Algorithms , 1983 .

[15]  Jeffrey S. Poulin,et al.  The Business Case for Software Reuse , 1993, IBM Syst. J..

[16]  Terry Bollinger,et al.  Making reuse cost-effective , 1991, IEEE Software.

[17]  David G. Korn,et al.  Principles for writing reusable libraries , 1995, SSR '95.

[18]  Balachander Krishnamurthy,et al.  Practical reusable UNIX software , 1995 .

[19]  David S. Rosenblum,et al.  TESTTUBE: a system for selective regression testing , 1994, Proceedings of 16th International Conference on Software Engineering.