system: [SYSTEM]

user: 4. 舰船装备软件维护成本估算方法 根据前文的阐述，舰船装备软件维护成本指标包括软件原始规模、软件维护规模和软件类型，以下参考COCOMOII模型，研究给出软件维护成本与软件原始规模、软件维护规模和软件类型的定量关系。 4.1. 基本估算模型 Barry W. Boehm教授1981年在其著作 [ 3 ] 《software Engineering Economics》中提出了用于软件开发成本估算的构造性成本模型(COCOMO， Constructive Cost Model)，根据开发环境及项目规模等因素估算软件开发成本与维护成本。COCOMO81在80年代被称为最通用的参数成本估算模型之一，1995年COCOMOII发布，其具备处理非连续和快速开发过程模式、再工程化、重用、面向对象法等成本估算的能力。 根据COCOMOII模型 [ 4 ] ，软件维护的定义为：在不改变现有软件基本功能的前提下对其进行修改的过程。COCOMOII模型假定软件维护成本具有与软件开发成本相同的成本驱动因子属性。维护包括对原始产品小部分的重新设计和编码、接口的重新设计与开发，以及产品结构的细微修改。维护包括纠错性维护、适应性维护和完善性维护。 采用与软件开发成本估算 [ 4 ] 相同的模型 P M = A × ( S i z e ) b ，其中PM是软件开发工作量， S i z e 是软件规模，A、B为模型参数。软件维护工作量模型为： P M M = A × ( S i z e M ) B 其中， P M M 为软件维护工作量， S i z e M 是软件维护规模，A、B为模型参数，A通常取值为2.94，而指数B反映了项目的规模经济性，通过衡量有前例W 1 、开发灵活性W 2 、体系结构和风险控制W 3 、项目组成员合作程度W 4 、过程成熟度W 5 等5个规模度因子采用 B = 0.91 + 0.01 ∑ W i 计算得到。 规模度因子的一般取值范围 [ 4 ] 见表1。针对舰船装备软件，分析有前例W 1 、开发灵活性W 2 、体系结构和风险控制W 3 、项目组成员合作程度W 4 和过程成熟度W 5 等五个规模度因子的等级。其中过程成熟度因子W 5 ，由于目前我国对软件研制单位进行软件能力成熟度等级评估，承担舰船装备软件研制任务的软件研制单位的能力成熟度是可以得到保证的，因此组织型软件、中间型软件和嵌入型软件三类软件的过程成熟度均较高，即 。其他四个因子，针对三类软件的不同特点分别进行赋值，得舰船装备软件的5个规模度因子的取值见表2。根据 B = 0.91 + 0.01 ∑ W i ，针对组织型软件、中间型软件和嵌入型软件，计算得到指数B的取值分别为1.06、1.10和1.13。 因此，由COCOMOII模型，软件维护成本具有与软件开发成本相同的成本驱动因子属性，在给定软件开发规模 S i z e D 和维护规模 S i z e M 的情况下，维护成本 C M 与开发成本 C D 之间的关系为： C M C D = ( S i z e M S i z e D ) B 即维护成本 C M 与开发成本 C D 之间的关系为： C M = ( S i z e M S i z e D ) B ⋅ C D (1) 针对舰船装备软件，组织型软件、中间型软件和嵌入型软件的指数B的取值分别为1.06、1.10和1.13。 4.2. 维护成本系数取值 记 P = ( S i z e M S i z e D ) B ，则维护费的估算值 C M 与软件开发费为 C D 存在： Table 1 Range of scale factors [4 规模度因子 等级 非常低 低 正常 高 非常高 超高 有前例W 1 6.20 4.96 3.72 2.48 1.24 0.00 开发灵活性W 2 5.07 4.05 3.04 2.03 1.01 0.00 体系结构和风险控制W 3 7.07 5.65 4.24 2.83 1.41 0.00 项目组成员合作程度W 4 5.48 4.38 3.29 2.19 1.10 0.00 过程成熟度W 5 7.80 6.24 4.68 3.12 1.56 0.00 表1. 规模度因子取值范围 [ 4 ] Table 2 Scale factors’ values for equipment softwar 规模度因子 组织型 中间型 嵌入型 有前例W 1 4.96 4.96 4.96 开发灵活性W 2 2.03 3.04 4.05 体系结构和风险控制W 3 2.83 4.24 5.65 项目组成员合作程度W 4 2.19 3.21 4.38 过程成熟度W 5 3.12 3.12 3.12 B 1.06 1.10 1.13 表2. 不同类型舰船装备软件规模度因子取值 C M = C D × P (2) 其中，P为维护成本系数，针对组织型软件、中间型软件和嵌入型软件，舰船装备软件B的取值分别为1.05、1.12和1.20。 因此，估算软件维护费的关键在于确定维护成本系数P的取值。 通过对24个单位(其中工厂、公司15家，研究所8家，院校1家)近五年鉴定定型且已使用的121种产品的软件技术状态变动情况进行统计，分析了纠错性维护、适应性维护和完善性维护的软件规模占鉴定定型时软件总规模的比例，且按照算术平均方法分析结果见表3。 从表3可知，组织型软件的完善性维护比例最高，原因在于组织型软件一般规模较大，采用高级语言编写出错率较小，平台一般向下兼容，因此适应性维护较少，但该类型软件直接与用户见面，需求易变动，所以完善性维护比例高。中间型软件的纠错性维护比例与完善性维护比例相当，中间型软件一般混合采用高级语言和汇编语言，与硬件交互密切，所以纠错性和完善性维护比例较高。嵌入型软件的适应性维护比例最高，嵌入型软件一般软件规模较小，且采用汇编语言编写，硬件代换频繁，所以适应性维护比例较高。 由于软件维护就是“软件再开发”，根据软件工程经济学 [ 3 ] 和实际软件开发数据推导出软件维护成本与软件开发成本的关系如下： C M = ( S i z e M S i z e D ) B ⋅ C D 其中， S i z e D 为软件的原始规模， S i z e M 为软件维护规模， C D 为软件开发费， C M 为软件维护成本，B的取值针对组织型软件、中间型软件和嵌入型软件分别为1.06、1.10和1.13。 Table 3 Values of S i z e M S i z e D for different software type and maintenance typ 软件类别 项目数 占定型规模数量的比例% 纠错性 适应性 完善性 小计 组织/中间/嵌入型 121 3.60 6.43 6.83 16.87 组织型 21 0.36 0.35 9.41 10.12 中间型 26 12.68 1.54 12.77 26.99 嵌入型 74 1.34 9.88 4.01 15.23 表3. 不同软件类型和维护类型下维护规模占软件总规模的比例 Table 4 Value of software maintenance cost coefficien 软件类型 代码变动率 指数B 维护成本系数P 组织型 9.76% 1.06 8.49% 中间型 14.31% 1.10 11.78% 嵌入型 13.89% 1.13 10.85% 表4. 不同类型舰船装备软件维护成本系数 舰船装备软件维护成本只考虑适应性维护和完善性维护，根据表3中的数据，我们分别计算组织型、中间型和嵌入型软件的维护规模占软件总规模的比例，得到： 组织型： S i z e M S i z e D = 0.35 % + 9.41 % = 9.76 % ； 中间型： S i z e M S i z e D = 14.31 % ； 嵌入型： S i z e M S i z e D = 13.89 % 。 根据 P = ( S i z e M S i z e D ) B ，B针对组织型软件、中间型软件和嵌入型软件分别取值1.06、1.10和1.13。进一步计算不同类型的软件维护成本与开发成本的比例关系，如表4所示： 综上所述，针对普遍采用维护方式II，按双方约定的系统服务质量要求与响应时间提供非常住人员服务，用户不承担软件的纠错性维护成本，只考虑完善性维护和适应性维护，在软件交付使用至合同保质期结束这一段时间内的维护成本 C M 的估算公式为： C M = C D × P 。 其中， C D 为软件开发成本，维护成本的估算值为 C M ，P为维护成本系数：组织型软件 P = 8.49 % ，中间型 P = 11.78 % ，嵌入型 P = 10.85 % 。