The vocabulary problem in human-system communication
Communications of the ACM
Simplifying data integration: the design of the desert software development environment
Proceedings of the 18th international conference on Software engineering
A glimpse of expert programmers' mental imagery
ESP '97 Papers presented at the seventh workshop on Empirical studies of programmers
Program indentation and comprehensibility
Communications of the ACM
Programmers use slices when debugging
Communications of the ACM
Does Code Decay? Assessing the Evidence from Change Management Data
IEEE Transactions on Software Engineering
Managing crosscutting concerns during software evolution tasks: an inquisitive study
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Concern graphs: finding and describing concerns using structural program dependencies
Proceedings of the 24th International Conference on Software Engineering
Supporting aggregation in fine grained software configuration management
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
Hipikat: recommending pertinent software development artifacts
Proceedings of the 25th International Conference on Software Engineering
An examination of software engineering work practices
CASCON '97 Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research
"Constant, constant, multi-tasking craziness": managing multiple working spheres
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Designing the whyline: a debugging interface for asking questions about program behavior
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Representing concerns in source code
Representing concerns in source code
How Effective Developers Investigate Source Code: An Exploratory Study
IEEE Transactions on Software Engineering
Examining task engagement in sensor-based statistical models of human interruptibility
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Design requirements for more flexible structured editors from a study of programmers' text editing
CHI '05 Extended Abstracts on Human Factors in Computing Systems
Automatic generation of suggestions for program investigation
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Maintaining mental models: a study of developer work habits
Proceedings of the 28th international conference on Software engineering
The emergent structure of development tasks
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
JASPER: an Eclipse plug-in to facilitate software maintenance tasks
eclipse '06 Proceedings of the 2006 OOPSLA workshop on eclipse technology eXchange
Editorial: For the Special issue on Qualitative Software Engineering Research
Information and Software Technology
End user software engineering: CHI 2007 special interest group meeting
CHI '07 Extended Abstracts on Human Factors in Computing Systems
Information Needs in Collocated Software Development Teams
ICSE '07 Proceedings of the 29th international conference on Software Engineering
IEEE Transactions on Software Engineering
Program comprehension as fact finding
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
An analysis of developers' tasks using low-level, automatically collected data
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
An analysis of developers' tasks using low-level, automatically collected data
The 6th Joint Meeting on European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering: companion papers
Scents in Programs: Does Information Foraging Theory Apply to Program Maintenance?
VLHCC '07 Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing
Using information scent to model the dynamic foraging behavior of programmers in maintenance tasks
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
End user software engineering: chi'2008 special interest group meeting
CHI '08 Extended Abstracts on Human Factors in Computing Systems
Debugging reinvented: asking and answering why and why not questions about program behavior
Proceedings of the 30th international conference on Software engineering
Source-level debugging with the whyline
Proceedings of the 2008 international workshop on Cooperative and human aspects of software engineering
Answering common questions about code
Companion of the 30th international conference on Software engineering
More natural end-user software engineering
Proceedings of the 4th international workshop on End-user software engineering
Evaluating the usefulness of software visualization in supporting software comprehension activities
Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement
Automatic identification of key classes in a software system using webmining techniques
Journal of Software Maintenance and Evolution: Research and Practice
The effect of task order on the maintainability of object-oriented software
Information and Software Technology
Finding causes of program output with the Java Whyline
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
End user software engineering: CHI: 2009 special interest group meeting
CHI '09 Extended Abstracts on Human Factors in Computing Systems
SUITE '09 Proceedings of the 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation
Information needs in bug reports: improving cooperation between developers and users
Proceedings of the 2010 ACM conference on Computer supported cooperative work
Reactive information foraging for evolving goals
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Code bubbles: a working set-based interface for code understanding and maintenance
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
End user software engineering: CHI 2010 special interest group meeting
CHI '10 Extended Abstracts on Human Factors in Computing Systems
Dynamic and graphical web page breakpoints
Proceedings of the 19th international conference on World wide web
Recovering business rules from legacy source code for system modernization
RuleML'07 Proceedings of the 2007 international conference on Advances in rule interchange and applications
Developers ask reachability questions
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Code bubbles: rethinking the user interface paradigm of integrated development environments
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Mashup environments in software engineering
Proceedings of the 1st Workshop on Web 2.0 for Software Engineering
Supporting program comprehension with source code summarization
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
A research demonstration of code bubbles
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Developing and evaluating the code bubbles metaphor
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Extracting and answering why and why not questions about Java program output
ACM Transactions on Software Engineering and Methodology (TOSEM)
On the importance of understanding the strategies that developers use
Proceedings of the 2010 ICSE Workshop on Cooperative and Human Aspects of Software Engineering
Non-programmers identifying functionality in unfamiliar code: strategies and barriers
Journal of Visual Languages and Computing
Stacksplorer: understanding dynamic program behavior
UIST '10 Adjunct proceedings of the 23nd annual ACM symposium on User interface software and technology
CodePad: interactive spaces for maintaining concentration in programming environments
Proceedings of the 5th international symposium on Software visualization
A method for detecting unusual defects in enterprise system using model checking techniques
SEPADS'11 Proceedings of the 10th WSEAS international conference on Software engineering, parallel and distributed systems
Code Gestalt: a software visualization tool for human beings
CHI '11 Extended Abstracts on Human Factors in Computing Systems
Investigating how to effectively combine static concern location techniques
Proceedings of the 3rd International Workshop on Search-Driven Development: Users, Infrastructure, Tools, and Evaluation
Supporting software history exploration
Proceedings of the 8th Working Conference on Mining Software Repositories
Information foraging as a foundation for code navigation (NIER track)
Proceedings of the 33rd International Conference on Software Engineering
Searching, selecting, and synthesizing source code
Proceedings of the 33rd International Conference on Software Engineering
Intelligible TinyOS sensor systems: explanations for embedded software
CONTEXT'11 Proceedings of the 7th international and interdisciplinary conference on Modeling and using context
Stacksplorer: call graph navigation helps increasing code maintenance efficiency
Proceedings of the 24th annual ACM symposium on User interface software and technology
A qualitative human-centric evaluation of flexibility in middleware implementations
Empirical Software Engineering
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Blaze: supporting two-phased call graph navigation in source code
CHI '12 Extended Abstracts on Human Factors in Computing Systems
Analyzing and mining a code search engine usage log
Empirical Software Engineering
Measuring enforcement windows with symbolic trace interpretation: what well-behaved programs say
Proceedings of the 2012 International Symposium on Software Testing and Analysis
How do professional developers comprehend software?
Proceedings of the 34th International Conference on Software Engineering
Debugger canvas: industrial experience with the code bubbles paradigm
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 34th International Conference on Software Engineering
Concept location using formal concept analysis and information retrieval
ACM Transactions on Software Engineering and Methodology (TOSEM)
Cognitive architectures: a way forward for the psychology of programming
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Sando: an extensible local code search framework
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
How do software engineers understand code changes?: an exploratory study in industry
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
An Information Foraging Theory Perspective on Tools for Debugging, Refactoring, and Reuse Tasks
ACM Transactions on Software Engineering and Methodology (TOSEM)
Methodology Mashups: An Exploration of Processes Used to Maintain Software
Journal of Management Information Systems
The whats and hows of programmers' foraging diets
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
How tools in IDEs shape developers' navigation behavior
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Proceedings of the 2013 International Conference on Software Engineering
Temporal code completion and navigation
Proceedings of the 2013 International Conference on Software Engineering
Query quality prediction and reformulation for source code search: the refoqus tool
Proceedings of the 2013 International Conference on Software Engineering
Query quality prediction and reformulation for source code search: the refoqus tool
Proceedings of the 2013 International Conference on Software Engineering
Interactive record/replay for web application debugging
Proceedings of the 26th annual ACM symposium on User interface software and technology
Authoring multi-stage code examples with editable code histories
Proceedings of the 26th annual ACM symposium on User interface software and technology
Clustering navigation sequences to create contexts for guiding code navigation
Journal of Systems and Software
Dictionary-based query recommendation for local code search
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Injecting mechanical faults to localize developer faults for evolving software
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Degree-of-knowledge: Modeling a developer's knowledge of code
ACM Transactions on Software Engineering and Methodology (TOSEM)
Transient or permanent fisheye views: a comparative evaluation of source code interfaces
Information Visualization
Teaching system-on-chip design with FPGAs
Proceedings of the 10th FPGAworld Conference
Dictionary-based query recommendation for local code search
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Hi-index | 0.00 |
Much of software developers' time is spent understanding unfamiliar code. To better understand how developers gain this understanding and how software development environments might be involved, a study was performed in which developers were given an unfamiliar program and asked to work on two debugging tasks and three enhancement tasks for 70 minutes. The study found that developers interleaved three activities. They began by searching for relevant code both manually and using search tools; however, they based their searches on limited and misrepresentative cues in the code, environment, and executing program, often leading to failed searches. When developers found relevant code, they followed its incoming and outgoing dependencies, often returning to it and navigating its other dependencies; while doing so, however, Eclipse's navigational tools caused significant overhead. Developers collected code and other information that they believed would be necessary to edit, duplicate, or otherwise refer to later by encoding it in the interactive state of Eclipse's package explorer, file tabs, and scroll bars. However, developers lost track of relevant code as these interfaces were used for other tasks, and developers were forced to find it again. These issues caused developers to spend, on average, 35 percent of their time performing the mechanics of navigation within and between source files. These observations suggest a new model of program understanding grounded in theories of information foraging and suggest ideas for tools that help developers seek, relate, and collect information in a more effective and explicit manner.