敏捷开发

传统开发

瀑布模型

优点:

瀑布模型中把开发过程细分成多个步骤, 每个人各司其职,
开发人员只需按照文档完成需求即可

缺点:

- 需要编写过多的文档
- 开发周期长,每个步骤都需要等待上一个步骤完成后才可
以开展工作
- 需求响应慢,每有一个新需求,都需要完整地走一遍流程
- 用户没有参与开发过程,不能很好地知道开发出来的产品
有没有符合客户的要求

敏捷开发

敏捷开发是什么

敏捷开发不是一套明确的流程,也不是一种方法或者工具,敏捷开发是遵循着敏捷宣言的一种思想, 所有遵循这种思想的实践都可以称为敏捷开发.

敏捷开发的核心思想:以人为本,专注交付对客户有价值的软件。在高度协作的环境中,使用迭代式的方式进行增量开发,经常根据反馈进行思考、反省和总结,不停地自我调整和完善,让软件开发与交付轻量而敏捷。

敏捷宣言
  • 个体和互动 高于 流程和工具
  • 工作的文件 高于 详尽的文档
  • 客户合作 高于 合同谈判
  • 响应变化 高于 遵循计划

敏捷开发怎么做

敏捷开发是一种思想, 那么XP(极限编程), Scrum, DSDM等就是这种思想具体的实践

XP

XP是一种使用于在需求不明,或快速多变的情况下进行软件开发的轻量级方法学,其核心价值观为:

  • 简单:只做必做的、最小设计、持续重构
  • 沟通:及时有效,目的是一起创造最好的解决方案
  • 反馈:严重承诺,尽快交付,认真听取反馈并及时改进
  • 尊重:互相尊重,通过努力工作获得认同
  • 勇气:如实反馈进展和预估,不为没完成的计划找借口,
    勇于根据根据情况随时调整工作方式

XP的核心实践:

  • Whole Team: 用户参与到开发团队, 协作开发更好地开发出用户所需要的功能
  • Planning Game:用户通过用户故事提出需求,开发人员作出发布计划和迭代计划并作出承诺如期完成任务
  • Customer Test:验收测试, 由客户来检验系统是否完成了既定的功能
  • Small Releases:最小发布, 即每开发出一个可正常工作的功能就可以发布
  • Collective Code Ownership: 集体代码所有权, 项目中的每个人都可以看到项目完整的代码
  • Coding Standards:编码风格统一
  • Sustainable Pace: 可持续的开发速度
  • Metaphor:全项目命名风格统一
  • Continuous Integration:持续集成
  • Test-driven development:测试驱动开发,编写覆盖率高的测试用例
  • Simple Design:用最简单的设计来完成工作
  • Refactoring:重构,去掉冗余代码,提高代码质量
  • Pair Programming:结对编程, 由两个程序员完成同一个需求, 可以再实现功能的同时review代码

XP的过程:从用户根据用户故事提起需求后, 进行架构刺探, 功能刺探, 然后指定发布计划, 每次迭代发布周期为1-2周, 开发出完整功能后进行验收测试, 通过方可发布.


Scrum

由用户提起需求, 产品经理分析用户需求做出产品订单后, 进行冲刺计划会议, 制定每次冲刺需要完成的需求, 而一次冲刺的周期为3-4周,在冲刺过程中,成员自由领取冲刺订单,冲刺订单中包含着细化后的需求信息.冲刺期间每日都要召开站立会议,成员们各自讲述自己昨天你完成了哪些工作?今天你打算做什么?完成你的目标是否存在什么障碍?而在冲刺结束后, 同样会有冲刺回顾会议,会议上所有成员对这次会议进行反思

XP VS Scrum

XP相对于Scrum:

  • 迭代周期: XP迭代周期为1-2周, Scrum迭代周期为3-4周(现在多为1-2周)
  • 应付新需求: 在XP中, 有限制地允许用户更改需求, 而Scrum中则不允许这样做, 一旦需求确定, 不可更改
  • 开发过程: 在开发过程中, XP严格按照需求的优先级来开发, 而Scrum可以不按照需求优先级开发
  • 实施规范: Scrum实施的过程中, 并没有规定采用XP中要求的结对编程、TDD、简单设计等行为

精益

拉动式生产, 即当有需求的时候才开始生产, 这样做可以避免资源浪费,
自动化生产, 提高生产的效率

为什么要使用敏捷开发

在传统瀑布式开发的过程中存在的问题:

  • 项目文档繁重, 在编写文档上花费了过多的时间
  • 用户对开发进度一无所知

而在XP和Scrum中我们可以发现其共同点, 这也是敏捷开发的优势:

  • 持续集成, 产品一直处于可运行状态, 而开发人员只进行增量开发
  • 开发前, 不需要编写太多的文档

总结

并不是说敏捷开发就一定要比传统的瀑布式开发要好, 只能说各有所长, 而敏捷开发更适用于当前的软件开发当中.

posted on 2018-06-05 10:59  Dear、  阅读(250)  评论(0编辑  收藏  举报

导航