【原创】基于禅道的敏捷开发管理实践

以下是我在一个长期项目研发过程中采用敏捷思想进行项目开发管理的成功实践,供大家参考

一、项目背景    

1、这是一个长期维护,需要不断扩展功能的O2O平台,系统本身包含多达13个子系统,且还在不断增加中

2、系统采用了“组件化架构”,各个组件之间实现了脱藕,可以各自单独扩展

3、开发资源严重匮乏,程序员严重不足,且其中能独立工作的程序员比例很低

二、敏捷开发实践

1、每一次版本迭代都包括:需求->设计->编码->测试->交付这四个阶段

2、用禅道对开发全过程进行规范化管理

3、每一次版本迭代的周期是2周

岗位划分:

1、产品/项目经理PM(Product/Project Manager )

2、技术经理TM(Technical Manager )

3、测试经理QM(Quality Manager )

4、高级程序员(一般担任开发小组长)MC(Master Coder)

5、程序员GC(General Coder)

6、前端工程师FE(Front Engineer)

7、测试员QE(Quality Engineer)

以上2、4、5、6属于开发组,3、7属于测试组

禅道使用的几个小技巧:

-- 禅道里的“项目”是指一个产品生命周期中对某一个阶段性的工作的定义。 我的做法是把一个大版本定义为一个项目,V2.0是一个项目,V3.0就是另一个新项目

-- 版本的定义在细节上如果能注意的话,会让程序员、测试员在使用过程中更加顺畅,举个例子:目前上线正常运行的是“XXXXX系统V2.0.0”版,正在开发,即将上线的是“XXXXX系统V2.0.1”版,那么在集成测试阶段,就应该编辑一下这两个版本的名称,改为:“XXXXX系统V2.0.0(当前版本)”,“XXXXX系统V2.0.1(即将上线)”,使得测试员、程序员在处理bug时选择版本的时候不用再动脑去想

-- 在禅道里配置好异步自动发提醒邮件,实现“工作追人”

具体开发工作流程如下:

1、需求讨论

采用静态原型法与甲方做需求前期讨论

负责人:产品/项目经理
参与者:技术经理、测试经理及前端工程师、高级程序员

外部需求讨论阶段不需要进禅道,用excel格式的会议纪要、邮件等进行沟通,在需求相对比较明晰之后,安排前端工程师制作静态原型,以静态原型+说明文档的方式来与甲方进行反复的沟通确认,直至最终确定需求

2、需求确认

与甲方一起确定下一次发版需要进行开发的需求及优先级

负责人:产品/项目经理
参与者:技术经理、测试经理、高级程序员

把最终确定的下一次发版的需求细化,并把细化的需求录入到禅道并设定好优先级为3(在后续过程中,甲方极有可能会临时提出紧急需求,那些需求可以相应设置优先级为2或1),这里要注意一定是细化的需求,比如:原始需求是“支持多城市,定于4月15日上线区内其他4个城市”,从这个需求细化出来的应该是具体到页面的需求,如:多城市_修改订单列表页面使之支持多城市...

确定下一次发版后要完成的需求后,项目组内部开全会通报所有需求,测试经理开始准备测试用例

3、分配任务

根据需求细化并分配开发任务

负责人:技术经理

禅道路径“项目-任务”,做开发任务分配的时候,一般来说都会从一个需求分出多个开发任务,任务是最原子的事务,一个任务只能指派一个执行人,如:
需求为:修改XXX页面使之支持不同城市的操作员只能显示本城市的信息

分配出3个任务:

1)修改XXX页面使之支持不同城市的操作员只能显示本城市的信息-详细设计

2)修改XXX页面使之支持不同城市的操作员只能显示本城市的信息-后端编码

3)修改XXX页面使之支持不同城市的操作员只能显示本城市的信息-前端编码

4、详细设计

根据开发需求做设计文档

负责人:分配了任务的开发组相应人员

监督人:技术经理

根据情况安排编码程序员做设计文档(没有太大难度的功能)或者是由高级程序员或技术经理做设计文档(有一定难度的功能),统一放到SVN/Git,如果是那种很简单的算法设计,可直接放到禅道-任务的备注。

文档标题格式:设计文档_需求ID_需求标题,如:设计文档_需求001_修改XXX页面使之支持不同城市的操作员只能显示本城市的信息

5、编码及单元测试

负责人:分配了任务的开发组相应人员

监督人:技术经理、开发小组长

