Software Engineering is a discipline that aims at producing high-quality software through a systematic, well-planned approach to software development.
It contains many good practices, following the standards to achieve the quality product. The three main phases of Software Development are Analysis – Design – Implementation. To accomplish high-quality software, it is essential to produce a defect-free product.
What You Will Learn:
Software Process Engineering
A defect is an unexpected or undesired behavior that occurs in the product. Anything related to a defect is a continual process, not a particular state.
Finding and fixing defects in the early stages of Software Development reduces time, rework and money. Finding the defect in later stages always costs multiple times more than the early stages. It enhances quality by adding reliability, portability, maintainability, etc.
Hence it is advisable that every company should go with a Defect management system and defect management team at every stage of the development to attain good quality in products and to gain customer confidence.
One such mistake-proofing technique is POKA-YOKE.
What is Poka-Yoke?
It’s a quality assurance process introduced by Japanese engineer Shigeo Shingo. This term is used in the Japanese language as “Poka” meaning mistake and “Yoke” meaning prevent i.e. mistake preventing or mistake-proofing technique.
The purpose of Poka-Yoke is to develop processes to reduce defects by avoiding or correcting (design to show alerts or warning messages to the user) mistakes in early design and development phases. This technique is mostly used in manufacturing industries but now this effective technique is also adapted to software development processes as well.
Poka-Yoke example from the manufacturing industry
A good example of the Poka-Yoke design from the manufacturing industry – SIM card slots in cell phones are designed in such a way that the user is allowed to insert SIM cards in a correct way only. There is no chance for the user to make a mistake while putting the SIM card on a cell phone. This makes the design mistake proof.
Poka-Yoke example from a Software Application
The perfect example of the Poka-yoke process in the Software Application is – Gmail email attachments feature – when you type the word “find attached” while composing a new email and try to send it without attaching a file Google will show you a pop-up reminder saying that you used words “find attached” in your email but did not attach any files, do you still want to continue sending?
How Does Poka-Yoke Technique Work?
Steps to Implement the Poka-Yoke Process:
Below are a few steps to design and implement a process to prevent Software Defects:
- List all user scenarios and end-to-end test cases for the application.
- Analyze all these user scenarios by asking the 5-whys questions to understand the ways these scenarios can fail.
- Once you identify the ways these user scenarios can be wrong, you can design and apply a Poka-Yoke technique to avoid the possible problems (For Example, this design could be a simple Unit test to check if any function that was written is working properly or not).
- Make sure the technique is designed to avoid defects that are working properly by giving errors or warning messages for incorrect input or handling of user scenarios.
- Once the trial is passed, add this technique to the list of Poka-Yoke processes to be performed each time on a new release/build. (In the above Unit testing example, once the unit test is written to check the function code, check if it is working for positive and negative values. When this test passes, add it to the repository of “Unit tests” to be executed each time any changes are made to the relevant modules)
- Measure the success of this Poka-Yoke process. Check if this technique has really prevented or caught defects when happening.
Categories of Poka-Yoke
- Defect Prevention
- Defect Detection
Defect Prevention is the most important activity in SDLC. This method is used to identify all possible issues and actions needed to eliminate those issues. Many software defects can be prevented in the design phase itself.
The Quality Assurance team can help to prevent these defects by reviewing the Software Requirement Specification documents. All issues identified at this stage are addressed in the software coding phase and prevented from being carried to later stages.
The manufacturing and software industry examples provided above are good examples of defect prevention techniques.
Defect Detection is the most common task for quality assurance teams. QA teams use various approaches and strategies for executing test cases effectively. Defects are detected by many other testing methods like Smoke and Exploratory testing.
What are the Qualities of a Good Poka-Yoke Process?
- Poka-Yoke should be simple to create and maintain. It should be easy to handle and cost-effective. Maintaining a complex Poka-Yoke is time-consuming and often results in issues if not maintained properly.
- Poka-Yoke should be designed early in SDLC so that it can detect issues quickly.
- Good Poka-Yoke should be accurate enough to find issues when they occur.
- A good Poka-Yoke should be designed in such a way that it should stop the most common issues occurring in the software.
- It should be part of the Software Design and Coding process.
Need for Poka-Yoke in Software Design Phase
To develop quality software, it is important to design it according to the user’s expectations. The user should be able to use/handle the software with ease without making any costly mistakes.
Poka-Yoke examples in design and quality
#1) An example of missing attachment files while composing an email using Gmail.
#2) Some websites show the password strength indicator to show password strength. It also guides users to use a strong password with the combinations of characters and numbers.
#3) Google search engine feature to auto-suggest spelling corrections for the user search query. This helps the users to avoid making inadvertent mistakes.
#4) Banking websites use a double text field feature to accept sensitive information like passwords or account numbers. The second text field is usually encrypted to avoid making any mistakes while providing the input value and to check if both the text field values match.
The need for Poka-Yoke in Software Development
From countless industry examples, it’s now well known that the cost of fixing a defect after product release is many times greater than fixing it in the development cycle.
Further reading =>> What is the Cost of Quality (COQ)?
The best solution to avoid post-release issues is introducing the Poka-Yoke techniques which could catch defects in early development phases making it cheaper to fix. The Poka-Yoke process implementation largely depends on the Tester’s ability to capture and eliminate the issues.
Poka-Yoke examples in Software Development
- Unit testing is one of the most effective means of mistake-proofing software development.
- Having validation of Poka-Yoke in the kit is always a good suggestion for developers. Validation mistakes should be handled in your code. These validation issues should be revisited and updated periodically.
- A common and most effective Poka-Yoke is to hire the right candidates to mistake-proof your software.
Making mistakes is OK; just don’t make the same mistake again and again. To avoid making the same mistakes again there should be some checks or processes in place. Poka-Yoke techniques are developed to solve this problem.Article References:
- Shigeo Shingo, Zero Quality Control
- Wikipedia reference
- Boris Beizer, Software Testing Techniques, 2nd ed. Van Nostrand Reinhold
About Author: This is a guest post by Nataraj Kanchyani. He is working as a Senior Software Engineer-Testing at Centurylink Technologies India Pvt Ltd, Bangalore.
Do you have any experience working on this technique? Or have you ever worked on developing such defect prevention and detection processes? Let us know in the comments below.