Situation 1 :
Customer is complaining about quality of delivered software. Project team is working over time (even on weekends). However, bugs not getting fixed. In fact, more bugs get added (are introduced) while fixing already reported bugs. Its becoming an endless cycle. Customer is unhappy and thinking about withholding payments, team is depressed and dejected, management is desperate to salvage the situation.
Somehow you need to improve the quality and stability of code in a short time and regain customer confidence.
Situation 2 :
Time required to fix each new bug is slowly increasing. It is becoming difficult to quickly add new features. Time to induct new team member is high. The design and code has now become a 'tangled mess'. Profitability of project is going down.
Somehow you need to improve the productivity of team and thereby improve the profitability of project
Situation 3 :
The code is working as expected. Customer is satisfied about the results but not satisfied with the speed/performance. He wants a near real time performance and it means an order of magnitude improvement in performance. Your team has tried various options and got 20% performance improvement. However that is not enough. Customer is not going to give you acceptance with current level of speed/performance. Now you are stuck.
Somehow you need to dramatically improve the speed/performance in a very short time
Remember Today every Software Company has to
- Satisfy customers by delivering high quality software
- Improve profitability by improving productivity of developers
Hence every software company need to work on
- Improving design (flexible, extensible, testable)
- Improving code quality (bug free, easy to debug and test)
- Project Automation
- Ways to detect and warn about problems as early as possible.
- Project Teams which are conscious and knowledgeable about all the above.
- Last but not the least 'performance optimizations'