敏捷软件开发最近几年越来越火。跟传统软件开发相比有什么优点呢。今天我们就来聊一聊。

首先我们来看下什么叫做敏捷。

敏捷软件开发过程

软件开发过程是指设计软件开发过程中涉及的一系列活动,指导开发组一步一步的进行软件开发。

包括传统的瀑布过程、螺旋过程、原型过程、敏捷过程等。

敏捷则是一类过程的统称。之所以把他们都称之为敏捷,是因为它们有共同的特点。

敏捷过程讲究快速迭代快速试错,将一个大的项目分解成一个一个独立的小项目,每个项目实现一定的功能,每个项目的成果物

都是可以运行的软件。经过多次迭代之后完成整个项目。

这里有两个关键点:

1.独立的小项目

2.每次交付可以运行的软件。

与瀑布开发方法的对比:

1.粒度更小,更容易施加控制,降低复杂度。

2.更好的适应需求的变化。传统瀑布方法需要经历需求获取、需求分析、设计、开发、测试、交付、运维等。上下步存在严格的依赖关系。一旦中间有任何一步出现问题则会导致难以估量的错误,越到后期修改的成本越大。而敏捷方法及时的引用开发和测试以及客户参与,可以及时调整偏差。及时出现问题也只需要付出很小的代价。因此更灵活。

3.人的认知过程是循序渐进的,敏捷方法推崇增量式需求获取。符合人类的认知习惯。经过多次迭代对需求认识越来越清晰,可以及时纠正原有的认知错误。而瀑布方法妄图在开始时一次性花费巨大的代价获取所有需求。而且获取的需求也不一定是准确和完整的。

4.瀑布方法上下步是串行的,具有严格的次序关系。因此在执行前面的步骤时负责后面任务的人员都处于闲置状态。人员利用率不足。

敏捷宣言

1.个体和交互胜过流程和工具

面对面沟通是最有效率的方式,人才是最重要的。胜过繁琐的流程和工具。

2.可以运行的软件胜过面面俱到的文档

文档只是工具不是结果。不能为了文档而文档。而应该将主要精力放在如何构建正常运行的软件上。

3.客户参与胜过合同谈判

多和客户沟通,让客户参与到项目中来,有助于交付满足客户期待的软件。

4.响应变化胜过遵循计划

拥抱变化,面对变更应及时调整策略

敏捷方法是一系列过程的统称,都包括哪些过程呢?

XP(极限编程)、RUP(统一软件过程)、Scrum等。

其中scrum在近些年越来越流行。因此我们专门介绍下。

Scrum英文意思是橄榄球,这里用橄榄球运动来代表这种开发方法激烈、刺激。

Scrum是敏捷的一种,因此符合敏捷过程的所有特点。但是敏捷中的每种方法在具体实施时还是有一些不小的差异。

这里我们着重介绍Scrum。

Scrum讲究以人为本,采用迭代方法、循序渐进的开发软件。

具有三种角色:

Product Ower:产品owner,类似于产品经理。负责收集需求,定义优先级,确定需求实现程度

Scrum Master: Scrum教练,负责项目按照scrum流程执行,处理在项目执行中遇到的各种困难和阻力,把控质量、跟踪进度。类似于传统PM的角色但又有比较大的差异。

Scrum Team:Scrum开发组,在scrum的框架下执行项目开发工作。

Sprint

英文是冲刺的意思,代表一次迭代过程。每次迭代2-4周。

几种活动:

Sprint plan meeting:冲刺计划会议,在每次冲刺前进行。由scrum master product ower、scrum team和高层参加,时间一般为

4-8小时。Product owner将product backlog中的任务划分优先级,同时进行需求澄清。scurm团队成员对本次sprint要完成的user story进行分解成task,挑选感兴趣的任务并接进行工期估算。

Sprint daily meeting: 每日站会,两个主题:昨天做了什么,今天计划做什么。进度如何。

