第二篇课堂笔记,本节课主要介绍了软件开发模型

软件开发模型:

软件开发模型(软件生存模型),主要反映软件生命周期主要活动以及他们之间的联系。

1.瀑布模型

<线性顺序>严格按照阶段进行,每一个阶段都定义了明确的产出物和验证准则,每个阶段完成时,阻止评审和验证,只有验证通过才能进入下一个阶段。

需求开发—软件设计—软件实现—软件测试—软件交付—软件维护

瀑布模型的特点:

  • 顺序性
  • 依赖性
  • 文档驱动
  • 推迟实现
  • 质量保证

优势:

  1. 为软件开发活动定义了清晰的阶段划分

劣势

  1. 对文档期望过高:文档撰写会耗费很大的工作量和成本;需求经常变换,无法建立完备可靠的文;
  2. 对开发活动的线性顺序假设:缺乏灵活性,不能适应用户需求的改变;返回上一级修复,会耗费很大的工作量和成本
  3. 客户,用户参与不够:客户,用户的项目参与仅限制在一个时间段内(需求开发阶段)

(过于理想化)

适用场景:需求非常成熟,稳定,没有不确定内容,也不会产生变化;所需技术成熟,可靠,没有不确定的技术难点,也没有开发人员不熟悉的技术问题;复杂度适中;

2.增量模型

<增量就是一个功能>在瀑布模型的基础上提出;线性顺序假设的局限性和迭代性;周期过长和渐进交付

系统需求开发 && 核心体系结构设计

功能模块1(增量):软件需求开发,软件设计,软件实现,软件测试,软件交付1,软件维护1

功能模块2(增量):软件需求开发,软件设计,软件实现,软件测试,软件交付2,软件维护2

……

功能模块n(增量n):软件需求开发,软件设计,软件实现,软件测试,软件交付n,软件维护n

特点:在项目早期确定项目的目标范围;将系统分为诺干个独立的功能模块——增量;在每个增量的内部按照瀑布模型组织开发活动;不同的增量迭代形成渐进交付并行开发的效果;

优势

  1. 具有更好的适用性(利用迭代的思想)
  2. 并行开发可以帮助缩短软件产品的开发时间
  3. 渐进交付可以加强用户反馈,降低开发风险
  4. 减少客户,用户对新软件产品的冲击

局限性

  1. 要求软件具备开放性和灵活性
  2. 依赖于开发人员的技术和经验(分割模块依赖架构师【依赖经验and技术】)

使用场景:需求比较成熟和稳定,不能数量太多的不确定性和影响太大的需求变更;具有灵活性的大规模软件系统(小规模系统就没必要使用了);

3.演化模型

<演化是全部功能部分实现> 与增量模型相比,都使用迭代式组织开发活动(并行,迭代);都适用于大规模软件开发;但彼此之间使用领域不同(演化模型适用于需求变化大的场景,而增量模型不行)

演化1:需求开发,软件设计,软件实现,软件测试,软件 交付(演化1),软件维护(演化1)

反馈信息-—> 演化2:需求开发,软件设计,软件实现,软件测试,软件 交付(演化2),软件维护(演化2)

……

反馈信息n-1——>演化n:需求开发,软件设计,软件实现,软件测试,软件 交付(演化n),软件维护(演化n)

 

#反馈信息:用户根据当时的演化进程进行的反馈

特点:

  • 迭代行
  • 顺序性
  • 需求驱动

总结:建立和交付初始系统用户用户在使用中发现变更需求,澄清不明确需求,并反馈给开发人员;开发人员根据用户反馈进行后续迭代;……(≡(▔﹏▔)≡)

优势

  1. 具有更好的适用性(比增量更好的适用性)
  2. 并行开发,缩短开发时间
  3. 渐进交互,降低风险,加强反馈

缺点:

  1. 项目整体计划,进度调整无法准确把握(无法控制进度……[加重软件危机])

适用场景:需求变更比较频繁或不确定性比较多的领域;大规模软件系统;

4.螺旋模型

解决开发风险问题,尽早发现解决风险(核心:注重处理风险问题

整体处于螺旋形状,也是一种反复迭代的过程,吸收瀑布模型和演化模型的优点结合而成;

分为四个象限;

第一象限:明确目标,选择方案,设定约束条件

第二象限:评估方案,风险分析(风险判定,定性定量[量化]),构造原型

第三象限:开发与验证

第四象限:评价本阶段,计划下一阶段

 

每一圈包含了四个象限:

第一圈:问题定义

第二圈:软件需求,需求分析

第三圈:软件设计,体系结构设计

第四圈:软件实现:详细设计,实现,单元测试,集成测试,系统测试

特点:

  1. 顺序性
  2. 风险驱动

 

优点:

  1. 降低风险,减少项目因风险造成的损失

缺点:

  1. 螺旋模型开发的成败,很大程度上依赖于风险评估的成败。需要开发人员具有相当丰富的风险评估和专门的知识

使用场景:高风险的大规模软件系统

 

5.喷泉模型

描述面向对象软件开发的模型,特点在于连续无间隙;软件生命周期中的各阶段之间并没有明确边界。[开发人员可以同时开发各个阶段的内容]

—演化—

—维护—

—确认—

—实现—

—设计—

—分析—

【在一个阶段内可以进行 反复的迭代,得到一个最好的结果】

适用于面向对象的软件开发过程

优点:

  1. 快速开发

缺点:

  1. 不适合进行项目管理

软件开发模型的选择:受软件开发规模,种类,开发方式,开发环境以及开发使用的方法等因素影响;软件开发模型直接影响软件开发的周期和软件质量。

分类: 软件工程

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注