1)程序员根据禅道上的任务按计划编码和做单元测试

2)程序员每天早上上禅道去“开启”分配给自己的任务,任务完成后点击“完成”

这里要特别强调: 采用禅道来分配任务并不是说不需要当面沟通,当面沟通依然是最重要的

禅道可与SVN/Git集成,使得技术经理可以直接在禅道上review代码(社区版无此功能)

3)技术经理负责每天的代码review和解决技术难题

4)产品/项目经理负责每天监控开发进度,发现情况及时沟通处理,产品/项目经理根据任务的完成情况,及时修改需求的进度,使得甲方能及时了解进度情况,需求的进度统一写在备注”,格式如下:

研发完毕时间:2016-04-08晚上7点

测试完毕时间:2016-04-19晚上7点

发布上线时间:2016-04-20凌晨2点

特别注意:数据库变更的脚本,要统一放到SVN/Git的“开发文档-版本目录”下,如:\01开发文档\V2.2.0 ,命名格式:脚本文件_V2.2.0.txt,这个脚本文件由技术经理进行维护

6、版本定义

在即将提交集成测试前,设置好各个组件的版本

负责人:产品/项目经理

每一次发版的版本号规范如下:

1)版本号第二位加1,第三位为0,如:V2.2.0

2)在正式发版之后如果有小改,则第三位递增,如:V2.2.1,V2.2.2...

在项目-版本中定义好版本,并把版本与这次发版对应的需求关联起来(一个需求可以和多个版本关联,比如:需求002:订单列表页支持多城市的不同操作员只能看到本城市的订单,此需求牵涉到:订单中心组件V2.2.0、商品中心组件V2.2.0、微商城/PC商城组件V2.2.0这几个版本,都要关联上)

这里要注意的是,要分组件定义版本,要求所有组件的版本号都保持一致,

比如:要定义这么几个组件的版本:

1)微商城/PC商城组件V2.2.0

2)订单中心组件V2.2.0

3)商品中心组件V2.2.0

4)门店系统组件V2.2.0

5)呼叫中心组件V2.2.0

6)门店APP组件V2.2.0

在项目-版本-查看bug,可查看此版本下的bug的清单

7、集成测试

编码完成,提交集成测试

1)技术经理自测后认为可以提交集成测试后,   在禅道路径“项目-版本”里,提交测试

2)技术经理把代码部署到测试服务器上

3)测试经理安排测试并提交bug(提交bug的时候,属于这次发版要修正的bug,严重程度设为1,其他不属于这次发版的bug,设为2或3,每次提交bug,都要设置“抄送人”为项目组管理层,使得管理层的每一个人都能了解测试的进度)

4)如果测试进入收尾阶段,即将定版的,技术经理把当前提交测试的代码在SVN上打一个对应版本的Branch分支(名称格式:V2.2.0_Testing),修改bug的人员集中在几个核心程序员上,减少引发新bug的几率,在通知核心程序员switch到此Branch后,立即修改SVN上的权限设置从Trunk上删除核心程序员的读写权限避免人为错误,其他程序员在Trunk分支上继续后续的开发

注意:

1)测试-bug中提交bug的时候,务必要选择对应的版本号

2)每次技术经理更新文件到测试服务器,都要在钉群里通告大家,并附上此次更新修复的bug清单

8、验收测试

集成测试完成,进行发版前的最后审核和验收测试,注意 :这里都是针对7所分出来的那个用于此次发版的Branch分支(如:V2.2.0_Testing)

在测试经理回归完所有1级bug,认为可上线后

1)测试经理报告产品/项目经理可以发版了

2)产品/项目经理自己要再做一次测试,确保品质

3)产品/项目经理测试后也认为没问题了,提交给甲方进行发版前的验收测试(如果有必要的,也可让甲方在阶段7参与测试)

9、发版上线

甲方确认可以发版,正式发版,注意 :这里都是针对7所分出来的那个用于此次发版的Branch分支(如:V2.2.0_Testing)

在甲方进行验收测试认为可以发版后,

发版当天:

1)测试经理,进禅道路径“测试-版本”,修改已测试好的版本,设为“已完成”

2)技术经理把此次发版需要更新的代码、数据库SQL脚本打包出来

3)产品/项目经理从禅道的项目-需求列表里导出(复制出)此次发版关联的需求为Excel文件,此文件就是提供给甲方的发版说明(changelog)文档,每次发版都在原文档前部增加新一个版本的内容

