Computer Science and Application
Vol.07 No.05(2017), Article ID:20629,10 pages
10.12677/CSA.2017.75052

The Effort Distribution of Software Development Phases

Yong Wang, Jing Zhang

College of Information Science and Engineering, Ocean University of China, Qingdao Shandong

Received: May 7th, 2017; accepted: May 21st, 2017; published: May 24th, 2017

ABSTRACT

In order to effectively control the software development process, understanding the distribution rules of different life cycle phases is needed. This paper analyzes the effort distribution of development phases on the basis of a large-scale real software project data set-EDS. It is found that the phase effort is consistent with the normal distribution, and the effort distribution of New Development type and Enhancement type is consistent. There are significant differences in the distribution patterns between the Other Projects & Services type and the other three development types. As the duration of the project grows, the effort of Produce phase is on the rise and the Implementation phase effort is declining. The results of the study are quite different from the traditional results based on the individual project or small-scale data sets, which have a good effect on software project effort management and schedule control.

Keywords:Software Project Management, Development Phases, Normal Distribution, Schedule Control

软件开发阶段成本分布研究

王勇,张敬

中国海洋大学信息科学与工程学院,山东 青岛

收稿日期:2017年5月7日;录用日期:2017年5月21日;发布日期:2017年5月24日

摘 要

为了对软件开发过程进行有效控制,需要了解软件生命周期不同开发阶段的成本分布规律。本文通过分析一个大规模真实软件工程项目数据集-EDS,对不同开发阶段成本的分布规律进行了全面地揭示,发现各开发阶段成本符合正态分布,New Development类型和Enhancement类型的项目成本分布一致,Other Projects & Services类型和其他三种开发类型项目成本分布存在显著差异。随着项目持续时间的增加,Produce阶段成本呈上升趋势,Implement阶段成本呈下降趋势。本文的研究结果与传统基于单个项目或小规模数据集上得出的结果有较大不同,对软件项目成本的管理和进度控制有较好的促进作用。

关键词 :软件项目管理,开发阶段,正态分布,进度控制

Copyright © 2017 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

1. 引言

软件开发过程中合理的成本分配是促进软件项目规划的基础 [1] [2] [3] [4] ,做好软件项目在开发过程中的成本分配工作,有利于软件项目的成本管理和进度控制,但是与成本估算的其他研究相比,成本分配极少引起研究者的关注。软件开发阶段成本分布研究,可以提高人们对成本分配的理解 [5] ,从而对成本进行有效控制,改善软件项目开发过程。

现有的研究中,Norden [6] 认为瑞利曲线符合人员分配随着时间变化的趋势,而且发现在尾端部分的过长曲线没有实际意义。MacDonell [7] 认为对于特定的开发活动,不存在一种“标准成本比例”,并且肯定了简单的定量分析方法和局部数据的价值。杨叶 [8] [9] 等人研究了CSBSG数据库中的项目成本数据,在开发类型、软件规模和开发团队规模等方面分析了软件成本分布的情况,还单独对维护类型的工业项目成本进行了分布模式的研究,认为在多种因素的影响下,成本分布变化较大。Heijstek [10] 为提高对项目动态分配资源方面的理解,研究了RUP模式下成本分布情况,在项目开发早期提供成本分配的参考意见。

在这些已有的研究工作中,有按照传统瀑布模型和COCOMO模型进行成本分布的研究,也有按照RUP模式进行的分布研究,重点对某一工业类型项目的成本分布研究 [9] [11] 。但是这些研究的项目数大都在一百以内,缺少对大规模数据集及多种开发类型、不同持续时间项目的阶段成本分布研究。本文以课题合作伙伴提供的大规模软件项目数据集EDS为依据,从数据集总体以及多种开发类型、不同项目持续时间等方面研究了软件项目开发阶段成本的分布情况和相应差异,能够有效指导项目经理对项目资源进行分配。

2. 数据预处理

2.1. 数据集概述

