SESADA: An environment supporting software specialization

  • Alberto Coen-Porisini
  • Flavio De Paoli
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 550)


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 phrases

Ada program transformation software reusability software restructuring source code optimization symbolic execution 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    A.V. Aho, R. Sethi, J.D. Ullman “Compilers: principles, techniques, and tools”, Addison-Wesley(1986).Google Scholar
  2. [2]
    T.J. Biggerstaff and A.J. Perlis, “Software Reusability voll.1–2” ACM Press, 1989.Google Scholar
  3. [3]
    W.W. Bledsoe “The Sup-Inf method in Presburger Arithmetic.” Tech. Kept. Department of Mathematics — University of Texas, 1974.Google Scholar
  4. [4]
    C.L. Chang, R.C. Lee “Symbolic logic and mechanical theorem proving”, Academic Press (1973).Google Scholar
  5. [5]
    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
  6. [6]
    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
  7. [7]
    A.P. Ershov “Mixed computation: potential applications and problems for study.” Theoretical Computer Science 18 (1982), 41–67.Google Scholar
  8. [8]
    A.P. Ershov “On the partial computation principle.” Information Processing Letters 6, 2 (1977).Google Scholar
  9. [9]
    IEEE Software “Maintenance & Reverse Engineering & Design Recovery”, vol. 7, n. 1, 1990.Google Scholar
  10. [10]
    R. Kemmerer, S. Eckmann “UNISEX a UNIx-based Symbolic EXecutor for Pascal.” Software-Practice and Experience 15, 5 (May 1985).Google Scholar
  11. [11]
    J.C. King “Symbolic execution and program testing.” Communications of the ACM 19, 7 (1976).Google Scholar
  12. [12]
    J. Laski “Testing in the program development cycle.” Software Engineering Journal (March 1989).Google Scholar
  13. [13]
    H. Partsch and R. Steinbruggen, “Program Transformation Systems” Computing Surveys, vol. 15, n. 3, pp. 199–236, 1983.Google Scholar
  14. [14]
    Reference Manual for the Ada Programming Language”, USA-DoD, 1983, ANSI/MIL-STD-1815 A.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Alberto Coen-Porisini
    • 1
  • Flavio De Paoli
    • 1
  1. 1.Dipartimento di ElettronicaPolitecnico di MilanoMilanoItaly

Personalised recommendations