To build a project plan you will need an initial estimate of the overall size of the project (see Figure 12.3). We will visit the estimation part in the section Estimating later in the chapter. Once you have an initial guess at the overall size, there are well-known recipes (such as the COCOMO model) to estimate the right level of staffing. Figure 12.3. Typical Resource Profile for a Development Cycle. The resources used within each phase vary greatly from project to project. This graph provides you with a starting point for a discussion around resource needs (from Kruchten 2000a and Royce 1998).
Most projects will not function efficiently if staffed with a constant number of people. There is usually a staffing profile that increases from Inception to Construction, plateaus for a while, and then drops a bit toward the end of Transition. As with many other aspects in the RUP approach, consider this profile only as an example. It must be adjusted to suit your own experience and your own context. For example:
Once you have planted the dates of the major milestones on the calendar, the next questions to address are how many iterations and how long. Opinion varies greatly among iterative development practitioners . First, remember to not confuse a build, like a weekly build, with an iteration. Many avid fans of iterative development think of an iteration as lasting around two to five weeks. This may be fine for most small- to medium- sized projects, but not for large and very large projects where hundreds of people, often distributed over several sites, may have to be coordinated. How quickly you can iterate depends mostly on the size of the development organization. For example:
Other factors come into play: the degree of familiarity of the organization with the iterative approach, including having a stable and mature organization, and the level of automation the team is using to manage code (for example, distributed CM), distribute information (for example, internal Web), automate testing, and so on.
Be aware also that there is some fixed overhead attached to an iteration: in planning, synchronizing, analyzing the results, and so on. So, while convinced by the tremendous benefits of the iterative approach, you might be tempted to iterate furiously, the human limits of your organization are going to slow your fervor.
Iterations need not all be the same length: Their length will vary according to their objectives. Typically, Elaboration iterations will be longer than Construction iterations. Within a phase, iterations are generally the same length (it makes planning easier). But having a good, regular tempo for a project with many iterations provides an environment that favors balanced iteration lifecycles. Determining the Number of IterationsRelated to the length of an iteration is the delicate issue of the number of iterations. A very simple project may have only 1 iteration per phase:
For a more substantial project, in its initial development cycle, the norm would be
For a large project, with many unknown factors, new technologies, and the like , there may be a case for additional iterations:
Therefore, over a development cycle, we have several possible degrees of iteration (see Table 12.1). In general, plan to have 3 to 10 iterations. Observe, though, that the upper and lower bounds connote unusual circumstances: Most developments will use 6 to 8 iterations. Many variations are possible depending on project risks, size, and complexity:
Alternatively, you might settle on an iteration length that your organization is comfortable with, and just proceed by fitting as many iterations of that length as you can in each phase. It is obviously easier, but you need to have done this before with your current organization, or with an organization comparable in size and experience, to be certain about iteration duration. Again, there is no "one-size-fits-all" approach. Do not try to optimize too much. Take a first shot at it, and modify it as you learn. Iteration LengthAs a first approximation , obtain the iteration length by dividing the length of the phase by the number of iterations. If the duration obtained is not quite right, according to the rules of thumb given earlier, revisit the process. Now is the time to make some adjustments, either to the length of a phase or to the number of iterations. Then also take into account major holidays, planned vacations , or plant closures to adjust the project plan to a realistic time frame. For example, it is never a good idea to plan a major milestone between Christmas and New Year's Eve (in some countries , at least). It's not necessary get your plan 100 percent right on day one, because you will revisit this plan several times during the development cycle. Start with something realistic, create a baseline of your project plan, and revisit it as you grow wiser at the end of each iteration. Iteration ObjectivesOnce you have an idea of the number of iterations in your coarse-grained plan, you need to define the contents of each iteration. It is even a good idea to find a name or title to qualify the release you have at the end of each iteration, and to help people gain a better focus on the next target.
Again, do not put too much effort into this. You will revise these several times throughout the cycle. Planning is iterative and adaptive. Staffing the ProjectThe next step is to allocate the right level of resources to the project alongside the lifecycle. Figure 12.4 shows a typical staffing profile. Figure 12.4. Example Resource Profile Across Project Lifecycle Phases. The effort spent on each phase varies greatly from project to project. This graph shows an example staffing profile for a project.
Your actual staffing profile will vary depending on your project.
Models such as COCOMO will help you determine the optimal number of people versus duration of the phase for the various phases, taking into account various parameters (cost drivers). You will need the right mix of competence to allocate the activities to individual resources; this can be done by tabulating for each team member the RUP roles that he or she is likely to play. |