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

传统模型:

瀑布模型(water fall model):

规定了各项软件工程活动,包括制定开发计划、需求分析说明、软件设计、程序编码、测试和运行维护,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级落下。它具有以下特征:

1.   从上一项活动接受本项活动的工作对象作为输入

2.   利用这一输入实施本项活动应完成的工作

3.   给出本项活动的工作结果,作为输出传递给下一项活动

4.   对本项活动实施的工作进行评审,若工作得到确认则继续进行下一项活动,否则返回前一项活动,甚至更前项工作进行返工

快速原型模型(rapid prototype model)

瀑布模型的却显示软件开发阶段的推进是线性的,只有当分析员做出准确的需求分析时,才能得到预期的正确结果。为了克服这个缺点提出了快速原型模型,它的思想是:软件开发人员根据用户提出的软件基本需求快速开发一个原型,以便想客户展示软件系统应有的部分或全部的功能和性能,在征求用户对原型的评价意见后,进一步使需求精确化、完全化,并据此改进完善原型,如此迭代,知道软件开发人员和用户都确认软件系统的需求并达成一致的理解为止。原型主要是为了完成需求分析阶段的任务而构建的,需求确定后就可以进行设计、编码、测试等以后的各个开发步骤了。

螺旋模型(spiral model)

螺旋模型将瀑布模型和原型模型结合起来,不仅体现了两个模型的有点,而且还增加了两个模型都忽略了的风险分析,弥补了两者的不足。沿螺旋线向外每旋出一圈便开发一个更为晚上的新的软件版本,并且进行风险评估。

增量模型(incremental model)

规定软件的开发过程是依次开发产品的一个部分,首先应该开发产品的基本部分,然后逐步开发产品的附加部分。为了是所开发的产品的各个部分最后能有机地组合起来,首先应该有一个同一的体系结构设计。增量模型是在么个阶段都交付一个可操作的产品,但是它仅仅满足客户需求的一个自己。完整的产品划分成一个个构建,产品是以一次一个构件的方式开发的。在每个阶段之后,客户都能得到一个产品,从第一个构件交付开始,客户就能做有用的工作。一个难点就是,后来开发的构件必须能够继承到先前已经开发的产品中而不毁坏已开发的功能。

喷泉模型:

这个是近几年提出来的软件生存后期模型,它是以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型。它的特点如下:

1.   整个开发过程包括:需求分析、设计、实现、测试和维护五个阶段,因此使软件的可维护性较好;

2.   各个阶段相互重叠,表明了面向对象开发方法各个阶段间的交叉和无缝过渡;

3.   整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代;

4.   模型具有增量开发特性,既能做到边分析,边设计;边实现,边测试,使相关功能随之加入到演化的系统中;

5.   模型是对象驱动的,对象是各阶段活动的主题,也是项目管理的基本内容;

6.   该模型自然地支持软件部件的重用。

形式化方法模型:

形式化方法模型包含了一组活动,它们带来了计算机软件用数学描述的方法,形式化方法使得软件开发人员能够通过采用一个严格的、数学的并表示体系来说明、开发和验证基于计算机的系统。用于形式化开发的模型有两种:变换模型和软件过程模型。

最新模型:

RAD(rap application development)又称v模型(v model):

http://blog.sina.com.cn/s/blog_5544469d010007do.html

是软件开发过程中一个重要模型,成为快速应用开发模型,其模型结构图形类似于字母V,素以又称v模型。它通过开发和测试同时进行的方式来缩短开发周期,提高开发效率,可以说v模型是软件开发测试中最重要的一种模型。主要包括用户需求---需求分析---概要设计---详细设计----系统编码----单元测试---集成测试---系统测试---验收测试;在系统设计和实现的各个环节都有相应的测试与之相对应。这样来说,就是当一个软件在开发的时候,研发人员和测试人员就会同时工作,这样软件开发的周期就会缩短,而因为测试在软件做需求分析的同时就会有测试用例的跟踪,这样就可以尽快找出程序错误从而更高效地提高程序质量,最大可能地减少成本。

 

RUP(Rational Unified Process)统一开发过程:

RUP包括初始阶段、细化阶段、构造阶段和交付阶段。每个阶段都由一个或多个连续的迭代组成,每个迭代都是一个完整的开发过程,是一个具体的迭代工作流从头到尾的执行,每个阶段结束于一个主要的里程碑,每个阶段本质上是两个里程碑之间的时间跨度,在每个阶段的结尾执行一次评估以去顶这个阶段的目标是否已经满足,如果评估结果令人满意则允许项目进入下一个阶段。迭代开发模型(iterationmodel)贯穿于RUP的每一个阶段。

Agile(敏捷开发):

http://exploitsun.blog.sohu.com/64188294.html

是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备继承和可运行的特征。简言之就是把一个大项目分为多个相互联系但也可以杜有利运行的小项目,并分别完成,在此过程中软件一直处于可使用的状态。一般的特点是:个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;客户合作胜过合同谈判;相应变化胜过遵循计划。敏捷开发的原则就是“刚刚好”。XP(极限编程)就是敏捷开发的一种模式。

各种开发模型在软件工程中的位置:

http://www.ltesting.net/ceshi/ruanjianzhiliangbaozheng/zlmx/mjkf/2008/0707/155935.html

所谓软件工程就是将软件开发、部署和维护的过程工程化,其目标就是保证进度、降低成本、提高质量。由于软件的开发、部署和维护是一项高度智力密集型的工作,保证进度、降低成本、提高质量的工作最终还是要落实到参与的个人。而对于个人而言,影响效率和质量的就是:方法、流程、工具和热情。

