Designing Development Support Infrastructures (Part 1 of 5): Meeting Mission-Critical Development Needs
Designing IT Infrastructures to Support Development
The corporate development process spans several areas. The development lifecycle is outlined in the Process Model of Microsoft's Solution Framework (MSF). This cycle includes four phases: envisioning, planning, developing, and stabilizing (see Figure 1).
Figure 1 The MSF Process Model includes four major development phases.
The first two phases, envisioning and planning, need little in terms of supporting infrastructure. But the developing and stabilizing phases require special infrastructures to support them; this is where developers begin the actual development process. As a developer begins to program new code, he must first work on his local system; as he progresses through the development cycle, he migrates the code from his system to servers where it can be shared and integrated with other components created by his teammates. Most organizations today use this graduation process.
In fact, this graduation process usually includes at least five stages (see Figure 2):
- Unit testing. Individual developers developing and testing single components on their local machines.
- Functional testing. Ensuring that the new components perform the functions they're designed for. Again, this is usually on a local system.
- Integrated testing. The new components are moved to a central server to integrate them with components created by other programmers. This test focuses on seeing whether all of the components can work together as expected. In an ideal situation, these components are also integrated with every other component found in the production network.
- Acceptance testing. Users or clients are brought in to review the operation of the new program. They'll accept the program if it performs the functions they requested in the first place.
- Pre-production testing. The code is moved to a final environment to test its performance in a production-like system. If it passes this final test, the code will be deployed to the production environment.
As you can see, developers begin by working on their own local machines, and move to central environments as the program evolves. The first two testing stages are part of the development/testing phase of the MSF Process Model; the last three are part of the stabilizing phase. But product development doesn't stop at these phases. Once a program is complete, it must be deployed. Deployment includes a pilot project of some sort, followed by program revision if required, and then the actual deployment. Once a program is deployed, part of the programming team moves to ongoing support. This often involves minor modifications to the application and fixes or service packs. This process is ongoing until the program is either retired or replaced with a newer version.
Figure 2 A complete development lifecycle begins with the envisioning phase and ends with program retirement.