Speculative analysis: Exploring future states of software
by Yuriy Brun, Reid Holmes, Michael D. Ernst, David Notkin
Abstract:

Most existing software tools and environments help developers analyze the present and past development states of their software systems, but few approaches have investigated the potential consequences of future actions the developers may perform. The commoditization of hardware, multi-core architectures, and cloud computing provide new potential for delivering apparently-instantaneous feedback to developers, informing them of the effects of changes to the software that they may be considering.

For example, modern IDEs often provide ``quick fix'' suggestions for resolving compilation errors. Developers must scan this list and select the option they think will resolve the problem. Instead, we propose that the IDE should speculatively perform each of the suggestions and provide information that helps developers select the best option for the given context. We believe the feedback enabled by speculative operations can lead to increased developer productivity and software quality.

Citation:
Yuriy Brun, Reid Holmes, Michael D. Ernst, and David Notkin, Speculative analysis: Exploring future states of software, in Proceedings of the 2010 Foundations of Software Engineering Working Conference on the Future of Software Engineering Research (FoSER), pp. 59–63.
Bibtex:
@inproceedings{Brun10foser,
  author = {Yuriy Brun and Reid Holmes and Michael D. Ernst and David Notkin},
  title =
  {\href{http://people.cs.umass.edu/brun/pubs/pubs/Brun10foser.pdf}{Speculative
  analysis: {Exploring} future states of software}},
  booktitle = {Proceedings of the 2010 Foundations of Software Engineering
  Working Conference on the Future of Software Engineering Research
  (FoSER)},
  venue = {FoSER},
  month = {November},
  date = {7--8},
  year = {2010},
  pages = {59--63},
  address = {Santa Fe, NM, USA},
  doi = {10.1145/1882362.1882375},
  accept = {$\frac{87}{139} \approx 63\%$},

  note = {\href{https://doi.org/10.1145/1882362.1882375}{DOI:
  10.1145/1882362.1882375}},

  abstract = {<p>Most existing software tools and environments help developers
  analyze the present and past development states of their software systems,
  but few approaches have investigated the potential consequences of
  \emph{future} actions the developers may perform. The commoditization of
  hardware, multi-core architectures, and cloud computing provide new
  potential for delivering apparently-instantaneous feedback to developers,
  informing them of the effects of changes to the software that they may be
  considering.</p>

  <p>For example, modern IDEs often provide ``quick fix'' suggestions for
  resolving compilation errors. Developers must scan this list and select the
  option they think will resolve the problem. Instead, we propose that the IDE
  should speculatively perform each of the suggestions and provide information
  that helps developers select the best option for the given context. We
  believe the feedback enabled by speculative operations can lead to increased
  developer productivity and software quality.</p>},

  fundedBy = {NSF CNS-0937060 to the CRA for the CIFellows Project, 
  NSERC Postdoctoral Fellowship,   Microsoft Research via a SEIF award,
  IBM John Backus Award},
}