Machine Learning Applications In Software Engineering

The challenge of developing and maintaining large software systems in a changing environment has been eloquently spelled out in Brooks' classic paper, No Silver Bullet [20]. The following essential difficulties inherent in developing large software still hold true today:
Complexity: "Software entities are more complex for their size than perhaps any other human construct." "Many of the classical problems of developing software products derive from this essential complexity and its nonlinear increases with size."
Conformity: Software must conform to the many different human institutions and systems it comes to interface with.
Changeability: "The software product is embedded in a cultural matrix of applications, users, laws, and machine vehicles. These all change continually, and their changes inexorably force change upon the software product."
Invisibility: "The reality of software is not inherently embedded in space." "As soon as we attempt to diagram software structure, we find it to constitute not one, but several, general directed graphs, superimposed one upon another." [20]
However, in his "No Silver Bullet" Refired paper [21], Brooks uses the following quote from Glass to summarize his view in 1995:
So what, in retrospect, have Parnas and Brooks said to us? That software development is a conceptually tough business. That magic solutions are not just around the corner. That it is time for the practitioner to examine evolutionary improvements rather than to wait-or hope-far revolutionary ones [56].
Many evolutionary or incremental improvements have been made or proposed, with...