Sprint review :sprint 评审,每次冲刺结束时由Scrum team将本次冲刺完成的任务进行展示,检验执行情况和质量。长度控制在两个小时左右,不需要ppt。与会人员根据sprint计划会议的目标来评审目标的完成情况。

Sprint 回顾会议:回顾整个冲刺,总结和反思,促进团队持续成长。

燃尽图:横轴表示sprint花费的时间,纵轴表示sprint中所有的任务。燃尽图可以体现sprint的进度。

User Story:sprint backlog中的每一项都使用一个User Story来描述。一个User Story就是站在用户的角度对系统的每一项功能的一项简短描述。User Story粒度不要太大,一般需要在一个sprint内完成。Scrum team会将User Story拆分成一个或多个task。

scrum开发流程。

Product Owner在项目开始时将任务放进Product backlog,由于需求是增量式获取的,因此这个过程也是增量式的向Product backlog中添加任务。

在每次sprint开始时,进行sprint plan meeting,会议上由product owner确定product backloug中任务的优先级,scrum团队决定本次sprint要完成的任务,将任务分解成工作项并进行工期估算,同时将任务从product backlog转移到sprint backlog。冲刺阶段每日进行sprint daily meeting,每次在15分钟左右。两个主题:昨天完成了什么,今天计划做什么。有困难提出但会后和相关干系人讨论,不占用会上时间。冲刺结束时进行冲刺评审,对本次冲刺完成的任务进行演示。检查完成情况。冲刺评审之后进行冲刺回顾,回顾过去的冲刺存在的问题,提出改进方案。重复以上过程,直到完成所有任务。

Scrum与加班的关系

敏捷不提倡加班。敏捷的开发不是一直以冲刺的力量奔跑,而是要求团队成员密切配合步调一致,使整个项目有序的向前推进。

加班从长远来看对整个团队的士气和战斗力是不利的。

加班的源头,一是因为计划不充分、不准确,中途有不可预料的变化。scrum的流程、每日sprint会议、sprint计划会议等都是为了克服传统软件开发的弱点。这些弱点包括:流程无序、管理困难、难以变更、难以拥抱变化。另一个原因是文化氛围或者观念,认为只有

加班才能体现对工作的热情,这是很幼稚的。对一个人来说,长时间的工作和生活的不平衡都会导致一些问题。敏捷开发讲究以人为本,对于团队来说如果人出了问题项目失败的可能性就可能达达增加。

几种中国式的敏捷:

极限编程:每天只工作8小时,还没有达到极限,工作不饱和。来来来多给你分配点任务。

拥抱变化:产品、需求频繁变更,朝令夕改,昨天说好的今天又变卦。

迭代式开发:做完了赶紧上线,出了问题再修复一版更新上去。

持续集成:每天提交几百行代码,不用编译不用自测不用测试用例。

测试驱动:点了两下没发现问题就可以发布了。

迭代回顾:新版本刚上线肯定有很多问题,这两天辛苦一下。24小时待命。

sprint冲刺:明天版本上线,大家辛苦通宵冲刺一下。

结对编程:开玩笑,一个人的任务两个人轮流干,每人只领一半工资行不行。

