The following Great Innovative Idea is from Marc Palyart at the University of British Columbia, Gail C. Murphy at the Univeristy of British Columbia, Emerson Murphy-Hill at NC State University, and Xavier Blanc at Bordeaux University. Their Speculative Reprogramming paper won third place at the Computing Community Consortium (CCC) sponsored Blue Sky Ideas Conference Track series at the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE), November 16-22, 2014 in Hong Kong.
The Innovative Idea
Software programming today is largely a flat-line activity. Although a software developer implementing a design makes many choices, such as which library to use, which data structures to use and so on, these choices are seldom captured; the code committed to the repository is typically the final end choice.
To support programming as the tree-like activity it is, we propose speculative reprogramming. In this approach, design and implementation alternatives that arise are explicitly represented and a developer is enabled to easily investigate multiple alternatives for the program.The alternatives that arise may be specified explicitly by the developer, may be captured implicitly as the developer works or may be determined implicitly based on analysis of the program and available resources (e.g., the web or repositories containing list of alternatives).
In speculative reprogramming, tool support makes it easy to explore an alternative path by allowing backtracking to an alternative point and rolling forward of the program as automatically as possible. Tool support also enables automatic analysis of the effect of an alternative decision, say by determining that the performance of the program would be improved with a different alternative. The intent is to make it easier for developers to explore the design space of their programs.
Overall speculative reprogramming would make design choices less definitive and heavy. For example design choices that made sense in the past could be reevaluated and changed in the present context. It would also facilitate quality improvement by supporting low-cost refactorings to reduce part of the technical debt arising during the development.
We are interested in making software developers more productive when building software of high-quality. The research we conduct includes investigating trends by mining software repositories, empirically studying programmers at work, developing and testing tools for improving how software development is conducted, and helping developers make more effective use of the tools they already have.
Marc Palyart is a postdoctoral researcher in the Software Practices Lab from the University of British Columbia. He holds a PhD in Computer Science from the University of Toulouse.
Gail C. Murphy is a Professor in the Department of Computer Science and Associate Dean (Research) in the Faculty of Science at the University of British Columbia. She is also Chief Scientist and co-founder of Tasktop Technologies. She is an Associate Editor of IEEE Transactions on Software Engineering and a member of the Editorial Board of Communications of the ACM.
Emerson Murphy-Hill is an Associate Professor of Computer Science at North Carolina State University, where he directs the Developer Liberation Front. He is an associate editor of Empirical Software Engineering.
Xavier Blanc is a professor at the University of Bordeaux. He is a member of the LaBRI (Computer Science Laboratory), where he directs the ProgResS research group that focuses on Software Engineering.