

Re: Special Bulletin ANS-063.02 BOD Meeting

>Complex software *can* be more tractable than equally complex hardware, 
>because software is a much more malleable medium.

Well, you can certainly say that hardware and software are different,
but they're not as different as they once were. Software is now a
vital component of the tools used to design hardware. Just look at how
a new CPU chip is designed and tested, for example.

Hardware design cycles now look a lot like "code, compile, test,
repeat" except that when the "compile" step involves fabricating a
chip or even just a circuit board, a lot more time and money is

That's why simulation is an essential extra step. It's now fairly easy
to build a faithful computer simulation of whatever hardware you
design, at least if it's an electrical circuit. It may take a lot of
CPU cycles to execute, but they're getting freer by the minute. As
with any design, the hard part is figuring out just how to test it.
But because the simulation is in software, it can be readily
duplicated and given to any number of people to play with in their own

It's this inherently parallel, scalable property of software testing
that makes it possible to construct highly complex systems that are
nonetheless remarkably reliable. Bugs repeatedly missed by one person
may be immediately obvious to another. As Eric Raymond paraphrases
Linux Torvalds: with enough eyeballs, all bugs are shallow.  That's
the basic principle behind open source, and why (say) Linux is far
more stable and reliable than (say) Windows.

