[敏捷开发实践](1) 认识敏捷开发

[敏捷开发实践](1) 认识敏捷开发

1,提要

软件开发是一个系统工程,包括最初的可行性分析、再到设计、开发、测试、维护等整个生命周期。在这个过程中某些阶段的失误或说是变化,都可能增加整个软件项目的风险。

如何在保证效率的基础上还能安计划、保证质量的完成软件项目?于是产生了软件开发的一些方法,这个方法不是指具体有编码阶段的各种设计模式和技巧,而是在整个软件开发策略层面的方法。

传统瀑布模式和新型的敏捷开发就是其中最常用的方法,后面着重讨论敏捷开发的优缺点和敏捷开发的基础知识。

2,常用的开发模式

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

(3)原型模型,  原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。

(3)螺旋模型,将瀑布模型和快速原型模型结合,并特别强调项目风险。通常分为四个阶段组成:制定计划、风险分析、实施工程和客户评估。一般第一个原型只是双方交流的参考,随着后面的版本完善,最终达到目标。比较适合大型项目。

(2)新型的敏捷开发,即迭代式开发,不要求非常完美的需求分析、设计、文档,而是在最短时间内完成一个框架,然后不断迭代,不断测试,直至交付。

但它并不是不需要文档,不需要从需求、设计、开发、测试这样一个过程,在每个迭代过程中仍然需要做这样的事情。

但是敏捷开发更加注重人的因素,不像瀑布式开发那样,由专门的需求人员采集用户需求,由设计师完成设计文档。敏捷开发每个人都是需要了解项目的需求,并不断的进行小会议,不断的测试修改,直到提交。

        敏捷开发则是以测试驱动开发,而瀑布式开发是以文档驱动开发。

        下图是Scrum(敏捷开发的一种)敏捷开发模式

3,传统开发模式和敏捷开发的优缺点

主要对比比较常用的瀑布模型和敏捷开发。

(1)瀑布式开发

a.讲求阶段明确,严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一阶段的工作就不展开。 软件生命周期前期造成的Bug的影响比后期的大的多。

b.特别强调文档,在开发的后期才会看到软件的模样。在这种情况下,文档的重要性仿佛已经超过了代码的重要性。

c.流水式的开发,瀑布模型把开发人员定义为流水线上的工人。由于各阶段的开发人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等。对于客户需求变更,编码人员会比设计人员更容易产生很强的抵触情绪。当然好的方面就是按一定规范开发,如果有人员流失,短时间内可以补上去,除了核心的东西有文档参考外,开发过程本身就是在一定框架内的。

d.进度一目了解,瀑布模型产生的管理文档(计划书,进度表)等,能让不太了解该项目的人也能看懂项目的进度情况(只有能看懂百分比就行),很适合向领导汇报用。所以管理人员比较喜欢瀑布模型,但是开发人员不喜欢,因为它束缚了开发人员的创造性。

(2)敏捷开发

a.唯快不破,敏捷即是快之意,不仅思维快节奏,而且行为也是快节奏,因上受到当今快节奏社会的喜爱。

b.以人为本,和瀑布开发对应的文档为主来说,在敏捷开发中更强调人,在细节开发上个人可以发挥主观性,使用自己善长的技术和模式开发,而非机器式的开发,容易激发团队成员兴趣和创造力。除了项目参与者,人的因素中更考虑到与客户的沟通。每个成员都需要从沟通中,会议交流中,不断实现迭代。

c.结果第一,不强调文档,突破束缚,软件的最终结果才是重点,文档等都是为软件开发本身服务的,完成了一个优秀的、质量可靠的软件才是敏捷开发的重中之重。

d.迭代开发,迭代是敏捷开发的核心,不断迭代测试的过程,实际上就是精益求精的过程,正和现在这个社会的工匠精神相吻合。

e.整合不易,快速迭代,就需要分割整体业务,对于复杂的客户需求,如何兼顾分割与整体,并不容易,这个需要在项目设计之初考虑到。

4,敏捷开发管理方法

