While developers push updates to their software every day, one organization is working on eliminating the need for those updates. The Defense Advanced Research Projects Agency (DARPA) has announced a four-year research initiative to create software that lasts for 100 years.
“Technology inevitably evolves, but very often corresponding changes in libraries, data formats, protocols, input characteristics and models of components in a software ecosystem undermine the behavior of applications,” said Suresh Jagannathan, program manager at DARPA. “The inability to seamlessly adapt to new operating conditions undermines productivity, hampers the development of cyber-secure infrastructure, and raises the long-term risk that access to important digital content will be lost as the software that generates and interprets content becomes outdated.”
The initiative, called Building Resources Adaptive Software Systems (BRASS), will look at computational and algorithmic requirements necessary to create software that remains functional for 100 years. According to DARPA, the software should be able to adapt to changes in resources and environments without needing a programmer to intervene. The initiative is expected to enhance software resiliency, reliability and maintainability, as well as create the need for new linguistic abstractions, formal methods, and resource-aware programs.
“Ensuring applications continue to function correctly and efficiently in the face of a changing operational environment is a formidable challenge,” said Jagannathan. “Failure to respond to these changes can result in technically inferior and potentially vulnerable systems. Equally concerning, the lack of automated upgrade mechanisms to restructure and transform applications leads to high software maintenance costs and premature obsolescence of otherwise functionally sound software.”
The approach BRASS will take to develop this kind of software design will be completely new, according to DARPA. It will require composition and adaption, and it will lead to the discovery of new kinds of specifications that capture the relationship between computations, resources and algorithms.
More information is available here.