I. Introduction
Many software-intensive systems of the future, such as those that control complex physical processes (e.g., “smart” cities or autonomous vehicles), involve close interaction with the physical world. That world, unfortunately, is often eminently unpredictable. No matter how carefully we analyze the possibilities, unexpected events and behaviors (i.e., the infamous “unknown unknowns” [1]) are likely to occur after the system has been deployed. This inability to fully predict the full set of possible inputs to a system has inspired new research initiatives related to design in the presence of uncertainty [2]. How should we design software in such circumstances? The view in [3], suggests that we may have to shift our focus “from correctness to utility” and “from precise to approximate”. That is, we may have to abandon the long-sought (but never fully realized) ideal of full logical correctness with a resulting loss of full determinism. This places the problem of software design in such circumstances in the interstices between the informal and the formal. In this paper, we explore an approach that involves a continuum between the two.