软件复杂度估算的两种方法

对于实施GJB5000的软件项目负责人来说,做好项目估计不是一件容易的事。虽然有一些估计方法可以遵循,但是对于估计假设的描述总是说不清楚,这也是被外部评价员问得哑口无言最多的地方。

其中尤以复杂度的估计最难!

下面提出两种软件复杂度的估算方法,希望能给有这个困惑的人一点思路。

  1. 利用通用的系统特征值进行复杂度估算

所有的软件系统都有一些通用的特征,这些通用特征在某个软件实体上表现是不同的,这就决定了软件的复杂度是不同的。所以,我们可以通过分析软件的系统特征值来估算软件的复杂度。

通用的软件系统特征包括但不限于以下 14 个方面:

  • 数据通信:描述软件直接同处理器进行通信的程度:

  • 分布式数据处理:描述软件的各部件间数据传输的程度:

  • 性能:描述响应时间和数据吞吐 对软件研制的影响程度:

  • 系统配置要求:描述计算机资源约束对软件研制的影响程度:

  • 事务率:描述事务处理率对软件研制的影响程度:

  • 在线数据输入:描述通过交互处理输入数据的程度:

  • 最终用户效率:描述对各种人为因素和最终用户易用性的考虑程度:

  • 在线更新 描述内部逻辑文件被在线更新的程度:

  • 复杂处理:描述,处理逻辑对软件研制的影响程度:

  • 可重用性:描述经过专门设计、开发和支持的软件,可在其他软件中重用的程度:

  • 易安装性:描述软件在不同环境下转换和安装操作的简便程度:

  • 易操作性:描述软件在操作方面的满足程度,如:启动、备份和恢复过程:

  • 多工作场所:描述软件用于多个用户组织 多种场所的程度:

  • 易变更性:描述软件的数据结构和处理逻辑易于修改的程度。

估算软件复杂度时,分析并确定每个系统特征影响度(取值范围从0 ~ 5),其中:

  • 0一一 未出现或无影响:

  • 1一一 偶发影响:

  • 2一一 轻度影响:

  • 3一一 一般影响:

  • 4一一 重大影响:

  • 5—— 强影响。

软件(或部件)的复杂度 S = 0.5 + V/100,其中V为各个系统特征值之和。

  1. 简单的经验值估算

我们可以根据通用的软件复杂度的经验值描述来直接分析并确定软件的复杂度。

软件复杂度的经验值如下:

  • 2——具有极其复杂的接口和控制逻辑的信号处理系统;

  • 1.8——具有较大型系统架构、重要接口及交互需求的新开发系统;带有重要逻辑代码的操作系统或实时处理系统;

  • 1.5——具有重大逻辑复杂度的应用;操作系统的某些变更很少或根本没有实时处理;

  • 1——在稳定操作系统上开发的新的独立系统;与底层操作系统或系统其他部分链接的接口非常少;

  • 0.8——使用直接输入、输出和主要内部数据存储的低逻辑复杂度软件;

  • 0.5——及其简单的软件,主要包含线性编码,仅使用内部数组做数据存储。

最后,郑重声明以下:以上的两种软件复杂度估算方法,本人只是提出一种解决问题的思路,具体的算法仅供参考。

这正是:

复杂程度难估算,让人头疼又难堪

提出解题两思路,愿能解惑笑开颜

参考书目:软件开发生产率改进:软件管理的有效领导力与量化方法,作者:(美)Jensen.R.W.,出版社:机械工业出版社

(0)

相关推荐