规模化敏捷开发的10个最佳实践(上)

【编者按】软件开发和采购人员经常会对现有软件开发方法、技巧和工具产生一些疑问。针对这些疑问,Kevin Fall 整理了五个软件方面的话题:Agile at Scale,Safety-Critical Systems,Monitoring Software-Intensive System Acquisition Programs,Managing Intellectual Property in the Acquisition of Software-Intensive Systems,以及 Managing Operational Resilience。该系列的第一篇主要关注 Agile at Scale 问题,本文由 OneAPM 工程师编译整理:

这里会有一系列文章来介绍这5个话题相关的最佳实践。第一组文章分为上下两篇,介绍了规模化敏捷开发中的挑战以及总结出的10个最佳实践。限于篇幅问题,本文只介绍了10个最佳实践中的前5个,下一篇将介绍余下的5个最佳实践和应用这些最佳实践过程中的3个建议。

规模化敏捷开发的10个最佳实践
规模化敏捷开发的10个最佳实践

规模化敏捷开发所面临的挑战

敏捷开发的概念在过去的十年间已经得到了广泛的使用,也使得软件开发团队能够开发出更好的软件。之所以能取得这样的效果,主要是敏捷开发的方法能够提高项目进展的透明度,同时用户还可以很早就预见产品的雏形,并与开发团队进行交流。然而,达到商业目的远远不是开发出好软件这么简单。而如果期望规模化敏捷则必须先关注以下几个方面:

1.团队规模

试想一下,敏捷开发的方法应用在超过100人的开发团队中会有什么效果?当这支开发团队需要与其他部门在质检、集成、项目管理、市场运营等进行合作和沟通以保证产品的顺利交付时又会有怎样的问题?通常极限编程这类的敏捷开发方法只适用于7至10人的小型团队中,而大型团队则需要分为几个小团队,同时需要和一些非开发的人员进行配合。目前已经有人在研究如何更好地解决团队规模所带来的协作问题了。

2.系统复杂程度

通常情况下,大型系统会包括较多的特性和新技术,还要与其他系统进行通信和集成,并且要照顾不同用户群的需求。需要搞清楚是否有实时性、可靠性和安全性的要求,以及相关利益者都是谁。通常复杂系统都需要经过严格的验证,这使得敏捷开发中的快速迭代变得复杂化了。

3.项目规划

有多长时间用于系统开发?系统维护的周期是多长?通常大型系统所需的开发和维护时间都比敏捷开发适用的系统长一些,而且需要关注可能的更改和重新设计,还可能会被要求交付不同的版本。搞清楚这些有助于决定对项目来说哪些才是衡量项目成功的重要指标。

规模化敏捷开发的最佳实践

各个企业的情况有所不同,所以如何应用这些最佳实验需要判断它是否能使企业得益。特别要注意企业的商业目的、现有的流程和企业文化,因为所有的实践都有其局限性,不可能存在所谓的万金油。选择这些最佳实践时最好可以让它们能互相配合,而且要根据企业的实际情况做出一定的调整。

1.团队协作乃是第一要务

Scrum 是目前使用范围最广的敏捷项目管理方法。简单来说 Scrum 开发环境只需要一个 Scrum 团队。这一团队需要具备说明需求、系统架构、设计、编码以及测试所需的知识和能力。

然而,在项目的规模和复杂程度增加之后,单一的 Scrum 团队可能就不能满足开发的需求了,这时就要根据系统特性和服务来划分不同的小团队。对一个项目如果已经决定了要使用 Scrum 这样的项目管理方法,可以对各个 Scrum 小团队也使用 Scrum 的方法进行管理。这就需要一个另外的协作团队,这个协作团队有两个责任:一是确定团队之间所交换的信息,这是为了解决团队之间的依赖性和沟通问题。二是对团队之间的协作问题和潜在的风险进行分析并解决。协作团队的成员通常来自各个开发团队,如此协作团队的成员就能够了解整个项目所有的功能,另外也可能还有一些用户界面设计、系统架构、测试和部署的专业人员参与。这一协作团队可以帮助各个开发团队之间实现目标、问题和风险的交流和共享。但当协作团队自己人数也多起来的时候则要当心了。

2.使用 Architectural Runway 来管理技术复杂性

