Reusing Software: Issues and Research Directions

Software productivity has been steadily increasing over the past 30 years, but not enough to close the gap between the demands placed on the software industry and what the state of the practice can deliver; nothing short of an order of magnitude increase in productivity will extricate the software industry from its perennial crisis. Several decades of intensive research in software engineering and artificial intelligence left few alternatives but software reuse as the (only) realistic approach to bring about the gains of productivity and quality that the software industry needs. In this paper, we discuss the implications of reuse on the production, with an emphasis on the technical challenges. Software reuse involves building software that is reusable by design and building with reusable software. Software reuse includes reusing both the products of previous software projects and the processes deployed to produce them, leading to a wide spectrum of reuse approaches, from the building blocks (reusing products) approach, on one hand, to the generative or reusable processor (reusing processes), on the other. We discuss the implication of such approaches on the organization, control, and method of software development and discuss proposed models for their economic analysis. Software reuse benefits from methodologies and tools to: (1) build more readily reusable software and (2) locate, evaluate, and tailor reusable software, the last being critical for the building blocks approach. Both sets of issues are discussed in this paper, with a focus on application generators and OO development for the first and a thorough discussion of retrieval techniques for software components, component composition (or bottom-up design), and transformational systems for the second. We conclude by highlighting areas that, in our opinion, are worthy of further investigation. >

[1]  Roy Rada,et al.  Development and application of a metric on semantic nets , 1989, IEEE Trans. Syst. Man Cybern..

[2]  Barry G. Silverman,et al.  Survey of expert critiquing systems: practical and theoretical frontiers , 1992, CACM.

[3]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[4]  Johan Margono,et al.  Software Reuse Economics: Cost-benefit Analysis On A Large-scale Ada Project , 1992, International Conference on Software Engineering.

[5]  Jean-Marc Morel,et al.  The REBOOT Environment , 1993 .

[6]  Barry W. Boehm,et al.  Improving Software Productivity , 1987, Computer.

[7]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[8]  Gregor Kiczales,et al.  Issues in the Design and Documentation of Class Libraries , 1992, OOPSLA.

[9]  D. A. Gustafson,et al.  Cost estimation models for reuse and prototype SW development life-cycles , 1990, SOEN.

[10]  G. Jones Methodology/environment support for reusability , 1988 .

[11]  Edward Yourdon Decline and Fall of the American Programmer , 1992 .

[12]  Victor R. Basili,et al.  The software engineering laboratory - an operational software experience factory , 1992, International Conference on Software Engineering.

[13]  David Maier,et al.  The GemStone Data Management System , 1989, Object-Oriented Concepts, Databases, and Applications.

[14]  Brad A. Myers,et al.  User-interface tools: introduction and survey , 1989, IEEE Software.

[15]  William W. Agresti,et al.  New Paradigms for Software Development , 1986 .

[16]  Janusz W. Laski,et al.  Regression analysis of reusable program components , 1993, [1993] Proceedings Advances in Software Reuse.

[17]  Brad J. Cox,et al.  Planning the software industrial revolution , 1990, IEEE Software.

[18]  Walt Scacchi,et al.  Maintaining Configurations of Evolving Software Systems , 1987, IEEE Transactions on Software Engineering.

[19]  Michael McGill,et al.  Introduction to Modern Information Retrieval , 1983 .

[20]  Harold Ossher,et al.  Combination of Inheritance Hierarchies , 1992, OOPSLA.

[21]  Gerhard Fischer,et al.  Cognitive View of Reuse and Redesign , 1987, IEEE Software.

[22]  Karl J. Lieberherr,et al.  Incremental Class Dictionary Learning and Optimization , 1991, ECOOP.

[23]  Ted Davis,et al.  The reuse capability model: a basis for improving an organization's reuse capability , 1993, [1993] Proceedings Advances in Software Reuse.

[24]  Robert J. Hall Generalized behavior-based retrieval [from a software reuse library] , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[25]  Doug Lea,et al.  Christopher Alexander: an introduction for object-oriented designers , 1998, SOEN.

[26]  Stephen J. Mellor,et al.  Object Oriented Systems Analysis: Modeling the World in Data , 1988 .

[27]  Atul Prakash,et al.  Support for Reusability in Genesis , 1988, IEEE Trans. Software Eng..

