Abstract
A theory of slicing non-deterministic programs and systems is developed. Non-deterministic programs and systems are represented as non-deterministic program graphs (NDPGs) that allow arbitrary non-deterministic branching to be expressed. Structural and semantic relationships that must exist between an NDPG and (1) its non-termination insensitive (weak) slices and (2) its non-termination sensitive (strong) slices are defined. Weak and strong commitment closure are introduced. These are the NDPG equivalents of being closed under non-termination sensitive and non-termination insensitive control dependence; properties defined on subsets of vertices of the equivalent deterministic structure: the control flow graph.
It is proved that if a subset of the vertices of an NDPG is both data dependence closed and (weak/strong) commitment closed, then the resulting induced graph will, indeed, satisfy our structural and semantic requirements. O(n3) algorithms for computing minimal data and weak/strong commitment closed sets are given. The resulting induced graphs are thus guaranteed to be weak and strong slices, respectively.
It is demonstrated, with examples, that programs written in Dijkstra's non-deterministic guarded command language (DNGCL) can be converted to NDPGs to which our slicing algorithms can then be applied. It is proved that the resulting slices (NDPGs) can always be converted back to valid DNGCL programs, highlighting the applicability of our approach to slicing at the source code level.
- Hiralal Agrawal and Joseph R. Horgan. 1990. Dynamic program slicing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation. 246--256. Google Scholar
Digital Library
- J. R. Allen, Ken Kennedy, Carrie Porterfield, and Joe Warren. 1983. Conversion of control de- pendence to data dependence. In Proceedings of the 10th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL’83). ACM, New York, NY, 177--189. Google Scholar
Digital Library
- Torben Amtoft. 2008. Slicing for modern program structures: A theory for eliminating irrelevant loops. Inform. Process. Lett. 106, 2 (2008), 45--51. Google Scholar
Digital Library
- Kelly Androutsopoulos, David Clark, Mark Harman, R. Hierons, Zheng Li, and Laurence Tratt. 2012. Amorphous slicing of extended finite state machines. IEEE Trans. Softw. Eng. 39, 7 (2012), 892--909. Google Scholar
Digital Library
- Kelly Androutsopoulos, David Clark, Mark Harman, Zheng Li, and Laurie Tratt. 2009a. Control dependence for extended finite state machines. In Fundamental Approaches to Software Engineering (FASE’09). LNCS, vol. 5503. Springer, York, UK, 216--230. Google Scholar
Digital Library
- Kelly Androutsopoulos, David Clark, Mark Harman, Zheng Li, and Laurie Tratt. 2009b. Control dependence for extended finite state machines. In Fundamental Approaches to Software Engineering (FASE’09). LNCS, vol. 5503. Springer, York, UK, 216--230. Google Scholar
Digital Library
- Richard Barraclough, David Binkley, Sebastian Danicic, Mark Harman, Robert Hierons, Ákos Kiss, and Michael Laurence. 2010. A trajectory-based strict semantics for program slicing. Theoret. Comput. Sci. 411, 11--13 (Mar. 2010), 1372--1386. Google Scholar
Digital Library
- Árpád Beszédes, Tamás Gergely, Zsolt Mihály Szabó, János Csirik, and Tibor Gyimóthy. 2001. Dynamic slicing method for maintenance of large c programs. In Proceedings of the 5th European Conference on Software Maintenance and Reengineering (CSMR’01). IEEE Computer Society, 105--113. Google Scholar
Digital Library
- Gianfranco Bilardi and Keshav Pingali. 1996. A framework for generalized control dependence. In Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation (PLDI’96). ACM, New York, NY, 291--300. Google Scholar
Digital Library
- David Binkley, Sebastian Danicic, Tibor Gyimóthy, Mark Harman, Ákos Kiss, and Bogdan Korel. 2006. Theoretical foundations of dynamic program slicing. Theoret. Comput. Sci. 360, 1 (2006), 23--41. Google Scholar
Digital Library
- Dave Binkley, Sebastian Danicic, Tibor Gyimóthy, Mark Harman, Ákos Kiss, and Lahcen Ouarbya. 2004. Formalizing executable dynamic and forward slicing. In Proceedings of the 4th International Workshop on Source Code Analysis and Manipulation (SCAM’04). IEEE Computer Society Press, Los Alamitos, CA, 43--52. Google Scholar
Digital Library
- David Binkley and Mark Harman. 2005. Forward slices are smaller than backward slices. In Proceedings of the 5th IEEE International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press, Los Alamitos, CA, 15--24. Google Scholar
Digital Library
- David Wendell Binkley. 1998. The application of program slicing to regression testing. Inf. Softw Technol. 40, 11 and 12 (1998), 583--594.Google Scholar
- David Wendell Binkley, Sebastian Danicic, Mark Harman, John Howroyd, and Lahcen Ouarbya. 2006. A formal relationship between program slicing and partial evaluation. Formal Aspects Comput 18, 2 (2006), 103--119. Google Scholar
Cross Ref
- David Wendell Binkley and Keith Brian Gallagher. 1996. Program slicing. In Advances in Computing, vol. 43, Marvin Zelkowitz (Ed.). Academic Press, 1--50.Google Scholar
- David Wendell Binkley and Mark Harman. 2003. A large-scale empirical study of forward and backward static slice size and context sensitivity. In Proceedings of the IEEE International Conference on Software Maintenance (Amsterdam, Netherlands). IEEE Computer Society Press, Los Alamitos, CA, 44--53. Google Scholar
Digital Library
- David Wendell Binkley and Mark Harman. 2004. A survey of empirical results on program slicing. Adv. Comput. 62 (2004), 105--178.Google Scholar
Cross Ref
- David Wendell Binkley, Susan Horwitz, and Tom Reps. 1995. Program integration for languages with procedure calls. ACM Trans. Softw. Eng. Methodol. 4, 1 (1995), 3--35. Google Scholar
Digital Library
- Gerardo Canfora, Aniello Cimitile, and Andrea De Lucia. 1998. Conditioned program slicing. Inf. Softw. Technol. 40, 11 and 12 (1998), 595--607.Google Scholar
- Sebastian Danicic, Mark Harman, John Howroyd, and Lahcen Ouarbya. 2007a. A non-standard semantics for program slicing and dependence analysis. Logic Algebr. Program. 72, 2 (July-August 2007), 123--240.Google Scholar
- Sebastian Danicic. 1999. Dataflow Minimal Slicing. Ph.D. Dissertation. University of North London, UK, School of Informatics.Google Scholar
- Sebastian Danicic, Richard Barraclough, Mark Harman, John Howroyd, Akos Kiss, and Mike Laurence. 2011. A unifying theory of control dependence and its application to arbitrary program structures. Theoret. Comput. Sci. 412, 49 (Nov. 2011), 6809--6842. Google Scholar
Digital Library
- Sebastian Danicic, David Binkley, Tibor Gyimóthy, Mark Harman, Ákos Kiss, and Bogdan Korel. 2006. A formalisation of the relationship between forms of program slicing. Sci. Comput. Program. 62, 3 (2006), 228--252. Google Scholar
Digital Library
- Sebastian Danicic, Chris Fox, Mark Harman, and Rob Mark Hierons. 2000. ConSIT: A conditioned program slicer. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM’00). IEEE Computer Society Press, Los Alamitos, CA, 216--226. Google Scholar
Digital Library
- Sebastian Danicic, Chris Fox, Mark Harman, Robert Mark Hierons, John Howroyd, and Mike Laurence. 2005. Slicing algorithms are minimal for programs which can be expressed as linear, free, liberal schemas. Comput. J. 48, 6 (2005), 737--748. Google Scholar
Digital Library
- Sebastian Danicic, Mark Harman, Robert Mark Hierons, John Howroyd, and Mike Laurence. 2007b. Equivalence of linear, free, liberal, structured program schemas is decidable in polynomial time. Theoret. Comput. Sci. 373, 1--2 (Mar. 2007), 1--18. Google Scholar
Digital Library
- Sebastian Danicic, Robert Hierons, and Mike Laurence. 2007c. On the computational complexity of dynamic slicing problems for program schemas. In Proceedings of the 3rd International Workshop on Programming Language Interference and Dependence.Google Scholar
- Sebastian Danicic, Robert Hierons, and Mike Laurence. 2008. Weisers's algorithm computes minimal path-faithful slices of function-linear, free program schemas. In Proceedings of the 4th International Workshop on Programming Language Interference and Dependence.Google Scholar
- Sebastian Danicic, Robert Hierons, and Michael Laurence. 2010. Decidability of strong equivalence for slices of linear, free, near-liberal program schemas. (unpublished).Google Scholar
- Sebastian Danicic, Robert Hierons, and Michael Laurence. 2011a. Characterizing minimal semanticspreserving slices of predicate-linear, free, liberal program schemas. J. Logic Algebr. Program. 80, 8 (2011), 481–496.Google Scholar
Cross Ref
- Sebastian Danicic, Robert Hierons, and Michael Laurence. 2011b. Complexity of data dependence problems for program schemas with concurrency. ACM Trans. Comput. Logic 13, 2 (2011), Article 15. Google Scholar
Digital Library
- Sebastian Danicic, Robert Hierons, and Michael Laurence. 2011c. On the computational complexity of dynamic slicing problems for program schemas. Math. Struct. Comput. Sci. 21, 6 (2011), 1339–1362. Google Scholar
Digital Library
- Mohammed Daoudi. 2006. On Symbolic Execution Based Intraprocedural Conditioned Slicing. Ph.D. Dissertation. Goldsmiths, University of London.Google Scholar
- Mohammed Daoudi, Sebastian Danicic, John Howroyd, Mark Harman, Chris Fox, Lahcen Ouarbya, and Martin Ward. 2002. ConSUS: A scalable approach to conditioned slicing. In Proceedings of the IEEE Working Conference on Reverse Engineering (WCRE’02). IEEE Computer Society Press, Los Alamitos, CA, 109--118. Google Scholar
Digital Library
- Andrea De Lucia. 2001. Program slicing: Methods and applications. In Proceedings of the 1st IEEE International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press, Los Alamitos, CA, 142--149.Google Scholar
Cross Ref
- Dorothy E. Denning and Peter J. Denning. 1977. Certification of programs for secure information flow. Commun. ACM 20, 7 (1977), 504--513. Google Scholar
Digital Library
- Edskar Wabe Dijkstra. 1972. A Discipline of Programming. Prentice-Hall.Google Scholar
- Evelyn Duesterwald, Rajiv Gupta, and M. Soffa. 1993. Distributed slicing and partial re-execution for distributed programs. In Languages and Compilers for Parallel Computing. Springer, 497--511. Google Scholar
Digital Library
- Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. 1987. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9, 3 (Jul. 1987), 319--349. Google Scholar
Digital Library
- Robert W. Floyd. 1962. Algorithm 97: Shortest path. Commun. ACM 5, 6 (1962), 345. Google Scholar
Digital Library
- Keith B. Gallagher and James R. Lyle. 1991. Using program slicing in software maintenance. IEEE Trans. Softw. Eng. 17, 8 (Aug. 1991), 751--761. Google Scholar
Digital Library
- Tybor Gallai. 1961. Maximum-minimum sätze und verallgemeinerte faktoren von graphen. Acta Math. Acad. Sci. Hung. 12, 131--173.Google Scholar
Cross Ref
- Roberto Giacobazzi and Isabella Mastroeni. 2003. Non--standard semantics for program slicing. Higher-Order Symbol. Comput. 16, 4 (2003), 297--339. Google Scholar
Digital Library
- Rajiv Gopal. 1991. Dynamic program slicing based on dependence graphs. In Proceedings of the IEEE Conference on Software Maintenance. 191--200.Google Scholar
Cross Ref
- V. Gouranton and D. Le Métayer. 1999. Dynamic slicing: A generic analysis based on a natural semantics format. J. Logic Comput 9, 6 (Dec. 1999), 835--871.Google Scholar
Cross Ref
- Grammatech Inc. 2002. The CodeSurfer Slicing System. Retrieved from www.grammatech.com.Google Scholar
- Mark Harman, David Wendell Binkley, and Sebastian Danicic. 2003. Amorphous Program Slicing. J. Syst. Softw. 68, 1 (Oct. 2003), 45--64. Google Scholar
Digital Library
- Mark Harman and Robert Mark Hierons. 2001. An overview of program slicing. Softw. Focus 2, 3 (2001), 85--92.Google Scholar
Cross Ref
- Mark Harman, Lin Hu, Robert Mark Hierons, Joachim Wegener, Harmen Sthamer, Andr� Baresel, and Marc Roper. 2004. Testability transformation. IEEE Trans. Softw. Eng. 30, 1 (Jan. 2004), 3--16. Google Scholar
Digital Library
- John Hatcliff, James Corbett, Matthew Dwyer, Stefan Sokolowski, and Hongjun Zheng. 1999. A formal study of slicing for multi-threaded programs with JVM concurrency primitives. In Static Analysis. Springer, 1--18. Google Scholar
Digital Library
- John Hatcliff, Matthew B. Dwyer, and Hongjun Zheng. 2000. Slicing software for model construction. Higher-Order Symbol. Comput. 13, 4 (Dec. 2000), 315--353. Google Scholar
Digital Library
- Susan Horwitz, Thomas Reps, and David Wendell Binkley. 1988. Interprocedural slicing using dependence graphs. Proc. SIGPLAN Not. 23, 7 (1988), 35--46. Google Scholar
Digital Library
- Susan Horwitz, Thomas Reps, and David Wendell Binkley. 1990. Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12, 1 (1990), 26--61. Google Scholar
Digital Library
- Mariam Kamkar, Nahid Shahmehri, and Peter Fritzson. 1992. Interprocedural dynamic slicing. In Proceedings of the 4th Conference on Programming Language Implementation and Logic Programming. 370--384. Google Scholar
Digital Library
- Raghavan Komondoor and Susan Horwitz. 2000. Semantics-preserving procedure extraction. In Proceedings of the 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’00). ACM Press, New York, NY, 155--169. Google Scholar
Digital Library
- Bogdan Korel. 1995. Computation of dynamic slices for programs with arbitrary control flow. In Proceedings of the 2nd International Workshop on Automated Algorithmic Debugging (AADEBUG’95), Mireille Ducassï (Ed).Google Scholar
- Bogdan Korel and Janusz Laski. 1988. Dynamic program slicing. Inf. Process. Lett. 29, 3 (Oct. 1988), 155--163. Google Scholar
Digital Library
- Bogdan Korel and Jurgen Rilling. 1997. Dynamic program slicing in understanding of program execution. In Proceedings of the 5th IEEE International Workshop on Program Comprenhesion (IWPC’97). IEEE Computer Society Press, Los Alamitos, CA, 80--89. Google Scholar
Digital Library
- Bogdan Korel and Jurgen Rilling. 1998. Dynamic program slicing methods. Inf. Softw. Technol. 40, 11 and 12 (1998), 647--659.Google Scholar
- Bogdan Korel, Inderdeep Singh, Luay Tahat, and Boris Vaysburg. 2003a. Slicing of state-based models. In Proceedings of the International Conference on Software Maintenance (ICSM’03). IEEE, 34--43. Google Scholar
Digital Library
- Bogdan Korel, Inderdeep Singh, Luay Tahat, and Boris Vaysburg. 2003b. Slicing of state based models. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM’03). IEEE Computer Society Press, Los Alamitos, CA, 34--43. Google Scholar
Digital Library
- Arun Lakhotia and Prabhat Singh. 2003. Challenges in getting formal with viruses. Virus Bulletin (Sept. 2003).Google Scholar
- I. A. Natour. 1988. On the control dependence in the program dependence graph. In Proceedings of the 1988 ACM 16th Annual Conference on Computer Science (CSC’88). ACM, New York, NY, 510--519. Google Scholar
Digital Library
- Karl J. Ottenstein and Linda M. Ottenstein. 1984. The program dependence graph in software development environments. SIGPLAN Not. 19, 5 (1984), 177--184. Google Scholar
Digital Library
- A. Podgurski and L. A. Clarke. 1990. A formal model of program dependences and its implications for software testing, debugging, and maintenance. IEEE Trans. Softw. Eng. 16, 9 (1990), 965--79. Google Scholar
Digital Library
- Lyle Ramshaw. 1988. Eliminating goto's while preserving program structure. J. ACM 35, 4 (1988), 893--920. Google Scholar
Digital Library
- Venkatesh Prasad Ranganath, Torben Amtoft, Anindya Banerjee, Matthew B. Dwyer, and John Hatcliff. 2005. A new foundation for control-dependence and slicing for modern program structures. In Proceedings of the European Symposium on Programming. 77--93. Google Scholar
Digital Library
- Venkatesh Prasad Ranganath, Torben Amtoft, Anindya Banerjee, John Hatcliff, and Matthew B. Dwyer. 2007. A new foundation for control dependence and slicing for modern program structures. ACM Trans. Program. Lang. Syst. 29, 5 (2007). Google Scholar
Digital Library
- Saurabh Sinha, Mary Jean Harrold, and Gregg Rothermel. 2001. Interprocedural control dependence. ACM Trans. Softw. Eng. Methodol. 10, 2 (2001), 209--254. Google Scholar
Digital Library
- Joseph E. Stoy. 1985. Denotational Semantics: The Scott--Strachey Approach to Programming Language Theory (3rd ed.). MIT Press.Google Scholar
- Robert Endre Tarjan. 1972. Depth-first search and linear graph algorithms. SIAM J. Comput. 1, 2 (1972), 146--160.Google Scholar
Digital Library
- Frank Tip. 1995. A survey of program slicing techniques. J. Program. Lang. 3, 3 (Sep. 1995), 121--189.Google Scholar
- Guda A. Venkatesh. 1991. The semantic approach to program slicing. SIGPLAN Not. 26, 6 (1991), 107--119. Google Scholar
Digital Library
- Martin Ward. 2002. Program slicing via fermat transformations. In Proceedings of the 26th IEEE Annual Computer Software and Applications Conference (COMPSAC’02). IEEE Computer Society Press, Los Alamitos, CA, 357--362. Google Scholar
Digital Library
- Martin Ward and Hussein Zedan. 2007. Slicing as a program transformation. ACM Trans. Program. Lang. Syst. 29, 2 (2007), 7. Google Scholar
Digital Library
- Mark Weiser. 1979. Program Slices: Formal, Psychological, and Practical Investigations of an Automatic Program Abstraction Method. Ph.D. Dissertation. University of Michigan, Ann Arbor, MI. Google Scholar
Digital Library
- Mark Weiser. 1981. Program Slicing. In Proceedings of the 5th International Conference on Software Engineering. 439--449. Google Scholar
Digital Library
- Michael Weiss. 1992. The transitive closure of control dependence: The iterated join. ACM Lett. Program. Lang. Syst. 1, 2 (1992), 178--190. Google Scholar
Digital Library
- Baowen Xu, Ju Qian, Xiaofang Zhang, Zhongqiang Wu, and Lin Chen. 2005. A brief survey of program slicing. ACM SIGSOFT Softw. Eng. Not. 30, 2 (2005), 1--36. Google Scholar
Digital Library
Index Terms
Static Backward Slicing of Non-deterministic Programs and Systems
Recommendations
A brief survey of program slicing
Program slicing is a technique to extract program parts with respect to some special computation. Since Weiser first proposed the notion of slicing in 1979, hundreds of papers have been presented in this area. Tens of variants of slicing have been ...
A unifying theory of control dependence and its application to arbitrary program structures
There are several similar, but not identical, definitions of control dependence in the literature. These definitions are given in terms of control flow graphs which have had extra restrictions imposed (for example, end-reachability).We define two new ...
Abstract Program Slicing: An Abstract Interpretation-Based Approach to Program Slicing
In the present article, we formally define the notion of abstract program slicing, a general form of program slicing where properties of data are considered instead of their exact value. This approach is applied to a language with numeric and reference ...






Comments