Using Program Slicing in Software Maintenance

Program slicing is applied to the software maintenance problem by extending the notion of a program slice (that originally required both a variable and line number) to a decomposition slice, one that captures all computation on a given variable, i.e., is independent of line numbers. Using the lattice of single variable decomposition slices ordered by set inclusion, it is shown how a slice-based decomposition for programs can be formed. One can then delineate the effects of a proposed change by isolating those effects in a single component of the decomposition. This gives maintainers a straightforward technique for determining those statements and variables which may be modified in a component and those which may not. Using the decomposition, a set of principles to prohibit changes which will interfere with unmodified components is provided. These semantically consistent changes can then be merged back into the original program in linear time. >

[1]  Keith Gallagher,et al.  A program decomposition scheme with applications to software modification and testing , 1989, [1989] Proceedings of the Twenty-Second Annual Hawaii International Conference on System Sciences. Volume II: Software Track.

[2]  Corrado Böhm,et al.  Flow diagrams, turing machines and languages with only two formation rules , 1966, CACM.

[3]  Mark Weiser,et al.  Experiments on slicing-based debugging aids , 1986 .

[4]  Thomas W. Reps,et al.  Semantics-Based Program Integration , 1988, ESOP.

[5]  Wuu Yang,et al.  The Semantics of Program Slicing , 1988 .

[6]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

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

[8]  P. A. Hausler Denotational program slicing , 1989, [1989] Proceedings of the Twenty-Second Annual Hawaii International Conference on System Sciences. Volume II: Software Track.

[9]  Keith Gallagher,et al.  Using program decomposition to guide modifications , 1988, Proceedings. Conference on Software Maintenance, 1988..

[10]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[11]  Anneliese Amschler Andrews,et al.  Data flow analysis and its application to software maintenance , 1988, Proceedings. Conference on Software Maintenance, 1988..

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

[13]  Bogdan Korel,et al.  STAD-a system for testing and debugging: user perspective , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[14]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

[15]  James Robert Lyle Evaluating variations on program slicing for debugging (data-flow, ada) , 1984 .

[16]  Robert B. Grady Measuring and Managing Software Maintenance , 1987, IEEE Software.

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

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

[19]  Jong-Deok Choi,et al.  Techniques for debugging parallel programs with flowback analysis , 1991, TOPL.

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

[21]  Victor R. Basili,et al.  Experimentation in software engineering , 1986, IEEE Transactions on Software Engineering.

[22]  Thomas W. Reps,et al.  Integrating non-intering versions of programs , 1988, POPL '88.

[23]  Linda M. Ott,et al.  The Relationship Between Slices And Module Cohesion , 1989, 11th International Conference on Software Engineering.

[24]  Mark David Weiser,et al.  Program slices: formal, psychological, and practical investigations of an automatic program abstraction method , 1979 .

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

[26]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[27]  Norman F. Schneidewind,et al.  The State of Software Maintenance , 1987, IEEE Transactions on Software Engineering.

[28]  Janusz W. Laski Data flow testing in STAD , 1990, J. Syst. Softw..

[29]  Bernard Carré,et al.  Information-flow and data-flow analysis of while-programs , 1985, TOPL.