您的位置:首页 > 其它

敏捷软件开发流程【转】

2016-01-06 15:01 621 查看
敏捷软件开发的倡导“个体和协作胜于过程;可工作的软件胜于完整的文档;客户协作胜于合同;响应变化胜于遵循计划”的软件开发方式,以人为核心,注重交流和协作,强调软件可持续发展,实现频繁交付对客户最重要的价值。

  敏捷软件包含敏捷项目管理、敏捷需求管理和敏捷软件方法三个部分。

  一、敏捷项目管理

  敏捷是一种态度而不是一个流程,是一种氛围而不是方法。敏捷项目管理强调的是沟通:与客户之间的沟通、项目成员之间的沟通。基于这一思路,敏捷项目管理更重视与“人”的作用,要求项目的组织形式具有以下特点:

  1,很强的文化适应性。

  2,最低限度的规则,鼓励自我组织,并结合自律以遵守哪些规则。

  3,很好的协作和沟通环境。

  从以上三点可以看出,敏捷项目管理对人的限制很低,这与传统软件工程中把“人”做为生产流水线上的一个环节进行管理的方式截然不同!软件业是科技密集型的产业,软件产品的最终质量更多的取决与软件开发人员的素质和态度,而不是软件的开发过程和开发设备,这也是软件业与传统行业差距最大的地方。敏捷项目管理的最终着眼点便是如何提高软件开发人员的素质和如何激发软件开发软件的热情,从而提高最终软件的质量。

  但是从另一方法,采用敏捷项目管理,也必然要求项目成员具有更高的专业技能和专业素养,以防止宽松的环境导致的消极怠工等现象。

  二、敏捷需求管理

  软件开发的最终着眼点是如何满足用户的需求。这些需求通常是复杂的、模糊的,甚至是不确定的。敏捷需求管理采用增量交付的软件开发流程,借助其与客户持续沟通的特点,不断的校准软件的开发防线,逼近用户的最终需求,使最终开发出来的软件满足客户的要求。

敏捷软件开发流程【转】 - 浅色天空 - 浅色天空

  增量交付的软件流程如图1所示。该流程最重要一点在于“增量交付”,软件以模块化的方式进行开发,通常一个模块的开发周期是一至两周。每个模块开发完成后,按照正规的发布流程发布,交付给客户试用。在客户使用过程中,了解客户对当前完成功能的意见。然后与客户沟通,一起制定下一轮开发的计划。

  该流程的最大好处在于客户全程参与软件的开发,把握软件的目前的开发状态,确保软件实现的功能能够满足用户的需求。

  但是另一方面,增量的交付也对软件开发技术提出了更高的要求:模块化的开发方式要求更彻底的解耦合;需求的变化要求软件架构具有更高的灵活性;增量交付要求对发布过程的高度自动化等等。

  三、敏捷软件方法

  对应于以人为本的敏捷项目管理和以增量交付的敏捷需求管理,敏捷软件开发提供很多具体的方法指导软件的开发实践,这些方法包括重构、结对编程、测试驱动、持续集成等,以下简要介绍重构和结对编程。

  1,重构。

  重构即在不改变既有代码的行为的前提下,改善代码的设计。重构的目的是为了消除代码重的“坏气味”,从而达到放置代码腐烂的目的。

  常见的重构的手法有“重命名”、“抽出新方法”、“包装成员”、“将方法在继承层次中移动”等。

  重构通常以设计模式作为目标,以单元测试作为保证代码正确性的手段。

  2,结对编程

  结对编程即两个开发人员使用一台电脑进行开发,通常是一个人操作另一个人,另一个人辅助,一段时间后,两人交换。这种看似降低了一半的开发效率开发方式具有以下优点:

  第一,所有的决定都是有两个人共同做出的,并且所有的代码是在两个人的配合下写出的,这大大降低了Bug的产生几率,从而缩短了调试所需要的时间。

  第二,所有的代码至少有两个人了解,这降低了代码对开发人员的依赖性,防止开发人员的离职对项目造成的影响。

  敏捷软件开发为现代商用软件量身打造。经过这几年的发展,无论在项目的开发方式,还是在具体实践方法上,都有形成了自己的特色,与传统的开发方式分庭抗衡。

  敏捷软件开发不是一个具体的过程,而是一个涵盖性术语(umbrella term),用于概括具有类似基础的方式和方法。典型的敏捷过程模型有:

  1、XP(极限编程,eXtreme Programming)、

  2、FDD(特性驱动开发, Feature-Driven Development)、

  3、Scrum

  4、ASP(自适应软件开发Adaptive Software Development)

  5、DSDM(动态系统开发方法,Dynamic System Development Method)以及

  6、AUP(敏捷统一过程,Agile Unified Process)

  7、Crystal等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: