Modern software applications are built from reusable components, such as widgets, libraries
and frameworks exposed through Application Programming Interfaces (APIs), and
increasingly from web services exposed through Web APIs.
Programmers rely on API reference documentation and example code snippets as learning
aides to using APIs. But such static information is not easily contextualized to the code at
hand, resulting in frequent coding errors and security vulnerabilities costing firms billions of
dollars per annum.
To address this problem, this project aims to develop a knowledge based coding assistant able
to automatically contextualize that reference documentation to the code at hand.
125,115
2014-06-01 to 2015-05-31
GRD Development of Prototype
Software is the disruptive force driving innovation, providing the competitive edge to
business, reshaping the world economies and transforming all sectors of our society. Software
has become an indispensable commodity without which our modern world cannot function
and has turned software development into a global economy that provides employment to
millions of programmers and is worth billions of US dollars per annum.
Meanwhile, the demand for software is rapidly growing, but the number of developers
available to produce this commodity is not. Increasing the pool of available skilled developers
will help, but that alone is not enough. It is their effectiveness that will become the limiting
factor in keeping up with the growing demand. Software is also becoming more complex with
programs now routinely comprising tens of thousands or even millions of lines of code.
Understanding how modern software works is cognitively challenging, but essential
in order for developers to modify software and to find and correct errors in the code. The
industry continues to ship software riddled with defects that compromise functionality,
security and privacy, costing firms billions of US dollars annually. There is clearly an urgent
need and an economic imperative to address this state of affairs.
Programming is a hard cognitive task for humans to perform, so developers rely on a range of
programming tools to ease that cognitive burden. The aim of this research project is to shift
that cognitive burden from the programmer to the machine.