前言:产品开发生命周期通常使用过程模型表示。过程模型习惯上也称为开发模型,它是系统开发的全部过程、活动和任务的框架和结构。


开发模型

  之前看了书上介绍一大堆关于各种模型的术语及优缺点,都感觉云里雾里,下面尝试用自己的语言来阐述下对以下软件模型的理解。

1. 瀑布模型 ——“需求明确,阶段开发,一步到位”

  假设现在有甲方找你开发一个软件,他把需求说的清清楚楚,明明白白,并且拍着胸脯告诉你,你只要负责把需求说明书上的每个功能完成好,他立马付钱成交,一步到位。
  然后你根据需求说明说进行设计、实现、测试、交付,一整套操作下来行云流水,又如那庐山的瀑布倾泻而下,故又称瀑布模型。

1.1 优点

  瀑布模型的优点是容易理解便于管理,因为我们只要按照过程一步步做下去就行。它被应用于早期软件工程工作中,适合小型软件系统和小功能的开发。

1.2 缺点

  • 瀑布模型建立在客户能够正确、清晰表达他们的需求的条件上,如果客户对需求什么没有清晰明确的认识,那就可能对最终结果不满意
  • 在刚刚开始时候,难评估项目真正的进度,因为按部就班的实现,不知道哪个功能或者哪个阶段会出现要攻克的难点,所以常常会导致项目的延期

2. 原型模型 —— “多次迭代演化”

  假设甲方又来找你开发软件,这次他自己都不知道自己要什么功能,他说这边有个框,这边要个叉,这里加个点,后面的想到再加。你…#%&***4$#
  于是你照着他说的开发了最初的最简单的软件,他一看,给你提出了意见…于是,你又回去改,他一看,又给你提出了意见…于是,你又又回去改,他一看,又又又给你提出了意见…最后,双方终于达成一致,交付了软件,这就是原型模型。

2.1 优点

  由于并非所有的需求都能预先定义,在开发过程中,面对客户需求不断变更时,需要快速构建原型,搜集客户反馈意见,进行迭代修改。因此,这种模型适合用户需求不明确或经常变更的情况。

2.2 缺点

  要经常修改整个框架系统,对于复杂而又庞大的系统来说是一件很难事情,所以原型模型也只适合规模不大也不太复杂的系统


3. 增量模型 —— “多版本并行”

   假设甲方找你开发软件,需求不明确,你做出一版改一版,又做一版又改一版…无止境。对于你来说,投入了大量人力物力,在软件真正交付前没有回报。对于甲方爸爸来说,如果急着用软件,时间也很长。那么一个比较折衷的办法是,将需求分解为一个个增量,后续可以添加。也就是先开发一个软件,交付给客户拿去用。针对这一版本搜集客户的反馈,再此基础上增加另一个增量,形成新版本,这就是增量模型。

3.1 优点

  增量模型由于将一系列需求变更为一个个增量,所以第一个可交付版本需要的成本和时间很少。并且开发由增量表示的小系统所承担的风险不大

3.2 缺点

  • 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量不稳定
  • 如果需求不想像早期思考的那么稳定,那么一些增量重新开发需要的管理成本和配置复杂性可能会超出组织的能力。

4. 喷泉模型 —— “面向对象”

  针对甲方爸爸一直变更的需求,你发现其实不同的甲方爸爸需要的基本需求都差不多,都要求有个框框有个叉叉有个++,所以你想了一个好办法,采用面向对象的方法,将这些东西都封装起来,既能下次回收利用,又能给二次开发降低难度(如果需求变更,只需修改相关对象即可),这就是喷泉模型。

4.1 优点

  面向对象的方法能够很好支持软件重用,并且开发过程无间隙性,分析、设计编码无明显边界,可交叉迭代进行。

4.2 缺点

  • 由于喷泉模型在各个阶段是重叠的,即每个对象都有分析、设计和编码阶段,所以需要大量开发人员
  • 并且大量开发人员之间的交流沟通要求严格管理文档,使审核难度加大

5. 螺旋模型 ——“风险分析”

  甲方爸爸又又又来找你,他需要一个定制软件系统,并且这个系统很大,需要很稳定,他要一直使用下去,并且告诉你钱不是问题。你一想,用喷泉模型开发不划算,毕竟这是定制化功能,既然甲方爸爸都说不差钱了,不如搞个瀑布模型+原型模型,根据需求不断迭代更新,期间再加入两种模型都忽略的风险分析,岂不是美滋滋,这就形成了螺旋模型。
  螺旋模型将开发过程都分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。

5.1 优点

  螺旋模型强调风险分析,对每个演化层出现的风险都所了解,继而做出应有反应。因此特别适合用于庞大、复杂并且具有高风险的系统。螺旋模型支持用户需求的动态变化有助于提高产品的适应能力。

5.2 缺点

  过多的迭代次数会增加开发成本延迟提交时间


例题

例1

