1. 估算软件规模
(1)代码行技术
依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。程序规模的估计值:
式内字母分别表示最小规模a,最大规模b和最可能的规模m的平均值。
优点:代码是所有软件开发项目都有的“产品",而且很容易计算代码行数。
缺点:源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模似乎不太合理;用不同语言实现同一个软件所需要的代码行数并不相同;这种方法不适用于非过程语言。
(2)功能点技术
根据对软件信息域特性和软件复杂性的评估结果,用功能点FP为单位估算软件规模
①信息域特性
功能点技术定义了信息域的5个特性:输入项数Inp、输出项数Out、查询数Inq、朱文件数Maf和外部接口数Inf。
②估算功能点的步骤
`·计算未调整的功能点数UFP
·`计算技术复杂性因子TCF
·`计算功能点数FP
2. 工作量估算
软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模的函数,单位通常为人月pm
(1)静态单变量模型
(2)多态多变量模型
(3)COCOMO2模型
3. 进度计划
软件项目的进度安排,它通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。进度计划将随着时间的流逝而不断演化。在项目计划的早期,首先制定一个宏观的进度安排表,标识出主要的软件工程活动和这些活动影响到的产品功能。随着项目的进展,把宏观进度表中的每个条目都精化成一个详细进度表,从而标识出完成一个活动所必须实现的一组特定任务,并安排好实现这些任务的进度。
(1) 估算开发时间
①Walston_Felix模型: T=2.5E0.35
②原始的COCOMO模型: T=2.5E0.38
③COCOMO模型: T=3.0E0.33+0.2*(b-1.01)
④Putnam模型: T=2.4E1/3
用上列方程计算出的T值,代表正常情况下的开发时间。客户往往希望缩短软件开发时间,为了缩短开发时间应该增加从事开发工作的人数。但是,经验告诉人们,随开发小组规模扩大,个人生产率将下降,以致开发时间与从事开发工作的人数并不成反比关系。
(2) Gantt图:应用广泛的制定进度计划的工具
优点:直观简明,易掌握易绘制,是进度计划和进度管理的有力工具
缺点:不能显式地描绘各项作业被此间的依赖关系;
进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象;
计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费;
(3) 工程网络
工程网络是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间,此外,它还显式地描绘各个作业彼此间的依赖关系。因此,工程网络是系统分析和系统设计的报有力的工具
(4)估算工程进度
最早时刻EET:表示该事件可以发生的最早时间。通常第一个事件的最早时刻定义为0,其他事件的最早时刻从左至右按事件发生顺序计算:
(1)考虑进入该事件所有作业,
(2)对于每个作业都计算它的持续时间与起始事件的EET之和
(3)选取上述和数中的最大值作为该事件的最早时刻EET.
最迟时刻LET:在不影响工程竣工时间的前提下,该事件最晚可以发生的时刻。通常最后一个事件(工程结束)的最迟时刻就是它的最早时刻。其他事件的最迟时刻在工程网络上从右至左按逆作业流的方向计算:
(1)考虑离开该事件的所有作业。
(2)从每个作业的结束事件的最迟时刻中减去该作业的持续时间。
(3)选取上述差数中的最小值作为该事件的最迟时刻LET.
关键路径:事件的最早时刻和最迟时刻相等,这些事件定义了关键路径,关键路径用粗线箭头表示,组成关键路径的作业的实际持续时间不能超过估计的持续时间,否则工程不能准时结束
机动时间:不在关键路径上的作业有一定程度机动余地,即实际开始时间可以比预定时间晚一些,或实际持续时间可以比预定的持续时间长一些
机动时间=LET(结束)—EET(开始)—持续时间
根据上一小节的工程网络,可以看出事件2只有一个作业(作业1-2)进入,就是说,仅当作业1-2完成时事件2才能发生,因此事件2的最早时刻就是作业1-2最早可能完成的时刻。定义事件1的最早时刻为零,据估计作业1- 2的持续时间为2小时,即作业1-2最早可能完成的时刻为2,因此,事件2的最早时刻为2。同样,只有一个作业(作业2-3)进入事件3,这个作业的持续时间为4小时,所以事件3的最早时刻为2+4=6。事件4有两个作业(2-4和3- 4)进人,只有这两个作业都完成之后,事件4才能出现(事件4代表上述两个作业的结束)。已知事件2的最早时刻为2,作业2-4的持续时间为3小时;事件3的最早时刻为6,作业3-4(虚拟作业)的持续时间为0,按照上述3条规则,可以算出事件4的最早时刻为
EET=max{2+3,6+0}=6
按照这种方法沿着工程网络从左至右顺序算出每个事件的最早时刻,计算结果标在每个圆圈内右上角的数字,最迟时刻按照逆作业流来计算,得到下图:
4. 软件质量
5. 软件配置管理
(1)软件配置项
①计算机程序(源代码和可执行程序)
②描述计算机程序的文档(供技术人员或用户使用)
③数据
(2) 基线
已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。
(3) 软甲配置管理过程
①标识软件配置中的对象
②版本控制
③变化控制
④配置审计
⑤状态报告
6. 能力成熟度模型CMM
CMM是由于问题是由我们管理软件过程的方法不当引起的,所以软件技术的运用并不会自动提高软件的生产率和质量。有助于软件开发机构建立一个有规律的,成熟的软件过程。
CMM通过定义能力成熟度的5个等级,引导软件开发机构不断识别出其软件过程的缺陷,并指出应该做哪些改进,能力成熟度的5个等级从低到高依次是:初始级(又称为1级),可重复级(又称为2级),已定义级(又称为3级),已管理级(又称为4级)和优化级(又称为5级)。