1. 引言
伴随着信息时代的高速发展,软件开发公司面临着需求变化大、开发时间压缩、产品生命周期短的情况,迫切需要加速开发节奏,以适应市场变化以及客户的期望,同时,又需要兼顾顾客对产品质量的要求。因此,很多公司开始考虑优化既有的开发流程方式,同时也寻求更有效率的开发方法,敏捷式软件开发方式就是其中的一种。
企业对导入敏捷式软件开发方式意愿不足的原因,主要有以下几个原因:
1) 多数软件开发公司采用传统直瀑式开发方式已有多年,对于采用敏捷式开发方式并不熟悉,对于需要承担额外成本而导入新的开发方式主观意愿不足;
2) 目前对于软件开发项目的投入与产出的关系难以衡量,更缺乏针对不同开发方式绩效的理论研究依据,进一步造成企业对于导入新的开发方式的尝试意愿;
3) 如何依据项目特点,选择适合的软件开发模式,在此基础上,在项目执行过程中需要关注哪些指标影响因素,尚未发现有类似方向的研究作为参照。
综上,企业不愿意导入敏捷式开发的原因,很大程度在于对敏捷式开发过程其不了解,且无法评估其效益。然而,导入敏捷式开发是否真的能够协助需求变化大、开发时间紧迫、产品生命周期短的商务软件功能开发,尚需进一步加以证实。本文将以本人以往参与的商用软件开发项目为例,以直瀑式与敏捷式软件开发方式的投入与产出进行比较,运用数据包络法分析对比两者在项目开发效率方面的差异,为企业在选择适用于不同项目特点的软件开发方式时提供参考依据。
2. 文献研究
软件项目开发方式方面,典型的软件开发模型有直瀑式模型、敏捷式模型、递增模型/演化/迭代、雏形模型、螺旋模型、喷泉模型、智能模型与混合模型 [1] 。目前较为流行的软件开发主要采用直瀑式模型和敏捷式模型,其中,直瀑式模型是Winston W. Royce在1970年提出的至今仍被广泛运用的软件开发模型 [2] 。Pries 和Quigley提出 [3] ,直瀑式模型必须将持续时间限制在6个月以内,若项目超过该期限,团队应从传统的瀑布方法转换为敏捷型、迭代或混合型方法。因为瀑布模型面临的主要挑战是项目持续时间越长,需求变更范围就越大,因此,项目结果预计会有更多的变化与风险。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发 [4] 。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态 [5] 。
软件开发项目绩效评价指标方面,Jamie A. Gruman等指出 [6] ,员工敬业度和专业度对软件开发项目绩效起到决定性的影响,企业应当从以上两个因素采取措施可显著提高项目绩效水平。Kani等认为 [7] ,软件项目测试用例执行效率情况以及项目上线后系统缺陷情况应纳入软件开发项目绩效评价指标中。侯庆坤提出 [8] ,软件项目的指标体系应包含管理、业务和技术三大维度,其中管理维度指标应包含进度、成本、项目质量、沟通有效性、风险管理、问题管理等指标;业务维度指标应包含业务规划设计的合理性、业务创新性等细化指标;技术维度则包含研发能力评价、研发效率情况、研发质量情况等细化指标。吴海燕的研究显示 [9] ,软件项目绩效评估体系应通过软硬件资源配置能力、创新能力、决策能力、团队协作能力和学习能力对软件项目结构组织与管理进行评价;软件项目技术特征评价需要考虑需求明确性、技术成熟度、开发复杂度、运行稳定性、风险可控性等因素;软件项目产出评价需要考虑项目成本执行情况、开发周期、项目效益、用户满意度、市场竞争力和可持续发展能力等因素。
软件开发项目绩效评价方法方面,刘继宁提出 [10] ,以LY公司为例,通过采用KPI绩效考核方法对敏捷开发过程进行评估后,制定了一个合理的绩效管理方案,提出针对敏捷开发模式的软件开发项目管理优化措施。陈强指出 [11] ,以H公司为研究对象,通过对数据的收集与整理,确定敏捷开发团队的团队合作及团队领导力会影响项目绩效。张丽荣的研究中 [12] ,通过质量功能展开方法对收集的数据进行分析,确定了16个影响软件项目绩效的因素,并结合软件开发项目的特点,建立了敏捷开发模式下的软件项目绩效评价体系模型,并将其应用于企业中,证明评价体系模型的可行性和有效性。
3. 理论基础
数据包络法(Data Development Analysis,简称EDA)是以相对效率概念为基础发展起来的一种新的绩效评价方法。数据包络法分析其本质原理是通过决策单元(Decision Making Unit,简称“DMU”)的输入和输出数据进行综合分析,得出每个DMU效率的相对指标,然后将所有DMU效率指标排序,确定相对有效的DMU,并给出应该改进的方向和程度,为管理人员提供管理决策信息。
数据包络法有多种模型,包括CCR模型、BBC模型和交叉模型等等,其中最为常用的是CCR模型和BBC模型两种,本文研究主要采用CCR模型进行分析。CCR模型是通过投入一定数量的生产要素,并产出一定数量的产品经济系统来判断各个单元的相对合理性和有效性。从投入资源的角度看,在当前产出的水准下,比较投入资源的使用情况,以此作为效益评价的依据,故称为“投入导向模式”。其模型如下 [13] :
假设数据分为n个DMU,m个输入(投入)变量,s个输出(产出)变量,
为第k个DMU的第i个产出值。
为第k个DMU的第j个投入值。
定义第j个DMU的效率评价指数 为:
其中,
;
,
为决策单元k的第i个产出值及第j个投入值的权重。
评价第j个DMU的效率数学模型为:
目标函数:
约束条件:
,
,且,
。
数据包络法最突出的优点是无须任何权重假设,每一个输入/输出的权重不是根据评价者的主观认定,而是由决策单元的实际数据求得的最优权重。因此,数据包络法排除了很多主观因素,具有很强的客观性。
4. 分析过程
4.1. 研究对象
本文的研究对象选择本人近10年来任职的A和B两家公司,其中,A公司在2015年组建了一只新团队,尝试采用敏捷式开发方式进行项目管理,B公司将项目团队分为若干小组,同时间至少有一组团队采用敏捷式开发模式,其它则依旧采用传统直瀑式模式,希望通过不同的开发方式比较出二者效率上的差异。
所选项目案例分别源于A与B两间公司近几年来8个较为典型的商用软件开发案例,并按照项目研制周期长短将项目分为短期(0~3个月)与中长期(3~12个月)两类,各类分别挑选4个项目相互比较。并根据项目属性中,投入将选择既能量化且具有代表性的指标,包含项目的规划时间、开发时间、项目经理(PM)与平均团队工作年限(经验)等要素;产出部分则参考PMP九大知识领域要素中的项目范围、项目时间、项目成本与项目质量等,并以二元自评结果作为项目完成后的是否符合预期的比较基准。项目情况如表1:
4.2. 数据处理
鉴于DMU数量不多,本文将投入与产出项进行维度缩减,整合为三项投入与一项产出,以符合DMU与投入产出的维度要求。其中,投入分为规划时间、开发时间与经验,这里的“经验”为项目经理与团队平均从业年限之和;产出则为项目结果是否符合范围、是否符合时间、是否符合成本、是否符合质量等四项二元值之加总。具体如表2所示。

