Michael D. Ernst

ORCID: 0000-0001-9379-277X
Publications
Citations
Views
---
Saved
---
About
Contact & Profiles
Research Areas
  • Software Engineering Research
  • Software Testing and Debugging Techniques
  • Software Reliability and Analysis Research
  • Logic, programming, and type systems
  • Software System Performance and Reliability
  • Security and Verification in Computing
  • Advanced Software Engineering Methodologies
  • Formal Methods in Verification
  • Advanced Malware Detection Techniques
  • Parallel Computing and Optimization Techniques
  • Distributed and Parallel Computing Systems
  • Advanced Data Storage Technologies
  • Distributed systems and fault tolerance
  • Scientific Computing and Data Management
  • Web Application Security Vulnerabilities
  • Software Engineering Techniques and Practices
  • Advanced Statistical Methods and Models
  • Network Security and Intrusion Detection
  • Real-Time Systems Scheduling
  • Logic, Reasoning, and Knowledge
  • Cloud Computing and Resource Management
  • Model-Driven Software Engineering Techniques
  • Digital and Cyber Forensics
  • Simulation Techniques and Applications
  • Software-Defined Networks and 5G

University of Washington
2016-2025

Seattle University
2009-2025

Stony Brook University Hospital
2023

Amazon (United States)
2020

National Library of Luxembourg
2012-2017

Brookhaven National Laboratory
2012-2015

University of Illinois Urbana-Champaign
2015

St. Cloud State University
2009-2013

University of Sheffield
2013

Fermi National Accelerator Laboratory
2012

Empirical studies in software testing research may not be comparable, reproducible, or characteristic of practice. One reason is that real bugs are too infrequently used research. Extracting and reproducing challenging as a result hand-seeded faults mutants commonly substitute. This paper presents Defects4J, database extensible framework providing to enable reproducible The initial version Defects4J contains 357 from 5 real-world open source pro- grams. Each bug accompanied by comprehensive...

10.1145/2610384.2628055 article EN 2014-07-11

Explicitly stated program invariants can help programmers by identifying properties that must be preserved when modifying code. In practice, however, these are usually implicit. An alternative to expecting fully annotate code with is automatically infer likely from the itself. This research focuses on dynamic techniques for discovering execution traces. article reports three results. First, it describes dynamically invariants, along an implementation, named Daikon, embodies techniques....

10.1109/32.908957 article EN IEEE Transactions on Software Engineering 2001-01-01

We present a technique that improves random test generation by incorporating feedback obtained from executing inputs as they are created. Our builds incrementally randomly selecting method call to apply and finding arguments among previously-constructed inputs. As soon an input is built, it executed checked against set of contracts filters. The result the execution determines whether redundant, illegal, contract-violating, or useful for generating more outputs suite consisting unit tests...

10.1109/icse.2007.37 article EN Proceedings/Proceedings - International Conference on Software Engineering 2007-05-01

The use of permutation methods for exact inference dates back to Fisher in 1935. Since then, the practicality such has increased steadily with computing power. They can now easily be employed many situations without concern difficulties. We discuss reasoning behind these and describe when they are distribution-free. illustrate their several examples.

10.1214/088342304000000396 article EN Statistical Science 2004-11-01

The growing demand for large-scale data mining and analysis applications has led both industry academia to design new types of highly scalable data-intensive computing platforms. MapReduce Dryad are two popular platforms in which the dataflow takes form a directed acyclic graph operators. These lack built-in support iterative programs, arise naturally many including mining, web ranking, analysis, model fitting, so on. This paper presents HaLoop, modified version Hadoop framework that is...

10.14778/1920841.1920881 article EN Proceedings of the VLDB Endowment 2010-09-01

A good test suite is one that detects real faults. Because the set of faults in a program usually unknowable, this definition not useful to practitioners who are creating suites, nor researchers and evaluating tools generate suites. In place faults, testing research often uses mutants, which artificial -- each simple syntactic variation systematically seeded throughout under test. Mutation analysis appealing because large numbers mutants can be automatically-generated used compensate for low...

10.1145/2635868.2635929 article EN 2014-11-04

R<scp>ANDOOP</scp> for Java generates unit tests code using feedback-directed random test generation. Below we describe R<scp>ANDOOP</scp>'s input, output, and generation algorithm. We also give an overview of RANDOOP's annotation-based interface specifying configuration parameters that affect behavior output.

10.1145/1297846.1297902 article EN 2007-10-20

We present ClearView, a system for automatically patching errors in deployed software. ClearView works on stripped Windows x86 binaries without any need source code, debugging information, or other external and human intervention.

10.1145/1629575.1629585 article EN 2009-10-11

Most fault localization techniques take as input a faulty program, and produce output ranked list of suspicious code locations at which the program may be defective. When researchers propose new technique, they typically evaluate it on programs with known faults. The technique is scored based where in its defective appears. This enables comparison multiple to determine one better. Previous research has evaluated using artificial faults, generated either by mutation tools or manually. In...

