一、敏捷开发
敏捷开发基本概念
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。
敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。
敏捷开发的核心价值观
以人为本
目标导向
客户为先
拥抱变化
二、Scrum 框架
Scrum 不是一个标准化过程,不能保证你按步骤流程一步一步的执行就能产生高质量产品。
1.框架
Scrum是一个用于组织和管理工作的框架。Scrum框架建立在一套价值观、原则和实践之上,在这个框架的基础上,各个组织可以添加相关工程实践特有的实现方法以及在实际Scrum实践时所采取的特定方法。
2. 类比
Scrum框架好比一座建筑物的地基和墙体,Scrum的价值观、原则和实践是重要的构件。
如果对这些价值观、原则和实践置之不理或是做出根本性的改变,必然会带来倒塌的风险,但是可以在Scrum结构内部进行定制,添加一些固定设施和装置,直到得到一个可行的过程。
3.Scrum实践
4. Scrum 角色
产品负责人:
定义所有产品功能
决定产品发布的内容以及日期
对产品的投入产出负责
根据市场变化对需要开发的功能排列优先顺序
合理的调整产品功能和迭代顺序
认同或者拒绝迭代的交付
ScrumMaster:
对项目的直接管理
领导团队完成Scrum的实践以及体现其价值
排除团队遇到的困难
确保团队的胜任其工作,并保持高效的生产率
使得团队紧密合作,使得团队个人具有多方面职能的工作能力
保护团队不受到外来无端影响
Team:
经典团队拥有 5-9 人
团队成员都是是多面手
团队成员都全职工作
团队自我组织和管理
5.Scrum 活动与工件
三、敏捷开发管理实践Scrum
Scrum是一种灵活的软件管理过程,它提供了一种经验方法,可以帮助你驾驭迭代,实现递增的软件开发过程。这一过程是迅速、有适应性、自组织的,它发现了软件工程的社会意义,使得团队成员能够独立地集中在创造性的协作环境下工作。
1. 术语介绍
Sprint
是短距离赛跑的意思,这里面指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。
Product Backlog(产品订单)
整个项目的概要文档,它包含已划分优先等级的、项目要开发的系统或产品的需求清单,包括功能和非功能性需求及其他假设和约束条件。
Sprint Backlog(冲刺订单)
是大大细化了的文档,用来界定工作或任务,定义团队在Sprint中的任务清单,这些任务会将当前冲刺选定的产品订单转化为完整的产品功能增量。
任务看板
用来组织三种视角(时间、任务和团队),目的是使整个团队都能理解项目的当前状态,并以一种自发、有动力且互相合作的方式来工作。令项目可视化。
Epic
通常是一个比较笼统的业务需求,来源于用户或业务部门。需对其进行拆分,同时本身保留,用于团队追溯起源。
Story
用户故事是敏捷开发中的需求表达方式,每个用户故事代表了从产品的用户视角表达的一条用户需求,即一个需求点,通常由客户、产品经理或者需求人员来编写,开发人员也可以编写一些非功能的用户故事,比如安全、性能、质量等层面。
任务
在用户故事下拆分任务,即项目团队成员需做的事,拆分为完成这个需求的所有的任务,包括设计,开发,测试,交付,甚至包括申请机器,部署测试环境等等。
每日站会(Daily Scrum Meeting)
1个Sprint开始迭代后。ScrumMaster需要组织团队成员每天开站会. 这个会议是用15分钟的时间来让大家过一下scrum的状态。在会上,每个团队成员需要问3个问题:我昨天做了什么,今天做什么,遇到哪些障碍。谁都可以参加这个会议,但只有Scrum团队成员有发言权。这个会议的目标是得到一个项目的全局观,用于发现任何新的依赖,定位项目成员的要求,实时的调整当天开发计划。
燃尽图
全称应该是“总剩余时间的燃尽图”,就是本次迭代中,所有故事(或拆分的任务,以下仅称故事)的剩余时间总和,随日期的变化而逐日递减的图。
Sprint Review Meeting(评审会议)
会议产品负责人和客户都要参加,每一个Scrum Team的成员都要向他们演示自己完成的软件产品。
2. Scrum – 角色职责与工作流程
如下2张图所示,3种角色,产品负责人,Scrum主管,开发团队如何工作: