What is the main structure of the essay? (10)
• Introduction - what is buggy software
• Why it’s important - implications
○ Medical/nuclear - fatal (Therac-25 1986-87)
○ Embedded systems - finance (Intel Pentium 1994)
○ High risk/complex science - robust (Mars Orbiter 1998)
• How to combat buggy software - preventions
○ Good software practice
○ Fault tolerance systems
○ Formal verification
○ Programming language innovations
What are implications of buggy software? (3)
Expand on the first implication
If software is incorrect or ‘buggy’ in a safety-critical system, such as a nuclear reactor controller or medicals surgery system, then a software error could cause loss of human life
Give an example of the first implication (2)
Expand on the second implication
Software errors could also have financial consequences, such as embedded systems being recalled or compensation for commercial sold systems injuring and failing.
Give an example of the second implication (2)
Expand on the third implication
High risk and cost complex systems require very robust software, such as expensive scientific experiments.
Give an example of the third implication (2)
What are the ways to combat buggy software? (4)
a. What does good software practice mean?
Conforming to common rules of software development to improve the quality of software code
a. What is an advantage & disadvantage of good software practice? (2)
a. What are two approaches to good software practice? (2)
* Code Review
a. What is Test Driven Development?
Writing tests before you write just enough production code to fulfill that test and refactoring
a. What is Code Review?
A systematic examination of source code, where a developer walks through the code
b. What are Fault Tolerance Systems?
Systems that can continue to function in presence of failures or faults in its hardware or software.
b. What is an advantage & disadvantage of Fault Tolerance Systems? (2)
b. What are two approaches to Fault Tolerance Systems? (2)
* Chaos Monkey
b. What is Erlang? (2)
b. What is Chaos Monkey?
A software tool developed by Netflix engineers to ensure the robustness and resiliency of their Amazon Web Services by simulating failures of certain services bu shutting down some virtual machines.
c. What is Formal Verification?
Mathematically proving the correctness of a design with respect to a mathematical formal specification.
c. What is an advantage & disadvantage of Formal Verification? (2)
c. What are two approaches to Formal Verification? (2)
* Equivalence Checking
c. What is Model Checking?
Verifies whether a particular set of properties holds true for a design.
c. What is Equivalence Checking?
Compares two versions of a design to make sure they are functionally equivalent.