|
ABSTRACT
Software reuse is the process of creating software systems from existing software rather than building software systems from scratch. This simple yet powerful vision was introduced in 1968. Software reuse has, however, failed to become a standard software engineering practice. In an attempt to understand why, researchers have renewed their interest in software reuse and in the obstacles to implementing it.
This paper surveys the different approaches to software reuse found in the research literature. It uses a taxonomy to describe and compare the different approaches and make generalizations about the field of software reuse. The taxonomy characterizes each reuse approach in terms of its reusable artifacts and the way these artifacts are abstracted, selected, specialized, and integrated.
Abstraction plays a central role in software reuse. Concise and expressive abstractions are essential if software artifacts are to be effectively reused. The effectiveness of a reuse technique can be evaluated in terms of cognitive distance—an intuitive gauge of the intellectual effort required to use the technique. Cognitive distance is reduced in two ways: (1) Higher level abstractions in a reuse technique reduce the effort required to go from the initial concept of a software system to representations in the reuse technique, and (2) automation reduces the effort required to go from abstractions in a reuse technique to an executable implementation.
This survey will help answer the following questions: What is software reuse? Why reuse software? What are the different approaches to reusing software? How effective are the different approaches? What is required to implement a software reuse technology? Why is software reuse difficult? What are the open areas for research in software reuse?
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
 |
2
|
|
 |
3
|
|
| |
4
|
BIGGERST~F, T. 1987. Hypermedia as a tool to aid large scale reuse. In Proceedzngs of the Workshop on Software Reuse (Oct.). Rocky Mountain Institute of Software Engineering, Boulder, Colo.
|
 |
5
|
|
 |
6
|
|
 |
7
|
T. J. Biggerstaff , C. Richter, Reusability framework, assessment, and directions, Software reusability: vol. 1, concepts and models, ACM Press, New York, NY, 1989
[doi> 10.1145/73103.73104]
|
 |
8
|
T. J. Biggerstaff , C. Richter, Reusability framework, assessment, and directions, Software reusability: vol. 1, concepts and models, ACM Press, New York, NY, 1989
[doi> 10.1145/73103.73104]
|
| |
9
|
|
| |
10
|
BOOEH, G. 1987. Software Components with Ada: Structures, Tools, and Subsystems. Benjamin/ Cummings Publishing Company, Inc., Menlo Park, Calif.
|
| |
11
|
|
| |
12
|
|
| |
13
|
CHEATHAM, T. E. JR. 1983. Reusability through program transformations. In Workshop on Reusability in Programming (Newport, RI, Sept.). ITT Programming, Stratford, Conn., pp. 122-128. Also in Cheatham {1984, 1989}.
|
| |
14
|
CHEATHAM, T. E. JR. 1984. Reusability through program transformatLons. IEEE Trans. Softw. Eng. SE-IO, 5 (Sept.), 589-594. Originally Cheatham { 1983}.
|
 |
15
|
|
| |
16
|
CHENG, T. T.~ LOCK, E. D., AND FRYWES, N. $. 1984. Use of very high level languages and program generation by management professionals. IEEE Trans. Softw. Eng. SE-IO, 5 (Sept.), 552-563.
|
| |
17
|
|
| |
18
|
DEREMER, F., AND KRON, H. H. 1976. Programming-in-the-large versus programming-in-thesmall. IEEE Trans. Softw. Eng, SE-2, 2 (June), 80-86.
|
| |
19
|
DEUTSCH, P. L. 1983. Reusability in the Smalltalk-S0 programming system. In Workshop on ReusabLllty ~n Prog-rammmg (Newport, R. I. Sept.). ITT Programming, Stratford, Conn,, pp. 72 76. Also in Freeman {1987b}.
|
 |
20
|
|
| |
21
|
DOBERKAT E., DUBINSK~f, E., AND SCHWARTZ, J. T. 1983. Reusability of design for complex programs: An experiment with the SETL optimizer. In Workshop on Reusability in Programruing (Newport, R. I., Sept.) ITT Programming, Stratford, Conn., pp. 106-108.
|
 |
