购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

开发方法的种类

开发方法指的是项目团队如何创建和改进可交付物。有的开发方法强调要在设计解决方案之前了解所有需求,然后基于所设计的解决方案创建可交付物。还有的开发方法则从最基本的可交付物开始,并根据反馈改进解决方案。它们是两种不同的创建可交付物的方法。

开发方法: 项目团队创建和改进可交付物的方法。

注意:开发方法不是生命周期。我们将在第5章介绍生命周期。

在本章,我们将介绍4种开发方法,如图1-1所示:

· 瀑布开发方法;

· 迭代开发方法;

· 增量开发方法;

· 敏捷开发方法。

瀑布开发方法就是我们所说的预测型。换句话说,我们希望能够基于稳定的范围预测进度和预算。增量开发方法、迭代开发方法和敏捷开发方法都属于适应型,这意味着它们足够灵活,允许需求和范围的变更。

适应型: 一种创建可交付物的方法,允许不确定或变化的需求。

预测型: 一种创建可交付物的方法,该方法试图在项目开始时定义范围、进度和成本,并在整个项目中最小化变更。

图1-1 开发方法

瀑布开发方法

瀑布开发方法: 一种创建可交付物的预测型方法,遵循线性开发模式,即完成一个阶段的工作,再开始下一阶段的工作。

瀑布开发方法在本质上是预测型的。换句话说,它从定义明确的范围开始,然后项目团队逐步细化到更详细的层级,接着对工作进行排序,进行持续时间和成本估算,最后设定基准。在整个项目过程中,进度将根据基准进行衡量。使用瀑布开发方法的项目经理会遵循项目计划,并努力使变更最小化。

图1-2展示了一个使用瀑布开发方法的轻轨项目的生命周期。你可以看到一个阶段是如何在下一个阶段开始之前完成的,图形的形状看起来像瀑布。在环境影响分析阶段,将进行场地研究、材料分析、地质调查、生命周期评估等类似工作。在计划阶段,将制订详细的资源、预算、进度、沟通、风险和其他计划。在计划阶段结束时,这些计划将被确定为基准。工程设计阶段包括绘制蓝图、设计架构、建模和其他类似的工作,以确保设计满足需求,符合监管要求,并将对环境的影响降到最低。施工阶段将进行所有的体力工作。施工阶段是最显眼的,花费预算最多,也可能是耗时最久的。工程设计和施工阶段的进度会与计划基准进行比较,以确保项目符合进度计划和预算。

图1-2 瀑布开发方法

当需求可以被预先定义,并且项目的范围预计不会改变时,瀑布开发方法是最好的。这种方法通常被用于有很多预算的项目,详细的计划可以帮助减少不确定性和风险。具有高风险可交付物或受到重大监管的项目也适合采用瀑布开发方法。

使用瀑布开发方法的项目类型包括:

· 工程建设;

· 国防项目,如建造新飞机、舰船或坦克;

· 医疗设备;

· 基础设施,包括道路、桥梁或公共交通。

迭代开发方法

迭代开发方法本质上是适应型的。当人们对期望的结果仅有高层级的理解,但没有定义实现该结果的最佳方法时,便会使用迭代开发方法。项目团队使用一系列迭代来明确交付结果的最佳方法。

迭代开发方法: 一种适应型开发方法,从交付简单的东西开始,然后根据输入和反馈进行调整。

迭代: 项目中团队执行工作的一个简短的固定时间间隔。也称时间盒或冲刺。

迭代开发方法可用于设计一种新的多功能自行车。它可能开始于一个在画板上的想法,这个想法可以展示给关键干系人以获得反馈。一旦干系人对设计感到满意,团队就可以使用廉价的材料构建一个简单的车架模型,人们可以观察并坐上去,进而提供更多反馈。一旦车架模型被确定,下一次迭代就可以专注于寻找合适的材料。合适的材料会影响乘坐体验、价格、重量、手感及预期寿命。

当车架尺寸和材料确定后,团队可以进行迭代,以确定最佳的齿轮、刹车器和其他部件。只有当团队整合了所有相关反馈后,他们才会最终确定设计、材料和规格,以便投入生产。

图1-3展示了迭代开发方法的一个通用例子。请注意,每次迭代都为下一次迭代提供了信息。迭代的次数取决于反馈和决策者何时同意最终迭代能够满足项目的目标。

迭代开发方法可以与敏捷开发方法结合使用,尤其适用于软件开发。除了可以用于软件开发,迭代开发方法还有许多其他用途。可以使用迭代开发方法的项目类型包括:

