While there is no denying the point that the advancements in software technology have brought about several benefits for the business enterprises all over, it is also true that certain defects in software are really hard to handle.
The later the defects are identified, the more difficult and expensive it becomes to handle them. This was said by none other than a software engineer called Barry Boehm back in 1976. He also drew a curve representing the consecutive phases of the waterfall software development lifecycle on the horizontal line. The vertical scale, on the other hand, denoted the relative cost of fixing the particular defect in a specific phase versus the cost involved in fixing the same defect in a different phase. With time, this curve was modified to make room for a second exponential relation.
Finding the Cost of Fixing a Defect
There are certain problems that arise when it comes to the fixing of a software defect. Out of these, deciding upon the cost of fixing the trouble happens to be the most important one. The actual cost involved in finding solution to a problem is often the least understood factor too. Now, the cost usually depends upon the development lifecycle as well as the development process that one chooses apart from the risk that the enterprise is ready to take. Estimation of the cost can be done by means of the following technique:
Considering that all the people working in a system test are completely dedicated to identifying and fixing defects, the number of fixes are to be taken into account. Next, the number of people including that of developers, testers and everybody else along with the duration of system test are to be considered. The process of calculation goes like this:
Average cost of fixing defects= Number of days* number of people* cost per person-day/ Number of defects that have been fixed
It is worth remembering in this regard that it is not the defects but the ones that are fixed that matters while also leading to the right calculation.
How Much Does It Cost?
The attitude taken towards fixing software defects often varies depending upon respective managers. Again, there is some confusion about when to find solution to which defect. Now, the cost of finding solution to the defects is influenced by the organizational culture and its implications. Here is a brief overview:
In a routine culture, quality is considered valuable by the management but there is neither money nor the time to devote on improving the same. The problems are fixed only after quite a severe one has occurred. The easy defects are identified while the difficult ones are left out. As such, the cost of fixing a problem is the lowest of all.
In a steering culture, the management realizes that quality is but a systematic issue and automatically, the task of managing is executed better. Problems are openly discussed as well as resolved in an orderly manner. The defects are found earlier than the system test leading to the creation of several bad fixes. Eventually, the cost of solving the problem is the highest among all.
In a variable culture, the management usually does not consider quality to be a management issue. Personal efforts in solving problems are often preferred over a systematic approach, as a result of which, it is found that the employees identify more defects compared to what they could fix. Accordingly the average cost of fixing a defect is higher than that of a routine culture and lower than that of a steering culture.
Ways of Preventing Defects
Preventing the defects from arising in the very first place is essential for the simple reason that fixing them requires considerable effort, time and money. Early defect detection has a number of advantages. Following a list of some of the prominent ways in which the software defects can be checked:
- Analyzing the software requirements well beforehand is a significant way of preventing troubles. The specific customer needs are to be analyzed and then transformed into product specifications with expertise. Interactive sessions with the customers is helpful in this regard.
- Reviews, both self-reviews and peer reviews, work wonders in uncovering defects instead of finding them out later. Self-review, in particular, allows reduction of problems related to implementation of algorithms, incorrect logic and missing conditions. Many software organizations are making this a part of their best practices of coding.
- Documentation and defect logging leads to better management of the troubles as well as the depletion trends and costs. A defect logging tool allows correction of the problem, identification of the phase and so on.
- Analyzing the root cause can be done via applying local expertise and targeting the systematic errors. This largely helps in saving time and costs involved in fixing the troubles.
Having considered the above discussion, implementation of the defect prevention procedures into the application software testing process is the most difficult of all tasks. If carried out successfully, it can actually prevent the troubles from arising and pave the way for smooth operation of the enterprises.