敏捷开发实践(1) — 走进敏捷软件开发

敏捷开发是什么

敏捷软件开发是一个概念意义上的框架,用来取代软件工程项目的概念;它强调在项目的整个生命周期中,拥抱并促进由于软件进化式的发展所带来的变化。

简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发中涵盖多种开发元素:迭代开发,增量交付,测试驱动,结对编程,Usecase驱动,持续集成,重构等。我们知道软件开发项目中式样变更,需求变更是影响开发进度、成败的重要因素,而敏捷开发元素的利用可以有效地规避这些风险、变化。学会如何识别变化的大势,并在可能的时候,促使变化向好的方向发展。这是软件项目进化的趋势。

最后我们看看敏捷开发宣言

  • 个体与交互 重于 过程和工具
  • 可用的软件 重于 完备的文档
  • 客户协作 重于 合同谈判
  • 响应变化 重于 遵循计划
同时,遵循以下准则

  • 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
  • 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
  • 要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
  • 项目过程中,业务人员与开发人员必须在一起工作。
  • 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
  • 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
  • 可用的软件是衡量进度的主要指标。
  • 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
  • 对技术的精益求精以及对设计的不断完善将提升敏捷性。
  • 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
  • 最佳的架构、需求和设计出自于自组织的团队。
  • 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。

为什么要使用敏捷开发

对于有一定经验的软件开发人员,是否有过疲惫应对式样变更,需求变更而导致返工的经历。

变化的原因无非是

  • 项目开始阶段对需求并不明确,就急于开发设计
  • 产品已不能按照项目启动时定义的要求发布
    • 最终出来的产品往往和最初设计,构思的完全不同;变更之前定义的要求/需求将是很正常的事情
    • 大家都不关心产品的制作过程,最初的成果物往往都是废品;然后是在废品上的修修补补
      • 软件开发以外的部门并不认真对待软件开发,一味地要求结果,要求性能
      • 软件确实是可以重新编写的,但是已经用掉的工数是不会取回的
  • 如果不试着先做做,是不知道是否能实现
    • 新的硬件是否能按照式样中那样描述的工作,达到理想的性能指标
    • 团队成员是否都熟悉开发工具,达到熟悉程度为止的培训要花相应的时间
    • 软件架构是否稳定,需要早期验证设计的合理性

综上,如果按照我们习惯的瀑布流式的开发方式,是否能应对这些变化的因素呢?我们来看一下瀑布式开发的典型V字型模型。

v-develop

一开始,我们先有完整的用户需求,定义,接下来做需求分析,概要设计,详细设计;然后到编码,单元测试,集成测试,系统测试,验收。看似很理想的过程,可是在实践当中常常出现这种这样的问题。

首先我们的用户也许并不了解自己需要什么,所以常常到了编码阶段,甚至是测试阶段,才提出各种各样的修改;对于用户很轻松的事情,可对于我们开发者来说简直就是地狱。另外,产品开发都是希望尽快完成开发任务,尽早投放市场。可是开发的风险是不可避免的,一般软件开发都很难按时按质完成。

降低风险是敏捷开发中很重要的一环。机能分割,迭代式开发等敏捷元素的利用,有效地降低了开发中存在的风险。一方面随着迭代式开发,可以随时验证架构设计的稳妥性,另一方面可以应对即时的需求变更。

敏捷开发的现状与将来

敏捷开发概念从2004年初开始广为流行。近几年,敏捷软件开发在软件工业界有了良好的发展势头并逐渐被推广开来。一些著名的公司如 Google, Microsoft 和 Yahoo 和众多的中小公司都已经开始采用敏捷开发。

敏捷方法给这些企业也已带来了巨大的收益。据业内资深人士和长期从事敏捷咨询的服务公司透露,采用敏捷开发的团队一般会提高3-10倍的效率,软件的质量也有了更加可靠的保证。同时,敏捷开发的应用也给团队内的每个成员提供了良好的发展机会。他们的技术和合作水平都能得到响应的提高。

欧美软件企业中,有近半企业已采用敏捷方法进行开发。大多数尚未应用敏捷的企业,也都对其有所了解,而且很多在计划实施。中国的外企,外包公司和许多知名企业也都开始采用了敏捷方法。

敏捷开发不仅适用于少人数的团队协作,在大规模开发,离岸开发中也发挥着重要的作用。虽然它不是软件开发领域中的“银弹”,但是理解了其精髓,在降低产品发布的风险,构建协作团队等方面都是有帮助的。

同时,敏捷总是在不断发展演变,因此,没有一个人能保证目前的敏捷方法都是正确的。每个采用敏捷开发的团队都可以通过发现并形成自己的想法和最佳实践,对敏捷开发做出自己的贡献。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值