软件工程 – 开发模型

为了指导软件开发,可以用不同的方式将软件生命周期中的所有开发活动组织组织起来从而形成不同的开发模型。

瀑布模式

瀑布模型严格遵守软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成才能进入到下一阶段,整个模型像一个飞流直下的瀑布一下,如图所示

特点:

  • 阶段间具有顺序性和依赖性
  • 前一阶段完成后,才能开始后一阶段
  • 前一阶段的输出文本为后一阶段的输入文本
  • 推迟实现的观点
  • 质量保证:
  • 每个阶段必须交付出合格的文档
  • 对文档进行审核

缺点:

  • 开始需要把需求做到最全
  • 惧怕用户测试中的反馈,惧怕需求变更
  • 过于理想化缺乏灵活性

螺旋模型

限制条件:

  • 适应于内部的大规模软件开发:螺旋模型强调风险分析,许多客户都无法接受和相信这种分析因此
  • 适合于大规模软件项目(执行风险分析将大大影响项目的利润,进行风险分析就毫无意义)
  • 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

优点:

  • 设计上的灵活性,可以在项目的各个阶段进行变更.
  • 以小的分段来构建大型系统,使成本计算变得简单容易
  • 客户始终参为保证了项目不偏离正确方向以及项目的可控性
  • 客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互.
  • 客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品.

缺点:

  • 很难让用户确信这种演化方法的结果是可以控制的.建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求.

核心:

  • 在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚.在定义最重要的功能时,去实现它,然后听取客户的意见,之后再进入到下一个阶段.如此不断轮回重复,直到得到您满意的最终产品

每轮循环包含如下六个步骤:

  1. 确定目标,可选项,以及强制条件
  2. 识别并化解风险
  3. 评估可选项
  4. 开发并测试当前阶段
  5. 规划下一阶段
  6. 确定进入下一阶段的方法步骤.

模型:

快速原型模型

优缺点:

  • 优点:  克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。  
  • 缺点:  所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。

原型类型:

  • 探索型原型:  目的是要型清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,
  • 实验型原型:  主要用于设计阶段,考核;实现方案是否合适,能否实陋
  • 演化型原型:  主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统

原型的运用方式:

  • 抛弃策略是将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的。
  • 附加策略是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略

模型:

增量模型

构件思想:

  • 第一构件完成软件提供的基本最核心的功能
  • 后面的增构件是为了第一构件提供服务提供功能的
  • 而且避免吧难题退后,首先完成的应该是高风险和重要部分

困难:

  • 每个新的构件集成到现有的软件结构中必须破坏原来以开发的产品,所以必须定义很好的接口

优点:

  • 短时间内向用户提供可完成部分工作的产品
  • 逐步增加产品功能可以使用户有时间了解和适应新产品
  • 开放结构的软件拥有的维护性明显好于封闭结构的软件

缺陷:

  • 容易退化为边做边改模型,从而使软件过程的控制失去整体性
  • 如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析

模型:

喷泉模型

优点:

  • 喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动.该模型的各个阶段没有明显的界限,开发人员可以同步进行开发.其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程.

缺点:

  • 由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理.此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况.

模型:

演化模型

思想:

  • 演化模型主要针对事先不能完整定义需求的软件开发.用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现

开发顺序:

  • 根据用户的核心需求,设计,编码,测试,后提交用户
  • 精化:根据以能满足用户核心需求的核心系统上,增加用户反馈的其他全部功能

优点:

  • 任何功能一经开发就能进入测试以便验证是否符合产品需求
  • 开发中的经验教训能反馈应用于本产品的下一个循环过程,大大提高质量与效率
  • 大大有助于早期建立产品开发的配置管理

缺点:

  • 主要需求开始并不完全弄清楚的话,会给总体设计带来困难及削弱产品设计的完整性,并因而影响产品性能的优化及产品的可维护性
  • 缺乏严格过程管理的话,这生命周期模型很可能退化为“试-错-改”模式
  • 不加控制地让用户接触开发中尚未测试稳定的功能,可能对开发人员及用户都产生负面的影响

提供几个习题来测试

1、某公司计划开发一种产品,技术含量很高,与客户相关的风险也很多,则最适于采用( )开发过程模型。
A.瀑布
B.原型
C.增量
D.螺旋

2、某公司要开发一个软件产品,产品的某些需求是明确的,而某些需求则需要进一步细化。由于市场竞争的压力,产品需要尽快上市,则开发该软件产品最不适合采用( )模型。

A.瀑布
B.原型
C.增量
D.螺旋

3、( )开发过程模型最不适用开发初期对软件需求缺乏准确全面认识的情况。
A.瀑布
B.演化
C.螺旋
D.增量

习题答案

1.、D 所给出的这些模型中仅有螺旋模型考虑风险因素。
2、 A 瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
3、A 瀑布模型是一种经典的开发模型,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
瀑布模型的突出缺点是不适应用户需求的变化。

软件工程 -- 开发模型相关推荐

  1. 软件工程 – 开发模型

    软件工程 – 开发模型 为了指导软件开发,可以用不同的方式将软件生命周期中的所有开发活动组织组织起来从而形成不同的开发模型. 瀑布模式 瀑布模型严格遵守软件生命周期各阶段的固定顺序:计划.分析.设计. ...

  2. 软件工程开发模型以及在软件工程中的作用

    软件工程开发模型以及在软件工程中的作用: 传统模型: 瀑布模型(water fall model): 规定了各项软件工程活动,包括制定开发计划.需求分析说明.软件设计.程序编码.测试和运行维护,并且规 ...

  3. 104. 软件工程的开发过程几种模型(瀑布模型、快速原型开发模型、增量模型、迭代模型、螺旋模型)

    文章目录 1.前言 2.瀑布模型--按阶段严格完成 (1)瀑布模型把整个项目过程分成了六个主要阶段: (2)举个例子来理解瀑布模型 (3)优缺点 (4)解决的重要问题 3.快速原型模型--低成本快速的 ...

  4. 【软件工程】 软件工程及开发模型

    导图: [软件工程] 定义(IEEE):软件工程师开发.运行.维护和修复软件的系统方法. [软件工程过程] 软件工程过程: 软件规格说明 软件开发(设计) 软件确认(用户需求) 软件维护 软件工程过程 ...

  5. 软件设计师备考笔记(十)软件工程(开发模型、结构化设计、软件测试)

    目录 软件开发模型 信息系统开发方法 需求分类 结构化设计 软件测试 软件开发模型 瀑布模型 历史 盛极一时,但被淘汰:有重大缺陷,会导致项目失败(延期.超支.做不下去) 注意事项:每个阶段(绿框)末 ...

  6. 软件工程,开发模型,软件开发流程

    软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模 ...

  7. 【软考软件评测师】第十章节 软件工程之开发模型与方法

    [软考软件评测师]第十章节 软件工程之开发模型与方法 第十章节 软件工程之开发模型与方法 [软考软件评测师]第十章节 软件工程之开发模型与方法 第一部分 知识点集锦 1.瀑布模型 2.螺旋模型 3.增 ...

  8. 二、软件工程 / 生命周期 / 软件开发模型

    软件测试 软件危机和软件工程 软件生命周期 软件生命周期模型 1. 瀑布模型 2. 螺旋模型 3. 迭代模型 4. 敏捷开发(Scrum)模型 5. 增量模型 6. 快速原型模型 软件危机和软件工程 ...

  9. 105.敏捷开发模型

    文章目录 1.什么是敏捷开发? 2.敏捷开发宣言 3.站立会议的意义 4.敏捷开发想解决什么问题? 5.如果用敏捷的方式盖房子 6.敏捷开发和瀑布模型的差异 (1)敏捷开发是怎么做需求分析的? (2) ...

  10. 项目中的集中开发模型研究

    国内软件产业的发展在各种因素的影响之下,行业应用软件的产品化和通用化程度始终得不到根本性提高,使软件企业的运营成本居高不下,软件质量得不到有效保证,从而制约了企业的进一步发展,进而影响了整个产业的发展 ...

最新文章

  1. SAP MM MIGO 551 可以直接报废供应商寄售库存
  2. shell getopts
  3. 用WINRAR巧妙分割大压缩包
  4. 用matlab绘制升余弦函数
  5. 测试使用skywalking_skywalking初体验
  6. SAP ABAP Netweaver Authorization trace tool - SAP ABAP 权限跟踪监控工具
  7. linux网络编程之网络字节序、主机字节序、大端、小端
  8. 背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)
  9. vue 单文件组件中,输入template 按 tab 键不能自动补全标签的解决办法
  10. OpenHarmony3.0 编译烧录
  11. 中国象棋口诀及要领精髓
  12. mysql如何输出一句话_MySQL/ACCESS导出一句话拿WebShell后门命令
  13. linux ghost dd,在Linux上用dd命令实现ghost功能
  14. linux命令从哪里敲,Linux 笔记本基于“敲打”的命令
  15. 高校全场景智慧教室建设方案
  16. win10熄屏时间不对_win10设置了息屏时间但是很快就息屏
  17. 鸿蒙双系统怎么切换,苹果 Mac双系统如何切换?用Option键切换双系统的步骤分享...
  18. php 实现游戏开发
  19. 删除电脑中删不掉的文件或文件夹
  20. word/excel 里的表格如何到PS里使用

热门文章

  1. Oracle创建函数
  2. Drools 规则引擎一文读懂
  3. 超强扒站神器:SiteSucker Pro for Mac(4.1.3多语言)
  4. 傅里叶级数与傅里叶变换
  5. 科比职业生涯数据分析
  6. 西门子s300编程实例_数控车床加工编程典型实例分析(西门子802S数控系统编程教学)...
  7. DataSet用法操作xml
  8. 免匙SSH登录失败问题(非常规)
  9. 中国电信5G技术控制云
  10. UG NX二次开发(C++)-环境设置-内部模式(插件)制作设置