We present a divide-and-conquer method, called DiConic, for automatic addition of failsafe fault-tolerance to distributed programs, where a failsafe program guarantees to meet its...
Researchers have proposed a number of tools for automatic bug localization. Given a program and a description of the failure, such tools pinpoint a set of statements that are most...
As part of the evolution of software systems, effort is often invested to discover in what parts of the source code a feature (or other concern) is implemented. Unfortunately, kn...
Programs written in languages that provide direct access to memory through pointers often contain memory-related faults, which may cause non-deterministic failures and even securi...
James A. Clause, Ioannis Doudalis, Alessandro Orso...
Concurrent programs are difficult to debug and verify because of the nondeterministic nature of concurrent executions. A particular concurrency-related bug may only show up under ...
Modularity is one of the most important properties of a software design, with significant impact on changeability and evolvability. However, a formalized and automated approach i...
Knowing which method parameters may be mutated during a method’s execution is useful for many software engineering tasks. We present an approach to discovering parameter referen...
Shay Artzi, Adam Kiezun, David Glasser, Michael D....
We describe EUREKA, a symbolic model checker for Linear Programs with arrays, i.e. programs where variables and array elements range over a numeric domain and expressions involve ...