项目定义
此阶段可能是过程中最重要的阶段,因为它确定项目将如何演化。此阶段的关键活动是适当地定义需求,并且确定项目范围和预算。在此,会谈的技能是很重要的,因为是对项目涉众的需求的正式获取和重申。
将整个项目的范围设定的尽可能小:采用巨大的开发计划只会导致失败,因为有太多可变的部分。令项目简单,您就更可能成功。随着面向服务的体系结构(service-oriented architectures,SOAs)及其可复用的组件的出现,要使项目范围更小比过去容易得多。
准备
当您定义了组成项目的所有关键要素之后,您可以转移到项目的准备上来。在此阶段,您将精制预算,培养将要参与项目的团队,并且分配他们的职责。确保在所有团队成员之间建立沟通渠道。
有太多的组织错误地在此阶段只纳入了开发团队成员,这造成了产品没有准备好向生产环境的交付,并且缺乏它们运行所需的支持、培训,和任何其他的非开发的机制。因为要确保产品的高质量,需要许多团队,此时每个团队都应该派出代表。沟通机制还应该包括对项目涉众的经常反馈,从而确保他们随着开发的进行可以完全地察觉到不可预料的挑战和成功。
开发
在此阶段,您实际地对产品编码。现今,许多组织在使用地理上分散的开发团队,这导致了范围的蠕变,除非建立了适当的沟通渠道。解决这种分布的开发模型的非常好的方法是确保您的开发工具支持适当的源代码管理,为您所编制的代码提供单一的存储库,并且为在编码的人提供审计跟踪。此外,您可以包含带有检查点的,可以帮助指示整个项目进展的频繁的代码构建。
测试
在您开始发布核心代码组件之后开始测试。需要许多级别的测试:单元、功能、集成、分段、试验,和最后的投入生产。测试涉及不同的团队成员,从开发人员本身到提供最终产品的验收的最终用户。
促进该过程的非常好的方法之一是确保技术和开发团队之间的有力对话。许多项目在此阶段都会失败,因为开发人员发现他们需要根据他们不知道的环境规范来编码。一个杰出的实例是单元测试和集成测试之间的差别。在单元测试中,开发人员经常在他们自己的计算机上进行测试,在其中他们是作为拥有非常高特权的用户,并且在其中实现很少的标准。当他们达到集成层之后,代码不再有效,因为该层开始提供产品中建立的相同的标准。因此在非常早的阶段向开发人员提供环境规范的完整列表是至关重要的。理想情况下,相同的标准应该用于测试和开发的所有层次上,确保在产品通过各种测试周期中不出现任何惊奇。实现这一点的非常好的方法是对开发、生产工作站,和服务器使用相同的构建过程。