what is Agile development ?

在英国找工作的这段时间,接触到最多的词就是Agile。基本软件工程方面的工作要求都会提到Agile,参加过的几场面试,面试官也问到啦一些有关Agile development的一些问题。今天打算借这篇博客介绍下什么是Agile development.

为了更清楚的介绍Agile,我想先介绍下更传统一种软件开发模式——Waterfall,然后来个对比。


1.Waterfall 的工作流程可以用wiki的一张图描述,基本就是从:需求分析--系统设计--实现--测试--维护。

 what is Agile development ?_第1张图片

waterfall的这种实现方式有什么问题呢?它在整个软件开发过程中没有涉及到需求和设计的变更,没有和客户以及最终的用户有一个交流的过程。 在这种情况下,如果发现最终实现的效果并不能满足客户的需求,那么整个流程就要重新来一遍,这样就会导致项目延期,同时也会增加预算。


2. Agile开发过程是由多个waterfall的iteration组成。相对与Waterfall这种从上而下的流水式软件开发methodology, Agile则更加灵活。

交流在Agile团队中尤其重要,不管是项目团队成员之间的交流还是与客户之间的交流,有效的交流可以提高项目的进度以及少做很多无用功。Agile很看重与最终用户的密切交流,以求让客户参加到开发的每一个进程中来,这样就能有效快速的沟通以开发出满足客户要求的产品。因此,相较与waterfall,Agile节省啦开发用户不需要东西的时间。

Agile的几点重要的特性可总结如下:

  • Individuals and interactions over processes and tools (项目成员以及成员之间的互动比流程和工具重要)
  • Working software over comprehensive documentation(软件开发本身比综合文档重要)
  • Customer collaboration over contract negotiation(开发工程总与客户的交流合作比合同似的谈判重要)
  • Responding to change over following a plan (对各种变化的快速反应比依循计划重要)

Agile Sprint Backlog是Agile管理模式中一个重要的概念,翻译过来主要就是一个阶段性的任务列表,从分析用户需求,然后根据优先级划分任务列表,每个任务都制定一个执行计划,即每个时间段需要完成什么, 分配给谁去完成,项目组成员根据计划来完成各种任务并更新任务进度。

Agile是一个好的软件开发管理模式,但是并不是完美的。在Agile模式中,所有的项目团队人员是被认为可以随意调换的。一般的项目团队里面,每个成员都有自己擅长的方向,例如,有人擅长设计,有人擅长测试,有人擅长前端开发,有人擅长后台开发。对于一个Agile团队来说,擅长前端开发的人也可能会被拉去做设计、测试之类的,做设计的也可能拉过去做开发。


你可能感兴趣的:(程序猿)