Unprecedented computational power is available from multi-core processors and cloud computing. To date, this power has been used primarily to make programs run faster. However, in many cases the bottleneck to solving users' problems is in the challenge of creating the software, not in the time to run it. This project will apply computational power to the real bottleneck, providing developers with new types of feedback. As a key broader impact, the research will enable developers to create software more quickly, more cheaply, and with higher quality.
The key technical idea is to inform developers, in advance, of the consequences of their likely actions. The development environment speculates about developer actions, evaluates the effect of each action (on compilation, tests, version control conflicts, etc.), and unobtrusively makes this information available to the developer. By knowing which choices are good and which are bad, developers can avoid bad choices that cost time or reduce quality. The project's intellectual merits include algorithms to quickly create and evaluate many possible developer actions, UI design for developer awareness, and evaluation of how increased awareness of contingent information, about possible actions, affects developers. This also leads toward an answer to the question: If developers had infinite processing power, what fundamental software engineering research problems would remain?