2. 迭代模型
迭代模型适用于简化的需求,这些需求是软件或应用程序需求的子集。 “产品”经过迭代更新,演变为最终产品以进行部署。 每次迭代都称为“构建”。 因此,在每次构建时,都会向产品中添加设计修改和新功能。 通过迭代模型,该软件可以一次实现一小部分。
下面展示了迭代模型的图例:
下面解释迭代模型的各个阶段:
1. 需求
与流水线模型相同,需求阶段重点在于与业务用户进行沟通并准备业务案例文档。
2. 设计
与流水线模型相似,业务分析师和系统分析师分别进行逻辑和物理设计,以准备软件需求规范和设计规范文档。但是,有些设计会全面记录软件的实现方式,并且有几个设计子集可供程序员进行实现和测试,而这些子集与其他设计子集是隔离的。此外,设计的子集可以在每轮构建之后进行修改。因此,直到进入部署阶段,设计的子集才会最终确定。
3. 实现
程序员根据设计阶段形成的设计子集来开发软件。将为实现的每个子集准备功能规范。
4. 测试
程序员、业务用户和质量控制专家将会参与到每个测试子集中。但是,业务用户将只关注当前构建中所涵盖的有限范围,但是程序员和质量控制专家每次都必须涵盖所有已实现的功能。此外,对于进入部署阶段之前的最后一个构建,这三个方面不仅需要进行测试的子集,而且还必须将测试作为完整的系统测试来进行。
5. 部署
与流水线模型没有区别,此阶段应准备好一切,并发布发布计划。
6. 维护
同样,像流水线模型一样,不可避免的是每个软件都需要维护。 因此,系统开发生命周期迭代模型中的每个子集将参与维护阶段。
每个阶段的输入输出总结如下:在完成每个子集的测试后,将回到设计阶段,并开始下一轮的设计直到完成最后一个子集。
模型的应用
系统开发生命周期中,适用迭代开发模型的应用如下:
- 主要的需求已经被确定了下来,但是一些细节还需要随着时间的流逝进行评估;
- 正在使用最新的技术,程序员需要新的学习曲线;
- 资源有限,无法做一个大型项目,就好像一个小型项目或团队成员正在签约而不是持久;
- 具有非常高的风险,因为随着时间的推进,项目的需求可能会发生改变。
优劣
优势:
- 复杂的项目上可以很容易开始;
- 周期性预览整个项目;
- 并行实现是被允许的;
- 项目可以一直被管理,就像流水线模型一样有完整的时间表和界限;
- 简化每个版本的测试和故障排除;
- 支持降低成本或一定范围内的需求变更;
- 适用于大型核心项目;
- 可以与业务用户更好地沟通,并在每次构建时聚集用户的反馈。
劣势:
- 由于系统架构和设计一直在变化,导致具有高风险性;
- 在每次构建整合的过程中,将会发生问题;
- 更多的管理工作需要做,保证每一次的构建都能达到标准;
- 交叉重叠的实现可能导致项目混乱;
- 需要业务用户更多的参与进来;
- 简化但需要在测试阶段花费更多的时间,并且,每一次的测试都需要覆盖到之前的工作。