瀑布模型

瀑布模型

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

瀑布模型

 ̄綄美尐妖づ 提交于 2019-11-28 16:48:44
瀑布模型(Waterfall Model) 瀑布模型是一种比较老旧的软件开发模型 ,1970年温斯顿·罗伊斯提出了著名的“瀑布模型”,直到80年代都还是一直被广泛采用的模型。   瀑布模型将软件生命周期划分为 制定计划、需求分析、软件设计、程序编写、软件测试和运行维护 等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序, 如同瀑布流水 ,逐级下落。   在瀑布模型中,软件开发的各项活动严格按照线性方式进行, 当前活动接受上一项活动的工作结果 ,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。   瀑布模型优点是严格遵循预先计划的步骤顺序进行, 一切按部就班比较严谨 。   瀑布模型 强调文档的作用 , 并要求每个阶段都要仔细验证 。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式, 几乎被业界抛弃 ,其主要问题在于:   1) 各个阶段的划分完全固定,阶段之间产生 大量的文档 否 ,极大地增加了工作量;   2) 由于开发模型是线性的,用户只有等到 整个过程的末期才能见到开发成果 ,从而增加了开发的风险;   3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。   4) 各个软件生命周期衔接花费时间较长 ,团队人员交流成本大。   5) 瀑布式方法在

软件工程中的瀑布模型和敏捷模型

时光总嘲笑我的痴心妄想 提交于 2019-11-28 16:48:32
还有两天笔者就要面临一次大型的软件工程项目验收了。这个项目笔者已经管理了两月有余。在管理的过程中,利用课堂中所学习的理论知识和自己实践过程中的摸索,本人逐渐体会到了不同软件管理模型之间的差异,并具备了一定的选择管理方案的能力。 首先,对于绝大多数人来说,刚接手一个新项目的时候都会不自觉的选择“瀑布模型”----我们跟客户交谈后指定需求分析,之后进行简单的设计,之后编写代码,提交,完成。新手会不自觉的选择这种方案,因为它直白,想到哪一步做到哪一步,需要做什么就做什么。但是,这在有些时候是要付出惨重的代价的。比如A拥有一家跑车公司,可以给客户自定义生产跑车。有一天一土豪来到A的公司,跟A商谈了一个跑车项目,他们谈好了车型,材料,马力等等细节。之后,A带着团队做了6个月,做成了这架跑车,交给了土豪。可是土豪开了一天之后回来要求重做,原因是当讨论方案的时候,双方都忘记给跑车安尾灯了!但是给跑车安装尾灯,就要涉及到整个车尾的重新设计,就要把整辆车拆掉再重新组装! 这个模型显然只适合已经成熟了的项目,团队接手项目之后如庖丁解牛般行云流水。当团队接手了创新项目之后,显然已经不再适合用瀑布模型。这时候,就该该使用敏捷模型了。敏捷模型的本质就是优化!第一遍做一个简单版的项目,之后不断迭代优化。就像腾讯的英雄联盟一样,每隔2周就要发布一个新的release,玩家需要安装更新之后才可以继续玩这个游戏

跟老婆学习软件工程一:瀑布模型

我是研究僧i 提交于 2019-11-28 16:48:18
晚上同老婆聊SVN版本控制和管理的时候,和我讲了一下软件工程中的瀑布模型。瀑布模型是最基本的也是最有效的软件工程开发模型之一,讲完后才豁然于我们现阶段软件工作中人员的分工。先上我画的瀑布模型图: 从需求到编码,是实现的过程,是自上而下的过程,而从编码到产品,是验证的过程,是自下而上的过程。 从需求到编码,是实现的过程,是实际研发的过程,需要经过需求分析、系统设计和详细设计这几个部分,工作基本上会由产品经理(分为市场和研发)、系统工程师(大型项目为架构师)、软件工程师和程序员来完成。而编码到产品,是验证的过程,是测试的过程,需要经过单元测试、继承测试和系统测试三个部分,分别验证了详细设计、系统设计和概要设计的正确性,此测试过程中基本均为白盒测试,部分测试需要研发人员自行完成,比如单元测试。而黑盒测试则基本上是对最终产品是否符合当初需求做一个验证。瀑布模型中的每一个环节都紧密相扣,一旦哪一环节出问题,则需要向上推将上一环节的设计货编码做正确,并再重新走一遍瀑布流程。 由此可见,软件工程是一个多么复杂的工程,而现在才明白,从需求到产品,最难的还是需求分析和架构设计,所以若没有一个优秀的产品团队和一个优秀的系统/架构工程师,则在产品开发和测试过程中寸步难行,由此可见产品经理和架构师是重中之重,产品经理和架构师直接决定了产品能否实现和产品好坏。希望开发过程真能如瀑布模型所示,那么

