摘 要:敏捷开发模式是近些年来国内外软件领域的研究热点,在大型商业软件开发项目中使用敏捷开发模式并引入开源软件提高开发效率已成为各软件公司的开发优选模式,如何对此开发模式进行有效的风险管理就显得尤为重要。文章分析了敏捷模式下引入开源软件的主要风险类型,并对风险管理流程进行了探析。
关键词:敏捷开发;开源软件;风险管理
中图分类号:F270 文献标识码:A 文章编号:1008-4428(2017)02-12 -02
一、引言
现代商业环境充满竞争,产品更新换代越发得迅速。这样就迫使软件产品的开发周期大大缩短。为争取或维持产品的领先地位,开发团队需要迅速作出决断,缩短研发周期,传统的瀑布式研发模式显然无法适用。在此商业背景下,敏捷开发模式应运而生。敏捷开发模式的起源可以追溯到2001年的敏捷联盟及其发表的《敏捷软件开发宣言》。到了2007年大概有超过4700名专业人士同意并签署了这份宣言,确认敏捷方法是一种能够容纳变更的软件工程架构。敏捷开发模式是一种以人为核心,迭代、循序渐进的开发方法。在这种模式下的软件产品开发过程当中,一个大项目会被拆分为多个功能上有联系但是可以各自独立进行的小项目,并分布到不同的项目开发组中进行独立开发,在此期间软件产品一直处于可用的状态。敏捷开发模式由其主要的价值关注点决定了其更看重产品开发对变化的迅速响应,同时也弱化了对过程和文档的重视程度。因此这种模式下各个小项目组内部沟通更顺畅,自主行为更突出,各个项目组技术实力以及对产品理解能力也各有差距。
开源软件已其快速、开放的代码资源也已成为日渐流行、同时也广受争议的软件模式。开源软件(Open Source Software)定义为开放源代码软件的简称,这个概念起源于20世纪90年代。同时开放源代码创始组织(Open Source Initiative Association,簡称OSI)的定义指出,开源软件是在满足一定条件下,允许任何人使用、拷贝、修改、分发(免费或少许收费)的软件。现在随着开源软件产业的蓬勃发展,已有越来越多的商业软件公司选择与成功开源项目合作,因为这样可以通过重用开源软件代码来节省开发成本,在开发过程中跟敏捷开发模式结合更是将整个产品开发时间大大缩短,这种开发效率的大幅度提高对于商业软件公司来讲是面对激烈市场竞争的有力优势。因此各类大公司纷纷加入开源软件的开发当中,又或者选择与开源组织合作,以确保竞争优势。
虽然敏捷开发中同时引入开源软件对软件产品的开发来说是极大的优点,但同时也存在一定的风险。从法律角度来说,开源软件虽然不像商业软件一样有一个具体供应商和确定的出售价格,但其仍然是受到知识产权相关法规的保护的。如果对开源协议不理解就直接引入开源软件,依然会因为侵犯了开源软件版权而受到开源组织甚至其他商业公司的法律追究。同时开源许可证的最为典型的通用公共许可证GPL(General Public License)规定,只要软件中任何源代码应用了GPL许可证,此软件的全部源代码需公开,显然,这对商业化的软件产品而言是不能接受的。另外从技术角度来说,开源软件本身的稳定性以及引入开源软件后软件产品质量的保证也是一个需要考虑的问题。这些都对敏捷开发项目组成员的开源软件知识有很高的要求,如果希望获得软件开发过程当中引入的每一个开源软件具体信息并加以控制,完全依赖产品各个独立项目组显然是有极大风险的。本文将具体分析敏捷开发模式下引入开源软件的主要风险类型,并将对风险管理流程进行深入探析。
二、敏捷开发模式下产品引入开源软件的风险分析
由于软件产业的特殊性,使得产品在开发周期中存在众多不确定因素。总的来说,软件开发的风险管理分为两个部分:风险评估和风险控制,风险评估分为风险识别、分析和优先级排序;风险控制分为风险计划过程、解决过程和控制过程。其中风险识别和分析是最重要的部分。
由于敏捷开发模式下产品项目分为多个子项目,这就使得协调这些子项目、合理调配资源变得复杂。开源软件的引入又进一步带来了法律风险和代码稳定性的风险,使得整个项目的分析调控变得更为复杂。因此,在敏捷开发模式下引入开源软件的风险的迅速识别分析显得尤为重要。主要体现在以下几个方面:
(一)环境内部风险
1.技术风险。软件开发的技术风险主要是不能或延迟完成技术突破的风险。由于突破技术难关是新产品开发项目的重中之重,所以,项目团队能否突破技术难关解决新产品技术问题是软件开发项目的一个很大的技术风险。此外,在产品的设计、测试、接口维护等问题也存在着不可预见性,如果其中一环出现问题就可能会带来巨大的软件开发风险。
2.产品稳定性风险。开源软件的贡献者是广泛的,可能分布于世界各地,也有可能多位或者几十上百位开发人员共同开发一个开源软件,直接造成了开源软件源头的复杂性。开发人员的专业背景不同,代码写法也不尽相同。作为需要有稳定产品输出的商业软件开发团队来说,使用开源软件其对产品的稳定性和成熟度方面是有较大风险的。
(二)环境外部风险
1.著作权保护问题。商业软件是受著作权保护的。开源软件的发布是采用Copyleft方式的但同样是有版权保护的。它允许他人任意地散布、修改作品,但Copyleft的方式又会限制其行为和作法。开源软件的著作权所有人拥有除复制权、修改权等以为所有的权利。所以认为可以对开源代码为所欲为的观点是极具风险的。另外,开源软件本身也存在着著作权归属不明确的问题。
2.专利保护问题。是一种保护力度还要高于著作权的保护权法,专利权对技术有更强的垄断性,它是一种绝对权,同时保护专利过程和方法。近些年,关于利用开源软件涉嫌侵犯商业软件专利的法律纠纷有许多。在开发环境下应用开源软件不得不考虑专利权方面的问题。
3.软件开发许可证。许可证的定义不同是开源软件和商业软件的本质区别。在商业软件许可证中,许可方的版权归属和权利义务是明确的,被许可方要支付软件使用的许可费用。但在开源软件许可证中,只是明确了被许可方是否能够发布源代码、对源代码进行修改需满足的要求等,不涉及许可方软件许可费、维护支持的内容。所以在进行开源代码研发时,软件开发许可证的有无和义务的界定也增加了软件研发的风险。
三、敏捷开发模式下产品引入开源软件的风险管理
风险管理的目标不是拒绝使用开源软件,而是通过有效的管理手段来使引入开源软件后收益最大化,潜在风险最小化。
(一)敏捷开发模式下引入开源软件的风险管理
敏捷开发模式下项目的执行可以适应前段需求的变化,在项目管理的过程中各个子项目的周期可以根据需求的变化及时调整项目的实施,从而可减小风险,在每个子周期后向客户交付成果并可以和客户交流从而降低风险。敏捷开发环境下引入开源软件的风险管理可以从以下几个方面入手:
1.由于敏捷开发模式下的软件开发项目被拆分成众多子项目,降低风险可以通过缩短软件的交付时间来实现。可以根据客户随时的新需求快速调整研发方向。另外要注重外部环境的变化,如市场创新技术的出现等,及时跟进并作出调整,从而进一步缩短研发周期,降低研发风险。
2.加强研发团队内部开发人员的专业培训和培养,对在项目开发过程中加入的新人员必须让其快速有效地适应工作,最好要引进能够解决关键技术的专业级优秀人才,做好团队内部的员工福利,防止关键人员的流失,聘请相关技术专家定期做专业培训,已降低技術研发过程中造成的风险。
3.各个项目组之间和对客户及时有效地沟通是降低风险的关键因素。不同于传统的瀑布式开发环境,各个子项目组同时负责项目的不同部分,工作同时开展,项目之间及时有效地沟通就显得尤为重要。通过沟通,可以有效地加强开发团队的凝聚力、向心力。加强客户、管理者和开发者之间的沟通交流,通过网络电话会议或现场办公的形式,及时有效地传达客户的需求和反馈研发的进度。
4.针对引用开源软件造成的外部环境风险,在研发组内部引入第三方软件协调员机制。其主要负责第三方开源软件的引入、审核和对外沟通。确保在源头上使得开源软件的应用风险降到最小。加强内部开发人员开源软件的专利、著作权意识,做到“有需即用,用则无险”。设立开源软件内部数据库,用来存储当前公司已经获得了许可证的第三方软件,以便于使用和对比。同时,软件研发企业必须规范管理和开发并建立严格的开源软件审查机制,禁止开发人员在网上随意抓取代码。
(二)敏捷开发模式下引入开源软件风险管理流程
图1所示为敏捷开发模式下引入开源软件的管理工作流程。第三方软件协调员在整个产品开发过程当中负责保证引入第三方软件(包括商业软件或开源软件)后应该遵循的步骤和采取的行动。遵循的步骤和行动需由公司内部研发团队综合具体分析得出。同时设立第三方软件数据库,用来存储当前公司已经获得了许可证的第三方软件,以便于使用和比对。
从已有的敏捷开发模式下的第三方软件策略开始,根据当前策略对产品开发过程当中各个项目组主动上报或通过自动化扫描工具发现的第三方软件进行鉴定。如果此第三方软件是公司第三方软件数据库中已经获得安全使用权限的,则直接使用并正常进行产品开发;如果此第三方软件是公司第三方软件数据库中没有的,就需要第三方软件协调员去申请相应的许可证以确保第三方软件的正常使用,在获得批准之后再继续正常产品开发;整个产品开发完成之后要进行集成和产品发布,最后生成最终报告。
这个流程的实施就从源头上止住了非许可的第三方开源软件的流入,从而确保了研发产品的专业性和稳定性,把外部环境风险降到最低。
四、结语
作为一种新兴的商业软件开发模式,在敏捷开发环境下引入开源软件正在日渐成熟,它必将会改变未来软件产业的格局,有利地促进软件技术研发的更新换代。在开源软件的法律保护还不完善的现状下,引入开源代码开发商业软件确实存在一定的风险,这些风险不应被忽视,但也不应被夸大。风险贯穿于项目的整个周期中,及时有效且持续的项目风险管理,建立优良的风险管理机制及对应的决策机制是当今软件研发项目成功之匙。
作者简介:
刘海荣,东南大学MBA在读研究生,现供职于南京爱立信熊猫通信有限公司。