The document discusses steps that can be taken to improve software correctness. It begins by outlining 10 steps, such as convincing organizations to invest in correctness, aiming for safe and reliable systems, clearly defining specifications, auditing and reviewing code with automated tests, using randomized testing and tracking coverage, and building systems to fail safely. It then notes that effective formal specification tools, system modeling tools, methods for analyzing running systems, and a culture focused on excellence need to be developed. Various software faults, errors, and accidents are analyzed throughout the document.
17. a bug affects the
staging prototype --
@bltroutwine Moonconf, 2016
18.
19. The BUG Heard 'Round
the World
Discussion of The Software Problem Which Delayed the
First Shuttle Orbital Flight
John Garman - 1981
@bltroutwine Moonconf, 2016
20. “Maintaining software
systems in the field, absorbing
large changes or additions in
the middle of development
cycles. . .
@bltroutwine Moonconf, 2016
21. . . . reconfiguring software
systems to ‘fit’ never-quite-
identical vehicles or missions
are our real problems today.”
@bltroutwine Moonconf, 2016
22. That was the late
1970s, have we made
progress?
@bltroutwine Moonconf, 2016
47. “The more faults that pass
undetected into integration test
and beyond, the more the
project will cost and the longer
it will take to complete.”
@bltroutwine Moonconf, 2016
53. Be clear on what
your system must
and mustn’t do.
@bltroutwine Moonconf, 2016
54.
55. The Role of Software in
Spacecraft Accidents
Nancy Leveson - 2004
@bltroutwine Moonconf, 2016
56. “. . .software specifications often
describe nominal behavior well
but are very incomplete with
respect to required software
behavior under off-nominal
conditions . . .
@bltroutwine Moonconf, 2016
61. The Role of Software in
Spacecraft Accidents
Nancy Leveson - 2004
@bltroutwine Moonconf, 2016
62. “It is widely believed that because
software has executed safely in
other applications, it will be safe
in the new one. . .
@bltroutwine Moonconf, 2016
63. (M)ost accidents involve software
that is doing exactly what it was
designed to do (but) it reliably
performs the wrong function.”
@bltroutwine Moonconf, 2016
73. An Evaluation of Randomized
Testing
Joe Duran, *meon Ntafos - 1984
@bltroutwine Moonconf, 2016
74. “Our experiments have
shown that random testing
can discover some relatively
subtle errors without a great
deal of effort.”
@bltroutwine Moonconf, 2016
75. QuickCheck
A Lightweight Tool for Random Testing of Haskell Programs
Coen Claessen, John Hughes - 2000
@bltroutwine Moonconf, 2016
79. An Experimental Evaluation
of the Assumption of
Independence in Multiversion
Programming
Nancy Leveson, John Knight - 1986
@bltroutwine Moonconf, 2016
100. “We assume that such
programs do contain errors,
and investigate methods for
building reliable systems
despite such errors.”
@bltroutwine Moonconf, 2016
101. What must we invent?
@bltroutwine Moonconf, 2016