Developing software is a complex and dynamic undertaking. As Jim McCarthy observes:
Shipping ordinary software on time is damned hard. Shipping great software in any time frame is extraordinary. Shipping great software on time is the rarest of earthly delights.
Shipping great software is increasingly difficult because of the burgeoning growth of Internet applications and enterprise-wide multi-tier applications. In this chapter, we briefly reviewed the Waterfall Model, the Spiral Model, and the Unified Process, and then focused on the MSF Development Process Model.
Rigor and flexibility—the two most essential qualities needed to successfully develop these application types—are provided by the MSF Development Process Model: rigor through milestone-based planning, and flexibility through its creative, iterative process. In this chapter, we examined the four phases of this model: Envisioning, Planning, Developing, and Stabilizing. We discussed the concept of versioned releases and looked at the importance of doing complete iterations of the model within each of its phases. We discussed living documents and the idea of "baseline early, freeze late." Finally, we described how to set goals for each iteration.