本文在大规模的历史项目数据集-EDS进行研究,数据集共包含14054个软件项目,各类信息数据上万条,是目前世界上规模最大的软件工程数据集之一。其中,项目集属性众多,如表1所示。原始数据集中包含多种开发方法学,每种方法学都具备相应细化的开发活动阶段。同时,数据集中的项目来源于多种行业,例如电信业、制造加工业、政府机构等;开发类型也多种多样,既有新开发的软件项目,也有对软件产品的维护项目;项目所属国家包含美国、新西兰、法国等;项目所采用的开发团队规模也大小不一;项目开发时间从上世纪七十年代至今。

数据集中各开发阶段所包含的详细开发活动,如表2所示。其中Define & Analyze阶段对应于问题

Table 1. Partial property set of the dataset

表1. 数据集部分属性集列表

Table 2. Development activities included in each development phase of the data set

表2. 数据集各开发阶段所包含的开发活动

定义和需求分析阶段;Design阶段对应于系统设计和详细设计阶段;Produce阶段对应于编码阶段;Optimize阶段对应于测试阶段;Implement阶段对应于实施交付阶段。

2.2. 数据筛选

为了获得实验数据集,对原始数据集中的项目进行筛选,步骤如下:

1) 在原始数据集14,054个项目中,筛选出通用方法学ID为20的项目,得到8540个项目;

2) 将包含开发阶段成本数据的项目筛选出来,共6879个项目;

3) 按照生命周期中的开发阶段进行成本汇总,得到6879个项目的成本数据;

4) 筛选出包含完整生命周期的项目,共计2588个项目;

5) 去除这些项目中各开发阶段成本中存在零值的项目数据,剩余2570个项目。

2.3. 归一化处理

表3,各开发阶段的均值和中位数差别较大。由于项目规模、开发类型等因素的影响,软件项目各

生命周期阶段成本数值大小各异,不利于研究软件项目的阶段成本分布,因此,对数据进行归一化处理。

归纳统一样本的统计分布性,可以更清晰地分析软件项目的阶段成本分布情况。本文将阶段成本数统一转化为各阶段比例关系,即各开发阶段成本所占项目开发总成本的比例,如表4

表4可知,阶段成本进行归一化后,均值和中位数之间的关系,与未进行归一化之前的数据关系大有不同:经过归一化之后的成本中位数和均值的差异不明显,在Produce阶段仅仅相差0.26%,而Design阶段相差1.56%,Define & Analyze阶段相差2.63%,Implement阶段相差最大是3.71%,进行归一化之后的数据更加直观合理。对阶段成本进行归一化操作,转化为各开发阶段成本所占该项目总成本的比例,得到实验数据集。

3. 实验结果与分析

3.1. 数据集总体阶段成本分布

根据项目阶段的成本信息绘制出各阶段成本分布的频数直方图和概率密度估计曲线,如图1。其中,左坐标表示成本分布的频数,右坐标表示成本分布的概率密度估计大小。图像表明,Define & Analyze阶段、Design阶段、Produce阶段成本的概率密度曲线光滑,类似正态分布的趋势,尤其是Produce阶段的成本分布曲线与正态分布曲线一致性较高,呈现正态分布的完整曲线,Optimize阶段,Implement阶段的概率密度曲线光滑,大致呈现正态分布曲线的半峰形态,向右滑动。同时,Produce阶段的分布范围比较广泛,大致在10%~70%的范围内,呈现比较大的跨度,而Define & Analyze阶段、Design阶段、Optimize阶段、Implement阶段的分布大致局限在5%~30%范围内。这对于未来项目的成本分配在一定程度上提供了参考意见。

3.2. 各开发类型项目阶段成本分布

开发类型主要包括四类:New Development、Enhancement、Maintenance、Other Projects & Services,各开发类型对应Type_ID如表5表6是四种开发类型项目信息,New Development类型花费的成本是最

Table 3. The statistical description of software project effort

表3. 软件项目成本数据统计描述

Table 4. The statistical description of the development phase effort ratio

表4. 各开发阶段成本比例统计描述

Figure 1. The frequency histogram and probability density curve of each development phaseeffort distribution

