Monday, May 14, 2012

Driving a data center

Did we all know this about the Chevrolet "VOLT" all electric automobile?
When you push the start button, you’ve got 10 million lines of software running. On an F-15, it’s about eight million lines of code. You’re really driving a modern data center, and a lot can go wrong

Good grief! What ever happened to the VW Beetle? I could pull the whole engine in less than an hour!

If General Motors doesn't do much better than other large software developers, drivers of software-complex vehicles might expect 1-3 thousand coding errors per million lines of code (0.999 to 0.997 error free, or about 3 sigma), although a successful Six Sigma program might improve on that by almost 1000:1 and get to 3-5 faults per million (0.999997 error free)--certainly more reassuring as you speed down the highway.

The problem, of course, is that physical systems always work the way they are designed to work. The problem lies in complexity: complexity is all about complicated systems (systems with a lot of parts) that have many--really, too many--interrelated interactions that are all but holistically unpredictable. As designers, we simply don't know what we've designed and thus we can't predict how the systems will actually work. Even chaotic systems work the way they were designed, but who knew?!

An interesting study on the sources of errors, the rate of discovery, and the point in the life cycle when the discovery is made is given in this industry consultant's study done in 2008.

This study is all done in function points; then are a non-physical relative measure of functionality, something like a story point in agile metrics. Like story points, you can measure velocity and create benchmarks. One wonders if we have had FPs for about 30 years, why do we need SPs?  If you want to know more about FP, here's a tutorial that'll get you started: click here.

By the way, Capers Jones, who wrote the report, puts agile projects sort of in the middle of the road vis a vis quality. Of course, you don't find agile projects in high reliability safety centric systems; there're great for designing games, but I'm not sure I want to go down the highway with my electronic brakes depending on the whim of a customer's idea of how it should work.



Delicious Bookmark this on Delicious