软件开发迭代模型-开发迭代
文章目录
0.软件生命周期
软件的生命周期是指软件产品从概念产生到软件结束不用的时间。
软件生命周期分为需求分析、规划、设计、编码、测试、运维6个阶段。
1.瀑布模型
瀑布模型是最早的软件开发模型,也是所有其他软件开发模型的基本框架。 不同于软件生命周期,它缺少软件运维阶段。
描述:每个阶段只执行一次软件开发迭代模型,因此是一个线性顺序软件开发模型。
正是因为每个阶段只执行一次,所以前期的需求分析和设计就显得尤为重要。
优势:
为项目提供按阶段划分的检查点,强调开发的阶段性。 强调早期规划和需求调查。 重视产品测试。
缺点:
阶段之间几乎没有反馈。 结果只能在项目周期的后期才能看到,因此风险通常要到测试阶段的后期才会显现出来,从而错过了早期的纠正过程。 一个单一的过程,在开发过程中吸取的教训不能反馈到应用到这个产品的过程中。
适用项目:需求比较明确,变化不大的项目。
2.螺旋模型
一般在软件开发初期需求不是很明确时,会采用渐进的开发模式。 螺旋模型是增量开发模型的代表之一。
描述: 以原型为基础沿着螺旋旋转,每转一圈都要经过规划/风险分析/实施/评估的过程得到对应的新版本,经过几次螺旋后得到最终版本。
螺旋模型沿着螺旋进行多次迭代,图中的四个象限代表以下活动:
(1)制定计划:确定软件目标,选择实施方案,明确项目开发的约束条件;
(2) 风险分析:对所选方案进行分析和评价,考虑如何识别和澄清风险;
(3) 实施工程:软件开发与验证的实施;
(4)客户评价:对开发工作进行评价,提出整改建议,制定下一步计划。
迭代开发模型给软件测试带来了新的需求。 它不允许独立的测试时间和阶段。 测试必须随着开发迭代进行迭代,所以回归测试非常重要。
优势:
强调严谨的风险分析软件开发迭代模型,但很多客户并不容易接受和相信这种分析并做出相关回应。 因此,这种模式往往适用于规模大、风险高的项目。 在发展的各个阶段都强调质量。 这种类型的开发提供了一个机会来探索该项目是否值得继续进行。
缺点:
由于引入了非常严格的风险识别、风险分析和风险控制,会消耗大量的人力物力。 如果项目的利润受到严重影响,那么风险分析就没有意义了。 软件开发者要善于发现可能存在的风险,准确分析风险,否则会带来更大的风险。 软件建设周期长,但软件技术发展较快,可能与当前技术水平存在较大差距,不能满足当前用户需求。
适用项目:对于新开发,当需求不明确时,适合使用螺旋模型进行开发,便于风险控制和需求变更。
3.迭代模型
开发迭代是一个贯穿所有工作流的过程:(至少)需求工作流、分析和设计工作流、实施工作流和测试工作流。 本质上,迭代模型就像一个小型瀑布项目。
每次迭代都会产生一个可发布的产品,它是最终产品的一个子集。
描述:
4. 迭代过程包括所有软件开发过程。
5. 每次迭代都会产生一个可发布的产品。
6. 本产品是最终产品的子集。
适用项目:适用于所有事先无法完全定义的需求,以及计划分多期开发的项目。
4.增量模型
描述:
采用随时间交错的线性序列。 每个序列都会产生一个可发布的增量。 每个增量都会产生一个可操作的产品。 第一个增量是核心产品。
优点:一开始无需投入大量人力资源,可以提前推出核心产品稳定用户,有计划地管理技术风险。
缺点:需要开放架构,可能导致设计效果差,开发效率低。
合适的项目:需求经常变化的软件开发过程。
增量模型和迭代模型的区别:
增量是逐块构建的概念。 比如画人物画,我们可以先画头,再画身体,再画手脚……
迭代是反复细化的概念。 比如在同一幅人物画中,我们可以先画出整体轮廓,勾勒出基本的原型,然后再细化、上色……
5.敏捷模型
描述:敏捷模型是一种轻量级、高效、低风险的开发方法,强调团队协作和沟通。 适用于客户需求模糊或多变的中小型开发团队。
特征: