Release plan
While the product roadmap is strategic in nature, the release plan is more tactical. The product roadmap shows the timing of release goals, high-level product capabilities, and epics that span multiple iterations, but the release plan provides more detail on a per-iteration basis. The product roadmap has a longer planning horizon of 12–24 months while a release plan is more near-term, generally three to nine months. This recipe relies on the Managing your backlog recipe that appears earlier in this chapter.
Purpose
The purpose of the release plan is to show how the product backlog is allocated to the upcoming set of iterations and releases over the next three to nine months.
Inputs and preconditons
The product vision and roadmap are sketched out and a reasonably complete product backlog has been established, with work items that can fit within a single iteration.
Outputs and postconditions
The release plan provides a plan for the mapping of work items to the upcoming set of iterations and releases. Of course, the plan is updated frequently – at least once per iteration – as work is completed and the depth of understanding of the product development increases.
How to do it
Epics and high-level goals need to be decomposed into work items that can be completed within a single iteration. Each of these work items is then prioritized and its effort is estimated. The release plan identifies the specifically planned iterations, each with a mission (as shown in Figure 1.4). There is some interplay between the missions of the iterations and the priority of the work items. The priority of a work item might be changed so that it is completed in the same iteration as a set of related work items.
Once that has been done, the mapping of the work items to the iterations can be made. The mapping must be evaluated for reasonableness and adjusted until the plan looks both good and achievable. This workflow is shown in Figure 1.21:
Figure 1.21: Release planning
Identify epics’ high-level goals
If you’ve done a product roadmap (see the Product roadmap recipe), then you are likely to already have established the epics and high-level goals (themes) for the product. If not, see the recipe for how to do that.
Decompose epics
Epics are generally too large to be completed in a single iteration, so they must be decomposed into smaller pieces – use cases and technical work items, and possibly user stories and scenarios – that can be completed within a single iteration. These will be the work elements allocated to the iterations.
Establish iteration missions
Each iteration should have a mission, including purpose, scope, and themes. This was discussed in the Managing your backlog recipe earlier in this chapter.
This mission includes:
- Use cases to be implemented
- Defects to be repaired
- Platforms to be supported
- Risks to be reduced
- Work products to be developed
Prioritize iteration work items
A work item’s priority specifies the order in which it should be developed. Prioritization is a subject of its own recipe, Work item prioritization. Here it is enough to say that higher-priority work items will be performed in earlier iterations than lower-priority work items.
Allocate work items to iterations
This step provides a detailed set of work items to be performed within the iteration (known as the iteration backlog). Ultimately, all work items are either allocated to an iteration, decomposed into smaller work items that are allocated, or are removed from the product backlog.
Review iteration plan
Once the allocations are done, the iteration plan must be reviewed to ensure that the release plan is:
- Consistent with the product roadmap
- Has iteration allocations that can be reasonably expected to be achievable
- Has work item allocations that are consistent with the mission of their owner iterations
Example
While the product roadmap example we did in the previous recipe focused on a somewhat-vague strategic plan, release planning is more tactical and detailed. Specific work items are allocated to specific iterations and reviewed and “rebalanced” if the release plan has discernable flaws. For this example, we’ll look at a planning horizon of six iterations (plus Iteration 0) and focus on the allocations of functionality, technical work items, platforms to be supported, and spikes for the reduction of specific risks.
Identify high-level goals
The high-level goals are identified in the project plan from the previous recipe, as exemplified in the business and enabler epics.
Decompose epics
The epics to be implemented in the iterations in this planning horizon must be decomposed into use cases and technical work items achievable within the allocated iteration. Figure 1.22 shows the decomposition of the epics into use cases and user stories. Note that epics (and, for that matter, user stories) are modeled as stereotypes of use cases, and the figure is a use case diagram with the purpose of visualizing that decomposition. Since epics and user stories are represented as stereotypes of use cases, the «include»
relationship is used for decomposition:
Figure 1.22: Mapping epics to use cases
Establish iteration missions
To establish the mission for each iteration, a spreadsheet is created (Table 1.4) with the iterations as columns and the primary aspects of the mission as rows.
Prioritize iteration work items
Work items are prioritized to help us understand the sequencing of the work in different iterations. As much as possible, elements with similar priorities are put within the same iteration.
As discussed in the Work item prioritization recipe, during a review, we may increase or decrease a work item’s priority to ensure congruence with other work items done in a specific iteration.
Allocate work items to iterations
Based on the prioritization and the work capacity within an iteration, the work items are then allocated (Table 1.5).
Table 1.5 shows an example in which allocations are made based on priority (see the Work item prioritization recipe), the estimated effort (see the Estimating effort recipe), and the congruency of the functionality to the mission of the use case:
Release plan |
Iteration 0 |
Iteration 1 |
Iteration 2 |
Iteration 3 |
Iteration 4 |
Iteration 5 |
Iteration 6 |
Functionality |
|
Initial Frame Mockup,Basic Motor Electronics,Basic Rider Controls, and Basic Resistance |
Set Up the Bike Fit (seat),Basic Digital Electronics, Calibrate Power Output, and Basic gearing |
Set up the Bike Fit (handlebars),Manually adjust the bike fit, and Monitor Power |
Set up the Bike Fit (Cranks), and Monitor Speed,Distance,Bluetooth,Cadence, and Data to the App |
Bike fit with external parameters,Motorized Incline,Monitor Incline,ANT+, and ANT FEC |
Manage personal data, and Predict the Bike with a Camera Image,External Resistance control, and ERG Mode |
Target Platforms |
|
Hand-build mechanicals,Hand-built analog electronics, and Simulated digital electronics |
Basic hand-built mechanicals and Hand-built electronics |
Prototype mechanicals for manufacturing |
First-run factory electronics |
First run mechanicals |
Second-run factory electronics and 2nd run factory mechanicals |
Technical Work Items |
|
Analyze frame stability and strength and Refine SW/EE deployment architecture |
Design cable runs,Analyze electrical power needs, and Add in SW concurrency architecture |
Add in an SW Distribution Framework |
Finalize flywheel mass |
EMI Conformance testing |
|
Spikes |
Team Availability,Aggressive Schedule, and Agile MBSE Impact |
Motor Response Time |
Robustness of the main motor |
USB Robustness |
|
|
|
Table 1.5: Release plan
Review iteration plan
We then look at the release plan and see that we think it is achievable, the missions of the iterations are reasonable, and the allocations of work items make sense for the project.