Re: [SystemSafety] Qualifying SW as "proven in use" [Measuring Software]

From: Les Chambers < >
Date: Wed, 3 Jul 2013 17:16:31 +1000


Steve

I'm in furious agreement with all your points. I've spent a 38 year career making these arguments to many companies. But I also agree with Tom DeMarco and his famous quote: "Quality is free but only if you are willing to pay dearly for it." To be explicit about my statement: quality software is expensive relative to the expectations of the people who allocate the capital. Unfortunately most of these people have never been up to their elbows in crap software and seen the disgusting waste that it triggers. They therefore seem quite happy to allocate capital to fixing a problem but are reluctant to spend money on preventing one. The pitch: "... give me money so I can have requirements reviews, design reviews, code reviews, an independent V&V group, an adequately sized test team, time to test properly including retesting after bug fixes, an automated test environment, a realistic schedule that accounts for all this ..." As you probably well know, usually attracts the response: "... so what's my return on investment?". And the classic answer to that one is:" Well sir, nothing bad will happen until you." I've lived through this scenario more times than I care to remember. It makes you feel like the little guy in this picture: http://www.chambers.com.au/services/mentoring/mentoring.php .

Unfortunately for someone who's never seen as a disaster or thinks rolling disaster is normal, this is not a very convincing argument.

To compound the problem there are situations in which a tiger team of very good people can produce a high-quality software product with none of the above. Management loves to pounce on these anecdotes, ignoring the reality that they are personality and situationally dependent and do not scale. I have lived through this scenario. I was once on the management team on a small company that built weigh bridge automation systems. Our average project was $50,000. As a result of some bad experiences we decided to clean up our act. Documentation was created where none existed, testing was done where it was previously ad hoc. Then we found that we had a problem getting out of bed for less than $100,000. Our traditional marketplace ditched us in favour of backyard operations staffed by tiger teams that could do a similar job for half the price. This is a good news story though. We found we could take on larger projects and became more attractive to larger companies with bigger budgets, so our profits increased (standby for an article on this subject).

In general I live in hope that this situation will improve as management matures and the people who are writing code today move up to senior management positions. I actually saw this happen in one very large American corporation. In the meantime I think the only solution is to do what you're doing: get the numbers, make a business case and make it defensible so the powers that be have no choice. Cross-cultural education is also a great idea. I recall Nancy Leveson tried this once. She went down to the Harvard Business School to lecture on safe software (was it to some merchant bankers?). They were very rude to her. The experience may have scarred her for life. (Could you tell that story again Nancy?).

Ah well - all we can do is collect the numbers, keep the faith and maintain the rage.

Cheers

Les    

