敏捷开发方法在澳大利亚核科学与技术协会仪器控制软件中的敏捷开发方法在澳大利亚核科学与技术协会仪器控制软件中的
应用应用
火龙果软件工程技术中心
1 摘要摘要
ANSTO(Australian Nuclear Science and Technology Organisation,澳大利亚核科学与技术协会)的中子波仪器项目最多控制
八台和特定辅助设备相关联的仪器。该项目预计在2006年中期完成。
这个系统的控制软件的需求由一个国际委员会提出,软件架构将取决于来自于至少三个洲的专家的建议。项目的成功在很大程
度上依赖于开发队伍的沟通能力,以及他们对于突发需求和资源变更做出适当反应的能力。
同传统的有严格的文档、确定的计划和过程的软件开发方法不同,敏捷软件开发方法更强调对于项目目标的持续逼近、开发者
的个人能力,以及小组成员之间的沟通。
本文探讨了在科技组织中应用敏捷开发方法的一些主要原则,并说明了到目前为止这些原则在中子波仪器项目中的效果。
2 科技组织中的软件开发过程科技组织中的软件开发过程
“每隔一段时间,开发组反思一下如何能够提高效率,
然后相应的调整以后的开发过程。” [1]
目前的软件工程通过一些要素来界定软件的规模,这些要素至少包括时间、范围、包括预算在内的各种资源。在项目开展的过
程中,这些要素经常会有一些突发的变化,某一个要素的变化往往会对其他因素造成很大的影响。对这些变化的不成功的处理
往往会导致整个项目的失败。
科研项目往往会有更多的变更,允许项目根据以后研发的情况做出调整,甚至为了迎合项目成果的变化重新定义项目的范围和
资源。在项目规划的时候,往往对项目的情况作出最坏的打算,允许项目花费比收益高很多的成本,或者仅仅取得远远比它可
能获得的效果少得多的效果。
目前,科研软件开发的成功往往在很大程度上依赖开发者的个人能力,以及一个在这个领域积累了多年经验的开发小组。这种
情况在已经发布的科研软件中占有越来越大的比例。
下一代的项目需要的是将开发者的技术经验和他们应用工具的能力尽量的结合起来。
3 敏捷软件开发宣言敏捷软件开发宣言
过去十年中提出的很多软件开发方法都是建立在开发者的实力的基础上的。他们认识到了个人的贡献,密切的和频繁的交流,
以及和软件本身多次的交互的重要作用。其实,软件本身才是项目的唯一目标。
这些方法论的提出者和实践者在2001年组织了专门的会议,提出了他们对于这些方法的宣言:
我们试图通过实践或者帮助别人来探讨开发软件的更好方法。
通过探讨我们达成一致:
个人能力和人际关系 胜过于 过程和工具
可正常工作的软件 胜过于可理解的文档
和客户合作 胜过于 合同谈判
对变更做出反应 胜过于按照计划开发
一般,别人关注右面的项目,而我们更关注左面的。
此外,开发组根据宣言制定了一些原则,并把它们形成文档。这些原则和一般的开发方法的主要区别如下:
- 敏捷方法更强调在预测的基础上的变化。设计和构建的计划中包括了对于需求、设计概念等的变更的管理,并通过有效的沟
通把风险降低。
- 敏捷方法更强调人而不是过程。开发者被认为是具有专业技能和主动性的技术专家。小组中最适合做出计划的人来充当管理
的角色。客户被认为是评判系统应该如何更有效运行的裁判。
被称为敏捷的方法很多,例如XP,功能驱动程序设计,Scrum, Crystal,以及渐进软件开发。这些方法在各自一定的领域内发
挥重要作用,因此很难成为对所有项目都适用的方法。
Fowler认为,渐进的过程适合于以下类型的项目: