软件开发模型

软件开发模型

 

3.1.分类

  • 瀑布模型
  • 增量模型
  • 螺旋模型
  • 喷泉模型
  • 智能模型
  • V模型
  • 快速应用开发模型
  • 构件组装模型
  • 敏捷方法和统一过程等

3.2.瀑布模型

  • 也称为生命周期法,是结构化方法中最常用的开发模型,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段
  • 定义阶段:软件计划、需求分析
  • 开发阶段:软件设计、程序编码、软件测试
  • 维护阶段:运行维护
  • 瀑布模型的优点:
    • 为项目提供了按阶段划分的检查点
    • 当前一个阶段完成后,只需要去关注后续阶段
    • 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导
  • 瀑布模型的缺点:
    • 各个阶段之间产生大量的文档,极大地增加了工作量
    • 由于开发模型是线型的,用户只有等到整个过程的末期才能见到开发结果,从而增加了开发风险
    • 不适应用户需求的变化,并且在需求分析阶段不可能完全获取
    • 在软件开发前期未发现的错误传到后面的开发活动中时,可能会扩散,进而可能会导致整个软件项目开发失败
  • 所以,瀑布模型适用于需求明确或很少变更的项目

3.3.快速原型模型


【软件测试基础理论知识】1.1.常见的软件开发模型之———瀑布模型、原型模型、快速原型模型_heyiyiya的博客-CSDN博客_快速原型模型和瀑布模型的区别在哪?

  • 快速原型是利用原型辅助软件开发的一种新思想
  • 经过简单快速分析,快速建造一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的用户需求基础上开发客户满意的软件产品
  • 原型可以为三类:
    • 探索型原型:主要用于需求分析阶段,目的是要弄清用户的需求,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发人员对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求
    • 实验型原型:主要用于设计阶段,考核实现方案是否合适,能否实现。对于大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性
    • 演化型原型:主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统
  • 它将原型的思想扩展到软件开发的全过程

3.4.演化模型

  • 也称为变换模型,根据用户的基本需求,通过快速分析构造出一个初始可运行版本(原型),然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品
  • 快速原型模型时“抛弃式”的,演化模型是“渐进式”原型方法。演化模型特别适用于对软件需求缺乏准确认识的情况
  • 演化模型的优点:
    • 很早就可以验证是否符合产品需求
    • 风险管理可以在早期就获得项目进程数据,可据此对后续的开发进度作出比较切实的估算,增加项目成功的机率
    • 经验教训能反馈于本产品的下一个循环过程,提高质量效率
    • 心理上,开发人员早日见到产品的雏形,是一种鼓舞
    • 使用户可以在新的一批功能开发测试后,立即参加验证,以便提供非常有价值的反馈
  • 演化模型的缺点
    • 产品需求在一开始并不安全弄清楚的话,会给总体设计带来困难及削弱产品设计的完整性,并影像产品性能的优化
    • 如果缺乏严格的过程管理,这个生命周期模型可能退化为一种原始的无计划的“试 - 错 - 改”模式
    • 用户接触开发中的尚未测试稳定的功能,可能对用户产生负面的影响

3.5.增量模型

  • 融合了瀑布模型的基本成分和原型实现的迭代特征,是第三种原型化开发方法,但它不是“抛弃式”的,也不是“渐进式”的。增量模型把软件产品划分为一系列的增量构件,第一个增量往往是核心的产品,即第一个增量实现了基本的需求。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品
  • 增量模型与原型实现模型和其他演化方法一样,本质上是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品
  • 增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发
  • 增量模型的优点:
    • 人员分配灵活,初期不用太大投入
    • 每隔一小段时间就提交用户部分功能,用户可以直观感受项目进展,及时试用产品功能
    • 有利于风险的把控
  • 增量模型将功能细化、分别开发的方法适应于需求经常改变的软件开发过程

