Most software projects fail because they don't meet stakeholder's minimum requirements, come in significantly over budget, or delivered significantly late. What these reasons for failure have in common is miscommunication that occurs when business analysts transfer business requirements to programmers, and programmers define for quality assurance when the software will be ready for testing.