117 research outputs found
Do the Fix Ingredients Already Exist? An Empirical Inquiry into the Redundancy Assumptions of Program Repair Approaches
Much initial research on automatic program repair has focused on experimental
results to probe their potential to find patches and reduce development effort.
Relatively less effort has been put into understanding the hows and whys of
such approaches. For example, a critical assumption of the GenProg technique is
that certain bugs can be fixed by copying and re-arranging existing code. In
other words, GenProg assumes that the fix ingredients already exist elsewhere
in the code. In this paper, we formalize these assumptions around the concept
of ''temporal redundancy''. A temporally redundant commit is only composed of
what has already existed in previous commits. Our experiments show that a large
proportion of commits that add existing code are temporally redundant. This
validates the fundamental redundancy assumption of GenProg.Comment: ICSE - 36th IEEE International Conference on Software Engineering
(2014
From Organizations to Individuals: Psychoactive Substance Use By Professional Programmers
Psychoactive substances, which influence the brain to alter perceptions and
moods, have the potential to have positive and negative effects on critical
software engineering tasks. They are widely used in software, but that use is
not well understood. We present the results of the first qualitative
investigation of the experiences of, and challenges faced by, psychoactive
substance users in professional software communities. We conduct a thematic
analysis of hour-long interviews with 26 professional programmers who use
psychoactive substances at work. Our results provide insight into individual
motivations and impacts, including mental health and the relationships between
various substances and productivity. Our findings elaborate on socialization
effects, including soft skills, stigma, and remote work. The analysis also
highlights implications for organizational policy, including positive and
negative impacts on recruitment and retention. By exploring individual usage
motivations, social and cultural ramifications, and organizational policy, we
demonstrate how substance use can permeate all levels of software development.Comment: 11 pages + 2 for citations, 4 Tables. Preprint of a paper that will
be published in the International Conference of Software Engineering (ICSE,
2023
Connecting Program Synthesis and Reachability: Automatic Program Repair using Test-Input Generation
We prove that certain formulations of program synthesis and reachability are equivalent. Specifically, our constructive proof shows the reductions between the template-based synthesis problem, which generates a program in a pre-specified form, and the reachability problem, which decides the reachability of a program location. This establishes a link between the two research fields and allows for the transfer of techniques and results between them.
To demonstrate the equivalence, we develop a program repair prototype using reachability tools. We transform a buggy program and its required specification into a specific program containing a location reachable only when the original program can be repaired, and then apply an off-the-shelf test-input generation tool on the transformed program to find test values to reach the desired location. Those test values correspond to repairs for the original program. Preliminary results suggest that our approach compares favorably to other repair methods
Connecting Program Synthesis and Reachability: Automatic Program Repair using Test-Input Generation
We prove that certain formulations of program synthesis and reachability are equivalent. Specifically, our constructive proof shows the reductions between the template-based synthesis problem, which generates a program in a pre-specified form, and the reachability problem, which decides the reachability of a program location. This establishes a link between the two research fields and allows for the transfer of techniques and results between them.
To demonstrate the equivalence, we develop a program repair prototype using reachability tools. We transform a buggy program and its required specification into a specific program containing a location reachable only when the original program can be repaired, and then apply an off-the-shelf test-input generation tool on the transformed program to find test values to reach the desired location. Those test values correspond to repairs for the original program. Preliminary results suggest that our approach compares favorably to other repair methods
- …