4)产品/项目经理向甲方提供changelog文档,并让甲方签署上线确认书

5)技术经理把将要发版的文件小心谨慎地发布到生产服务器上

6)产品/项目经理在禅道“产品-发布”中设定与项目-版本相同的发布,备注好发版时间和发版内容,并把版本和发布一对一关联起来

发版第二、三天:

1)技术经理在发版第二天,在SVN上从Branch里导出一个Tag,名称格式:V2.2.0_Release

2)技术经理在发版第二天,整理禅道-任务,属于本次发版已完成的任务,全部做关闭处理,之前计划要做,但未完成的,可关联到下一个版本

3)产品/项目经理在技术经理完成2)之后,对相应的本版本的需求,做关闭处理

10、版本维护

在发版之后,一般来说,还是会发现一些之前没注意到的Bug需要修改,因此,在下一次大版本发版之前,需要继续维护当前版本,具体做法如下:

1)技术经理从之前发版的Tag下的Release导出一个Branch,如:V2.2.0_Fixbug

2)测试经理根据客户处反馈的情况,继续发bug到禅道上,严重程度为1,版本号为V2.2.0
3)技术经理安排相关人员在V2.2.0_Fixbug分支下修改bug(一般来说,只安排专职负责旧版本维护的程序员去处理这些bug,最好是技术经理自己负责处理),这里要注意SVN的权限,此Fixbug分支只给具体修改的程序员分配读写权限

4)测试经理安排做回归测试

5)2、3、4步骤循环进行,直到认为可以发版了,则确定版本号,比如为:V2.2.1,并从V2.2.0_Fixbug导出一个Tag为V2.2.1_Release,由技术经理更新的生产服务器上(发版前也要导出修改的bug清单给甲方确认)

以上2、3、4、5步骤迭代循环,直到停止维护此版本

11、中止维护

在新版本即将发布前夕,一般是5天内,则停止上一个版本的维护

1)技术经理在告知相关程序员把本地的工作目录switch到Trunk后,关闭svn上的老版本Branch的程序员读写权限

2)产品/项目经理关闭老版本的发布,禅道路径“产品-发布”,设置此版本对应的发布为“停止维护”(这个步骤不能忘记,否则在bug里边选择版本的时候,没有被停止维护的发布对应的版本会一直显示出来)

这里要特别注意的是: 不是说这一次发版完成了才开始新的一次发版之旅,一般来说,在步骤2完成之后,产品/项目经理就要开始和甲方一起沟通下一次发版的需求了,然后是技术经理从需求分配任务,程序员开始熟悉任务需要用到的技术,测试组开始熟悉具体的业务流程和细节,从而开始新一次发版之旅。这就是螺旋状上升的敏捷迭代开发之路。。。。。。。

PS:配套此开发流程的还有对应各个岗位的“岗位作业书”,更进一步细化每个岗位的具体工作内容,我将在后续博文中放出

欢迎各位同好一起探讨敏捷开发的实践方法,大家好,才是真的好^_^

有兴趣共同探讨的请加Scrum干货Q群:302304689

  以下是本人原创的软件企业运用敏捷开发系列文章:

【原创】敏捷软件项目开发管理流程(一)

【原创】岗位作业书-产品/项目经理(二)

【原创】岗位作业书-技术经理(三)

【原创】岗位作业书-测试经理(四)

【原创】岗位作业书-高级程序员(五)

【原创】岗位作业书-程序员(六)

【原创】岗位作业书-前端工程师(七)

【原创】岗位作业书-测试员(八)

时间: 2025-01-07 14:56:49

【原创】基于禅道的敏捷开发管理实践的相关文章

敏捷团队管理实践记实(始)

项目进行已过半,项目成员其中一位是本月刚刚入职,另一位是对WEB框架熟悉但是工作流不甚熟悉的同事,可以用老弱病残孕来形容,管理它们给我带来了巨大的挑战和难得的机遇,针对当前的形式我制定出来了符合自己团队现奖的敏捷开发的策略,策略如下: 1. 项目沟通方面的改进: a) 实行晚会制度15-30min,主要目的是将一天中所遇到的问题抛出来,动员所有人思考解决方案,提升项目成功率. b) 实行晨会制度15-30min,主要目的是公布当天的工作计划,精确到每小时或每两小时,通过对问题细致拆分,达到控制问

两种类型的人, 不需要敏捷开发的实践

