Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2597008.2597151acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

A diagnosis-based approach to software comprehension

Published: 02 June 2014 Publication History

Abstract

Program comprehension is a time-consuming task performed during the process of reusing, reengineering, and enhancing existing systems. Currently, there are tools to assist in program comprehension by means of dynamic analysis, but, e.g., most cannot identify the topology and the interactions of a certain functionality in need of change, especially when used in large, real-world software applications. We propose an approach, coined Spectrum-based Feature Comprehension (SFC), that borrows techniques used for automatic software-fault-localization, which were proven to be effective even when debugging large applications in resource-constrained environments. SFC analyses the program by exploiting run-time information from test case executions to compute the components that are important for a given feature (and whether a component is used to implement just one feature or more), helping software engineers to understand how a program is structured and what the functionality's dependencies are. We present a toolset, coined Pangolin, that implements SFC and displays its report to the user using an intuitive visualization. A user study with the open-source application Rhino is presented, demonstrating the efficiency of Pangolin in locating the components that should be inspected when changing a certain functionality.

References

[1]
T. A. Corbi. Program understanding: challenge for the 1990’s. IBM Syst. J., 28(2):294–306, 1989.
[2]
R. Tiarks. What programmers really do - an observational study. Softwaretechnik-Trends, 31(2), 2011.
[3]
D.B. Lange and Y. Nakamura. Object-oriented program tracing and visualization. Computer, 30(5):63–70, 1997.
[4]
M. Renieris and S. P. Reiss. Almost: exploring program traces. In Proceedings of Workshop on New Paradigms in Information Visualization and Manipulation (NPIVM’99), pages 70–77, 1999.
[5]
W. De Pauw, D. Lorenz, J. Vlissides, and M. Wegman. Execution patterns in object-oriented visualization. In Proceedings Conference on Object-Oriented Technologies and Systems (COOTS’98), pages 219–234, 1998.
[6]
S. P. Reiss and M. Renieris. Encoding program executions. In Proceedings of International Conference on Software Engineering (ICSE’01), pages 221–230, 2001.
[7]
O. Greevy, M. Lanza, and C. Wysseier. Visualizing live software systems in 3D. In Proceedings of ACM symposium on Software Visualization (SoftVis ’06), pages 47–56, 2006.
[8]
A. Zaidman. Scalability solutions for program comprehension through dynamic analysis. In Proceedings of European Conference on Software Maintenance and Reengineering (CSMR 2006), pages 327–330, 2006.
[9]
R. Abreu, P. Zoeteweij, R. Golsteijn, and A.J.C. van Gemund. A practical evaluation of spectrum-based fault localization. Journal of Systems and Software, 82(11):1780–1792, 2009.
[10]
P. Pirolli. Information Foraging Theory: Adaptive Interaction with Information. Oxford University Press, Inc., New York, NY, USA, 1 edition, 2007.
[11]
R. Abreu, P. Zoeteweij, and A.J.C. van Gemund. On the accuracy of spectrum-based fault localization. In Proceedings of the Testing: Academic and Industrial Conference Practice and Research Techniques – Mutation (Mutation’07), pages 89–98, 2007.
[12]
T. Reps, T. Ball, M. Das, and J. Larus. The use of program profiling for software maintenance with applications to the year 2000 problem. In Proceedings of ACM SIGSOFT international symposium on Foundations of software engineering (ESEC’97/FSE’5), pages 432–449, 1997.
[13]
M.J. Harrold, G. Rothermel, K. Sayre, R. Wu, and L. Yi. An empirical investigation of the relationship between fault-revealing test behavior and differences in program spectra. STVR Journal of Software Testing, Verification, and Reliability, (3):171–194, 2000.
[14]
A.K. Jain and R.C. Dubes. Algorithms for clustering data. Prentice-Hall, Inc., 1988.
[15]
R. Abreu, P. Zoeteweij, and A.J.C. van Gemund. An evaluation of similarity coefficients for software fault localization. In Proceedings of Pacific Rim International Symposium on Dependable Computing (PRDC’06), pages 39–46, 2006.
[16]
A. da Silva Meyer, A.A.F. Garcia, A.P. de Souza, and C.L. de Souza. Comparison of similarity coefficients used for cluster analysis with dominant markers in maize (zea mays l.). Genetics and Molecular Biology, 27:83–91, 2004.
[17]
L. Naish, H. Lee, and K. Ramamohanarao. A model for spectra-based software diagnosis. ACM Transactions on Software Engineering Methodology, 20(3):11, 2011.
[18]
T. Janssen, R. Abreu, and A.J.C. van Gemund. Zoltar: A Toolset for Automatic Fault Localization. In Proceedings of International Conference on Automated Software Engineering (ASE’09), pages 662–664, 2009.
[19]
J. Campos, A. Riboira, A. Perez, and R. Abreu. GZoltar: An eclipse plug-in for testing and debugging. In Proceedings of International Conference on Automated Software Engineering (ASE’12), pages 378–381, 2012.
[20]
C. Gouveia, J. Campos, and R. Abreu. Using HTML5 Visualizations in Software Fault Localization. In Proceedings of IEEE Working Conference on Software Visualization (VISSOFT’13), pages 1–10, 2013.
[21]
Jose Campos and Rui Abreu. Leveraging a Constraint Solver for Minimizing Test Suites. In Proceedings of the 13th International Conference on Quality Software (QSIC ’13), pages 253–259, 2013.
[22]
D. Sjøberg, T. Dyb˚ a, B. Anda, and J. Hannay. Building theories in software engineering. In Guide to Advanced Empirical Software Engineering, pages 312–336. Springer London, 2008.
[23]
J. Lawrance, C. Bogart, M. Burnett, R. Bellamy, K. Rector, and S. Fleming. How programmers debug, revisited: An information foraging theory perspective. IEEE Transactions on Software Engineering, 39(2):197–215, 2013.
[24]
S. Fleming, C. Scaffidi, D. Piorkowski, M. Burnett, R. Bellamy, J. Lawrance, and I. Kwan. An information foraging theory perspective on tools for debugging, refactoring, and reuse tasks. ACM Transactions on Software Engineering and Methodology (TOSEM), 22(2):14:1–14:41, 2013.
[25]
C. Manning, P. Raghavan, and H. Schütze. Introduction to information retrieval. Cambridge University Press, 2008.
[26]
F. Wilcoxon. Individual comparisons by ranking methods. Biometrics bulletin, 1(6):80–83, 1945.
[27]
B. Cornelissen, A. Zaidman, A. van Deursen, L. Moonen, and R. Koschke. A systematic survey of program comprehension through dynamic analysis. IEEE Transactions on Software Engineering, 35(5):684–702, 2009.
[28]
B. Dit, M. Revelle, M. Gethers, and D. Poshyvanyk. Feature location in source code: a taxonomy and survey. Journal of Software: Evolution and Process, 25(1):53–95, 2013.
[29]
W. De Pauw, R. Helm, D. Kimelman, and J. Vlissides. Visualizing the behavior of object-oriented systems. In Proceedings of Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’93), pages 326–337, 1993.
[30]
Steven P. Reiss. Visualizing java in action. In Proceedings of ACM Symposium on Software Visualization (SoftVis’03), pages 57–65, 2003.
[31]
S. Ducasse, M. Lanza, and R. Bertuli. High-level polymetric views of condensed run-time information. In Proceedings of the Conference on Software Maintenance and Reengineering, pages 309–318, 2004.
[32]
B. Cornelissen, D. Holten, A. Zaidman, L. Moonen, J. J. van Wijk, and A. van Deursen. Understanding execution traces using massive sequence and circular bundle views. In Proceedings of International Conference on Program Comprehension (ICPC’07), pages 49–58, 2007.
[33]
B. Cornelissen, A. Zaidman, D. Holten, L. Moonen, A. van Deursen, and J. J. van Wijk. Execution trace analysis through massive sequence and circular bundle views. Journal of Systems and Software, 81(12):2252–2268, 2008.
[34]
M. Pinzger, K. Grafenhain, P. Knab, and H.C. Gall. A tool for visual understanding of source code dependencies. In Proceedings of International Conference on Program Comprehension (ICPC’08), pages 254–259, 2008.
[35]
A.R. Yazdanshenas and L. Moonen. Tracking and visualizing information flow in component-based systems. In Proceedings of International Conference on Program Comprehension (ICPC’12), pages 143–152, 2012.
[36]
T. Ishio, S. Etsuda, and K. Inoue. A lightweight visualization of interprocedural data-flow paths for source code reading. In Proceedings of International Conference on Program Comprehension (ICPC’12), pages 37–46, 2012.
[37]
J. Trümper, J. Döllner, and A. Telea. Multiscale visual comparison of execution traces. In Proceedings of IEEE 21st International Conference on Program Comprehension (ICPC’13), pages 53–62, 2013.
[38]
J. Maletic, D. Mosora, C. Newman, M. Collard, A.Sutton, and B. Robinson. Mosaicode: Visualizing large scale software: A tool demonstration. In Proceedings of the 6th IEEE International Workshop on Visualizing Software for Understanding and Analysis, VISSOFT 2011, pages 1–4, 2011.
[39]
M. Stengel, Mathias Frisch, S. Apel, J. Feigenspan, C. Kästner, and Raimund Dachselt. View infinity: A zoomable interface for feature-oriented software development. In Proceedings of International Conference on Software Engineering (ICSE’11), pages 1031–1033, 2011.
[40]
N. Wilde, J.A. Gomez, T. Gust, and D. Strasburg. Locating user functionality in old code. In Proceedings of Conference on Software Maintenance, pages 200–205, 1992.
[41]
N. Wilde and M. Scully. Software reconnaissance: Mapping program features to code. Journal of Software Maintenance: Research and Practice, 7(1):49–62, 1995.
[42]
A.J. Ko, B.A. Myers, M.J. Coblenz, and H.H. Aung. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Transactions on Software Engineering, 32(12):971–987, 2006.
[43]
P. Romero, B. du Boulay, R. Cox, R. Lutz, and S. Bryant. Debugging strategies and tactics in a multi-representation software environment. International Journal of Man-Machine Studies, 65(12):992–1009, 2007.
[44]
D. Piorkowski, S. Fleming, C. Scaffidi, C. Bogart, M. Burnett, B. John, R. Bellamy, and C. Swart. Reactive information foraging: an empirical investigation of theory-based recommender systems for programmers. In Proceedings of Conference on Human Factors in Computing Systems (CHI’12), pages 1471–1480, 2012.
[45]
E. Chi, P. Pirolli, K. Chen, and J. Pitkow. Using information scent to model user information needs and actions and the web. In Proceedings of Conference on Human Factors in Computing Systems (CHI’01), pages 490–497, 2001.
[46]
J. Spool, C. Perfetti, and D. Brittan. Designing for the scent of information. User Interface Engineering, 2004.
[47]
L. Moreno, J. Aponte, G. Sridhara, A. Marcus, L. Pollock, and K. Vijay-Shanker. Automatic generation of natural language summaries for java classes. In Proceedings of IEEE 21st International Conference on Program Comprehension (ICPC’13), pages 23–32, 2013.
[48]
N. Alhindawi, N. Dragan, M. Collard, and J. Maletic. Improving feature location by enhancing source code with stereotypes. In Proceedings of International Conference on Software Maintenance, Eindhoven (ICSM’13), pages 300–309, 2013.