敏捷开发的管理方法有很多种,比较广泛应用的有XP、Scrum等。既然都是敏捷开发,他们都有共同点,强调高速响应变更以人为主重视团队成员自身发展倾向采用迭代式的软件开发生命周期模型

敏捷开发中,XP和Scrum的区别:

a.迭代周期不同,XP的每个Sprint(冲阶)的长度大概为1~2周,而Scrum为2~4周。
b.迭代周期内专一性不同,XP在一个迭代中,如一个User Story(用户素材,也就是一个用户需求)还未实现,可以考虑另外需求替换,原则是时间当量相等。而Scrum不允许这样,一旦迭代开发会毕,任何需求不允添加进入,并有Master严格把关,使团队不受干扰。
c.User Story优先级机制不同,XP必须遵守优先级(当然需要先确实优先级),Scrum更灵活,可以不遵循优先级。比如依赖关系中,虽然 US-A高于US-B,但由于要完成A需依赖B,则需要先开发B。
d.实施中是否采用工程方法问题两者做法不同,Scrum这点上没有工程实践处方,体现的是以人为本,自我创造;而XP必须严格按TDD,自动测试,结对编程,简单设计,重构等约束团队,似乎看起来XP的方式束缚了团队,但需要看这个约束的程度,过细则会让人感觉与“以人为本,自我创新”思想不符,但优点就是一定程度上的规范更有利于保证软件质量。
一个让人困惑的矛盾, 因为xp的理念,结合敏捷模式,表达给团队的信息是“你是一个完全自我管理的组织, 但你必须要实现TDD, 结对编程, ...等等”

通过区别,看出: Scrum非常突出Self-Orgnization, XP注重强有力的工程实践约束

5,总结

通过了解传统瀑布开发模式和新型敏捷开发模式的差异,理解敏捷开发的在现在快节奏时代有更好的适用性:唯快不破,以人为本。

相信每个软件从业者心中都向往着开放、包容的环境中开展工作,并不是我们要求高,而是我们不喜欢被束缚,不喜欢做一个机器式开发者,我们需要的是尊重和创造。那么来学习敏捷开发吧!

最后介绍了敏捷开发的两种常用管理方法:XP和Scrum。

时间: 2024-10-12 02:42:55

[敏捷开发实践](1) 认识敏捷开发的相关文章

MVC5 网站开发实践 2.2、管理员身份验证

上次完成了管理员的登录,这次要解决对管理员登录后的验证,采用AuthorizeAttribute属性的方式.之前还要解决几个问题,然后才重写验证类,最后稍微改一下界面. 目录 MVC5 网站开发实践  概述 MVC5 网站开发实践  1.建立项目 MVC5 网站开发实践  2.后台管理 MVC5 网站开发实践  2.1.管理员登陆 一.解决问题Home控制器错误提示 @泰德  在评论中说浏览器中打开存在以下错误.这是因为项目中存在多个Home控制器,但系统不清楚你要访问的是哪个控制器的内容,因此

MVC5 网站开发实践 2.1、管理员登陆