图1. 各阶段成本分布频数直方图和概率密度估计曲线

Table 5. The corresponding ID of each development type

表5. 开发类型对应ID

Table 6. The project information of each development type

表6. 各开发类型项目信息

多,显著大于其他开发类型的项目成本,其他的三种类型的总成本在3000到4000人小时之间,其中Maintenance类型的项目总成本花费最少。

根据不同开发类型项目的阶段成本信息绘制成本分布折线图,如图2。各开发类型项目Design阶段的成本约是Produce阶段的一半。在开发阶段的成本之间,可能存在重要的分布关系。各类型项目花费在Implement阶段的成本是最少的,而Other Projects & Services类型在Implement阶段的成本比例在所有开发类型中最高。New Development类型和Enhancement类型的项目成本分布比较一致,Other Projects & Services类型与其他类型项目在成本分布上有显著差别。New Development类型项目在Produce阶段的成本较Enhancement类型项目高(约2.29%);Enhancement类型项目在Optimize阶段成本比New Development类型项目较高(约2.77%),这和杨叶关于开发类型这一属性的研究结果 [8] 相同。出现这种差别的原因是

Figure 2. The line chart of each development type project phase effort distribution

图2. 各开发类型项目阶段成本分布折线图

Enhancement类型的项目编码并不是对于整个项目编码,只是针对某一部分功能编码,而在测试时,进行的是功能模块单元测试以及整个系统的集成测试。因此,相对来说,Enhancement类型在Optimize阶段的成本比例较高。另外,Enhancement类型和Maintenance类型的分布,在后期开发阶段的成本分布折线几乎是重合的,主要区别在Define & Analyze阶段和Design阶段:Maintenance类型在Define & Analyze阶段高出大约4.18%,而Enhancement类型在Design阶段高出3.31%,这是因为Enhancement类型在添加新功能时进行设计,与Maintenance类型侧重阶段不同。在成本规划过程中应注意开发类型对成本分配的影响。

3.3. 不同持续时间项目阶段成本分布

项目持续时间,指从软件项目开始一直到测试、交付等软件活动结束所占的时间跨度。本文中以月为基本单位进行度量。实验数据包含持续时间为4至20个月的项目,按照不同持续时间对项目进行分类。

表7,根据成本均值和中位数可知,项目总成本和项目持续时间呈正比例关系,以此数据画出项目持续时间与项目总成本散点图。同时,绘制相应的指数趋势线和线性趋势线,得出项目总成本随项目持续时间而变化的趋势情况,如图3图4

判定系数R2可以衡量回归曲线拟合样本的优劣程度,其值越接近1说明拟合的效果越好。相比项目持续时间和项目总成本之间的线性增长关系(判定系数R2为0.8808、0.8975),它们之间的指数增长趋势线(判定系数R2为0.9373、0.967)与数据之间的拟合效果更好,这一点不论是从趋势线的拟合程度还是判定系数R2上,都可以得到体现:指数趋势线的相关程度大于线性趋势线的相关程度。项目持续时间和项目总成本之间的这种回归关系在项目管理和成本控制方面提供了重要的参考。

持续时间为4至20个月的项目阶段成本比例数据,如表8所示。

根据表8绘制阶段成本比例与项目持续时间折线图,更直观看到结果,如图5

项目持续时间在4~10个月时,各开发阶段的成本分布趋势比较平稳。随着项目持续时间的增加,在10~20个月之间,Define & Analyze阶段、Design阶段的变化趋势大致同步:Define & Analyze阶段的相对花费成本上升或者下降时,Design阶段随着Define & Analyze阶段的变化而变化。Produce阶段成本随项目持续时间的增加呈上升趋势,Implement阶段相对成本呈下降趋势,也就是说随着项目持续时间的增加,在Produce阶段的成本增多,在Implement阶段的成本减少。

Table 7. The software project information for duration from 4 to 20 months

表7. 持续时间为4~20个月的软件项目信息

Figure 3. The exponential trend between the duration and project total effort

图3. 持续时间与项目总成本指数趋势图

