I would like to start promoting one very effective technique for use in software design. The technique is called FMEA which stands for Failure Mode and Effect Analysis. It’s originating from automotive industry and mostly popular in plant maintenance and product quality. There are two branches of this analytical method: Design FMEA and Process FMEA. The Process FMEA refers to the manufacturing process, and not as interesting as Design FMEA for software development, given that manufacturing for software (compilation e.g.) is less critical than design flaws. Having said that, I see no issue to implement FMEA in its pure substance to any process.
So what is it exactly? FMEA is a method to predict and prevent failures by deep analysis of potential scenarios and quantifying the risks, likelihood, and aftermaths. But what is more important, you could take control over the situation and reduce probability of disaster to something small. It is not difficult, it is just dedication of your engineers and rights tools in place. Just remember, this technique makes sense before something happened, it is not an “after the fact” exercise.
Why do I think it is important for software development industry? Let’s take security software design. Trouble with that division is uncertainty. Users are not typically aware of many threats before the threats are revealed. That’s a fine edge. If you are not aware, you are still at risk and severity of the potential accident (rootkit at a business server) could be awful. It brings a huge burden on security software manufacturers shoulders, because they are accountable to predict bad things happening to their customers, although customers may never know about those bad things. It is not easy even for a serious software manufacturer to foresee all tricks from the dark side, but it is exactly when this technique should come to play, because it facilitates thinking and technical imagination. Imagination is something you truly need while dealing with unexpected. So I will continue developing this topic — Failure Mode and Effect Analysis in software design — adapting existing models and tools, stay tuned. In the meantime, I’m ready to assist and consult whoever is interested. My email is in the Contact page.