Study On Defect Prevention Information Technology Essay
This paper discuss different defect prevention techniques commonly used in software development phase to prevent defect in future. This paper also discuss positive and negative aspects of defect prevention techniques, alternative techniques, cost benefit analysis of defect prevention techniques and lastly recommendation for a defect prevention technique that can be used in different phase of development life cycle.
Keywords- Defect prevention, defect prevention technique, cost and benefit analysis
Defect prevention is one of the most vital but normally ignored facets in software quality assurance process in any software project. The success factor of any software organization depends on the quality of the product they delivered to the market. Defect must be controlled in any software product to maintain its quality for which defect prevention can have significant impact in controlling defects .
Defect prevention aims in controlling the defects to occur in later stages of development phases by following certain techniques for prevention in early stage so that time and cost are condensed at later stages of development with high quality product output. In defect prevention framework, defects data are collected, perform cause analysis, determine and implement the counteractive actions and share the lesson learned to prevent future defects . The main challenge of the software engineer is to develop a software product with minimizing post deployment defects. Defect prevention can play key role in this process.
In this report, section 2 describes different commonly used defect prevention techniques, section 3 discuss about alternative techniques that can be used as defect prevention techniques. Similarly, section 4 describe about cost and benefit analysis of defection prevention techniques and lastly in section 5, authors put recommendation of different type of defect prevention techniques that can be used in different phase of project lifecycle.
Defect prevention definition
Defects in software can lead to an undesirable situation at end. The word defect in software engineering refers to a fault, an error or failure [1, 2]. IEEE defines fault as “an incorrect step, process or data definition in a computer program”. Error is defined as “human action that produces an incorrect result”. And, failure is defined as “The inability of a system or component to perform its required functions within specified performance requirements” . A defect introduced at early stage of software development can propagate and create complex situation which, in turn, becomes more serious and costly to remove or fix it. Defection prevention is a proactive process that focuses on how to block a defect entering into software product. So, preventive activities are necessary to be implemented throughout the project lifecycle. It is evident that if the defects are prevented to enter into the product, it only not saves the time to detect and correct it but also reduce the cost of product with improved quality.
Defect prevention is a process that identifies defect, its root causes and applicable preventive measures beforehand during the product lifecycle. Most of the literature includes corrective and preventive activities together in defect prevention [4, 5, 6]. However, it is worthwhile if the defect prevention is proactive rather than reactive.
The defects can be prevented to enter into the software product in certain extend by increasing awareness through training in beforehand, by use of formal requirement specification and design, specific tools, well defined techniques and standards etc [7,8]. Some of the major techniques are described in the following section.
defect prevention techniques
Joint Application Development (JAD)
Joint Application Development (JAD) is a technique to join different people like developers, testers, designers, customers to form a collaborative team or group in software development. JAD is performed in a structured integration of group members for interaction and collaboration. It is practiced to prepare a high quality requirement specification documents in requirement engineering process . The JAD process is based on the four core ideas .
Work-experienced people have the deep understandings of the job.
Trained people in software development field have strong understanding of the possibilities of technology and its use.
The software development process and business process do the job in same basic conduct.
Best product is developed when the activities are performed in collaborative environment.
Knowledge and understanding from different people are used to perform a task that helps to alleviate common mistakes.
Active participation of technical people like developers, testers, designers and non technical people like end-users, customers working together helps to develop unambiguous, detail and commonly agreed requirements.
Wrong problem can be address due to lack of homework of participants.
Wrong people can be invited by the JAD organizer due to poor selection criteria.
Unequal participation from participants may happen if the facilitator does not pay enough attention. The consequence is: opinions, ideas only from certain people are included.
Failure modes and effects analysis (FMEA)
Failure modes and effects analysis is an analytical technique of defect prevention used in the early stage of design. It helps to identify the potential failure modes and prioritize them according to the serious impacts, likelihood of frequent occurrence. It provides which defects may have the serious impacts and what preventive actions can be used in the early stage of design [10, 11].
Identify and remove the possible failure modes in early stage of development.
Focus on prevention measures.
Reduce the reoccurrence of same types of failures in future.
Effectiveness of failure modes analysis of the team can be limited by previous experience of similar failures.
Focus on the major failure modes
May not be able to identify the complex and multiple failure modes as it is top-down and inductive method.
Fault Tree Analysis (FTA)
In fault tree analysis, Boolean logic is used to describe the combinations of events that may cause the failure in the software product. It takes a single failure and analyse with possible all causes for that failure. FTA finds the opportunities to identify the causes of specific failure and prevent those causes to happen [10, 11].
Identify the combination of possible causes for a specific failure
Graphically presents the combination of causes
Complex and multiple failure modes can be analysed
Only one fault is considered at a time. To cover complete list of fault, it requires a number of FTAs.
It is time and resource intensive
Alternative solutions for defect prevention
In defect prevention framework, defects data are collected, perform cause analysis, determine and implement the counteractive actions and share the lesson learned to prevent future defects . Nowadays, organizations are focusing on the defect prevention to reducing costs and enhance quality in software product rather than defect detection and removal at the later development stage. Along with the defect prevention techniques discussed in the previous section, there are different other techniques which can be used as alternative defect prevention approaches. This section describes some alternatives of defect prevention approaches described in previous section.
Prototyping can be used as defect prevention tool in the projects which are technically challenging and two parties are uncertain about how the system should behave. This technique is an iterative process used in analysis phase where basic requirement are converted into precisely working requirement so that it provides the close view of the product. Therefore, requirements can be changed at the early stages of the software development rather than later stages of the development by understanding the correct requirements that the customer actually needs. Also, with this process, possible defects can be studied so that preventions action can be taken to avoid the defect in later real development stages. This technique can be used along with JAD or as the alternative of JAD.
Root Cause Analysis and Preventive Measures Determination 
This technique starts with defect tracking process. A defect tracking process logged and document all the defects encountered during software development process. The defect log and documents will contain all the detail information of the defects such as complete description of defects, phase the defect is found, screenshots and name of the person who discover the defects. Now, this defect information’s will be analysed to determine their cause which will further perform root cause analysis. Root cause analysis process will classify the defects in a Pareto chart. Root cause analysis process will find the root cause of the defects and produce plan to eliminate those causes. During the process, all defect categories and their cause will be represented in cause-and-effect or fishbone diagram which will be used to analyse and find the way to eliminate the cause from brainstorming session. This technique can be used as alternative technique of fault tree analysis.
Periodic Review and Defective analysis 
Periodic review will be conducted between all teams of defect prevention activities where review will identify all action items and set priorities based on analysis which determines: root cause of the defects, indirect indication for not addressing the defects, cost of implementing process improvements for defect prevention and impact expected on software quality.
All the defects encountered during periodic review process will be logged in the defect register which will be classified on the basis of the phase the defect occurred, severity of the defect, and type of the defect. Defects can be classifies as per the IBM Orthogonal Defect Classification. At the end of every development phase, the defect register will be consolidate and prepare Causal Analysis report. The main objective of the Causal Analysis report is to identify problem area, to share corrective action process learn by one single developer by his/her mistake to all other developers and lastly improving development process to prevent repetition of the mistakes in future. This process can be used as the alternative of Failure modes and effects analysis (FMEA).
cost benefit analysis
The cost benefit analysis of the above defined defect prevention techniques are evaluated based on three categories Return on Investment, Effort and Effectiveness.
Joint Application Development (JAD)
JAD involves large number of people like testers, developer’s, customers, end users etc. through which different ideas will be generated regarding the system . JAD supports for the development of clear requirements by removing the ambiguous requirements. JAD technique reduces the cost and time during data collection, data analysis and requirement definition. It involves number of participants who have their own responsibilities. JAD process brings the experts together so that they can share their views with each other and share ideas for development . The effort of JAD process may increase based on the work and experience of the participants. JAD is suitable to the projects that have tight time and schedule. It is effective where the stakeholder’s requirements are not properly reflected. It is useful for developing a new system, enhancement of the existing system, conversion of the systems and the purchase of new system .
Failure Modes and Effects Analysis (FMEA)
It is a proactive tool that is used to reduce the potential errors, prevent the common mistakes and improve consistency . Its main function is to find out the find out the failure modes, evaluate risk of each potential failure, and apply appropriate procedures to reduce those failures modes . FMEA is used in early in software development process which finds defects in early stages of development. This will help to reduce the defects in later stages of development which results in reduction of development cost. Proactive identification and elimination of the software defects reduces the time and cost of the project. FMEA technique consists of many steps to be followed. This process takes lot of time and effort to run. Different techniques are used to find the failure modes and the risk priority for each failure mode is calculated. This process takes lots of efforts to perform but the result of this process improved software quality and reliability and greater customer satisfaction .
FMEA is an effective technique for defect prevention. FMEA determines the failure mode by using different techniques and rate failure mode impact. The risk for each failure mode is calculated and given priority for each failure mode. The failure mode with the highest potential will be figure out and action plan is defined to eliminate or reduce the cause. At last it re assess risk priority after the implementation of the risk plan to see whether it the highest potential risks are resolved or not. For an effective FMEA it should focus on the following three things: 
Skilled FMEA facilitator having good knowledge of FMEA process and guide the discussion.
Right participants who have different skills, knowledge and experience.
All participants should be familiar with the focus area.
Fault Tree Analysis (FTA)
FTA focuses on the origin of failure cause based on software system, its operating environment and also human error. This gives more logical view of the failure and its possible cause . For an effective FTA the participants should have good knowledge and skill about FTA. The participants should have sound knowledge on system and its operating environment. Fault tree analysis process start with one specific failure and attempt to find all the causes of that failure and their relationship. It is an effective way for the defect prevention. FMEA is technique is used to find the failure and FTA technique is used to find out the causes of those failures . FTA takes one fault at a time. So it takes lot of time and effort to complete all faults.
motivation for techniques
Since defect prevention is the most vital software quality assurance side in any product, it cannot be neglected and it should be considered equally in each and every phases of software development life cycle. Whatever be the defect prevention techniques, it should identify the critical risks with the estimated expected impact and the process to minimize that expected impact. Here are few recommended techniques among many others for the different phases that analyse risks and improve the quality standards of the product.
One of the recommended techniques to be used for the defect prevention in the requirement phases is JAD which ensures the gathered information from all affected participants and the final requirements are only final when all the participants approved that. Since here are the opportunities to share the opinions from all the parties, there are less chances of having misleading requirements. That means clear understanding will surely give the better quality for the product. Since all the parties are involved in the requirement elicitation phase, it accelerates the design of the product, enhances the quality, it can also lowers the development and maintenance cost. Hence the JAD is recommended for the requirement phase due to the above mentioned logics. Added to these reasons, The JAD handles differing views immediately and also issues are resolved quickly.
There are different approaches emphasized for the defect prevention in the design phase. Among these, Failure mode and effects analysis (FMEA) technique can be profitable due to different benefits and it is recommended techniques for the design phase. FMEA is a technique to analyse the potential defects in the early development cycle where it is uncomplicated to prevent these issues, ultimately increasing product quality. This technique is beneficial since it design out defect; failure and we got the safe and customer satisfying products. Despite different benefits of other techniques in the design phase, FMEA approach increase customer satisfaction, documents risk and actions taken to reduce risk reduce delayed changes and related cost as well as it works as medium for teamwork with exchanging ideas between functions.
Test Driven Development is the approach that can be used in the implementation phase for the defect prevention. With the concept of TDD, developers actually write the automated unit test cases for the new implementing functionality before actually implemented. The possible benefits of the TDD are efficiency, test assets and reducing defect injection . With TDD, defects are early identified as new code is added to the system and thus problem source can be determined easily. Hence implementing the TDD will reduce the efforts of developers by finding the defects, ultimately increasing quality and reducing testing time as well. Hence TDD is recommended for defect prevention particularly for the implementation phase.
As testing phase is at the end of the phases before delivering product, the technique should detect the remaining defects in product if any exists. We can use the automated testing tools in order to completely test all the functionalities of the product which may possibly remain untested.
Defects in software lead to the undesired situation. Later the defects are caught and fixed, higher will be the cost. So, it is obvious that defects prevented to enter the software product from the beginning most effectively reduces the cost, saves time and effort and improves the quality of product. Therefore, it is better to prevent defects rather than detecting and fixing later. However, there is no such a single techniques which can completely prevent the defection introduction during the product development lifecycle. Preventive measures in a combination help to reduce the introduction of the defects at the early stage of product development.Order Now