zoukankan      html  css  js  c++  java
  • 关于软件工程的思考05:敏捷流程

    敏捷流程

    敏捷的流程简介

    敏捷流程是一系列价值观和方法论的集合,这种思想强调敏捷的做法更能带来价值:

    敏捷开发的原则是:

    1、尽早并持续地交付有价值的软件以满足客户需求

    2、敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势

    3、经常发布可用的软件,发布间隔可以从几周到几个月,能短则短

    4、业务人员和开发人员在项目开发过程中应该每天共同工作

    5、以有进取心的人为项目核心,充分支持信任他们

    6、无论团队内外,面对面的交流始终是最有效的沟通方式

    7、可用的软件是衡量项目进展的主要指标

    8、敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去

    9、只有不断关注技术和设计,才能越来越敏捷

    10、保持简明,要尽可能简化工作量

    11、只有能自我管理的团队才能创造优秀的架构、需求和设计

    12、时时总结如何提高团队效率,并付诸行动

    以Scrum方法论为例,下图是敏捷流程图:

    敏捷的步骤如下:

    第一步:找出产品需要做的事情,也就是Product Backlog。产品负责人领导大家对backlog(待解决的工作)中的条目进行分析细化,每一项工作的时间估计单位为天

    第二步:决定当前的冲刺Sprint需要解决的事情,也就是Sprint Backlog。整个产品的实现被划分为几个互相联系的冲刺,产品订单上的任务被细化成以小时为单位的任务,如果一个任务估计时间过长(如超过16小时),那么它就应该被进一步分解。订单上的任务是团队成员根据自己的情况来认领,充分发挥他们的能动性。

    第三步:冲刺Sprint。冲刺阶段,外部人士不能直接打扰团队成员。一切交流只能通过Scrum大师(Scrum Master)来完成。有任何需求的改变都留待冲刺结束后再讨论,这一措施很好的平衡了交流和集中注意力的矛盾。

    冲刺期间,团队通过每日例会(Scrum Meeting)来进行面对面的交流,大家依次报告昨日完成内容、今日预计要完成工作和遇到的问题。Scrum Master根据项目的情况,用简明的图表展现整个项目的进度,图表可以是燃尽图(Burn Down Chart),或者简单的看板图(Kanban)

    下图为一个燃尽图:

    上图表中从上到下三个时间分别为实际剩余时间、预估剩余时间、实际花费时间。由此图可知,最终完成的工作量是预计的1.5倍。

    冲刺阶段是时间驱动(Time-boxed)的,时间一到就结束,有效的断了各种延期思想。

    第四步:得到软件的一个增量版本,发布给用户,然后在此基础上又进一步计划增量的新功能和改进。

    敏捷流程的问题

    在第一步中,除了考虑任务和需求内容,还要考虑优先级和依赖关系,最后在backlog中体现这些关系。

    在第二步中,把任务分解成一个一个可执行的冲刺任务时,会面临很多的实际问题,这些问题很难在短时间内解决,程序员会冒着风险先尝试实现,也许以后要返工。

    在认领任务阶段,团队成员对某个任务都不感兴趣,没人认领这个任务,或者任务a依赖某个任务b的完成,而任务b无人认领,或者成员间认领任务的工作量不均。

    在第三步中,每日例会很容易变成形式,也就是无人提出问题,发言没有内容。这里有几个建议解决这个问题:

    1、说清楚任务的状态,与谁有关,做好之后交给谁了

    2、说明完成这个任务还需要多少时间

    每日例会开不起来怎么办?有些团队成员不在同一个时区工作,此时可以考虑用文档或其他辅助手段,没必要一定面对面。

    在任务完成之后要面临很多繁琐的测试和兼容问题,功能看似快完成了,但往往要花费大量精力,敏捷流程中没有规定由何人来完成这些任务。

    在软件项目中有一些比较艰难和底层的任务,谁来负责也没有明确规则。

    在敏捷流程中,测试在冲刺中的工作形式还有待研究,考虑到测试在团队中的技术能力,很难让测试负起其他责任。

    在第四步中,可能会出现一些未料到的情况,比如增量没有满足预先计划,在冲刺中发现了新问题,冲刺结束后如何放松?如何总结经验?这都是实际面临的问题。

    敏捷的团队

    Scrum Sprint能否成功实施的关键在于Scrum Master,一个好的Scrum Master能在两种语境(描述软件需求的商业语境,描述实现细节的技术语境)中自如的切换,他事实上是一个强有力的项目经理。

    敏捷对团队的要求有自我管理、自我组织、多功能型:

    1、自我管理:不是领导给你安排任务,而是自己挑选任务,而且冲刺结束后总结不足并改进

    2、自我组织:以前做好自己的事情就可以了,现在每个人都要对项目负责,有人落后了还要帮助他改进,项目缺少某些资源还要主动顶上去

    3、多功能型:每个人都全面负责各种工作,包括规格说明书、沟通、测试

    敏捷总结

    一些敏捷实践者的经验教训:

    1、敏捷表明的是一些优先级,不必当做教条来做

    2、Scrum Master不是一个官,而是一个没有行政权力的沟通者,他同时还要在团队中做具体的工作

    3、在大型团队和复杂项目中,Scrum并没有完美的答案。

    除了Scrum以外,敏捷Agile还包括很多方法论:

    敏捷有它自己的适用范围:

  • 相关阅读:
    XML 验证器
    XML 浏览器支持
    XML 元素
    查看 XML 文件
    XML 属性
    Android入门之Activity四种启动模式
    XML 简介
    XML 语法规则
    [Android]Thread线程入门3多线程
    XML 验证
  • 原文地址:https://www.cnblogs.com/yinyunmoyi/p/12578219.html
Copyright © 2011-2022 走看看