Resume Research Papers Personal Home
  I am a member of the Dependability Research Group in the Department of Computer Science at the University of Virginia. I have the following major research interests:

Survivable embedded software systems

Software is a human work product, and there is no way to guarantee that it will not contain design flaws. These flaws are much less likely to exist, however, if software is smaller or simpler and thus easier for its designers to comprehend. I am working on transitioning survivability, a concept from the domain of networked systems, to the domain of safety-critical systems. Building survivable systems will allow designers to define core function that can maintain safety but is comprehensible, and use it as a fallback in the event that the fully complex function of a system is no longer maintainable because of some failure in system hardware or the activation of a software design fault.

Situated formalisms

When developing any formalism for a software system, from an abstract formal specification to a source code implementation, developers focus on the formal properties of what they build. These formal properties, however, are not able to convey an intuition of how the software should perform in its intended environment. Developers often include notes to themselves in the form of "meaningful" variable names or source code comments, but this is ad hoc and insufficient when building safety-critical computing systems. I am working to develop a structure for formalisms that includes natural language content to situate them in terms of their operating environment.

Accident investigation

Safety and risk are closely related. Describing a system as safe implies that the risks of operating the system have been reduced to an acceptable level. Failures of safety-critical software and electronic programmable systems are evidence that the risks of operating the systems are higher than previously thought. Although undesirable, they can provide valuable feedback on the quality of the processes used to produce the systems and on the validity of the arguments used to assure their safety. Just as safety assurance during development focuses on reducing the predicted risk of system operation to an acceptable level, the objective of failure analysis is to reduce the actual risk observed from failures to the level previously thought to have been achieved.