软件工程 -- 开发模型

软件工程 -- 开发模型

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

瀑布模式

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


瀑布模式

特点:

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

缺点:

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

螺旋模型

限制条件:

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

优点:

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

缺点:

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

核心:

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

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

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

模型:

螺旋模型

快速原型模型

优缺点:

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

原型类型:

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

原型的运用方式:

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

增量模型

构件思想:

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

困难:

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

优点:

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

缺陷:

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

喷泉模型

优点:

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

缺点:

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

模型:

[图片上传失败...(image-dfa076-1546855284486)]

演化模型

思想:

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

开发顺序:

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

优点:

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

缺点:

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

提供几个习题来测试

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

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

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

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

习题答案

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容