目录 MVC5 网站开发实践  概述 MVC5 网站开发实践  1.建立项目 MVC5 网站开发实践  2.后台管理   1. 创建SHA256加密方法. 在Data项目中添加文件夹[Security],在文件夹中添加类 [Encryption],在类中写一个SHA256加密方法. using System; using System.Security.Cryptography; using System.Text; namespace Ninesky.Data.Security { /// <

MVC5 网站开发实践 2、后台管理

目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1.建立项目   从这一部分开始做后台管理,首先是基本框架的 一.Data项目 1.项目添加EntityFramework引用 在Data项目的引用上右键-> 管理NuGet程序包. 在弹出的窗口中选择 EntityFramework 安装 2.添加排序枚举 在Data项目上点右键新建文件夹Type.在文件夹内添加类[OrderType],代码如下 //创建2014.12.8 namespace Data.Types { /// <s

敏捷开发实践(一)--谈谈我对敏捷开发的理解

随着敏捷开发越来越流行,人人都在谈敏捷,人人也都在学习scrum等敏捷开发方法...当然,自己也是敏捷开发的实施者和受益者. 背景 我们公司引入敏捷开发的时间并不长,在实施敏捷的过程还存在一些问题,自己在实施敏捷的过程也存在很多的疑惑(毕竟原来没有学过,和真实的经历,体会),所以最近一直在学习敏捷,看敏捷的视频和阅读相关资料,同时结合自己实施敏捷的经验,通过分享博文进行一下简单的总结,目的有四: 1. 详细的介绍和学习一下敏捷开发 2. 和CSDN的大牛们一起分享交流,学习,提高一下 3. 总结

敏捷开发实践总结?EUMs

为了更好的阅读体验,欢迎访问 作者博客原文 项目回顾 项目背景 EUMs(End User Monitor System)是一个在线的物资跟踪监控系统.由ThoughtWorks团队为Unicef(United Nations International Children's Emergency Fund,联合国儿童基金会,客户)提供的一套完善的软件交付服务. 该系统为资助物资的跟踪与监控提供了完整的网络解决方案.整个流程涵盖了Unicef对物资来源的管控.库存管理.物资下发与跟踪.Unicef

《HP大规模敏捷开发实践》读书笔记

读这本书的心得,敏捷是实践出来的,哪怕不懂srcum**等方法,只要坚持心中的价值观,朝一个方向改进,哪怕不能"任何时候都拥有符合发布要求的代码",今天比昨天好,也是成功. 通过业务分析确定开发目标 为什么要做敏捷,一定是存在问题. 可以从业务状况(成本和时间资源)和战略目标(价值主张)两方面进行业务现状自查 不是核心的价值主张却耗费最大的作业成本的业务就是改进的目标 架构的重要性 好的架构会适应变化和易于维护,能大幅提升开发维护效率 架构守护者对架构的演进和维护负责 从持续集成和质量

敏捷开发实践之Scrum方法运用

摘要:目前软件开发除了强调产品质量,同时对产品能够快速发布并且迅速适应市场变化的要求也日益强烈.为适应这种开发环境和市场需求,传统的软件开发模式已被敏捷开发模式所替代.本文介绍敏捷软件开发中的Scrum方法,并结合实际问题,分析Scrum方法在实践中的运用. 关键词:敏捷开发;Scrum 产品质量和开发效率一直是软件产品开发的关键.随着科技和经济的发展,软件的市场环境和用户需求不断发生变化,这对软件产品的快速发布提出很高的要求.传统的瀑布模型.螺旋模型.原型模型等已不能适应越来越复杂和不断变化的

TFS 2015 敏捷开发实践 – 看板的使用

看板在现代应用开发过程中使用非常广泛,不管是使用传统的瀑布式开发还是敏捷开发,都可以使用看板管理.因为看板拥有简单的管理方法,直观的显示方式,所以很多软件开发团队选择使用看板进行软件开发管理.本文不在对看板管理理论进行过多的赘述了,只是在这里介绍一下如何使用TFS的看板功能.最新版本的TFS提供了功能强大的电子看板(最新发布的TFS 2015 Update 2.1中,也包含了对看板功能的提升),并且能对看板的显示进行大量定制,而且还加入了泳道的功能.开发团队可以根据自己的需求来定制属于自己团队的

敏捷软件开发?什么是敏捷?

敏捷软件开发?什么是敏捷? 敏捷开发(Agile development)是如今软件工程项目中一个大热的词汇,很多大大小小的开发团队都喜欢高举敏捷开发的旗号,搞出一套显得大大不同于传统的运行模式来区分自己的团队博取眼球,他们手头所做的事情,只是套用一套流行的敏捷开发模板,如Scrum,Crystal,XP到自己的开发流程中,就认为自己的整个开发体系会有一个质的飞越.然而他们是否能真正驾驭所谓的敏捷开发?他们是否理解了敏捷开发的核心理念?这都是要划一个大大的问号. 笔者我在刚刚接触这个词的时候,下