The problems inherent in software development stem from an array of typical errors in the software development life cycle (SDLC) (Rodgers, 2003). In the initial stage, most projects follow the conventional software development lifecycle. Problems in the requirements gathering stage emerge if the project requirements are unclear or incomplete, producing difficulties when progressing to other stages of the lifecycle. Problems gathering requirements make it difficult to offer deliverables according to customer expectations since requirements are unclear. Another problem is cramming too much work in a short timeframe due to constraints such as inadequate budgets. Poor estimation and scheduling have a ripple impact on subsequent stages of SDLC (Hamill & Goseva-Popstojanova, 2009).
Problems such as increasing the scope of features inherent in software can pave way for increased susceptibility to bugs. Mistakes in the initial stages can cause problems in subsequent software development stages (Hoffer, George & Valacich, 2005). Scheduling problems can reduce the amount of time apportioned for testing, re-testing and bug fixing, making it impossible to have bug-free software development. Another major problem in software development is inefficient communication and collaboration. Communication is the basis for collaboration in the development process. Inefficient communication erodes knowledge exchange and information distribution essential for the achievement of project objectives (Schach, 2011).
Runaway projects occur when projects fail due to one reason or another, often resulting in project termination. Some of the underlying causes of runaway projects include unrealistic business objectives, an ineffectively designed project scope and inadequate efforts made towards the realization of project benefits.