敏捷软件交付项目管理及相关工具

本文关键字 1 软件交付项目管理面临的挑战 软件交付项目管理的特殊性在于其管理对象是软件交付,虽然其基本管理思想和管理方法都跳不出通用项目管理范畴,但其面临的全球化、复杂性和治理等方面的独特问题,迫使相关人员不断地去思考和创新软件交付方法和项目管理模式。 创新时代企业发展速度的加快和全球化软件交付模式的出现,给软件交付项目管理带来了很多挑战,这些可以总结归纳为四个方面:复杂性、团队、流程和工具。在漫长的IT系统建设过程中,技术的进步、语言的变迁、系统平台的演进以及Web2.0的出现,往往会给企业留下错综复杂的IT基础架构和遗留系统。面对百花齐放的软件开发方法,软件开发团队想方设法建立合适的流程,提高流程的敏捷性,增加业务的响应速度。然而企业内部普遍存在的工具竖井,导致不同的工作环节有不同的工具、流程和数据,这些内容无法整合,就无法提供应用生命周期管理的能力。所有这些正带给今天的软件开发团队前所未有的挑战。 1.1 软件交付项目工件和活动管理的挑战 首先分析一下软件交付过程本身。和人类的其他生产过程一样,软件生产过程就是作为软件交付主体的人或团队,通过项目管理、需求分析、设计、开发、测试和发布等一系列活动,生产出各种工件(交付物),实现软件从早期的需求,到中期的架构和代码,再到可运行的发布版本的不断演进。与任何生命体的成长过程类似,在周而复始的活动到工件的交替过程中,会产生许多软件产品的阶段产物(版本),它们代表了软件产品生命历程的一个快照。 所有这些快照的集合,记录了软件产品从孕育出生到长大成熟的整个生命发展历程。这期间,作为软件生产过程中的主体,人(团队)起到了重要作用,是人(团队)凭借其无比的智慧和经验,始终“呵护”着软件产品,完成其从“童年”、“少年”、“青年”到“成年”的成长历程,处理各种突发事件。 由此可见,软件交付项目最基本的要素,就是作为项目主体的人,及其执行的各种活动和产生的各种工件。整个软件交付生命周期正是在这种以人为主体,以活动和工件为核心的循环往复中,不断向满足利益相关方需求的软件产品靠近。 因此,管理好了活动和工件这两个部分,整个软件交付生命周期就会变得清楚明白,团队协作的力量就会慢慢绽放。这也回答了为什么近些年关注软件交付活动管理的需求管理、变更管理和关注工件管理的配置管理工具会如此盛行,成为很多企业进行过程改进工作的首选。 因此,提高软件交付团队的需求管理、配置管理和变更管理能力,是软件交付项目管理面临的首要挑战。 1.2 软件交付项目进度估计的挑战 如何评估软件交付项目的进度,是软件交付项目管理面临的又一大挑战。对于土木工程项目来说,项目进度一目了然。然而,如果采用传统的瀑布模型,在软件交付项目的大多数里程碑,项目的交付物只是一堆文档或代码,它们就是项目管理团队赖以评估项目进度的唯一依据,进度评估更多地靠主观估计,而不是客观度量,无法客观考虑项目的不确定性、风险和质量偏差导致的进度延期,其结果并不可靠。 因此,在整个软件交付生命周期中,项目计划始终是动态的、不断向目标演进的路标。出现偏差然后修正,这一循环贯穿了项目执行的始终。在采用传统瀑布模型的软件交付项目中,整个项目的风险是在系统集成阶段才迅速降低,而系统集成阶段却发生在整个生命周期的后端,从而造成项目风险和不确定性在整个生命周期中难以快速降低,项目进度难以控制。因此,常常可以听到人们笑谈软件开发的“二八”原则,即当软件项目完成80%时,剩下的20%的工作量往往会消耗掉80%的时间。出现这一现象的根本原因,正是软件项目进度难以估算。 1.3 软件交付项目需求不断变更带来的挑战 软件交付项目的另外一个重大挑战来源于软件需求的善变,这是快速发展的业务环境的特产,也是激烈的市场竞争环境的必然结果。对于软件项目来说,项目范围并不是一个需求文档或合约,而是一个持续谈判和变更的过程。 软件的特殊形态决定了在软件发布之前,软件本身一般是看不到、摸不着的,没有人知道未来的软件到底是什么样子。因此,在项目开始阶段,要想把软件需求说得清清楚楚,基本上是不可能的事情。 而且,需求沟通本身就是一个启发的过程,在用户还没看到可运行的软件之前,本身也很可能不清楚自己的真实需求。而一旦用户看到了实际可运行的软件,人类创造性的思维能力就仿佛瞬间开足马力,新的想法和要求不断奔涌。 2 敏捷开发和项目管理方法 为解决软件交付项目管理面临的挑战,软件工程领域催生了敏捷开发方法。2008年,IBMRational推出大规模敏捷(Agile@Scale)最佳实践,明确指出了以迭代式软件开发、两级项目规划、整体团队协作、持续集成和测试驱动开发作为敏捷过程的核心最佳实践,无缝集成IBMRational最新推出的协作的应用生命周期管理平台。这一最佳实践不但全面地诠释了敏捷开发的实施方法,还能够帮助团队快速建立敏捷项目管理能力,从容应对软件开发项目所面临的各种挑战。 面对软件交付项目计划的动态演进和进度管理难题,IBM敏捷最佳实践进一步强化了著名的迭代式开发,它把整个软件开发过程分解成更可控、可预测的迭代,每个迭代交付可运行的软件发布,从而使整个软件团队能够向利益相关方迭代地展示价值,获取用户反馈,持续改进产品,也使得项目管理团队能够使用客观的、可运行的发布来度量项目的进度,而不是基于主观的对代码和文档的评估。另外,由项目渐进明细的特征所决定,整个项目的项目计划本身也应该是渐进明细的。 因此,敏捷开发推荐的另一个最佳实践是“两级项目规划”,类似于项目管理知识体系中提及的滚动规划,它包括项目级粗线条的不断调整的发布计划和迭代细化的、可执行的迭代计划。在项目执行过程中,细化的迭代计划基本保持稳定不变,用于指导整个团队快速执行,交付所需的产品需求和特性;而粗线条的发布计划可以不断被修正,使其越来越接近通往项目目标的可执行轨迹。通过“两级项目规划”最佳实践,使得整个软件开发团队始终围绕客户需求,动态调整项目计划,实现变更和快速交付业务价值之间的有效平衡。 使用迭代式软件开发带给软件开发团队的一个新挑战,就是如何能够在每个迭代都快速交付出可运行的发布,从而真实地反映项目的进度状况。基于这一挑战,IBM推出了“持续集成”和“每日构建”两个最佳实践。“持续集成”通过进行更频繁的软件集成,更早地发现和反馈错误、降低风险,使得交付的软件在用户的体验和反馈中不断改进、茁壮成长,从而使整个软件交付过程变得更加可控和可预测。而“每日构建”就是通过每天进行软件最新版本的构建,确保开发团队每天的工作成果都能够编译和链接通过,从而确保工作的基本质量,提高团队的质量意识。 它就像软件交付的脉搏,每一次跳动都会产生出一个可度量的结果,即软件的一个版本;它又像是一个生命的指示器,书写着“生命体”(项目)的成长过程。而随着“脉搏的跳动”,软件不断地发展成熟,项目一步一步地接近项目目标。 同时,为了更好地应对变更,满足不断变化的业务发展要求,IBM还推出了“整体团队协作(WholeTeam)”最佳实践,它更加强调用户参与,强调建立团队的自适应、可持续的开发速度和自组织能力,通过团队的紧密协作,快速应对业务需求的变更;通过使整个软件开发团队更加关注客户需求变化,帮助客户更大地提交业务价值。通过“整体团队协作”最佳实践,确保团队围绕着如何实现迭代目标、如何快速交付业务结果进行自组织开发,保证团队的整体绩效。在自组织团队中,工作分配模式从由项目经理分配(推)向团队成员主动承担(拉)的模式转变,相关决策也是由最接近第一线的人进行。 每个团队成员都是工作的负责人,个人的成功就是团队的成功,反之亦然。通过前面的讨论,可以发现,IBM敏捷最佳实践能够有效克服软件交付项目管理的挑战,帮助实现敏捷开发项目的管理。基于这些敏捷最佳实践,业界也产生了很多的敏捷项目管理方法,Scrum和OpenUP就是其中最著名的两种。 配合IBM敏捷最佳实践,2008年,IBM还推出了创新的软件交付团队协作平台——Jazz平台,它能够帮助敏捷项目团队快速实现敏捷的软件交付项目管理。 3 IBM Jazz平台与敏捷的软件交付项目管理 3.1 IBM Jazz平台简介 顺应全球化趋势和Web2.0时代的到来,IBMRational推出了创新的软件交付协作平台——Jazz平台,它是IBMRational精心设计,专门面向全球化、跨地域团队开发的软件交付协作平台,能够改变人们协作构建软件的方式,提高软件交付的自动化、协作性和透明度,它的出现标志了软件交付2.0时代的到来。 Jazz平台基于Internet,提供了统一的软件交付平台,彻底屏蔽了地域的概念,为全球化软件协作交付团队提供了完美解决方案;它基于组件的架构模式,使软件交付生命周期各种能力以服务组件的形式存在,能够无缝地集成软件生命周期各个阶段的任务;它是基于开放的国际标准,通过社区驱动的软件开发模式创造的一个开放、可扩展、高效的协作开发平台。基于这一技术,企业可以自由选择各种组件化的生命周期管理产品和流程,以服务组件的方式,通过Jazz平台提供的统一企业服务总线和数据管理能力,组成了灵活的、可扩展的企业软件交付生产线。 客户可以根据自身发展需要,替换、升级某个服务组件,同时避免影响交付平台的其他部分,这能有效地保护客户投资。 3.2 敏捷的软件交付项目管理工具——IBM Ra t i o n a l Te amConcert IBM Rational Team Concert(简称RTC)是IBM基于Jazz平台推出的第一款商业产品,这是一个协作式的软件开发平台(图5)。Jazz平台的创新技术赋予RTC集中的数据存储和协作服务,在此基础上,RTC完美地实现了配置管理、工作项管理、构建管理能力,能够有效支持“持续集成”和“每日构建”最佳实践。同时,基于Jazz平台的流程和团队感知能力以及各种基于Web2.0的创新技术,RTC为整个软件交付项目团队提供了无障碍沟通协作和报告能力,实现了整体团队最佳实践;基于内置的敏捷开发方法(包括Scrum、OpenUP等),RTC提供了两级项目规划和项目自动化执行跟踪能力,实现了迭代式开发和“两级项目规划”最佳实践。基于Jazz平台的协作能力,RTC为整个软件交付团队提供了一个没有地域限制的虚拟世界的舞台,使团队成员无论身在何处,都像身处同一舞台,在其正在工作的上下文环境中进行实时地协作,特别是当他们处在一个跨地域的工作环境中时,实现彼此的密切协作。 (1)项目启动。使用RTC工作项管理功能,项目经理能够方便地完成项目需求定义和收集,为团队提供统一的需求列表或产品订单(ProductBacklog)。 (2)项目规划。利用RTC的项目规划能力,项目经理能够快速完成项目级粗线条的项目规划或发布规划和迭代级详细的迭代计划。 (3)项目执行。通过内置的敏捷开发过程或其他定制过程的动态执行,RTC可以指挥整个项目团队密切协作,高效工作。 在RTC中,迭代计划中的每个任务都是一个工作项,项目经理可以基于预定义的工作流,将其分配给指定的团队成员,实现工作任务的自动流转。同时,开发人员基于各种工作项进行开发活动,生成的代码和文档可以直接通过RTC内置的配置管理功能存入配置库,实现完整的配置变更管理;通过RTC内置的构建管理功能,完成代码的构建、编译链接和发布,实现需求的全生命周期跟踪和监控。 (4)项目监控。通过各种Web2.0的创新技术的应用,项目经理和团队中的每个人都能够非常方便地了解整个开发团队的组织结构,了解团队中每个人的角色和职责分工,实时了解团队的工作进度和工作状况;通过Feeds、Wiki,Blogs以及即时通信等服务,当存储库中被关心的对象数据变化后(如:源代码变更、工作项状态发生变化等),Feeds服务会主动根据订阅记录进行广播,让所有相关开发人员能够在最短的时间内掌握最新动态,实现高效协作沟通和响应。 (5)项目收尾:使用RTC,软件交付团队可以把团队经验和教训反映到项目管理的过程定义中,同时,通过将其导出成为新的模板,供其他项目团队使用,实现经验教训的固化和重用。使用RTC,敏捷交付项目团队实现了集成的源代码控制、工作项管理和构建管理等,提供了整个开发生命周期的自动化追踪和审计能力。项目经理则可以直接从实际工作中汇总出来的准确的项目健康信息,准确地、自动地捕获项目数据,自动地生成各种所需项目报告。 4 结语 “物竞天择,适者生存”,大自然的基本定律同样决定了软件交付项目管理的发展历程。适应快速的业务变化和企业全球化竞争要求,项目管理者在不断的积极进取中,传承、创新、演绎着敏捷项目管理长青的故事。 在顺应趋势,追求敏捷项目管理能力的征程上,IBM敏捷最佳实践和Jazz平台,为敏捷项目管理团队提供了全面的方法指南和协作平台支撑,能够帮助团队快速实现真正敏捷的项目管理。

你可能感兴趣的:(工作,敏捷,敏捷开发,项目管理,IBM,协作平台)