skip to main content
10.1145/2970276.2970352acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article
Public Access

DistIA: a cost-effective dynamic impact analysis for distributed programs

Published:25 August 2016Publication History

ABSTRACT

Dynamic impact analysis is a fundamental technique for understanding the impact of specific program entities, or changes to them, on the rest of the program for concrete executions. However, existing techniques are either inapplicable or of very limited utility for distributed programs running in multiple concurrent processes. This paper presents DistIA, a dynamic analysis of distributed systems that predicts impacts propagated both within and across process boundaries by partially ordering distributed method-execution events, inferring causality from the ordered events, and exploiting message-passing semantics. We applied DistIA to large distributed systems of various architectures and sizes, for which it on average finishes the entire analysis within one minute and safely reduces impact-set sizes by over 43% relative to existing options with runtime overhead less than 8%. Moreover, two case studies initially demonstrate the precision of DistIA and its utility in distributed system understanding. While conservative thus subject to false positives, DistIA balances precision and efficiency to offer cost-effective options for evolving distributed programs.

References

  1. J. Abrahamson, I. Beschastnikh, Y. Brun, and M. D. Ernst. Shedding light on distributed system executions. In Companion Proceedings of the 36th International Conference on Software Engineering, pages 598–599, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Apache. Voldemort. https://github.com/voldemort, 2015.Google ScholarGoogle Scholar
  3. Apache. ZooKeeper. https://zookeeper.apache.org/, 2015.Google ScholarGoogle Scholar
  4. T. Apiwattanapong, A. Orso, and M. J. Harrold. Efficient and precise dynamic impact analysis using execute-after sequences. In Proceedings of IEEE/ACM International Conference on Software Engineering, pages 432–441, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Artho, M. Hagiya, R. Potter, Y. Tanabe, F. Weitl, and M. Yamamoto. Software model checking for distributed systems with selector-based, non-blocking communication. In Proceedings of IEEE/ACM International Conference on Automated Software Engineering, pages 169–179, 2013.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Bamberg University. Open Chord. http://sourceforge.net/projects/open-chord/, 2015.Google ScholarGoogle Scholar
  7. S. S. Barpanda and D. P. Mohapatra. Dynamic slicing of distributed object-oriented programs. IET software, 5(5):425–433, 2011.Google ScholarGoogle ScholarCross RefCross Ref
  8. I. Beschastnikh, Y. Brun, M. D. Ernst, and A. Krishnamurthy. Inferring models of concurrent systems from logs of their behavior with CSight. In Proceedings of IEEE/ACM International Conference on Software Engineering, pages 468–479, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. A. Bohner and R. S. Arnold. An introduction to software change impact analysis. Software Change Impact Analysis, IEEE Comp. Soc. Press, pp. 1–26, June 1996.Google ScholarGoogle Scholar
  10. B. Breech, M. Tegtmeyer, and L. Pollock. A comparison of online and dynamic impact analysis algorithms. In Proceedings of European Conference on Software Maintainance and Reengineering, pages 143–152, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. H. Cai and R. Santelices. Diver: Precise dynamic impact analysis using dependence-based trace pruning. In Proceedings of International Conference on Automated Software Engineering, pages 343–348, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. H. Cai and R. Santelices. A comprehensive study of the predictive accuracy of dynamic change-impact analysis. Journal of Systems and Software, 103:248–265, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. H. Cai and R. Santelices. A framework for cost-effective dependence-based dynamic impact analysis. In International Conference on Software Analysis, Evolution, and Reengineering, pages 231–240, 2015.Google ScholarGoogle ScholarCross RefCross Ref
  14. H. Cai, R. Santelices, and D. Thain. Diapro: Unifying dynamic impact analyses for improved and variable cost-effectiveness. ACM Transactions on Software Engineering and Methodology, 25(2):18, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. H. Cai and D. Thain. Distea: Efficient dynamic impact analysis for distributed systems. arXiv preprint arXiv:1604.04638, 2016.Google ScholarGoogle Scholar
  16. J. Cheng. Dependence analysis of parallel and distributed programs and its applications. In Proceedings of Advances in Parallel and Distributed Computing, pages 370–377, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. G. Coulouris, J. Dollimore, T. Kindberg, and G. Blair. Distributed Systems: Concepts and Design. Addison-Wesley Publishing Company, 5th edition, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. E. Duesterwald, R. Gupta, and M. Soffa. Distributed slicing and partial re-execution for distributed programs. In Languages and Compilers for Parallel Computing, pages 497–511. Springer, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. Eugster and K. Jayaram. EventJava: An extension of Java for event correlation. In Proceedings of European Conference on Object-Oriented Programming, pages 570–594. Springer, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. T. Feng and J. I. Maletic. Applying dynamic change impact analysis in component-based architecture design. In ACIS International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing, pages 43–48, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. C. J. Fidge. Timestamps in message-passing systems that preserve the partial ordering. In Proceedings of the 11th Australian Computer Science Conference, volume 10, pages 56–66, 1988.Google ScholarGoogle Scholar
  22. C. Flanagan and S. N. Freund. The roadrunner dynamic analysis framework for concurrent programs. In Proceedings of the 9th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, pages 1–8, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. C. Flanagan and P. Godefroid. Dynamic partial-order reduction for model checking software. In Proceedings of the 32Nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 110–121, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. Garcia, D. Popescu, G. Safi, W. G. Halfond, and N. Medvidovic. Identifying message flow in distributed event-based systems. In Proceedings of ACM International Symposium on the Foundations of Software Engineering, pages 367–377, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. Giffhorn and C. Hammer. Precise slicing of concurrent programs. Automated Software Engineering, 16(2):197–234, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. GoogleCode. MultiChat. https://code.google.com/p/multithread-chat-server/, 2015.Google ScholarGoogle Scholar
  27. D. Goswami and R. Mall. Dynamic slicing of concurrent programs. In IEEE International Conference on High Performance Computing, pages 15–26. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. P. Hunt, M. Konar, F. P. Junqueira, and B. Reed. Zookeeper: Wait-free coordination for internet-scale systems. In Proceedings of USENIX Annual Technical Conference, volume 8, page 9, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. D. Jackson and M. Rinard. Software analysis: A roadmap. In Proceedings of the Conference on the Future of Software Engineering, pages 133–145, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. K. Jayaram and P. Eugster. Program analysis for event-based distributed systems. In Proceedings of International Conference on Distributed Event-Based System, pages 113–124, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. M. Kamkar and P. Krajina. Dynamic slicing of distributed programs. In Proceedings of IEEE International Conference on Software Maintenance, pages 222–229, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. F. Kon and R. H. Campbell. Dependence management in component-based distributed systems. IEEE concurrency, 8(1):26–36, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. R. Konuru, H. Srinivasan, and J.-D. Choi. Deterministic replay of distributed java applications. In International Parallel and Distributed Processing Symposium, pages 219–227, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. B. Korel and R. Ferguson. Dynamic slicing of distributed programs. Applied Mathematics and Computer Science, 2(2):199–215, 1992.Google ScholarGoogle Scholar
  35. J. Krinke. Context-sensitive slicing of concurrent programs. In Proceedings of ACM International Symposium on the Foundations of Software Engineering, volume 28, pages 178–187, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. T. Kunz, J. P. Black, D. J. Taylor, and T. Basten. Poet: Target-system independent visualizations of complex distributed-application executions. The Computer Journal, 40(8):499–512, 1997.Google ScholarGoogle ScholarCross RefCross Ref
  37. P. Lam, E. Bodden, O. Lhoták, and L. Hendren. Soot - a Java bytecode optimization framework. In Cetus Users and Compiler Infrastructure Workshop, 2011.Google ScholarGoogle Scholar
  38. L. Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7):558–565, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. J. Law and G. Rothermel. Whole program path-based dynamic impact analysis. In Proceedings of IEEE/ACM International Conference on Software Engineering, pages 308–318, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. B. Li, X. Sun, H. Leung, and S. Zhang. A survey of code-based change impact analysis techniques. Software Testing, Verification and Reliability, 23:613–646, 2013.Google ScholarGoogle ScholarCross RefCross Ref
  41. J.-G. Lou, Q. Fu, Y. Wang, and J. Li. Mining dependency in distributed systems through unstructured logs analysis. ACM SIGOPS Operating Systems Review, 44(1):91–96, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. M. C. O. Maia, R. A. Bittencourt, J. C. A. de Figueiredo, and D. D. S. Guerrero. The hybrid technique for object-oriented software change impact analysis. In Proceedings of European Conference on Software Maintainance and Reengineering, pages 252–255, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. F. Mattern. Virtual time and global states of distributed systems. Parallel and Distributed Algorithms, 1(23):215–226, 1989.Google ScholarGoogle Scholar
  44. D. P. Mohapatra, R. Kumar, R. Mall, D. Kumar, and M. Bhasin. Distributed dynamic slicing of Java programs. Journal of Systems and Software, 79(12):1661–1678, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. G. Mühl, L. Fiege, and P. Pietzuch. Distributed event-based systems, volume 1. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. G. C. Murphy and D. Notkin. Lightweight lexical source model extraction. ACM Transactions on Software Engineering and Methodology, 5(3):262–292, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. M. G. Nanda and S. Ramesh. Interprocedural slicing of multithreaded programs with applications to Java. ACM Transactions on Programming Languages and Systems, 28(6):1088–1144, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. R. H. Netzer and B. P. Miller. Optimal tracing and replay for debugging message-passing parallel programs. The Journal of Supercomputing, 8(4):371–388, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Oracle. Java NIO. http://docs.oracle.com/javase/7/docs/api/ java/nio/package-summary.html, 2015.Google ScholarGoogle Scholar
  50. Oracle. Java Socket I/O. http: //docs.oracle.com/javase/7/docs/api/java/net/Socket.html, 2015.Google ScholarGoogle Scholar
  51. A. Orso, T. Apiwattanapong, and M. J. Harrold. Leveraging field data for impact analysis and regression testing. In Proceedings of ACM International Symposium on the Foundations of Software Engineering, pages 128–137, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. S. Pani, S. M. Satapathy, and G. Mund. Slicing of programs dynamically under distributed environment. In Proceedings of International Conference on Advances in Computing, pages 601–609. Springer, 2012.Google ScholarGoogle Scholar
  53. D. Popescu, J. Garcia, K. Bierhoff, and N. Medvidovic. Impact analysis for distributed event-based systems. In Proceedings of International Conference on Distributed Event-Based Systems, pages 241–251, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. K. Psarris and K. Kyriakopoulos. An experimental evaluation of data dependence analysis techniques. IEEE Transactions on Parallel and Distributed Systems, 15(3):196–213, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. V. Rajlich. Changing the paradigm of software engineering. Communications of the ACM, 49(8):67–70, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. V. Rajlich. Software evolution and maintenance. In Proceedings of the Conference on the Future of Software Engineering, pages 133–144, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. P. Rovegard, L. Angelis, and C. Wohlin. An empirical study on views of importance of change impact analysis issues. IEEE Transactions on Software Engineering, 34(4):516–530, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. K. Serebryany and T. Iskhodzhanov. Threadsanitizer: data race detection in practice. In Proceedings of the Workshop on Binary Instrumentation and Applications, pages 62–71, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. M. Sharp and A. Rountev. Static analysis of object references in RMI-based Java software. IEEE Transactions on Software Engineering, 32(9):664–681, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. H. M. Sneed. Impact analysis of maintenance tasks for a distributed object-oriented system. In Proceedings of the IEEE International Conference on Software Maintenance, page 180, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. SourceForge. NioEcho. http: //rox-xmlrpc.sourceforge.net/niotut/index.html#Thecode, 2015.Google ScholarGoogle Scholar
  62. Y. Tao, Y. Dang, T. Xie, D. Zhang, and S. Kim. How do software engineers understand code changes?: an exploratory study in industry. In Proceedings of ACM International Symposium on the Foundations of Software Engineering, pages 51:1–51:11, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. The Freenet team. The Free Network. https://freenetproject.org/, 2015.Google ScholarGoogle Scholar
  64. S. Tragatschnig, H. Tran, and U. Zdun. Impact analysis for event-based systems using change patterns. In Proceedings of ACM Symposium on Applied Computing, pages 763–768, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. J. Xiao, D. Zhang, H. Chen, and H. Dong. Improved program dependence graph and algorithm for static slicing concurrent programs. In Advanced Parallel Processing Technologies, pages 121–130. Springer, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. B. Xu, J. Qian, X. Zhang, Z. Wu, and L. Chen. A brief survey of program slicing. ACM SIGSOFT Software Engineering Notes, 30(2):1–36, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Y. Yang, X. Chen, G. Gopalakrishnan, and R. M. Kirby. Distributed dynamic partial order reduction based verification of threaded software. In Model Checking Software, pages 58–75. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. DistIA: a cost-effective dynamic impact analysis for distributed programs

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ASE '16: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering
      August 2016
      899 pages
      ISBN:9781450338455
      DOI:10.1145/2970276
      • General Chair:
      • David Lo,
      • Program Chairs:
      • Sven Apel,
      • Sarfraz Khurshid

      Copyright © 2016 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 25 August 2016

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate82of337submissions,24%

      Upcoming Conference

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader