用软件过程——瀑布模型

news/2024/11/9 17:58:07

http://www.caixiaodong.com/archives/76.html

2009年10月11日 蔡晓东

瀑布模型在中国的普及度非常之高。这得归功于我们的大学教育,学生们还没有理解软件为什么复杂,却已经知道软件的问题必须用“软件工程”来解决,其 中最基础的就是瀑布模型。日复一日,年复一年,等到学生们就业了,成长为项目经理,制定项目计划,瀑布模型自然是首选。然而,事情并没有那么顺利……

一、使用瀑布模型的常见问题

对瀑布模型的抱怨是非常普遍的。需求的频繁变更,使得先进行需求分析,需求评审后再进行后续设计、编码的工作流程很难执行。另外,项目组成员一般相 对固定,很难按瀑布模型要求的时间点进入和退出。瀑布模型输出了大量文档,经常被发现大而无用,真正到了项目中期,多数项目成员根本不记得文档放在哪里, 更谈不上维护文档的准确性。

一些人转而批评瀑布模型,认为其它生命周期模型才是可行的,尤其是“敏捷”。但是,“敏捷”方法就没有问题了吗?让我们回到瀑布之前,领略瀑布模型的思想。

二、从边做边改模型(Build and Fix Model)到瀑布模型

尽管Project格式的项目计划普遍是按照瀑布模型编制的,但实践中,由于瀑布模型的种种问题,项目经理常常将Project抛在一边,一边开发 新代码,一边根据用户需求的变更修改代码。由于用户需求的频繁变更,预计需要3个月完成的项目,到期后发现还需要3个月才能完工。而当6个月过去,似乎还 有很多需求尚未实现,软件结构混乱,似乎应该重写一遍。

边做边改模型,是在软件工程概念提出之前的普遍情况。但是,软件工程提出40年后,软件作坊依然普遍存在。“边做边改”模型主要存在以下问题:

  1. 项目范围不确定。软件产品定义或客户需求变更随意频繁,导致大量无效工作量。
  2. 软件缺乏结构,由于是“边做边改”,缺乏系统架构,后期维护困难。
  3. 项目无法计划,也无法跟踪执行。
  4. 人员工作效率低下,团队士气不振。

瀑布模型,在一定程度上解决了上述问题:

  1. 通过需求分析确定项目范围,并输出需求说明文档,与客户确认。
  2. 通过概要设计详细设计,提供系统结构,限定后续软件修改在一定范围内进行。软件始终是可维护的。
  3. 将整体项目目标分解为一系列阶段,进而分解为各个人员的任务目标,使根据任务目标编排计划及跟踪管理成为可能。
  4. 每个人员工作任务明确,工作效率和质量可以评估。

三、如何避免瀑布模型的工期风险

如前所述,瀑布模型是将软件开发的基本活动依次串行执行,即需求分析完成后,再进行概要设计、详细设计,然后进行编码、测试。经常发生的情况是,当 进入编码阶段后,发现前期工作的问题,特别是概要设计、详细设计文档考虑不全面,到编码阶段还有很多工作要做。“串行”执行的特点,要求每一个阶段的工作 成果(文档)输出必须正确,不能有返工。因此,需要在二方面加强:

  1. 通过评审确保阶段工作成果的正确性和完整性。从而确保一个阶段的问题不会被带入下一阶段。
  2. 在进行“需求分析”、“概要设计”等活动时,不能仅作为1个任务派给1个人员,然后到阶段末期进行评审。应当设置中间检查点,并尽可能让更多人参与工作。这样,在工期刚刚开始偏离的时候就发现并采取措施。

四、小结

瀑布模型的提出,是一个历史性的突破,使软件开发从完全无序的状态中摆脱出来。瀑布模型将一个软件开发的整体目标,分解为各个可执行的任务,并由具备一定技能的人员执行。人们对瀑布模型的指责,更多是因为对瀑布模型的误用而引起的,而不全是模型本身的问题。

瀑布模型的定义,请参阅百度百科。瀑布模型应是一种软件生命周期模型,与软件过程概念稍有差异;应用瀑布模型为基础,定义的软件过程,才适合与RUP、敏捷方法等比较。本文非学术专著,故不加区别将瀑布模型作为软件过程表述。


http://www.niftyadmin.cn/n/1733107.html

相关文章

VUE学习,vue运行环境搭建遇见的小问题

1.使用vscode来编辑项目,那么首先给它搭一个vue运行的环境,打开集成终端,使用npm install live-server -g安装live-server. problem1:cmd终端分行问题。解决方法:打开cmd.exe,右击其最右上角,选择属性&…

软件开发主要活动——需求分析

http://www.caixiaodong.com/archives/56.html需求分析活动解决软件开发“做什么”的问题。客户对于需求的认知并不清晰,且经常同时包含了几个层次的需求概念,提交给软件项目组,要求按需求实现。需求分析活动的目标,是为后续各活动…

Adafruit GFX字体制作

Adafruit GFX字体制作 陈拓 2021/07/08-2021/07/08 1. 概述 在《Adafruit GFX Library字体规范》 https://zhuanlan.zhihu.com/p/385486474 https://blog.csdn.net/chentuo2000/article/details/118369058 一文中我们详细说明了Adafruit GFX字体的规范,本文介绍…

通栏导航栏的制作,综合使用CSS属性,代码不超过30行

这篇文章,小编带领大家一同做一个利用CSS技术实现的导航栏。通过这个导航栏的制作,希望大家能够对前几篇文章中学习到的CSS属性能有一个整体的认识,并能够达到灵活运用的程度。 承接文章:灵活控制块级元素在一行内显示&#xff0c…

常用软件过程——RUP

RUP是用例驱动,以架构为中心,迭代式开发过程。 一、用例驱动 用例(Use Case)是一种通过用户的使用场景获得需求的技术。区别于传统的功能分解获取需求的办法,用例方法强调用户是如何使用系统的,即描述用户与…

在OLED上用大于126的ASCII码显示定制符号

在OLED上用大于126的ASCII码显示定制符号 陈拓 2021/07/09-2021/07/09 1. 概述 在做嵌入式开发时我们经常会遇到显示非ASCII码符号的问题,比如摄氏温度符号或者一个充电的电池图标。而通常的字体库只能显示标准ASCII字符集的32-126个可打印字符。 在本文中我们将…

Web设计新手应知道的10个锦囊妙计

摘要:你在网页设计所学到的大多数教训都来自工作经验。学习是一个反复持续的过程,并且没有比犯错更好的方式来获得知识。在本文中,我们将讨论10个重要并常规的技巧,这是每位Web设计师新手都应该知道。 在做网站时会遇到很多的问题…

Win10的Linux子系统Ubuntu安装图形界面

Win10的Linux子系统Ubuntu安装图形界面 陈拓 2021/07/25-2021/07/26 1. 概述 Win10的linux子系统Windows Subsystem for Linux(简称 WSL)之Ubuntu安装见文章: 《Win10启用Linux子系统安装Ubuntu》 https://zhuanlan.zhihu.com/p/34139446…