常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。其中 (1) 模型适用于需求明确或很少变更的项目, (2) 模型主要用来描述面向对象的软件开发过程。
1、A.瀑布模型 B.演化模型 C.螺旋模型 D.喷泉模型
2、A.瀑布模型 B.演化模型 C.螺旋模型 D.喷泉模型
解析:需求明确或很少变更的项目用瀑布模型,面向对象的软件开发过程用喷泉模型,选A,D

嵌入式系统——软件开发模型相关推荐

  1. Windows CE嵌入式系统程序开发

    <Windows CE嵌入式系统程序开发> 基本信息 作者: 胡文    冯剑    姜海涛    胡玥    丛书名: 单片机与嵌入式丛书 出版社:机械工业出版社 ISBN:978711 ...

  2. 学嵌入式Linux软件开发需要的知识

    首先,我得声明嵌入式Linux的内核很重要,非常非常重要!但是这个东西如果你没有一定的基础,还是暂时不碰为好.因为想知道它的工作机理,你必须具备N多知识才可以的.弄明白内核(包括驱动和协议栈,以及内核 ...

  3. 嵌入式系统实验 构建嵌入式Linux系统,《嵌入式系统与开发》构建嵌入式Linux系统-实验报告.doc...

    <嵌入式系统与开发>构建嵌入式Linux系统-实验报告 <嵌入式数据库sqlite移植及使用> 实验报告 学生姓名: 陈 彤 学 号: 1座机电话号码 专业班级: 130044 ...

  4. 嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发和嵌入式底层软件开发...

    我们知道嵌入式操作系统(Embedded System)是指以应用为中心.以计算机技术为基础,软件硬件可裁剪.适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统.嵌入式开发分两种,一 ...

  5. 软件测试之软件开发模型

    一. 软件开发模型 1 为什么学习软件开发模型 了解开发能够更好的有针对性的做好测试. 2 什么是软件开发模型 软件开发生命周期模型是软件产品从最初构思到退役的过程. 3 常见的开发模型  大爆炸模 ...

  6. [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247483680&idx=1&sn=c5fd069ab3f ...

  7. 嵌入式系统的开发流程

    嵌入式系统的概念: 以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能.可靠性.成本.体积.功耗有严格要求的专用计算机系统. 嵌入式系统与普通PC机的对比: 软件上的对比: 名称 嵌 ...

  8. 【软考点点】软件开发模型

    软件开发模型是软考上午题中必考的一个知识点.给出一定的条件,让我们判断属于哪一种开发模型.     典型的软件过程模型有瀑布模型.增量模型.演化模型(原型模型.螺旋模型).喷泉模型.基于构件的开发模型 ...

  9. 瀑布模型(waterfall model)一种线性的软件开发模型,文档驱动

    瀑布模型( waterfall model ): 又被称为经典生命周期(classic life cycle ),它提出了一个系统的.顺序的 软件开发方法. 瀑布模型是出现得比较早的软件开发模型. 在 ...

最新文章

  1. php请求路由,PHP 新手入门指南 - 表单请求与路由
  2. Nginx 多进程模型是如何实现高并发的?
  3. 把佳佳的博客搬出去了
  4. Linux Socket学习--套接口的类型和协议
  5. React JS 组件间沟通的一些方法
  6. MySQL考试复习(知识点、练习题)
  7. 讨论下怎么能实现保证新闻时效性推荐算法机制
  8. 大数据可视化该如何实现
  9. Ubuntu 定时锁屏3.0
  10. 马化腾的格局:最后都是人品的竞争
  11. 教你如何更改U盘图标
  12. 10 款优秀的在线 JavaScript 工具推荐
  13. OJ刷题记录:将十进制数转换成八进制数 题目编号:545
  14. 俄罗斯品牌VOXTEL 520手机硬启动方法(恢复出厂)
  15. Ubuntu 16.04安装Synaptic Package Manager图形化APT管理工具
  16. 19英寸 6U 机架的U 等行业术语
  17. 在 windows 上如何根据 dll 动态库生成 lib 文件?
  18. 手把手教您快速搭建壁纸网站
  19. 第四章利用恶意软件网络识别攻击活动(下)
  20. cemu有linux版本吗,cemu更新版本下载-cemu升级版本v1.16.1 最新版 - 极光下载站

热门文章

  1. GPUImage滤镜效果
  2. springboot之mybatis分页查询
  3. 华为2288H V5服务器安装win_server_2016问题解决过程
  4. python继承中的参数_python 继承中的super
  5. cxf打印报文日志_使用线程池实现异步打日志和存库的任务调度
  6. 大一python考试知识点_Python基础知识点(精心整理)
  7. python 列表自动排序_Python学习小技巧之列表项排序的示例代码分享
  8. 通过内网穿透 将本地端口 使其外网可以进行访问 使用花生壳内网穿透 网站访问
  9. 3h精通OpenCV(六)-图像堆叠
  10. ngnix学习(二)ngnix常用命令