“There are many different systems for how to plan and manage the development of software. These systems are often called methodologies, which means a body of practices aimed at achieving a certain kind of result. Common software methods include the waterfall method, spiral mode, Rapid Application development, Extreme Programming, and Feature-driven development. All of these methods attempt to solve similar organization and project management problems. They each have strengths and weaknesses, and it takes knowledge and experience to decide which one is right for what kind of project” (Scott Berkun, The Art of Project Management, p 24; emphasis added).