As a follow-up to my previous post, it’s important to consider the variables and constraints for a project when selecting the development lifecycle that will be used. There may be a tendency, with the popularity of “agile” processes, to just use a specific lifecycle approach as a one-size-fits-all solution, but this is not always the best fit. There are various predictive (or linear), incremental, iterative, hybrid, and tool-based approaches, each with their own advantages and disadvantages based on the given scenario.

Steve McConnell’s book Rapid Development, gives the following list of questions you should consider when selecting a development lifecycle (pgs. 154–156):

  • How well do my customer and I understand the requirements at the beginning of the project? Is our understanding likely to change significantly as we move through the project?

  • How well do I understand the system architecture? Am I likely to need to make major architectural changes midway through the project?

  • How much reliability do I need?

  • How much do I need to plan ahead and design ahead during this project for future versions?

  • How much risk does this project entail?

  • Am I constrained to a predefined schedule?

  • Do I need to be able to make midcourse corrections?

  • Do I need to provide my customers with visible progress throughout the project?

  • Do I need to provide management with visible progress throughout the project?

  • How much sophistication do I need to use this lifecycle model successfully?

Give some thought to these questions when planning your next project. How does your approach align with the project constraints and the expertise level of the individuals on your team?


<
Previous Post
The Agile Manifesto, Part 2: Individuals and Interactions
>
Next Post
Software Organization Anti-Patterns