敏捷开发入门篇

来源:互联网 发布:pmp培训 知乎 编辑:程序博客网 时间:2024/06/06 10:00
   最近一直在跟着做项目,根据开发过程的需要对敏捷开发做了简单了解,在以前学习中也曾遇到但都不是重点学习内容来掌握所以一直没总结过,今天就做入门篇简单地总结下,重要的是了解敏捷开发的思想即可。


1. 为什么会有敏捷开发


        传统的软件开发流程,比如瀑布流程(见下图)从需求、设计,到开发、测试和部署,是一环套一环的,结束一个环节才能开始下一个,中间过程很长,且不允许有变更,等到交付的时候才发现已经与客户的目标相差太远了。这时,要想弥补就要付出巨大的代价,很多工作需要重来,从而产生了巨大的浪费。 做员工很累很没意思,像个机器人,要不停地接受命令,没有自主权,明明知道怎么走却要等命令才能行事。当老板更累,要根据情况不停地发号施令,还要考虑到员工的情绪。


2. 什么是敏捷开发


        敏捷开发是一种开发方法学,可以应对客户快速变更的需求。它强调以人为核心,采用迭代的方式,循序渐进地开发软件。在敏捷开发过程中,软件项目被划分成多个相互联系但也能独立运行的子项目。这就使得每个子项目在开发、测试直至完成的过程中一直保持可使用的状态。这个过程实际上就是要形成开发过程中团队之成员之间更加有效的合作关系,使其灵活性更高,以适应不断变化的需求。


        敏捷开发的每一个迭代就相当于图中的一个小箭头,由于开发工作能够根据需求的变化不断调整,所以整个过程中浪费很少。


3. 敏捷开发的特点


敏捷开发方法的核心思想概括起来就是“适应变化”和“以人为本”

(1)敏捷开发方法是面向人的而非面向过程的。


        敏捷开发认为人是软件开发中最重要的因素,而且人工作的环境很复杂。它希望使软件开发工作顺应人的天性而非逆之,强调软件开发应当是一项令人愉悦的活动,因此它们没有统一的管理人员,注重调动人的积极性、主动性和创造性,并培养人在工作中的自豪感。敏捷开发的理念就是信任开发团队能够很好地完成任务,所有的管理都是围绕这个理念展开的。

(2)敏捷开发方法是“主动适应的”而不是“预先设定的”。


        瀑布模型等传统软件开发过程试图对一个软件开发项目在很长的时间跨度内作出详细的计划,并形成详细的文档,然后依照计划进行开发。这类方法在计划制定完成后拒绝变化,后期的需求变化将会花费极大的代价。而敏捷开发方法则乐于迎接变化,其实,它的目的就是成为适应变化的过程。另外,据统计,很多软件产品的功能中,客户常用的功能只占 20%左右,其他大部分功能是客户很少使用甚至基本不用的。在这种情况下,采用瀑布方式在详细设计阶段所设计出的功能,其实很多是不必要的,这将浪费很多资源。在敏捷开发中,要求客户始终参与整个开发过程,这使得敏捷团队能不断地获得客户反馈,不断适应需求的变更,从而使最终的产品充分符合客户的要求,也极大地减少了资源的浪费。敏捷开发的理念认为未来的开发过程是不可详细预知的。


4. 敏捷开发的优点


        敏捷开发过程与传统开发过程的最大的不同之处在于,敏捷开发强调尽可能让每个成员都做自己认为有趣的事情,团队是有激情、有活力的,能够适应更大的变化,生产出更高质量的软件。


        敏捷联盟的发起人 Martin Fowler 和 Jim Highsmith 曾经这样解释过:敏捷开发所追求的是一种平衡——我们也建模,但不仅仅是画几个模型图存放在少人问津的项目文档库里;我们也需要文档,但从不浪费纸张去编造那些极少使用而又没有保存价值的大部头;我们也做计划,但我们同时也认识到在这纷繁复杂的环境中做计划是困难的。



        总而言之,敏捷开发的本质:第一,是一切活动以价值为导向;第二,是以人为本。以价值为导向可以帮助我们大大提高软件开发的效益,以人为本的精神可以帮助我们大大提高软件开发的效率。 


 

0 0