Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/978-3-540-31987-0_7guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

A new foundation for control-dependence and slicing for modern program structures

Published: 04 April 2005 Publication History

Abstract

The notion of control dependence underlies many program analysis and transformation techniques. Despite wide applications, existing definitions and approaches for calculating control dependence are difficult to apply seamlessly to modern program structures. Such program structures make substantial use of exception processing and increasingly support reactive systems designed to run indefinitely.
This paper revisits foundational issues surrounding control dependence and slicing. It develops definitions and algorithms for computing control dependence that can be directly applied to modern program structures. A variety of properties show that the new definitions conservatively extend classic definitions. In the context of slicing reactive systems, the paper proposes a notion of slicing correctness based on weak bisimulation and proves that the definition of control dependence generates slices that conform to this notion of correctness. The new definitions and algorithms for control dependence form the basis of a publicly available program slicer that has been implemented for full Java.

References

[1]
Corbett, J., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Robby, Zheng, H.: Bandera: Extracting Finite-state Models from Java source code. In: 22nd International Conference on Software Engineering (ICSE'00). (2000) 439-448.
[2]
Podgurski, A., Clarke, L.: A formal model of program dependences and its implications for software testing, debugging, and maintenance. IEEE Trans. Soft. Engg. 16 (1990) 965-979.
[3]
Francel, M.A., Rugaber, S.: The relationship of slicing and debugging to program understanding. In: Seventh IEEE International Workshop on Program Comprehension (IWPC'99). (1999) 106-113.
[4]
Anderson, L.O.: Program Analysis and Specialization for the C Programming Languages. PhD thesis, DIKU, University of Copenhagen (1999).
[5]
Ferrante, J., Ottenstein, K.J., Warren, J.O.: The program dependence graph and its use in optimization. ACM TOPLAS 9 (1987) 319-349.
[6]
Hatcliff, J., Corbett, J.C., Dwyer, M.B., Sokolowski, S., Zheng, H.: A formal study of slicing for multi-threaded programs with JVM concurrency primitives. In: International Static Analysis Symposium (SAS'99) (1999), 1-18.
[7]
Hatcliff, J., Dwyer, M.B., Zheng, H.: Slicing software for model construction. Journal of Higher-order and Symbolic Computation 13 (2000) 315-353.
[8]
Ranganath, V.P., Amtoft, T., Banerjee, A., Dwyer, M.B., Hatcliff, J.: A new foundation for control-dependence and slicing for modern program structures. Technical Report 8, SAnToS Lab., Kansas State University (2004). Available at http://projects.cis.ksu.edu/docman/admin/index.php?editdoc=1&docid=95&group id=12.
[9]
SAnToS Laboratory, Kansas State University: Indus, a toolkit to customize and adapt Java programs. Available at http://indus.projects.cis.ksu.edu.
[10]
Ball, T., Horwitz, S.: Slicing programs with arbitrary control-flow. In: First International Workshop on Automated and Algorithmic Debugging (AADEBUG). Volume 749 of Lecture Notes in Computer Science, Springer-Verlag (1993) 206-222.
[11]
Muchnick, S.S.: Advanced Compiler Design & Implementation. Morgan Kaufmann Publishers. Inc., San Francisco, California, USA (1997).
[12]
Tip, F.: A survey of program slicing techniques. Journal of Programming Languages 3 (1995) 121-189.
[13]
Weiser, M.: Program slicing. IEEE Trans. Soft. Engg. 10 (1984) 352-357.
[14]
Bilardi, G., Pingali, K.: A framework for generalized control dependences. In: PLDI'96, 1996, 291-300.
[15]
Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. The MIT Press (1999).
[16]
Milner, R.: Communication and Concurrency. Prentice Hall (1989).
[17]
Jayaraman, G., Ranganath, V.P., Hatcliff, J.: Kaveri: Delivering Indus Java Program Slicer to Eclipse. In: Fundamental Approaches to Software Engineering (FASE'05), 2005. To appear.
[18]
Johnson, R., Pingali, K.: Dependence-based program analysis. In: PLDI'93, 1993, 78-89.
[19]
Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. ACM TOPLAS, 1990, 35-46.
[20]
Allen, M., Horwitz, S.: Slicing Java programs that throw and catch exceptions. In: PEPM'03, 2003, 44-54.
[21]
Horwitz, S., Pfeiffer, P., Reps, T.W.: Dependence analysis for pointer variables. In: PLDI'89, 1989, 28-40.
[22]
Millett, L., Teitelbaum, T.: Slicing Promela and its applications to model checking, simulation, and protocol understanding. In: Fourth International SPIN Workshop. (1998)
[23]
Krinke, J.: Static slicing of threaded programs. In: Workshop on Program Analysis for Software Tools and Engineering (PASTE'98). (1998) 35-42.

Cited By

View all
  1. A new foundation for control-dependence and slicing for modern program structures

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Guide Proceedings
    ESOP'05: Proceedings of the 14th European conference on Programming Languages and Systems
    April 2005
    438 pages
    ISBN:3540254358

    Publisher

    Springer-Verlag

    Berlin, Heidelberg

    Publication History

    Published: 04 April 2005

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 23 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)On the computation of interprocedural weak control closureProceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction10.1145/3497776.3517782(65-76)Online publication date: 19-Mar-2022
    • (2022)Fast and Incremental Computation of Weak Control ClosureStatic Analysis10.1007/978-3-031-22308-2_15(325-349)Online publication date: 5-Dec-2022
    • (2021)Fast Computation of Strong Control DependenciesComputer Aided Verification10.1007/978-3-030-81688-9_41(887-910)Online publication date: 20-Jul-2021
    • (2020)Simple and Efficient Computation of Minimal Weak Control ClosureStatic Analysis10.1007/978-3-030-65474-0_10(200-222)Online publication date: 18-Nov-2020
    • (2020)DG: Analysis and Slicing of LLVM BitcodeAutomated Technology for Verification and Analysis10.1007/978-3-030-59152-6_33(557-563)Online publication date: 19-Oct-2020
    • (2018)Static Backward Slicing of Non-deterministic Programs and SystemsACM Transactions on Programming Languages and Systems10.1145/288609840:3(1-46)Online publication date: 25-Aug-2018
    • (2010)A trajectory-based strict semantics for program slicingTheoretical Computer Science10.1016/j.tcs.2009.10.025411:11-13(1372-1386)Online publication date: 1-Mar-2010
    • (2009)Dynamic parallelization of single-threaded binary programs using speculative slicingProceedings of the 23rd international conference on Supercomputing10.1145/1542275.1542302(158-168)Online publication date: 8-Jun-2009
    • (2007)Slicing concurrent Java programs using Indus and KaveriInternational Journal on Software Tools for Technology Transfer (STTT)10.5555/3220881.32209789:5-6(489-504)Online publication date: 1-Oct-2007
    • (2007)A new foundation for control dependence and slicing for modern program structuresACM Transactions on Programming Languages and Systems10.1145/1275497.127550229:5(27-es)Online publication date: 2-Aug-2007
    • Show More Cited By

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media