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.
- 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 ScholarDigital Library
- Apache. Voldemort. https://github.com/voldemort, 2015.Google Scholar
- Apache. ZooKeeper. https://zookeeper.apache.org/, 2015.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Bamberg University. Open Chord. http://sourceforge.net/projects/open-chord/, 2015.Google Scholar
- S. S. Barpanda and D. P. Mohapatra. Dynamic slicing of distributed object-oriented programs. IET software, 5(5):425–433, 2011.Google ScholarCross Ref
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- H. Cai and D. Thain. Distea: Efficient dynamic impact analysis for distributed systems. arXiv preprint arXiv:1604.04638, 2016.Google Scholar
- 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 ScholarDigital Library
- G. Coulouris, J. Dollimore, T. Kindberg, and G. Blair. Distributed Systems: Concepts and Design. Addison-Wesley Publishing Company, 5th edition, 2011. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- D. Giffhorn and C. Hammer. Precise slicing of concurrent programs. Automated Software Engineering, 16(2):197–234, 2009. Google ScholarDigital Library
- GoogleCode. MultiChat. https://code.google.com/p/multithread-chat-server/, 2015.Google Scholar
- D. Goswami and R. Mall. Dynamic slicing of concurrent programs. In IEEE International Conference on High Performance Computing, pages 15–26. 2000. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- M. Kamkar and P. Krajina. Dynamic slicing of distributed programs. In Proceedings of IEEE International Conference on Software Maintenance, pages 222–229, 1995. Google ScholarDigital Library
- F. Kon and R. H. Campbell. Dependence management in component-based distributed systems. IEEE concurrency, 8(1):26–36, 2000. Google ScholarDigital Library
- 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 ScholarDigital Library
- B. Korel and R. Ferguson. Dynamic slicing of distributed programs. Applied Mathematics and Computer Science, 2(2):199–215, 1992.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 Scholar
- L. Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7):558–565, 1978. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- F. Mattern. Virtual time and global states of distributed systems. Parallel and Distributed Algorithms, 1(23):215–226, 1989.Google Scholar
- 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 ScholarDigital Library
- G. Mühl, L. Fiege, and P. Pietzuch. Distributed event-based systems, volume 1. Springer, 2006. Google ScholarDigital Library
- G. C. Murphy and D. Notkin. Lightweight lexical source model extraction. ACM Transactions on Software Engineering and Methodology, 5(3):262–292, 1996. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Oracle. Java NIO. http://docs.oracle.com/javase/7/docs/api/ java/nio/package-summary.html, 2015.Google Scholar
- Oracle. Java Socket I/O. http: //docs.oracle.com/javase/7/docs/api/java/net/Socket.html, 2015.Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- V. Rajlich. Changing the paradigm of software engineering. Communications of the ACM, 49(8):67–70, 2006. Google ScholarDigital Library
- V. Rajlich. Software evolution and maintenance. In Proceedings of the Conference on the Future of Software Engineering, pages 133–144, 2014. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- SourceForge. NioEcho. http: //rox-xmlrpc.sourceforge.net/niotut/index.html#Thecode, 2015.Google Scholar
- 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 ScholarDigital Library
- The Freenet team. The Free Network. https://freenetproject.org/, 2015.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
Index Terms
- DistIA: a cost-effective dynamic impact analysis for distributed programs
Recommendations
A comprehensive study of the predictive accuracy of dynamic change-impact analysis
We comprehensively study the predictive accuracy of dynamic change-impact analysis.We assess this accuracy with large numbers of both artificial and repository changes.We found that dynamic impact analyses can suffer from both low precision and low ...
Efficient and precise dynamic impact analysis using execute-after sequences
ICSE '05: Proceedings of the 27th international conference on Software engineeringAs software evolves, impact analysis estimates the potential effects of changes, before or after they are made, by identifying which parts of the software may be affected by such changes. Traditional impact-analysis techniques are based on static ...
Incremental service level agreements violation handling with time impact analysis
This research addresses a critical issue of service level agreement (SLA) violation handling, i.e., time constraint violation related to service-based systems (SBS). Whenever an SLA violation occurs to a service, it can potentially impact dependent ...
Comments