From: Steve Tockey [mailto:Steve.Tockey_at_xxxxxx Sent: Wednesday, July 3, 2013 2:43 PM
To: Les Chambers
Cc: martyn_at_xxxxxx Subject: Re: [SystemSafety] Qualifying SW as "proven in use" [Measuring Software]    

Les,

Google is an interesting "special case", IMHO. Specifically, how would you even know if Google gave you the right answer or not? You enter search terms, back comes some set of pages. But are those the RIGHT pages? How would one even know?  

I doubt anyone's life is on the line over Google, Facebook, Twitter, etc and that's definitely a good thing. The number of times that Facebook completely crashes on my iPhone and iPad is astounding. The FB Mobile team are rapidly approaching the top of my "World's Worst Programmers" list.  

"You just can't get away from it: high-quality software is expensive."
 

This is where we probably disagree. If you read that "How Healthy is your Software Process" paper, you will see that the #1 cost and schedule driver on a typical project is rework (waste), and that it is normally bigger than all other project cost and schedule drivers ***combined***. We actually measured the R% in one development organization that had about 350 programmers. The as-measured R% was 56.9%. Bluntly, for every 1000 hours those 350 developers worked 569 hours were fixing defects that had been made earlier. Only 431 hours out of every 1000 were actual progress toward finishing the project.  

I don't have the absolute data to prove it (because the projects were done before the idea of R% was brought out just a few years ago), but I'm convinced that if we could have measured R% on several of my past projects that it would be no greater than 10%. So if my project and some other project have the same amount of "work" to do, but my R% is only 10% and the other projects R% is closer to 60%, then my project will deliver the same amount of functionality in about half the time and for about half the cost.  

Seriously, as Phillip Crosby said, "Quality is Free". While Crosby was referring specifically to manufacturing organizations, his basic premise that "there is so much waste in typical organizations that improvements in up-stream quality not only make for better products, but cost and schedule go down at the same time". I've seen it, it's real.  

I have no disagreement with the statement that "Software is expensive". But in my experience "high quality software is actually cheaper than typical software".    

From: Les Chambers <les_at_xxxxxx Date: Tuesday, July 2, 2013 5:27 PM
To: Steve Tockey <Steve.Tockey_at_xxxxxx Cc: "martyn_at_xxxxxx
"systemsafety_at_xxxxxx de>
Subject: RE: [SystemSafety] Qualifying SW as "proven in use" [Measuring Software]  

Steve

Code evaluation can sometimes be possible in unit level testing when you are dealing with smaller code bodies, especially if you have automated tools. Of course it should be done in the development environment. I agree with you that it's impossible in integration and system level testing. I heard an extreme case the other day: a Google tester related that, in his development career, he was making a small change to some server software when he noticed there were more than 100,000 artefacts in the build. Companies like Google face extreme real-world conditions. The same man went to the managers of Google server farms and laid out his machine requirements into the future for testing. He said, "These guys were pretty blunt. They said fine, you can have all that machine time but we'll have to shut Google down to give it to you." So the test team came up with an innovative solution: they tested every second mod. I hope nobody's life is on the line over a Google query.

You just can't get away from it: high-quality software is expensive.

Les  

From: Steve Tockey [mailto:Steve.Tockey_at_xxxxxx Sent: Tuesday, July 2, 2013 8:47 AM
To: Les Chambers
Cc: martyn_at_xxxxxx Subject: Re: [SystemSafety] Qualifying SW as "proven in use" [Measuring Software]    

Les,

I think that sounds good in theory but it may not work effectively in practice. The issue is that almost all of the test teams I know don't have inside (aka "white box") knowledge of the software they are testing. They are approaching it purely from an external ("black box") perspective. They can't tell if the code has high cyclomatic complexity or not.  

In principle, testers should be given the authority to reject a piece of crap product. That's their job in all other industries. But in software (non-critical, mind you), testing is usually a window dressing that's mostly overridden if it meant threatening promised ship dates.    

ҵ iPad  

On Jul 1, 2013, at 2:36 PM, "Les Chambers" <les_at_xxxxxx

Steve

One way to achieve this is to empower test teams. Management issues an encyclical that: SOFTWARE IS NOT A GIVEN. That is, "If it's too complex to test effectively - reject it. Don't waste your time composing feckless tests for crap software. Send it back to it heathen authors.

Kill it before it gets into production.

Les

On 02/07/2013, at 3:16 AM, Steve Tockey <Steve.Tockey_at_xxxxxx  

Martyn,

My preference would be that things like low cyclomatic complexity be considered basic standards of professional practice, well before one even started talking about a safety case. Software with ridiculous complexities shouldn't even be allowed to start making a safety case in the first place.    

From: Martyn Thomas <martyn_at_xxxxxx Reply-To: "martyn_at_xxxxxx Date: Monday, July 1, 2013 10:04 AM
Cc: "systemsafety_at_xxxxxx <systemsafety_at_xxxxxx Subject: Re: [SystemSafety] Qualifying SW as "proven in use" [Measuring Software]  

Steve

It would indeed be hard to make a strong safety case for a system whose software was "full of defects".

High cyclomatic complexity may make this more likely and if a regulator wanted to insist on low complexity as a certification criterion I doubt that few would complain. Simple is good - it reduces costs, in my experience.

But if a regulator allowed low complexity as a evidence for an acceptably low defect density, as part of a safety case, then I'd have strong reservations. Let me put it this way: if there's serious money to be made by developing a tool that inputs arbitrary software and outputs software with low cyclomatic complexity, there won't be a shortage of candidate tools - but safety won't improve. And if you have a way to prove, reliably, that the output from such a tool is functionally equivalent to the input, then that's a major breakthrough and I'd like to discuss it further.

Martyn

On 01/07/2013 17:18, Steve Tockey wrote:

Martyn,  

"The safety goal is to have sufficient evidence to justify high
confidence that the software has specific properties that have been determined to be critical for the safety of a particular system in a particular operating environment."  

Agreed, but my fundamental issue is (ignoring the obviously contrived cases where the defects are in non-safety related functionality) how could software--or the larger system it's embedded in--be considered "safe" if the software is full of defects? Surely there are many elements that go into making safe software. But just as surely, IMHO, the quality of that software is one of those elements. And if we can't get the software quality right, then the others might be somewhat moot?  



The System Safety Mailing List
systemsafety_at_xxxxxx


The System Safety Mailing List
systemsafety_at_xxxxxx Received on Wed Jul 03 2013 - 09:16:51 CEST

This archive was generated by hypermail 2.3.0 : Sat Apr 20 2019 - 00:17:06 CEST