CAREER: Improving Software Quality using Dynamically Inferred Models
University Of Massachusetts Amherst, Amherst MA
Investigators
Abstract
Software has become an integral part of our society and it is hard to imagine many aspects of our lives, including the economy, healthcare, and communication, functioning without software. However, software is rarely perfect and software defects can have serious consequences, such as security breaches and the compromise of private information. While these high costs of defects are well known, the software industry has been unable to remedy the problem because the inherent complexity of software is so high that even the best, most careful developers still make mistakes. As a result, defects are not only common but new defects are typically reported faster than developers can fix them. This makes the problem of improving software quality one of the most critical challenges facing our society today. It is this challenge that is the central goal of this project. The focus of the project is to develop techniques and tools that help developers understand the complex software behavior and the behavioral implications of software changes. These techniques and tools aim to improve the quality of software by helping developers do their jobs better and make fewer mistakes. Improving software quality in such a way will reduce the negative effects of buggy software, positively affecting the many aspects of society that rely on software. One significant cause of defects and poor software quality is the inconsistency between what developers think their system does, and what the system actually does. This project focuses on reducing this inconsistency by helping developers visualize, explore, and understand the runtime behavior of their systems, and how the behavior changes when the developers change the code. Today, common ways to reduce this inconsistency are to study the source code directly, to observe executions via a runtime debugger, and to instrument key locations in the code and use logging to peek into an implementation's runtime behavior. But these processes are highly manual and labor intensive, and often force the developer to think of a single execution at a time, rather than consider the system behavior as a whole. Instead, this project creates techniques and tools that help developers reduce this inconsistency by inferring precise, concise, predictive behavioral models from system execution logs, aiding developers in comprehension and debugging tasks by comparing, visualizing, and querying such models, and generating tests from such models. The broader impact of this work is the advancement of techniques that improve software quality, which, in turn, reduces the negative economic and societal effects of software defects.
View original record on NSF Award Search →