10.1109/icse.2017.62 article EN 2017-05-01

We present a technique for finding security vulnerabilities in Web applications. SQL Injection (SQLI) and cross-site scripting (XSS) attacks are widespread forms of attack which the attacker crafts input to application access or modify user data execute malicious code. In most serious (called second-order, persistent, XSS), an can corrupt database so as cause subsequent users

10.1109/icse.2009.5070521 article EN 2009-01-01

Distributed systems are difficult to implement correctly because they must handle both concurrency and failures: machines may crash at arbitrary points networks reorder, drop, or duplicate packets. Further, their behavior is often too complex permit exhaustive testing. Bugs in these have led the loss of critical data unacceptable service outages. We present Verdi, a framework for implementing formally verifying distributed Coq. Verdi formalizes various network semantics with different...

10.1145/2737924.2737958 article EN 2015-06-03

The performance of fault localization techniques is critical to their adoption in practice. This paper reports on an empirical study a wide range real-world faults. Different from previous studies, this (1) considers different families, (2) combines techniques, and (3) the execution time techniques. Our results reveal that combined technique significantly outperforms any individual (200 percent increase faults localized Top 1), suggesting combination may be desirable way apply future should...

10.1109/tse.2019.2892102 article EN IEEE Transactions on Software Engineering 2019-01-10

10.2307/2669566 article EN Journal of the American Statistical Association 2000-03-01

Article Free Access Share on Dynamically discovering likely program invariants to support evolution Authors: Michael D. Ernst Dept. of Computer Science & Engineering, University Washington, Box 352350, Seattle WA WAView Profile , Jake Cockrell William G. Griswold California San Diego, 0114, La Jolla, CA CAView David Notkin Authors Info Claims ICSE '99: Proceedings the 21st international conference Software engineeringMay 1999 Pages 213–224https://doi.org/10.1145/302405.302467Published:16 May...

10.1145/302405.302467 article EN 1999-05-16

Many automatic testing, analysis, and verification techniques for programs can be effectively reduced to a constraint generation phase followed by constraint-solving phase. This separation of concerns often leads more effective maintainable tools. The increasing efficiency off-the-shelf solvers makes this approach even compelling. However, there are few sufficiently expressive string constraints generated analysis string-manipulating programs.

10.1145/1572272.1572286 article EN 2009-07-19

This is the first empirical study of use C macro preprocessor, Cpp. To determine how preprocessor used in practice, this paper analyzes 26 packages comprising 1.4 million lines publicly available code. We incidence usage-whether definitions, uses, or dependences upon macros-that complex, potentially problematic, inexpressible terms other C++ language features. taxonomize these various aspects and particularly note data that are material to development tools for C++, including translating...

10.1109/tse.2002.1158288 article EN IEEE Transactions on Software Engineering 2002-12-01

Computer systems are often difficult to debug and understand. A common way of gaining insight into system behavior is inspect execution logs documentation. Unfortunately, manual inspection an arduous process documentation incomplete out sync with the implementation.

10.1145/2025113.2025151 article EN 2011-09-06

The Java Modeling Language (JML) can be used to specify the detailed design of classes and interfaces by adding annotations source files. aim JML is provide a specification language that easy use for programmers supported wide range tools type-checking, runtime debugging, static analysis, verification. This paper gives an overview main ideas behind JML, different groups collaborating existing applications JML. Thus far, most have focused on code programming smartcards written in Card dialect Java.

10.1016/s1571-0661(04)80810-7 article EN Electronic Notes in Theoretical Computer Science 2003-08-01

Collaborative development can be hampered when conflicts arise because developers have inconsistent copies of a shared project. We present an approach to help identify and resolve early, before those become severe relevant changes fade away in the developers' memories. This paper presents three results.

10.1145/2025113.2025139 article EN 2011-09-06

Automatic bug-finding tools have a high false positive rate: most warnings do not indicate real bugs. Usually assign important priority. However, the prioritization of tends to be ineffective. We observed output by three tools, FindBugs, JLint, and PMD, for subject programs, Columba, Lucene, Scarab. Only 6%, 9%, 9% are removed bug fix changes during 1 4 years software development. About 90% remain in program or non-fix -- likely warnings. The tools' warning is little help focusing on...

10.1145/1287624.1287633 article EN 2007-09-07

This paper introduces the Checker Framework, which supports adding pluggable type systems to Java language in a backward-compatible way. A system designer defines qualifiers and their semantics, compiler plug-in enforces semantics. Programmers can write programs use detect or prevent errors. The Framework is useful both programmers who wish error-free code, designers evaluate deploy systems.

10.1145/1390630.1390656 article EN 2008-07-20
Coming Soon ...