Software helps people fulfill their goals, but development tools lack understanding of those goals. But if development tools did understand how software artifacts relate to higherlevel intents and goals, they could help developers reuse code, solve problems, and develop systems that are more robust and easier to use. In this paper, we suggest that supporting software development at a stage before concrete formalization is an area of opportunity for software engineering research. We discuss three aspects that are both core challenges and opportunities for this research area: handling ambiguity, understanding human situations, and flexible reflection about failure, and identify research results suggesting that substantial progress can be made on these problems within a decade. We believe that this research will make it easier to develop software that is more broadly useful and robust, even in the face of everyday uncertainty and failure. Categories and Subject Descriptors D.2.3 [Softwar...
Kenneth C. Arnold, Henry Lieberman