瀑布开发

提到“瀑布开发”的时候,大部分人们可能会联想到尼亚加拉瀑布下要进行房地产开发,然后,设想一下,当您告诉他们实际上瀑布开发是一种包含多个阶段的反复叠代的软件开发模型时,他们会多么惊讶。这篇文章将为您提供一份关于瀑布模型的简要介绍,解释它是什么,应当怎样工作以及可能导致项目失败的原因。


    概述


    瀑布模型其实并不新,它在1970年前后就已经出现了,但是大部分开发者对瀑布模型只有一个模糊的概念。从本质来讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是瀑布开发名称的由来。


    这一模型存在很多变体,每种只是在阶段名称上略有区别,但是,总体来讲,瀑布开发模型可以分为六个不同的阶段,其定义如下:


    1.需求分析:虽然是第一步,但是这一步至关重要,因为它包含了获取客户需求与定义的信息,以及对需要解决的问题所能达到的最清晰的描述。分析包含了理解客户的商业环境与约束,产品必需实现的功能,产品必需达到的性能水平,以及必需实现兼容的外部系统。


    在这一阶段所使用的技术包括采访客户、使用案例和软件特色的“购物清单”。分析阶段的结果通常是一份正式的需求说明书,这也是下一阶段的起始信息资料。


    2.设计:这一步包括了“定义硬件和软件架构、组件、模块、界面和数据等来满足指定的需求(Wikipedia)。”它包括了硬件和软件架构的定义,确定性能和安全参数,设计数据存储容器和限制,选择集成开发环境(IDE)和编程语言,并指定异常处理、资源管理和界面连接性的策略。


    这一阶段还强调了用户接口的设计,包括与浏览和可用性相关的问题,这一阶段的输出结果是一份或多份设计说明书,这些说明书将在下一阶段使用。


    3.实现:这一步包含了根据设计说明书来构建产品,通常,这一阶段是由开发团队来执行的,开发团队包括了程序员、界面设计师和其他的专家,他们使用的工具包括编译软件、调试软件、解释软件和媒体编辑软件。


    这一阶段将生成一个或多个产品组件,它们是根据每一条编码标准而编写的,并且经过了调试、测试并进行集成以满足系统架构的需求。对于大型开发团队而言,我建议使用版本控制工具来追踪代码树的变化,这样在出现问题的时候可以还原以前的版本。


    4.测试:在这一阶段,独立的组件和集成后的组件都将进行系统性验证以确保没有错误并且完全符合第一阶段所制定的需求。一个独立的质量保证小组将定义“测试实例”来评估产品是完全实现了需求还是只有部分满足。


    有三种测试方法可以使用:对独立的代码模块进行单元测试;对集成产品进行系统测试;以及客户参与的验收测试。如果发现了缺陷,将会对问题进行记录并向开发团队反馈以进行修正。在这一阶段,还有产品文档会经过准备、评估并发布,比如用户手册等。


    5.安装:在产品通过测试并且被鉴定为符合需求的产品后,就会进入到安装阶段,这一阶段包括了在客户站点进行系统或产品的安装和使用,这可以通过互联网或者物理媒介进行,通常交付使用的产品都带有正式的版本号,这为今后的产品升级提供了便利。


    6.维护:这一阶段发生在安装之后,包括了对整个系统或某个组件进行修改以改变属性或者提升性能,这些修改可能源于客户的需求变化或者系统使用中没有覆盖到的缺陷,通常,在维护阶段对产品的修改都会被记录下来并产生新的发布版本(称作“维护版本”并伴随升级了的版本号)以确保客户可以从升级中获益。


