个人成果,妥善保存,请勿传播软件工程岐兵Email:qib@epsoft.com.cn个人成果,妥善保存,请勿传播可行性研究需求分析概要设计详细设计实现集成测试确认测试使用与维护退役软件定义软件开发软件使用与维护软件生命周期个人成果,妥善保存,请勿传播软件项目管理–就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程–软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中–软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算软件项目管理个人成果,妥善保存,请勿传播软件项目管理(SoftwareManagement)经理管什么?计划预算组织进度标准个人成果,妥善保存,请勿传播课程内容提纲第13章:“软件项目管理”–估算软件规模–开发工作量估算–进度计划–人员组织–质量保证–软件配置管理–能力成熟度模型个人成果,妥善保存,请勿传播估算软件规模代码行技术–代码行技术是比较简单的定量估算软件规模的方法。这种方法依据以往开发类似产品的经验和历史数据估计实现一个功能所需要的源程序行数把实现每个功能所需要的源程序行数累加起来标准值法(三点法)–为了使得对程序规模的估计值更接近实际值,可以由多名有经验的软件工程师分别做出估计。每个人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出这3种规模的平均值a,b,c之后,再用下式计算程序规模的估计值:6bm4aL个人成果,妥善保存,请勿传播–代码行数(LOC),千行代码数(KLOC)–代码行技术的主要优点代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数–代码行技术的缺点是源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模似乎不太合理;用不同语言实现同一个软件所需要的代码行数并不相同,这种方法不适用于非过程语言。估算软件规模个人成果,妥善保存,请勿传播功能点技术–功能点技术依赖对软件信息域特性和软件复杂性的评估结果,估算软件规模。–1信息域特性输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据。输出项数(Out):软件向用户输出的项数,它们向用户提供面向应用的信息,例如,报表和出错信息等。报表内的数据项不单独计数。估算软件规模个人成果,妥善保存,请勿传播查询数(Inq):查询即是一次联机输入,它导致软件以联机输出方式产生某种即时响应。主文件数(Maf):逻辑主文件(即数据的一个逻辑组合,它可能是大型数据库的一部分或是一个独立的文件)的数目。外部接口数(Inf):机器可读的全部接口(例如,磁盘或磁带上的数据文件)的数量,用这些接口把信息传送给另一个系统。估算软件规模个人成果,妥善保存,请勿传播–估算功能点的步骤用下述3个步骤,可估算出一个软件的功能点数(即软件规模)–(1)计算未调整的功能点数UFP把lnp、Out、lnq、Maf和Inf分为简单级、平均级或复杂级,并根据其等级为每个特性分配一个功能点数。计算未调整的功能点数UFP:UFP=a1lnp+a2Out+a3Inq+a4Maf+a5Infai(1≤i≤5)是信息域特性系数.其值由相应特性的复杂级别决定,如下表所示:估算软件规模个人成果,妥善保存,请勿传播复杂级别特性系数简单平均复杂输入系数a1346输出系数a2457查询系数a3346文件系数a471015接口系数a55710估算软件规模个人成果,妥善保存,请勿传播–(2)计算技术复杂性因子TCF这一步度量14种技术因素对软件规模的影响程度。这些因素包括高处理率、性能标准(例如,响应时间)、联机更新等,在表13.2中列出了全部技术因素,并用Fi,(1i14)代表这些因素。根据软件的特点,为每个因素分配一个从0到5的值。计算技术因素对软件规模的综合影响程度DI:ID=Fi;ID的值在0-70之间计算技术复杂因子TCFTCF=0.65+0.01ID;TCF的值在0.65-1.35之间估算软件规模个人成果,妥善保存,请勿传播序号Fi技术因数序号Fi技术因数1F1数据通信8F8联机更新2F2分布式数据处理9F9复杂的计算3F3性能标准10F10可重用性4F4高负荷的硬件11F11安装方便5F5高处理率12F12操作方便6F6联机数据输入13F13可移植性7F7终端用户效率14F14可维护性估算软件规模个人成果,妥善保存,请勿传播–(3)计算功能点数FPFP=UFP×TCF功能点数与所用的编程浯言无关在判断信息域特性复杂级别和技术因素的影响程度时,存在着相当大的主观因素。估算软件规模个人成果,妥善保存,请勿传播课程内容提纲第13章:“软件项目管理”–估算软件规模–开发工作量估算–进度计划–人员组织–质量保证–软件配置管理–能力成熟度模型个人成果,妥善保存,请勿传播-软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模(KLOC或FP)的函数,工作量的单位通常是人月(pm)大多数估算模型的经验数据,都是从有限个项目的样本集中总结出来的没有一个估算模型可以适用于所有类型的软件和开发环境开发工作量估算个人成果,妥善保存,请勿传播静态单变量模型–总体结构形式E=A+B(ev)c–A、B和C是由经验数据导出的常数,E是以人月为单位的工作量,ev是估算变量(KLOC或FP)几个典型的静态单变量模型–1面向KLOC的估算模型(1)Walston_Felix模型E=5.2(KLOC)0.91(2)BaileyBasili模型E=5.5+0.73(KLOC)1.16(3)Boehm简单模型E=3.2(KLOC)1.05(4)Doty模型(在KLOC9时适用)E=5.288(KLOC)1.047开发工作量估算个人成果,妥善保存,请勿传播–2面向FP的估算模型(1)Albrecht&Gaffney模型E=-13.39+0.0545FP(2)Maston,Barnett和Mellichamp模型E=585.7+15.12FP–对于相同的KLOC或FP值,用不同模型估算将得出不同的结果。主要原因是这些模型多数都是仅根据若干应用领域中有限个项目的经验数据推导出来的,适用范围有限必须根据当前项目的特点选择适用的估算模型,并且根据需要适当地调整(例如,修改模型常数)估算模型。开发工作量估算个人成果,妥善保存,请勿传播动态多变量模型–动态多变量模型也称为软件方程式,它是根据从4000多个当代软件项目中收集的生产率数据推导出来的。–该模型把工作量看作是软件规模和开发时间这两个变量的函数。动态多变量估算模型的形式如下:E=(LOCB0.333/P)3(1/t)4E是以人月或人年为单位的工作量,t是以月或年为单位的项目持续时间;B是特殊技术因子,它随着对测试、质量保证、文档及管理技术的需求的增加而缓慢增加,对于较小的程序(KLOC=5-15),B=0.16,对于超过70KLOC的程序,B=0.39;开发工作量估算个人成果,妥善保存,请勿传播P是生产率参数,它反映了下述因素对工作量的影响:–总体过程成熟度及管理水平–使用良好的软件工程实践的程度–使用的程序设计语言的级别–软件环境的状态–软件项目组的技术及经验–应用系统的复杂程度开发实时嵌入式软件时,P的典型值为2000;开发电信系统和系统软件时,P=10000;对于商业应用系统来说.P=28000。可以从历史数据导出适用于当前项目的生产率参数值。开发工作量估算个人成果,妥善保存,请勿传播COCOMO2模型–COCOMO是构造性成本模型(constructivecostmodel)的缩写1981年Boehm在《软件工程经济学》中首次提出COCOMO模型1997年Boehm等人提出的COCOMO2模型,是原始的COCOMO模型的修订版,它反映了十多年来在成本估计方面所积累的经验。–COCOMO2给出了3个层次的开发工作量估算模型这3个层次的模型在估算工作量时,对软件细节考虑的详尽程度逐级增加。这些模型既可以用于不同类型的项目,也可用于同一个项目的不同开发阶段开发工作量估算个人成果,妥善保存,请勿传播–COCOMO2三个层次的估算模型分别是应用系统组成模型–这个模型主要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件。早期设计模型–这个模型适用于体系结构设计阶段。后体系结构模型–这个模型适用于完成体系结构设计之后的软件开发阶段。开发工作量估算个人成果,妥善保存,请勿传播–COCOMO2模型把软件开发工作量表示成代码行数(KLOC)的非线性函数:17E=aKLOCbfii=1E是开发工作量(以人月为单位)a是模型系数KLOC是估计的源代码行数(以千行为单位)b是模型指数fi(i=1-17)是成本因素开发工作量估算个人成果,妥善保存,请勿传播–Boehm把成本因素划分成产品因素、平台因素、人员因素和项目因素等4类。–表13.3列出了COCOMO2模型使用的成本因素及与之相联系的工作量系数。–与原始的COCOMO模型相比,COCOMO2模型使用的成本因素有下述变化,这些变化反映了在过去十几年中软件行业取得的巨大进步。开发工作量估算个人成果,妥善保存,请勿传播(1)新增加了4个成本因素,它们分别是要求的可重用性、需要的文档量、人员连续性(即人员稳定程度)和多地点开发。(2)略去了原始模型中的2个成本因素(计算机切换时间和使用现代程序设计实践)。现在,开发人员普遍使用工作站开发软件,批处理的切换时间已经不再是问题。(3)某些成本因素(分析员能力、平台经验、语言和工具经验)对生产率的影响(即工作量系数最大值与最小值的比率)增加了,另一些成本因素(程序员能力)的影响减小了。开发工作量估算个人成果,妥善保存,请勿传播–为了确定工作量方程中模型指数b的值,COCOMO2采用了更加精细得多的b分级模型,这个模型使用5个分级因素Wi,(1≤i≤5)其中每个因素都划分成从甚低(Wi=5)到特高(Wi=0)的6个级别。然后用下式计算b的数值:b=1.01+0.01Wib的取值范围为1.01-1.26。开发工作量估算个人成果,妥善保存,请勿传播–COCOMO2使用的5个分组因素如下所述;(1)项目先例性。这个分级因素指出,对于开发组织来说该项目的新奇程度。(2)开发灵活性。这个分级因素反映出,为了实现预先确定的外部接口需求及为了及早开发出产品而需增加的工作量。(3)风险排除度。这个分级因素反映了重大风险已被消除的比例。在多数情况下,这个比例和指定了重要模块接口(即选定了体系结构)的比例密切相关。(4)项目组凝聚力。这个分级因素表明了开发人员相互协作时可能存在的困难。这个因素反映了开发人员在目标和文化背景等方面相一致的程度,以及开发人员组成一个小组工作的经验。(5)过程成熟度。这个分级因素反映了按照CMM(见13.7节)度量出的项目组织的过程成熟度。开发工作量估算个人成果,妥善保存,请勿传播–在原始的COCOMO模型中,仅粗略地考虑了前两个分级因素对指数b之值的影响。–工作量方程中模型系数a的典型值为3.0,在实际工作中应该根据历史经验数据确定一个适合本组织当前开发的项目类型的数值。开发工作量估算个人成果,妥善保存,请勿传播课程内容提纲第13章:“软件项目管理”–估算软件规模–开发工作量估算–进度计划–人员组织–质量保证–软件配置管理–能力成熟度模型个人成果,妥善保存,请勿传播项目进度计划–项目管理者的目标是定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。–为达到上述目标,管理者必须制定一个足够详细的进度表,以便监督项目进度并控制整个项目。软件项目的进度安排–是这样一种活动,它通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项日持续期内。–进度计划将随着时间的流