This kind of contracts great when :
- The requirements may not change
- The requirement is 100% clear and defined
- There is no need for flexibility for the duration of the project
- The requirement and scope of the project is relatively small
- The work is almost same where the software provider has done the exact work in the past