Figure 4. The Linear trend between the duration and project total effort

图4. 持续时间与项目总成本线性趋势图

Table 8. The average phase effort ratio for project duration from 4 to 20 months

表8. 持续时间为4-20个月项目的阶段成本比例(mean)

Figure 5. The trend of project phase effort ratio under different durations

图5. 不同持续时间下阶段成本比例变化趋势

4. 结论

本文基于大规模软件项目数据集EDS,研究了软件开发成本的阶段分布情况。本研究从数据集总体、多种开发类型以及不同项目持续时间等方面分析了项目成本分布情况。研究结果显示软件生命周期各开发阶段成本符合正态分布的规律;New Development开发类型和Enhancement开发类型的项目成本分布一致性较高,而Other Projects & Services开发类型项目和其他开发类型项目成本分布存在显著差异;Produce阶段成本随着项目持续时间增长而上升,相反,Implement阶段成本随着项目持续时间增长而降低,同时在项目持续时间为10~20个月时,Define & Analyze阶段、Design阶段成本的变化趋势同步。本文的研究对阶段成本的建模预测提供了一定的理论基础作用,对各开发阶段的成本分配有重要的参考价值,在软件项目成本管理和进度控制方面提供了有效地指导。后续研究将继续探索其他因素对软件阶段成本分布的影响,如团队规模、软件大小等因素,为改进软件项目管理提供更丰富的指导意见。

基金项目

本论文得到国家自然科学基金面上项目(61170312)及软件工程国家重点实验室开发基金项目(SKLSE 2012-09-14)的支持。

文章引用

王 勇,张 敬. 软件开发阶段成本分布研究
The Effort Distribution of Software Development Phases[J]. 计算机科学与应用, 2017, 07(05): 428-437. http://dx.doi.org/10.12677/CSA.2017.75052

参考文献 (References)

  1. 1. Boehm, B.W., Horowitz, C., et al. (2000) Software Cost Estimation with COCOMOII. Prentice Hall, Upper Saddle River, 1-4.

  2. 2. Reifer, D.J. and Consultants, R. (2004) Industry Software Cost, Quality and Productivity Benchmarks. The DoD Soft-ware Tech News, 7, 3-4.

  3. 3. Heijstek, W. and Chaudron, M.R.V. (2007) Effort Distribution in Model-Based Development.

  4. 4. Boehm, B.W. (1981) Software Engineering Economics. Prentice-Hall, Upper Saddle River, 641-686.

  5. 5. Boehm, B.W. and Papaccio, P.N. (1988) Understanding and Controlling Software Costs. IEEE Transactions on Software Engineering, 14, 1462-1477.

  6. 6. Norden, P.V. (1958) Curve Fitting for a Model of Applied Research and Development Scheduling. IBM Journal of Research & Development, 2, 232-248.

  7. 7. Macdonell, S.G. and Shepperd, M.J. (2003) Using Prior-Phase Effort Records for Re-Estimation during Software Projects. Proceedings of the Ninth International Software Metrics Symposium, Sydney, 3-5 September 2003, 73-86.

  8. 8. Yang, Y., He, M., Li, M., et al. (2008) Phase Distribution of Software Development Effort. ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, Fraunhofer Cente, 8-10 October 2008, 61-69.

  9. 9. Yang, Y., Li, Q., Li, M., et al. (2008) An Empirical Analysis on Distribution Patterns of Software Maintenance Effort. Proceedings of the IEEE International Conference on Software Maintenance, Beijing, 28 September-4 October 2008, 456-459.

  10. 10. Heijstek, W. and Chaudron, M.R.V. (2008) Exploring Effort Distribution in RUP Projects. Proceedings of the ACM/IEEE International Symposium on Empirical Software Engineering & Measurement, Fraunhofer Cente, 8-10 October 2008, 359.

  11. 11. Lucia, A.D., Pompella, E. and Stefanucci, S. (2003) Assessing the Maintenance Processes of a Software Organization: An Empirical Analysis of a Large Industrial Project. Journal of Systems & Software, 65, 87-103.

期刊菜单