Verified trustworthy software systems

Modern society is faced with a fundamental problem: the reliability of complex, evolving software systems on which society critically depends cannot be guaranteed by the established, non-mathematical computer engineering techniques such as informal prose specification and ad hoc testing. The situation is worsening: modern companies are moving fast, leaving little time for code analysis and testing; the behaviour of concurrent and distributed programs cannot be adequately assessed using traditional testing methods; users of mobile applications often neglect to apply software fixes; and malicious users increasingly exploit even simple programming errors, causing major security disruptions. Building trustworthy, reliable software is becoming harder and harder to achieve, while new business and cybersecurity challenges make it of escalating critical importance. The challenge is to bring program specification and verification to the heart of the software design process. Most code validation is based on outdated ideas of trusting that the internal, unpublished procedures of a company are robust and the assumption that the developer is not malicious. High-grade industry players, such as aerospace companies, do use sophisticated internal processes and tools to establish some degree of trust in their code, which can then be certified by government bodies such as the UK National Cyber Security Centre. We should, however, be able to do better than this. Software should be judged on fundamental scientific principles, with proper answers to questions such …

[1]  Daniel Kroening,et al.  Program synthesis: challenges and opportunities , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[2]  J. Tait,et al.  Challenges and opportunities. , 1996, Journal of psychiatric and mental health nursing.

[3]  Andrew W. Appel,et al.  Position paper: the science of deep specification , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[4]  Stuart Matthews,et al.  Formal verification: will the seedling ever flower? , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[5]  Mark Batty,et al.  Compositional relaxed concurrency , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[6]  John Launchbury,et al.  The HACMS program: using formal methods to eliminate exploitable bugs , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[7]  Toby Murray,et al.  Provably trustworthy systems , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[8]  Kathleen Fisher Using Formal Methods to Eliminate Exploitable Bugs , 2015 .

[9]  Matt Kaufmann,et al.  Industrial hardware and software verification with ACL2 , 2017, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.