The Uncertainty Principle in Software Engineering

Submitted to ICSE'97, 19th International Conference on Software Engineering

Download full text (PDF)

Hadar Ziv
Debra J. Richardson
Department of Information and Computer Science
University of California, Irvine Irvine, California 92697-3425
fziv; djrg@ics.uci.edu

August 23, 1996

Abstract

This paper makes two contributions to software engineering research. First, we observe that un-certainty permeates software development but is rarely captured explicitly in software models. We remedy this situation by presenting the Uncertainty Principle in Software Engineering (UPSE), which states that uncertainty is inherent and inevitable in software development processes and products. We substantiate UPSE by providing examples of uncertainty in select software engineering domains. We present three common sources of uncertainty in software development, namely human participation, concurrency, and problem-domain uncertainties. We explore in detail un-certainty in software testing, including test planning, test enactment, error tracing, and quality estimation. Second, we present a technique for modeling uncertainty, called Bayesian belief net-works, and justify its applicability to software systems. We apply the Bayesian approach to a simple network of software artifacts based on an elevator control system. We discuss results, implications and potential benefits of the Bayesian approach. The elevator system therefore serves as an example of applying UPSE to a particular software development situation. Finally we discuss additional aspects of modeling and managing uncertainty in software engineering in general.