Choosing the Most Rapid Lifecycle for Your Project

Different projects have different needs, even if they all need to be developed as quickly as possible. This chapter has described 10 software lifecycle models, which, along with all their variations and combinations, provide you with a full range of choices. Which one is fastest?

There is no such thing as a "rapid-development lifecycle model" because the most effective model depends on the context in which it's used. (See Figure 7-13.) Certain lifecycle models are sometimes touted as being more rapid than others, but each one will be fastest in some situations, slowest in others. A lifecycle model that often works well can work poorly if misapplied (as prototyping was in Case Study: Ineffective Lifecycle Model Selection).

To choose the most effective lifecycle model for your project, examine your project and answer several questions:

image with no caption
  • 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?

    Choosing a lifecycle model. No one lifecycle model is best for all projects. The best lifecycle model for any particular project depends on that project's needs.

    Figure 7-13. Choosing a lifecycle model. No one lifecycle model is best for all projects. The best lifecycle model for any particular project depends on that project's needs.

  • 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?

After you have answered these questions, Table 7-1 should help you decide which lifecycle model to use. In general, the more closely you can stick to a linear, waterfall-like approach—and do it effectively—the more rapid your development will be. Much of what I say throughout this book is based on this premise. But if you have reasons to think that a linear approach won't work, it's safer to choose an approach that's more flexible.

CROSS-REFERENCE

For more on why a linear, waterfall-like approach is most efficient, see Wisdom of Stopping Changes Altogether in Mid-Project: Feature-Creep Control.

Table 7-1. Lifecycle Model Strengths and Weaknesses

Lifecycle Model Capability

Pure Waterfall

Code-and-Fix

Spiral

Modified Waterfalls

Evolutionary Prototyping

Works with poorly understood requirements

Poor

Poor

Excellent

Fair to excellent

Excellent

Works with poorly understood architecture

Poor

Poor

Excellent

Fair to excellent

Poor to fair

Produces highly reliable system

Excellent

Poor

Excellent

Excellent

Fair

Produces system with large growth envelope

Excellent

Poor to fair

Excellent

Excellent

Excellent

Manages risks

Poor

Poor

Excellent

Fair

Fair

Can be constrained to a predefined schedule

Fair

Poor

Fair

Fair

Poor

Has low overhead

Poor

Excellent

Fair

Excellent

Fair

Allows for midcourse corrections

Poor

Poor to excellent

Fair

Fair

Excellent

Provides customer with progress visibility

Poor

Fair

Excellent

Fair

Excellent

Provides management with progress visibility

Fair

Poor

Excellent

Fair to excellent

Fair

Requires little manager or developer sophistication

Fair

Excellent

Poor

Poor to fair

Poor

Each rating is either "Poor," "Fair," or "Excellent." Finer distinctions than that wouldn't be meaningful at this level. The ratings in the table are based on the model's best potential. The actual effectiveness of any lifecycle model will depend on how you implement it. It is usually possible to do worse than the table indicates. On the other hand, if you know the model is weak in a particular area, you can address that weakness early in your planning and compensate for it—perhaps by creating a hybrid of one or more of the models described. Of course, many of the table's criteria will also be strongly influenced by development considerations other than your choice of lifecycle models.

Here are detailed descriptions of the lifecycle-model criteria described in Table 7-1:

Works with poorly understood requirements refers to how well the lifecycle model works when either you or your customer understand the system's requirements poorly or when your customer is prone to change requirements. It indicates how well-suited the model is to exploratory software development.

Lifecycle Model Capability

Staged Delivery

Evolutionary Delivery

Design-to-Schedule

Design-to-Tools

Commercial Off-the-Shelf Software

Works with poorly understood requirements

Poor

Fair to excellent

Poor to fair

Fair

Excellent

Works with poorly understood architecture

Poor

Poor

Poor

Poor to excellent

Poor to excellent

Produces highly reliable system

Excellent

Fair to excellent

Fair

Poor to excellent

Poor to excellent

Produces system with large growth envelope

Excellent

Excellent

Fair to excellent

Poor

N/A

Manages risks

Fair

Fair

Fair to excellent

Poor to fair

N/A

Can be constrained to a predefined schedule

Fair

Fair

Excellent

Excellent

Excellent

Has low overhead

Fair

Fair

Fair

Fair to excellent

Excellent

Allows for midcourse corrections

Poor

Fair to excellent

Poor to fair

Excellent

Poor

Provides customer with progress visibility

Fair

Excellent

Fair

Excellent

N/A

Provides management with progress visibility

Excellent

Excellent

Excellent

Excellent

N/A

Requires little manager or developer sophistication

Fair

Fair

Poor

Fair

Fair

Works with poorly understood architecture refers to how well the lifecycle model works when you're developing in a new application area or when you're developing in a familiar applications area but are developing unfamiliar capabilities.

Produces highly reliable system refers to how many defects a system developed with the lifecycle model is likely to have when put into operation.

Produces system with large growth envelope refers to how easily you're likely to be able to modify the system in size and diversity over its lifetime. This includes modifying the system in ways that were not anticipated by the original designers.

Manages risks refers to the model's support for identifying and controlling risks to the schedule, risks to the product, and other risks.

Can be constrained to a predefined schedule refers to how well the lifecycle model supports delivery of software by an immovable drop-dead date.

Has low overhead refers to the amount of management and technical overhead required to use the model effectively. Overhead includes planning, status tracking, document production, package acquisition, and other activities that aren't directly involved in producing software itself.

Allows for midcourse corrections refers to the ability to change significant aspects of the product midway through the development schedule. This does not include changing the product's basic mission but does include significantly extending it.

Provides customer with progress visibility refers to the extent to which the model automatically generates signs of progress that the customer can use to track the project's status.

Provides management with progress visibility refers to the extent to which the model automatically generates signs of progress that management can use to track the project's status.

Requires little manager or developer sophistication refers to the level of education and training that you need to use the model successfully. That includes the level of sophistication you need to track progress using the model, to avoid risks inherent in the model, to avoid wasting time using the model, and to realize the benefits that led you to use the model in the first place.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.65.134