知识要点:
估算软件规模; 开发工作量估算; 开发时间、进度估算;
关键路径、机动时间; 软件配置及管理过程; 能力成熟度模型。
一、软件项目管理的定义:通过计划、组织和控制等一系列活动,合理的配置和使用各种资源,以求达到
软件项目开发的过程。
二、估算软件规模:代码行技术、功能点(FP)技术;
代码行技术:将实现每个功能的所需要的源程序行数累加即可;
功能点技术:FP=UFP*TCF;(未调整的功能点数乘以复杂因子)
TCF=0.65+0.01*DI;(DI为全部技术因素的和)
功能点的确定与所用编程语言无关;
三、工作量的估算(单位人月pm):一般为关于代码行数KLOC和功能点FP的函数;
静态单变量模型:E=A+B*(参数值)^C;(该式子的A、B、C都为已知常数,参数值为KLOC或FP)
动态多变量模型(软件方程式):看做软件规模与时间的二元函数,用此函数值来估算工作量E;
E=(LOC*B^0.333/P)*(1/t)^4;(t是指项目持续时间单位为月或年,B是特殊技术因子,P为生产率参数,B与P视为常数)
在LOC工作规模固定时,项目持续时间t越长工作量E越低
COCOMO2模型(构造性成本模型):
四、开发时间的估算:T=A*E^B(A、B为常数、E为工作量单位为人月pm)
五、开发进度的估算:关键路径问题事件的最早与最晚开始时间;
(最早开始时间为从前往后取最大值,最迟开始时间从后往前取最小值)
六、关键路径:几个时间的最早和最晚开始时间相同,这些时间构成的路径称为关键路径;(关键路径上的活动必然准时发生)
想要缩短工期必须加快关键活动的进行(反之不成立);
(具体内容详见数据结构图部分,计算事件的最早开始时间,活动的最早开始时间,时间的最晚开始时间,
活动的最晚开始时间。总结最早就是顺序求解,最晚就是逆序求解)
七、机动时间(松弛时间):不在关键路径上的事件有一定机动的余地,实际的开始时间可以比预定时间一些,或者
持续时间比预定时间长一些,而不影响整个工程的结束时间。机动时间等于事件的最晚开始时间减去事件的最早开始时间;
八、软件配置及管理过程:
软件配置管理定义:在软件项目启动时开始,在软件整个生命周期内管理变化的一组活动,这些活动用于标识变化、控制变化
确保适当的实现了变化、向需要知道这类信息的人报告变化;其目的是使变化更正确且更容易被适应,在必须变化时
减少所需花费的工作量;
软件配置:计算机程序、描述计算机程序的文档、数据;
基线的定义(重点):通过正式复审的规格说明或中间产品,作为进一步开发的基础并且只有通过正式的变化控制才能改变它;
基线是通过正式复审的软件配置项,在软件配置项变成基线之前可以迅速而非正式的修改它。基线一旦建立
虽然仍可以实现变化,但必须应用特定的、正式的过程来评估、实现、验证每一个变化;
软件管理的过程(重点):
任务:控制变化(主要任务)、标识、版本控制、变化控制、配置审计、状态报告;
九、能力成熟度模型(CMM):
初始级:项目成功与否取决于开发人员的个人能力,软件过程的特征是无序混乱的,几乎没有什么过程是经过定义的
具有不可预测性,而且在该过程中人员变动比较频繁;
可重复级:建立基本的项目管理过程,可跟踪成本、进度、功能、质量。其目标是使得项目管理过程稳定,能够重复
之前成功项目中所进行过的软件项目工程实践;
已定义级:已定义完整的软件过程,软件过程已经文档化、标准化。所进行的管理和工程活动都是稳定的,产品开发成本
和进度以及产品功能和质量都受到控制,软件产品质量具有可追溯性。
已管理级:软件过程和软件产品都建立了定量的质量目标,所有过程活动都是可度量的。允许软件机构在定量范围内
预测过程和产品的质量趋势,发生偏离时可以及时纠正,产生的软件产品是高质量的。
优化级:具有持续不断改进软件过程的能力,既对现行的过程实例不断改进和优化,又采用新技术和新方法来实现
未来过程的改进;
(高一级包含低一级的全部特征,是低一级的进一步优化)