Results 1 -
6 of
6
An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks
- IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
, 2006
"... 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 debug ..."
Abstract
-
Cited by 44 (12 self)
- Add to MetaCart
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.
Improving Program Slicing with Dynamic Points-To Data
- In Proceedings of the 10th ACM International Symposium on the Foundations of Software Engineering
, 2002
"... understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we use dynamic points-to data, which represents optimal or optimistic pointer information, to obtain a bound o ..."
Abstract
-
Cited by 35 (5 self)
- Add to MetaCart
understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we use dynamic points-to data, which represents optimal or optimistic pointer information, to obtain a bound on the best case slice size improvement that can be achieved with improved pointer precision. Our experiments show that slice size can be reduced significantly for programs that make frequent use of calls through function pointers because for them the dynamic pointer data results in a considerably smaller call graph, which leads to fewer data dependences. Programs without or with only few calls through function pointers, however, show only insignificant improvement. We identified Amdahl's law as the reason for this behavior: C programs appear to have a large fraction of direct data dependences so that reducing spurious dependences via pointers is only of limited benefit. Consequently, to make slicing useful in general for such programs, improvements beyond better pointer analyses will be necessary. On the other hand, since we show that collecting dynamic function pointer information can be performed with little overhead (average slowdown of 10% for our benchmarks), dynamic pointer information may be a practical approach to making slicing of programs with frequent function pointer use more successful in reality.
A survey of empirical results on program slicing
- ADVANCES IN COMPUTERS
, 2003
"... A program slice extracts a semantically meaningful portion of a program, based upon a user-selected slicing criterion. As the study of program slicing has matured, a growing body of empirical data has been gathered on the size of slices, the performance of slicing tools, the applications of slicin ..."
Abstract
-
Cited by 33 (21 self)
- Add to MetaCart
A program slice extracts a semantically meaningful portion of a program, based upon a user-selected slicing criterion. As the study of program slicing has matured, a growing body of empirical data has been gathered on the size of slices, the performance of slicing tools, the applications of slicing and the beneficial psychological effects of slices on the programmers who use them. This paper presents a survey of these results, highlighting trends and areas where additional empirical investigation is required, either because of contradictory findings or scarcity of results in the existing body of empirical evidence.
Automating Selective Dynamic Compilation
, 2002
"... Run-time specialization of programs can potentially improve execution time by exploiting the (semi-)invariance of values. Several research prototypes have been developed that enable the user to apply run-time specialization using annotations in the source code. While they were a great improvement o ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
Run-time specialization of programs can potentially improve execution time by exploiting the (semi-)invariance of values. Several research prototypes have been developed that enable the user to apply run-time specialization using annotations in the source code. While they were a great improvement over previous manual systems, in reality their use has been limited because writing annotations that achieve good program speedups is a challenging task for humans, requiring a deep understanding of the program's characteristics and of the applicable run-time optimizations and their effects on the underlying computer architecture. In this
Program Slicing Using Dynamic Points-to Data
- ACM SIGSOFT 10th Symposium on the Foundations of Software Engineering (FSE
, 2002
"... Program slicing is a potentially beneficial analysis for aiding program understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we explore using dynamic points-to inf ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
Program slicing is a potentially beneficial analysis for aiding program understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we explore using dynamic points-to information as an alternative to static information to improve precision. Since dynamic points-to data reflects the values of pointers during actual execution, the dynamic points-to sets are generally much smaller, and therefore the sizes of the resulting slices should also be smaller. Our experiments showed that the smaller points-to sets generally led to significantly smaller data-flow sets in the analysis. However, because of many direct data dependences in the programs, the improved precision of pointer data did generally not translate into significantly reduced slices. Nevertheless, for programs with many calls through function pointers, the more precise dynamic pointer information produced a significantly smaller call graph, resulting in considerably better slices. The implications of our results are twofold. First, to improve the quality of slices in general, other techniques than improved pointer analysis will be necessary. Second, for applications with an imprecise call graph, an optimistic approximation of the true graph is likely to yield considerable improvement in slice size. 1.
Property-based Slicing for Agent Verification
"... Programming languages designed specifically for multi-agent systems represent a new programming paradigm that has gained popularity over recent years, with some multi-agent programming languages being used in increasingly sophisticated applications, often in critical areas. To support this, we have ..."
Abstract
- Add to MetaCart
Programming languages designed specifically for multi-agent systems represent a new programming paradigm that has gained popularity over recent years, with some multi-agent programming languages being used in increasingly sophisticated applications, often in critical areas. To support this, we have developed a set of tools to allow the use of model-checking techniques in the verification of systems directly implemented in one particular language called AgentSpeak. The success of model checking as a verification technique for large software systems is dependent partly on its use in combination with various state-space reduction techniques, an important example of which is property-based slicing. This article introduces an algorithm for property-based slicing of AgentSpeak multi-agent systems. The algorithm uses literal dependence graphs, as developed for slicing logic programs, and generates a program slice whose state space is stuttering-equivalent to that of the original program; the slicing criterion is a property in a logic with LTL operators and (shallow) BDI modalities. In addition to showing correctness and characterizing the complexity of the slicing algorithm, we apply it to an AgentSpeak program based on autonomous planetary exploration rovers, and we discuss how slicing reduces the model-checking state space. The experiment results show a significant reduction in the state space required for model checking that agent, thus indicating that this approach can have an important impact on the future practicality of agent verification.

