In: Computer Science
1:- Customer's Needs are Unclear: Sometimes customers need a software for some tasks but not clear about which functions it should perform ie. they don't have plannings. So proper requirements of the software are unclear.
Requirements Changing: Customers often change their requirement and this cause the whole project to reorganise.
Complexity: Sometimes softwares to make are very complex that one cannot schedule it's model and time period.
Management: Manaement is very important as in a team everone has their own pace in work so manage them to deliver code in time is very important.
2:- Waterfall model defines each stage properly and distributes time accordingly. So next face can't be done without the previous one done. This ensures the completion and quality of the project. It gives suitable time for documentation and if any point some changes has to be done , then requirements are changed and so the whole project easily. It ensures proper analysis, designing, building, testing and deployement of the software . Also after designing phase over, customer can see and ask for any changes so the final project is satisfactory for him.
3:- Cost of the project depends upon the model used. Models are chosen according to the project and the time frame . Lesser the time frame , fast model is needed like Rapid Application model. And in these fast models , specialised developers are needed that increases the cost. Bigger the projects or more complexity then Agile Model can be used but in this developers need to solve that complexity by learning new technologies side by side. So cost will increase. If the project is simple and time frame is large , then easy will be the model and cost will be less.