MSF process model is divided to repetitive cycles. Each cycle is divided to five phases: envisioning, planning, development, stabilizing and deploying. Authors of MSF say it’s the best of two worlds – they took phases from a waterfall model and cycles from a spiral model, but it’s quite intuitive. Actually whole world uses versions and they have a kind of design, development and testing stages.
There are some principles connected with MSF phases:
• Although they’re lined with particular order (yes, that does make sense) one can overlap on another. Generally you start next phase as soon as possible. You don’t wait to finish coding to start tests. As soon as there is some (rather) complete code to test you can begin stabilization of a project.
• The first phase of another cycle can overlap with the last phase of previous cycle, so whole cycles can overlap also. No need to wait for finishing implementation when you envision another version.
• Every phase finishes with a milestone. It’s something that is yelling “hey, our part is finished!” Usually you already have another phase launched, so no place to boredom here.
• During every phase there are different leading roles. The leading role is the one which takes the responsibility for achieving the milestone, which finishes the phase. The leading role usually is the busiest one.
The model isn’t something hi-tech – it’s really intuitive when you look on the whole. OK, I think it’s time to briefly describe phases.
• Envisioning. That’s the phase when all decision-makers agrees on what they really want to do. Yes, the whole team should participate telling what they thing it should be done. Then of course a lot of discussions happen. A goal is to define which features are essential (and will be done for sure), which are important but not essential (and will be done if time allows) and which are not important (and won’t be done in this version). Consensus-driven document with those three groups agreed by the team (after long fierce fights) is a vision statement. That’s the milestone for this phase. Leaders in discussions are product and program managers.
• Planning. Here the work from previous phase is taken further. All detailed cost estimates, which has been taken basing on experience, are counted now. Vision statement becomes a list of tasks, to-dos etc. It materializes. Program manager leads that phase. It finishes with project/development plan.
• Development. You already know what (vision) and how (project plan) things should be done. Now it’s time for get them done. It’s the developers’ time. The time when your programmers get hard time (with reaching deadlines) but also have fun with creating things. The milestone here is something called “code complete”. It’s the moment when everything should work correctly (“should” is clue word here). OK, at least every essential requirement should be covered.
• Stabilizing. Time of testers. Time of malicious people (it’s the positive adjective in that case). Now you verify how well programmers have done their work and you constantly increase project’s quality (but not project’s functionality – it shouldn’t be enhanced now). Of course the goal is to have zero-bug version, so testers test, developers resolve issues, testers verifies if issues have been resolved indeed, managers look at bugs counter and they realize they did some mistakes during envisioning phase…
• Deployment. During deployment you need to deliver your fantastic zero-bug golden release to the customer. Everyone is content with his work well done. OK, almost everyone. Release managers earn their salaries now. Depending on size of the system some of senior developers can be involved too. The work is finished when the solution is successfully delivered to the customer. By this time you should have already started vision phase of another iteration.
And the cycle repeats. Till the end of the days…
Whole MSF Basics series