Loading

我的极限Scrum实践

 
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://pengjh.blog.51cto.com/2793198/638997

引言

一直以来,软件工业界出现各式各样的开发过程,个人认为只有实践才是真理。在个人的实践中,通过对RUP(Rational 统一软件过程)进行裁剪,再结合敏捷软件开发方法,主要利用RUP的严谨完整与XP、scrum两个敏捷实践的快速、高效,从而弥补二者的不足。

1.开发生命周期

依照XP和scrum两个敏捷开发实践的指导思想,以代码为中心,以快速构建可交付的产品为目标,重点关注项目组成员和功能开发,不继地调整和改进开发过程,包括进度和任务安排,迭代周期根据实际情况而定(scrum建议最长为3周),如下图开发生命周期包括四个核心部分:

其中: i.计划 召开计划会议,与会人员包括项目经理、系统设计人员、开发人员、测试人员和美工等,项目经理列出项目的所有功能列表,根据功能紧急性和重要性,结合组成员的意见和建议,通过头脑风暴来得出本次迭代的工作任务和工作目标,以及本次迭代的功能检查表; 开发人员通过沟通来分担本次迭代的工作任务; 测试人员在此过程中,需要吃透本次迭代的工作任务,从而更好的完成测试,提高产品质量。 ii.构建 从人员职责上,将开发人员分为前端和后端,单一开发人员的职责,使其更加专注,将系统的复杂度尽可能大的降低,提高软件的生产效率;各开发人员需要完成边界接口的单元测试,以减少系统持续集成过程中产生的问题,进行快速集成。 iii.反馈 根据在本次迭代的计划部分中开发的检查表,来检查每个开发人员的完成情况,总结本次迭代的反馈结果,包括项目组各成员承担的任务本身难度、采用方法和技术等问题,以及项目以外的问题,如身体状态和情绪等; iv.改进 针对反馈中实际产生的问题,一一进行剖析和诊断,并让项目组成员参与,深度分析问题的内在原因,及时作出调整,为下次迭代给出改进要求;

2.持续沟通

每天至少与各成员(主要是开发人员)沟通一次,关注每天的工作进展和任务完成情况,由项目经理或高级开发人员来完成,主要询问scrum指导的三个关键问题: 昨天完成了什么功能? 今天准备完成什么功能? 有没有什么疑难点? 其实,在每天的实际开发过程中,由于每个人的能力不一样,往往有些时候碰到疑难问题,需要进行N次沟通和讨论,沟通次数则依赖实际情况。

3.持续集成与发布

开发过程中,发布版本根据实际完成情况,在时间长度上,实现弹性的版本发布,可在一天内集成和发布多次,或几天才集成和发布一次。

4.测试驱动开发

按照测试驱动开发的指导思想,开发人员先完成测试代码,再编写实现代码并使其通过测试,

5.结对编程

一般地,结对编程是两个开发人员坐在一台电脑前写代码,这样显然可以提高代码的生产率,毕竟是两个大脑在同时思考。其实,进行结对编程是有前提条件的,这两个开发人员必须是可沟通的,如果其中一个开发人员太固执或太强势,听不进对方的建议和想法,只会一意孤行,这样是做不好结对的,反而将代码生产率大打折扣。

结论

一个好的软件过程是一个软件开发走成功的前提,作为一个合格的PM、TeamLeader或ScrumMaster,应当是中立的或称职的,并且这个团队不应为同一种声音,不然就会出现共振,一旦共振就会产生偏见,导致糟糕的结局。如何让我们的团队更加敏捷,在《人月神话》中就强调“银弹并不存在”,完全依赖我们的兄弟们,依赖团队中的每一个人,可见“以人为本”的根本所在。

本文出自 “因专注而卓越 - 彭金华” 博客,请务必保留此出处http://pengjh.blog.51cto.com/2793198/638997

posted @ 2013-03-14 09:57  Sam Xiao  阅读(314)  评论(0编辑  收藏  举报