Complete Issue

advertisement
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
Download