软件工程学习笔记 Day2 —— 软件过程模型

1. 什么是软件过程模型

软件过程模型也称为软件开发模型,是软件开发全部过程、活动和任务的结构化框架。

2. 典型的软件过程模型

2.1 瀑布模型

瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是:
1. 接收上一阶段活动的结果作为本阶段活动的输入。
2. 依据上一阶段活动的结果实施本阶段应完成的活动。
3. 对本阶段的活动进行评审。
4. 将本阶段活动的结果作为输出,传递给下一阶段。

瀑布模型

不足:
1. 客户常常难以清晰地描述所有的需求,而且在开发过程中,用户的需求也常常会有所变化,使得不少软件的需求存在着不确定性
2. 在某个活动中发现的错误常常是由前一阶段活动的错误引起的,为了改正这一错误必须回到前一阶段,这就导致了瀑布的倒流,因此,实际的软件开发很少能按瀑布模型的顺序没有回流地顺流而下。
3. 瀑布模型使得用户在测试完成以后才能看到真正可运行的软件,如果此时发现不满足客户需求的问题,那么修改软件的任务是巨大的。
4. 假设一个需求中的错误,在需求活动时改正这一错误的代价是1美元,那么,如果这一错误指导交付客户时才发现,此时改正这一错误的代价可能高达1000美元。

2.2 演化模型

从构造初始的原型(软件的一个初始可运行版本)出发,逐步将其演化成最终软件产品的过程。演化模型特别适用于对软件需求缺乏准确认识的情况。
2.2.1 增量模型

概念: 将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。

优点:
1. 融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征,每一次增量都发布一个可运行的产品
2. 适用于需求经常发生变化的软件开发。
3. 在市场急需而开发人员和资金都不能在设定的市场期限之前实现一个完善的产品时,也适宜用适量模型进行开发。
4. 有计划地管理技术风险。早期的增量版本中可避免使用尚未成熟的技术,以减少风险,等技术相对成熟后,在后续的版本中再使用。

增量模型

2.2.2 原型模型

概念: 原型(prototype)是预期系统的一个可执行版本,反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型

原型模型的过程:
1. 从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。
2. 然后快速指定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。
3. 被开发的原型应交付给客户试用,并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型模型进行改进。
4. 在前一个原型模型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。

原型模型

2.2.3 螺旋模型

概念: 螺旋模型将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,增加了风险分析
螺旋模型沿着螺线自内向外旋转,在4个象限上分别表示4个方面的任务。
螺旋模型

  1. 制定计划
    -确定软件目标,选定实施方案,弄清软件开发的限制条件。
  2. 风险分析
    -评价所选的方案,识别风险,消除风险。
  3. 工程实施
    -实施软件开发,验证工作产品。
  4. 客户评估
    -评价开发工作,提出修正建议。

软件项目沿着螺旋线自内向外旋转,每旋转一圈,表示开发出一个更为完善的新软件版本。如果发现风险太大,开发者和客户无法承受,则项目就可能因此而终止。多数情况下沿着螺旋线的活动会继续下去,自内向外,逐步延伸,最终得到所期望的系统。

2.3 喷泉模型

特征:支持面向对象开发的过程模型。
基本成分:类及对象是面向对象方法中的基本成分。

喷泉模型

  1. 分析阶段:
    -标识类及对象,定义类之间的关系,建立对象-行为模型。

  2. 设计阶段:
    -从实现的角度对分析模型进行调整和扩充。

  3. 编码阶段:
    -用面向对象语言实现类及对象,通过消息机制实现对象之间的通信,完成软件的功能。

     “喷泉”一词体现了面向对象方法的迭代和无间隙特性。
     迭代是指开发活动需要多次重复。
     无间隙是指开发活动之间不存在明显的边界。
    

2.4 基于构件的开发模型

概念: 基于构件的开发是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化的、现存的(COTS)软件构件。
一种基于构件的开发模型

  1. 领域构建的目的是构建领域模型、领域基准体系结构和可复用构件库。

  2. 应用系统工程的目的是使用可复用构件组装应用系统。

     优点:基于构件模型对提高软件生产率、提高软件质量、降低成本、提早上市时间起到很大的作用。
    

2.5 形式化方法模型

概念: 形式化方法是建立在严格数学基础上的一种软件开发方法。

  1. 软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成,直至维护等各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。
  2. 通过数学的演算,使得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码的转换称为可能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值