On software quality and engineering

Alex Satrapa grail at goldweb.com.au
Mon Nov 4 13:33:10 EST 2002


Michael Still wrote:
> On Mon, 4 Nov 2002, Martin Schwenke wrote:
>>It does take longer to write the the software, but the maintenance
>>costs end up substantially lower...  especially if you get yourself a
>>good proof tool...  :-)
> 
> This is actually lectured on in second year of Engineering at UC. I
> haven't seen it used in the field though.

As anyone knows who's sat through Software Engineering 1, formal proof 
is a very burdensome excercise.  The "proof" for:

   x = y + z;

Is almost a page full of Z notation.

The "proof" for:

for(x = 0; x < 10; x++) {
  # stuff
}

is several pages, and the "proof" for:

x = 1;
while(x>0) {
   if (somecondition()) {
     x = 0;
   }
}

is practically impossible (without fully unrolling the loop in Z).

Then you have to prove that your proof is correct! (And that your method 
of proof is correct, etc).

> How many people on the planet can honestly say they
> understanding their chosen language(s) fully?

I'm a Perl programmer.  There is noone who can say that they truly 
understand Perl - not even Larry Wall!

Thus, since no man can claim to understand Perl, I conclude that Perl is 
a Woman - and you can only ever love Perl, not understand her ;)

> I think complexity is the killer.
> 
> ...  we still have to
> impose a code freeze in order to introduce stability in the released
> product.

That's not so much due to the complexity of the product, as much as the 
political environment it's being developed in.  I was building a 
"simple" (chortle chortle) web interface for an RTF -> HTML publishing 
system.  I knew from the start that specifications would change, and I 
knew which specifications were most likely to change - so I wrote those 
pieces to be "general" from the start.  My converter was configured 
using Config::IniFiles (I'm heavily biased towards using that module for 
configuration), and most aspects of the system were tested using the 
Test module.  That was the first system I wrote test-first, and was the 
most fun I ever had.

> How do you get around this? I suspect a lot of the answer is "the unix
> way" anyway. Many small, well tested apps, which integrate together well.

Gee... i always thought "the unix way" meant many applications of 
various sizes that use conflicting mnemonics for their command line 
parameters (eg: "-y" meaning variously "yes to all", "yes to safe 
questions" or "turn on syntax colouring" ;) (and no, I can't remember 
the program which used "-y" for "syntax colouring" and "-a" for 
"affirmative to all safe prompts")

Alex





More information about the linux mailing list