Software development depends on a wide variety of intertwining factors and dependencies. Because of their complexity, projects often have a bad track record for sprouting quality, usability, cost, schedule and overrun risks.
Getting a software project approved requires cooperation from all of the departments in an organization including customer service, sales, management, and production. Breaking through their initial resistance in order to get them to cooperate can be a very daunting task.
Fixed price contracts can be rather tricky in a Scrum environment. Classic software development and Agile software development are very different from one another, and things that work in one environment don’t necessarily work in another.