首页 > 瀑布模型

瀑布模型

瀑布模型(Waterfall Model)

  1970年Winston Royce提出了著名的"瀑布模型",直到80年代早期,它一直是唯一被广泛采用的软件开发模型。 瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。   在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。   瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:   (1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;   (2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;   (3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。   我们应该认识到,"线性"是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的"非线性"问题时,总是千方百计地将其分解或转化为一系列简 单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简 洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如增量模型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。

瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。然而软件开发的实践表明,上述各项活动之间并非完全是自上而下且呈线性图式的,因此瀑布模型存在严重的缺陷。
① 由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样软件与用户见面的时间间隔较长,也增加了一定的风险。
② 在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进而可能会造成整个软件项目开发失败。
③ 在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的。
当开发的软件是已知领域和行业,并且有比较好的积累,有可重用的架构或者模型。或者软件对安全和性能有极其严格的要求,容不得半点疏漏,比如航空航天软件。这样用瀑布模型的话能够有效地控制每一环节,所有流程都有文档可循。

而规模不是很大的,商业型的应用软件,更倾向于快速得到可用的软件。而且软件需要能够适应市场的变化作出相应的调整。原型模型无疑是更适合的。

转载于:https://www.cnblogs.com/nygfcn1234/p/3240494.html

更多相关:

  • 一.xgboost前奏1,介绍一下啥是xgboostXGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法。它由陈天奇所设计,致力于让提升树突破自身的计算极限,以实现运算快速,性能优秀的工程目标。2,XGBoost的三大构件XGBoost本身的核心是基于梯度提升树实现的集成算法,整体来说可以有三...

  • ​这是3D 点云的深度学习框架,提供常见的点云分析方法的一种通用深度学习模型。它主要依赖Pytorch Geometric和Facebook Hydra。该框架能够以最小的代价和极大的可重复性来构建精简而复杂的模型。目标是建立一个工具,用于对SOTA模型进行基准测试,同时允许研究者们有效地研究点云分析,最终目标是建立可应用于实际应用的...

  • 【从零开始的ROS四轴机械臂控制(三)】五、在gazebo中添加摄像头1.修改arm1.gazebo.xacro文件2.修改arm1.urdf.xacro文件3.查看摄像头图像六、为模型添加夹爪(Gripper)1.通过solidworks建立模型2.将夹爪添加进gazebo(1)模型导入(2)更改urdf文件夹3.gazebo模型抖...

  • 使用Keras训练自动驾驶(使用Udacity自动驾驶模拟器) 1.完成项目所需要的资源 (1)模拟器下载 • Linux • macOS • Windows (2)Unity 下载 运行Udacity模拟器需要Unity,这是下载链接。 https://unity.cn/releases (3)Behavioral Cl...

  • maxtree–工厂模型第74卷 大小解压后:2.34G 信息: 植物模型第74卷是高质量的三维植物模型的集合。包括12个物种,共72个单一模式。 获取地址:三维植物树木模型 Maxtree – Plant Models Vol 74-云桥网 种类 三角枫 槭树 复叶槭 鸡爪槭 白桦 Chitalpa tashkente...

  • 它的主要特点有: • 使用了kuwo.cn(酷我音乐盒)的网络资源, 内容非常丰富. • 可以播放/下载mp3或者ape格式的歌曲, 也可以直接播放MV(有mp4和mkv两种格式), 并且播放时文件会自动缓存到本地, 不需要再次下载, MV也会缓存到硬盘的, 很方便. • 可以收听电台. • 可以显示歌词. • 酷我音乐盒拥有的其...

  •   经过几天的阅读,终于将这本书看完了,读完了整个故事,我进行了简单的总结,感觉不仅仅是在写代码与计算机或软件交流,更多的是做事行为。   首先是做事得有目标。无论做什么事情都要有目标和动力,这样做起事来无论是在质量还是时间上才会有跟假的效果,就像我们做软件一样,我们的目标是什么,要做一个什么样的软件,要有怎样的预期效果,需要多少时间...

  • 任何软件系统开发的共同本质: – 从现实空间的需求到计算机空间的软件代码之间的映射与转换; 软件工程本质: 用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量”。  软件工程的两个映射: 概念映射:问题空间的概念与解空间的模型化概念之间的映射 业务逻辑映射:问题空间的处理逻辑与解空间处理逻辑之间的映射 软件工程的作用: 为...

  •   类把属性和方法作了封装!   总结: 面向过程程序设计:数据结构 + 算法 主要解决科学计算问题,用户需求简单而固定 特点: 分析解决问题所需要的步骤 利用函数实现各个步骤 依次调用函数解决问题 问题: 软件可重用性差 软件可维护性差 构建的软件无法满足用户需求 面向对象程序设计:由现实世界建立软件模型 将现实世界中的事物直接...

  • 计算机科学和软件工程同属计算机类专业,他们的联系确实非常紧密,但还是有很多区别的。 计算机科学:   偏重于硬件与计算机理论方面的学习研究,像计算机原理,计算机系统结构等方面的内容。当然也会涉及软件方面,但不是太深。而软件工程则主要偏重于应用与实践,主要是培养适应国内外软件产业市场需求的高素质、多层次、实用型软件人才,这也是教育部专...