This Article 
 Bibliographic References 
 Add to: 
Software Reuse by Specialization of Generic Procedures through Views
July 1997 (vol. 23 no. 7)
pp. 401-417

Abstract—A generic procedure can be specialized, by compilation through views, to operate directly on concrete data. A view is a computational mapping that describes how a concrete type implements an abstract type. Clusters of related views are needed for specialization of generic procedures that involve several types or several views of a single type. A user interface that reasons about relationships between concrete types and abstract types allows view clusters to be created easily. These techniques allow rapid specialization of generic procedures for applications.

[1] EEE Trans. Software Eng., vol. 11, no. 11, Nov. 1985.
[2] M. Arbib and E. Manes, Arrows, Structures, and Functors: The Categorical Imperative.New York: Academic Press, 1975.
[3] R. Balzer, "A 15 Year Perspective on Automatic Programming," IEEE Trans. Software Eng., vol. 11, Nov. 1985.
[4] D. Batory and S. O'Malley, "The Design and Implementation of Hierarchical Software Systems with Reusable Components," ACM TOSEM, pp. 355-398, Oct. 1992.
[5] D. Batory et al., "Scalable Software Libraries," Proc. ACM SIGSOFT, pp. 191-199, Dec. 1993.
[6] D. Batory, J. Thomas, and M. Sirkin, "Reengineering a Complex Application Using a Scalable Data Structure Compiler," Proc. ACM SIGSOFT '94, Dec. 1994.
[7] A. Berlin and D. Weise, "Compiling Scientific Code Using Partial Evaluation," Computer, vol. 23, no. 12, pp. 25-37, Dec. 1990.
[8] Software Reusability, 2 vols., T. Biggerstaff and A. Perlis, eds, ACM Press/Addison-Wesley, 1989.
[9] G. Booch, Software Components with Ada. Benjamin-Cummings, 1987.
[10] F.P. BrooksJr., "No Silver Bullet—Essence and Accidents of Software Engineering," Computer, vol. 20, no. 4, Apr. 1987, pp. 10-19.
[11] J.C. Cleaveland, An Introduction to Data Types. Addison-Wesley, 1986.
[12] C. Consel and O. Danvy, "Tutorial Notes on Partial Evaluation," ACM Symp. Principles of Programming Languages, pp. 493-501, 1993.
[13] "The Common Object Request Broker: Architecture and Specification," TC Document 91.12.1, Revision 1.1, Object Management Group, Dec. 1991.
[14] R.B.K. Dewar, The SETL Programming Language, manuscript, 1980.
[15] E.W. Dijkstra, A Discipline of Programming.Englewood Cliffs, N.J.: Prentice Hall, 1976.
[16] E. Gamma et al., Design Patterns: Elements of Object-Oriented Software, Addison-Wesley, Reading, Mass., 1994.
[17] D. Garlan, "Views for Tools in Integrated Environments," R. Conradi, T. Didriksen, and D. Wanvik, eds., Lecture Notes in Computer Science, CS 244: Adv. Prog. Environments. Springer-Verlag, 1986.
[18] J.A. Goguen, "Reusing and Interconnecting Software Components," Computer, Feb. 1986.
[19] J. Goguen, "Principles of Parameterized Programming," Software Reusability, Volume I: Concepts and Models, T. Biggerstaff and A. Perlis, eds., Addison-Wesley, New York, 1989, pp. 159-225.
[20] M.J.C. Gordon, The Denotational Description of Programming Languages. Springer-Verlag, 1987.
[21] D. Gries and J. Prins, "A New Notion of Encapsulation," ACM SIGPLAN Notices, vol. 20, no. 7, pp. 131-139, July 1985.
[22] D. Gries and I. Stojmenovic, "A Note on Graham's Convex Hull Algorithm," Information Processing Letters, vol. 25, no. 5 pp. 323-327, July 1987.
[23] D. Gries and D. Volpano, "The Transform—A New Language Construct," Structured Programming, vol. 11, no. 1, pp. 1-10, 1990.
[24] J.V. Guttag and J.J. Horning, "Introduction to LCL, a LARCH/C Interface Language," TR SRC-74, D.E.C. Software Research Center, Palo Alto, Calif., 1991.
[25] B. Hailpern and H. Ossher, "Extending Objects to Support Multiple Interfaces and Access Control," IEEE Trans. Software Eng., pp. 1,247-1,257, Nov. 1990.
[26] W. Harrison and H. Ossher, "Subject-Oriented Programming (A Critique of Pure Objects)," OOPSLA '93, pp. 411-427, 1993.
[27] M. Herlihy and B. Liskov, "A Value Transmission Method for Abstract Data Types," ACM Trans. Program Languages System, vol. 4, no. 4, pp. 527-551, Oct. 1982.
[28] R.F. Hille, Data Abstraction and Program Development Using Modula-2. Prentice Hall, 1989.
[29] I.M. Holland, "Specifying Reusable Components Using Contracts," O. Lehrmann Madsen, ed., Proc. Sixth European Conf. Object-Oriented Prog. (ECOOP '92), Lecture Notes in Computer Science 615, pp. 287-308. Springer-Verlag, July 1992.
[30] Interlisp Reference Manual, Xerox Palo Alto Research Center, 1983.
[31] G. Kaiser and D. Garlan, "Synthesizing Programming Environments from Reusable Features," [8], pp. 35-55.
[32] E. Kant, "Understanding and Automating Algorithm Design," IEEE Trans. Software Eng., vol. 11, no. 11, pp. 1361-1374, Nov. 1985.
[33] E. Kant, F. Daube, W. MacGregor, and J. Wald, "Scientific Programming by Automated Synthesis," [39], pp. 169-205.
[34] C. Krueger, “Software Reuse,” ACM Computing Surveys, June 1992, pp. 131‐183.
[35] P. Kruchten, E. Schonberg, and J. Schwartz, "Software Prototyping Using the SETL Language," IEEE Software, vol. 1, no. 4, pp. 66-75, Oct. 1984.
[36] D. Lamb, "IDL: Sharing Intermediate Representations," ACM Trans. Programming Languages and Systems vol. 9, no. 3, pp. 267-318, July 1987.
[37] C. Lins, The Modula-2 Software Component Library. Springer-Verlag, 1989.
[38] B. Liskov, R. Atkinson, T. Bloom, E. Moss, J.C. Schaffert, R. Scheifler, and A. Snyder, CLU Reference Manual. Springer-Verlag, 1981.
[39] Automating Software Design. M. Lowry and R. McCartney, eds. AAAI Press/MIT Press, 1991.
[40] S. Meyers, "Difficulties in Integrating Multiview Development Systems," IEEE Software, vol. 8, no. 1, pp. 49-57, Jan. 1991.
[41] H. Mili, F. Mili, and A. Mili, Reusing Software: Issues and Research Directions IEEE Trans. Software Eng., vol. 21, no. 6, pp. 528-562, June 1995.
[42] C. Morgan, "Data Refinement by Miracles," Information Processing Letters, vol. 26, pp. 243-246, 1988.
[43] J.M. Morris, "Laws of Data Refinement," Acta Informatica, vol. 26, pp. 287-308, 1989.
[44] D. Musser and A. Stepanov, The Ada Generic Library. Springer-Verlag, 1989.
[45] R. Neches et al., "Enabling Technology for Knowledge Sharing," AI Magazine, Fall 1991, pp. 36-56.
[46] G. Novak, "GLISP: A LISP-Based Programming System with Data Abstraction," AI Magazine, vol. 4, no. 3, pp. 37-47, Fall 1983.
[47] G. Novak, "GLISP User's Manual," Technical Report STAN-CS-82-895, Stanford Univ., 1982; TR-83-25, Univ. of Texas at Austin.
[48] G. Novak, "Data Abstraction in GLISP," Proc. SIGPLAN '83 Symp., ACM SIGPLAN Notices, vol. 18, no. 3, pp. 170-177, June 1983.
[49] G. Novak, F. Hill, M. Wan, and B. Sayrs, "Negotiated Interfaces for Software Reuse," IEEE Trans. Software Eng., vol. 18, no. 7, July 1992.
[50] G. Novak, "Software Reuse through View Type Clusters," Proc. Seventh Knowledge-Based Software Engineering Conf., IEEE CS Press, pp. 70-79, 1992.
[51] G. Novak, "Generating Programs from Connections of Physical Models," Proc. 10th Conf. Artificial Intelligence for Applications, IEEE CS Press, pp. 224-230, 1994.
[52] G. Novak, "Composing Reusable Software Components through Views," Proc. Ninth Knowledge-Based Software Eng. Conf., IEEE CS Press, pp. 39-47, 1994.
[53] G. Novak, "Conversion of Units of Measurement," IEEE Trans. Software Eng., vol. 21, no. 8, pp. 651-661, Aug. 1995.
[54] G.S. Novak, "Creation of Views for Reuse of Software with Different Data Representations," IEEE Trans. Software Eng., pp. 993-1,005, Dec. 1995.
[55] L.C. Paulson, ML for the Working Programmer. Cambridge Univ. Press, 1991.
[56] F. Preparata and R. Yeh, Introduction to Discrete Structures. Addison-Wesley, 1973.
[57] F.P. Preparata and M.I. Shamos, Computational Geometry. Springer-Verlag, 1985.
[58] J.M. Purtilo and J.M. Atlee, "Module Reuse by Interface Adaptation," Software Practice and Experience, vol. 21, no. 6, pp. 539-556, June 1991.
[59] C. Rich, "A Formal Representation for Plans in the Programmer's Apprentice," Proc. Seventh Intl Joint Conf. Artificial Intelligence (IJCAI '81), pp. 1,044-1,052, 1981.
[60] Readings in Artificial Intelligence and Software Engineering, C. Rich and R. Waters, eds. San Francisco: Morgan Kaufmann, 1986.
[61] C. Rich and R. Waters, The Programmer's Apprentice. ACM Press, 1990.
[62] M. Schaefer, A Mathematical Theory of Global Program Optimization. Prentice Hall, 1973.
[63] E. Schonberg, J.T. Schwartz, and M. Sharir, "An Automatic Technique for Selection of Data Representations in SETL Programs," ACM Trans. Prog. Language and Systems, vol. 3, no. 2 pp. 126-143, Apr. 1981.
[64] R. Sedgewick,Algorithms. Reading, MA: Addison-Wesley, 1983.
[65] D. Setliff, "On the Automatic Selection of Data Structures and Algorithms," [39], pp. 207-226.
[66] M. Shaw, W. Wulf, and R. London, "Abstraction and Verification in Alphard: Defining and Specifying Iterators and Generators," Comm. ACM, vol. 20, no. 9, pp. 553-564, Aug. 1977.
[67] C. Simonyi, "Intentional Programming—Innovation in the Legacy Age," Presented at IFIP WG 2.1 meeting, June4, 1996. See
[68] D.R. Smith, KIDS: A Semiautomatic Program Development System IEEE Trans. Software Eng., vol. 16, no. 9, pp. 1024-1043, 1990.
[69] B. Stroustrup,The C++ Programming Language. Reading MA: Addison-Wesley, 1991, 2nd ed.
[70] W. Tracz, "Parameterized Programming in Lileanna," Proc. 2nd Int'l Workshop Software Reuse, IEEE Computer Soc. Press, Los Alamitos, Calif., Mar. 1993, pp. 66-78.
[71] D. Turner, "An Overview of Miranda," SIGPLAN Notices, Dec. 1986.
[72] D. Volpano and R. Kieburtz, "The Templates Approach to Software Reuse," [8], pp. 247-255.
[73] B. Weide, W. Ogden, and S. Zweben, "Reusable Software Components," M. Yovits, ed., Advances in Computers, vol. 33, pp. 1-65. Academic Press, 1991.
[74] Å. Wikström, Functional Programming Using Standard ML. Prentice Hall, 1987.
[75] S. Wolfram, Mathematica—A System for Doing Mathematics by Computer. Addison-Wesley, 1991.
[76] D.M. Yellin and R.E. Strom, "Interfaces, Protocols, and the Semi-Automatic Construction of Software Adaptors," Proc. OOPSLA '94, ACM SIGPLAN Notices, vol. 29, no. 10, pp. 176-190, Oct. 1994.
[77] A.M. Zaremski and J.M. Wing, "Signature Matching: A Key to Reuse," ACM Software Eng. Notes, vol. 18, no. 5, pp. 182-190, Dec. 1993.

Index Terms:
Software reuse, view, generic algorithm, generic procedure, algorithm specialization, partial evaluation, direct-manipulation editor, abstract data type.
Gordon S. Novak Jr., "Software Reuse by Specialization of Generic Procedures through Views," IEEE Transactions on Software Engineering, vol. 23, no. 7, pp. 401-417, July 1997, doi:10.1109/32.605759
Usage of this product signifies your acceptance of the Terms of Use.