22
|
|
 |
23
|
|
 |
24
|
E. Dubinsky , S. Freudenberger , E. Schonberg , J. T. Schwartz, Reusability of design for large software systems: and experiment with the SETL optimizer, Software reusability: vol. 1, concepts and models, ACM Press, New York, NY, 1989
[doi> 10.1145/73103.73114]
|
| |
25
|
|
| |
26
|
ESHELMAN, L. 1988. MOLE: A knowledge-acquisition tool ~or cover-and-difFerentiate systems. In Kluwer International Series in Engineering and Computer Science. Automatzc Knowledge Acquisition for Expert Systems. Kluwer Academic Publishers, Boston, Mass, pp. 37 80, Chap. 3.
|
| |
27
|
EVB SOFTWARE 1985. An Object Oriented Design Handbook for Ada Software. EVB Software Engineering, Inc., Fredrick, Maryland.
|
| |
28
|
FEATHER, M. S. 1983. Reuse in the context of a transformation based methodology. In Workshop on Reusabili(v in Programming (Newport, R.I., Sept.). ITT Programming, Stratford, Conn., pp. 50-58. Also in Freeman {1987b} and Feather { 1989}.
|
 |
29
|
|
| |
30
|
|
| |
31
|
FREEMAN, P. 1983. Reusable software engineering: Concepts and research directions. In Workshop on Reusabtllty zn Programming (Newport, R.I., Sept.). ITT Programming, Stratford, Conn., pp. 2-16. Also in Freeman {1987b}
|
| |
32
|
|
| |
33
|
|
 |
34
|
|
| |
35
|
|
 |
36
|
|
| |
37
|
HABERMANN, A. N., KRUEGER, C., PIERCE, B., STAUDT, B., AND WENN, J. 1988. Programming with views. Tech. Rep. CMU-CS-87-177, Carnegie- Mellon University, Pittsburgh, Penn.
|
| |
38
|
|
| |
39
|
HoRowiTz, E., AND MUNSON, J. B. 1983. An expansive view of reusable software. In Workshop on Reusability in Programming (Newport, R.I., Sept.). ITT Programming, Stratford, Conn., pp. 250-262. Also in Horowitz and Munson {1984}, Freeman {198761, and Horowitz and Munson{1989}.
|
| |
40
|
HOR0WITZ, E., AND MUNSON, J. B. 1984. An expansive view of reusable software. IEEE Trans. Softw. Eng. SE-iO, 5 (Sept.), 477-487. Originally Horowitz and Munson {1983}.
|
 |
41
|
|
| |
42
|
HOROWITZ, E., KEMPER, A., AND NARASIMHAN, B. 1985. A survey of application generators. IEEE Softw. 2, 1 (Jan.), 40-54.
|
| |
43
|
ICHB~AU, J. D. 1983. On the design of Ada. In Information Processing' 83. Mason, R.E.A., Ed. IFIP, Elsevier Science Pub., New York, pp. 1-10.
|
| |
44
|
IMSL 1987. IMSL Math/Library User's Manual. 1.0 Edition, Houston, Tex.
|
| |
45
|
JOHNSON, S. C. 1979. Yacc: Yet Another Compiler- Compiler in the UNIX Programmer's Manual Supplementary Documents. 7th ed. AT & T Bell Laboratories, Indianapolis, Ind.
|
| |
46
|
|
 |
47
|
|
| |
48
|
|
 |
49
|
|
| |
50
|
|
 |
51
|
|
| |
52
|
KERNIGHAN, B. W. 1983. The Unix system and software reusability. In Workshop on Reusability *n Programming (Newport, R.I., Sept.). ITT Programming, Stratford, Conn., pp. 235-239. Also in Kernighan {1984} and Freeman {1987b}.
|
| |
53
|
KERNIGHAN, B. W. 1984. The Unix system and software reusability. IEEE Trans. Softw. Eng. SE-IO, 5 (Sept.), 513-518. Originally Kernighart {1983}.
|
| |
54
|
|
| |
55
|
KAUCHTEN, P., SCHONBERG, E., AND SCHWARTZ, J. 1984. Software prototyping using the SETL programming language. IEEE Softw. 1, 4 (Oct.), 66-75.
|
| |
56
|
IiRUEGER, C. W. 1987. Expert system engineering and its relation to conventional software engineering. Ph.D. area qualifier paper. Carnegie- Mellon Univ., Pittsburgh, Penn. Available from author on request.
|
| |
57
|
KRUEGER, C. W. 1992. Application-specific object management architectures. Ph.D. dissertation, Carnegie-Mellon Univ.
|
| |
58
|
|
| |
59
|
LATOUR, L., AND JOHNSON, E. 1988. Seer: A graphical retrieval system for reusable Ada software modules. In The 3rd International IEEE Conference on Ada Applications and Environments (Manchester, N.H., May). IEEE Computer Society Press, Los Alamitos, Calif., pp. 105-113.
|
| |
60
|
LESK, M. E., AND SCHMII/T, E. 1979. Lex: A Lexical Analyzer Generator in the UNIX Programmer's Manual Supplementary Documents, 7th ed. AT 8, T Bell Laboratories, Indianapolis, Ind.
|
| |
61
|
|
| |
62
|
|
 |
63
|
|
| |
64
|
LIU, S., AND PAIGE, R. 1979. Data structure choice/formal differentiation. Tech. Rep. NSO- 15, Courant Institute of Mathematical Sciences, New York.
|
| |
65
|
|
| |
66
|
LUCKHAM, D. C., AND VaN HENKE, F. W. 1984. An overview of Anna, a specification language for Ada. In 1984 Conference on Ada Applications and Enwronments (St. Paul, Minn., Oct.). IEEE Computer Society Press, Los Alamitos, Calif., pp. 116-127.
|
| |
67
|
|
| |
68
|
MCDERMOTT, J. 1986. Making expert systems explicit. In Information Processing 86. IFIP, Elsevier Science Pub., New York, pp. 539-544.
|
| |
69
|
MCDERMOTt, J. 1988. Preliminary steps toward a taxonomy of problem-solving methods. In Kluwer International Series in Engineering and Computer Science. Automatic Knowledge Acquisition for Expert Systems. Marcus, S., Ed., Kluwer Academic Publishers, Boston, Mass., pp. 225-256, Chap. 8.
|
| |
70
|
MCILROY, M. D., 1968. Mass produced software components. In Software Engineering; Report on a conference by the NATO Science Committee (Garmisch, Germany, Oct.). Naur, P., and Randell, B., Eds. NATO Scientific Affairs Division, Brussels, Belgium, pp. 138-150.
|
| |
71
|
MENDAL, G. O., 1986. Designing for Ada reuse: A case study. In 2nd Internattonal Conference on Ada Applications and Environments (Miami Beach, Fla., Apr.). IEEE Computer Society Press, Los Alamitos, Calif., pp. 33-42.
|
| |
72
|
MEYER, B. 1987. Reusability: The case for objectoriented design. IEEE Softw. 4, 2 (Mar.), 50 63. Also in Tracz {1988} and Meyer {1989}.
|
 |
73
|
|
| |
74
|
NAUER, P., AND RANDELL, B., EDS. 1968. Software Engineering; Report on a Conference by the NATO Science Committee. NATO Scientific Affairs Division, Brussels, Belgium.
|
| |
75
|
NEIGHBORS, J. M. 1983. The Draco approach to constructing software from reusable compoents. In Workshop on Reusability in Programming (Newport, R.I., Sept.). ITT Programming, Stratford, Conn., pp. 167 178. Also in Neighbors {1984} and Freeman {1987b}.
|
| |
76
|
NEIGHBORS, J. M. 1984. The Draco approach to constructing software from reusable components. IEEE Trans. Softw. Eng. SE-IO, 5 (Sept.), 564 574. Originally Neighbors {1983}.
|
 |
77
|
|
| |
78
|
PARNAS, D. L., CLEMENTS, P. C., AND WEISS, D. M. 1983. Enhancing reusability with information hiding. In Workshop on Reusability in Programming (Newport, R.I., Sept.). ITT Programruing, Stratford, Conn., pp. 240-247. Also in Freeman {1987b} and Parnas et ah {1989}.
|
 |
79
|
|
 |
80
|
|
| |
81
|
PAYTON, T., KELLER, S., PERKINS, J., ROWLAN, S., AND MARDINLY, S. 1982. SSAGS: A syntax and semantics analysis and generation system. In 6th International Computer Software and Applications Conference ( COMPSA C82 ) (Chicago, Ill., Nov.). IEEE Computer Society Press, Los Alamitos, Cahf., pp. 424-432.
|
 |
82
|
|
| |
83
|
|
| |
84
|
PRIETO-DIAZ, R., AND FREEMAN, P. 1987. Classifying software for reusability IEEE Softw. 4, 1 (Jan.), 6-16. Also in Freeman {1987b}.
|
| |
85
|
|
 |
86
|
|
 |
87
|
|
| |
88
|
RICH, C., AND WATERS, R. 1983. Formalizing reusable software components. In Workshop on Reusabih(~ in Programming (Newport, R.I., Sept.). ITT Programming, ITT, Stratford, Conn., pp. 152-159.
|
| |
89
|
|
 |
90
|
|
| |
91
|
SHAW, M. 1984. Abstraction techniques in modern programming languages. IEEE Softw. 1, 4 (Oct.), 10 26.
|
 |
92
|
|
| |
93
|
|
| |
94
|
STANDISH, T. A. 1984. An essay on software reuse. IEEE Trans. Softw. Eng. SE-IO, 5 (Sept.), 494-497.
|
| |
95
|
STAUDT, B. J., KRUEGER, C. W., HABERMANN, A. N., AND AMBRIOLA, V. 1986. The GANDALF system reference manuals. Tech. Rep. CMU-CS- 86130, Carnegie-Mellon Univ., Pittsburgh, Penn.
|
| |
96
|
|
| |
97
|
TEXAS INSTRUMENTS 1985. The TTL Data Book, Vol. 2. Texas Instruments, Dallas, TeE.
|
| |
98
|
|
| |
99
|
|
| |
100
|
|
 |
101
|
|
| |
102
|
|
| |
103
|
WEGNER, P. 1983. Varieties of reusability. In Workshop on Reusability in Programming (Newport, R.I., Sept.). ITT Programming, Stratford, Conn., pp. 30-44. Also in Freeman {1987b}.
|
 |
104
|
|
| |
105
|
|
CITED BY 151
|
|
|
|
|
|
|
|
Giancarlo Succi , Francesco Baruchelli , Marco Ronchetti, A taxonomy for identifying a software component for uncertain and partial specifications, Proceedings of the 1996 ACM symposium on Applied Computing, p.570-579, February 17-19, 1996, Philadelphia, Pennsylvania, United States
|
|
|
|
|
|
|
|
|
|
|
|
Andrea Bottari , Gianni Degli Antoni , Andrea G. B. Tettamanzi, Tuning fuzzy software components with a distributed evolutionary engine, Proceedings of the 1998 ACM symposium on Applied Computing, p.292-296, February 27-March 01, 1998, Atlanta, Georgia, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M. Ancona , G. Dodero , A. Clematis, Reusing a compiler, Proceedings of the 1994 ACM symposium on Applied computing, p.82-87, March 06-08, 1994, Phoenix, Arizona, United States
|
|
|
|
|
|
|
|
|
|
|
|
Nenad Medvidovic , Peyman Oreizy , Richard N. Taylor, Reuse of off-the-shelf components in C2-style architectures, Proceedings of the 19th international conference on Software engineering, p.692-700, May 17-23, 1997, Boston, Massachusetts, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
David Garlan , Robert Allen , John Ockerbloom, Architectural mismatch or why it's hard to build systems out of existing parts, Proceedings of the 17th international conference on Software engineering, p.179-185, April 24-28, 1995, Seattle, Washington, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hans Fritschi , Stella Gatziu , Klaus R. Dittrich, FRAMBOISE—an approach to framework-based active database management system construction, Proceedings of the seventh international conference on Information and knowledge management, p.364-370, November 02-07, 1998, Bethesda, Maryland, United States
|
|
|
|
|
|
Gilberto Fernandes Marchioro , Jean-Marc Daveau , Ahmed Amine Jerraya, Transformational partitioning for co-design of multiprocessor systems, Proceedings of the 1997 IEEE/ACM international conference on Computer-aided design, p.508-515, November 09-13, 1997, San Jose, California, United States
|
|
|
|
|
|
Vijayan Sugumaran , Mohan Tanniru , Veda C. Storey, Identifying software components from process requirements using domain model and object libraries, Proceeding of the 20th international conference on Information Systems, p.65-81, December 12-15, 1999, Charlotte, North Carolina, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Erich Gamma , Richard Helm , Ralph Johnson , John Vlissides, Design patterns: abstraction and reuse of object-oriented design, Software pioneers: contributions to software engineering, Springer-Verlag New York, Inc., New York, NY, 2002
|
|
|
|
|
|
|
|
|
Katsuro Inoue , Reishi Yokomori , Hikaru Fujiwara , Tetsuo Yamamoto , Makoto Matsushita , Shinji Kusumoto, Component rank: relative significance rank for software component search, Proceedings of the 25th International Conference on Software Engineering, May 03-10, 2003, Portland, Oregon
|
|
|
|
|
|
|
|
|
Chung-Horng Lung , Sonia Bot , Kalai Kalaichelvan , Rick Kazman, An approach to software architecture analysis for evolution and reusability, Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research, p.15, November 10-13, 1997, Toronto, Ontario, Canada
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Odd Petter N. Slyngstad , Anita Gupta , Reidar Conradi , Parastoo Mohagheghi , Harald Rønneberg , Einar Landre, An empirical study of developers views on software reuse in statoil ASA, Proceedings of the 2006 ACM/IEEE international symposium on International symposium on empirical software engineering, September 21-22, 2006, Rio de Janeiro, Brazil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tim Putnam , Kecheng Liu, Automated exchange of software resources, components, services, and products, Proceedings of the 25th conference on IASTED International Multi-Conference: Software Engineering, p.249-254, February 13-15, 2007, Innsbruck, Austria
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Daniel Lucrédio , Kellyton dos Santos Brito , Alexandre Alvaro , Vinicius Cardoso Garcia , Eduardo Santana de Almeida , Renata Pontin de Mattos Fortes , Silvio Lemos Meira, Software reuse: The Brazilian industry scenario, Journal of Systems and Software, v.81 n.6, p.996-1013, June, 2008
|
|
|
|
|
|
|
|
|
James D. Herbsleb , Helen Klein , Gary M. Olson , Hans Brunner , Judith S. Olson , Joe Harding, Object-oriented analysis and design in software project teams, Human-Computer Interaction, v.10 n.2, p.249-292, September 1995
|
|
|
Gerhard Fischer , David Redmiles , Lloyd Williams , Gretchen I. Puhr , Atsushi Aoki , Kumiyo Nakakoji, Beyond object-oriented technology: where current approaches fall short, Human-Computer Interaction, v.10 n.1, p.79-119, March 1995
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Otávio Augusto Lazzarini Lemos , Sushil Bajracharya , Joel Ossher , Paulo Cesar Masiero , Cristina Lopes, Applying test-driven code search to the reuse of auxiliary functionality, Proceedings of the 2009 ACM symposium on Applied Computing, March 08-12, 2009, Honolulu, Hawaii
|
|
|
|
|
|
|
|
|
|
|