Sunday, January 08, 2006

Software engineering

Via slashdot comes an interesting article in IEEE Spectrum (warning: it's long!) on computer software that just "can't afford to have bugs". Evidently, we are not talking about Window$ here, but it's not that difficult to imagine situations where bugs are just not allowed; think moon mission and air traffic control.

The article is about Praxis High Integrity Systems, a company that specializes in delivering such mission-critical software systems. It was "founded in 1983 by a group of software experts who firmly believed they could put together a sound methodology to ruthlessly exterminate bugs during all stages of a software project." From the article:

At the time, the software world was in a malaise that it hasn't fully shaken even today. [...] Software projects were getting larger and more complex, and as many as 70 percent of them, by some estimates, were running into trouble: going over budget, missing deadlines, or collapsing completely. Even projects considered successful were sometimes delivering software without all the features that had been promised or with too many errors—errors that, as in the missile-firing system, were sometimes extremely serious. The personal computer era, then just starting, only reinforced a development routine of "compile first, debug later."

It goes on to state how this small company has mastered the art of bug-free software. What is 'bug-free' in this context?

With an average of less than one error in every 10,000 lines of delivered code, however, Praxis claims a bug rate that is at least 50—and possibly as much as 1000—times better than the industry standard.

In order to achieve such a low level of bugs in its software, the company makes extensive use of mathematical logic (in the form of 'formal methods') and -- this one is for Dilip -- the "latest software engineering techniques".