牛人的开发人员,将高效写成简洁,质量高的代码的实践,已自然而然的融入在自身的 DNA.血液中.所以,能以极高的效率将设计.开发.测试融为一体. 牛人的测试人员,已自然而然的将所需的测试路径,清晰的呈现在自身的脑海中.所以,牛人的测试人员,不是没有设计测试用例,而是他(她)们早已将所需的测试用例,自然而然的烙印在自身的脑海中. "敏捷开发的实践对两种类型的人是完全没有任何帮助的,是完全不需要的; 其一是: 厉害的牛人, 其二是: 怠惰的恐龙."

敏捷团队管理实践纪实(二)

今天的晨会得到确切的数据证实,新入职的同事工作效率极低,一天大约只有100行左右的HTML+JS+CS的结果,并且没有将自己测试的时间和沟通的时间计算进去,导致下午的进度被延迟到了今天上午.这位同事的计划内容是第两小时,做一件什么事情,但是并没有详细分拆事情的细节,该同事的表达能力也存在较大问题. 针对这一问题我调整了策略,要对于新人给予的要求是极其细致的分解其工作内容,引导他考虑到数据库数据变化,构架变化,界面改动,逻辑变更,沟通时间和测试时间的总时间,而过程中需要及时询问,直至他自己可以制定

Leangoo:用敏捷开发管理思维做团队协作的SaaS软件

第一次看到leangoo这个产品时,笔者觉得又是一款团队协作软件工具,和其它的团队协作并没有什么本质区别. 当听创始人廖靖斌说起leangoo人员结构时,笔者起初蛮诧异,一家20多人的创业公司,顾问和研发差不多各占一半. 一家看起来做saas的公司为什么需要这么多顾问? 在和廖靖斌进行一个多小时的交流中,这个困惑渐渐被解开… Leangoo:一家顾问公司研发的SaaS工具 作为一个八年的“创业老兵”,廖靖斌始终在做的一件事就是实践.推广Scrum和敏捷开发.Scrum是风靡全球的敏捷产品开发框架

敏捷开发在实践中确实更加有效

在Scrum的方法里面,使用Sprint的一个方式,就是在构建产品的过程中,产品的设计和开发是逐步完善的,也就是说,产品并不是一次设计完成的,这里就有一个问题,Scrum是否适合于大多数的软件产品开发?相对于传统的方式,我们编码前是否需要一个完整的明确的代码的设计? 这里有两个例子可以考虑,如果我们要开发一个操作系统,或者是开发一个Office系列软件,我们能否使用敏捷开发的模式? 对于操作系统而言,Unix开发的哲学是最好的实践方法. Unix开发哲学中其中一点是,做一件事情,把它做好,这意味

敏捷开发知识体系整体框架

敏捷开发工程实践 项目管理 迭代开发 风险价值生命周期 多级项目规划 完整团队 每日站立会议 任务板 燃尽图 需求管理 需求订单 业务流程草图 用例驱动开发 用户故事 架构 演进的架构 演进的设计 基于组件的架构设计 开发 结对编程 测试驱动开发 重构 代码规范 测试 单元测试 并行测试 测试管理 变更管理 持续集成 自动构建 团队变更管理 敏捷开发管理实践描述 定义和特征说明 主要角色 主要活动和最佳实践 主要输入输出 工作流程 敏捷开发工程实践描述 定义和特征说明 应用说明 案例说明 敏捷开

杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》

课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会面临这样的问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?……是大部分研发型企业普遍面临的核心问题.另外,软件项目在产品开发中位置越来越重要,逐渐占领主导地位,这时传统的IPD流程和CMMI

敏捷开发实践总结?EUMs

为了更好的阅读体验,欢迎访问 作者博客原文 项目回顾 项目背景 EUMs(End User Monitor System)是一个在线的物资跟踪监控系统.由ThoughtWorks团队为Unicef(United Nations International Children's Emergency Fund,联合国儿童基金会,客户)提供的一套完善的软件交付服务. 该系统为资助物资的跟踪与监控提供了完整的网络解决方案.整个流程涵盖了Unicef对物资来源的管控.库存管理.物资下发与跟踪.Unicef

实验三 Java敏捷开发与XP实践

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计                         班级:1353            姓名:陈巧然      学号:20135310 成绩:             指导教师:娄佳鹏              实验日期:2015.6.3 实验密级:         预习程度:             实验时间:18:00-24:00 仪器组次:10          必修/选修: