辨明你所从事的软件的类型

知识储备:软件开发模式:瀑布,迭代,螺旋,敏捷

1.瀑布模型

优点:

方便项目管理的运作,是最典型的可预见性的方法,严格遵循预先计划的需求分析,设计,编码,集成,测试,维护的步骤顺序进行。

步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等。

缺点:

限制了开发期间团队之间的交互,自由度降低,项目早期即做出承诺导致对后期需求的变化难以调整,成本高,瀑布式方法在需求不明的并且在项目进行过程中可能变化的情况下基本是不可行的。

2、迭代式开发也被称作迭代增量式开发迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。
什么是迭代式开发?
每次只设计和实现这个产品的一部分, 
逐步逐步完成的方法叫迭代开发, 
每次设计和实现一个阶段叫做一个迭代.

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、
固定长度(如3周)的小项目,被称为一系列的迭代。
每一次迭代都包括了需求分析、设计、实现与测试。
采用这种方法,开发工作可以在需求被完整地确定之前启动,
并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。
再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发的优点:
  1、降低风险
  2、得到早期用户反馈
  3、持续的测试和集成
  4、使用变更
  5、提高复用性

螺旋开发,1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
“螺旋模型”刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开。

  “螺旋模型”的核心就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。 
       (1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

  (2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

  (3)实施工程:实施软件开发和验证;

  (4)客户评估:评价开发工作,提出修正建议,制定下一步计划。 
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

 

敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。

  • 人和交互 重于过程和工具。
  • 可以工作的软件 重于求全而完备的文档。
  • 客户协作重于合同谈判。
  • 随时应对变化重于循规蹈矩。

其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。
人员彼此信任 人少但是精干 可以面对面的沟通

项目的敏捷开发:
敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果; 
关注业务优先级; 检查与调整。

最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,
因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。
大规模的敏捷软件开发尚处于积极研究的领域。

四者对比区别:

传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。
特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,
最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。
敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。

适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化.----以上部分内容来源于http://www.cnblogs.com/-OYK/archive/2012/10/08/2714669.html

不同种类的软件项目,需要在“准备工作”和“构建活动”之间做出不同的平衡,每个项目都是独特的,但是项目可以归入若干种开发风格

摘自《代码大全2》

时间: 2024-11-08 22:42:06

辨明你所从事的软件的类型的相关文章

原创:漫谈戴明管理哲学与软件开发(三)

(续前) 3.停止依靠大批量的检验来达到质量标准 检验其实是等于准备有次品,检验出来已经是太迟,且成本高而效益低.正确的做法,是改良生产过程. 很多人分不开QA和QC的区别,甚至在教科书中也往往把测试叫做QA,但事实上两者是有很大区别的. QA全称是Quality Assurance,直译即质量保障 -- 避免生产质量不达标的产品.而QC的全称是Quality Control,直译即质量控制 -- 避免让质量不达标的产品出厂.两者看似没区别,但实际上却是截然不同的两种管理思想.质量保障的目标是把

使用具有权威说服力的实例辨明C++中的malloc与new

使用具有权威说服力的实例辨明C++中的malloc与new 问题: 很多人都知道malloc与new都是用来申请空间用的,开辟空间来源于堆中.但是在C++中却很少用malloc去申请空间,为什么? 下面小编会以一个很有说服力的例子来说明,相信大家一看就能明白. C++程序的格局可分为4个区,注意是"格局", 1.全局数据区     //其中全局变量,静态变量是属于全局数据区 2.代码区     //所有的类和非成员函数的代码都存放在代码区 3.栈区    //为成员函数运行而分配的局部

App软件的类型

这里的类型不是指新闻类App.商城类App,而是指开发类型,主要分为三种: 原生开发:指利用安卓.iOS官方的开发工具进行开发,这样开发出的App,性能可靠.功能多.用户体验比较好,但是开发难度大,成本高,周期长. H5网页开发:主要是通过网页类型的开发,然后把网页打包成App.因为H5网页版本身功能比较少,而且加载速度慢,用户体验比较差.优势是开发速度快,成本低. 混合开发:指一个App,部分内容使用原生开发,部分使用混合开发.苹果手机赚钱软件请添加链接描述.但是混合开发的技术要求比较高,目前

第1章欢迎进入软件构建的世界(代码大全6)

第1章 欢迎进入软件构建的世界 Welcome to Software Construction 1.1 什么是软件构建开始 1.2 软件构建为何如此重要 1.3 如何阅读本书 要点 1.1 What is Software Construction 什么是软件架构 定义问题(problem defintion) 需求分析(requirements development) 规划构建(construction planning) 软件架构(software architecture),或高层设计

第3章三思而后行:前期准备上(代码大全7)

第3章 Measure Twice, Cut Once:Upstream Prerequisities 三思而后行:前期准备 3.1 前期准备的重要性 3.2 辨明你所从事的软件的类型 3.3 问题定义的先决条件 3.1 Importance of Prerequisites 前期准备的重要性 如果你在项目的末期强调质量,那么你会强调系统测试.但是测试只是完整的质量保证策略的一部分,而且不是最有影响的部分.测试是不可能检查出诸如:“制造了一个错误的产品”,或者“使用错误的方法制造正确的产品”之类

多年收集的一些稀有软件2

QQ:365543212 Fuel Economy Calculator v1.1 B.001(汽车工程软件,用于预测车辆燃油消耗率,是目前此类软件中最为全面的,能接收从最新的发动机分析程序Engine Analyzer自动发送来的强大的游标和发动机规格) Psat v5.1 1CD ProScan.v5.1 1CD PowerFlow v3.3p3a for Linux 1CD(Exa公司的汽车外气流计算软件) Rotating Inertia Calculator v1.1 A.000(一款

【转】c#引用类型与值类型的区别大盘点

解析:CLR支持两种类型:值类型和引用类型.用Jeffrey Richter(<CLR via C#>作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能问题”.这就要求我们正确理解和使用值类型和引用类型. 值类型包括C#的基本类型(用关键字int.char.float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型):而引用类型包括类(用class关键字声明的类型)和委托(用delegate关键字声明的特殊类).C#中的每

一个菜鸟在fodera 21 下的软件安装的随思随想

接触linux很久了,每次安装软件的时候都很纠结自己没有仔细.全面的研究一下linux下安装软件这个最基本的技能,所以现在才折腾了一番 1.通过软件库安装软件(由于知识局限,所以只是说说yum下安装软件,对于apt-get的,因为之前用过ubuntu,所以会提到一点点): 在fodera中:[[email protected] roy]# yum search package(你所需要的软件的相关的关键词)  -根据关键词查找你想要的软件  [[email protected] roy]# yu

【转】C#详解值类型和引用类型区别

通用类型系统 值类型 引用类型 值类型和引用类型在内存中的部署 1 数组 2 类型嵌套 辨明值类型和引用类型的使用场合 5 值类型和引用类型的区别小结 首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管是否已经赋值,编译器为其分配内