严格的安全要求和任务关键需求会增加技术上的复杂性以及风险。如果一项任务在一次迭代中无法完成,同时也无法分解成较小的任务交给多个小组并行的话,这就说明这项任务有着技术上的复杂性。需要解决技术复杂性的问题,管理员必须在项目早期就完成最重要的软件架构特性,有时甚至要将这个问题提升到整个企业的高度,比如对基础设施平台或者产品线。

敏捷开发里把这个叫做 Architectural Runway。它的目的是为以后的迭代提供一个相对稳定的基础。有一个相对稳定的基础对多个团队是很重要的。软件的架构可以决定系统特性的重要性进,从而决定他们在开发中的优先级。通过定义 Architectural Runway 并在系统开发过程中对其进行扩展,开发团队可以优先开发架构跑道中的特性以满足用户的需求。

Architectural Runway 也可以帮助开发团队在项目早期就发现技术上的风险,并避免技术复杂性的问题。此外,系统质量上的要求如安全性、可用性和性能也是越早确定越好,否则很可能得进行大的改动或者造成项目延期。开发系统功能时如果所需要的基础设施已经就位也能增加需交付功能的确定性。

3.基于特性开发与系统分解的结合

敏捷团队通常的做法是在系统的所有组件中实现一个特性。这使得开发人员能够专注于完成对用户有意义的特性,而不必等待其他人的开发完成才能进行。这个途径被称之为「vertical alignment」,因为系统中每个实现这个特性的组件都在各个团队中独立开发。但系统的分解也可以是水平的,这主要基于系统的架构。这种方法主要被用于一些通用服务商,因为它们可以被更多的复用。

无论是针对特性进行开发还是对系统进行水平分解,其目的都是根据系统的分解来安排开发团队并且解耦以便保持进度。当需要在敏捷稳定性和进度上保持平衡时可以采用的策略是先开发一个通用服务的平台,再在此基础上以插件的方式快速进行基于特性的开发。

4.使用质量评估来决定架构上的需求

Scrum所注重的是解决用户面对的特性问题,这确实也对系统成功与否起到重要作用。但当注意力完全放在功能特性上的时候,往往就会忽略架构上的需求。

这里的建议是在开发 Architectural Runway 时收集、记录、沟通和确认潜在的系统质量上的要求。而大型系统来说由于维护周期都比较长,所以这点尤为重要。在项目早期就应该对质量上的要求进行评估,以便决定哪些架构上的需求应该尽快满足或者有哪些方式交付用户需求的捷径。

举个例子说,比如一个系统要满足100万用户使用。这是说立刻就要满足100万用户使用呢?还是现在它其实只是一个测试产品再比如系统一般都会使用一些框架,理解系统质量要求可以帮助开发人员确定哪些架构上的需求已经被框架解决了。当需要解决安全和部署环境方面需求变化时,架构上的需求必须给予最高的优先级。

5.在整个生命周期中使用测试驱动理念

这一条如果用一句话来概括就是开发之前先写好测试。如果开发的过程中只考虑正常情况,那么后期就会过度依赖于测试来找出开发中忽略掉的情况。为了避免这种情况在开发过程中就要考虑到异常。如果能够先写好测试,使用测试驱动开发或验收测试驱动开发的方法,将使得我们推荐的其他实践变得更有成效。

原文链接:10 Recommended Practices for Achieving Agile at Scale

OneAPM 是应用性能管理领域的新兴领军企业,能帮助运维人员进行故障预警和定位,减少业务系统维护的工作量,同时还能提供可追溯的性能数据,量化运维部门的业务价值。想告别加班熬夜,欢迎免费注册使用!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容

  • 亲爱的*平,今天是你的生日。 沈从文这封写给妻子的信,我一直非常喜欢。今天是你的生日,本来没有想到有什么好的礼物可...
    海坨的女儿阅读 288评论 0 1
  • 五月的风 像一支老牌施工队 奉命入驻清场: 在下一场豪雨来临前 必率先同柿子树达成 某种默契,以便 枝头业已完工的...
    林远_1991阅读 220评论 0 0
  • 终有一天,我们都会告别曾经单纯的我们,各自分离,各自远行!
    親愛的不二0503阅读 202评论 10 0