敏捷软件开发scrum介绍相关推荐

  1. 【软件项目管理】敏捷软件开发 —— Scrum模式

    什么是敏捷软件开发 前提 : 传统软件开发模式 -- 瀑布模型 在谈论这个问题之前,我们先来回顾一下传统软件开发模式 -- 瀑布模型 在瀑布模型中,软件开发过程被分为严格的 需求分析 -- 系统设计 ...

  2. [翻译]敏捷软件开发 一 之简要介绍

    敏捷软件开发一之简要介绍       原则.模式与实践是重要的,但是这三个要素都要由人来使得它们协同工作.正如Alistair Cockburn所说:"一个成功的项目,过程与技术永远都是排第 ...

  3. 读《Scrum敏捷软件开发》笔记

    读<Scrum敏捷软件开发>笔记 目录 读<Scrum敏捷软件开发>笔记 第I部分 启动 第II部分 个体 第iii部分 团队 第四部分 组织 第四部门 下一站 第I部分 启动 ...

  4. 敏捷软件开发实践——估算与计划02

    目录 一.使用故事点估算大小 1.故事点是相对的 2.速度 3.小结 二.使用理想人天进行估算 1.理想时间和软件开发 2.以理想人天作为对大小的度量 3.给出一个而不是多个估算值 4.小结 三.估算 ...

  5. 敏捷软件开发实践——估算与计划(01)

    目录 一.计划的目的 1.为什么要进行估算和计划 2.优秀的计划是什么 3.敏捷计划是什么 4.小结 二.计划失败的原因 1.基于活动而不是基于特性进行计划 1.1.活动不会提前完成 1.2.延误沿着 ...

  6. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 文章汇总及学习指南...

    一.AgileEAS.NET平台简介 AgileEAS.NET平台是一套应用系统快速开发平台,用于帮助中小软件开发商快速构建自己的企业信息管理类开发团队,以达到节省开发成本.缩短开发时间,快速适应市场 ...

  7. 敏捷软件开发实践-Sprint Status Track

    介绍: 对于敏捷软件开发来说,能时刻保持跟进项目的进度是非常重要的,因为你可以随时了解团队的健康状况,并且对各种突发情况进行突发的处理,从而保证每个迭代结束后我们的项目可以按时的交付. 实现方式: 看 ...

  8. 多元化时代敏捷软件开发的崛起与传统软件工程的延续

      多元化时代敏捷软件开发的崛起与传统软件工程的延续 1.传统软件开发模式 1.1瀑布模型 1.1.1概念 瀑布模型,顾名思义,软件开发的过程如同瀑布飞流一般,自上而下,逐级下落.瀑布模型的核心思想是 ...

  9. 软件工程---3.敏捷软件开发

    敏捷软件开发 极限编程(XP, Beck1999) Scrum方法(Schwaber and Beedle 2001) DSDM方法(Stapleton 2003) 敏捷软件的开发宣言 个体和交互胜过 ...

最新文章

  1. 如何实现微服务架构中的服务发现
  2. python中的JSON到底怎么用?
  3. iOS中都有什么设计模式?各个设计模式的作用 (转载)
  4. 用Java对HashMap排序
  5. bcp大容量复制实用工具_运行中的BCP(大容量复制程序)命令
  6. Thrift java.net.SocketException: Broken pipe问题分析定位
  7. jinja2说明文档
  8. 六一小学生计算机创新活动总结,2020小学生六一儿童节活动总结
  9. javaScript实现抽奖大转盘(一)
  10. 搭建AdGuard Home广告拦截DNS解析服务器
  11. 4510. 寻宝!大冒险!
  12. 银行网点管理转型专家
  13. Unity游戏动画 从入门到住院 1
  14. NAT 模式下网关设置
  15. UNIX TIMESTAMP 与 TIME 之间的转换
  16. MacOS XPC的使用入门
  17. 三十一、神仙版《球为媒》
  18. cnc程序加工中心_cnc加工自动可制造性评估的可制造性设计
  19. 艾力奋RFID人脸识别闸机助力小鹏汽车发布会【回顾篇】
  20. Unity如何驱动打印机打印

热门文章

  1. Intel(R) WiFi Link 5100 AGN 破解无线网络 BT4正式版U盘启动
  2. 世界上最值钱的初创公司
  3. c#上位机plc通讯读位
  4. Android系统五层架构
  5. 重读《从菜鸟到测试架构师》-- 开发团队做的远不仅是开发
  6. 【CTR预估】criteo数据集预处理shell命令
  7. H3C Cloud Lab安装
  8. vue 获取v-html渲染出来的元素
  9. CS231n:Python Numpy教程
  10. 程序员高效的准备HR面试