Abstract
Before performing a modification task, a developer usually has to investigate the source code of a system to understand how to carry out the task. Discovering the code relevant to a change task is costly because it is an inherently human activity whose success depends on a large number of unpredictable factors, such as intuition and luck. Although studies have shown that effective developers tend to explore a program by following structural dependencies, no methodology is available to guide their navigation through the typically hundreds of dependency paths found in a non-trivial program. In this paper, we propose a technique to automatically propose and rank program elements that are potentially interesting to a developer investigating source code. Our technique is based on an analysis of the topology of structural dependencies in a program. It takes as input a set of program elements of interest to a developer and produces a fuzzy set describing other elements of potential interest. Empirical evaluation of our technique indicates that it can help developers quickly select program elements worthy of investigation while avoiding less interesting ones.
- H. Agrawal and J. R. Horgan. Dynamic program slicing. In Proceedings of the Conference on Programming Language Design and Implementation, pages 246--256, 1990. Google ScholarDigital Library
- G. Antoniol, G. Canfora, A. De Lucia, and E. Merlo. Recovering code to documentation links in OO systems. In Proceedings of the 6th Working Conference on Reverse Engineering, pages 136--144, 1999. Google ScholarDigital Library
- T. J. Biggerstaff, B. G. Mitbander, and D. E. Webster. Program understanding and the concept assignment problem. Communications of the ACM, 37(5):72--82, 1994. Google ScholarDigital Library
- B. W. Boehm. Software engineering. IEEE Transactions on Computers, 12(25):1226--1242, 1976.Google ScholarDigital Library
- K. Chen and V. Rajlich. Case study of feature location using dependence graph. In Proceedings of the 8th International Workshop on Program Comprehension, pages 241--247, 2000. Google ScholarDigital Library
- A. Egyed. Resolving uncertainties during trace analysis. In Proceedings of the 12 International Symposium on the Foundations of Software Engineering, pages 3--12, 2004. Google ScholarDigital Library
- T. Eisenbarth, R. Koschke, and D. Simon. Locating features in source code. IEEE Transactions on Software Engineering, 29(3):210--224, 2003. Google ScholarDigital Library
- K. B. Gallagher. Visual impact analysis. In Proceedings of the International Conference on Software Maintenance, pages 52--58, 1996. Google ScholarDigital Library
- K. B. Gallagher and J. R. Lyle. Using program slicing in software maintenance. IEEE Transactions on Software Engineering, 17(8), 1991. Google ScholarDigital Library
- T. Gyimóthy, Árpád Beszédes, and I. Forgács. An efficient relevant slicing method for debugging. In Proceedings of the 7th European Software Engineering Conference and 7th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, pages 303--321, 1999. Google ScholarDigital Library
- D. Jackson and E. J. Rollins. A new model of program dependence for reverse engineering. In Proceedings of the 2rd ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 2--10, 1994. Google ScholarDigital Library
- M. Kersten and G. C. Murphy. Mylar: a degree-of-interest model for IDEs. In Proceedings of the 4th Conference on Aspect-Oriented Software Development, pages 159--168, 2005. Google ScholarDigital Library
- P. Kruchten. The Rational Unified Process: An Introduction. Addison-Wesley, 2nd edition, 2000. Google ScholarDigital Library
- Object Technology International, Inc. Eclipse platform technical overview. White Paper, 2001.Google Scholar
- M. P. Robillard, W. Coelho, and G. C. Murphy. How effective developers investigate source code: An exploratory study. IEEE Transactions on Software Engineering, 30(12):889--903, 2004. Google ScholarDigital Library
- M. P. Robillard and G. C. Murphy. Concern Graphs: Finding and describing concerns using structural program dependencies. In Proceedings of the 24th International Conference on Software Engineering, 2002. Google ScholarDigital Library
- M. P. Robillard and G. C. Murphy. Automatically inferring concern code from program investigation activities. In Proceedings of the 18th International Conference on Automated Software Engineering, pages 225--234, 2003.Google ScholarDigital Library
- G. Snelting. Concept analysis---a new framework for program understanding. In Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pages 1--10, 1998. Google ScholarDigital Library
- F. Tip. A survey of program slicing techniques. Journal of Programming Languages, 3(3):121--189, 1995.Google Scholar
- P. Tonella, G. Antoniol, R. Fiutem, and E. Merlo. Variable precision reaching definitions analysis for software maintenance. In Proceedings of the 1st Euromicro Conference on Software Maintenance and Reengineering, pages 60--67, 1997. Google ScholarDigital Library
- M. Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4):352--357, 1984.Google ScholarDigital Library
- N. Wilde and M. C. Scully. Software reconnaissance: Mapping program features to code. Software Maintenance: Research and Practice, 7:49--62, 1995. Google ScholarDigital Library
- A. T. Ying, G. C. Murphy, R. Ng, and M. C. Chu-Carroll. Predicting source code changes by mining change history. IEEE Transactions on Software Engineering, 30(9):574--586, 2004. Google ScholarDigital Library
- W. Zhao, L. Zhang, Y. Liu, J. Sun, and F. Yang. SNIAFL: Towards a static non-interactive approach to feature location. In Proceedings of the 26th International Conference on Software Engineering, 2004. Google ScholarDigital Library
- H.-J. Zimmermann. Fuzzy Set Theory and Its Applications. Kluwer Academic Publishers, third edition, 1996. Google ScholarDigital Library
- T. Zimmermann, P. Weiβgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. In Proceedings of the 26th International Conference on Software Engineering, pages 563--572, 2004. Google ScholarDigital Library
Index Terms
- Automatic generation of suggestions for program investigation
Recommendations
Automatic generation of suggestions for program investigation
ESEC/FSE-13: Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineeringBefore performing a modification task, a developer usually has to investigate the source code of a system to understand how to carry out the task. Discovering the code relevant to a change task is costly because it is an inherently human activity whose ...
Topology analysis of software dependencies
Before performing a modification task, a developer usually has to investigate the source code of a system to understand how to carry out the task. Discovering the code relevant to a change task is costly because it is a human activity whose success ...
Using Bug Report Similarity to Enhance Bug Localisation
WCRE '12: Proceedings of the 2012 19th Working Conference on Reverse EngineeringBug localisation techniques are proposed as a method to reduce the time developers spend on maintenance, allowing them to quickly find source code relevant to a bug. Some techniques are based on information retrieval methods, treating the source code as ...
Comments