[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Software Specialization Via Symbolic Execution

Published: 01 September 1991 Publication History

Abstract

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.

References

[1]
{1} A.V. Aho, R. Sethi, and J.D. Ullman, Compilers: Principles, Techniques, and Tools. Reading, MA: Addison-Wesley, 1986.]]
[2]
{2} H. Alblas, "One pass transformation of attributed program trees," Acta Inform., vol. 24, no. 3, pp. 299-352, 1987.]]
[3]
{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]
{4} L. A. Belady and M. M. Lehman, Program Evolution. New York: Academic, 1985.]]
[5]
{5} T. J. Biggerstaff and A. J. Perlis, Software Reusability, vols. 1-2. New York: ACM Press, 1989.]]
[6]
{6} W. W. Bledsoe, "The Sup-Inf method in Presburger arithmetic," Dept. Mathematics, Univ. Texas, Tech. Rep., 1974.]]
[7]
{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]
{8} L.A. Clarke and D. J. Richardson, "Symbolic evaluations methods-implementations and applications," in Computer Program Testing, B. Chandrasekaran and S. Radicchi, Eds. Amsterdam: North-Holland, 1981, pp. 65-102.]]
[9]
{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]
{10} A. Coen-Porisini and F. DePaoli, "Symbad: a symbolic executor for sequential Ada programs," in Proc. Int. Conf. Safety Security and Reliability Related Computers for the 1990's-SAFECOMP '90 (London), 1990, pp. 105-111.]]
[11]
{11} A. Coen-Porisini and F. DePaoli, "SESADA: an environment supporting software specialization," to be presented at 3rd European Software Eng. Conf. (ESEC '91), Milano, 1991.]]
[12]
{12} A. P. Ershov, "On the partial computation principle," Inform. Process. Lett., vol. 6, no. 2, pp. 38-45, 1977.]]
[13]
{13} A. P. Ershov, "Mixed computation: Potential applications and problems for study," Theoretical Computer Sci., vol. 18, pp. 41-67, 1982.]]
[14]
{14} S. Ghelfo and G. Levi, "A partial evaluator for metaprograms in a multiple theories logic language," Tech. Rep. ESPRIT-Project Epsilon, 1986.]]
[15]
{15} S. Ghelfo, G. Levi, and G. Sardú, "Un valutatore parziale per metaprogrammi in un linguaggio logico con teorie multiple," in Atti del convegno GULP 1987, May 1987, pp. 13-24.]]
[16]
{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]
{17} R. Gordon, The Denotational Description of Programming Languages. New York: Springer-Verlag, 1975.]]
[18]
{18} "Maintenance and reverse engineering and design recovery," IEEE Software, vol. 7, no. 1, 1990.]]
[19]
{19} N. D. Jones, P. Sestoft, and H. Sonderaard, "An experiment in partial evaluation: the generation of a compiler generator," in Int. Conf. Rewriting Techniques and Applications. New York: Springer-Verlag, 1985.]]
[20]
{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]
{21} J. C. King, "Symbolic execution and program testing," Commun. ACM, vol. 19, no. 7, pp. 385-394, 1976.]]
[22]
{22} D. L. Parnas, "On the criteria to be used in decomposing systems into modules," Commun. ACM, vol. 15, no. 12, pp. 1053-1058, 1972.]]
[23]
{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]
{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]
{25} H. Partsch and R. Steinbruggen, "Program transformation systems," Computing Surveys, vol. 15, no. 3, pp. 199-236, 1983.]]
[26]
{26} J. E. Stoy, Denorational Semantics: the Scott-Strachey approach to Programming Language Theory. Cambridge, MA: MIT Press, 1977.]]
[27]
{27} V. F. Turchin, "The concept of a supercompiler," ACM Trans. Programming Languages and Systems, vol. 8, no. 3, pp. 292-325, 1986.]]
[28]
{28} Reference Manual for the Ada Programming Language, US-DOD, ANSI/MIL-STD-1815 A., 1983.]]
[29]
{29} M. Young and R.N. Taylor, "Rethinking the taxonomy of fault detection techniques," in Proc. 11th Int. Conf. Software Eng. Los Alamitos, CA: IEEE Computer Soc., 1989, pp. 53-62.]]