内容导航 
    优势


    上述的瀑布模型为软件开发人员提供了众多优势,首先,这个阶段性的软件开发模型规定了以下规则:每个阶段都有指定的起点和终点,过程最终可以被客户和开发者识别(通过使用里程碑),在编写第一行代码之前充分强调了需求和设计,这避免了时间的浪费以及跳票的风险,同时还可以尽可能地保证实现客户的预期需求。


    提取需求和设计提高了产品质量,因为在设计阶段捕获并修正可能存在的漏洞要比测试阶段容易很多,毕竟在组件集成之后来追踪特定的错误要复杂很多。最后,因为前两个阶段生成了规范的说明书,当团队成员分散在不同地点的时候,瀑布模型可以帮助实现有效的知识传递。


    缺点


    除了看上去很明显的这些优势,瀑布模型近来也受到了很多批评,最突出的一点是围绕需求分析的,通常客户一开始并不知道他们需要的是什么,而是在整个项目进程中通过双向交互不断明确的;而瀑布模型是强调捕获需求和设计的,但在这种情况下,现实世界的反复无偿就显得瀑布模型有些不切实际了。


    除此以外,即使给定了客户需求,根据这些需求在一定的精确性范围内(瀑布模型所建议的)估算时间和成本是非常困难的。因此,建议在客户需求可以在最初阶段明确的情况下并且相对稳定的项目中使用瀑布模型。


    另外的批评指出瀑布模型还假定设计可以被转换为真实的产品,这往往导致开发者在工作时陷入困境,通常,看上去合理可行的设计方案在现实中往往代价昂贵或者异常艰难,从而需要重新设计,这样就破坏了传统瀑布模型中清晰的阶段界限。


    有些批评还指出瀑布模型暗示了清晰的分工,将参与开发的人员分为“设计师”、“程序员”和“测试员”,但是在现实中,这样的分工对于软件公司而言既不现实也没有效率。


    客户需求


    尽管瀑布模型招致了很多批评,但是它对很多类型的项目而言依然是有效的,如果正确使用,可以节省大量的时间和金钱。对于您的项目而言,是否使用这一模型主要取决于您是否能理解客户的需求以及在项目的进程中这些需求的变化程度,对于经常变化的项目而言,瀑布模型毫无价值,对于这种情况,您可以考虑其他的架构来进行项目管理,比如名为螺旋模型(spiral model)的方法,当然,这是另外一码事了,也许我们以后会讲到这些方法。


   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGis Desktop10 注册机授权方法与安装步骤

今天,由于需要处理一些空间数据,安装ArcGIS Desktop10,所以就把注册机的授权方法与安装过程,写成Blog与大家一起分享! 第一步:安装 ArcGIS许可管理器。如图所示: 第二步:打开注册机&…

【转】在C#中使用SQLite

SQLite 是一个嵌入式的关系数据库系统,使用十分广泛。在一些数据量不大的应用程序中,如果使用SQLite可以极大的减少部署时的工作量。 要在C#中使用SQLite也很简单,只要找一个C#的wrapper就可以了,例如,我使用的就是来自…

软件开发模式有哪些

