Verum’s CEO on the business of software engineering.
“Soft” in Software is an Illusion
There’s an old joke dating back to the Y2K issue about a COBOL programmer who makes so much money from fixing Y2K problems in banking software that he decides to take a trip into the future by being put into suspended animation, à la “Vanilla Sky”. “Wake me in 10000 years”, he says.
The next thing he knows is that he’s being woken up by some very concerned looking people. “What’s the date?”, he asks. “2999”, one replies. “Why did you wake me up so soon?”, he asks. “Well”, comes the reply, “it says here that you’re a COBOL programmer..."
One of the biggest fallacies of our time is that software is indeed “soft”. For the last twenty years I have continually heard that it’s hardware that costs money, that it’s hardware that adds value. I once worked in a development group that had 30 people working on hardware and 120 people working on software and yet the organisation’s whole attitude was that they developed and sold hardware. They priced their product in terms of the hardware features and options that they offered. And yet the vast majority of their development costs were software.
After a year or so working for these guys I had a big late evening discussion with the Boss where I tried to convince him that he should price his product based on its software features/value, that he should just give the hardware away for free. He told me that although he appreciated the point, the Big Issue was that the hardware costs appeared on his Bill of Materials and software development costs were written off against capital, were never associated with the cost of sales. The cost price was therefore driven by hardware only and thus the product was priced in terms of its hardware features/value.
This attitude is endemic across the whole embedded industry and has lead to the thinking that software is merely “glue”. If some piece of "hardware" doesn’t work properly, just add more glue. And so the strategic value of software has been consistently ignored. For example, I can guarantee that if you talk to any High Tech Equipment product manager he will be able to tell you down to the last cent what his hardware costs. But try asking him what his software costs are, what value his software has, what economy of scale that he gets from his suppliers and you will come up with a complete blank. Software development costs are a featureless number that appears on a balance sheet somewhere to be mindlessly depreciated.
The result is that very few businesses are aware of what their software has actually cost them to develop over the course of time and how much value that software actually represents. Various studies show that the cost of developing a line of industrial software in the western world falls in the range EUR 20,- to EUR 40,- per line of code. A typical modern day medical X-Ray system may have 15 million lines of code, development cost EUR 300M – EUR 600M. Development effort around 3125 man years. So just think, in the best case, every time one of your programmers presses the return key, it ultimately costs you EUR 20,-.
So let's be clear: Software is Concrete. Once poured it becomes extremely difficult and very expensive to change. And yet the whole industry continues to treat software as if it were malleable. For example, the industry's current obsession with testing, the idea being that adequate and sufficient testing will lead to better quality software. But software is concrete and testing largely occurs after the concrete has set, leading to huge rework costs and associated delays. So yes, testing does lead to better software. But no, it does not lead to a better economic result, a more profitable product, a shorter time to market, a lower cost per feature.
Software development needs to take a leaf out of the Book of Engineering used by other engineering disciplines, disciplines that recognise that they work with concrete. Bridge builders, for instance, know that by the time that concrete is being poured the economic die for their project has been cast, that any mistakes will cost a fortune and probably turn the project into an economic disaster. So they focus their efforts on getting their designs right before anyone even starts mixing concrete. They verify their designs using formal methods, such as Finite Element Analysis, while the design exists only in the memory of a computer. By the time that the design leaves the abstract world of computer memory to be converted into concrete and steel it has been shown that it is fit for purpose and that the risk of economic disaster has been minimised.
Software Design Automation is about giving software designers the tools to do the same thing. Verum's ASD:Suite provides software architects and designers with the ability to formally verify the correctness of their designs; to show that they are fit for purpose; to minimise the testing, rework and ultimately the business risk associated with software development. Additionally, the ASD:Suite is able to automatically generate 'concrete' straight from verified designs, resulting in further cost savings by eliminating a large portion of the manual effort that would otherwise go into programming.
One of my fundamental beliefs is that there's actually very little new under the sun. Software engineers like to think of themselves as being different from other, duller, less free and creative engineering disciplines. They think this because software is abstract, immaterial, something that remains a construct of intellect. But nothing could be further from the truth. Engineering is ultimately about overcoming human limitations, about allowing problems to be composed and decomposed by teams of people working together, whilst ensuring the integrity of the end result. The same principles that underlie bridge building also underlie software development. The sooner that the software industry recognises that, the sooner software development will become an economically sound activity.
Posted on 13/01/2011 by Robert Howe