如果把加入Rational当成入行软件工程的开始的话,那么在我入行的十年中,可以看到软件工程的热点在上述几个要素之间反复切换:

方法:98年-02年,面向对象方法风行

流程:02年-06年,RUP/CMM(I)大行其道

热情:06年-08年,敏捷气候小成

如前一篇博文所述,敏捷的贡献主要在于社会工程,它第一次将注意力聚焦到人的工作热情上。然而,在热点切换的过程中,有几个现象值得注意:

1.   对新热点,期望太高、失望太快:人们往往将新的热点当成银弹,希望能够立竿见影;稍有挫折,就另寻热点了。其实时至今日,有多少项目真正能把面向对象建模作的很好呢?

2.   对原有热点的成果,付之一炬:新热点的引入往往会分散对旧有热点的痴迷,这有它积极的意义,但要避免矫枉过正,全盘否定旧有热点的积极成果;

Ivar最近在谈“Be Smart”,其实我觉得这里Smart应该被翻译成“明智”,其核心就是在针对各要素的改进当中达成一个平衡。其实这暗合了中国的中庸之道:「不偏之谓中;不易之谓庸。」中者,天下之正道。庸者,天下之定理。

软件工程开发模型以及在软件工程中的作用相关推荐

  1. 软件工程 – 开发模型

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

  2. 模型在物理学发展中的作用

    已剪辑自: https://mp.weixin.qq.com/s/txS_CQAIXPtY6kb2tHukUQ 模型是物理学认识由唯象理论过渡到动力学理论重要的环节.开普勒的行星运行模型.气体的分子运 ...

  3. The Historical Accident of Waterfall Validity--瀑布开发模型在历史事件中的印证

    早期的20世纪60年代,瀑布模型响应专案代码和修复响应.温斯顿建议30个月的项目会有10个月的被扔掉的"试点模型",并证明它的必要性通过它的新颖元素和必要元素. H. L. Men ...

  4. 开发模型的理解:瀑布模型/增量式/迭代/敏捷开发——笔记

    首先,不管采用何种开发模型.软件开发都至少具有以下的周期,包括: 需求获取/分析(系统分析.软件分析) 设计 实现 测试 发布(运行) 维护 正在上传-重新上传取消 既然所有的开发模型都具有相同的开发 ...

  5. 软件生命周期模型(瀑布型、V模型、W模型、敏捷开发模型)

    软件生命周期 软件生存周期的各项活动:需求分析.概要设计.详细设计.coding.测试.交付.验收.维护 软件开发模型 瀑布模型 定义:瀑布模型(Waterfall Model)是将软件生存周期的各项 ...

  6. 软件开发常见模型(瀑布模型、V模型、W模型、敏捷开发模型)

    软件开发经典流程图 一.瀑布模型 模型图 定义:瀑布模型(Waterfall Model)是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品. 地位:这是一 ...

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

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

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

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

  9. 【软件工程】几种常见的软件开发模型:(瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型)模型的概念特点优点缺点和不同。

    (瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型)各种模型的概念特点优点缺点和不同. (张海藩,吕云翔)著-软件工程 复习记录 文章目录 一.瀑布模型 二.快速原型模型 三.增量模型 四.螺旋模 ...

最新文章

  1. 极致进化-敏捷进化型企业的未来畅想
  2. shop--10.店铺详情(后台+前端类似于shoplist)
  3. LiveVideoStack线上分享第四季(十二):实时音视频抗丢包的实践
  4. Hello Blazor:(1)像ASP.NET WebForm一样写代码
  5. 《参考消息》出现大标题错别字硬伤
  6. 过滤access日志前5条数据
  7. 个人名义申请的支付接口。支付聚合网站汇总
  8. 【Shell】数值比较参数
  9. Oracle Study之-- enq:SQ contention等待事件
  10. Qt Design Studio组态软件简介及源码下载
  11. 前端人员必看css命名,前端css命名规范
  12. 寻找隐藏在CloudFlare和Tor后的真实IP
  13. 一键获取喜马拉雅音频文件(Python3爬虫)
  14. 局域网即时通讯软件应该怎么选择
  15. 【PS填充背景色和前景色】
  16. 华为手机照片如何出现时间地点天气,教你30秒,一学就会
  17. netgear 网件R6250路由 从OpenWrt或者DD-WRT系统恢复到默认系统 适合小白
  18. Mathtype 6.9 公式编辑时出现一些符号显示为方框
  19. 2.雅思口语--表达正面评价的词汇
  20. 软件工程第二次二人协作项目 3D俄罗斯方块

热门文章

  1. 服务器虚拟内存设置一下,服务器虚拟内存设置一下
  2. 网络与社会——我的观点(探讨)
  3. VC++:鼠标的使用
  4. D3D游戏降帧的动态创建D3D设备以及ShellCode HOOK玩法
  5. 【券商报告】大消费行业:海南新增_6家免税店,全球乳制品交易价格指数大涨——附下载链接
  6. 双击背面截图_苹果怎么设置背面双击截屏
  7. 计算机系军训口号四句霸气,军训口号四句霸气
  8. Mangos T1-T6大全
  9. wow服务器合并信息,魔兽世界WOW:跨服战场!合并服务器!
  10. python函数如何实现可变参数_python之函数定义可变参数(任意数量参数)