Appendix B. Agile concepts from a phase perspective

 

Many people learn software development from a phase perspective, performing each phase in a series. Common phases are analysis, requirements, design, development, testing, and delivery. Agile software development isn’t performed in a series, but it can be modeled in a serial fashion to make it easier to envision the process.

B.1. Overview of the phases

Let’s begin with a quick overview of the phases. Figure 1 shows all the phases and their relationship to each other.

Figure B.1. A project begins when an idea is determined to be viable during the Feasibility phase. The Planning phase reviews the idea in detail to identify the features and priorities. The Development phase is used to refine designs, develop code, and iteratively surface working code for demonstrations. When development work is complete, the queued iterations are released to a Production environment during the Deployment phase. Although you do the majority of feasibility and planning work at the beginning of the project, you continue to evaluate value and re-plan until the project is delivered.

At first glance, the diagram resembles a waterfall development process. In reality, it’s a diagram of an agile process. The gates help define the phases and also act as circuit breakers for the project, supporting risk management in every phase.

B.2. Feasibility: define and validate your vision

B.3. Planning: speculate and create a living plan

B.4. Development: exploration with a schedule

B.5. Adapt: react to new information

B.6. Deployment: deliver, train, revisit, and close the project