SESADA: An environment supporting software specialization
In this paper we present an example of customization of an AdaTM component by means of a tool (SESADA) that performs program specialization. Specializing a software component means to transform it into a component having the same functionality, but working only on a sub-domain of input data. Specialization is achieved by means of symbolic execution and static optimizations.
Specialization is motivated as a technique to improve reusability of software components. In fact, reusing software components involves complex problems; for example, we need to know where we shall look for components, and how to identify components that match our requirements. In addition, very often it is impossible to find a component that exactly matches requirements. Therefore, it is reasonable to suppose that some changes should be performed on existing components in order to reuse them.
Specialization is expected to produce software components that are smaller and more efficient than their original counterparts. As a consequence specialized components are likely to be more effective when employed in new environments.
SESADA has been implemented at Politecnico di Milano and runs under Unix operating system.
Keywords and phrasesAda program transformation software reusability software restructuring source code optimization symbolic execution
Unable to display preview. Download preview PDF.
- A.V. Aho, R. Sethi, J.D. Ullman “Compilers: principles, techniques, and tools”, Addison-Wesley(1986).Google Scholar
- T.J. Biggerstaff and A.J. Perlis, “Software Reusability voll.1–2” ACM Press, 1989.Google Scholar
- W.W. Bledsoe “The Sup-Inf method in Presburger Arithmetic.” Tech. Kept. Department of Mathematics — University of Texas, 1974.Google Scholar
- C.L. Chang, R.C. Lee “Symbolic logic and mechanical theorem proving”, Academic Press (1973).Google Scholar
- A. Coen-Porisini, F. DePaoli “Symbad: a Symbolic Executor for sequential Ada programs.” In Proceedings of the SAFECOMP '90 (Symposium on sfety of computer control system), Gatwick, U.K. 30 October–2 November 1990, Pergamon Press, pp. 105–111.Google Scholar
- A. Coen-Porisini, F. DePaoli, C. Ghezzi, D. Mandrioli “Software Specialization via Symbolic Execution” to appear on IEEE Transactions on Software Engineering, September 1991.Google Scholar
- A.P. Ershov “Mixed computation: potential applications and problems for study.” Theoretical Computer Science 18 (1982), 41–67.Google Scholar
- A.P. Ershov “On the partial computation principle.” Information Processing Letters 6, 2 (1977).Google Scholar
- IEEE Software “Maintenance & Reverse Engineering & Design Recovery”, vol. 7, n. 1, 1990.Google Scholar
- R. Kemmerer, S. Eckmann “UNISEX a UNIx-based Symbolic EXecutor for Pascal.” Software-Practice and Experience 15, 5 (May 1985).Google Scholar
- J.C. King “Symbolic execution and program testing.” Communications of the ACM 19, 7 (1976).Google Scholar
- J. Laski “Testing in the program development cycle.” Software Engineering Journal (March 1989).Google Scholar
- H. Partsch and R. Steinbruggen, “Program Transformation Systems” Computing Surveys, vol. 15, n. 3, pp. 199–236, 1983.Google Scholar
- “Reference Manual for the Ada Programming Language”, USA-DoD, 1983, ANSI/MIL-STD-1815 A.Google Scholar