[28]  Gregor Kiczales,et al.  Issues in the Design and Documentation of Class Libraries , 1992, OOPSLA.

[29]  Ivar Jacobson,et al.  Object-Oriented Software Engineering , 1991, TOOLS.

[30]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[31]  A. Mili,et al.  Storing and retrieving software components: a refinement based system , 1994, Proceedings of 16th International Conference on Software Engineering.

[32]  Will Tracz,et al.  LILEANNA: a parameterized programming language , 1993, [1993] Proceedings Advances in Software Reuse.

[33]  Victor R. Basili,et al.  Identifying and qualifying reusable software components , 1991, Computer.

[34]  Edward Yourdon,et al.  Object-oriented analysis (2nd ed.) , 1991 .

[35]  Peter Freeman,et al.  Classifying Software for Reusability , 1987, IEEE Software.

[36]  William B. Frakes,et al.  An information system for software reuse , 1988 .

[37]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[38]  Bjarne Stroustrup,et al.  The C++ Programming Language, First Edition , 1986 .

[39]  J. C. Huang State Constraints and Pathwise Decomposition of Programs , 1990, IEEE Trans. Software Eng..

[40]  Bertrand Meyer,et al.  Lessons from the design of the Eiffel libraries , 1990, CACM.

[41]  James Martin Fourth-generation languages. Volume I: principles , 1985 .

[42]  Rubén Prieto-Díaz,et al.  Status report: software reusability , 1993, IEEE Software.

[43]  Lawrence Peters,et al.  Advanced structured analysis and design , 1987 .

[44]  Rubén Prieto-Díaz,et al.  Module interconnection languages , 1986, J. Syst. Softw..

[45]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[46]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[47]  Pamela Zave,et al.  Salient features of an executable specification language and its environment , 1986, IEEE Transactions on Software Engineering.

[48]  L.S. Sorumgard,et al.  Experiences from application of a faceted classification scheme , 1993, [1993] Proceedings Advances in Software Reuse.

[49]  David W. Embley,et al.  Can Programmers Reuse Software? , 1987, IEEE Software.

[50]  Charles Richter,et al.  Object-oriented analysis for evolving systems , 1992, International Conference on Software Engineering.

[51]  Neil A. M. Maiden,et al.  People-oriented software reuse: the very thought , 1993, [1993] Proceedings Advances in Software Reuse.

[52]  June M. Verner,et al.  Estimating size and effort in fourth-generation development , 1988, IEEE Software.

[53]  Bill Harvey,et al.  Specification of behavioral semantics in object-oriented information modeling , 1994, OOPS Messenger.

[54]  Paul Bassett,et al.  Frame-Based Software Engineering , 1987, IEEE Software.

[55]  Victor R. Basili,et al.  The Future Engineering of Software: A Management Perspective , 1991, Computer.

[56]  Robert Balzer,et al.  A 15 Year Perspective on Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[57]  Davis B. McCarn Medline: An introduction to on-line searching , 1980, J. Am. Soc. Inf. Sci..

[58]  Santosh K. Misra,et al.  Third-generation versus fourth-generation software development , 1988, IEEE Software.

[59]  Leon S. Levy,et al.  A metaprogramming method and its economic justification , 1986, IEEE Transactions on Software Engineering.

[60]  Rebecca Wirfs-Brock,et al.  Designing object-oriented software , 1990 .

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

[62]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[63]  Luqi A Graph Model for Software Evolution , 1990, IEEE Trans. Software Eng..

[64]  Matthew Pittman,et al.  Lessons learned in managing object-oriented development , 1993, IEEE Software.

[65]  H. Mili,et al.  Getting More Out Of Your Classes : Building Families Of Programs in OOP , 1994 .

[66]  M. E. Maron,et al.  An evaluation of retrieval effectiveness for a full-text document-retrieval system , 1985, CACM.

[67]  Kyo Chul Kang,et al.  A Reuse-based software development methodology , 1988 .

[68]  Brian Henderson-Sellers,et al.  The object-oriented systems life cycle , 1990, CACM.

[69]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[70]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[71]  Peter Wegner,et al.  Dimensions of object-oriented modeling , 1992, Computer.

[72]  Michael Jackson,et al.  Conjunction as composition , 1993, TSEM.

