Edward K. Smith

dblp:76/9583 · DBLP profile ↗
← Back
8ranked-venue papers
2as first author
1since 2021 · last 2021
0009-0007-1956-4518ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 8 · 2 first-author · 1 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
8 papers
Empirical software engineering · 53% Software maintenance and evolution · 17% Debugging and program repair · 14%

Topics — the 9 heaviest of 11, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Empirical software engineering
developer studies
1.132021
What Predicts Software Developers' Productivity? · IEEE Trans. Software Eng. 2021
Do developers discover new tools on the toilet? · ICSE 2019
Build It Yourself! Homegrown Tools in a Large Software Company · ICSE (1) 2015
Empirical software engineering › developer studies › developer behavior
developer productivity
0.512021
What Predicts Software Developers' Productivity? · IEEE Trans. Software Eng. 2021
Software maintenance and evolution
dynamic software updating
0.532014
Kitsune: Efficient, General-Purpose Dynamic Software Updating for C · ACM Trans. Program. Lang. Syst. 2014
Evaluating Dynamic Software Update Safety Using Systematic Testing · IEEE Trans. Software Eng. 2012
Kitsune: efficient, general-purpose dynamic software updating for C · OOPSLA 2012
Debugging and program repair
automated program repair
0.422015
The ManyBugs and IntroClass Benchmarks for Automated Repair of C Programs · IEEE Trans. Software Eng. 2015
Is the cure worse than the disease? overfitting in automated program repair · ESEC/SIGSOFT FSE 2015
Operating systems
live update
0.212014
Kitsune: Efficient, General-Purpose Dynamic Software Updating for C · ACM Trans. Program. Lang. Syst. 2014
Software testing
systematic testing
0.112012
Evaluating Dynamic Software Update Safety Using Systematic Testing · IEEE Trans. Software Eng. 2012
Empirical software engineering
mining software repositories
0.112019
Do developers discover new tools on the toilet? · ICSE 2019
Software testing › test adequacy
test suite adequacy
0.112015
Is the cure worse than the disease? overfitting in automated program repair · ESEC/SIGSOFT FSE 2015
Programming languages and type systems › programming paradigms › imperative languages
c
0.112014
Kitsune: Efficient, General-Purpose Dynamic Software Updating for C · ACM Trans. Program. Lang. Syst. 2014

Methods — techniques the papers use, named apart from their topics

