软件开发项目是以成为泛滥、错过的最终期限,和范围的不断变更而出了名的。为什么是这样呢?为什么当您着手开发一个产品时 —— 操作系统、设备驱动程序、内部应用程序,或甚至是 Web 页面 —— 您似乎不能让程序设计人员准时、按预算交付,并达到令您超群的质量等级?
当然,不是所有的开发项目都会遇到这些问题,那么什么使它们不同呢?什么使它们成功呢?在许多情况下,这些项目实现了其目标,因为有了适当的 IT 治理。治理帮助您领导,特别是控制开发项目的进展,并让它们走上正轨。治理不必须是繁重的,也不是整体的。虽然对于开发项目的适当治理不存在“魔术的”解决方案,但是您可以实现一组可以帮助减缓最公共的问题的重要过程。
确定您的治理观点
治理对所有人来说意谓的不同。首先,治理不意味着刚性,或者,如果是,也只是因为它应用于过程的法规遵循。太多的组织对开发使用不假思索的过程。如果它们使用内部的过程,那么它们会过于严格地或不足地信守。太多,意味着每个人都信守过程的字面意思,经常专注于错误的方面,并且没有关注令过程有效的关键因素。太少,不能指导确保在正确的时间进行过程的正确方面。
不,有效的治理意味着进行正确的过程,并且如果您需要,加入正确的工具来支持该过程。但记住,这里的重点是过程本身。必须在正确的时间关注正确的活动,并且依赖一个主要的关键因素:所有的有利害关系的群体之间的沟通。太多的过程失败了,因为在所有的有利害关系的群体之间不存在沟通。
理想的开发过程
那么,什么组成了理想的开发过程呢?它应该是以生命周期的形式,并且至少包含以下阶段:
- 项目定义
- 准备
- 开发
- 测试
- 代码成熟化
- 部署
- 支持
- 退役
项目定义
此阶段可能是过程中最重要的阶段,因为它确定项目将如何演化。此阶段的关键活动是适当地定义需求,并且确定项目范围和预算。在此,会谈的技能是很重要的,因为是对项目涉众的需求的正式获取和重申。
将整个项目的范围设定的尽可能小:采用巨大的开发计划只会导致失败,因为有太多可变的部分。令项目简单,您就更可能成功。随着面向服务的体系结构(service-oriented architectures,SOAs)及其可复用的组件的出现,要使项目范围更小比过去容易得多。
准备
当您定义了组成项目的所有关键要素之后,您可以转移到项目的准备上来。在此阶段,您将精制预算,培养将要参与项目的团队,并且分配他们的职责。确保在所有团队成员之间建立沟通渠道。
有太多的组织错误地在此阶段只纳入了开发团队成员,这造成了产品没有准备好向生产环境的交付,并且缺乏它们运行所需的支持、培训,和任何其他的非开发的机制。因为要确保产品的高质量,需要许多团队,此时每个团队都应该派出代表。沟通机制还应该包括对项目涉众的经常反馈,从而确保他们随着开发的进行可以完全地察觉到不可预料的挑战和成功。
开发
在此阶段,您实际地对产品编码。现今,许多组织在使用地理上分散的开发团队,这导致了范围的蠕变,除非建立了适当的沟通渠道。解决这种分布的开发模型的最佳方法是确保您的开发工具支持适当的源代码管理,为您所编制的代码提供单一的存储库,并且为在编码的人提供审计跟踪。此外,您可以包含带有检查点的,可以帮助指示整个项目进展的频繁的代码构建。
测试
在您开始发布核心代码组件之后开始测试。需要许多级别的测试:单元、功能、集成、分段、试验,和最后的投入生产。测试涉及不同的团队成员,从开发人员本身到提供最终产品的验收的最终用户。
促进该过程的最佳方法之一是确保技术和开发团队之间的有力对话。许多项目在此阶段都会失败,因为开发人员发现他们需要根据他们不知道的环境规范来编码。一个杰出的实例是单元测试和集成测试之间的差别。在单元测试中,开发人员经常在他们自己的计算机上进行测试,在其中他们是作为拥有非常高特权的用户,并且在其中实现很少的标准。当他们达到集成层之后,代码不再有效,因为该层开始提供产品中建立的相同的标准。因此在非常早的阶段向开发人员提供环境规范的完整列表是至关重要的。理想情况下,相同的标准应该用于测试和开发的所有层次上,确保在产品通过各种测试周期中不出现任何惊奇。实现这一点的最佳方法是对开发、生产工作站,和服务器使用相同的构建过程。
代码成熟化
成熟化是将新产品的功能的所有方面都集成到一个相干的组件中。如果在测试周期中实现了适当的沟通,那么此阶段大部分是敷衍的,并且专注于文档的小部分修正、安装说明、支持材料,和培训工具。它还专注于确保代码的稳定并且能够提供期望从产品中得到的可靠性等级。在此阶段版本化对于确保所有的团队成员都了解他们应该处理的产品的等级是很重要的。
部署
如果在前面两个阶段中使用了适当的分段过程,那么部署仅仅就是重复同样的过程,但是在更大的范围上。应该通过试验项目提供对所有部署机制的反馈。然后您可以做出调整,从而确保产品部署可以尽可能平稳地进行。[本文共有 2 页,当前是第 1 页] <<上一页 下一页>>