敏捷软件开发--转自张珂张老大项目笔记- lionboss_lin的日志- 网易博客

敏捷软件开发--转自张珂张老大项目笔记

敏捷软件开发--项目管理模式

2009/10/09
敏捷软件开发,这个玩意的核心是什么?

敏捷宣言
  • 个体和交互 胜过 过程和工具
  • 可以工作的软件 胜过 面面俱到的文档
  • 客户合作 胜过 合同谈判
  • 响应变化 胜过 遵循计划
12准则
  • 我们的{zg}目标是,通过尽早和持续地交付有价值的软件来满足客户。
  • 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
  • 要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
  • 项目过程中,业务人员与开发人员必须在一起工作。
  • 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
  • 无论是团队内还是团队间,xxx的沟通方法是面对面的交谈。
  • 可用的软件是衡量进度的主要指标。
  • 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
  • 对技术的精益求精以及对设计的不断完善将提升敏捷性。
  • 要做到简洁,即尽{zd0}可能减少不必要的工作。这是一门艺术。
  • {zj0}的架构、需求和设计出自于自组织的团队。
  • 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。

以上的话是原文照录。敏捷开发的关键字眼,无疑是敏捷。作为一组{zj0}实践的方法性整合,它已经由一种实验性的开发模式,进化到具有相当的成熟度。和任何开发模式一样,它也具有它的适应性。反过来,适应性也先天地蕴含了它的局限性。对某一类软件项目的适用,几乎必然地意味着它对另外的某一类项目的不适用。

问题是:它适用于哪一类软件项目?

一个关于工程学的真理,可以被这样表述:

这句话意思,放到软件工程领域来说,就是,一个软件系统的结构,和开发这个软件系统的团队结构是一致的。
所以,探讨项目开发模式,在某种意义上来说,就是探讨项目团队的结构方式。借用一下别人对团队结构的研究,再加上自己的理解,有这么几种团队组织模式:

外科手术团队
外科手术团队,有一个{jd1}的核心,那就是主刀医生。其他的人,无论是医师,xx师还是护士,都是为主刀医生提供技术支持的辅助性角色。团队的成功对主刀医生的依赖是xx的并且{jd1}的。在一些崇尚技术明星的小型的,或者是开创性的软件项目中,有意或者无意地大量使用着这种结构。这种团队构造模式开发出来的产品,常常呈现出高度集成甚至非结构化的特征。独裁的决策机制,决定了它的高效率,也注定了它对明星个人的高度依赖。这种团队结构,非常易于识别。因为明星的光亮是无法掩藏的。
棒球队
在棒球队里,每一个球手的位置是固定的,相互之间的配合主要依赖于事先的约定。就好像一条流水线一样,虽然{zh1}的产出受制于每一个人的贡献,但是,单独的个人即使在团队产出不佳的情况下仍然可以成为其位置上的明星。因此,即使是在三流的棒球队里,也能产生超{yl}的投球手和击球手。在传统的,技术相对成熟的,需求在项目周期整个过程中基本稳定的,商用软件开发领域,比如说,基于数据库的MIS系统,常常采用这种团队结构。与之相对应的,就是瀑布式的开发模式。需求,架构设计,详细设计,编码,测试,集成,验收。每一个阶段与上一个阶段的接口依赖于清晰定义的文档或者checklist。
足球队
与棒球队不同的是,一个三流足球队,不可能产生{yl}的足球运动员。虽然每一个队员有一个相对的位置,比如前锋,中场,后卫,守门员等,但是,在比赛的过程中,这种位置的区分不是{jd1}的,而是经常动态地变化。没有整个球队的有意识的战术配合,一个球员几乎难以仅靠自己个人的能力帮助球队取得成功。很多时候,教练在对胜负的决定作用中往往大于明星球员。在需求和技术环境可能发生周期性变化的软件项目中,采用得最多的,就是这种团队构造模式。这种模式在产品或者半产品型公司中大量存在,是CMM模型应用最广泛的领域。这种团队的成功,很大程度上依赖于一个教练式的项目经理。
爵士乐队
爵士乐队有点象羽毛球双打。每一个队员都是全能型选手。当一个队员出现缺位的时候,另外的队员有能力立即覆盖空缺的位置。虽然团队每一个成员有自己的特点和擅长的位置,但是,他/她随时可以转换到其它位置,以提供必要的支持。这种团队要求团队成员能力全面且长期合作到非常默契的程度。要求相当高,但是,也有非常高的回报。那就是沟通的成本极低,且团队运作效率极高,资源分布动态均衡而且饱满,不存在明显的瓶颈。相当于没有单点故障的网状分布式计算环境。架构并不复杂,但是团队的成功高度依赖于团队成员实力的均衡。因为有了人的素质作保障,这种团队结构具有最强的应对变化的能力。在这种团队中,没有明星。个人成功和团队成功不可分离。

敏捷软件开发,需要的,就是爵士乐队类型的团队。没有这样高素养的团队,敏捷就会流于空谈。甚至让人感到痛苦。那么,这里回答的就是{zh1}的问题:
敏捷开发,适用于需求高度不稳定的项目,且成员高度自治的团队。
当且仅当这两个条件同时满足时,敏捷开发将具有{zh0}的xxx。
团队不敏捷,就不足以应对快速的变化;没有高度灵活而自治的团队结构模式,团队又无法达到敏捷状态。

梦幻三组致力于建设爵士乐队类型的团队,以适应网络游戏开发领域需求高度的挥发性。这条路很艰难,但是,似乎也没有更正确的道路。

郑重声明:资讯 【敏捷软件开发--转自张珂张老大项目笔记- lionboss_lin的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——