next up previous
Next: Premises and Hypothesis Up: Introduction Previous: Introduction

Software Uncertainty Modeling

 

Software is a large and complex artifact, produced primarily by humans for humans. Software development and operational use are therefore dominated by human action, human judgment and decision making, and inevitably human error. The outcome is, therefore, often uncertain and unpredictable and, along with uncertainty in natural phenomena, leads to unavoidable software uncertainties. Most if not all software failures are experienced by or otherwise affect human users. Similarly, most software defects can be traced to human origins, be it an error introduced directly by a developer or a defect that is only indirectly human-related. An IEEE software engineering standard, for example, identifies two key sources of software uncertainty as ``poor knowledge or understanding of the problem domain'' and ``insufficient, untimely orientation to user needs and to overall quality'' [IEE94].

The observation that ``software engineering is fraught with uncertainty'' is often used to explain the known symptoms of the software crisis, including high costs and unexpected slips in development schedule as well as unpredictable failures of operational software. The abundance of uncertainty also justifies extensive measures taken by researchers and practitioners attempting to identify and alleviate software risks and uncertainties.

While software risk management has long been an active field of research producing significant contributions (cf. [Boe89, Boe91]), the subject of software uncertainties has largely been overlooked, with the notable exception of software reliability models [Lit79] and models for validation of software dependability [LS93]. This omission is particularly surprising in light of extensive research in modeling and management of uncertainty carried out in Artificial Intelligence (AI) domains (cf. [Pea88, Nea90, HMW95]).

Thus, despite the pervasiveness of human involvement and related software uncertainties, surprisingly few attempts have been made to model those uncertainties explicitly. This dissertation aims to remedy this situation, initially by presenting the Maxim of Uncertainty in Software Engineering (MUSE) and as a corollary, urging that software uncertainties be modeled directly, using an appropriate uncertainty modeling technique.

Ideally, an uncertainty modeling technique should include probabilistic notions of uncertainty and confidence, provide for multiple sources of evidence and influence, and support dynamic updating of uncertainty values during software development. In this dissertation, we claim that Bayesian Belief Networks meet these desiderata and are therefore suitable for software uncertainty modeling.

There are many perceived benefits of modeling software uncertainty, including, among others:

  1. Uncertainty permeates software development, yet is generally absent in most software models. A model providing explicit representation of software uncertainties would therefore be more accurate (and possibly more useful) than one where uncertainties are disregarded.
  2. The search for uncertainty plays a pivotal role in an overall software risk management strategy. Following Gemmer [Gem97], ``It is impossible to manage risk without ferreting out elements of uncertainty. Uncertainty is present in all decisions we face.'' A key risk minimization activity is to ``systematically search for uncertainty wherever it may be.''
  3. Finally, software uncertainty modeling may help guide and ultimately improve software process decisions. Based on changes and fluctuations in software uncertainty levels, for example, a project manager may decide to ``conclude testing,'' ``instigate regression testing,'' or else ``shuffle testing priorities.''

We generally believe that software uncertainty modeling holds promise for improved human understanding and decision making in a wide range of development activities. In this dissertation, however, we focus on specific benefits of uncertainty modeling for specific development situations. To this end, we describe several premises and propose a specific research hypothesis to be validated against a real software project. The premises and hypothesis for this dissertation are described next.


next up previous
Next: Premises and Hypothesis Up: Introduction Previous: Introduction

Hadar Ziv
Fri Jun 20 16:22:31 PDT 1997