软件工程 -- 开发模型

软件工程 -- 开发模型

目录

瀑布模式
螺旋模型
快速原型模式
增量模式
喷泉模型
演化模型


瀑布模式

特点:

  • 阶段间具有顺序性和依赖性:

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

缺点:

  • 开始需要把需求做到最全
  • 惧怕用户测试中的反馈,惧怕需求变更
  • mux


螺旋模型

限制条件:

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

优点:

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

缺点:

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

核心:

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

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

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

模型:


快速原型模型

优缺点:

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

原型类型:

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

原型的运用方式:

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

模型:


增量模型

构件思想:

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

困难:

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

优点:

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

缺陷

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

模型:


喷泉模型

优点:

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

缺点:

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

模型:


演化模型

思想:

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

开发顺序:

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

优点:

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

缺点:

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

软件工程 -- 开发模型的相关文章

软件工程导论第一周作业(你认为一些军事方面的软件系统采用什么样的开发模型比较合适?)

4.你认为一些军事方面的软件系统采用什么样的开发模型比较合适? 我认为军事方面的软件系统采用瀑布型的开发模式比较合适,原因如下: 首先,我觉得军事方面的开发是一项要求严格,不允许有严重差错甚至细微差错也最好不要出现的项目,因为军事是和国家的安全与政治息息相关的,正因为如此,军事方面的开发要求参与人员在设计时候更严谨,在项目从开始到结束都不能出现多次更改,反复修正的情况,应当一个阶段一个阶段的经过深思熟虑后再进行,并且要求最终生产出来的产品是优质的,而瀑布模型的显著特征就是阶段间具有顺序性和依赖性

对公司开发模型的思考

0x00 前言 工作了三年多,经历了公司的开发模型从摸着石头过河到现在走入弯路的转变,写篇文章总结一下这些思路,其中不少值得我们警惕. 0x01 成立之初的开发模型 - 没有模型 团队组成:一个项目经理和三个开发人员,项目经理有时写要代码. 团队协作方式:此阶段我们每个人都是全栈的,除了项目管理的工作由经理安排外,剩下所有事情(从PS到需求讨论.设计再到开发测试和最后结果)都是我们4个人一起完成. 分析 说明:我用"各阶段对需求的理解程度与最初的期望值的符合度"来衡量一下我们团队的工作

传统开发模型vs敏捷开发模型——过程模型的变革

一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系中的位置. 为什么需要软件工程?很简单,为了让我们更好地生产软件.这里的"好"包含多重含义,有成本上的"好".维护上的"好"等等.但是我们知道,不可能坐着想"我要写好软件",然后就软件就能写好了.我们需要一套系统化.理论化.工程化

三.软件质量特性与开发模型

1.质量特性 1.1 静态质量特性 静态质量特性包括结构化的.可维护的.可测试的代码以及正确而又完整的文档. 1.2  动态质量特性 软件动态质量特性包括正确性.可靠性.完整性.一致性.易用性.性能等. 1.2.1 动态质量特性-正确性 软件正确性:如果软件针对其输入域中的每个元素都能得到预期的结果,则称软件是正确的. 输入域:对软件的所有可能输入的集合 1.2.2 动态质量特性 - 可靠性 软件可靠性是指软件在给定时间间隔和给定条件下无故障运行的概率 1.2.3易用性:是指软件使用的难易程度

软件设计师10-系统开发模型

开发模型 开发模型是软件工程中指导开发的开发思想.开发体系. 经典模型-瀑布模型 最初始的模型,上个世纪七十年代提出,盛极一时,全球百分之九十的项目都用瀑布模型. 软件计划.需求分析.软件设计.程序编码.软件测试.运行维护.每个阶段都会有输出产物,是一个很经典的模式.但是每个阶段都依赖于上一阶段,不能应对客户需求变更. 瀑布模型总结:只能适应于需求明确的项目,需求不明确的项目千万不能用瀑布模型. 其他经典模型 原型模型 定位于需求不明确的项目.在项目初期会构造一个简易系统(可以是界面无后台功能,

几大开发模型区别与联系

开发模型分别有瀑布模型,快速原型模型,增量模型,螺旋模型.  瀑布模型,是一种分工很细,力求每个环节都做到最好,前一个环节没做完不进入下一阶段的一种开发模型.就好比建房子,从设计图开始,确定后打地基,砌外墙,然后是里面每个小房间的建设.可是,瀑布模型有一个不好的地方,就是一旦前面的环节出错了,后面环节发现后得从该环节修改开始.这就增大了每个环节的严谨性.就好像设计图错了,建到一半的大楼就得停工或者是重做.  快速原型模型,是一种用建立原型的方法来明确软件需求的开发模型.在一些设计上,可能客户也不

个开发模型的比较

各种模型的比较 每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点. 模型 优点 缺点 瀑布模型 文档驱动 系统可能不满足客户的需求 快速原型模型 关注满足客户需求 可能导致系统设计差.效率低,难于维护 增量模型 开发早期反馈及时,易于维护 需要开放式体系结构,可能会设计差.效率低 螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练

软件生命周期以及开发模型

一.软件生命周期: 可行性研究,需求分析(这两步是软件定义) 概要设计.详细设计.实现.集成测试.确认测试:属于软件开发 使用与维护.退役:维护. 二.软件开发模型: 1.以软件需求可完全确定为前提的瀑布模型 2.在软件开发初期只能提供基本需求所采用的渐进式开发模型如:原型模型.螺旋模型. 3.以形式化开发方法为基础的变换模型. 三.瀑布模型 1.主要思想:a.软件开发过程与软件生命周期一致 b.相邻二阶段之间存在因果关系 c.需对阶段性产品进行评审. 2.不足:a.缺乏灵活性 b.到最后阶段才

几种网站开发模型- Model1、Model2、三层

以目前自己的理解,所接触到的面向对象思想中最重要的是"抽象",软件设计目标中最重要的是"可以应对需求的变化(增加或更改)". 思考一下,无论是"分层"思想,还是"设计模式"思想,还是"泛型"思想等,应该可以说最终的目的都是为了"可以应对需求的变化",且都充盈着"抽象". 分层是为了使得"大变小.繁变易",而针对不同的现实情况,它可以演化出千变万化的