[73]  Richard C. Waters,et al.  Automatic programming: myths and prospects , 1988, Computer.

[74]  Don S. Batory,et al.  Software components in a data structure precompiler , 1992, Proceedings of 1993 15th International Conference on Software Engineering.

[75]  Ellis Horowitz,et al.  A survey of Application Generators , 1985, IEEE Software.

[76]  John E. Gaffney,et al.  A general economics model of software reuse , 1992, International Conference on Software Engineering.

[77]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[78]  Gail E. Kaiser,et al.  An Information Retrieval Approach For Automatically Constructing Software Libraries , 1991, IEEE Trans. Software Eng..

[79]  Jeffrey S. Poulin,et al.  A reuse metrics and return on investment model , 1993, [1993] Proceedings Advances in Software Reuse.

[80]  Stephen J. Mellor,et al.  Shlaer-Mellor method , 1994 .

[81]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[82]  B. Barnes,et al.  A framework and economic foundation for software reuse , 1988 .

[83]  Gill Smith,et al.  Object-oriented analysis , 1988, WADAS '88.

[84]  Hafedh Mili,et al.  Building and maintaining analysis-level class hierarchies using Galois Lattices , 1993, OOPSLA '93.

[85]  Oscar Nierstrasz,et al.  Class management for software communities , 1990, CACM.

[86]  Ralph Johnson Documenting frameworks using patterns , 1992, OOPSLA 1992.

[87]  Shing-Chi Cheung,et al.  Enhancing compositional reachability analysis with context constraints , 1993, SIGSOFT '93.

[88]  Ronald J. Brachman,et al.  An overview of the KL-ONE Knowledge Representation System , 1985 .

[89]  Ian M. Holland,et al.  Contracts: specifying behavioral compositions in object-oriented systems , 1990, OOPSLA/ECOOP '90.

[90]  Hafedh Mili,et al.  Intelligent Component Retrieval for Software Reuse , 1994 .

[91]  Mary Shaw,et al.  Abstraction Techniques in Modern Programming Languages , 1984, IEEE Software.

[92]  Mary Shaw,et al.  Prospects for an engineering discipline of software , 1990, IEEE Software.

[93]  Charles Richter,et al.  PARIS: a system for reusing partially interpreted schemas , 1987, ICSE '87.

[94]  Kenneth S. Rubin Object behavior analysis , 1992, CACM.

[95]  Jean-Marc Morel,et al.  The REBOOT environment (software reuse) , 1993, [1993] Proceedings Advances in Software Reuse.

[96]  Hafedh Mili,et al.  An object-oriented model based on relations , 1990, J. Syst. Softw..

[97]  Ruben Prieto-Diaz,et al.  Domain analysis for reusability , 1988 .

[98]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[99]  Victor R. Basili,et al.  Viewing maintenance as reuse-oriented software development , 1990, IEEE Software.

[100]  Robert J. Hall,et al.  Generalized behavior-based retrieval , 1993, ICSE '93.

[101]  R BasiliVictor,et al.  The Future Engineering of Software , 1991 .

[102]  Robert G. Lanergan,et al.  Software Engineering with Reusable Designs and Code , 1984, IEEE Transactions on Software Engineering.

[103]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[104]  J. Craig Cleaveland,et al.  Building application generators , 1988, IEEE Software.

[105]  Bruce A. Burton,et al.  The Reusable Software Library , 1987, IEEE Software.

[106]  Hafedh Mili,et al.  Building a Graphical Interface for a Reuse-Oriented CASE Tool , 1992, TOOLS.

[107]  L. P. Deutsch,et al.  Design reuse and frameworks in the smalltalk-80 system , 1989 .

[108]  Timothy C. Winkler,et al.  Approximate Reasoning About the Semantic Effects of Program Changes , 1990, IEEE Trans. Software Eng..

[109]  M. S. Feather,et al.  Reuse in the context of a transformation-based methodology , 1989 .

[110]  Ralf Steinbrüggen,et al.  Program Transformation Systems , 1983, CSUR.

[111]  Yoshihiro Matsumoto,et al.  Experiences from software reuse in industrial process control applications , 1993, [1993] Proceedings Advances in Software Reuse.

[112]  Jeannette M. Wing,et al.  Signature matching: a key to reuse , 1993, SIGSOFT '93.