· 新产品开发;

· 软件开发;

· 营销活动。

图1-3 迭代开发方法

增量开发方法

增量开发方法本质上是适应型的。当最终产品可以分解为更小的组件,并且可以增量部署可交付物时,就会使用增量开发方法。每个增量都从以前的部署中学习,添加或改进可交付物的特性和功能。

增量开发方法: 一种适应型开发方法,从简单的可交付物开始,然后逐渐增加特性和功能。

最小可行产品: 首次发布的产品,包含最少数量的特性或功能。

增量开发方法可能从一个想法开始,然后构建这个想法的一个基本版本并发布出来。产品发布后,团队会收集反馈,比如人们如何使用产品,哪些功能用得最多,哪些功能不用,以及请求支持的数量。这些反馈在下一个增量中解决。根据产品的不同,团队可能会添加新的组件或升级软件。

这种方法可以用来开发在线学习课程。第一个增量可以包括能在线访问的幻灯片和能下载的PDF文档。这两个元素大概就是所谓的“最小可行产品”。换句话说,它的功能刚好能够出售。一些客户可能会提供有关产品的明确反馈。由于产品是在线学习课程,因此可以监控客户的行为,包括他们在每个功能上花费的时间,他们恢复了哪些功能,以及他们何时退出登录。

基于反馈,下一个增量可能包括内置的练习、测验和互动活动。这将被发布,并收集更多的数据。再下一个增量可能包括视频和音频剪辑或线程讨论。开发和升级将继续下去,直到确定产品已经完成。

请注意,使用增量开发方法,团队发布的产品的每一个增量都是完整的。他们不必等到整个产品完成或集成后才发布。这使得团队能够快速学习并根据干系人的反馈更新他们的计划。

图1-4展示了增量开发方法的一个通用例子。这个例子展示了四个增量,每个增量都将增加更多的功能。

增量开发方法经常与敏捷开发方法一起用于软件开发,尽管这并不是增量开发方法的唯一用途。可以使用增量开发方法的项目类型包括:

· 客户忠诚度计划;

· 应用程序开发;

· 在线学习课程开发。

图1-4 增量开发方法

敏捷开发方法

正如前言中提到的,敏捷是一种基于价值观和原则的思维方式。有几个框架或方法融合了这些价值观和原则。它们都包括迭代开发和持续反馈。本书不会偏向任何一种方法,而是将敏捷作为一种开发可交付物的方法。

敏捷: 遵循《敏捷宣言》中确立的4个价值观和12项原则,以适应型方式交付价值。

迭代开发方法和增量开发方法都可应用于敏捷。不过,迭代或时间盒非常短,通常持续一两周或四周。在每次迭代(有时称时间盒或冲刺)结束时,团队会向干系人展示他们已经完成的工作。干系人提供反馈,然后将功能和特性的待办事项列表按优先级排序,以供下一次迭代使用。

敏捷开发方法有几个独特的方面,将在本书中进行描述,如不同的角色、会议、优先级排序方法和进度计划。

使用敏捷开发方法的一个例子,可能是一个城市的管理者想了解其居民如何使用公园和开放空间。他们可以开发一个应用程序,从在线搜索、教育计划、调查、停车收费表、供应商和其他数据源中提取数据。该应用程序将从这些不同的来源编译数据并使其可检索,创建表格、图表、仪表板和其他工具。这些信息可以为该城市在人员安排、规划和居民满意度等方面提供帮助。

团队将从这个高层级概念以及客户要求的特性和功能列表开始。客户会确定工作的优先级,而团队会决定在接下来的迭代中可以完成哪些高优先级功能。在迭代结束时,他们将演示自己的工作,接收反馈,并进入下一次迭代。在某些时候,他们将有足够的特性和功能来发布应用程序以供使用。如果需要,他们可以在以后的版本中添加更多的功能。

上面这个例子可以使用迭代实践来演化应用程序的各个方面。它也可以使用增量实践来发布一些功能,做更多的工作,发布更多的功能,等等。

图1-5展示了敏捷开发方法的一个通用例子。每个冲刺都使用上一个冲刺的反馈来计划和开发下一个冲刺。

图1-5 敏捷开发方法 q7e2zg7jaw2E/fkTiRwZJeH70Ys8qRS/2AtMSrf9oSDe6tRPq/99YZNaQ6Jp8jZ0

点击中间区域
呼出菜单
上一章
目录
下一章
×