软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide1第十三章软件项目管理软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide213.1概述所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。(P277)软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个软件项目管理涉及对人员、过程、产品和项目本身等管理过程中发生的事件的计划和监控软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide313.1概述项目:是指一系列独特的、复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间、预算、资源限定内依据规范完成。项目参数:项目范围、质量、成本、时间和资源项目管理是一种为实现既定目标而对技术、人力和资源所进行的系统集成,软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide413.1概述软件项目管理针对软件开发的各个阶段进行管理启动阶段:用户提出需求,开发人员进行需求分析,确定可行性,编写项目实施计划计划阶段创建项目范围文档和项目计划,项目计划规定如何开展工作是项目得以实施实施阶段项目进一步设计、编码、测试应协调好实施阶段和控制阶段的关系,确保项目小组成员满足任务、时间和预算要求控制阶段项目经理监督小组成员的工作,收尾阶段正式认可过程软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide513.1概述项目管理范围项目与过程项目职责:活动或任务人员人员资源计划协调与沟通软件团队组织软件度量软件过程度量风险管理软件配置管理软件项目管理计划文档(SoftwareProjectManagementPlanSPMP)软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide613.2计划软件计划最详尽地描述了软件过程,它包括采用的生命周期模型、开发组织的组织结构、责任分配、管理目标和优先级、所用的技术和CASE工具,以及详细的进度、预算和资源分配。整个计划的基础是工作量估算和完成期限估算。软件项目管理过程从一组项目计划活动开始,而第一项计划活动是“估算”。软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide713.2.1估算软件规模代码行技术是比较简单的定量估算软件规模的方法。这种方法根据以往开发类似产品的经验和历史数据,估计实现一个功能需要的源程序行数。当有以往开发类似项目的历史数据可供参考时,用这种方法估计出的数据还是比较准确的。把实现每个功能需要的源程序行数累加起来为了使得对程序规模的估计值更接近实际值,可以由多名有经验的软件工程师分别作出估计。每个人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出abm之后,再用下式计算程序规模的估计值:用代码行技术度量软件规模时,当程序较小时常用的单位是代码行数(LOC),当程序较大时常用的单位是千行代码数(KLOC)。64bmaL软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide813.2.1估算软件规模软件科学方法例如:计算操作数和运算符的个数可测量数据针对软件开发中的可测量数据进行度量如:FFP即文件、流和过程文件:持久存在的关系记录集合(排除临时文件和事物文件)流:软件产品与环境之间的数据接口过程:数据的逻辑或算术的操作SBCPFFSrli软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide9功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用功能点(FP)1.功能点技术定义了信息域的5个特性,分别是输入项数(Inp)、输出项数(Out)、查询数(Inq),主文件数(Maf)和外部接口数(Inf)。2.用下述三个步骤,可以估算出一个软件的功能点数(即软件规模)(1)计算未调整的功能点数UFP首先,把产品信息域的每个特性(即Inp、Out、Inq、Maf和Inf)都分类成简单级、平均级或复杂级。根据其等级,为每个特性都分配一个功能点数,例如,一个平均级的输入项分配4个功能点,一个简单级的输入项是3个功能点,而一个复杂级的输入项分配6个功能然后,用下式计算未调整的功能点数UFPUFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,ai(1≤i≤5)是信息域特性系数,其值由13.2.1估算软件规模软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide10表13.1复杂级别特性系数简单平均复杂输入系数a1346输出系数a2457查询系数a3346文件系数a471015接口系数a5571013.2.1估算软件规模软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide11(2)计算技术复杂性因子TCF这一步将度量14种技术因素对软件规模的影响程度。这些因素包括高处理率、性能标准(例如,响应时间)、联机更新等,在表中列出了全部技术因素,并用Fi(1≤i≤14)代表这些因素。根据软件特点,为每个因素分配一个从0(不存在或对软件规模无影响)到5(有很大影响)的值。然后,用下式计算技术因素对软件规模的综合影响程度DI技术复杂性因子TCFTCF=0.65+0.01×DI因为DI的值在0~70之间,所以TCF的值在0.65~1.35141iiFDI13.2.1估算软件规模软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide12表13.2序号Fi技术因素1F1数据通信2F2分布式数据处理3F3性能标准4F4高负荷的硬件5F5高处理率6F6联机数据输入7F7终端用户效率8F8联机更新9F9复杂的计算10F10可重用性11F11安装方便12F12操作方便13F13可移植性14F14可维护性13.2.1估算软件规模软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide13(3)计算功能点数FP功能点数FPFP=UFP×TCF功能点数与所用的编程语言无关,因此,功能点技术比代码行技术更合理一些。但是,在判断信息域特性复杂级13.2.1估算软件规模软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide14面向对象度量场景脚本数量关键类的数量支持类的数量每个关键类的平均支持类数量子系统的数量13.2.1估算软件规模软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide1513.2.2工作量估算计算机软件估算模型使用由经验导出的公式来预测软件开发的工作量,工作量是软件规模(LOC或FP)的函数,工作量的单位通常是人月(pm)支持大多数估算模型的经验数据,都是从有限个项目的样本集中总结出来的,因此,没有一个估算模型能够适用于所有类型的软软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide16这类模型的总体结构形式如下:E=A+B×(ev)C其中,A、B和C是由经验数据导出的常数,E是以人月为单位的工作量,ev是估算变量(LOC或FP)。此外,大多数模型都有某种形式的调整成分,使得E能够依据项目的其他特性(例如,问题的复杂程度、开发人员的经验、开发环境等)加以调整。下面给出几个典型的静态单变量模型。13.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide171.面向LOC(1)WalstonFelixE=5.2×(KLOC)0.91(2)BaileyBasiliE=5.5+0.73×(KLOC)1.16(3)BoehmE=3.2×(KLOC)1.05(4)Doty模型(在KLOC>9的情况下)E=5.288×(KLOC)1.40713.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide182面向FP(1)Albrecht&GaffneyE=-13.39+0.0545FP(2)KemererE=60.62×7.728×10-8FP3(3)Maston、Barnett和MellichampE=585.7+5.12FP13.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide19动态多变量模型也称为软件方程式,它是根据从4000多个当代软件项目中收集的生产率数据推导出来的。这种模型把工作量看作是软件规模和开发时间这两个E=〔LOC×B0.333/P〕3×(1/t)4其中:EtB是“特殊技术因子”,它随着对集成、测试、质量保证、文档及管理技术的需求的增长而缓慢增加,对于较小的程序(KLOC=5~10),B=0.16,对于超过70KLOC的程序,B=0.39P是“生产率参数”,它反映了下述因素对工作量的影响:13.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide20······应用系统的复杂程度。13.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide21当开发实时嵌入式软件时,典型值是P=2000;对于电信和系统软件来说,P=10000;对于商业系统应用,P=28000。适用于当前项目的生产率参应该注意,软件方程式有两个独立的变量:①对软件规模的估算值(用LOC表示)从式可以看出,开发同一个软件(即LOC固定)的时候,如果把项目持续13.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide22COCOMO2所谓COCOMO模型就是Boehm提出的构造性成本模型(COnstructiveCOstMOdel),COCOMO是一种层次结构的软件估算模型。三个层次的估算模型如下1、应用系统组成模型2、早期设计模型3、后体系结构模型以后体系结构模型为例171ibfiKLOCaE13.2.2工作量估算软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide2313.2.3成本估算Walston_Felix模型:T=2.5×E0.35Cocomo模型:T=2.5×E0.38Cocomo2模型:T=3.0×E0.33+0.2×(b-1.0)Putnam模型:T=2.4×E1/3软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide2413.2.4进度计划项目管理者的目标是定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。为了做到这一点,管理者必须制定一个足够详细的进度表,以软件项目的进度安排是一项活动,它通过把工作量分配给特定的软件工程任务,并规定完成各项任务的起、止日期,从而将估算的工作量分布于计划好的项目持续期内。软件工程(SoftwareEngineering)沈阳工业大学信息科学与工程学院魏东Slide2513.2.4进度计划目标是为项目负责人提供一个框架7个指导原则:(1)运用项目规划的方法进行协调而不是控制(2)在项目环境中利用不同个性的人(3)预先制定项目规划中需要经常修改的版本(4)授权员工对自己的工作进行评估(5)描述创造价值的任务而不仅仅是价值创造的活动(6)定义具体