survey · 0.9trpautorepair · 0.4genprog · 0.4interviews · 0.4causal inference · 0.4qualitative study · 0.2benchmark evaluation · 0.2AE · 0.2state transformation specifications · 0.2state transformation · 0.1
YearPublicationVenuePosition
2021 What Predicts Software Developers' Productivity?
abstract
Organizations have a variety of options to help their software developers become their most productive selves, from modifying office layouts, to investing in better tools, to cleaning up the source code. But which options will have the biggest impact? Drawing from the literature in software engineering and industrial/organizational psychology to identify factors that correlate with productivity, we designed a survey that asked 622 developers across 3 companies about these productivity factors and about self-rated productivity. Our results suggest that the factors that most strongly correlate with self-rated productivity were non-technical factors, such as job enthusiasm, peer support for new ideas, and receiving useful feedback about job performance. Compared to other knowledge workers, our results also suggest that software developers' self-rated productivity is more strongly related to task variety and ability to work remotely.
Emerson R. Murphy-Hill, Ciera Jaspan, Caitlin Sadowski, David C. Shepherd, Michael Phillips, Collin Winter, Andrea Knight, Edward K. Smith, Matthew Jorde
IEEE Trans. Software Eng.8
2019 Do developers discover new tools on the toilet?
abstract
Maintaining awareness of useful tools is a substantial challenge for developers. Physical newsletters are a simple technique to inform developers about tools. In this paper, we evaluate such a technique, called Testing on the Toilet, by performing a mixed-methods case study. We first quantitatively evaluate how effective this technique is by applying statistical causal inference over six years of data about tools used by thousands of developers. We then qualitatively contextualize these results by interviewing and surveying 382 developers, from authors to editors to readers. We found that the technique was generally effective at increasing software development tool use, although the increase varied depending on factors such as the breadth of applicability of the tool, the extent to which the tool has reached saturation, and the memorability of the tool name.
Emerson R. Murphy-Hill, Edward K. Smith, Caitlin Sadowski, Ciera Jaspan, Collin Winter, Matthew Jorde, Andrea Knight, Andrew Trenk, Steve Gross
ICSE2
2015 Build It Yourself! Homegrown Tools in a Large Software Company
abstract
Developers sometimes take the initiative to build toolsto solve problems they face. What motivates developers to buildthese tools? What is the value for a company? Are the tools builtuseful for anyone besides their creator? We conducted a qualitativestudy of tool building, adoption, and impact within Microsoft. Thispaper presents our findings on the extrinsic and intrinsic factorslinked to toolbuilding, the value of building tools, and the factorsassociated with tool spread. We find that the majority of developersbuild tools. While most tools never spread beyond their creator'steam, most have more than one user, and many have more than onecollaborator. Organizational cultures that are receptive towardstoolbuilding produce more tools, and more collaboration on tools.When nurtured and spread, homegrown tools have the potential tocreate significant impact on organizations.
Edward K. Smith, Christian Bird, Thomas Zimmermann 0001
ICSE (1)1
2015 Is the cure worse than the disease? overfitting in automated program repair
abstract
Automated program repair has shown promise for reducing the significant manual effort debugging requires. This paper addresses a deficit of earlier evaluations of automated repair techniques caused by repairing programs and evaluating generated patches' correctness using the same set of tests. Since tests are an imperfect metric of program correctness, evaluations of this type do not discriminate between correct patches and patches that overfit the available tests and break untested but desired functionality. This paper evaluates two well-studied repair tools, GenProg and TrpAutoRepair, on a publicly available benchmark of bugs, each with a human-written patch. By evaluating patches using tests independent from those used during repair, we find that the tools are unlikely to improve the proportion of independent tests passed, and that the quality of the patches is proportional to the coverage of the test suite used during repair. For programs that pass most tests, the tools are as likely to break tests as to fix them. However, novice developers also overfit, and automated repair performs no worse than these developers. In addition to overfitting, we measure the effects of test suite coverage, test suite provenance, and starting program quality, as well as the difference in quality between novice-developer-written and tool-generated patches when quality is assessed with a test suite independent from the one used for patch generation.
Edward K. Smith, Earl T. Barr, Claire Le Goues, Yuriy Brun
ESEC/SIGSOFT FSE1
2015 The ManyBugs and IntroClass Benchmarks for Automated Repair of C Programs
abstract
The field of automated software repair lacks a set of common benchmark problems. Although benchmark sets are used widely throughout computer science, existing benchmarks are not easily adapted to the problem of automatic defect repair, which has several special requirements. Most important of these is the need for benchmark programs with reproducible, important defects and a deterministic method for assessing if those defects have been repaired. This article details the need for a new set of benchmarks, outlines requirements, and then presents two datasets, ManyBugs and IntroClass, consisting between them of 1,183 defects in 15 C programs. Each dataset is designed to support the comparative evaluation of automatic repair algorithms asking a variety of experimental questions. The datasets have empirically defined guarantees of reproducibility and benchmark quality, and each study object is categorized to facilitate qualitative evaluation and comparisons by category of bug or program. The article presents baseline experimental results on both datasets for three existing repair methods, GenProg, AE, and TrpAutoRepair, to reduce the burden on researchers who adopt these datasets for their own comparative evaluations.
Claire Le Goues, Neal J. Holtschulte, Edward K. Smith, Yuriy Brun, Premkumar T. Devanbu, Stephanie Forrest, Westley Weimer
IEEE Trans. Software Eng.3
2014 Kitsune: Efficient, General-Purpose Dynamic Software Updating for C
abstract
Dynamic software updating (DSU) systems facilitate software updates to running programs, thereby permitting developers to add features and fix bugs without downtime. This article introduces Kitsune, a DSU system for C. Kitsune’s design has three notable features. First, Kitsune updates the whole program, rather than individual functions, using a mechanism that places no restrictions on data representations or allowed compiler optimizations. Second, Kitsune makes the important aspects of updating explicit in the program text, making the program’s semantics easy to understand while minimizing programmer effort. Finally, the programmer can write simple specifications to direct Kitsune to generate code that traverses and transforms old-version state for use by new code; such state transformation is often necessary and is significantly more difficult in prior DSU systems. We have used Kitsune to update six popular, open-source, single- and multithreaded programs and find that few program changes are required to use Kitsune, that it incurs essentially no performance overhead, and that update times are fast.
Christopher M. Hayden, Karla Saur, Edward K. Smith, Michael Hicks 0001, Jeffrey S. Foster
ACM Trans. Program. Lang. Syst.3
2012 Kitsune: efficient, general-purpose dynamic software updating for C
abstract
Dynamic software updating (DSU) systems allow programs to be updated while running, thereby permitting developers to add features and fix bugs without downtime. This paper introduces Kitsune, a new DSU system for C whose design has three notable features. First, Kitsune's updating mechanism updates the whole program, not individual functions. This mechanism is more flexible than most prior approaches and places no restrictions on data representations or allowed compiler optimizations. Second, Kitsune makes the important aspects of updating explicit in the program text, making the program's semantics easy to understand while minimizing programmer effort. Finally, the programmer can write simple specifications to direct Kitsune to generate code that traverses and transforms old-version state for use by new code; such state transformation is often necessary, and is significantly more difficult in prior DSU systems. We have used Kitsune to update five popular, open-source, single- and multi-threaded programs, and find that few program changes are required to use Kitsune, and that it incurs essentially no performance overhead.
Christopher M. Hayden, Edward K. Smith, Michail Denchev, Michael Hicks 0001, Jeffrey S. Foster
OOPSLA2
2012 Evaluating Dynamic Software Update Safety Using Systematic Testing
abstract
Dynamic software updating (DSU) systems patch programs on the fly without incurring downtime. To avoid failures due to the updating process itself, many DSU systems employ timing restrictions. However, timing restrictions are theoretically imperfect, and their practical effectiveness is an open question. This paper presents the first significant empirical evaluation of three popular timing restrictions: activeness safety (AS), which prevents updates to active functions; con-freeness safety (CFS), which only allows modifications to active functions when doing so is provably type-safe; and manual selection, which permits updates at developer chosen program points. We evaluated these timing restrictions using a series of DSU patches to three programs: OpenSSH, vsftpd, and ngIRCd. We systematically applied updates at each distinct update point reached during execution of a suite of system tests for these programs to determine which updates pass and which fail. We found that all three timing restrictions prevented most failures, but only manual selection allowed none. Further, although CFS and AS allowed many more update points, manual selection still supported updates with minimal delay. Finally, we found that manual selection required the least developer effort. Overall, we conclude that manual selection is most effective.
Christopher M. Hayden, Edward K. Smith, Eric A. Hardisty, Michael Hicks 0001, Jeffrey S. Foster
IEEE Trans. Software Eng.2