Possible techniques of risk reduction include:
1. Obtain a number of independent estimates using different estimation techniques. If these are widely divergent, generate more costing information iterate until the estimates converge.
2. For those parts of the system which are hard to estimate, develop a prototype to find out what problems are likely to arise.
3. Reuse software to reduce the amount of estimation required and to reduce overall costs.
4. Adopt a design to cost approach to development where the system functionality is adapted to a fixed cost.
5. Partition software requirements into critical, desirable and ‘gold plating’. Eliminate ‘gold-plating’ if necessary.