This post from Robert Martin, Stabilization, along with some recent lectures on Cyber-Security (from MIT's Srini Devadas) came together with the insight that both the "patch & pray" cyber security and the passive stabilization process are each pursuing negative goals. In other words, they are trying to prove the absence of bugs or vulnerabilities.
Proving a negative like this is impossible - you'd have imagine and try every conceivable data input or attack vector. Since you can only really prove a positive (when the system get this, it does that) - then as Bob Martin suggests - you need to check that you have high test coverage, and subsequently high code coverage when running those tests - not just x hours of problem free run-time. In the security realm, just because you have a firewall and haven't seen that you've been hacked, you can't simply assume you are safe, you need to test applications for specific attacks, like SQL injection, or by port scanning and verifying that only the ports you need are open.
Have you looked at your system holistically? Are you realizing that you need to work on the weakest link, as that will define the overall stability or security of the system? Your not going to find bugs or vulnerabilities unless you actively look for them. Look to increase the ways in that you can have demonstrable certainty, not just problem free run-time.
Proving a negative like this is impossible - you'd have imagine and try every conceivable data input or attack vector. Since you can only really prove a positive (when the system get this, it does that) - then as Bob Martin suggests - you need to check that you have high test coverage, and subsequently high code coverage when running those tests - not just x hours of problem free run-time. In the security realm, just because you have a firewall and haven't seen that you've been hacked, you can't simply assume you are safe, you need to test applications for specific attacks, like SQL injection, or by port scanning and verifying that only the ports you need are open.
Have you looked at your system holistically? Are you realizing that you need to work on the weakest link, as that will define the overall stability or security of the system? Your not going to find bugs or vulnerabilities unless you actively look for them. Look to increase the ways in that you can have demonstrable certainty, not just problem free run-time.
Comments