table 3.1 shows how the entire systems development effort is fraught with risks and uncertainties. Below, we discuss the significance of each factor's impact on the stages of systems development.Project goals and objectives must be precise, unambiguous, and not overly ambitious in order to be able to derive complete, consistent, and realistic requirements on which the rest of the development will depend. Fred Brooks (1987, 17) suggests that "the hardest single part of building a software system is deciding precisely what to build." Laura De Young (1996, 255) comes to a similar conclusion from her consulting experience when she writes: "Most managers will tell you that it is critical [emphasis added] to have clear, realistic goals, and yet software projects fail everyday because of problems with goals." She describes the importance of maintaining effective goals as follows: First, reaching consensus on goals is a fundamental prerequisite to determining, without dispute, whether success has been attained. Second, when the goals change, as they often do, it becomes important to communicate the changes to all stakeholder groups. In the context of a complex project with several interacting subcomponents, it is especially difficult to keep all the interested stakeholder groups, sometimes with hidden competing agendas, focused on the same set of project goals and objectives.The difficulty stems, in part, from attempting to specify conceptually valid functional requirements of the system that the design phase could satisfactorily work with. The burden is thus on the analysts and designers to come up with the right set of functional specifications— specifications that capture the essence of the project goals and objectives, that have "limited ambiguity," and that all the stakeholder groups consider achievable. Failure to meet this objective will have potentially next section we discuss the link between the abandonment factors and their collective impact on the various phases of the software development process.