• 企业应用架构研究系列五:极限编程(XP)& 敏捷管理(Scrum)


      敏捷项目管理是项目成本管理和项目交付管理的一门管理艺术,为啥这么说呢?每一个人都会唱歌,但只有唱得好的人才能是歌手,才能是演唱家,而项目管理也恰恰与之相似,看似一件简单的社体活动,其实复杂多变,过程坎坷,管理容易,管好难。每一个项目,过程就像中国神话西游记一样,历经无数坎坷,只有怀有坚定信念,才能取得真经。

      庆幸的是,经过前辈的披荆斩棘,无数的历练,有了当今比较流行的软件项目管理理论,敏捷项目管理。今天就总结一下敏捷软件项目管理里面两个比较出色的方法论,极限编程和Scrum管理。极限编程强调可适应性而不是可预测性。极限编程认为软件需求的不断变化是很自然的现象,是软件项目开发中不可避免的、也是应该欣然接受的现象。极限编程相信,更有能力在项目周期的任何阶段去适应变化,将是更加现实更加有效的方法。其最终目的,降低因需求变更而带来的成本,是软件项目管理中对成本管理的一种解决方案。

      极限编程中有五个核心价值:沟通(Communication)、简单(Simplicity)、反馈(Feedback)、勇气(Courage)、尊重(Respect),时刻牢记这五个核心价值,就能很好的完成极限编程项目管理。

      谈完了极限编程,再谈谈敏捷Scrum项目管理,在谈Scrum之前,先给大家讲一个故事:

      

    一天,一只鸡散步时遇见了猪。
    
    鸡对猪说:“嗨,我们合伙开个餐厅吧。”
    
    猪说:“好啊,那准备取什么店名呢?”
    
    鸡说:“要不,就叫火腿和鸡蛋吧。”
    
    猪直接拒绝了:“那可不行。我要割肉,你只要下蛋。这样下去,我迟早要完蛋。”
    

      开心一乐之后,细细体会,软件项目管理未尝不是一场项目中不同角色之间利益平衡的问题。Scrum管理,强调把客户拉进项目组,成为一个整体,大家都有共同的故事,为了共同的故事,一起努力,当大家的目标一致的时候,项目组整体效率往往会出现意想不到的效果,这就是Scum 项目管理的精髓。

      Scrum 项目管理,更像一个故事的演绎,项目首先需要划定三个角色,产品负责人PO(Product Owner),仆人型领导SM(Scrum Master),开发团队(Team)。PO往往有项目的甲方核心负责人主演,SM由乙方项目领导负责主演。

      产品负责人PO:他负责在限定期限内拟定可能的最有价值的产品,简单讲,就是提前规划好需求故事,评价每个需求故事的价值和优先级别。然后通过管理流向团队的产品待办事项,该角色维护产品待办事项列表(Product Backlog),并确保大家都知道故事的内容以及优先级。该角色比较特殊,可能需要其他人的支持,但只能是一个人。

      仆人型领导SM:他负责帮助PO理解如何创建和维护产品故事列表(Product Backlog)。确保团队在Sprint结束时能够完成故事,他和开发团队一起发现并实施技术实践。SM的另一个职责是保障开发团队前进的障碍已被清除了。这些障碍可能来自团队的外部,比如缺乏另一个团队的支持,也可能来自内部,比如PO负责人不知道如何恰当地准备产品待办事项列表。

      

      Scrum项目的角色已定义完成,就开始故事的演绎。PO是导演,他会提前准备Product Story剧本,每次迭代计划会议都会用到,每个场景都由PO进行管理,PO掌控着Product Backlog,并由他来决定每个Sprint周期需要迭代的Sprint Backlog,Sprint Backlog的开启和关闭在每个Sprint Planning Meeting迭代会议上讨论的,创建和关闭都是由PO决定的,由SM负责监督和督促Sprint Backlog的推进,促成项目组交付物的产出。

      PO和SM还要定期的组织项目组进行Review Meeting,回顾项目的交付物演示,SM负责项目回顾和交付物演示,也可以由项目组开发自己进行交付物演示。

      最后要演绎的就是SM每天主持的站会Daily Stand Up Meeting,PO理论上是需要一起参加,但往往只是理论。SM确保Team一定要站着开项目晨会,确保每次会的时间不会太长,快速的沟通项目组上一天遇到的问题和本天的开发计划,以及需要的项目资源。

      总结,Scrum项目管理,需要和客户扭打在一起,将大的任务拆解成可持续交付的小任务,保证项目的持续交付,出现问题可以及时迭代,风险共担。在Scrum的实践过程中,Sprint Planning Meeting最好是一周或者两周开一次,Sprint 任务为每周可以完成的任务。

      敏捷开发并不是否定传统开发,而是对传统瀑布式开发更好的升华,敏捷项目开发也是有明确阶段的,Scrum 里面叫里程碑。

      我认为项目可以从这五个阶段进行划分:

      启动阶段:项目启动阶段,需要注意的点是项目是否可执行,项目是否可拆解,项目是否有明确的目标。

      规划阶段:项目规划阶段,主要是进行项目的任务分解,遵从WBS(Work Breakdown Structure)原则,拆解任务目标明确,逐层下降;同时该阶段也需要做好项目预算和风险管理,这是十分必要的。

      执行阶段:项目执行阶段,需要注意沟通管理,定期的和客户沟通,和项目组成员沟通,沟通需要会议和邮件一起使用,会议结束必须形成会议简报,邮件形式进行项目组分发。

      监督阶段:项目监督阶段,项目在执行的时候,也要进行监督,这里的监督主要指成本消耗、风险规避、交付物完成情况,计划完成比例。

      收尾阶段:项目收尾阶段,工作重点是审查上面每个阶段的执行情况,对项目进行自我总结,这是很有必要的。

      最后推荐Scrum项目管理使用Azure DevOps工具的Azure DevOps Boards这个工具管理,好用、方便、标准模板。

  • 相关阅读:
    cocos2dx android java调用C++
    cocos2dx android c++调用java
    cocos2dx android collection
    cocos2dx学习之windows android环境搭建
    windows phone 8.0 与 windows phone7.1区别
    C#文件同步工具教程
    Web2.0时代,RSS你会用了吗?(技术实现总结)
    介绍一篇关于session的好文章,写的很详细(jspservlet 技术)
    利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆
    css
  • 原文地址:https://www.cnblogs.com/luking/p/15999702.html
Copyright © 2020-2023  润新知