TrainingConferencesAbout UsContact UsAdvertiseSQE.com

StickyMinds.com: brain food for building better software

Join

Join

Clarify Your Search Criteria
Tips on Using Our Search Feature(s)
StickyMinds.com Home
ResourcesEventsTopicsPowerPassJobs
Software Testing & QA Online Community  >  Detail: What Software Development Projects Can Learn from the Quality Revolution


A StickyMinds.com Original
Article Picture
What Software Development Projects Can Learn from the Quality Revolution

By Clarke Ching

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: The Japanese manufacturing revolution--a combination of lean production, quality techniques, and sheer necessity--lifted the Japanese industrial phoenix out of the ashes of World War II until it eventually dominated world manufacturing. The concepts used to rebuild the empire can easily be applied to the software development industry. In this week's column, Clarke Ching describes why the majority of the software industry has done a poor job of incorporating these quality techniques and reveals the one secret ingredient that makes them easy to adopt.


Tricentis
"Inspection with the aim of finding the bad ones and throwing them out is too late, ineffective, costly. In the first place, you can't find the bad ones, not all of them. Second, it costs too much. Quality comes not from inspection but from improvement of the process." 
[W. Edwards Deming, the American statistician who drove Japan's post-war quality revolution]
 
 
The late W. Edwards Deming, an American statistician, was widely credited with providing much of the know-how and philosophy that drove the Japanese recovery. Ironically, his know-how was developed in America where it was largely ignored. Deming was sent to Japan in 1947, but it wasn't until 1980 when NBC featured him in a television program "If Japan Can ... Why Can't We?" that the West finally took notice. Deming's message slowly spread from Japanese manufacturing into western manufacturing, then into the western service industries. 
 
Deming's key message was to build quality into the processes rather than inspect defects out of a product already built. Although his concepts are acceptable to software development where quality is job number one, the concepts have either not actually been applied or not well. The majority of software development projects still follow the waterfall lifecycle that relies on inspecting defects out, that is, testing the product to remove defects. 
 
Late Inspection 
Late inspection and testing are the simplest, most expensive, and least effective way to find bugs. Before manufacturers adopted modern quality techniques their main approach to removing defects was to inspect each product in the last stage of production once it had been built, but before it was shipped. If the product didn't meet specifications, then it was either reworked or scrapped--both expensive options. Late inspection is prone to human error and rarely finds all defects. 
 
Late inspection is also the model primarily used when doing waterfall software development. Rework (which the waterfall is meant to minimize) is pushed to a phase of the project when fixes are the most expensive, when the cost of change is forty to 100 times greater than if the defect was fixed when it was created (Boehm, 2004). This stage has the least wiggle room time to recover from show-stopper problems or unexpectedly large amounts of rework. This unpredictability becomes one of the main reasons why projects miss their schedules. 
 
Early Inspection 
Recognizing the high cost of late inspection, manufacturers moved back the inspection process by using self and successive inspection. Self inspection involves operators inspecting their output immediately after processing it. Successive inspection happens when operators inspect the inputs from prior processes. The equivalent processes in software development are walk-throughs, inspections, and unit testing. These approaches provide much earlier feedback when the correction costs are much lower, but still rely on human judgment. 
 
Mistake Proofing–-Building Quality into the Process 
A more powerful approach is to design your processes to automatically prevent defects from happening. The Japanese name for such techniques is Poka Yoke, meaning mistake proofing. Poka Yoke has two aspects: prevention and detection. For instance, having different shaped plugs for each type of connection in a PC prevents novices and experts from making mistakes when installing a new PC, and the electric fuses and circuit breakers in your home detect when electrical circuits are overloaded which prevents electrical fires. 
 
Likewise, one of the most common causes of defects-–ambiguous requirements--can be prevented by writing comprehensive acceptance tests when each requirement is captured. Furthermore, automating these tests and running them as part of frequent integration-builds help detect defects when they happen. 
 
The Missing Ingredient 
Deming's core message was that we should stop inspecting defects out of products and start building quality in. Obviously preventing defects or finding them when they are cheapest to fix is preferable to finding them all at the end when they are many, many times more expensive to fix. Yet few software development projects write tests up front, do inspections, or frequent integration despite the benefits.  
 
Why not? Because it is hard work in most environments. It's hard work trying to inspect hundreds of pages of documents. It's hard work trying to write tests for many pages of requirements at the beginning of a project. It is even harder to keep the tests up to date as the requirements change. It's harder still when you realize that you have to inspect the tests.  
 
So what was different in manufacturing environment that allowed manufacturers to adopt an equivalent processes?  
 
The primary difference is that when the Japanese manufacturers adopted Deming's quality practices and philosophy they also adopted what are now known as the lean manufacturing techniques. Lean factories have much less work-in-process compared to traditional factories and this allows them to spot defects much sooner. For instance, compare a factory where it takes three months from when material is released until the product is shipped with a factory where it takes only two days. If a systemic defect occurs in the first process, then it will take three months for the defect to be found in the first factory, but only two days in the second. At the point that the defect is found every product within the factory will have the defect and will need to be scrapped or reworked. The cost of rework and scrap is significantly lower in the factory with lower work-in-process (WIP).  
 
Lean factories achieve much lower levels of WIP by working in smaller batches of work. The equivalent in software development is working in small increments as used by the Agile approaches. It is much easier write tests up front and to automate them when you are working on a much smaller set of functionality at any point in time. When working this way, defects are discovered much sooner, when they are easier to fix, the quality of the application is more transparent, and the odds of delivering on time much higher. 
 
References: 
"Balancing Agility and Discipline: A Guide for the Perplexed" by Barry Boehm and Richard Turner.


About the Author
Clarke Ching (www.clarkeching.com) has worked as a developer, analyst, and project manager and has recently completed an MBA. He is writing a book ( www.rollingrocksdownhill.com) that explains why working in and managing software projects often feels like pushing rocks uphill and shows how to use Lean, Quality and Agile techniques to make them easier, more productive and predictable. He is a New Zealander living in Scotland.

Back to Top
 
 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Mag Studios 1/29/2009

Yes i am appreciate with the author about What Software Development Projects Can Learn from the Quality Revolution the information provided by author is brilliant worked for every software Developer and connected to Software people.

Thanks
MAG Studios
http://www.mag-corp.com

 
 
Comment:    
by Sophia Johnson 10/20/2005

I am a proponent of using the Agile software development process, and yes, there are still software companies that do use a modified Waterfall methodology. Those companies are any that "throw" "feature complete" code over the wall to a QA organization, and do not involve QA until that point in the software development process. And as much as we don't want to admit that we are still not prejudice against what testing has to offer the development process, software development still leans itself to silo'ing and bigotry when it comes to effectively using a software testing / QA department. Additionally, when you mention...Read On

 
 
Comment:    
by Rose Eliff 10/19/2005

"Quality comes not from inspection but from improvement of the process." Amen! When using requirements and functional specifications to derive my test scripts, I've always discovered gaps, additional requirements, flaws and unrealized expectations that required new analysis and subsequent rework of requirements, functional specifications and test scripts. This is far too late in the process to make these discoveries! In a previous job, I convinced the group to allow me to perform validation and verification at the end of each phase of development, from initiation to definition to design, etc. This worked out the majority of the...Read On

 
 
Comment:    
by Damon Beaven 10/19/2005

I think Mike is right. I have struggled to come up w/ a real-life project where I have used waterfall software development. The only thing I can come up w/ are projects from college. Professionally, everything has been agile development, but we didn't call it that b/c we didn't always realize that was what we were doing. My department recently analyzed our testing process pretty closely. What became glaringly obvious to me was that the development was working in an agile environment (even if they didn't know it) and the system testing was assuming that everything was a waterfall process. This is a huge disconnect and a big reason why...Read On

 
 
Comment:    
by Phil Boettge 3/1/2005

The key to preventing mistakes in system and software development is clearly specifying the development goals. Only if we clearly specify the system requirements and how well it needs to work can we know: What do we need to build? How do we know we're done? How do we know it works right? How can we prove to the customer that we built the right thing so our customer will pay us? There are many who maintain that being so specific up front for really effective process improvement to reduce defect injection in systems and software development is simply impossible. Their reasons all boil down to four inherently illogical precepts: 1) ...Read On

 
 
Comment:    
by Shruti A Jaidev 2/24/2005

Quality should start from day one... specially in the software industry. Being a software test engineer, I sometimes wonder why all software companies should not adopt a process wherein test engineers are part of all the discussions from day start. Keeping a tab on the requirements, process flow and the system development will result in better quality products. This in turn saves a lot of time - not to forget the umpteen number of times a defect gets logged and fixed! So saying, the requirement to test a project before its release does not cease; yet, there will be a considerable saving in time (as a result of which, there will be some...Read On

 
 
Comment:    
by John Loney 2/23/2005

Nice stuff Clarke - right on the money. A bit of history from the European cousins - British Leyland in the 1970's, the fore runner of present day Rover, used to literally knock the problems out of their cars at the end of the production track! Not a good quality result! Volvo in Sweden tried a different tack, they formed small groups of workers (5-6 individuals) who assembled the car from start to finish on the line, and the individual workers' responsibility (present speak is 'buy in') improved quality no end. The only question in my mind after some 37 in the IT industry is: why cannot we as so called computer professionals adopt these...Read On

 
 
Comment:    
by John Daughety 2/23/2005

I heard a great speech on XP and it was interesting to note that the discipline supported by a successful team was very strict - it is a basic law that if we think before we act, we may be able to act in a way that is optimal. Deming and Juran and Philip Crosby (one of their disciples, who wrote the book "Quality is Free") all saw this in a world of very high manufacturing costs and long lead times. I like the parallel to software testing, which has the potential to be much more flexible but currently has quality issues that would have sunk any auto manufacturer within a month. I have an question, too: at my current company we...Read On

 
 
Comment:    
by Bernard Homes 2/22/2005

Self inspection is somewhat difficult in software development. Contrary to manufacturing, a piece of software can seldom be compared to a "standard" or "validated" reference the way a hardware item could be. I believe that software development can be compared to building car prototypes but not to manufacturing cars in factories. Thus techniques such as WIP reduction with KANBAN, and other POKA-YOKE can not be implemented with the same efficiency (and results) as when applied to hardware. (Hence no drive for implementation by managers ?) You are perfectly right that building quality in a product is better than picking defects out of it.Read On

 
 
Comment:    
by Andrew Raybould 2/22/2005

I have no argument against the procedures advocated here, but in this article, Clarke uses a rhetorical ploy that is prevalent in thinking about how to improve software development. After discussing a couple of examples of mistake proofing in hardware design, he goes on to write, "Likewise, one of the most common causes of defects – ambiguous requirements - can be prevented by writing comprehensive acceptance tests when each requirement is captured." This is nothing like the mistake proofing he has just described! To anticipate all the interactions, side-effects and other consequences of a set of requirements -- or of design...Read On

 
 
Comment:    
by Ben Goh 2/22/2005

Regardless what techniques are applied and having worked in different companies, I came to realise that it is not the technique but discipline and dedication to execute them. The reason why the 'waterfall' technique is working in Japan, because they have the discipline and determination to implement and execute, which is what we (the western world) are lacking.

 
 
Comment:    
by Robert M Melendez 2/21/2005

Ching's article is the best simple explication I've read for the heart of the quality revolution as it played out in Japan. Waterfall, however, is a poor boogeyman for why American software development hasn't adopted the ideas. To answer Whittaker's comment, I think many software projects use Waterfall, but Waterfall as originally proposed -- gateways between efforts, finish one thing before doing something that depends on it. Waterfall is a simple idea that has been cast into a straightjacket by those trying to program all details of the process. Unfortunately, many projects also use Waterfall in that form. Equally unfortunately, many...Read On

 
 
Comment:    
by Mike Whittaker 2/21/2005

Waterfall software development - does anyone actually do this ? Did it ever exist except as a "how-not-to" ? I would think that most nontrivial projects would use a simple v-model approach at the very least, where there was verification and validation at the different levels of abstraction. Who could afford NOT to ? Or am I idealistic ...

 
 
Comment:    
by Nitianand Ramjattun 2/21/2005

Correct! Wonderful adaptation of these concepts to software quality (-we must admit that this costs a lot... but this will end up with the quality cost v/s cost of quality debate!) Deming also formulated the following "Quality is improved product features and freedom from deficiencies" This definition drives us deeper to see how revenue is related to 'improved product features' and how 'freedom from deficiencies' is related to cost... In software development... post-project bug fixing costs a lot and this is where and why we need to improve software quality through early bug finding. But my view is that Deming (or Juran, Ishikawa...Read On

 
Back to Top



 
Ads By Google
What's This?
 
 



About Us   |   Contact Us   |   Terms & Conditions   |   Privacy Policy   |   RSS Feed



© 2013 StickyMinds.com. All rights reserved.
PNSQC

Tricentis



Agile Development Conference & Better Software Conference West