Font Size: a A A

Managing Design-Time Uncertainty in Software Models

Posted on:2017-07-05Degree:Ph.DType:Thesis
University:University of Toronto (Canada)Candidate:Famelis, MichailFull Text:PDF
GTID:2458390008975424Subject:Computer Science
Abstract/Summary:
The concern for handling uncertainty in software pervades contemporary software engineering. A particular form of uncertainty is that which can exist at multiple stages of the development process, where developers are uncertain about the content of their artifacts. However, existing tools and methodologies do not support working in the presence of design-time uncertainty, i.e., uncertainty that developers have about the content of their artifacts in various stages of the development process, therefore having to mentally keep track of multitude of possible alternative designs. Because of this uncertainty, developers are forced to either refrain from using their tools until uncertainty is resolved, or to make provisional decisions and attempt to keep track of them in case they prove premature and need to be undone. These options lead to either under-utilization of resources or potentially costly re-engineering.;This thesis presents a way to avoid these pitfalls by managing uncertainty in a systematic way. We propose to to work in the presence of uncertainty and to only resolve it when enough information is available. Development can therefore continue while avoiding premature design commitments.;In a pilot user study we found that, when asked to articulate design-time uncertainty in a free-form modelling scenario, people tend to explicate it within the software artifact itself, staying close to the existing notation. This lead us to adopt "partial models", a formalism for representing sets of possible design alternatives while staying faithful to the underlying language. This way, the problem of managing uncertainty in software artifacts is turned into a problem of doing management of software artifacts that contain uncertainty. To manage partial models, we have thus leveraged several software engineering sub-disciplines to develop techniques for: (a) articulating uncertainty, (b) checking and enforcing properties, as well as generating appropriate user feedback, (c) applying transformations, and (d) systematically making decisions, as new information becomes available. The resulting partial model management framework utilizes novel abstraction and automation approaches and enables a principled and systematic approach to managing design-time uncertainty in the software development process.
Keywords/Search Tags:Uncertainty, Software, Managing, Development process
Related items