Cited By

View all
  • (2022)Symbolic Analysis for Data Plane Programs SpecializationACM Transactions on Architecture and Code Optimization10.1145/355772720:1(1-21)Online publication date: 17-Nov-2022
  • (2016)Memory Partitioning in the LimitInternational Journal of Parallel Programming10.1007/s10766-015-0380-744:2(337-380)Online publication date: 1-Apr-2016
  • (2012)Improving symbolic execution for statechart formalismsProceedings of the Workshop on Model-Driven Engineering, Verification and Validation10.1145/2427376.2427385(47-52)Online publication date: 1-Oct-2012
  • Show More Cited By

Recommendations

Reviews

Michael Marcotty

The authors make a contribution to software reusability through the use of program transformation tools. The idea is, given the specification and implementation for a software component or an entire program, to help restructure the implementation through a technique called specialization. When a software module with a particular functionality is needed, a library of reusable modules of generalized functionality is searched for a suitable module. In general, candidate modules will require some transformation. For example, their functionalities must be restricted in order to improve efficiency, that is, they must be specialized for a particular application. Suppose that the generalized module P is a function mapping its domain D P to its range R P and that the desired module M will have the same functionality as P but with a domain D M ?D P , then the aim of the specialization will be to transform P into a P ? that is more efficient than P . For example, if P contains the statement “if C then S 1 else S 2 ,<__?__Pub Caret>” and D M ?D P implies that C is always true, the statement may be transformed into S 1 . In this paper, the authors discuss specialization through symbolic execution. The paper describes the process of symbolic execution and simplification used for the specialization of a program; this process is defined formally using denotational semantics. Other specialization steps such as loop refolding and the application of conventional source-level optimization techniques are described. A complete specialization environment for Ada programs and a complete example are also presented. Finally, the authors assess the work and discuss further developments and applications, particularly in the area of object-oriented languages.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering  Volume 17, Issue 9
September 1991
130 pages
ISSN:0098-5589
Issue’s Table of Contents

Publisher

IEEE Press

Publication History

Published: 01 September 1991

Author Tags

  1. Ada
  2. Ada programming language
  3. conceptual basis
  4. environment-supporting specialization
  5. generalized software components
  6. interactive environment
  7. loop refolder
  8. maintenance
  9. optimizer
  10. program compilers
  11. reengineering technique
  12. software maintenance
  13. software reusability
  14. software reuse
  15. subroutines
  16. symbolic execution
  17. symbolic executor/simplifier
  18. transformation tools

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 18 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Symbolic Analysis for Data Plane Programs SpecializationACM Transactions on Architecture and Code Optimization10.1145/355772720:1(1-21)Online publication date: 17-Nov-2022
  • (2016)Memory Partitioning in the LimitInternational Journal of Parallel Programming10.1007/s10766-015-0380-744:2(337-380)Online publication date: 1-Apr-2016
  • (2012)Improving symbolic execution for statechart formalismsProceedings of the Workshop on Model-Driven Engineering, Verification and Validation10.1145/2427376.2427385(47-52)Online publication date: 1-Oct-2012
  • (2005)ConSUSJournal of Systems and Software10.1016/j.jss.2004.03.03477:3(241-262)Online publication date: 1-Sep-2005
  • (2003)Advanced symbolic analysis for compilersundefinedOnline publication date: 1-Jan-2003
  • (2002)Constraint-based partial evaluation for imperative languagesJournal of Computer Science and Technology10.1007/BF0294982617:1(64-72)Online publication date: 1-Jan-2002
  • (2001)Using symbolic execution for verifying safety-critical systemsACM SIGSOFT Software Engineering Notes10.1145/503271.50323026:5(142-151)Online publication date: 1-Sep-2001
  • (2001)Using symbolic execution for verifying safety-critical systemsProceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering10.1145/503209.503230(142-151)Online publication date: 10-Sep-2001
  • (2000)Automated Testing of ClassesACM SIGSOFT Software Engineering Notes10.1145/347636.34887025:5(39-48)Online publication date: 1-Aug-2000
  • (2000)Automated Testing of ClassesProceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis10.1145/347324.348870(39-48)Online publication date: 1-Aug-2000
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media