Digging a little deeper, the 12 risks are, in approximate order of danger:
    - failure to understand software (e.g. process, costs, expectations) 
 
    - failure of team dynamics (e.g. dysfunction, lack of trust)
 
    - failure of roles (e.g. realizing that software can never be completed without testing)
 
    - failure of resources (creative, productive, effective people are rare)
 
    - failure to specify (i.e. to understand, communicate, document the problem domain description)
 
    - failure to architect (i.e. to create a solution that fits the problem) 
 
    - failure to design a software application (i.e. ad-hoc spaghetti design)
 
    - failure to implement the software (unmaintainable spaghetti code)
 
    - failure of quality assurance (reliable software results when testing time equals development time)
 
    - failure of project management (e.g. management that demoralizes and robs the team of productivity)
 
    - failure of technology (i.e. to select reliable technologies before the project starts resulting in technology churn)
 
    - failure of tools (i.e. to select good tools before the project starts) 
 
So, why would anyone start a software project?
Because with the right people on the job, all of these risks can be mitigated. 
    Some success factors are: Grasping the level of effort, Integrity, Team Leadership, Team Dynamics, Technology, Tools, Requirements, Design. Click here
    to find out how to reduce these software risks to a minimum.