Wednesday, March 31, 2010

V&V

As a software/system engineer, I can't help but compare the process I follow to provide a product vs. the process our legislatures follow. Maybe I just don't get political science. The process I use may seem a little dry, but even cool products like the iPod and cell phone were not produced by a continuous stream of pizza parties and happy hours (or backroom deals).

Intro

Verification and Validation or "V&V" is the process of making sure that a product does what it was asked to do (Verification) and meets its intended purpose (Validation). In other words, verification is "I did what you asked me to do" and validation is "I met your needs".

In developing software, the process before V&V includes coding (writing the software), compiling (the computer converts your software into a program it can run), and testing (Make sure the program doesn't crash and appears to do what it should). For example, let's write a program that provides health care for every American.

Coding and Compiling

Which of the following two code samples will compile?

Code Sample 1:
for (american=1, american<=NUMBER_OF_AMERICANS, american++) {
provide_healthcare(american)
}

Code Sample 2:
for (american=1; american<=NUMBER_OF_AMERICANS; american++) {
provide_healthcare(american);
}

The answer is Code Sample 2, since a "for" loop uses semi-colons instead of commas and the "provide_healthcare" statement is not terminated with a semi-colon.

I think that one of the main complaints about the healthcare bill is that we don't understand the language required. The legal system is like a big compiler that expects the language to follow very strict rules that your average American is not familiar with.

Testing

Even though the code in sample 2 compiles, it crashes when we run it. The reason is that the computer starts with "0" when for the first American. Here's the fix:

Code Sample 2 Fixed:
for (american=0; american < NUM_AMERICANS; american++) {
provide_healthcare(american);
}


This compiles and runs, but we have to test to make sure the function provide_healthcare does what it says and has no side effects. One problem with software is what is called a "memory leak". This is where the software uses resources and doesn't properly return the resource to the operating system when it's done with it. Eventually the result is that the computer will start getting slow and then eventually crash. For critical applications, this can be very dangerous and precautions need to be taken in advance to recover from a computer crash to avoid catastrophe.

The "memory leak" problem is a big fear for health care reform. This is one of the main problems with Medicare.

Take the word of the Engineer


Another alternative to the above process is to ask the engineer "Is this going to work?". The answer is typically "Yeah, sure". The reality is that relying on this answer is like playing Russian Roulette. Even if the engineer is experienced and answers with confidence "I stake my reputation on this!!!", taking his word is no replacement for a rigorous V&V process.

Back to health care, it doesn't matter who voted for it, what the polls say, what groups (AMA, AARP, etc.) support it; the question is "Will it improve the health of Americans?" A second question (that V&V doesn't address) is "what will it cost?".

No comments: