《腾讯敏捷框架TAPD》研究
1 框架结构
1.1 产品
TAPD采用FDD模式开发,FDD即特征驱动开发。
FDD的核心是面向产品的功能点,但这个功能点是从客户角度出发的,并不是从系统角度出来的。功能点是用一个短句描述出一个业务需求,而这个业务需求的粒度是按开发时间来衡量的(一般不超过两个星期)。
特征与用例的相似之处是,两者都可以用短句(动宾短语)来描述;两者的不同之处在于,用例用UML的用例图来表示,而特征是用四色原型(类图)来表示。
注意,TAPD只是参考了FDD,不是完全的FDD。所有的开发团队都是由产品经理所归纳出来的产品特性去驱动整个产品的研发。
产品经理这个角色有点Scrum的Product Owner的味道。但产品特性和backlog相差甚远,因为产品特性只是一个动宾短语,而backlog却是一个完整的故事(story),包括一系列的元素:
- ID(统一标示)
- Name(名称)
- Imp(重要程度)
- Est(初始估算)
- How to demo(如何做演示)
- Notes(其它)
1.2 项目管理过程
TAPD参考了Scrum,项目管理过程同Scrum的过程比较类似,包括每天的晨会、迭代、timebox、每个迭代之后会有showcase、回顾总结等。
Scrum中的timebox是指迭代要有固定的时长,不能超过六个星期。
1.3 开发实践
参考了很多XP的实践,因为XP的完整实践比较“理想化”,所以只采纳了某些部分,比如自动化测试和持续集成。
2 框架实现
2.1 故事墙
把正在开发的系统功能与在白板上,让团队所有成员都知道大家在做什么。
写在白板上比用Excel或者其它工具管理好,因为写在白板上让人感觉更紧迫、更正式、更一目了然,有一种别人在监督、在注视的感觉——增加适当的压力并不是坏事。
2.2 每日晨会
晨会上每个人的发言不超过3分钟为宜,整个会议15分钟为宜。这是按照5人团队来制定的。如果团队人数超过5人,甚至达到10人、20人,那么建议成立两个团队。
Scrum的晨会是站立着开的,一方面是为了不让会议拖沓,另一方面也是为了让大家注意力集中(如果坐下肯定有人会顺便打开电脑,然后开始上网)。
在每天的晨会上,团队成员每人都叙述对昨天的工作做一个总结,总结由Scrum Master记录在白板上。
总结的内容包括:
- 工作完成的情况。只需要选择以下状态即可:未开始、正在开发、已完成。
- 工作遇到的难点(如果未按时完成);工作中值得注意的地方(可以是系统框架的体会、业务的特殊性、封装了哪些公共功能等)。
- 今天要做什么(如果昨天的工作已完成)。
当某人遇到问题的时候,其他成员如果有解决办法或者建议,那么可以“举手”,但不用说出解决的办法,由Scrum Master安排两人结对编程。
2.3 时间盒
一切任务都有timebox。Scrum的时间盒最长可以达到6个星期(一个半月),感觉太长了,建议时间盒按照FDD的建议,不超过两个星期为宜(半个月)。
2.4 一个完整的迭代过程
包括分析、设计、开发、测试和发布五个过程。
- 分析过程决定了本次迭代过程的工作目标(系统要达到什么效果)、工作内容(FDD的功能点)、发布日期。
- 设计过程采用快速原型法。快速原型法对业务复杂度不高,着重客户体验的项目有着很好的效果。
- 系统后台(业务模型)的设计,无论是采用数据库模型还是领域模型,都由主力程序员/系统架构师负责。之所以要主力程序员全程设计,是因为他要走读(review)其他人的代码,在没有理解设计思路的情况下,是无法review的。而且成员的水平和风格参差不齐,每个人都参与设计,最后一定会乱套。
- 做好测试计划,除了猴子测试,还要有业务模拟测试。
- 提倡单元测试,为以后自动化测试做准备。
- 考虑到TDD太复杂,需要面向接口编程的思想,以及转换原来的编码思想,并非短时间内能改变,所以不强制使用。
- 使用持续集成。持续集成除了降低代码合并的成本,还保障了提交上来的代码至少在语法上是可以通过的,不会导致别人下载了新版本的代码之后编译失败。
其中分析、设计、开发、测试、发布这五个过程可以内部再迭代,而且这五个过程不是分阶段开展的,即不是分析完了之后才设计,全部设计完了才开发,开发结束了才测试,测试通过了才发布。而是边分析边设计——在业务不复杂的情况下,这是可行的——边设计边开发,开发完一个功能就测试一个功能,同时开发下一个功能。
考虑到小团队不会配备专人测试,所以可以直接让客户进行测试,即测试与发布(不是最终发布)合并,由客户决定是否测试通过(最终发布)。
2.5 灰度发布
发布并不是一口气全面铺开,所有用户同时使用,面是先挑出有代表性的用户试用。
2.6 迭代总结
每一次系统发布的时候都会有一个总结,把做得好的发扬光大,做得不好的注意改进。总结是团队所有成员都参加,并且需要记录所有发言,会后发给每个人。
2.7 用户研究
这是腾讯,或者说是网站建设的独有特点。
《腾讯敏捷框架TAPD》研究的更多相关文章
- 解读腾讯敏捷研发核心驱动力 腾讯TAPD TAPD 2020-12-17
解读腾讯敏捷研发核心驱动力 腾讯TAPD TAPD 2020-12-17
- React Native移动框架功能研究
React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...
- 简介 - SAFe(Scaled Agile Framework,规模化敏捷框架)
简介 SAFe(Scaled Agile Framework,规模化敏捷框架) SAFe:https://www.scaledagileframework.com/ Scaled Agile Fram ...
- 【腾讯敏捷转型No.2】帅哥,来多少敏捷?
上回腾讯敏捷转型系列第一篇文章<敏捷到底是什么鬼?>讲到公司铁了心要推进敏捷,这是战略层面的决定,为什么呢? 当时的我们并不知道公司为什么一定要推行敏捷的新概念,但是后来公司的变化帮助我们 ...
- 【腾讯敏捷转型No.3】Scrum有什么好?
在敏捷转型的过程中,除了敏捷宣言中的四个价值观和十二条原则以外,并没有太多比较权威的理论实践. 如图一,敏捷宣言中的四个价值观: (图一) 四条敏捷核心价值观指出了敏捷的核心思想,但是并没有仔细说明具 ...
- 【腾讯敏捷转型No.8】你爱上手机QQ了么?
上一篇文章<QQ邮箱如何利用敏捷做到中国第一>,“QQ邮箱之母”马化腾带领QQ邮箱团队,从流量思维向产品思维转变,“QQ邮箱之父”张小龙也是在这个敏捷转型过程中,剔除固有的成见,激发对优秀 ...
- 【腾讯敏捷转型No.7】QQ邮箱如何通过敏捷成为行业第一
前几篇文章讲到2006年的腾讯是如何开始敏捷转型的,接下来这篇文章,我将向大家讲述,腾讯开始敏捷转型之后,QQ邮箱是如何通过敏捷成为行业第一. 众所周知,张小龙是“微信之父”,对他熟悉的人,应该也知道 ...
- 【腾讯敏捷转型No.6】如何打造称手的敏捷工具
通常情况下,大家对于敏捷的感受就是:大家一起来开站立晨会啦!然后一大早,大家拿着早餐,围成一个圈,听一个人在讲话. 在很多公司,决定采用敏捷之后,都会从晨会开始,因为很多人觉得敏捷其它模块都很难学习, ...
- 力软敏捷框架 jfGrid 的使用说明
很多人使用力软敏捷框架的一个困扰就是表格控件,力软并没有使用常规的jqgrid,而是用了自己的一套 jfgrid.所以今天在这做个简单的说明,如果你有什么疑问也可以在评论区提出来,后期的文章会做说明. ...
随机推荐
- 14、C#基础整理(函数)
函数 1.概念:是一个带有输入参数.输出参数.返回值的代码块. 2.写法: 修饰符 返回值类型 函数名(输入参数,输入参数) { 方法段 return 返回值; } 3.注释: (1)输入参数格式 ...
- C#使用指针表达式
如何:获取指针变量的值 使用指针间接运算符可获取位于指针所指向的位置的变量. 表达式采用下面的形式,其中, p 是指针类型: *p; 不能对除指针类型以外的任何类型的表达式使用一元间接寻址运算符. 此 ...
- [转]LUA C 互调
组件工厂 ------3D游戏研发 LUA和C之间的函数调用 1.1 从C程序调用LUA函数 LUA的函数和普通变量一样也是First Class Variable类型,可以看作函数指针变量参与栈操作 ...
- Magento导出订单同时导出产品信息
Magento导出订单同时导出产品信息,根据业务扩展,Magento自身的功能也越来越满足不了我们的需求了.今天Hicoogle根据需求改善批量导出订单的同时,也要带上该订单的产品信息.花了一点时间, ...
- 书评<<剑指offer 名企面试官精讲典型编程题>>
前前后后阅读了一周, 感慨很多, 面试考察的是一个人的综合能力, 这一点从面试官的角度去解读, 确实对面试的理解更立体. *) 具体考察的点1) 扎实的基础2) 高质量的代码3) 清晰的思路4) ...
- PHP部分---字符串处理(文中例子不断更新);
字符串处理: 1.去除 ltrim(),rtrim()函数 trim()函数 trim(字符串名)函数:--去掉字符串两边的空格 ltrim(字符串名,“特殊字符”);--去除字符串左边的空格和 ...
- 故障模块名称: mso.dll
本人今天早上打开word文档的时候打不开了,反复试了n次也不成,一想八成儿要重新装了,结果我点开详细信息看了一下,看到了“故障模块名称: mso.dll”这个提示,结果我就放到了百度上找了一下,都是只 ...
- 第n小的质数
总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个正整数n,求第n小的质数. 输入 一个不超过10000的正整数n. 输出 第n小的质数. 样例输入 10 样例输出 29 代碼 ...
- Android——网格布局仿计算器
代码如下: <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android= ...
- 黑马程序员——JAVA基础之 == 和equals区别
java中 == 和equals区别: java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...