软件开发模式有哪些? 快速原型模型:(需要迅速造一个可以运行的软件原型,以便理解和澄清问题) 快速原型模型允许在需求分析阶段对软件的需求进行初步的非完全的分析和定义,快速设计开发出软件系统的原型(…

利用ArcGIS将经纬度数据转化成平面坐标数据

经度是指某点与两极的连线与0度经线所在平面的夹角,国际上规定以通过英国伦敦近郊的格林尼治天文台旧址的经线作为计算经度的起点,即经度零度零分零秒,也称“本初子午线”。它东面的为东经,记为E,共180度,西…

电脑连接电视方法详解_笔记本连接电视方法有哪些?分享两种笔记本连接电视方法...

在如今这个快节奏的时代中,大多数年轻人的手中都会有个笔记本电脑,并且将笔记本电脑作为休闲娱乐或办公的一种设备。相比于电视屏幕尺寸,笔记本电脑的屏幕还真是小了很多。为了提高视觉上的体验,很多小伙伴会选择笔记本连接电视的方式,将笔记本中的内容转换到电视屏幕上。下面我…

美国团购网站Groupon的盈利模式

GroupOn 一种模式,一个奇迹。用户每天疯狂在网站上抢购推出的餐饮、SPA、运动、游戏这样的商品或服务机会。 很难相信,这个网站在2008年11月份上线,在7个月后就实现了盈亏平衡,利润更是高达了30%以上。据报道,2010年销…

完整的连接器设计手册_减速齿轮箱的设计 用一整套完整流程来说明(附PDF手册)...

减速箱减速齿轮箱设计手册获取见文章末尾图片在通用的产品设计中,齿轮减速箱的设计是最简单成熟的一种设计,因为设计流程十分清晰,这已经是一种很成熟的产品了,下面我就来说一说如何做减速齿轮箱的设计,以及设计的一般…

WAMP Server 无法启动的解决方法

今天安装WAMP Server用来发布PHPMySQL做的网站,安装之后发现Apache服务无法启动,尝试用如下的方法进行解决。 首先利用WAMP自带的 Apache->Service->Test Port 80 功能,检测80端口是否被其他软件占用。 检测结果显示: You…

在 WinCe 平台读写 ini 文件

在上篇文章开发 windows mobile 上的今日插件时,我发现 wince 平台上不支持例如 GetPrivateProfileString 等相关 API 函数。在网络上我并没有找到令我满意的相应代码,因此我手工自己写了相应的方法。命名规则是,在 PC API 函数的名称前面加上…

SQL Server 兼容模式

近期一个老系统改用SQL Server 2005数据库, 从原来的2000改为2005, 默认情况下启动出错: Incorrect syntax near Index. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. SQL 语句中的table hint 中缺少with 关键…

孩子学python用什么教材比较好-python大学里用哪本教材比较好?

看这本 英文好的话,不需要买书,看该书的英文电子版,免费的。 《How to Think Like a Computer Scientist- Learning with Python 3》 下载地址:https://github.com/pythonpeixun/article/blob/master/books/How%20to%20Think%20Li…

通过VisualSVN的POST-COMMIT钩子自动部署代码

这段时间我们一直规划LSGO Group的学习网络平台,需求部分已经规划完毕,说做就做,开始搭建环境,由于利用PHPMYSQL技术,在服务器端首先安装了WAMPServer,以便提供Apache服务与MYSQL服务! 在代码的…

Linux内核的中断机制

5.1 I386的中断与异常 中断通常被分为“同步中断”和异步中断两大类。同步中断是指当指令执行时由CPU控制单元产生的中断,之所以称为“同步中断”是因为只有在一条指令中止执行后CPU才会发出这类中断信号。而异步中断则是指由其他硬件设备依照CPU时钟随…

电脑安装系统多少钱_电脑系统安装教学

双十一刚过,双十一购买硬件的朋友等快递到了,马上就要进入装机环节了,最近会出一系列装机之后的文章,比如今天的装系统教学,之后还会出CPU、内存超频教学。至于装机教学,文章很难解释清楚,如果怕…

sql2005生成sql2000脚本的时候出现“User.UserType: NoLogin 不是SQL Server 2005 的有效选项“ 的解决方案...

网上搜得解决办法如下: 原文地址:http://www.cnblogs.com/finesite/archive/2009/08/16/1547007.html 背景:以前在虚拟主机的数据库上曾在线新增了一存储过程(数据库登录名与本地数据库登录名不同),后来把整个数据库备份还原到本地(sqlserver2005),当我再…

数据结构与算法(C#版)第二章 C#语言与面向对象技术(上)V1.0

由于本学期我给本科生上《数据结构与算法》这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正。 第二章 C#语言与面向对象技术(上) 一、C#语言 1.数据类型 2.常量与变量 3.运算符与表达式 4.基本语句…

Linux内核的Softirq机制

前言 中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此,Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对…

ie浏览器网页版进入_IE浏览器打开网页速度很慢的解决办法

IE浏览器网页打开速度很慢怎么办?最近有用户反映,使用IE浏览器上网时,打开网页非常慢,如何解决这个问题?请看下文。解决办法:1.登录到系统桌面,使用组合快捷键win键r键打开运行窗口,…

struts中文问题,struts国际化问题的终极解决方案

Java本身就支持多国语言编码,不需要写任何程序,可以很简单的 实现。 秘诀就是两点: 1、所有HTML/JSP页面全部采用UTF-8编码 2、客户端浏览器完全支持UTF-8编码 步骤: 1、首先把所有的HTML/JSP的ContentType都设为UTF-8 2、然后…

数据结构与算法(C#版)第二章 C#语言与面向对象技术(中)V1.0

由于本学期我给本科生上《数据结构与算法》这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正。 第二章 C#语言与面向对象技术(中) 二、面向对象技术 1.类与对象 2.封装 3.继承 4.多态