3.6.螺旋模型
 

 螺旋模型是在快速原型的基础上扩展而成的一种生存周期模型。这种模型将整个软件开发流程分成多个阶段,每个阶段都由4部分组成,它们是:

 ① 目标设定(需求定义)。为该项目进行需求分析,定义和确定这一个阶段的专门目标,指定对过程和产品的约束,并且制定详细的管理   

 ② 风险分析。对可选方案进行风险识别和详细分析,制定解决办法,采取有效的措施避免这些风险。

 ③ 开发和有效性验证(工程实现)。风险评估后,可以为系统选择开发模型,并且进行原型开发,即开发软件产品。

 ④ 评审。对项目进行评审,以确定是否需要进入螺旋线的下一次回路,如果决定继续,就要制定下一阶段计划

 螺旋模型的软件开发过程实际是上述4个部分的迭代过程,每迭代一次,螺旋线就增加一周,软件系统就生成一个新版本,这个新版本实际上是对目标系统的一个逼近。经过若干次的迭代后,系统应该尽快地收敛到用户允许或可以接受的目标范围内,否则也可能中途夭折。

  • 将瀑布模型和演化模型相结合,综合了两者的优点,并增加了风险分析。它以原型为基础,沿着螺线自内向外旋转,每旋转一圈都要经过制订计划、风险分析、实施工程及客户评价等活动,并开发原型的一个新版本。经过若干次螺旋上升的过程,得到最终的系统
  • 螺旋模型的优点:
    • 设计上灵活,可以在项目的各个阶段进行变更
    • 以小的分段来构建大型系统,使成本计算变得简单容易
    • 客户始终参与每个阶段的开发,保证了项目不偏离正确方向
    • 随着项目推进,客户始终掌握项目的最新信息,从而能够和管理层有效地交互
  • 螺旋模型地缺点:
    • 需要具有相当丰富地风险评估经验和专门知识,如果未能够及时标识风险,势必造成重大损失
    • 过多地迭代次数会增加开发成本,延迟提交时间

3.7.喷泉模型

  • 是一种以用户需求为动力,以对象为驱动地模型,主要用于描述面向对象的软件开发过程,该模型认为软件开发过程自下而上的,各阶段是相互迭代和无间隙的。
  • 无间隙是指在开发活动中,分析、设计和编码之间不存在明显的边界

3.8.基于构件的开发模型

  • 将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程
  • 基于构件的开发模型由软件的需求分析和定义体系结构设计构件库建立应用软件构建以及测试和发布5个阶段组成
  • 优点:构件复用,提高了软件开发的效率。构件可由一方定义其规格说明,被另一方实现。然后供给第三方使用,构件组装模型允许多个项目同时开发,降低了费用,提高了可维护性,可实现分步提交软件产品
  • 缺点:缺乏通用的组装结构标准,因而引入了较大的风险。可重用性和软件高效性不易协调,需要精干的有经验的分析和开发人员。客户的满意度低,并且由于过分依赖于构件,所以构件库的质量影响着产品质量

3.9.快速应用开发模型(RAD)

  • 是一个增量型的软件开发过程模型。强调极短的开发周期。RAD模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。如果需求理解的好且约束了项目的范围,随后就是数据建模、过程建模、应用生成、测试及反复
  • 特点:基于构件的开发方法,用户参与、 开发或复用构件、模块化要求高, 不适合新技术;

3.10.敏捷方法

  • 敏捷开发更强调程序员团队与业务专家之间的紧密协作、面对面沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够和好的适应需求变化的代码编写和团队组织方法,也更注重人的作用
  • 常见的敏捷开发方法:
    • 极限编程(XP)
    • 自适应软件开发
    • 水晶方法
    • 特性驱动开发
    • scrum
  • 从开发者的角度,主要的关注点:
    • 短平快会议
    • 小版本发布
    • 较少的文档
    • 合作为重
    • 客户直接参与
    • 自动化测试
    • 适应性计划调整
    • 结对编程
  • 从管理者的角度,主要的关注点
    • 测试驱动开发
    • 持续集成
    • 重构

3.11.统一过程(UP/RUP)

  • 是一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模
  • UP是基于构件的,软件系统建模时,UP使用的时UML
  • 与其他软件过程相比,UP具有三个显著的特点:
    • 用例驱动
    • 以体系结构为中心
    • 迭代和增量
  • UP中的软件过程在时间上被分解为四个阶段:
    • 初始阶段
    • 细化阶段
    • 构建阶段
    • 交付阶段
  • 每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经达到

你可能感兴趣的:(软考,软件开发模型)