arrow Workshop Program

Building and evolving software systems is an arduous, complex, and lengthy task. It is well known that errors introduced early in the development process are commonly the most expensive ones to correct. Leading researchers in our field have thus argued in favor of not making certain development decisions for as long as possible – thus delaying potentially incorrect, early decisions.

There are several causes to having uncertainties in the development process:

  • delaying decisions
  • modeling the unknown
  • representing conflicting opinions
  • managing risks/trade-offs
We believe that software development uncertainties are present at all stages of the software life cycle. But usually they are treated implicitly. This workshop explores how to explicitly handle uncertainties (i.e., the uncertainties a software engineer faces on a daily basis). We are specifically interested in how to:
  • capture uncertainties explicitly (notation)
  • do reasoning in the presence of uncertainties (analysis, synthesis, trade-offs)
  • manage uncertainties
We believe that software engineering methodologies, techniques, and tools only then become truly useful if they allow the developer to work in a space where information is incomplete. Such a space of incompleteness is not limited to the traditional sense of “missing data.” Instead, development uncertainty may also include the notion of choices, where the developer enumerates a range of options on how to proceed under the assumption that only one option will be chosen at a later time. Alternatively, uncertainty may be expressed in the form of “anti-constraints”, where the developer fails to define what something is but is able, to some degree, to exclude what it isn’t.