This Article 
 Bibliographic References 
 Add to: 
Using Program Slicing in Software Maintenance
August 1991 (vol. 17 no. 8)
pp. 751-761

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] J. M. Barth, "A practical interprocedural dataflow analysis algorithm,"Comm. Assoc. Computing Machinery, vol. 21, no. 9, pp. 724-726, Sept. 1978.
[2] V. R. Basili, R. W. Selby, and D. H. Hutchens, "Experimentation in software engineering,"IEEE Trans. Software Eng., vol. SE-12, pp. 733-743, July 1986.
[3] J. Bergeretti and B. Carre, "Information-flow and data-flow analysis of while-programs,"ACM Trans. Program. Lang. Syst., vol. 7, no. 1, pp. 37-61, Jan. 1985.
[4] V. Berzins, "On merging software extensions,"Acta Inform., vol. 23, no. 6, pp. 607-619, Nov. 1986.
[5] C. Bohm and G. Jacopini, "Flow diagrams and languages with only two formation rules,"CACM, vol. 9, no. 5, pp. 366-371, May 1966.
[6] J.-D. Choi, B. Miller, and P. Netzer, "Techniques for debugging parallel programs with flowback analvsis," Univ. Wisconsin-Madison, Tech. Rep. 786, Aug. 1988.
[7] J. Ferrante, K. Ottenstein, and J. Warren, "The program dependence graph and its use in optimization,"ACM Trans. Program. Lang. Syst., vol. 9, no. 3, pp. 319-349, July 1987.
[8] K. B. Gallagher, "Using program slicing in software maintenance," Ph.D. thesis, Univ. Maryland, Baltimore, Dec. 1989.
[9] K. B. Gallagher, "Surgeon's assistant limits side effects,"IEEE Software, vol. 7, p. 64, May 1990.
[10] K. B. Gallagher and J. R. Lyle, "Using program decomposition to guide modifications," inProc. Conf. Software Maintenance--1988, Oct. 1988, pp. 265-268.
[11] K. B. Gallagher and J. R. Lyle, "A program decomposition scheme with applications to software modification and testing," inProc. 22nd Int. Conf. System Sciences(Hawaii), Jan. 1989, vol. II, pp. 479-485.
[12] R. Grady, "Measuring and managing software maintenance,"IEEE Software, vol. 4, Sept. 1987.
[13] P. Hausler, "Denotational program slicing," inProc. 22nd Hawaii Int. Conf: System Sciences, Jan. 1989, vol. II (Software Track), pp. 486-494.
[14] S. Horwitz, J. Prins, and T. Reps, "Integrating non-interfering versions of programs," inProc. Fifteenth ACM Symp. Principles of Programming Languages, ACM, New York, 1988, pp. 133-145.
[15] S. Horowitz, J. Prins, and T. Reps, "Integrating non-interfering versions of programs,"Trans. Program. Lang. Syst., vol. 11, no. 3, pp. 345-387, July 1989.
[16] S. Horwitz, T. Reps, and D. Binkley, "Interprocedural slicing using dependence graphs,"ACM Trans. Programming Languages and Systems, vol. 12, no. 1, pp. 35-46, Jan. 1990.
[17] J. Keables, K. Robertson, and A. von Mayrhauser, "Data flow analysis and its application to software maintenance," inProc. Conf. Software Maintenance--1988, Oct. 1988, pp. 335-347.
[18] K. Kennedy, "A survey of data flow analysis techniques," inProgram Flow Analysis: Theory and Applications, S.S. Muchnick and N.D. Jones, Eds. Englewood Cliffs, NJ: Prentice-Hall, 1981.
[19] B. W. Kernighan and D. M. Ritchie,The C Programming Language. Englewood Cliffs, NJ: Prentice-Hall, 1978.
[20] B. Korel and J. Laski,Dynamic program slicing, " Inform. Processing Lett., vol. 29, no. 3, pp. 155-163, Oct. 1988.
[21] B. Korel and J. Laski, "STAD--a system for testing and debugging: User perspective," inProc. 2nd Workshop on Software Testing, Verification and Analysis (Banff, Alberta, Can.), July 1988, pp. 13-20.
[22] J. Laski, "Data flow testing in STAD"Systems and Software, to be published.
[23] J. R. Lyle, "Evaluating variations of program slicing for debugging," Ph.D. thesis, Univ. of Maryland, College Park, Dec. 1984.
[24] J. R. Lyle and M.D. Weiser, "Experiments in slicing-based debugging aids," inEmpirical Studies of Programmers, E. Soloway and S. Iyengar, Eds. Norwood, NJ: Ablex, 1986.
[25] J.R. Lyle and M.D. Weiser, "Automatic program bug location by program slicing," inProc. 2nd Int. Conf. Computers and Applications(Peking, China), June 1987, pp. 877-882.
[26] L. Ott and J. Thuss, "The relationship between slices and module cohesion," inProc. 11th Int. Conf. Software Eng., May 1989, pp. 198-204.
[27] K. Ottenstein and L. Ottenstein, "The program dependence graph in software development environments,"ACM SIGPLAN Notices, vol. 19, no. 5, pp. 177-184, May 1984; see also,Proc. ACM SIGSOFT/SIGPLAN Software Eng. Symp. Practical Software Development Environments.
[28] T. Reps and S. Horwitz, "Semantics-based program integration," inProc. 2nd European Symp. Programming (ESOP '88)(Nancy, France), Mar. 1988, pp. 133-145.
[29] T. Reps and W. Yang, "The semantics of program slicing," Univ. Wisconsin-Madison, Tech. Rep. 777, June 1988.
[30] N. Schneidewind, "The state of software maintenance,"IEEE Trans. Software Eng., vol. SE-13, pp. 303-310, Mar. 1987.
[31] Walter F. Tichy, "RCS--A system for version control,"Software--practice and Experience, vol. 15, no. 7, pp. 637-654, July 1985.
[32] G. Weinberg, "Kill that code!,"Infosystems, pp. 48-49, Aug. 1983.
[33] M. Weiser, "Program slices: Formal, psychological, and practical investigations of an automatic program abstraction method," Doctoral dissertation, Univ. Michigan, Ann Arbor, 1979.
[34] M. Weiser, "Program slicing," inProc. 5th Int. Conf. Software Eng., May 1981, pp. 439-449.
[35] M. Weiser, "Programmers use slices when debugging,"Commun. ACM, vol. 25, no. 7, pp. 446-452, July 1982.
[36] M. Weiser, "Program slicing,"IEEE Trans. Software Eng., vol. SE-10, pp. 352-357, July 1984.

Index Terms:
program slicing; software maintenance problem; program slice; line number; single variable decomposition slices; set inclusion; slice-based decomposition; unmodified components; semantically consistent changes; linear time; program testing; software maintenance
K.B. Gallagher, J.R. Lyle, "Using Program Slicing in Software Maintenance," IEEE Transactions on Software Engineering, vol. 17, no. 8, pp. 751-761, Aug. 1991, doi:10.1109/32.83912
Usage of this product signifies your acceptance of the Terms of Use.