发布新日志

  • 敏捷MiNi培训总结(20100828)

    2010-08-28 21:49:05

    本次MiNi培训,从基础概念讲起,由PC机的硬件发展史到软件的发展史,引出当前的发展方向——敏捷。

    贯彻始终的是敏捷宣言:个体和交互           胜过        过程和工具

    可以工作的软件       胜过        面面俱到的文档

    客户合作             胜过        合同谈判

    响应变化             胜过        遵循计划

    敏捷宣言的内容要理解。例如“可以工作的软件       胜过        面面俱到的文档”并不是说有了敏捷,就不要文档了。必要的文档还是需要的,只是我们不在需要面面俱到的文档,用做好的软件来说话。代码中的注释可以帮助开发和维护人员理解系统,软件界面可以帮助测试和客户深入了解系统的进展及功能。

    敏捷的基本概念是需要了解的,这样才可以进行后面的敏捷实战,例如敏捷的原则、敏捷中常用的方法体系等。其中常用的方法体系有2个——XPScrumXP可以通过“洋葱图”了解概况,Scrum中的3个“三”要深刻体会。

    敏捷项目可分为三个阶段:迭代前准备、迭代开发、SIT(系统集成测试)。每个阶段包括的主要活动。根据敏捷的项目过程进行实战演练。

    首先进行分组,将使用相同开发语言的人组织到一起,每组8人,由各组自己选出PLSESWETE,培训老师作为用户和敏捷教练双重身份。分配好各自的角色后为自己的队伍起名、设计队徽和口号。然后每组的PL作为代表上台公布各自的结果。布置敏捷办公环境,准备白板、便签纸、燃尽图、状态墙。

    进行Story培训,Story概念中重点是“对用户或客户有价值的功能点的简单描述”,在后面划分Story时需要严格按这个要求划分。Story的核心:三个“CCard+Conversation+Confirmation。分析Story的典型步骤为:

    识别用户角色—>分析业务场景/流程—>提取Story>整理Story

    根据分析出的Story,制作Story卡片,Story要遵守下面的写作标准:

    INVEST,分别代表IndependentNegotiableValuableEstimableSmallTestable

    Story卡片开始使用时要严格按照三段式进行描述:

    作为(角色)

    我希望/想要(功能)                                           

    以便于(目标)

    用一个小游戏帮助大家找到Story估计的感觉,这个游戏结束后给大家的提示是:Story估计点要选取合适的对象作为工作点的单位,过大或是过小都会影响到其他Story工作量的估计点数。

    在敏捷教练的指导下,各组组织分析用户需求,召开头脑风暴会议,根据大家的发言梳理出业务流程,划分出Story点,评估工作量,划分Story优先级及迭代次数。然后由SETE参与,将分析出的Story点整理,并填写到Story模板中。各组分享Story模板,由教练点评Story划分。

    由讲师进行工程实践的讲解。对TDD,学员只是停留在了解概念层次,没有做过TDD的实践,本次培训后面的编码阶段,主要实施TDD和结对编程。TDD的目标:简洁可用的代码。对于代码重构,推荐书籍《重构-改善既有代码的设计》。重构的关键点之一:必须有一个可靠的自动化测试环境。关于统一开发环境,了解了CI的概念,并强调持续集成的纪律。

    在管理实践的讲解中,涉及到可视化管理的基本概念,管理手段,包括状态墙、燃尽图、系统解剖图、敏捷项目管理工具等。其中敏捷系统管理工具推荐JIRA。我们公司只有部分项目使用到JIRA,只是用来进行缺陷跟踪,并未完全发挥JIRA的功效。JIRA在进行项目管理过程中,可以直接通过此工具将工作任务分解,细化到人,工作时间,这样正和Story的工作量可以对应,JIRA工具可以自动生成各种图形,类似于状态墙及燃尽图。JIRA的燃尽图不需要PO统计工作量后手动绘画,但是查看的时候需要进入工具。站立会议,站立会议不只是站着开会就可以称为“站立会议”,它需要组员自发的在规定时间规定地点,互相通告当前工作进展及问题。在站立会议中看不出谁在像谁汇报,或谁是会议组织者。站立会议建议10-15分钟,一般10分钟左右。Show Case。组内Session,可以制作卡片贴在白板上,卡片内容如下:

    20分钟

       主题:SVN使用小技巧

    分享人              提出人

     

    敏捷度量,度量的内容可以分为2个角度,外部视角:质量(SDV缺陷密度,网上问题数量)、进度(Story开发进度)和效率(敏捷团队的生产效率);内部视角:SVN提交规范、SVN提交频率、CI构建次数、CI构建成功率等。

    介绍管理和工程实践后,开始进入迭代周期。召开站立会议,各自进行工作介绍及当前问题,时间不超过10分钟,然后各自分工合作,开发才用结对编程的方式进行TDD,先编写测试代码,根据测试代码调整功能代码,测试进行测试用例编写。同时每个Story有变化时及时更新状态墙。Story编码完成一个后,测试人员与开发人员一起检查是否符合签收条件,如满足签收条件,签收通过后就转入Story测试。Story测试过程中如发现bug,将对应的Story贴纸由“ST”状态贴到“开发中”状态。由开发修改后再进行签收。由于环境关系,未能搭建成功持续集成环境,这是本次培训的一个遗憾。

    所有小组到指定的迭代周期结束时间点后停止工作,进入Show Case环节,各小组将本轮迭代的功能打包交给教练。每组派一名代表为客户进行演示,并负责解答客户及其他小组提出的问题。听取客户意见,为下次迭代做准备。

    敏捷回顾会议,回顾会议的流程如下:

    开场—>七嘴八舌—>问题洞察—>措施—>检测和改进—>缓冲时间

    回顾会议可以在白板上划分4个区,分别标注在项目过程中的优点、遗憾、问题及疑惑、改进意见与建议。

    最后召开回顾会议,由敏捷教练负责召集组员在白板前,划分4个区域,每个人都将自己的想法写在贴纸上,在满意区、遗憾做的不好的区域或是问题区域,或是改进区域贴出自己的想法。由教练带领组员共同将各区中的贴纸想法分类,然后征求组员的认可,得出本轮迭代做的好的方面和不好的方面。组员共同选出3条主要改进建议,在下轮迭代中开始持续跟进。

    整个MiNi演习结束后进行笔试。在试卷中再一次巩固基础和深化自己在本次培训中的收获和体会。

Open Toolbar