228,704 research outputs found

    Path-Based Program Repair

    Full text link
    We propose a path-based approach to program repair for imperative programs. Our repair framework takes as input a faulty program, a logic specification that is refuted, and a hint where the fault may be located. An iterative abstraction refinement loop is then used to repair the program: in each iteration, the faulty program part is re-synthesized considering a symbolic counterexample, where the control-flow is kept concrete but the data-flow is symbolic. The appeal of the idea is two-fold: 1) the approach lazily considers candidate repairs and 2) the repairs are directly derived from the logic specification. In contrast to prior work, our approach is complete for programs with finitely many control-flow paths, i.e., the program is repaired if and only if it can be repaired at the specified fault location. Initial results for small programs indicate that the approach is useful for debugging programs in practice.Comment: In Proceedings FESCA 2015, arXiv:1503.0437

    Trident: Controlling Side Effects in Automated Program Repair

    Get PDF
    The goal of program repair is to eliminate a bug in a given program by automatically modifying its source code. The majority of real-world software is written in imperative programming languages. Each function or expression in imperative code may have side effects, observable effects beyond returning a value. Existing program repair approaches have a limited ability to handle side effects. Previous test-driven semantic repair approaches only synthesise patches without side effects. Heuristic repair approaches generate patches with side effects only if suitable code fragments exist in the program or a database of repair patterns, or can be derived from training data. This work introduces Trident, the first test-driven program repair approach that synthesizes patches with side effects without relying on the plastic surgery hypothesis, a database of patterns, or training data. Trident relies on an interplay of several parts. First, it infers a specification for synthesising side-effected patches using symbolic execution with a custom state merging strategy that alleviates path explosion due to side effects. Second, it uses a novel component-based patch synthesis approach that supports lvalues, values that appear on the left-hand sides of assignments. In an evaluation on open-source projects, Trident successfully repaired 6 out of 10 real bugs that require insertion of new code with side effects, which previous techniques do not therefore repair. Evaluated on the ManyBugs benchmark, Trident successfully repaired two new bugs that previous approaches could not. Adding patches with side effects to the search space can exacerbate test-overfitting. We experimentally demonstrate that the simple heuristic of preferring patches with the fewest side effects alleviates the problem. An evaluation on a large number of smaller programs shows that this strategy reduces test-overfitting caused by side-effects, increasing the rate of correct patches from 33.3% to 58.3%

    A modified membrane-inspired algorithm based on particle swarm optimization for mobile robot path planning

    Get PDF
    YesTo solve the multi-objective mobile robot path planning in a dangerous environment with dynamic obstacles, this paper proposes a modified membraneinspired algorithm based on particle swarm optimization (mMPSO), which combines membrane systems with particle swarm optimization. In mMPSO, a dynamic double one-level membrane structure is introduced to arrange the particles with various dimensions and perform the communications between particles in different membranes; a point repair algorithm is presented to change an infeasible path into a feasible path; a smoothness algorithm is proposed to remove the redundant information of a feasible path; inspired by the idea of tightening the fishing line, a moving direction adjustment for each node of a path is introduced to enhance the algorithm performance. Extensive experiments conducted in different environments with three kinds of grid models and five kinds of obstacles show the effectiveness and practicality of mMPSO.National Natural Science Foundation of China (61170016, 61373047), the Program for New Century Excellent Talents in University (NCET-11-0715) and SWJTU supported project (SWJTU12CX008); grant of the Romanian National Authority for Scientific Research, CNCSUEFISCDI, project number PN-II-ID-PCE- 2011-3-0688

    IntRepair: Informed Repairing of Integer Overflows

    Full text link
    Integer overflows have threatened software applications for decades. Thus, in this paper, we propose a novel technique to provide automatic repairs of integer overflows in C source code. Our technique, based on static symbolic execution, fuses detection, repair generation and validation. This technique is implemented in a prototype named IntRepair. We applied IntRepair to 2,052C programs (approx. 1 million lines of code) contained in SAMATE's Juliet test suite and 50 synthesized programs that range up to 20KLOC. Our experimental results show that IntRepair is able to effectively detect integer overflows and successfully repair them, while only increasing the source code (LOC) and binary (Kb) size by around 1%, respectively. Further, we present the results of a user study with 30 participants which shows that IntRepair repairs are more than 10x efficient as compared to manually generated code repairsComment: Accepted for publication at the IEEE TSE journal. arXiv admin note: text overlap with arXiv:1710.0372

    Introducing Hands-On Simulation Activities in Introduction to Engineering & Engineering Technology Class to Keep Students Engaged

    Get PDF
    Low enrollment and high attrition rates have often plagued Engineering and Engineering Technology programs. Part of this problem can be attributed to the lack of engaging hands-on activities during the first year of instruction. Most engineering and technology programs require students to take natural science, math and some general education courses during the first two years with minimal technical content. To maintain student\u27s interest in the technical career path, it is important that students establish a link between the theoretical knowledge and its application to solve real life problems early in their learning experience. Simulation based activities have a proven record as instructional tool. Such activities have been used successfully in Lean Training programs in industry. Effectiveness of such activities as a pedagogical tool has been supported by research in the acquisition and retention of knowledge. The Shipbuilding and Repair Career Day Events (SBRCD) project was funded by the National Shipbuilding research Program to increase awareness about shipbuilding and repair careers. Four simulation activities developed under the grant were incorporated into freshmen engineering course to encourage creative thinking and keep students engaged while providing information about shipbuilding and repair processes
    corecore