Robust Nonproprietary Software
Peter G. Neumann · 2000
Our ultimate goal here is to be able to develop robust systems and applications that are capable of satisfying serious requirements, not merely for security but also for reliability, fault tolerance, human safety, and survivability in the face of a wide range of realistic adversities – including hardware malfunctions, software glitches, inadvertent human actions, massive coordinated attacks, and acts of God. Also relevant are additional operational requirements such as interoperability, evolvability and maintainability, as well as discipline in the software development process. Despite all our past research, development of commercial systems is decidedly suboptimal with respect to meeting stringent requirements. This brief paper examines the applicability of some alternative paradigms. To be precise about our terminology, we distinguish here