Abstract
This paper presents a perspective of generative reuse technologies as they have evolved over the last 15 years or so and a discussion of how generative reuse addresses some key reuse problems. Over that time period, a number of different reuse strategies have been tried ranging from pure component reuse to pure generation. The record of success is mixed and the evidence is sketchy. Nevertheless, the paper will use some known metric evidence plus anecdotal evidence, personal experience, and suggestive evidence to define some of the boundaries of the success envelope. Fundamentally, the paper will make the argument that the first order term in the success equation of reuse is the amount of domain-;specific content and the second order term is the specific technology chosen in which to express that content. The overall payoff of any reuse system correlates well with the amount of content expressed in the domain specific elements. While not a silver bullet, technology is not without its contribution and the degree of payoff for any specific technology is sensitive to many factors. The paper will make the argument that the generative factors predominate over other technology factors. By looking closely at several successful generation systems that are exemplars for classes of related systems, the paper will examine how those classes have solved problems associated with the more convention reuse of concrete components expressed in conventional programming languages. From this analysis, it will distill the key elements of generative success and provide an opinion of approximately where each class of generative system fits in the overall picture. The result is a guide to the generative reuse technologies that appear to work best today.
Similar content being viewed by others
References
Balzer, R. (1989), “A Fifteen-Year Perspective on Automatic Programming,” In Software Reusability, II, T.J. Biggerstaff and A.J. Perlis, Eds., Addison-Wesley/ACM Frontier Series, Reading, MA, pp. 289– 311.
Basili, V.R., L.C. Briand and W.L. Melo (1996), “How Reuse Influences Productivity in Object-Oriented Systems,” Communications of the ACM 39, 1, 104–116, http://www.cs.umd.edu/ TRs/authors/Victor R Basili.html.
Batory, D. (1997a), Personal Communication, http://www.cs.utexas.edu/users/dsb/.
Batory, D. (1997b), “Intelligent Components and Software Generators,” Technical Report 97–06, Department of Computer Sciences, University of Texas at Austin, Austin, TX.
Batory, D., G. Chen, E. Robertson and T. Wang (1997), “Web-Advertised Generators and Design Wizards,” Technical Report, University of Texas, Austin, TX, http://www.cs.utexas.edu/ users/schwartz/pub.htm. Also to appear in Proceedings of the International Conference on Software Engineering, June, 1998, Victoria, BC, Canada.
Batory, D. and B.J. Geraci (1997), “Validating Component Compositions and Subjectivity in GenVoca Generators,” IEEE Transactions on Software Engineering 23, 2, 67–82.
Batory, D. and S. O'Malley (1992), “The Design and Implementation of Hierarchical Software Systems,” ACM Transactions on Software Engineering and Methodology 1, 4, 355–398.
Batory, D., V. Singhal and M. Sirkin (1992), “Implementing a Domain Model for Data Structures,” International Journal of Software Engineering and Knowledge Engineering 2, 3, 375–402.
Batory, D., V. Singhal, M. Sirkin and J. Thomas (1993), “Scalable Software Libraries,” In ACM SIGSOFT '93: Symposium on the Foundations of Software Engineering, ACM, New York, NY, pp. 191– 199.
Baxter, I.D. (1992), “Design Maintenance Systems,” Communications of the ACM 55, 4, 73–89.
Bayfront Technologies (1997), http://www.bayfronttechnologies.com/.
Biggerstaff, T.J. (1992), “An Assessment and Analysis of Software Reuse,” In Advances in Computers 34, M. Yovits, Ed., Academic Press, New York, NY, pp. 1–57.
Biggerstaff, T.J. (1993), “Directions in Software Development and Maintenance,” Keynote Address, In Conference on Software Maintenance, IEEE Computer Society Press, Los Alamitos, CA, pp. 2–10.
Biggerstaff, T.J. (1994), “The Library Scaling Problem and the Limits of Concrete Component Reuse,” In Third International Conference on Software Reuse, IEEE Computer Society Press, Los Alamitos, CA, pp. 102–109.
Biggerstaff, T.J. (1997), “Anticipatory Optimization in Domain Specific Translation,” Microsoft Research Technical Report MSR-TR-97–22, Microsoft Corporation, Redmond, WA. To appear in Proceedings of the International Conference on Software Reuse, 1998, IEEE Computer Society Press, Los Alamitos, CA. See also publications page at http://www.research.microsoft.com/.
Biggerstaff, T.J. (1998), “Composite Folding in Anticipatory Optimization,” Microsoft Research Technical Report, (forthcoming), Microsoft Corporation, Redmond, WA.
Biggerstaff, T.J. and A.J. Perlis, Eds. (1989), Software Reusability, Vols. 1 and 2, AddisonWesley/ACM Frontier Series, Reading, MA.
Biggerstaff, T.J. and C. Richter (1987), “Reusability Framework, Assessment, and Directions,” IEEE Software 4, 2, 41–49.
Booch, G. (1987), Software Components with Ada, Benjamin/Cummings, Menlo Park, CA.
Frakes, W. and C. Terry (1996), “Software Reuse: Metrics and Models,” ACM Computing Surveys 28, 2, 415–435.
Goguen, J. (1986), “Reusing and Interconnecting Components,” IEEE Computer 19, 2, 16–28.
Goguen, J. (1996), “Parameterized Programming and Software Architecture,” Keynote address, In Fourth International Conference on Software Reuse, IEEE Computer Society Press, Los Alamitos, CA, pp. 2–10.
Goguen, J. and A. Socorro (1995), “Module Composition and System Design for the Object Paradigm,” Journal of Object-Oriented Programming 7, 5, 47–55.
Green, C. (1969), “The Application of Theorem Proving to Question Answering Systems,” PhD Dissertation, Stanford University, Stanford, CA.
Hall, P. and R. Weedon (1993), “Object Oriented Module Interconnection Languages,” In IEEE Proceedings of Advances in Software Reuse, IEEE Computer Society Press, Los Alamitos, CA, pp. 29–38.
Johnson, R.E. and B. Foote (1988), “Designing Reusable Classes,” Journal of Object Oriented Programming 1, 2, 22–35. For related information, see http://st-www.cs.uiuc.edu/users/ johnson/.
Kant, E. (1993), “Synthesis of Mathematical Modeling Software,” IEEE Software 7, 5. See also http://www.sig.net/~scicomp/kant.html.
Katz, M.D. and D. Volper (1992), “Constraint Propagation in Software Libraries of Transformation Systems,” International Journal of Software Engineering and Knowledge Engineering 2, 3, 355–374.
Kiczales, G., J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier and J. Irwin (1997), “Aspect-Oriented Programming,” Technical Report SPL97–008 P9710042, Xerox PARC, Palo Alto, CA. See also http://www.parc.xerox.com/spl/members/gregor/.
Lewis, J.A., S.M. Henry, D.G. Kafura and R.S. Schulman (1992), “On the Relationship Between the Object-Oriented Paradigm and Software Reuse: An Empirical Investigation,” Journal of Object Oriented Programming 5, 4, 35–41. For related references, see also http://www.cs.vt. edu/vitae/Henry.html.
Lim, W.C. (forthcoming), “Managing Software Reuse,” Prentice-Hall, Englewood Cliffs, NJ.
Mendhekar, A., G. Kiczales and J. Lamping (1997), “RG: A Case-Study for Aspect-Oriented Programming,” Technical Report SPL97–007 P9710045, Xerox PARC, Palo Alto, CA.
Neighbors, J.M. (1980), “Software Construction Using Components,” PhD Dissertation, University of California, Irvine, CA. Also on http://www.bayfronttechnologies.com/thesis. htm.
Neighbors, J.M. (1984), “The Draco Approach to Constructing Software from Reusable Components,” IEEE Transactions on Software Engineering 10, 564–574.
Neighbors, J.M. (1989), “Draco: A Method for Engineering Reusable Software Systems,” In Software Reusability, T.J. Biggerstaff and A. Perlis, Eds., Addison-Wesley/ACM Press, Reading, MA.
Neighbors, J.M. (1992), “The Evolution from Software Components to Domain Analysis,” International Journal of Software Engineering and Knowledge Engineering 2, 3, 325–354.
Neighbors, J.M. (1996), “Finding Reusable Software Components in Large Systems,” In Third Working Conference on Reverse Engineering, IEEE Computer Society Press, Los Alamitos, CA, pp. 2–10.
Neighbors, J.M. (1995–1997), Personal Communication.
Neighbors, J.M., J. Liete and G. Arango (1984), “Draco 1.3 Manual,” Technical Report RT003.3, ICS Department, University of California, Irvine, CA. Draco 1.2 manual updated with 1.3 revisions on http://www.bayfronttechnologies.com/manual.htm.
Nishimoto, A. and W.C. Lim (1992), “The Continued Evolution of a Program of Reuse in a Maintenance Environment,” In WISR (Workshop on the Institutionalization of Reuse), ftp://gandalf.umcs. maine.edu/pub/WISR/wisr5/proceedings.
Novak, G.S. (1983), “GLISP: A Lisp-Based Language with Data Abstraction,” A. I. Magazine 4, 3, 37–47.
Novak, G.S. (1994), “Generating Programs from Connections of Physical Models,” In Proceedings of the Tenth Conference on AI for Applications, IEEE Computer Society Press, Los Alamitos, CA, pp. 224–230.
Novak, G.S. (1995), “Creation of Views for Reuse of Software with Different Data Representations,” IEEE Transactions on Software Engineering 21, 12, 993–1005. See also http://www.cs.utexas. edu/users/novak/.
Object-Oriented Frameworks Bibliography, http://bilbo.ide.hk-r.se:8080/~michaelm/fwpages/fwbibl.html.
Poulin, J.S. (1997), Measuring Software Reuse, Addison-Wesley/Longman, Reading, MA.
Prieto-Diaz, R. and J.M. Neighbors (1986), “Module Interconnection Languages,” The Journal of Systems and Software 6, 307–334.
Ritter, G.X. (1993), Image Algebra Handbook, University of Florida, Gainesville, FL, ftp://ftp. cis.ufl.edu:/pub/src/ia/documents.
Ritter, G.X. and J.N. Wilson (1996), Handbook of Computer Vision Algorithms in Image Algebra, CRC Press, Boca Raton, FL.
Ritter, G.X., J.N Wilson and J.L. Davidson (1990), “Image Algebra: An Overview,” Computer Vision, Graphics, and Image Processing 49, 271–331. See also http://www.cise.ufl.edu/~jnw/CCVV/.
Rix, M. (1992a), “Case Study of a Successful Firmware Reuse Program,” WISR (Workshop on the Institutionalization of Reuse), ftp://gandalf.umcs.maine.edu/pub/WISR/wisr5/ proceedings/.
Rix, M. (1992b), Presentation and Poster Session, WISR (Workshop on the Institutionalization of Reuse).
Singhal, V. (1996), Personal Communication.
Singhal, V. and D. Batory (1993), “P++: A Language for Software System Generators,” Technical Report TR-93–16, University of Texas, Austin, TX.
Sirkin, M., D. Batory and V. Singhal (1993), “Software Components in a Data Structure Precompiler,” In International Conference on Software Engineering, IEEE Computer Society Press, Los Alamitos, CA, pp. 437–446.
Smaragdakis, Y. and D. Batory (1997), “Implementing Reusable OO Components,” Unnumbered Technical Report, http://www.cs.utexas.edu/users/schwartz/pub.htm.
Smith, D.R. (1990), “KIDS: A Semiautomatic Program Development System,” IEEE Transactions on Software Engineering 16, 9, 1024–1043.
Smith, D.R. (1991), “KIDS – A Knowledge-Based Software Development System,” In Automating Software Design, M. Lowry and R. McCartney, Eds., AAAI/MIT Press, pp. 483–514.
Smith, D.R. (1996), “Toward a Classification Approach to Design,” In The Proceedings of the Fifth International Conference on Algebraic Methodology and Software Technology, AMAST '96, Lecture Notes in Computer Science, Springer, Berlin, pp. 62–84.
Smith, D.R. and C.C. Green (1996), “Toward Practical Applications of Software Synthesis,” In ACM(SIGSOFT) Proceedings of the First Workshop on Formal Methods in Software Practice, ACM, New York, NY, pp. 31–39.
Smith, D.R., E.A. Parra and S.J. Westfold (1996), “Synthesis of High-Performance Transportation Schedulers,” In Advanced Planning Technology, A. Tate, Ed., AAAI Press, Menlo Park, CA, pp. 226–234. See also http://www.kestrel.edu/HTML/publications.html.
Srinivas, Y.V. and R. Jullig (1995), “SPECWARE: TM Formal Support for Composing Software,” In Proceedings of the Conference of Mathematics of Program Construction, Lecture Notes in Computer Science 947, Springer, Berlin, pp. 399–422.
Srinivas, Y.V. and J.L. McDonald (1996), “The Architecture of SPECWARETM, a Formal Software Development System,” Technical Report KES.U.96.7, Kestrel Institute, Palo Alto, CA.
Tracz, W. (1993), “Parameterized Programming in LILLEANNA,” In Proceedings of the 2nd International Workshop on Software Reuse, IEEE Computer Society Press, Los Alamitos, CA, pp. 66–78.
VanHilst, M. and D. Notkin (1996a), “Using C++ Templates to Implement Role-Based Designs,” In JSSST International Symposium on Object Technologies and Systems (ISOTAS '96), Springer, New York, NY, pp. 22–37. Also available as Technical Report 95-07-02, University of Washington, Seattle, WA.
VanHilst, M. and D. Notkin (1996b), “Using Role Components to Implement Collaboration-Based Designs,” Technical Report 96-04-01, University of Washington, Seattle, WA. See also http:// www.cs.washington.edu/homes/vanhilst/ or http://www.cs.washington.edu/ homes/notkin/.
Waldinger, R. (1969), “Constructing Programs Automatically Using Theorem Proving,” PhD Dissertation, Carnegie-Mellon University, Pittsburgh, PA.
Woods, W.A. (1970), “Transition Network Grammars for Natural Language Analysis,”Communications of the ACM 13, 10.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Biggerstaff, T.J. A perspective of generative reuse. Annals of Software Engineering 5, 169–226 (1998). https://doi.org/10.1023/A:1018924407841
Issue Date:
DOI: https://doi.org/10.1023/A:1018924407841