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.