Table 2. The input and output of project after the dimension optimized
表2. 维度优化后项目投入与产出表
为避免短期项目与中长期项目中规划时间数值差异较大,投入项中拟采用规划时间比率(即规划时间/(规划时间 + 开发时间))与开发时间比率(开发时间/(规划时间 + 开发时间))作为新基准,同时,由于规划时间与开发时间数值差异过大,将原数值取log作分析比较,以确保数据分析可靠度,数据处理后结果如表3所示。

Table 3. The input and output of project after the data treated
表3. 数据处理后项目投入与产出表
4.3. 数据分析
本文研究对象中,共有8个决策单元DMU,即n = 8;每个决策单元有3种类型投入,即投入指标m = 3,分别是“规划时间”、“开发时间”和“经验”;1种类型的产出,即产出指标s = 1,分别是“项目达成度”。
根据式① (投入导向的CCR对偶模型),根据表3的各项投入与产出因素,利用Matlab编程求解效率评价指数得到整体效率,效率值越高代表项目执行的越有效率,项目绩效排名结果如表4所示。

Table 4. The project efficiency value and ranking on CCR mode
表4. CCR模式下项目效率值与排名
分析结果显示,八个项目的平均执行效率值为0.7,有二项项目效率值为1,达到完全效率,三项高于平均值,另外三项则均低于平均值。整体上看,短期项目相对效率明显高于中长期项目相对效率。
利用Matlab编程,得到各DMU的实际数据求得的最优权重,如表5为各DMU与投入产出间权重关系。

Table 5. The weight relationship on CCR mode
表5. CCR模式下权重关系
分析结果显示,规划时间的比重越高,项目的相对效率也较高,项目成员的工作年限越高,项目的相对效率越高。
5. 结论
本文通过采用数据包络法,分别探讨了两家不同软件公司,在采用直瀑型和敏捷型软件开发模式下,针对短期与中长期开发周期的8个商用软件开发项目的各项投入与产出因素进行项目效率对比分析,研究结果显示其相对效率是否有明显差异,分析结论如下:
1) 不论是采用直瀑式还是敏捷式软件开发模式,短期项目因范围小,开发过程中涉及外界变量变化小,其相对效率较高。
2) 项目执行过程中,规划时间的比重越高,其项目的相对效率也较高。
3) 项目经理及项目团队成员整体的工作年限越高,项目的相对效率越高。