`
king_tt
  • 浏览: 2101267 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

软件工程-应用“瀑布模型”进行开发

 
阅读更多
<!-- Feedsky FEED发布代码开始 --> 如果您喜欢这些文章,欢迎点击此处订阅本Blog <!-- FEED自动发现标记开始 --> <link title="RSS 2.0" type="application/rss+xml" href="http://feed.feedsky.com/softwave" rel="alternate"> <!-- FEED自动发现标记结束 -->Blog 订阅

<!--Google 468*60横幅广告开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "image"; //2007-07-26: CSDN google_ad_channel = "6063905817"; google_color_border = "6699CC"; google_color_bg = "E6E6E6"; google_color_link = "FFFFFF"; google_color_text = "333333"; google_color_url = "AECCEB"; google_ui_features = "rc:6"; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--Google 468*60横幅广告结束-->


概述

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

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

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

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

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

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

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

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

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

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

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

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

优势

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

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

缺点

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

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

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

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

客户需求

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

<!--新Google 468*60横幅广告开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x60, 创建于 08-8-6 */ google_ad_slot = "7368701459"; google_ad_width = 468; google_ad_height = 60; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468*60横幅广告结束-->

<!--新Google 468x15 横链接单元开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x15 横链接单元 */ google_ad_slot = "5785741422"; google_ad_width = 468; google_ad_height = 15; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468x15 横链接单元结束-->

<!-- Google Reader shared发布代码开始 --><script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&amp;callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC"></script><!-- Google Reader shared发布代码结束 -->
分享到:
评论

相关推荐

    软件工程-理论与实践(许家珆)习题答案

    用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名管理员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度 超过一...

    软件工程概论-选择.doc

    填空题10空-10分,判断题10题-10分,名词解释5题- 10分,简答题3题-15分,应用题2题-20分 一、选择题 (1)在软件开发模型中,提出最早,应用最广泛的模型是( ) A、瀑布 B、螺旋 C、演化 D、智能 (2)软件工程方法是在...

    [详细完整版]软件工程目录.doc

    …… 4 2.2.1 瀑布模型 …… 4 2.2.2 增量过程模型 …… 5 增量模型 RAD模型(快速应用程序开发) 2.2.3 演化过程模型 …… 6 原型开发 螺旋模型 2.2.4 基于构件的开发 …… 7 2.2.5 形式化方法模型 …… 7 2.2.6 ...

    软件工程简答题

    螺旋模型适合于大型软件的开发,它吸收了软件工程“演化”的概念,包括需求定义、风险分析、工程实现及用户评估四个阶段,螺旋模型由上述四个阶段组成的迭代模型,迭代的结果必须尽快收敛到客户允许的或可接受的目标...

    1软件工程概论-选择.doc

    一、选择题 (1)在软件开发模型中,提出最早,应用最广泛的模型是( ) A、瀑布 B、螺旋 C、演化 D、智能 (2)软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法一般是指( ) A、原型化方法 B、结构化方法 C...

    软件工程 曾强聪

    中文名: 软件工程 作者: 曾强聪 资源格式: PDF 版本: 文字版 出版社: 高等教育出版社书号: 9787040157437发行时间: 2004年11月 地区: 大陆 语言: 简体中文 简介: 内容简介: 本书是普通高等教育“十五”...

    软件生命周期模型

    软件生命周期模型 内容包括:瀑布模型/V模型或快速应用开发模型RAD/原型模型/螺旋模型/增量模型/迭代模型

    专题七:软件工程专题

    常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。 阶段 任务 参与人员 产生文档 软件定义阶段——待开发软件要“做什么” 系统分析 确定待开发软件的总体要求和适用范围,以及与之有关的硬件、...

    [详细完整版]现代软件工程.doc

    学院: 姓名: 学号: 目录 1.1什么是智能模型 1 1.2智能模型的必要性 2 2.1什么是RAD开发模型 2 2.2 RAD模型的软件过程 3 3.1各种模型的比较 5 3.2各种模型的优点和缺点 5 瀑布模型 5 快速模型 6 增量模型 6 RAD...

    【清华】 软件工程(完) 视频.txt

    《软件工程(原书第9版)》包含四个部分:第一部分是对软件工程的一般性介绍,包括软件工程过程和敏捷开发,以及面向对象的设计和设计模式的使用;第二部分介绍可依赖性和信息安全性问题;第三部分介绍高级软件工程;...

    软件工程知识点

    软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,能够为经济、高效地开发高质量的软件产品提供最有效的支持。 (1)工程方法:结构化方法、JSD方法、面向对象方法。 (2)软件工具:具有...

    软件工程之专题七:软件工程专题

    软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、减低软件成本。 软件工程是1968年在德国的NATO会议上提出的,希望用工程化...

    软件工程过程课件PPT

    软件工程过程课件PPT 第一章 绪论 第二章 软件开发的主要活动 第三章 软件生存周期模型 第四章 瀑布模型应用实例 第五章 协同过程模型实例 第六章 软件过程的建立与管理

    [软件工程].曾强聪.文字版

    中文名: 软件工程 作者: 曾强聪 资源格式: PDF 版本: 文字版 出版社: 高等教育出版社书号: 9787040157437发行时间: 2004年11月 地区: 大陆 语言: 简体中文 简介: 内容简介: 本书是普通高等教育“十五”国家级...

    软件工程考试 模拟卷

    软件开发环境可按以下几种角度分类: (1)按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件开发环境。 (2)按功能及...

    软件工程第九章.doc

    9.1 概述 在瀑布模型的开发过程中,人们花费极大的努力进行严格开发,但终究难以接近理想目 标,在需求说明维以完善、难以明确的情况下,由快速分析而构造一个小的原形系统, 满足用户的某些要求后,使用户在使用...

    软件工程概论.docx

    软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是()。 A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段 A 5.在软件生存周期中,用户主要是在()参与...

    1软件工程名词解释.docx

    软件工程定义:1把系统的,规范的,可度量的途径应用于软件开发,运行和维护过程,也就是把工程应用于软件;2研究1中提到的的途径 软件生命周期各阶段的基本任务:问题定义;可行性研究;需求分析;总体设计;详细...

    信息系统监理师笔记

    瀑布模型(生命周期法,是生命周期法中最常用的开发模型),它将开发的过程分成软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下,适用于大型软件开发过程。 变换模型(演化...

    现代软件工程习题及答案

    软件工程是指导计算机软件开发和维护的工程学科。 (1) 它采用工程的概念、原理、技术和方法来开发和维护软件; (2) 它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起来; (3) 它强调使用生存周期...

Global site tag (gtag.js) - Google Analytics