Defense Advanced Research Projects AgencyTagged Content List

Software Programming

Pushing the boundaries of computer coding, including language development

Showing 3 results for Programming + Automation RSS
07/02/2019
The Department of Defense (DoD) increasingly relies on software systems to deliver needed functionality, capabilities, and security. However, the rapid pace of software innovation, evolving regulatory requirements, an ever-growing need for stronger system security, and other factors require continual updating and modernization efforts. These produce untenable increases in system complexity and shift the bulk of system costs and developer focus from design and development to maintenance. As this trend continues, the cost and effort required to maintain current systems might constrain DoD’s ability to develop new software-based capabilities.
Dramatic success in machine learning has led to a torrent of Artificial Intelligence (AI) applications. Continued advances promise to produce autonomous systems that will perceive, learn, decide, and act on their own. However, the effectiveness of these systems is limited by the machine’s current inability to explain their decisions and actions to human users (Figure 1). The Department of Defense (DoD) is facing challenges that demand more intelligent, autonomous, and symbiotic systems. Explainable AI—especially explainable machine learning—will be essential if future warfighters are to understand, appropriately trust, and effectively manage an emerging generation of artificially intelligent machine partners.
Managing complexity is a central problem in software engineering. A common approach to address this challenge is concretization, in which a software engineer makes decisions based on a set of apparently or almost equivalent options to enable the resulting code to compile. Concretization makes the process of software development more controllable, allowing the engineer to define and implement an architecture, divide the development tasks into manageable parts, establish conventions to enable their integration, and integrate them into a cohesive software system.