Automatic extraction of executable program subsets by simultaneous dynamic program slicing

Automated Software Engineering - Tập 2 - Trang 33-53 - 1995
Robert J. Hall1
1AT&T Bell Laboratories, Murray Hill

Tóm tắt

Developers of software product families and maintainers of “legacy” software can benefit from the ability to automatically extract a correctly functioning subset of the code of a system that performs a desired subset of its behaviors. This article introduces a technique for automatic subsetting based on computing asimultaneous dynamic program slice of the code for a set of representative inputs. I show first why the naive approach (unioning traditional dynamic slices) fails, then give an abstract algorithm that succeeds in any slicing framework satisfying certain (mild) assumptions. Experiments using an implementation within the ISAT environment indicate that the algorithm consistently produces significantly smaller subsets than three competing approaches. I also discuss how to characterize the subset's correctness on inputs of interest outside the set used to compute the slice.

Tài liệu tham khảo

Agrawal, H., DeMillo, R. A., and Spafford, E. H. 1993. Debugging with dynamic slicing and backtracking.Software Practice and Experience 23(6):589–616. Beck, J., and Eichmann, D. 1993. Program and interface slicing for reverse engineering. InProc. 15th International Conference on Software Engineering, pp. 509–518. Forgy, C. L. 1981.The OPS5 User's Manual. Department of Computer Science, Carnegie-Mellon University. Gallagher, K. B., and Lyle, J. R. 1991. Using program slicing in software maintenance.IEEE Transactions on Software Engineering 17(8):751–761. Hall, R. J. 1992. Interactive specification acquisition via scenarios: A proposal. InProc. AAAI-92 Workshop on Automating Software Design, pp. 60–65. Hall, R. J. 1993. Validation of rule-based reactive systems by sound scenario generalization. InProc. Eighth Knowledge-based Software Engineering Conference, pp. 30–39. Hall, R. J. 1994. Systematic incremental validation of rule-based reactive systems. InProc. Ninth Knowledge-Based Software Engineering Conference, pp. 69–78. Horwitz, S., Prins, J., and Reps, T. 1989. Integrating non-interfering versions of programs.ACM Transactions on Programming Languages and Systems 11(3):345–387. Korel, B., and Laski, J. 1990. Dynamic slicing of computer programs.J. Systems Software 13:187–195. Musa, J. 1993. Operational profiles in software-reliability engineering.IEEE Software, pp. 14–32. Weiser, M. 1981. Program slicing. InProc. Fifth International Conference on Software Engineering, pp. 439–449.