导入:软件项目管理
所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。

软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。
软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算。
为了估算项目的工作量和完成期限,首先需要估算软件的规模。
一、代码行技术
代码行技术是比较简单的定量估算软件规模的方法。
依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。
当有以往开发类似产品的历史数据可供参考时,估计出的数值还是比较准确的。把实现每个功能所需要的源程序行数累加起来,就可得到实现整个软件所需要的源程序行数。
估算方法:
由多名有经验的软件工程师分别做出估计。
每个人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m)。
分别算出这3种规模的平均值、和之后,再用下式计算程序规模的估计值:
![]7BI%%S9V}H0N]`T@V06@TU.png](https://p.ananas.chaoxing.com/star3/origin/c31929b5c311da8a26685de4ac3e9606.png)
单位:LOC或KLOC。
代码行技术的优点:
■代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数;
■有大量参考文献和数据 。
代码行技术的缺点:
■源程序仅是软件配置的一个成分,由源程序度量软件规模不太合理;
■用不同语言实现同一个软件所需要的代码行数并不相同;
■不适用于非过程性语言。
二、功能点技术
功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。
这种方法用功能点(FP)为单位度量软件规模。
1. 信息域特性
功能点技术定义了信息域的5个特性:
■输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据。
■输出项数(Out):软件向用户输出的项数,它们向用户提供面向应用的信息。
■查询数(Inq):查询即是一次联机输入,它导致软件以联机输出方式产生某种即时响应。
■主文件数(Maf):逻辑主文件的数目。
■外部接口数(Inf):机器可读的全部接口的数量,用这些接口把信息传送给另一个系统。
每个特征根据其复杂程度分配一个功能点数,即信息域特征系数a1,a2,a3,a4,a5,见下表。
![WC(R)N%F_N%5J]U2I2_J4N0.png](https://p.ananas.chaoxing.com/star3/origin/f007d897877b91b63e61d682ab82920d.png)
2. 估算功能点的步骤
(1) 计算未调整的功能点数UFP
首先,把产品信息域的每个特性都分类为简单级、平均级或复杂级,并根据其等级为每个特性分配一个功能点数。
然后,用下式计算未调整的功能点数UFP: UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
其中,ai(1≤i≤5)是信息域特性系数,其值由相应特性的复杂级别决定,如表13.1所示。
(2) 计算技术复杂性因子TCF
这一步骤度量14种技术因素对软件规模的影响程度。在表13.2中列出了全部技术因素,并用Fi(1≤i≤14)代表这些因素。
根据软件的特点,为每个因素分配一个从0(不存在或对软件规模无影响)到5(有很大影响)的值。

然后,用下式计算技术因素对软件规模的综合影响程度DI:

技术复杂性因子TCF由下式计算:
TCF = 0.65 + 0.01 × DI
因为DI的值在0~70之间,所以TCF的值在0.65~1.35之间。
(3) 计算功能点数FP
FP = UFP × TCF
功能点技术优点:
与所用的编程语言无关,比代码行技术更合理。
功能点技术缺点:
在判断信息域特性复杂级别和技术因素的影响程度时主观因素较大,对经验依赖性较强。

