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.
@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}, }