如何理解敏捷开发?

一、什么是敏捷开发?

敏捷开发,以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

二、敏捷开发的特点

敏捷是以人为中心的软件开发方法,保持简洁的代码,经常性测试以及及时地交付应用的功能模块。正如敏捷宣言所提到的那样。

敏捷宣言强调的敏捷软件开发的四大宣言是: 
1.个体与交互高于流程和工具 
2·工作软件高于理解文档 
3·客户协作高于合同协商 
4·变化响应高于计划遵循 

结合软件研发实际,四大宣言可以这样理解:

个体与交互胜过过程与工具

       方法和工具是死的,人是活的,如何没有优秀个人和团队协作,再强大的方法和工具都是摆设。一个使用普通工具的优秀人员会比使用优秀工具的普通人员做得更好,一个具有合作精神、自组织的团队比通过过程规范的团队工作得更好。敏捷中每个成员都需要定时和团队的其他成员一起查看团队的整体进度,计划下一步工作,并一起探讨所遭遇问题的解决方案。自组织团队通过个人能力和协作能力,可以自发的通过各种途径解决开发过程中遇到的问题。

       虽然我们致力于个体和交互,但并不代表就不需要过程与工具了。Scrum、XP等方法本身也有一些方法和过程,每日构造等敏捷实践也需要工具的支持,需要哪些过程和工具由自组织团队制定,而不是由领导制定。

工作软件高于理解文档 

       在合同中有时会看到分别在需求、设计、开发、测试阶段提供什么文档,支付多少金额等内容,而这些文档对用户来说是不是真的有价值呢?冗长文档对客户来说并不重要,其重要程度比不上一个可以工作的软件。冗长的文档对开发也不重要,没有人有时间去读,而且也不符合敏捷开发的特性,对研发团队来说最好的文档就是代码和团队,通过频繁的提供可以工作的软件,不断地搜集市场反馈,保证软件的市场时效性。

       虽然我们致力于提供可供做的软件,但并不是不要文档。我们在开发过程中仍然需要进行内部交流, 也需要和客户交流,我们仍旧可能需要制作原型,书写一些主要需求和算法,只要可以满足研发团队需求就行。

客户协作高于合同协商 

       寻求客户合作的价值重于对合同的谈判。软件开发的最终目标是提供给客户满意的软件,而只有客户才更清楚怎么样才能满意,敏捷开发提倡客户和开发团队密切的在一起工作,经常性的根据市场需求对软件提供反馈。各种不同的敏捷方法都会利用短期迭代,通过尽早提供软件来达到与客户频繁沟通和反馈的,这也可以把问题及早暴露出来,以免隐藏的问题在后期造成更大的影响。

       虽然我们致力于客户协作,但为了双方利益和需要仍旧需要进行合同谈判。

变化响应高于计划遵循  

       敏捷项目承认开发过程中的不确定性,所以不会在开发中制定长时间的复杂计划,它们的成功都是建立在现实反馈的基础上的。每次迭代都是基于上一迭代的完善基础之上进行的,通过不断的响应变化来消除开发中的不确定性。

       在敏捷开发时,我们不应该为了让自己的项目看起来像是按照计划好的样子循序渐进,而花费大量的时间让研发团队去附和计划。相反,敏捷需要的不是计划,而是规划。

       敏捷开发方法是“规划-执行-调整”、“规划-执行-调整”。一个项目的不确定性越高,敏捷开发方法对取得成功就越是至关重要,不断学习和调整是敏捷开发的核心。

       像3355中5会那样,计划会、sprint评审会、回顾会、每日立会、Product Backlog的梳理(发生在整个SCRUM周期的任何时间)。阶段性的召开会议,提出当前阶段的问题,根据昨天完成的情况来做出新的调整,根据上一个迭代对新的迭代功能等进行规划。在sprint评审会上,团队除了对当前sprint完成的故事进行show case还需要对剩余的任务卡进行梳理,可以让团队有机会去回顾和识别版本发布的风险。

敏捷开发的12条原则包括: 
1.通过早期和连续型的高价值工作交付满足“客户”。 
2.大工作分成可以迅速完成的较小组成部门。 
3.识别最好的工作是从自我组织的团队中出现的, 
4.为积极员工提供他们需要的环境和支持,并相信他们可以完成工作。 
5.创建可以改善可持续工作的流程。 
6.维持完整工作的不变的步调。 
7.欢迎改变的需求,即时是在项目后期。 
8.在项目期间每天与项目团队和业务所有者开会。 
9.在定期修正期,让团队反映如何能高效,然后进行相应地行为调整。 
10.通过完成的工作量计量工作进度。 
11.不断地追求完善。 
12.利用调整获得竞争优势。

大致来讲,12宣言的核心内容就是将一个软件分成多个迭代去完成,在每个迭代开发时,坚持以人为本的原则,在研发过程中坚持人比工具更重要。在研发中坚持完善工作,拥抱市场拥抱变化,根据市场来调整软件的功能。快速变化,高效的做出响应。不断地调整软件,保持市场时效性。

       

       

 

你可能感兴趣的:(如何理解敏捷开发?)