软件测试基础入门知识点

£可爱£侵袭症+ 提交于 2019-11-28 13:56:59
软件测试基础入门知识点 一、行业前景 前言 ​ 程序员之间流传着这样一句话:有人喜欢创造世界,他们做了开发工程师,有人喜欢挑毛病,所以他们做了测试工程师。 什么是软件测试 软件测试就是利用手工或测试工具按照测试方案和流程对产品进行功能和性能测试,简单的来说就是为软件做“质检”。 软件测试的重要性 ​ bug 的经济损失: ​ 软件 bug 对我们的生活,工作都会带来毁灭性的破坏。据悉,每年的软件 bug 会让整个市场经济带来近600亿美元的损失! 成立软件测试部门的原因 软件测试能提前发现软件存在的缺陷 社会分工越来越细 -- 要求软件测试越来越精细 专人负责,责任到位 二、测试基础 2.1、什么是软件测试 ​ 在规定的条件下对程序(App,.exe安装文件,网页等)进行操作,从而发现错误,对软件质量进行评估的一个过程。 2.2、软件测试的目的 ​ 是想以最少的人力,物力和时间找出软件中潜在的各种错误与缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患以及带来的商业风险。(注意这个问题的答案,经常会与软件测试的定义混淆) 2.3、软件测试的定义 ​ 使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。 2.4、软件测试的原则 所有的测试都应追溯到用户需求(视频网站,点击后最大化

管理信息系统(三)

雨燕双飞 提交于 2019-11-28 12:10:08
ISDM定义 ISDM不仅只是—种如何开发信息系统的方法/过程模型。ISDM是—套整体方法,包含: —个通过分析方法、工具和技术操作的分析框架。描述系统开发中分析问题与解决问题的行为特征。主要指,面向过程、面向数据、面向对象。 支持分析框架的过程模型(process-model , 指开发活动的次序和持续时间)。描述系统开发随时间变化而呈现的阶段特征和项目管理与组织上的特征。有些类似SDLC, 如,瀑布模型、原型法、螺旋模型、敏捷软件开发等。 从技术上来讲, mis开发是系统阶段特征和行为特征的结合。因此, ISDM可视为包含开发信息系统用到的所有方法、操作和过程的框架。 完整的ISDM包含SDLC与开发方法、开发技术、开发工具及环境三层。 • SDLC :ISDM开发方法的过程模型可能混用多种SDLC 以适用不同项目需求。 • 开发方法:主要指面向过程、面向数据、面向对象。是—个通过分析方法、工具和开发技术操作的分析框架。 • 开发技术:中间件、可视化、软件复用等 • 开发环境和工具: CASE 、SDE 、SEE 、IPSE等 ISDM 中的这四项内容彼此相互联系、相互支持、相互制约。 • 开发环境/工具位于最底层,说明其他层面均需要开发环境/工具的支持 • 开发技术是组成开发方法的基本成分,例如,结构化开发方法是由结构化分析技术、结构化设计技术、结构化程序设计技术组成

瀑布模型

人盡茶涼 提交于 2019-11-28 03:15:51
瀑布模型 :将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。其过程是将上一项活动的输出作为该项活动的输入,利用这一输入实施该项活动应完成的内容,然后对当前活动的工作结果进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。 传统的瀑布模型 瀑布模型的优点 (参考 百度百科 ): 1)为项目提供了按阶段划分的检查瀑布模型查点。 2)当前一阶段完成后,只需要去关注后续阶段。 3)可在迭代模型中应用瀑布模型。 4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。 瀑布模型的缺点 : 1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。 2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。 3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。 4)瀑布模型的突出缺点是不适应用户需求的变化。 5)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。 传统的瀑布模型过于理想化,早期的错误只有等到开发后期才能发现,进而带来严重的后果。为尽早发现错误,在瀑布模型中加入迭代过程。当后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。

