《软件工程11.ppt》由会员分享,可在线阅读,更多相关《软件工程11.ppt(31页珍藏版)》请在优知文库上搜索。
1、第第1111章章 软件项目管理软件项目管理 l l软件项目管理:软件项目管理: 为了使软件项目能够按照预定的成本、进度、质量顺利完成,为了使软件项目能够按照预定的成本、进度、质量顺利完成, 而对而对成本、人员、进度、质量、风险成本、人员、进度、质量、风险等进行分析和管理。等进行分析和管理。 通过计划、组织和控制等一系列活动,合理配置和使用各种通过计划、组织和控制等一系列活动,合理配置和使用各种 资源,以达到既定目标。资源,以达到既定目标。l l软件项目管理先于任何技术活动之前开始,并且贯穿于软件软件项目管理先于任何技术活动之前开始,并且贯穿于软件 的整个生命周期之中。的整个生命周期之中。l l
2、软件项目管理包括软件项目管理包括管理技术管理技术和和管理过程管理过程两部分内容两部分内容 11.1 11.1 软件项目计划软件项目计划 11.2 11.2 管理技术管理技术 11.3 11.3 能力成熟度模型能力成熟度模型 l l软件项目计划包括的内容:软件项目计划包括的内容: 1.1.确定软件的范围:确定软件的范围:项目目标;主要功能;性能限制;项目目标;主要功能;性能限制; 系统接口;特殊要求(对可靠性、实时性等);系统接口;特殊要求(对可靠性、实时性等); 2.2.确定资源:确定资源: 支持开发工作的工具(包括硬件工具和软件工具);人员。支持开发工作的工具(包括硬件工具和软件工具);人员
3、。 3.3.进度安排进度安排 4.4.成本估算成本估算 5.5.培训计划培训计划 11.2.1 11.2.1 度量软件规模度量软件规模 11.2.2 11.2.2 工作量估算工作量估算 11.2.3 11.2.3 进度计划进度计划 11.2.4 11.2.4 控制控制1 1代码行技术:代码行技术: 根据以往开发类似产品的经验和数据,根据以往开发类似产品的经验和数据,估计实现软件功能估计实现软件功能 所需要的源程序行数所需要的源程序行数。 l l由由多名有经验的软件工程师分别估计程序的多名有经验的软件工程师分别估计程序的最小规模最小规模a a、 最大规模最大规模b b 、最可能的规模最可能的规模
4、m m,则程序规模的估计值为:,则程序规模的估计值为: L=L= 程序单位程序单位: :代码行数(代码行数(LOCLOC)或千行代码数()或千行代码数(KLOCKLOC)。)。64bma l l代码行技术的主要优点:代码行技术的主要优点: 代码是所有软件开发项目都有的代码是所有软件开发项目都有的“产品产品”,容易计算。,容易计算。l l代码行技术的缺点:代码行技术的缺点: 源程序仅是软件配置的一个成分,用其代表整个软件的规模源程序仅是软件配置的一个成分,用其代表整个软件的规模 不太合理;不太合理; 用不同语言实现同一个软件所需要的代码行数不相同;用不同语言实现同一个软件所需要的代码行数不相同;
5、 不适用非过程语言。不适用非过程语言。 2 2功能点技术:功能点技术: 根据对软件根据对软件信息域特性信息域特性和和复杂性复杂性的评估结果,计算的评估结果,计算 功能点数,以此度量软件规模。功能点数,以此度量软件规模。(1)(1)信息域特性:信息域特性: 输入项数输入项数InpInp(给软件提供的数据)(给软件提供的数据) 输出项数输出项数OutOut(报表、出错提示等)(报表、出错提示等) 查询数查询数InqInq(不改变内部数据的(不改变内部数据的请求响应对请求响应对的数目)的数目) 逻辑主文件数逻辑主文件数MafMaf(一个独立文件、一个数据库表等)(一个独立文件、一个数据库表等) 外部
6、接口数外部接口数InfInf(机器可读的全部接口、与其他系统共(机器可读的全部接口、与其他系统共 享的数据项)享的数据项) (2 2)影响复杂性的技术因素)影响复杂性的技术因素Fi(1i14Fi(1i14;0Fi5)0Fi5): 表表10.210.2(3 3)估算功能点的步骤:)估算功能点的步骤: 计算未调整的功能点数计算未调整的功能点数UFP: UFP=a1Inp+a2Out+a3Inq+a4Maf+a5Inf 其中:其中: ai(1i5)是信息域特性系数是信息域特性系数( (表表10.1)10.1) 计算技术复杂性因子计算技术复杂性因子TCF: TCF=0.65 + 0.01 计算功能点数
7、计算功能点数FP: FP=UFPTCF 141iiF l l功能点数与所用的编程语言无关,功能点技术比代码行功能点数与所用的编程语言无关,功能点技术比代码行 技术更合理一些。技术更合理一些。 l l在判断信息域特性复杂级别和技术因素的影响程度时,在判断信息域特性复杂级别和技术因素的影响程度时, 存在着相当大的主观因素。存在着相当大的主观因素。l l每一个项目任务的解决都需要花费若干工作量;每个每一个项目任务的解决都需要花费若干工作量;每个 工作量单位都对应于一定的货币成本、可以由此作出工作量单位都对应于一定的货币成本、可以由此作出 成本估算。成本估算。l l工作量单位:人月(工作量单位:人月(
8、PM)l l使用经验公式预测软件开发工作量,使用经验公式预测软件开发工作量,工作量是软件规工作量是软件规 模(模(KLOC或或FP)的函数)的函数1.1.静态单变量模型静态单变量模型: : E=A+B(ev)C 其中其中: :E表示工作量;表示工作量;A、B、C是经验常数;是经验常数; ev表示软件规模估算值(代码行数或功能点数)表示软件规模估算值(代码行数或功能点数)2.2.动态多变量模型:动态多变量模型:E=LOCB0.333/P3(1/t)4 其中:其中:t t是项目持续时间;是项目持续时间;B是技术因子(经验常数);是技术因子(经验常数); P是生产率参数(经验常数);是生产率参数(经
9、验常数); LOC表示软件规模估算值(代码行数)表示软件规模估算值(代码行数)3.3.COCOMO2模型模型( (COnstructive COst MOdel):): 将软件开发工作量表示成代码行数的非线性函数将软件开发工作量表示成代码行数的非线性函数 l l三个层次的估算模型:三个层次的估算模型: (1 1)应用系统组成模型:主要用于估算构建原型的工作量、)应用系统组成模型:主要用于估算构建原型的工作量、 构建原型时大量使用已有的构件。构建原型时大量使用已有的构件。 (2 2)早期设计模型:适用于体系结构设计阶段。)早期设计模型:适用于体系结构设计阶段。 (3 3)后体系结构模型后体系结构
10、模型:适用于完成体系结构设计之后的软:适用于完成体系结构设计之后的软 件开发阶段。件开发阶段。l l后体系结构模型:后体系结构模型: E=E= 其中:其中:E E是开发工作量(以人月为单位),是开发工作量(以人月为单位), a a是模型系数,是模型系数, KLOCKLOC是估计的源代码行数(以千行为单位),是估计的源代码行数(以千行为单位), b b是模型指数,是模型指数, f fi i(i=1(i=117)17)是成本因素。是成本因素。 171iibfKLOCa l l项目管理者的目标:项目管理者的目标: 定义一个适用于当前项目的任务集合,识别出关键任务,定义一个适用于当前项目的任务集合,识
11、别出关键任务, 跟踪关键任务的进展状况,及时发现拖延进度的情况并跟踪关键任务的进展状况,及时发现拖延进度的情况并 采取适当解决措施。采取适当解决措施。 l l描述进度计划的图形工具:描述进度计划的图形工具:1.Gantt 1.Gantt 图图:历史悠久、应用广泛的制定进度计划的工具历史悠久、应用广泛的制定进度计划的工具 (1 1)标明各个阶段任务的计划开始时间、完成时间;)标明各个阶段任务的计划开始时间、完成时间; (2 2)各个任务完成的标志(文档;评审);)各个任务完成的标志(文档;评审); (3 3)当前进度。)当前进度。 2.2.工程网络图:工程网络图: 描述任务分解情况、各项任务的开
12、始和结束时间、描述任务分解情况、各项任务的开始和结束时间、 任务之间的依赖任务之间的依赖与并行关系与并行关系 图图10.3 10.3 图图10.410.4 l l在甘特图中,每一任务完成的标准,不是以能否继续在甘特图中,每一任务完成的标准,不是以能否继续 下一阶段任务为标准,而是以必须交付的文档与通过下一阶段任务为标准,而是以必须交付的文档与通过 评审为标准。评审为标准。 l l甘特图的优点:标明了各任务的计划进度和当前进度;甘特图的优点:标明了各任务的计划进度和当前进度; 能动态地反映软件开发进展情况。能动态地反映软件开发进展情况。 l l甘特图的缺点:难以反映多个任务之间存在的复杂的逻甘特
13、图的缺点:难以反映多个任务之间存在的复杂的逻 辑关系。辑关系。 例:例:某一开发项目在进入编码阶段之后,考虑安排三个某一开发项目在进入编码阶段之后,考虑安排三个 模块模块A A、B B、C C的开发工作。的开发工作。 其中:其中: 模块模块A A是公用模块,模块是公用模块,模块B B与与C C的测试有赖于模的测试有赖于模 块块A A调试的完成。调试的完成。 模块模块C C是利用已有的模块,但对它要在理解之是利用已有的模块,但对它要在理解之 后做部分修改。后做部分修改。 最后直到最后直到A A、B B和和C C做组装测试为止。做组装测试为止。 上述工作步骤上述工作步骤如图所示如图所示。l各边表示
14、要完成的任务,边上均标注任务的名字各边表示要完成的任务,边上均标注任务的名字l边上的数字表示完成任务的持续时间边上的数字表示完成任务的持续时间l图中有数字编号的结点是任务的起点和终点(称为事件)图中有数字编号的结点是任务的起点和终点(称为事件)l l可使用工程网络图求关键路径:可使用工程网络图求关键路径: (1)(1)事件中标出最早时刻和最迟时刻事件中标出最早时刻和最迟时刻 (2)(2)关键路径上的事件满足:最早时刻和最迟时刻相同关键路径上的事件满足:最早时刻和最迟时刻相同 (3)(3)任务的机动时间(任务的机动时间(LETLET)结束事件结束事件(EETEET)开始事件开始事件持续时间持续时
15、间 l l控制:控制: 使被控制对象在规定范围内活动;尽量使一切活动使被控制对象在规定范围内活动;尽量使一切活动 按照预定计划进行,达到预期目标。按照预定计划进行,达到预期目标。 1.1.风险控制:风险控制: (1 1)风险风险是损失的不确定性;是给定情况下一定时期可能是损失的不确定性;是给定情况下一定时期可能 发生的各种结果间的差异。发生的各种结果间的差异。 (2)(2)软件风险分类:软件风险分类: l l 按照风险的影响范围分类:按照风险的影响范围分类: 项目风险(拖延进度、增加成本)项目风险(拖延进度、增加成本) 技术风险(影响软件质量和交付时间)技术风险(影响软件质量和交付时间) 商业
16、风险(威胁软件的生存力)商业风险(威胁软件的生存力)l l 按照风险的可预测性分类:按照风险的可预测性分类: 已知风险(通过评估项目计划、商业和技术环境获知)已知风险(通过评估项目计划、商业和技术环境获知) 可预测风险(由过去经验推测)可预测风险(由过去经验推测) 不可预测风险不可预测风险 (3 3)风险管理:)风险管理: 风险识别风险识别(已知的、可预测的风险):(已知的、可预测的风险): 包括产品规模风险、商业风险、客户风险、过程风险、包括产品规模风险、商业风险、客户风险、过程风险、 技术风险、开发环境风险、人员风险等技术风险、开发环境风险、人员风险等 l l识别风险的方法识别风险的方法风险评估风险评估(预测):(预测): 评估风险变成现实的可能性(概率)、风险的后果评估风险变成现实的可能性(概率)、风险的后果处理风险:处理风险:包括风险避免(缓解)、风险监控、风险包括风险避免(缓解)、风险监控、风险 管理和意外事件计划管理和意外事件计划2 2质量保证质量保证 (1 1)软件质量:)软件质量: 软件与明确地和隐含地定义的需求相一致的程度软件与明确地和隐含地定义的需求相一致的程度 l