ABSTRACT
This paper reports on the design and implementation of Chianti, a change impact analysis tool for Java that is implemented in the context of the Eclipse environment. Chianti analyzes two versions of an application and decomposes their difference into a set of atomic changes. Change impact is then reported in terms of affected (regression or unit) tests whose execution behavior may have been modified by the applied changes. For each affected test, Chianti also determines a set of affecting changes that were responsible for the test's modified behavior. This latter step of isolating the changes that induce the failure of one specific test from those changes that only affect other tests can be used as a debugging technique in situations where a test fails unexpectedly after a long editing session. We evaluated Chianti on a year (2002) of CVS data from M. Ernst's Daikon system, and found that, on average, 52% of Daikon's unit tests are affected. Furthermore, each affected unit test, on average, is affected by only 3.95% of the atomic changes. These findings suggest that our change impact analysis is a promising technique for assisting developers with program understanding and debugging.
- Bates, S., and Horwitz, S. Incremental program testing using program dependence graphs. In Proc. of the ACM SIGPLAN-SIGACT Conf. on Principles of Programming Languages (POPL'93) (Charleston, SC, 1993), pp. 384--396. Google ScholarDigital Library
- Binkley, D. Semantics guided regression test cost reduction. IEEE Trans. on Software Engineering 23, 8 (August 1997). Google ScholarDigital Library
- Bohner, S. A., and Arnold, R. S. An introduction to software change impact analysis. In Software Change Impact Analysis, S. A. Bohner and R. S. Arnold, Eds. IEEE Computer Society Press, 1996, pp. 1--26.Google Scholar
- Chen, Y., Rosenblum, D., and Vo, K. Testtube: A system for selective regression testing. In Proc. of the 16th Int. Conf. on Software Engineering (1994), pp. 211--220. Google ScholarDigital Library
- Eidorff, P. H., Henglein, F., Mossin, C., Niss, H., Sorensen, M. H., and Tofte, M. AnnoDomini: From type theory to year 2000 conversion. In Proc. of the ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages (January 1999), pp. 11--14. Google ScholarDigital Library
- Elbaum, S., Kallakuri, P., Malishevsky, A. G., Rothermel, G., and Kanduri, S. Understanding the effects of changes on the cost-effectiveness of regression testing techniques. Journal of Software Testing, Verification, and Reliability (2003). To appear.Google Scholar
- Ernst, M. D. Dynamically discovering likely program invariants. PhD thesis, University of Washington, 2000. Google ScholarDigital Library
- Gallagher, K., and Lyle, J. R. Using program slicing in software maintenance. IEEE Trans. on Software Engineering 17 (1991). Google ScholarDigital Library
- Gosling, J., Joy, B., Steele, G., and Bracha, G. The Java Language Specification (Second Edition). Addison-Wesley, 2000. Google ScholarDigital Library
- Harrold, M. J., Jones, J. A., Li, T., Liang, D., Orso, A., Pennings, M., Sinha, S., Spoon, S. A., and Gujarathi, A. Regression test selection for Java software. In Proc. of the ACM SIGPLAN Conf. on Object Oriented Programming Languages and Systems (OOPSLA'01) (October 2001), pp. 312--326. Google ScholarDigital Library
- Kung, D. C., Gao, J., Hsia, P., Wen, F., Toyoshima, Y., and Chen, C. Change impact identification in object oriented software maintenance. In Proc. of the International Conf. on Software Maintenance (1994), pp. 202--211. Google ScholarDigital Library
- Larus, J. Whole program paths. In Proc. of the ACM SIGPLAN Conf. on Programming Language Design and Implementation (May 1999), pp. 1--11. Google ScholarDigital Library
- Law, J., and Rothermel, G. Whole program path-based dynamic impact analysis. In Proc. of the International Conf. on Software Engineering (2003), pp. 308--318. Google ScholarDigital Library
- Milanova, A., Rountev, A., and Ryder, B. G. Precise call graphs for C programs with function pointers. Journal for Automated Software Engineering (2004). Special issue on Source Code Analysis and Manipulation. Google ScholarDigital Library
- Orso, A., Apiwattanapong, T., and Harrold, M. J. Leveraging field data for impact analysis and regression testing. In Proc. of European Software Engineering Conf. and ACM SIGSOFT Symp. on the Foundations of Software Engineering (ESEC/FSE'03) (Helsinki, Finland, September 2003). Google ScholarDigital Library
- Orso, A., Apiwattanapong, T., Law, J., Rothermel, G., and Harrold, M. J. An empirical comparison of dynamic impact analysis algorithms. In Proc. of the International Conf. on Software Engineering (ICSE'04) (Edinburgh, Scotland, 2004), pp. 491--500. Google ScholarDigital Library
- Orso, A., Shi, N., and Harrold, M. J. Scaling regression testing to large software systems. In Proceedings of the 12th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE 2004) (Newport Beach, CA, 2004). To appear. Google ScholarDigital Library
- Ramalingam, G., Field, J., and Tip, F. Aggregate structure identification and its application to program analysis. In Proc. of the ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages (January 1999), pp. 119--132. Google ScholarDigital Library
- Ren, X., Shah, F., Tip, F., Ryder, B. G., Chesley, O., and Dolby, J. Chianti: A prototype change impact analysis tool for Java. Tech. Rep. DCS-TR-533, Rutgers University Department of Computer Science, September 2003.Google Scholar
- Rothermel, G., and Harrold, M. J. A safe, efficient regression test selection technique. ACM Trans. on Software Engineering and Methodology 6, 2 (April 1997), 173--210. Google ScholarDigital Library
- Ryder, B. G., and Tip, F. Change impact for object oriented programs. In Proc. of the ACM SIGPLAN/SIGSOFT Workshop on Program Analysis and Software Testing (PASTE01) (June 2001). Google ScholarDigital Library
- Sarma, A., Noroozi, Z., and van der Hoek, A. Palantir: Raising awareness among configuration management workspaces. In Proc. of the International Conf. on Software Engineering (2003), pp. 444--454. Google ScholarDigital Library
- Steyaert, P., Lucas, C., Mens, K., and D'Hondt, T. Reuse contracts: Managing the evolution of reusable assets. In Proc. of the Conf. on Object-Oriented Programming, Systems, Languages and Applications (1996), pp. 268--285. Google ScholarDigital Library
- Thione, G. L. Detecting semantic conflicts in parallel changes, December 2002. Masters Thesis, Department of Electrical and Computer Engineering, University of Texas, Austin.Google Scholar
- Thione, G. L., and Perry, D. E. Parallel changes: Detecting semantic interference. Tech. Rep. ESEL-2003-DSI-1, Experimental Software Engineering Laboratory, University of Texas, Austin, September 2003.Google Scholar
- Tip, F. A survey of program slicing techniques. J. of Programming Languages 3, 3 (1995), 121--189.Google Scholar
- Tonella, P. Using a concept lattice of decomposition slices for program understanding and impact analysis. IEEE Trans. on Software Engineering 29, 6 (2003), 495--509. Google ScholarDigital Library
- Zeller, A. Yesterday my program worked. Today, it does not. Why? In Proc. of the 7th European Software Engineering Conf./7th ACM SIGSOFT Symp. on the Foundations of Software Engineering (ESEC/FSE'99) (Toulouse, France, 1999), pp. 253--267. Google ScholarDigital Library
Index Terms
- Chianti: a tool for change impact analysis of java programs
Recommendations
Chianti: a tool for change impact analysis of java programs
OOPSLA '04This paper reports on the design and implementation of Chianti, a change impact analysis tool for Java that is implemented in the context of the Eclipse environment. Chianti analyzes two versions of an application and decomposes their difference into a ...
Chianti: a change impact analysis tool for java programs
ICSE '05: Proceedings of the 27th international conference on Software engineeringChianti is a change impact analysis tool for Java that is implemented in the context of the Eclipse environment. Chianti analyzes two versions of a Java program, decomposes their difference into a set of atomic changes, and a partial order inter-...
A large-scale study of call graph-based impact prediction using mutation testing
In software engineering, impact analysis involves predicting the software elements (e.g., modules, classes, methods) potentially impacted by a change in the source code. Impact analysis is required to optimize the testing effort. In this paper, we ...
Comments