章节 1.1 软件开发方法 – 灵活,可靠的软件 使用设计模式和敏捷开发
敏捷开发流程
学习目标
在这一章中,学习的目的是了解敏捷开发的主要思想。一个特别且有影响力的称做极限编程的敏捷方法将用比较详细的介绍。一些极限编程中的技术方法和实践将在本书后面详细讨论。因此这一章节主要创造一些便于了解他们的上下文。
1.1 软件开发方法
不管你怎么开发软件,你总会用到一些特定的软件开发流程,将其施加于你实施的工作和活动之上去制作一个符合客户期望的软件。一个软件开发流程需要制定一些去处理开发中的活动和步骤的方法,这些步骤一般会包含
- 需求: 你怎样收集和文档化用户和客户对于软件的期望,也就是说软件该做什么
- 设计: 你怎么划分和结构化软件,以及怎么交流这个软件结构
- 实现: 开发人员怎么去编写满足需求且符合设计的软件
- 测试: 你怎么验证执行的系统怎么真正满足需求和用户期望
- 部署: 你怎么确保开发的软件系统运行在客户那边正确的环境中
- 维护: 你怎么确保系统在用户找到缺陷时有被纠正,或者系统在新的功能需求被添加时有被增强
对于这些步骤的定义和工具的严格程度取决于一个项目的大小:一个有数百开发人员参与的飞机控制软件项目需要比两个朋友用业余时间开发的游戏严格得多。
两年来一些软件工程研究人员和实践者描述和测试了大量的开发流程,有很长一段时间他们倾向于用重量级的流程。他们强调严格的交流和流程规范,编写许多详细的文档且不会在前一个活动没有被详细分析和了解前开始下一个活动。这其中一个就是瀑布试模型。如梗概图1.1中所示,其中一个活动到另一个活动是纯顺序关系,你在设计前把所有的需求都详细记录在文档中,你不会在设计完成前做代码实现,等等。
因为使错误提前在流程中发现将会更廉价, 后来很快又被人们认识到要完善某一阶段再进行下一步甚至对于小项目都不现实。很多时候需求和设计直到用户测试可运行的系统时才部分地被了解,在普遍的模型中这些对系统的深入了解在后面的阶段被发现得太迟,导致前些阶段的投资都没有价值。
敏捷开发流程被归为轻量级的,能确保对系统深入了解, 以及能使在没有价值的东西上投入尽可能少的一种方式。
翻译自书籍:Flexible, Reliable Software Using Patterns and Agile Development, Henrik Baerbak Christensen
后面的翻译将陆续更新… 下一篇,1.2 敏捷方法