In a perfect world, every unmaintainable program would be retired immediately, to be replaced by high-quality, reengineered applications de...
In a perfect world, every unmaintainable program would be retired immediately, to be replaced by high-quality, reengineered applications developed using modern software engineering practices. But we live in a world of limited resources. Reengineering drains resources that can be used for other business purposes. Therefore, before an organization attempts to reengineer an existing application, it should perform a cost/benefit analysis.
A cost/benefit analysis model for reengineering has been proposed by Sneed . Nine parameters are defined:
P1 = current annual maintenance cost for an application.
P2 = current annual operation cost for an application.
P3 = current annual business value of an application.
P4 = predicted annual maintenance cost after reengineering.
P5 = predicted annual operations cost after reengineering.
P6 = predicted annual business value after reengineering.
P7 = estimated reengineering costs.
P8 = estimated reengineering calendar time.
P9 = reengineering risk factor (P9 = 1.0 is nominal).
L = expected life of the system.
The cost associated with continuing maintenance of a candidate application (i.e., reengineering is not performed) can be defined as
Cmaint = [P3 - (P1 + P2)] x L
L The costs associated with reengineering are defined using the following relationship:
Creeng = [P6 - (P4 + P5) x (L - P8) - (P7 x P9)]
Using the costs presented in equations, the overall benefit of reengineering can be computed as
cost benefit = Creeng - Cmaint
The cost/benefit analysis presented in the equations can be performed for all highpriority applications identified during inventory analysis . Those application that show the highest cost/benefit can be targeted for reengineering, while work on others can be postponed until resources are available.