Skip to main content
Log in

Slicing concurrent Java programs using Indus and Kaveri

  • Special section FASE'04/05
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

Abstract

Program slicing is a program analysis and transformation technique that has been successfully used in a wide range of applications including program comprehension, debugging, maintenance, testing, and verification. However, there are only few fully featured implementations of program slicing that are available for industrial applications or academic research. In particular, very little tool support exists for slicing programs written in modern object-oriented languages such as Java, C#, or C++. In this paper, we present Indus—a robust framework for analyzing and slicing concurrent Java programs, and Kaveri—a feature-rich Eclipse-based GUI front end for Indus slicing. For Indus, we describe the underlying tool architecture, analysis components, and program dependence capabilities required for slicing. In addition, we present a collection of advanced features useful for effective slicing of Java programs including calling-context sensitive slicing, scoped slicing, control slicing, and chopping. For Kaveri, we discuss the design goals and basic capabilities of the graphical facilities integrated into a Java development environment to present the slicing information. This paper is an extended version of a tool demonstration paper presented at the International Conference on Fundamental Aspects of Software Engineering (FASE 2005). Thus, the paper highlights tool capabilities and engineering issues and refers the reader to other papers for technical details.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. Agarwal, H., Horgan, J.H.: Dynamic program slicing. In: Proceedings of the ACM SIGPLAN 1990 Conference on Programming Language Design and Implementation (PLDI’90), pp. 246–256 (1990)

  2. Bacon, D.F., Sweeney, P.F.: Fast static analysis of C++ virtual function calls. In: Proceedings of the 11th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA’96), pp. 324–341 (1996)

  3. Binkley D. (1997). Semantics guided regression test cost reduction. IEEE Trans. Softw. Eng. 23(8): 489–516

    Article  Google Scholar 

  4. Brat, G., Havelund, K., Park, S., Visser, W.: Java PathFinder—a second generation of a Java model-checker. In: Proceedings of the Workshop on Advances in Verification (2000)

  5. Corbett, J.C., 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: Proceedings of the 22nd International Conference on Software Engineering (ICSE’00), pp. 439–448 (2000)

  6. Dwyer, M.B., Hatcliff, J.: Slicing software for model construction. In: Proceedings of Partial Evaluation and Semantic-Based Program Manipulation (PEPM’99), pp. 105–118 (1999)

  7. Dwyer, M.B., Hatcliff, J., Hoosier, M., Ranganath, V., Robby, Wallentine, T.: Evaluating the effectiveness of slicing for model reduction of concurrent object-oriented programs. In: Proceedings of International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’06), pp. 73–89 (2006)

  8. Dwyer, M.B., Person, S., Elbaum, S.: Controlling factors in evaluating path-sensitive error detection techniques. In: Proceedings of the ACM SIGSOFT Symposium on Foundations of Software Engineering (2006)

  9. Hammer, C., Snelting, G.: An improved slicer for Java. In: Proceedings of the ACM-SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE’04), pp. 17–22 (2004)

  10. 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: Proceedings of the 1999 International Symposium on Static Analysis (SAS’99), Lecture Notes in Computer Science, pp. 1–18 (1999)

  11. Hatcliff, J., Dwyer, M.B., Zheng, H.: Slicing software for model construction. J. Higher-order Symbolic Comput. 13(4), 315–353 (2000). A special issue containing selected papers from the 1999 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation

    Google Scholar 

  12. Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Lazy abstraction. In: Proceedings of the 29th Annual Symposium on Principles of Programming Languages (POPL’02), pp. 75–83 (2002)

  13. Horwitz, S., Pfeiffer, P., Reps, T.W.: Dependence analysis for pointer variables. In: Proceedings of the ACM SIGPLAN ’89 Conference on Programming Language Design and Implementation (PLDI’89), pp. 28–40 (1989)

  14. Horwitz S., Reps T. and Binkley D. (1990). Interprocedural slicing using dependence graphs. ACM Trans. Programm. Language Systems 12(1): 26–60

    Article  Google Scholar 

  15. Krinke, J.: Static slicing of threaded programs. In: Proceedings ACM SIGPLAN/SIGFSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE’98), pp. 35–42 (1998)

  16. Krinke, J.: Advanced slicing of Sequential and concurrent programs. Ph.D. thesis, Fakultät für Mathematik und Informatik, Universität Passau (2003)

  17. Krinke, J.: Barrier slicing and chopping. In: Proceedings of Third IEEE International Workshop on Source Code Analysis and Manipulation (SCAM’03), pp. 81–87 (2003)

  18. Krinke, J.: Context-sensitive slicing of concurrent programs. In: Proceedings of ESEC/SIGSOFT FSE’03, pp. 178–187 (2003)

  19. Krinke, J.: Context-sensitivity matters, but context does not. In: Proceedings of Fourth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM’04), pp. 29–35 (2004)

  20. Kumar, S., Horwitz, S.: Better slicing of programs with jumps and switches. In: Proceedings of Fundamental Approaches of Software Engineering (FASE’02), pp. 96–112 (2002)

  21. Liang, D., Harrold, M.J.: Efficient computation of parameterized pointer information for interprocedural analyses. In: Proceedings 8th International Static Analysis Symposium (SAS’01), pp. 279–298 (2001)

  22. Millett, L.I., Teitelbaum, T.: Slicing Promela and its applications to model checking, simulation, and protocol understanding. In: Proceedings of the 4th International SPIN Workshop (SPIN’98) (1998)

  23. Nanda, M.G.: Slicing concurrent Java programs: issues and solutions. Ph.D. thesis, Indian Institute of Technology, Bombay (2001)

  24. Nanda, M.G., Ramesh, S.: Slicing concurrent programs. In: Proceedings of International Symposium on Software Testing and Analysis (ISSTA’00), pp. 180–190 (2000)

  25. Ottenstein, K., Ottenstein, L.: The program dependence graph in a software development environment. In: Proceedings of ACM SIGPLAN/SIGSOFT Symposium on Practical Software Development Environments (PPDE’84), pp. 177–184 (1984)

  26. Podgurski A. and Clarke L. (1990). A formal model of program dependences and its implications for software testing, debugging and maintenance. IEEE Trans. Softw. Eng. 16(8): 965–979

    Article  Google Scholar 

  27. Ranganath, V.P.: Object-flow analysis for optimizing finite-state models of Java software. Master’s thesis, Department of Computing and Information Science, Kansas State University (2002)

  28. Ranganath, V.P.: Scalable and accurate approaches to program dependence analysis, slicing, and verification of concurrent object oriented programs. Ph.D. thesis, Department of Computing and Information Science, Kansas State University (2006)

  29. Ranganath, V.P., Amtoft, T., Banerjee, A., Dwyer, M.B., Hatcliff, J.: A new foundation for control-dependence and slicing for modern program structures. In: Programming Languages and Systems, Proceedings of 14th European Symposium on Programming (ESOP’05) (2005). Extended version is available at http://projects.cis.ksu.edu/docman/?group_id=12

  30. Ranganath, V.P., Hatcliff, J.: Pruning interference and ready dependences for slicing concurrent Java programs. In: Proceedings of Compiler Construction (CC’04), pp. 39–56 (2004)

  31. Ren, X., Shah, F., Tip, F., Ryder, B.G., Chesley, O.: Chianti: a tool for change impact analysis of java programs. In: Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’04), pp. 432–448 (2004)

  32. Ruf, E.: Effective synchronization removal for Java. In: Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation (PLDI’00), pp. 208–218 (2000)

  33. Tip F. (1995). A survey of program slicing techniques. J Program. Languages 3: 121–189

    Google Scholar 

  34. Vallée-Rai, R.: SOOT: A Java bytecode optimization framework. Master’s thesis, School of Computer Science, McGill University (2000)

  35. Wang, Z., Elbaum, S., Rosenblum, D.: Automated generation of context-aware tests. Accepted at the International Conference on Software Engineering (ICSE’07) (2007)

  36. Weiser M. (1984). Program slicing. IEEE Trans. Softw. Eng. 10(4): 352–357

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Venkatesh Prasad Ranganath.

Additional information

This work was supported in part by the US Army Research Office (DAAD190110564), by DARPA/IXO’s PCES program (AFRL Contract F33615-00-C-3044), by NSF (CCR-0306607) by Lockheed Martin, and and by Intel Corporation.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Ranganath, V.P., Hatcliff, J. Slicing concurrent Java programs using Indus and Kaveri. Int J Softw Tools Technol Transf 9, 489–504 (2007). https://doi.org/10.1007/s10009-007-0043-0

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-007-0043-0

Keywords

Navigation