Cited By

View all
  • (2024)To Search or To Gen? Exploring the Synergy between Generative AI and Web Search in ProgrammingExtended Abstracts of the 2024 CHI Conference on Human Factors in Computing Systems10.1145/3613905.3650867(1-8)Online publication date: 11-May-2024
  • (2023)Analysing the Impact of Workloads on Modeling the Performance of Configurable Software Systems2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)10.1109/ICSE48619.2023.00176(2085-2097)Online publication date: May-2023
  • (2023)Spectrum-based feature localization for families of systemsJournal of Systems and Software10.1016/j.jss.2022.111532195:COnline publication date: 1-Jan-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICPC 2014: Proceedings of the 22nd International Conference on Program Comprehension
June 2014
325 pages
ISBN:9781450328791
DOI:10.1145/2597008
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]

Sponsors

In-Cooperation

  • TCSE: IEEE Computer Society's Tech. Council on Software Engin.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 02 June 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Fault Diagnosis
  2. Program Comprehension
  3. Software Evolution and Maintenance

Qualifiers

  • Article

Conference

ICSE '14
Sponsor:

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)2
Reflects downloads up to 26 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)To Search or To Gen? Exploring the Synergy between Generative AI and Web Search in ProgrammingExtended Abstracts of the 2024 CHI Conference on Human Factors in Computing Systems10.1145/3613905.3650867(1-8)Online publication date: 11-May-2024
  • (2023)Analysing the Impact of Workloads on Modeling the Performance of Configurable Software Systems2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)10.1109/ICSE48619.2023.00176(2085-2097)Online publication date: May-2023
  • (2023)Spectrum-based feature localization for families of systemsJournal of Systems and Software10.1016/j.jss.2022.111532195:COnline publication date: 1-Jan-2023
  • (2021)Spectrum-based feature localizationProceedings of the 25th ACM International Systems and Software Product Line Conference - Volume A10.1145/3461001.3473065(126-130)Online publication date: 6-Sep-2021
  • (2021)The Shoutcasters, the Game Enthusiasts, and the AI: Foraging for Explanations of Real-time Strategy PlayersACM Transactions on Interactive Intelligent Systems10.1145/339604711:1(1-46)Online publication date: 15-Mar-2021
  • (2021)Version Control Systems: An Information Foraging PerspectiveIEEE Transactions on Software Engineering10.1109/TSE.2019.293129647:8(1644-1655)Online publication date: 1-Aug-2021
  • (2019)Towards Effective Foraging by Data Scientists to Find Past Analysis ChoicesProceedings of the 2019 CHI Conference on Human Factors in Computing Systems10.1145/3290605.3300322(1-13)Online publication date: 2-May-2019
  • (2019)PangolinProceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE.2019.00119(1130-1133)Online publication date: 10-Nov-2019
  • (2019)Code coverage differences of Java bytecode and source code instrumentation toolsSoftware Quality Journal10.1007/s11219-017-9389-z27:1(79-123)Online publication date: 1-Mar-2019
  • (2018)How the Experts Do ItProceedings of the 2018 CHI Conference on Human Factors in Computing Systems10.1145/3173574.3174136(1-12)Online publication date: 21-Apr-2018
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media