软件工程(导论)

成秀秀、杨玲、戚爱斌、苗世迪、温东新

目录

  • 1 软件与软件工程
    • 1.1 软件
    • 1.2 软件危机
    • 1.3 软件工程
    • 1.4 软件生命周期
    • 1.5 软件过程模型
    • 1.6 学生成果分享
  • 2 可行性研究与项目开发计划
    • 2.1 可行性研究的任务
    • 2.2 可行性研究过程
    • 2.3 进度计划
    • 2.4 学生成果分享
  • 3 需求分析
    • 3.1 需求分析的任务
    • 3.2 与用户沟通获取需求的方法
    • 3.3 分析建模与规格说明
    • 3.4 实体-联系图
    • 3.5 数据规范化
    • 3.6 状态转换图
    • 3.7 其它图形工具
    • 3.8 验证软件需求
  • 4 总体设计
    • 4.1 系统流程图
    • 4.2 数据流图
    • 4.3 数据字典
    • 4.4 设计过程
    • 4.5 设计原理
    • 4.6 启发规则
    • 4.7 描绘软件结构的图形工具
    • 4.8 面向数据流的设计方法
  • 5 详细设计
    • 5.1 结构程序设计
    • 5.2 人机界面设计
    • 5.3 过程设计的工具
    • 5.4 面向数据结构的设计方法
    • 5.5 程序复杂程度的定量度量
  • 6 软件编码
    • 6.1 程序设计语言
    • 6.2 编码风格
  • 7 软件测试
    • 7.1 软件测试基础
    • 7.2 单元测试
    • 7.3 集成测试
    • 7.4 确认测试
    • 7.5 白盒测试技术
    • 7.6 黑盒测试技术
    • 7.7 调试
    • 7.8 软件可靠性
  • 8 软件项目管理
    • 8.1 估算软件规模
    • 8.2 工作量估算
    • 8.3 人员组织
    • 8.4 质量保证
    • 8.5 软件配置管理
    • 8.6 能力成熟度模型
估算软件规模

导入:软件项目管理

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

软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。

软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算。

为了估算项目的工作量和完成期限,首先需要估算软件的规模。


一、代码行技术

代码行技术是比较简单的定量估算软件规模的方法。

依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。

当有以往开发类似产品的历史数据可供参考时,估计出的数值还是比较准确的。把实现每个功能所需要的源程序行数累加起来,就可得到实现整个软件所需要的源程序行数。 


估算方法:

由多名有经验的软件工程师分别做出估计。

每个人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m)。

分别算出这3种规模的平均值、和之后,再用下式计算程序规模的估计值:

单位:LOC或KLOC。 


代码行技术的优点:

■代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数;

■有大量参考文献和数据 。

代码行技术的缺点:

■源程序仅是软件配置的一个成分,由源程序度量软件规模不太合理;

■用不同语言实现同一个软件所需要的代码行数并不相同;

■不适用于非过程性语言。


二、功能点技术

功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。

这种方法用功能点(FP)为单位度量软件规模。 


1. 信息域特性

功能点技术定义了信息域的5个特性:

■输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据。

■输出项数(Out):软件向用户输出的项数,它们向用户提供面向应用的信息。 

■查询数(Inq):查询即是一次联机输入,它导致软件以联机输出方式产生某种即时响应。

■主文件数(Maf):逻辑主文件的数目。

■外部接口数(Inf):机器可读的全部接口的数量,用这些接口把信息传送给另一个系统。 

每个特征根据其复杂程度分配一个功能点数,即信息域特征系数a1,a2,a3,a4,a5,见下表。

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


功能点技术优点:

与所用的编程语言无关,比代码行技术更合理。

功能点技术缺点:

在判断信息域特性复杂级别和技术因素的影响程度时主观因素较大,对经验依赖性较强。