This Article 
 Bibliographic References 
 Add to: 
Software Specialization Via Symbolic Execution
September 1991 (vol. 17 no. 9)
pp. 884-899

A technique and an environment-supporting specialization of generalized software components are described. The technique is based on symbolic execution. It allows one to transform a generalized software component into a more specific and more efficient component. Specialization is proposed as a technique that improves software reuse. The idea is that a library of generalized components exists and the environment supports a designer in customizing a generalized component when the need arises for reusing it under more restricted conditions. It is also justified as a reengineering technique that helps optimize a program during maintenance. Specialization is supported by an interactive environment that provides several transformation tools: a symbolic executor/simplifier, an optimizer, and a loop refolder. The conceptual basis for these transformation techniques is described, examples of their application are given, and how they cooperate in a prototype environment for the Ada programming language is outlined.

[1] A. V. Aho, R. Sethi, and J. D. Ullman,Compilers: Principles, Techniques, and Tools. Reading, MA: Addison-Wesley, 1986.
[2] H. Alblas, "One pass transformation of attributed program trees,"Acta Inform., vol. 24, no. 3, pp. 299-352, 1987.
[3] V. Ambriola, F. Giannotti, D. Pedreschi, and F. Turini, "Symbolic semantics and program reduction,"IEEE Trans. Software Eng., vol. SE- 11, pp. 784-794, 1985.
[4] L. A. Belady and M. M. Lehman,Program Evolution. New York: Academic, 1985.
[5] T. J. Biggerstaff and A. J. Perlis,Software Reusability, vols. 1-2. New York: ACM Press, 1989.
[6] W. W. Bledsoe, "The Sup-Inf method in Presburger arithmetic," Dept. Mathematics, Univ. Texas, Tech. Rep., 1974.
[7] A. Bossi, N. Cocco, and S. Dulli, "A method for specializing logic programs,"ACM Trans. Programming Languages and Systems, vol. 12, no. 2, pp. 253-302, 1990.
[8] L.A. Clarke and D. J. Richardson, "Symbolic evaluations methods-implementations and applications," inComputer Program Testing, B. Chandrasekaran and S. Radicchi, Eds. Amsterdam: North-Holland, 1981, pp. 65-102.
[9] A. Coen-Porisini and F. DePaoli, "Array representation in symbolic execution," Politecnico di Milano, Dipartimento di Elettronica, Tech. Rep. 90.031, 1990, submitted for publication.
[10] A. Coen-Porisini and F. DePaoli, "Symbad: a symbolic executor for sequential Ada programs," inProc. Int. Conf. Safety Security and Reliability Related Computers for the 1990's-SAFECOMP '90(London), 1990, pp. 105-111.
[11] A. Coen-Porisini and F. DePaoli, "SESADA: an environment supporting software specialization," to be presented at3rd European Software Eng. Conf. (ESEC '91), Milano, 1991.
[12] A. P. Ershov, "On the partial computation principle,"Inform. Process. Lett., vol. 6, no. 2, pp. 38-45, 1977.
[13] A. P. Ershov, "Mixed computation: Potential applications and problems for study,"Theoretical Computer Sci., vol. 18, pp. 41-67, 1982.
[14] S. Ghelfo and G. Levi, "A partial evaluator for metaprograms in a multiple theories logic language," Tech. Rep. ESPRIT-Project Epsilon, 1986.
[15] S. Ghelfo, G. Levi, and G. Sardú, "Un valutatore parziale per metaprogrammi in un linguaggio logico con teorie multiple," inAtti del convegno GULP 1987, May 1987, pp. 13-24.
[16] C. Ghezzi, D. Mandrioli, and A. Tecchio, "Program simplification via symbolic execution,"Lecture Notes in Computer Science, no. 206, pp. 116-128, 1985.
[17] M. Gordon,The Denotational Description of Programming Languages. New York: Springer-Verlag, 1979.
[18] "Maintenance and reverse engineering and design recovery,"IEEE Software, vol. 7, no. 1, 1990.
[19] N. D. Jones, P. Sestoft, and H. Sonderaard, "An experiment in partial evaluation: the generation of a compiler generator," inInt. Conf. Rewriting Techniques and Applications. New York: Springer-Verlag, 1985.
[20] R. Kemmerer and S. Eckmann, "UNISEX: a UNIX-based Symbolic Executor for Pascal,"Software-Practice and Experience, vol. 15, no. 5, pp. 439-457, 1985.
[21] J. C. King, "Symbolic execution and program testing,"Commun. ACM, vol. 19, no. 7, pp. 385-394, 1976.
[22] Parnas, D.L. 1972. On the Criteria to be Used in Decomposing Systems into Modules,Communications of the ACM, Vol.15, pp. 1053-1058.
[23] D.L. Parnas, "On the design and development of program families,"IEEE Trans. Software Eng., vol. SE-2, no. 1, pp. 1-9, 1976.
[24] D. L. Parnas, "Designing software for ease of extension and contraction,"IEEE Trans. Software Eng., vol. SE-5, no. 2, pp. 128-137, 1979.
[25] H. Partsch and R. Steinbrüggen, "Program transformation systems,"ACM Comput. Surveys, vol. 15, no. 3, pp. 199-236, Sept. 1983.
[26] J. E. Stoy,Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. Cambridge, MA: MIT Press, 1977.
[27] V. F. Turchin, "The concept of a supercompiler,"ACM Trans. Programming Languages and Systems, vol. 8, no. 3, pp. 292-325, 1986.
[28] Reference Manual for the Ada Programming Language, US-DOD, ANSI/MIL-STD-1815 A., 1983.
[29] M. Young and R.N. Taylor, "Rethinking the taxonomy of fault detection techniques," inProc. 11th Int. Conf. Software Eng.Los Alamitos, CA: IEEE Computer Soc., 1989, pp. 53-62.

Index Terms:
environment-supporting specialization; generalized software components; symbolic execution; software reuse; reengineering technique; maintenance; interactive environment; transformation tools; symbolic executor/simplifier; optimizer; loop refolder; conceptual basis; Ada programming language; Ada; program compilers; software maintenance; software reusability; subroutines
A. Coen-Porisini, F. De Paoli, C. Ghezzi, D. Mandrioli, "Software Specialization Via Symbolic Execution," IEEE Transactions on Software Engineering, vol. 17, no. 9, pp. 884-899, Sept. 1991, doi:10.1109/32.92907
Usage of this product signifies your acceptance of the Terms of Use.