Devops 前途无量

浪尽此生 提交于 2019-11-28 02:40:45
前言 很荣幸自己可以接触到这个东东,而且谢谢梦甜姐的见解很开心,好的东西就要分享给大家,下面看看我的收获吧 What devops 它是由development 和operation的组合,突出的是软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建,测试,发布更加快捷,频繁和可靠,devops是在2009从欧洲引进的,它是为传统模式的运维之痛而生。其实他经历过2代的变更,其中有瀑布模型,敏捷开发,随后才是devops 为什么需要devops? 1.devops解决了瀑布模型与敏捷的缺点,从软件开始的第一步直到该软件周期结束devops都自动化的完成所需工作 什么是瀑布模型? 瀑布模型是属于软件开发模型的,软件开发模型是指的软件开发全部过程,活动和任务的结构框架,软件开发包括需求,设计,编码,和测试等阶段,还包括维护阶段。 瀑布模型将软件生命周期划分为制定计划,需求分析,软件设计,程序编写,软件测试,运行维护六个阶段,他们是按照自上而下互相衔接的固定次序,就像瀑布一样 为什么瀑布模型会被淘汰? 1. 各个阶段的划分完全是固定的,阶段之间产生大量的文档,极大地增加工作量 2. 由于开发是线性的,所以用户只有在开发的末期才可以到成果,所以增加了风险 3. 早起的错误等到最后测试再发现这样会带来严重的后果 什么是敏捷开发? 是一种以人为核心,迭代,循序渐进的开发方法

详谈软件工程之软件开发方法(一)

痞子三分冷 提交于 2019-11-27 13:04:29
详谈软件工程之软件开发方法(一) 一、软件开发方法 1、结构化法: 2、面向对象方法: 3、面向服务方法: 4、原型法: 其适用于需求不明确的场景,包括抛弃型原型和演变型原型。 二、软件开发模型 1、瀑布模型: 2、增量与螺旋模型: 3、V模型: 4、喷泉模型: 5、快速应用开发(RAD): 6:构件组装模型: 三、统一过程(UP/RUP) 四、敏捷开发 五、逆项工程 六、净室工程 更多资讯请扫描以下二维码或关注微信公号“愿为最亮星”,为您提供更深层次的解答。 软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。 本章节主要讲的是软件工程中的软件开发方法论。其主要的考点在于软件开发方法和软件开发模型模块(主要是考各个模型的特点是什么,具体在哪些场景中会使用到),其他的逆向工程和净室软件工程考的比较少,最多出现一两分的综合知识题,其需要掌握的内容如下: 。 注意:在实际项目的使用场景中,我们不会单独的运用到某一种开发方法或者模型,都是综合多种模型以及开发方法,提取他们的优点来加以使用。 一、软件开发方法 其用到的方法依据时间的变化主要分为结构化法、面向对象法、面向服务法以及原型法

软件测试-测试分类

非 Y 不嫁゛ 提交于 2019-11-27 00:45:59
软件测试-测试分类 一、按软件测试阶段: a. 单元测试 b. 集成测试 c. 系统测试 d. 验收测试 1、单元测试 单元测试的原则: 1、尽可能保证部没测测试用例相互独立 2、一般由代码的编写人员来实施 单元测试的优点: 1、能尽早发现缺陷 2、有利于重构 3、可以简化集成 单元测试的缺陷 1、不可能穷尽测试,即测试用例不可能覆盖所有的执行路径,不可能捕捉到所有的错误 2、每一行代码需要3-5行测试代码来完成测试 单元测试框架 xUnit,比如:JUnit 例:eclipse->new->Java project->(finish)->右键项目->properties->Java Build Path->Add library->选择JUnit->next->选择Junit版本->finish 选中需要测试的类,在上右键->new->junit test case(勾选setUp()和tearDown() )->next( 选择需要测试类中待测试的方法 ) -> finish() 2、集成测试 在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块,子系统或者系统的过程中各部分工作是否达到或者实现相应3技术指标及要求的活动。 集成测试实施方案 1、BIg Bang(一次性集成/大爆炸):把大部分开发模块耦合起来,形成一个完整的软件系统