However, neither
of the two conditions holds in practice. A usual maintenance
team is composed of experts with years of maintenance
experience as well as novice new engineers straight out of
college. Also, due to the sheer size of software systems
exhaustive testing is not feasible. At the same time the price
paid for not testing a section of code properly or accidentally
excluding few important test inputs, could be very costly if
that file happens to have a bug. A bug identified post release
requires a very expensive reconciliation process as it would
affect multiple parameters like customer satisfaction, system
availability and transactional losses. Because of the above
mentioned conflicting goals, managers are confronted with
a number of crucial decisions such as allocation and training
of new engineers, intelligent allocation of testing personnel
and assessment of release readiness of the software system.