International Journal of Information Technology & Computer Science ( IJITCS ) (ISSN No : 2091-1610 ) Volume 5 : Issue on September / October , 2012 USING DEFECT PREVENTION TECHNIQUES IN SDLC Karthikeyan. Natesan Production Database Team Singapore Abstract : In our research paper we have discussed about different defect prevention techniques that are widely being used in the software engineering industry in order to present our apprehension of defect prevention. Advantages and disadvantages of the defect prevention techniques have also been presented. Defect prevention techniques that are being used in each phase of the software development are also discussed in this paper. Clear motivation of our study has been presented. 1. INTRODUCTION In a world run by computers, in any industry software is the core part. Anything that affects software engineering, it eventually gives the impact on the core industry that software had been used. Defects are the most important things to be prevented. A defect can be a bug, an error, a fault, which all of these would lead to a software failure. There is an old adage which says “Prevention is better than cure”. It goes well with Software development as well. Implementation of systematic process [2][3] for preventing the defects at the early stages of software development not only reduces cost it also gives mental peace for developers, testers, managers and in the end customers. 2. TECHNIQUES IN DEFECT PREVENTION To make number of defects to be minimal is the most important challenge in the software development life cycle[SDLC. The numbers of defects are directly proportional to the cost. Higher number of defects is happening because of process failures than the human mistakes [4]. Recurrence of defects can be reduced by preventing the defects at early stage. 2.1 DEFECT PREVENTION Defect prevention is an application of strategy or method in the software development cycle which identifies root causes the defects and giving methods to prevent the recurrence of the defects [1]. Various approaches for defect prevention are as follows [1]: Process based formal requirements analysis. JAD – Joint Application Design Risk analysis Prototyping Formal Specification methods Inspection This Paper is presented on : International Conference on Information Integration and Computing Applications – August 14-15, 2012 – Singapore ……………………………………… Page … 16 International Journal of Information Technology & Computer Science ( IJITCS ) (ISSN No : 2091-1610 ) Volume 5 : Issue on September / October , 2012 maintaining coding standards Using reusable coding components 2.2 Advantages and disadvantages of Defect Prevention techniques Inspection is one of the appreciated techniques in defect prevention. Defects that are identified into two different sectors, Time of the defect first defected, and the time that it got fixed. Orthogonal Defect Classification is one of the techniques for identifying the defects [13]. Defects are grouped by types. The areas that require attention is described in this method. If a defect exists for more time it would be costly to fix it up later. A disadvantage of this technique is if we miss the fixing up the defect earlier, the late detection of defect would cost much [15]. Later defect detection shall give considerable rework which requires resources and time. JAD is an interactive systems design which has discussion groups like workshop [7]. JAD brings the developers together with users in the production environment. In the workshops discussions on quality requirements and specifications shall happen. For gathering quality requirements JAD is widely used in the organizations [16]. In JAD they have not given any methodologies to for conducting the workshops. Further it lot depends upon the participants commitments. Pair programming is nothing but coding done by a pair of programmers. A person develops the code and the other reviews it. A study shows that it reduces 40% of the cost. Negative impact of the pair programming is people have to each other. [5][7]. In Clean room approach, where most of the efforts and time is being put on preventing the defects. A failure in any part shall be considered as failure and send back to development again. [12]. Prototyping is useful in the projects where find problems related to technology. Unless until end users see the output or at least the screen shots. Building up prototypes shall help making changes in advance and well before the development cycle. Proto type reduces requirements when it is applied with other methods it can be very effective. Different prototypes are as follows: Disposable Evolutionary Time Box Disadvantage of the proto typing is it incurs extra cost and effort. Formal Specification methods is fruitful only when it is committed in the policy for the preventing the defects. It should happen between management and the project development team. Disadvantage is unless we have proper training for understanding it will not be effective as we expect. Training should also include quality assurance and document management. Structured programming methods, reusable design and code components are the other approaches of defect prevention. Disadvantage of structured programming method is it requires training for the developers to adhere the coding standards. Unnoticed coding which does not follow the coding standards shall lead to another fault. When the technology changes reusable designs are no more useful. [4]. Benefits are, This Paper is presented on : International Conference on Information Integration and Computing Applications – August 14-15, 2012 – Singapore ……………………………………… Page … 17 International Journal of Information Technology & Computer Science ( IJITCS ) (ISSN No : 2091-1610 ) Volume 5 : Issue on September / October , 2012 It improves the quality of the product It enhances the productivity of the developers Reducing the cost and time All the above points shall make it is easier in product development [4]. 3. ALTERNATIVE SOLUTION FOR DEFECT PREVENTION Though it seems like there is no alternative to defect prevention, inspection and testing is important to ensure the quality in the software. Team meetings and project meetings shall be used for improving the communication. Casual analysis meeting shall help to developers aware about repeated errors and defects. A well rapport between developers and the managers shall help in exchanging views on the developed code and it helps for making it less errors. Though it might not give the results as defect Prevention, still it helps when they implement a process for defect prevention. Check lists Modified processes Plans Trainings Tools As the above listed can aid the defect prevention as their names suggests intuitively. 4. COST AND BENEFIT ANALYSIS Defect prevention techniques help to handle the defects in an efficient manner. As Pareto says 20% causes 80% impacts. 20% defects could cause 80% of the rework in the software development projects. [6] JAD requires low effort but it returns high. Usage of prevention techniques at requirements phase improves quality. Hence the cost is reduced for requirements rework. The development time also been reduced as the developers shall have clear requirements. As everyone understands the requirements managers can focus on the other critical things. [8]. In the clean room approach initial cost may be higher, but as the project progresses the expenditure related to defects would be reduced. Products developed in this method would require less maintenance and would save considerable cost. Though it is tough for beginners, as they learn the things it would be easier for them and save time and fixing defects [14] [10]. Thus we can understand that clean room requires high effort and higher return. Proto typing takes up to 30% of the project cost. Proto typing is high effort and low return method. When we compare to the other techniques the return is very low. It can be implemented where customer involves in the whole project. Pair programming is low effort and low return technique. It is a myth that pair programming costs twice. In the real sense only 15% extra efforts had been taken and it reduces 15% defects of the system. Thus it This Paper is presented on : International Conference on Information Integration and Computing Applications – August 14-15, 2012 – Singapore ……………………………………… Page … 18 International Journal of Information Technology & Computer Science ( IJITCS ) (ISSN No : 2091-1610 ) Volume 5 : Issue on September / October , 2012 reduces re doing costs, and time [9]. 5. RECOMMENDATIONS: The techniques shall be used based upon the need and the situations. 5.1. Requirements phase Requirements phase is the most important phase in the software development life cycle. So, defect should be prevented at early stages itself. There are prevention techniques that can be used to prevent defects in requirements phase. We recommend Joint Application Development (JAD) technique to prevent defects in requirements phase. JAD is widely used by many organizations to find defects while eliciting requirements. This technique involves conducting few sessions where requirements will be reviewed [8]. Customers and also the organizations participate in these reviews effectively and discuss about the specifications. This technique improves communication among the stakeholders which builds trust. Duration of the requirements engineering process will be reduced with the help of using this technique. This technique is widely used in requirements phase of smaller project [8]. Cost of eliciting requirements reduces. Status of the process is informed completely by using JAD. 5.2 Design phase Design phase should be done carefully as the quality of end product is depended on how the product is actually designed. Prevention of defects early in the design phase improves productivity of the end product. Among several techniques that are available from preventing defects in design phase we recommend Clean room approach. Clean room application aims in providing zero defects in design phase [10]. All the design errors will be eradicated. Clean room approach is done incrementally. Execution of each increment is done externally [10]. Quality of the end product is improved with the help of Clean room approach. Hofmeister is another technique that is recommended in order to prevent defects in design phase [11]. This method checks if the architecture designed is in accordance to the specifications mentioned by the customer. 5.3 Inspection phase In Inspection phase the product will be implemented according to the design given according to the requirements specified. Defects present should be eliminated in order to produce a quality product. Several techniques are there to prevent defects in implementation phase. Pair Programming is one technique we highly recommend for defect prevention in this phase [9]. While developing the code itself, Review of the source code happens. Chance of occurrence of any bug can be easily identified with this technique. Here a pair is involved in preventing defects. One among the pair involves in implementing the design where another among the pair involves in checking the compliance of the implementation according the requirements and standards [9]. This technique can be highly recommended for smaller projects and smaller organizations. Test driven approach and structured programming are other important techniques that are widely used in implementation phase for defect prevention. Whenever a change occurs in the requirements, test driven approach helps in spelling test cases [12]. There by preventing defects becomes easier. This Paper is presented on : International Conference on Information Integration and Computing Applications – August 14-15, 2012 – Singapore ……………………………………… Page … 19 International Journal of Information Technology & Computer Science ( IJITCS ) (ISSN No : 2091-1610 ) Volume 5 : Issue on September / October , 2012 5.4 Testing Phase Testing is very important phase in the software development life cycle. Testing should be done very carefully so defects should be prevented early. Different techniques and practices are followed to prevent defects in testing phase. Automated tools can be used for defect prevention in testing phase. At times, Testers may ignore few defects. These defects may cause problem for the end product. In order to avoid such defects, automated tools are used. Automated tools will automatically check for defects in the source code developed. Planning made for test is improved with automation. Advancement in test case writing is possible with automation. Automated tools checks, if any functionality is left without testing defects. if left then testing is done by those tools. It is not so difficult to learn how to apply these tools. Reliability of the code is increased by preventing defects in testing phase. Quality of the end product is highly improved with the prevention of defects. 6. CONCLUSION This research paper discusses techniques which are widely being used for preventing defects and, we analyzed that there cannot be single technique used to prevent the defects. Implementation of technologies together shall improve the process of defect prevention. By knowing advantages and disadvantages of each techniques and knowing cost benefits shall help in efficiently developing the defect free products with less cost. Combining the various techniques will provide with efficient result. There is much need for in depth study on the various defect prevention techniques. 7. REFERENCES [1] Liam Feldman , Carl J. Mueller , Dan Tamir , Oleg V. Komogortsev, Usability testing with total-effort metrics, Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement, p.426-429, October 15-16, 2009. [2] Eickelmann, N.S. Empirical Studies to Identify Defect Prevention Opportunities Using Process Simulation Technologies. Software Engineering Workshop, Proceedings.26th Annual NASA Goddard. 2001. Pages 22-25. [3] Williams, L. Instilling a Defect Prevention Philosophy. Frontiers in Education Conference. 1998. Pages1308-1312. http://software.isixsigma.com [5] Stamatia-Ann Katriou , Evangelos Tolias, From twin training to pair programming, Proceeding of the 2nd annual conference on India software engineering conference, February 23-26, 2009, Pune, India. [6] K. Adeel, S. Ahmad, and S. Akhtar, “Defect Prevention Techniques and its Usage in Requirements Gathering - Industry Practices,” Engineering Sciences and Technology, 2005. SCONEST 2005. Student Conference on, 2005, pp. 1-5. [7] D. Huizinga and A. Kolawa, Automated defect prevention : Best Practices in Software Management, Wiley-IEEE Computer Society P, 2007. [8] M.C.Yatco,University of Missouri St.Louis, “Joint Application Design/Development”, 1999. [9] A. Cockburn and L. Williams, “The costs and benefits of pair programming,” Extreme programming This Paper is presented on : International Conference on Information Integration and Computing Applications – August 14-15, 2012 – Singapore ……………………………………… Page … 20 International Journal of Information Technology & Computer Science ( IJITCS ) (ISSN No : 2091-1610 ) Volume 5 : Issue on September / October , 2012 examined, Addison-Wesley Longman Publishing Co., Inc., 2001, pp. 223-243. [10] P.A. Hausler, R.C. Linger, and C.J. Trammell, “Adopting Cleanroom software engineering with a phased approach,” IBM Syst. J., vol. 33, 1994, pp. 89-109. [11] C. Hofmeister, R. Nord, and D. Soni, Applied Software Architecture, Addison-Wesley Professional, 1999. [12] R. Miller, “Demystifying Extreme Programming: Test Driven Programming", 2003. [13] Modelling and Analysing of Software Defect Prevention Using ODC, International Journal of Advanced Computer Science and Applications,Vol. 1, No. 3, September 2010 [14] R.C. Linger, “Cleanroom Process Model,” IEEE Softw., vol. 11, 1994, pp. 50-58. [15] S.S.G., Defect tracking and correction, 2004. [16] T. Thai, “Joint application development presentation,” Dec. 2009. This Paper is presented on : International Conference on Information Integration and Computing Applications – August 14-15, 2012 – Singapore ……………………………………… Page … 21