Software salvaging based on conditions

This paper presents algorithms for isolating reusable functions in large monolithic programs. The functions to be isolated are specified in terms of either pre-conditions or binding conditions, and these are mapped onto predicates on program's variables. Code components whose execution is triggered and/or bound by these predicates are then isolated. Each component is a candidate to implement a reusable function. The algorithms exploit a representation of the subject program in the form of a program dependence graph. This work forms part of RE/sup 2/, a research project that addresses the wider issue of software reuse. RE/sup 2/ project aims to promote the reuse of software through the exploration of reverse engineering and re-engineering techniques to identify and extract reusable software components from existing systems.<<ETX>>

[1]  Rajiv Gupta,et al.  An approach to regression testing using slicing , 1992, Proceedings Conference on Software Maintenance 1992.

[2]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[3]  Victor R. Basili,et al.  Identifying and qualifying reusable software components , 1991, Computer.

[4]  Aniello Cimitile Towards reuse reengineering of old software , 1992, Proceedings Fourth International Conference on Software Engineering and Knowledge Engineering.

[5]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[6]  Robin W. Whitty,et al.  Axiomatic Approach to Software Metrication Through Program Decomposition , 1986, Comput. J..

[7]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[8]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[9]  Aniello Cimitile,et al.  RE2: Reverse-engineering and reuse re-engineering , 1994, J. Softw. Maintenance Res. Pract..

[10]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[11]  Mary Lou Soffa,et al.  Selecting and using data for integration testing , 1991, IEEE Software.

[12]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[13]  Rubén Prieto-Díaz,et al.  Making software reuse work: an implementation model , 1991, SOEN.

[14]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[15]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[16]  Aniello Cimitile,et al.  Reuse reengineering and validation via concept assignment , 1993, 1993 Conference on Software Maintenance.

[17]  G. Canfora,et al.  Slicing large programs to isolate reusable functions , 1994, Proceedings of Twentieth Euromicro Conference. System Architecture and Integration.

[18]  David L. Kuck,et al.  The Structure of Computers and Computations , 1978 .

[19]  Giuseppe Visaggio,et al.  Function recovery based on program slicing , 1993, 1993 Conference on Software Maintenance.

[20]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .