We launched the DAASE project on the 16th October 2012, Ada Lovelace day. What an auspicious day for us to launch our project, concerned as it is, with the problem of optimising software code using automated search techniques. At the meeting we reminded ourselves of Ada Augusta Lovelace’s insights, written nearly two centuries previously:
“The order in which the operations shall be performed in every particular case is a very interesting and curious question, on which our space does not permit us fully to enter. In almost every computation a great variety of arrangements for the succession of the processes is possible, and various considerations must influence the selection amongst them for the purposes of a Calculating Engine. One essential object is to choose that arrangement which shall tend to reduce to a minimum the time necessary for completing the calculation.”
(AAL, Note D on the Analytical Engine, 1837)
How prescient these words have turned out to be. Of course, Lovelace is much better known for the quote from Note A on the analytical engine:
“We may say most aptly, that the Analytical Engine weaves algebraical patterns just as the Jacquard loom weaves flowers and leaves.”
(AAL, Note A on the Analytical Engine, 1837)
Perhaps the notoriety of this quotation is hardly surprisingly, coming as it does from the daughter of a poet and a mathematician. What more evocative statement can there be about the subtlety and delight of programming than this statement, uniting the scientific and aesthetic qualities of software?
However, it is this first quote (Note D) in which Lovelace, not only recognises the vital importance of software, but the critical role played by optimisation on the behaviour of software. Her words, written 175 years before our meeting, remain relevant and important to us today. Perhaps they are even more important to us than they were in her own day, illuminated only by gaslight (Thomas Edison would not be born for another 10 years).
In our project we seek not merely to automatically rearrange the order in which the operations are performed, but also to automatically re-engineer new versions of programs which can meet multiple conflicting and completing objectives.
We wish to change, fundamentally, the perception of software from being a craft-based artefact, produced by the skill of human hands, guided by human brains. To us, software is an engineering material, that can and should produced by automated construction and reconstruction, evolution and revolution. The role of the human brain is retained in the description of the objectives to be met. In our vision, these become translated into fitness functions which guide the construction and post-deployment evolution of the software.
In so doing we address the original goals of the many declarative programming and self-adaptive systems initiatives: leading software engineers away from the messy details of how software should achieve its goals to the more valuable role of describing what those objectives should be so that systems can be truly self-adaptive; reconstructing itself, in situ, to respond to its changing environment.
We seek not merely to reduce to a minimum the time necessary (making software faster), but also to attack a wide range of other so-called “non-functional” properties of software (throughput, power consumption, security attack surface; anything that can be described and measured about the behaviour of a system).
We hope that we should be able to change the way in which software is developed. Instead of writing one program by hand to meet one specific objective, we will seek to deploy the optimisation into the code so that it can re-optimise and re-balance itself as its operating environment changes.
Software engineers are both blessed and cursed by the supreme flexibility of their intangible engineering material. DAASE will focus on the blessing. We may say most aptly, that the DAASE project weaves together optimisation and operation so that software becomes dynamically adaptive.