Other Tutorials by

Visual Basic - Visual Basic tutorials

VB6 beginners tutorial - Learn VB6

Advanced VB6 tutorial - Learn Advanced VB6

You are here: > Systems Analysis and Design

Error Distribution with Phases in Software Development Life Cycles

A typical software product may take months to a few years for development, and is in operation for five to twenty years before it is withdrawn. For software, the cost of development is the incurred during requirement analysis, design, coding and testing. Therefore, the development cost is the total cost incurred before the product delivery. The cost of maintenance is the cost of modifying the software due to residual faults in the software, for enhancing or for updating the software. This cost is spread over the operational years of the software. Software engineers generally agree that the total cost of maintenance is more than the cost of development of software. The ratio of development to maintenance cost has been variously suggested as 40/60, 30/70 or even lower. However, it is generally accepted that the cost of maintenance is likely to be higher than the development cost, and are often not at all concerned with the maintenance.

Since maintenance depends critically on the software characteristics that are decided during development, maintenance cost can be reduced if maintenance concerns are kept in forefront during development. One of the reasons why this is often not done is that the development cost is done by the developers while maintenance is often done by the users. Hence, the developers do not have much incentive for increasing the development effort in order to reduce the maintenance cost. However, for reduction in overall cost of software, it is imperative that the software be developed so the maintenance is easy.

The development cost, a typical distribution of effort with the different phases is

Requirement - 10%
Design - 20%
Coding - 20%
Testing - 50%

The exact number will differ with organization and the type of the project. There are some observation we can make from the data given above. The first is that the goal of design and coding should reduce the cost of design and coding, but should be to reduce the cost of testing and maintenance, at the expense of increasing design and coding cost. Both testing and maintenance depend heavily in the design and coding of the software. And these costs can be considerably reduced if the software is designed and coded to make testing and maintenance easier. Therefore, during design and implementation, the issues in our minds should be "can the design be easily tested", and "can it be easily modified". These require alternate designs and may increase the cost of the design and coding. But this additional costs pay dividends in the later phases.

Error Distribution

The notion that programming is the central of activity during software development is largely because normally programming has been considered to be difficult task and sometimes an "art". Another consequence of this kind of thinking is the belief that errors largely occur during programming, as it is the oldest activity in software development and offers many opportunities for commiting errors. It is now realized that errors can occur at any stage during development. A typical distribution of error occurrences by is

Requirement Analysis - 20%
Design - 30%
Coding - 50%

As we can see, errors occur throughout the development process. However the cost of correcting different phases is not the same and depends on when the error is detected and correceted. As one old expect, the greater the delay in detecting an error after it occurs, the more expensive it is to correct it. Error that occur during the requirements phase, if corrected after coding is completed, can cost many times more than correcting the error during the requirements phase itself. The reason for this is fairly obvious. If there is an error in the requirements, then the design and the code will get affected.

To correct the error, the coding that is done would require both the design and the code to be changed there by increasing the correction. So we should attempt to detect errors in the previous phase and should not wait until testing to detect errors. This is not often practiced. In reality, sometimes testing is the sole point where errors are detected. Besides the cost factor, reliance on testing as the primary source for error detection, due to the limitations of testing, will also result in unreliable software. Error detection and correction should be a continous proces that is done throughout software development. In terms of the development phases what this means is that we should try to validate each phase before starting with the next.

Related Topics

See Also


<< Previous Page | Contents | Next Page >>


Home | About Us | Privacy Policy | Contact Us

Copyright © | All Rights Reserved