[113]  Christopher W. Pidgeon,et al.  TMM: Software Maintenance by Transformation , 1986, IEEE Software.

[114]  Philippe Kruchten,et al.  Software Prototyping using the SETL Programming Language , 1984, IEEE Software.

[115]  William R. Cook Interfaces and specifications for the Smalltalk-80 collection classes , 1992, OOPSLA 1992.

[116]  Michael A. Cusumano,et al.  The software factory: a historical interpretation , 1989, IEEE Software.

[117]  David A. Carrington,et al.  Deriving modular designs from formal specifications , 1993, SIGSOFT '93.

[118]  Ralph E. Johnson,et al.  Surveying current research in object-oriented design , 1990, CACM.

[119]  Peter Freeman,et al.  Domain engineering for software reuse , 1988 .

[120]  Neil A. M. Maiden,et al.  Exploiting reusable specifications through analogy , 1992, CACM.

[121]  Peter F. Sweeney,et al.  Three steps to views: extending the object-oriented paradigm , 1989, OOPSLA 1989.

[122]  Jack Mostow,et al.  Automated reuse of design plans , 1989, Artif. Intell. Eng..

[123]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[124]  Verónica Dahl Logical Design Of Deductive Natural Language Consultable Data Bases , 1979, Fifth International Conference on Very Large Data Bases, 1979..

[125]  A. Borning,et al.  Constraint technology for user-interface construction in ThingLab II , 1989, OOPSLA 1989.

[126]  T. Biggerstaff,et al.  Reusability Framework, Assessment, and Directions , 1987, IEEE Software.

[127]  James M. Neighbors,et al.  The Draco Approach to Constructing Software from Reusable Components , 1984, IEEE Transactions on Software Engineering.

[128]  Carma McClure,et al.  The three Rs of software automation: re-engineering, repository, reusability , 1992 .

[129]  Ronald J. Brachman,et al.  An Overview of the KL-ONE Knowledge Representation System , 1985, Cogn. Sci..

[130]  Cornelia Boldyreff,et al.  Practitioner and SoftClass: A comparative study of two software reuse research projects , 1994, J. Syst. Softw..

[131]  Chris F. Kemerer,et al.  Object-oriented and conventional analysis and design methodologies , 1992, Computer.

[132]  Joseph A. Goguen,et al.  Reusing and Interconnecting Software Components , 1986, Computer.

[133]  William B. Frakes,et al.  An Empirical Study of Representation Methods for Reusable Software Components , 1994, IEEE Trans. Software Eng..

[134]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[135]  T. Capers Jones Reusability in Programming: A Survey of the State of the Art , 1984, IEEE Transactions on Software Engineering.

[136]  Patrick A. V. Hall,et al.  Object oriented module interconnection languages , 1993, [1993] Proceedings Advances in Software Reuse.

[137]  Andy Podgurski,et al.  Retrieving reusable software by sampling behavior , 1993, TSEM.

[138]  Donald A. Norman,et al.  Representation in Memory. , 1983 .

[139]  David Garlan,et al.  Melding Software Systems from Reusable Building Blocks , 1987, IEEE Software.

[140]  Sadahiro Isoda,et al.  Experience report on software reuse project: its structure, activities, and statistical results , 1992, International Conference on Software Engineering.

[141]  Haitao Li,et al.  Data Abstraction in SoftClass, an OO CASE Tool for Software Reuse , 1993, TOOLS.

[142]  Victor R. Basili,et al.  Software process evolution at the SEL , 1994, IEEE Software.

[143]  Guttorm Sindre,et al.  On the purpose of object-oriented analysis , 1993, OOPSLA '93.

[144]  Ellis Horowitz,et al.  An Expansive View of Reusable Software , 1984, IEEE Transactions on Software Engineering.

[145]  James E. Rumbaugh Relations as semantic constructs in an object-oriented language , 1987, OOPSLA 1987.

[146]  Ramanathan V. Guha,et al.  Cyc: toward programs with common sense , 1990, CACM.

[147]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[148]  Adele Goldberg,et al.  Information models, views, and controllers , 1990 .

[149]  Thomas E. Cheatham,et al.  Software Technology in the 1990's: Using a New Paradigm , 1983, Computer.