Results 1 - 10
of
22
Easing program comprehension by sharing navigation data
- in Proc. VL/HCC
, 2005
"... Large software projects often require a programmer to make changes to unfamiliar source code. This paper describes a set of tools, called Team Tracks, designed to ease program comprehension by showing the source code navigation patterns of fellow development team members. One technique shows a list ..."
Abstract
-
Cited by 29 (2 self)
- Add to MetaCart
Large software projects often require a programmer to make changes to unfamiliar source code. This paper describes a set of tools, called Team Tracks, designed to ease program comprehension by showing the source code navigation patterns of fellow development team members. One technique shows a list of Related Items, given that the user is viewing a given method or class. Another technique shows the Favorite Classes, by showing a class hierarchy view that hides less frequently visited classes, methods, and members. Two user studies, a laboratory study and a field study, were run to evaluate the effectiveness of these techniques. The results of the two studies demonstrate that sharing navigation data can improve program comprehension and are subjectively preferred by users.
Asking and answering questions during a programming change task
- In Transactions on Software Engineering (TSE
, 2008
"... Despite significant existing empirical work, little is known about the specific kinds of questions programmers ask when evolving a code base. Understanding precisely what information a programmer needs about the code base as they work is key to determining how to better support the activity of progr ..."
Abstract
-
Cited by 20 (2 self)
- Add to MetaCart
Despite significant existing empirical work, little is known about the specific kinds of questions programmers ask when evolving a code base. Understanding precisely what information a programmer needs about the code base as they work is key to determining how to better support the activity of programming. The goal of this research is to provide an empirical foundation for tool design based on an exploration of what programmers need to understand about a code base and of how they use tools to discover that information. To this end, we undertook two qualitative studies of programmers performing change tasks to medium to large sized programs. One study involved newcomers working on assigned change tasks to a mediumsized code base. The other study involved industrial programmers working on their own change tasks to code with which they had experience. The focus of our analysis has been on what information a programmer needs to know about a code base while performing a change task and also on how they go about discovering that information. Based on a systematic analysis of the data from these user studies as well as an analysis of the support that current programming tools provide for these activities, this research makes four key contributions: (1) a catalog of 44 types of questions programmers ask, (2) a categorization of those questions into four categories based on the kind and scope of information needed to answer a question, (3) a description of important context for the process of answering questions, and (4) a description of support that is missing from current programming tools.
Theories, Methods and Tools in Program Comprehension : Past, Present and Future
- in Proceedings 13th International Workshop on Program Comprehension (IWPC 2005), St. Louis, MO., May 15
"... Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers comprehend software, as well as the tools that are used to assist in comprehension tasks. During this talk I will review some of the key cognitive theories of program compreh ..."
Abstract
-
Cited by 17 (0 self)
- Add to MetaCart
Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers comprehend software, as well as the tools that are used to assist in comprehension tasks. During this talk I will review some of the key cognitive theories of program comprehension that have emerged over the past thirty years. Using these theories as a canvas, I will then explore how tools that are popular today have evolved to support program comprehension. Specifically, I will discuss how the theories and tools are related and reflect on the research methods that were used to construct the theories and evaluate the tools. The reviewed theories and tools will be further differentiated according to human characteristics, program characteristics, and the context for the various comprehension tasks. Finally, I will predict how these characteristics will change in the future and speculate on how a number of important research directions could lead to improvements in program comprehension tools and methods. 1.
Relo: Helping Users Manage Context during Interactive Exploratory Visualization of Large Codebases
- Visual Languages and Human-Centric Computting (VL/ HCC
, 2006
"... As software systems grow in size and use more third-party libraries and frameworks, the need for developers to understand unfamiliar large codebases is rapidly increasing. In this paper, we present a tool, Relo, that supports developers ’ understanding by allowing interactive exploration of code. As ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
As software systems grow in size and use more third-party libraries and frameworks, the need for developers to understand unfamiliar large codebases is rapidly increasing. In this paper, we present a tool, Relo, that supports developers ’ understanding by allowing interactive exploration of code. As the developer explores relationships found in the code, Relo builds and automatically manages the context in a visualization, thereby helping build the developer’s mental representation of the code. Developers can group viewed artifacts or use the viewed items to ask Relo for further exploration suggestions. Relo is built as an Eclipse plug-in integrated into the Java Tooling (JDT), and uses a standard, RDF, based backend allowing for maintaining code relationships and performing inferences about the relationships. See also the related demonstration & poster at OOPSLA
Code Thumbnails: Using Spatial Memory to Navigate Source Code
- in Proc. VL/HCC
, 2006
"... Modern development environments provide many features for navigating source code, yet recent studies show the developers still spend a tremendous amount of time just navigating. Since existing navigation features rely heavily on memorizing symbol names, we present a new design, called Code Thumbnail ..."
Abstract
-
Cited by 12 (2 self)
- Add to MetaCart
Modern development environments provide many features for navigating source code, yet recent studies show the developers still spend a tremendous amount of time just navigating. Since existing navigation features rely heavily on memorizing symbol names, we present a new design, called Code Thumbnails, intended to allow a developer to navigate source code by forming a spatial memory of it. To aid intra-file navigation, we add a thumbnail image of the file to the scrollbar, which makes any part of the file one click away. To aid interfile navigation, we provide a desktop of file thumbnail images, which make any part of any file one click away. We did a formative evaluation of the design with eleven experienced developers and present the results. 1.
Managing software change tasks: An exploratory study
- In Proceedings of the International Symposium on Empirical Software Engineering
, 2005
"... Programmers often have to perform change tasks that involve unfamiliar portions of a software system’s code base. To help inform the design of software development tools intended to support programmers in this context, we conducted a qualitative study of how programmers manage such change tasks. In ..."
Abstract
-
Cited by 7 (3 self)
- Add to MetaCart
Programmers often have to perform change tasks that involve unfamiliar portions of a software system’s code base. To help inform the design of software development tools intended to support programmers in this context, we conducted a qualitative study of how programmers manage such change tasks. In the study we observed Java programmers using a state-of-thepractice IDE to work on real change tasks to a mediumsized open source software system. In this paper we present our results, describing eight observations about the programmers ’ behavior and the impact of the development environment on their behavior. We also highlight several key challenges faced by the programmers and discuss the implications of our results on the design of development tools. 1
WikiTrails: Augmenting wiki structure for collaborative, interdisciplinary learning
- In WikiSym ’06
, 2006
"... Wikis are currently in high demand in a large variety of fields, due to their simplicity and flexible nature. Documentation, reporting, project management, online glossaries and dictionaries, discussion groups, or information systems are just a few examples of possible Wiki applications. Their popul ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Wikis are currently in high demand in a large variety of fields, due to their simplicity and flexible nature. Documentation, reporting, project management, online glossaries and dictionaries, discussion groups, or information systems are just a few examples of possible Wiki applications. Their popularity has also begun drawing the attention of teachers and educators, who realize that Wikis facilitate collaborative finding, shaping, and sharing of knowledge, as well as communication, all of which are essential properties in an educational context. In order to leverage the possibilities that Wiki systems offer for didactic and interdisciplinary scenarios, this paper examines how Wiki functionality can be extended in order to better suit the requirements posed by such environments and their participants. A concept is suggested that allows building context and structure around the content and existing information organization, using trails, or paths, through the Wiki content. These can either be added manually, or inferred automatically by an integrated tracking mechanism that makes use of the implicit navigational information left behind by the users as they browse the Wiki. Finally, an actual implementation of the concept is presented and discussed, followed by an outlook on future developments and possible uses.
Staying oriented with Software Terrain Maps (2005
- In Proc. of the Workshop on Visual Languages and Computation
, 2005
"... Developers often find themselves lost as they navigate around large programs, particularly when those programs are unfamiliar. This paper presents a new visualization, called a software terrain map, intended to keep a programmer oriented as she navigates around source code in the editor. The design ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
Developers often find themselves lost as they navigate around large programs, particularly when those programs are unfamiliar. This paper presents a new visualization, called a software terrain map, intended to keep a programmer oriented as she navigates around source code in the editor. The design is based on the metaphor of cartographic maps, which are continuous (no wasted space), have enough visual landmarks to allow the user to find her location perceptually rather than cognitively, and lend themselves to overlaying data. Although an optimal layout for software terrain maps is computationally intractable, the paper presents an efficient, heuristic algorithm that produces good results. 1
Theories, tools and research methods in program comprehension: past, present and future
"... Abstract Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers understand software, as well as the tools that are used to assist in comprehension tasks. In this paper, I review some of the key cognitive theories of program compr ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Abstract Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers understand software, as well as the tools that are used to assist in comprehension tasks. In this paper, I review some of the key cognitive theories of program comprehension that have emerged over the past thirty years. Using these theories as a canvas, I then explore how tools that are commonly used today have evolved to support program comprehension. Specifically, I discuss how the theories and tools are related and reflect on the research methods that were used to construct the theories and evaluate the tools. The reviewed theories and tools are distinguished according to human characteristics, program characteristics, and the context for the various comprehension tasks. Finally, I predict how these characteristics will change in the future and speculate on how a number of important research directions could lead to improvements in program comprehension tool development and research methods.
Resumption Strategies for Interrupted Programming Tasks
"... Interruptions are a daily reality for professional programmers. Unfortunately, the strategies programmers use to recover lost knowledge and resume work have not yet been well studied. In this paper, we perform exploratory analysis on 10,000 recorded programming sessions of 85 programmers to understa ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Interruptions are a daily reality for professional programmers. Unfortunately, the strategies programmers use to recover lost knowledge and resume work have not yet been well studied. In this paper, we perform exploratory analysis on 10,000 recorded programming sessions of 85 programmers to understand the variety of strategies used by programmers for resuming programming tasks. In our study, we find that only 10 % of the programming sessions have coding activity start in less than a minute, only 7 % of the programming sessions involve no navigation to other locations prior to editing, and find evidence of programmers seeking other sources of task context during task resumption. Based on the analysis, we suggest how task resumption might be better supported in future development tools. 1.

