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

还有两天笔者就要面临一次大型的软件工程项目验收了。这个项目笔者已经管理了两月有余。在管理的过程中,利用课堂中所学习的理论知识和自己实践过程中的摸索,本人逐渐体会到了不同软件管理模型之间的差异,并具备了一定的选择管理方案的能力。

首先,对于绝大多数人来说,刚接手一个新项目的时候都会不自觉的选择“瀑布模型”----我们跟客户交谈后指定需求分析,之后进行简单的设计,之后编写代码,提交,完成。新手会不自觉的选择这种方案,因为它直白,想到哪一步做到哪一步,需要做什么就做什么。但是,这在有些时候是要付出惨重的代价的。比如A拥有一家跑车公司,可以给客户自定义生产跑车。有一天一土豪来到A的公司,跟A商谈了一个跑车项目,他们谈好了车型,材料,马力等等细节。之后,A带着团队做了6个月,做成了这架跑车,交给了土豪。可是土豪开了一天之后回来要求重做,原因是当讨论方案的时候,双方都忘记给跑车安尾灯了!但是给跑车安装尾灯,就要涉及到整个车尾的重新设计,就要把整辆车拆掉再重新组装!

这个模型显然只适合已经成熟了的项目,团队接手项目之后如庖丁解牛般行云流水。当团队接手了创新项目之后,显然已经不再适合用瀑布模型。这时候,就该该使用敏捷模型了。敏捷模型的本质就是优化!第一遍做一个简单版的项目,之后不断迭代优化。就像腾讯的英雄联盟一样,每隔2周就要发布一个新的release,玩家需要安装更新之后才可以继续玩这个游戏。我们就以英雄联盟为例,2016年12月12日版本的英雄联盟是最终版的吗?显然不是。该版本能满足用户全部的需求吗?必然不能。客观的说,这个版本满足了用户当前对于这个游戏的需求。随着时间的推移,用户的需求增多,腾讯就要对英雄联盟进行更新。

敏捷模型的魅力就在于此,每次我们的release只是暂时的满足的用户的需求,让用户的“不满”暂时“平息”。当用户有了新的需求,我们并不需要把项目打倒重来,而是在当前版本增加用户的需求模块。为了完美的做到这一点,我们需要尽可能的在事先建模,把工程模块化,每个模块留有相互交流的接口。当客户对项目有了新的需求,我们就可以在原有的模型上进行优化了。

时间: 2024-10-13 00:57:08

软件工程中的瀑布模型和敏捷模型的相关文章

从瀑布模型到敏捷开发——认识论决定行为

技术交流会中,让我印象最深的是:大勇学长和丹姐在切磋实际项目中用到的"敏捷开发",后来由向阳学长对比两人的观点发问"敏捷开发和瀑布模型的优缺点?人员要求?流程?"最终由我们敬爱的米老师做高层次的总结. 下面,本人根据学长们的建议,并参阅网上资源对"敏捷开发和瀑布模型做对比分析" 软件开发模型的由来 20实际60年代中期,人们在软件开发过程和维护中所遇到的问题被称作是"软件危机". 1968年,在德国召开的NATO(北大西洋公约

软件工程的传统开发与敏捷开发

     引言 随着计算机的普及,软件工程成为了计算机产业中特别重要的一个产业.自从瀑布式开发模式提出之后,软件工程就走上了规范化的道路.随着软件工程的发展,逐步衍生出各种各样的软件开发模式.其中最受瞩目的就是敏捷开发模式.敏捷开发在短期的发展后,逐步从传统开发模式中脱离出来,逐渐占据了软件开发行业的半壁江山.本文从传统开发与敏捷开发的模式出发,对比敏捷开发与传统开发,浅析现代软件开发模式. 软件的传统开发 软件的传统开发具有悠久的历史,从20世纪60年代末开始提出软件工程这个概念,到如今传统开

软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结

在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求 ->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以 组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段. 由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,对于严格的瀑布模型

软件工程——理论、方法与实践 之 软件工程中的形式化方法

软件工程——理论.方法与实践 之 软件工程中的形式化方法 从广义上讲,形式化方法是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动.狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述.模型推理和验证的方法.形式化方法运用于软件工程实践当中主要目的是保证软件的正确性.软件开发实际上就是把现实世界的需求映射成软件额模型化过程.该过程包括:形式规约.形式证明我与检验.程序求精三方面的活动. 形式化规格说明是对软件系统对象,对象的操作方法,以及对象行为

《软件工程 ——理论、方法与实践》知识概括第五章 软件工程中的形式化方法

第5章 软件工程中的形式化方法    从广义上讲,形式化方法(Formal Method)是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动.狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述.模型推理和验证的方法.将形式化方法运用于软件工程实践当中的只要目的是保证软件的正确性. 软件生命周期中的形式化转化策略:常用转化策略.直接转化策略和运用半形式化表示的中间转化策略. 进行模型化的过程中涉及到三种系统模型:现实世界.模型表示和计算机系统.

《软件工程中的形式化方法》

在软件工程中,通过建立精确的数学模型以及对软件模型进行分析活动后建立的方法称为软件工程中的形式化方法,包括形式规约,形式证明与验证及程序求精三方面的活动.形式规约是规格说明的形式化:形式证明与验证技术包括模型检测和定理证明:程序求精是从抽象的形式规约推演出的面向程序代码的全过程,包括时态逻辑,Z语言及分析和Petri网方法3种,时态逻辑分为一阶线性时态和计算数逻辑;Z语言为系统建立基于状态的模型,可由基于集合理论的集合,关系,函数,序列和包以及Z独有的模式表示,停车场管理系统和图书管理系统便是基

rails中一个窗体多个模型——fields_for

借助field_for可以生成表单来处理两个或更多模型对象的数据 先看一个官方的例子,一个表单中有person和permission两个模型,其中每个person包含一个permission <%= form_for(@person) do |person_form| %> First name: <%= person_form.text_field :first_name %> Last name: <%= person_form.text_field :last_name

osg中使用MatrixTransform来实现模型的平移/旋转/缩放

osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html#undefined MatrixTransform是从Transform - Group继承而来,因此可以在它的下面挂接Node对象. 通过设置其矩阵,来实现其下子节点的模型变换. -- 用局部坐标系来理解(局部坐标系又称惯性坐标系,其与模型的相对位置在变换的过程中始终不变) 如下代码: // 创建

MVC中Model BLL层Model模型互转

MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单操作方法,不只是有属性的模型叫做充血模型,如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication1.Models { /// <