The majority of software development projects fail to be completed, and those that are finished are usually over budget and behind schedule. Common causes of failure include uncertainties not being well-defined, expectations not being well-managed, lack of risk and issue management, and communication challenges between customers and suppliers. While methods like PRINCE2, ITIL, and Agile aim to address these issues, each only solves part of the problem and none provide a comprehensive solution on their own.