1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/2/7,管理资料,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,#,第五部分 软件工程管理,关注问题,什么是项目管理?项目管理的范围是什么?,项目团队有哪些组织方式?,项目开发中存在什么样的风险?如何避免?,什么是软件配置管理?步骤是什么?,软件规模度量的方法有哪些?各有什么特点?,软
2、件项目估算有哪些方法?,软件项目进度计划有哪些方法?如何管理?,软件项目管理有哪些主流的工具?,软件项目管理,什么是软件项目管理?,软件项目管理的范围,软件团队与组织,软件项目管理内容,项目管理概述,项目是指一系列独特的、复杂的并相互关联的活动。,项目参数包括项目范围、质量、成本、时间、资源。,项目三维管理:,时间维:即把整个项目的生命周期划分为若干个阶段,从而进行阶段管理。,知识维:即针对项目生命周期的各个不同阶段,采用和研究不同的管理技术方法。,保障维:即对项目人力、财力、物力、信息等后勤保障管理。,项目管理特点,项目管理是一项比较复杂的工作,项目管理具有创造性,项目管理的对象是项目或被当
3、作项目来处理的作业,项目负责人,(,或项目经理,),在项目管理中起着非常重要的作用,项目管理需要集权领导和建立专门的项目组织,项目管理的方法、工具和手段具有先进性、开放性,项目的五个阶段,启动阶段:用户提出需求,开发人员进行需求分析,确定可行性,编写项目实施计划。,计划阶段:创建项目范围文档和项目计划,项目范围详细描述项目范围。,实施阶段:实施阶段意味着项目正在进一步设计、编码、测试,小组成员正在创造项目需要的可交付产品。,控制阶段:项目经理开始监督小组成员的工作,将项目的进度、任务和预算控制在正常的范围内。,收尾阶段:项目负责人和用户批准和签署项目,交付产品。项目的收尾阶段标志着项目的正式结
4、束。,软件项目管理,软件项目管理涉及对人员、过程、产品和项目本身等管理过程中发生的事件的计划和监控。,软件项目管理的任务包括:,制定项目实施计划,对人员进行组织、分工,成本管理,质量管理,软件开发,软件项目管理范围,软件项目管理是软件工程的保护性和支持性活动,持续贯穿于整个软件的定义、开发和维护过程之中。,软件项目管理的目的是为了按照预定的进度、费用等要求,成功地组织与实施软件的工程化生产,完成软件(产品)的开发和维护任务。,范围包括四个方面:,人员,费用,进度,质量,人员,软件开发过程是人的智力密集型劳动,所以项目开发成功一个很重要的因素是人。,目的之一就是通过吸引、培养、鼓励和留住有创造力
5、的、技术水平高的人才,增强软件组织承担日益繁重的软件开发的能力。,软件项目的参与者也称为项目的共利益者:,高级管理者,项目(技术)管理者,开发人员,客户,最终用户,软件项目开发人员计划,软件项目开发人员计划是一个时间的函数曲线,通常称为,Rayleigh-Norden,曲线。,t,d,时间,人员资源需求,协调和沟通,正式的、非个人的方法:包括一系列软件工程文档和交付物(如源程序):技术备忘录、项目里程碑、项目进度控制工具、错误跟踪报告、维护申请和相关文档、中心数据库等。,正式的、个人的方法:集中表现在软件工程产品的质量保证活动中。包括软件复审会议、设计和代码检查等。,非正式的、个人的方法:包括
6、信息传播、问题解决、需求和开发人员配置会议等。,电子通信方法:包括电子邮件、电子公告栏、,Web,站点,以及基于视频的会议系统等。,个人网络方法:与项目组之外的人员进行的非正式的讨论。,软件工程管理的内容,内容:,项目管理,过程管理,项目开发过程要做的工作:,项目职责(,Project Function,):不与软件开发过程的特定阶段相关联,活动(,Activity,)或任务(,Task,):与软件开发过程的特定阶段相联系。活动是一个较大的工作单元,可以包含一系列任务。,项目职责的管理过程,根据项目的目标和范围(用户和开发者共同确定),考虑可选的解决方案,定义技术和管理的约束;,进行合理(尽可
7、能准确)的成本估算、有效的风险评估、适当的项目任务划分或给出意义明确的项目进度标志等;,制定一份详细的软件项目管理计划。,软件度量,术语:,测量(,Measure,):对一个产品过程的某个属性(如范围、数量、维度、容量或大小)提供一个定量指示。,测度(,Measurement,):确定一个测量的行为,度量(,Metrics,):对一个系统、构件或过程具有的某个给定属性的度的定量测量。,软件度量主要划分两大类:,项目度量:战术性活动,目的在于辅助项目开发的控制和决策,改进软件产品的质量。,过程度量:战略性活动,目的在于改进企业的软件开发过程,提高开发生产率。,软件度量过程,测度,测量数据收集,软
8、件过程,软件项目,软件产品,度量,度量计算,测量,度量评价,软件项目管理计划文档,计划阶段的主要任务是拟定软件项目管理计划书(,SPMP,,,Software Project Management Plan,),软件项目管理计划(,SPMP,)的目标是提供一个框架,内容:,需要做的事:软件项目实施计划,包括进度安排、质量保证措施等;,需要的资源:软件项目资源需求和资源计划,资源包括时间、硬件、软件、人员和组织机构等;,需要的经费:对软件项目的规模、开发和维护成本估计。,SPMP,中软件产品的进展情况可以通过一个“里程碑(,Milestone,)”来反映。,SPMP,类型,项目实施计划:包括软件
9、目标、功能、进度、资源和费用等多个方面的一个综合性计划;,质量保证计划:包括软件开发各个阶段的质量要求和质量保证活动;,软件测试计划:规定各种测试活动的任务、方法、进度、资源和人员等;,文档编制计划:规定项目开发各个阶段应编制的文档种类、内容和标准等;,用户培训计划:包括对用户培训的目标、要求和进度等;,综合支持计划:描述软件开发所需的各个方面的支持,以及如何获得和利用这些支持等;,软件分发计划:软件产品如何交付的说明。,SPMP,文档标准规范,1,引言,1.1,项目概述,1.2,项目交付,1.3,软件项目管理计划的演变,1.4,参考资料,1.5,术语和缩写词,2,项目组织,2.1,过程模型,
10、2.2,组织结构,2.3,组织边界和接口,2.4,项目责任,3,管理过程,3.1,管理目标和优先级,3.2,假设、依赖性和限制,3.3,风险管理,3.4,监督与控制机制,3.5,人员计划,4,技术过程,4.1,方法、工具和技术,4.2,软件文档,4.3,项目支持功能,5,工作包、进度和预算,5.1,工作包,5.2,依赖性,5.3,资源要求,5.4,预算和资源分配,5.5,进度表,6,附加部分,软件团队组织范式,规划软件团队结构应考虑下列,7,个项目因素:,待解决问题的难度,程序的规模,团队成员需要共同工作的时间,对问题分解的程度,待开发系统的质量要求和可靠性要求,项目交付日期的严格程度,项目的
11、沟通程度,软件团队组织范式,民主分权式:小组没有固定的负责人,问题和解决方法由小组讨论决策。,个人偏爱自己,管理员难以管理太民主的小组,控制集权式:团队的顶层问题和组内协调由团队负责人管理。负责人和组员之间的沟通是上下级的。,专业化,层次性,控制分权最基本的概念是取消团队负责人的大部分管理工作。,控制分权式示意图,团队领导人,团队管理员,技术人员,技术人员,技术人员,大型组织的组织结构,团队领导人,小组领导人,技术员,技术,员,技术员,小组领导人,技术员,技术员,技术员,小组领导人,技术员,技术员,项目组织原则,在正确的基础上开始工作。首先要正确理解问题,然后为每个参与项目的人员设置实现的目标
12、和期望,并组织团队。,保持动力。为了维持动力,项目经理必须采取激励措施使人员变动量保持最小,强调质量。,跟踪进展。跟踪项目进展要作为质量保证活动的一部分。收集项目过程和测量数据,对照开发团队的平均数据来评估项目的进展。,做出合适的决策。决策应保持项目的简单性、识别并避免风险、分配比预定时间更多的时间来完成复杂或有风险的任务。,进行事后分析,W,5,HH,原则,为什么(,Why,)要开发这个系统?,将要做什么(,What,)?,什么时候(,When,)完成?,某个功能由谁(,Who,)完成,组织结构位于何处(,Where,)?,如何,(How),完成技术工作和管理工作?,每种资源需要多少(,Ho
13、w much,)?,软件过程管理,过程度量,人员的技能和动力,产品复杂性,过程中采用的技术,采用统计软件过程改进方法,过程改进,过程分析,改进识别,引入过程变更,过程变更培训,过程变更调整,项目度量,战术目的,在软件估算阶段,风险管理,对策:,项目风险需要识别、分析、应对和监控,整个项目的风险管理应有一个计划,可考虑前人总结出来的风险应对策略,管理步骤,:,风险识别,风险估计,风险管理策略,风险解决,风险监控,风险识别,软件风险,:,项目风险,技术风险,商业风险,检查内容:,产品规模风险,检查与软件总体规模相关的风险;,商业影响风险,检查与管理或市场的约束相关的风险;,与客户相关的风险,检查与
14、客户素质和沟通能力相关的风险;,过程风险,检查与软件过程定义和开发相关的风险;,技术风险,检查与软件的复杂性和系统所包含的技术成熟度相关的风险;,开发环境风险,检查与开发工具的可用性和质量相关的风险;,人员结构和经验风险,风险预测,风险预测,又可称为风险估计(,Risk Estimation,):,包括风险发生的可能性,建立风险可能性尺度,使用的是概率尺度,风险发生所产生的后果,估计风险对产品和项目的影响,使用定性的描述,三个因素:风险的性质、范围和时间,风险规避,风险驾驭,考虑风险出现的概率,产生的影响,处理风险的策略,风险监控,评估,风险成本,软件配置管理,软件配置(,Software C
15、onfiguration,)是一个软件各种形式、各种版本的文档和程序的总称,软件配置管理(,SCM,,,Software Configuration Management,)是对软件变更(或称为进化)过程的管理,变更不可避免,管理变更的能力是项目成败的关键,SCM,基本概念,软件变更需求源:,新的商业或市场条件,引起产品需求或业务流程(规则)的变化。,新的客户需要,要求修改软件系统产生的数据、产品提供的功能,或基于计算机系统提供的服务。,改组或减小企业规模,导致项目优先级或软件工程队伍结构的变化。,预算或进度的限制,导致系统或产品的重定义。,软件配置项,计算机程序(源程序和执行代码),软件(产
16、品)文档(技术文档和用户文档),以及数据,SCM,基本概念,各个阶段产品的复审时间均称为基线(,Base Lines,),基线是软件过程中的里程碑,其标志就是有一个或多个,SCI,的交付,重要原则:基线之前变更自由,基线之后必须严格变更管理,所有基线,SCI,被放置到项目配置数据库(或称为中心数据库)中,软件配置管理过程,配置管理规划,定义哪些,SCI,需要管理,以及识别这些,SCI,的形式模式,说明由谁负责配置管理规程,并把受控,SCI,提交给配置管理团队,用于变更控制和版本管理的配置管理策略,描述配置管理过程的记录,以及该记录应该被维护的形式,描述配置管理所使用的工具和使用这些工具的过程,
17、定义将用于记录配置信息的配置数据库,变更管理,版本和发布管理,版本发布管理负责确定发布时间、分发渠道、编制和管理发布文档,以及协助安装新的版本,SCM,中心存储库,SCM,中心存储库是一组机制和数据结构,功能:,数据完整性,信息共享,工具集成,数据集成,推行方法,文档标准化,小结,软件项目管理是软件工程的保护性活动。,软件项目管理计划(,SPMP,)是软件项目整个开发过程管理工作的指导性文件,主要描述要做的工作、要用的资源和需要的经费三个部分。,科学而合理地建立软件项目团队的组织机构,是人员管理中尤为突出的问题。,软件项目开发存在着风险。软件风险分析包括风险识别、风险预测、风险规划和监控活动。
18、软件配置管理(,SCM,)是应用于整个软件过程的保护性活动,也可被视为整个软件过程的软件质量保证(,SQA,)活动之一。,软件项目估算,软件项目估算内容,软件规模度量,软件成本估算技术,软件成本估算管理,软件项目估算,软件项目估算是软件项目计划的基础,估算必然存在一定程度的不确定性,估算要随着项目的进展不断地进行调整和更新,过程度量和项目度量为定量估算从历史角度提供了依据和有效的输入,软件项目的资源:,人员,可复用的软件构件或模块,开发环境。,每一项资源的四个特性:资源的描述、可用性说明、何时需要资源、事业资源的持续时间,四种软件资源,Bennatan,建议:,成品构件:从第三方获得的或在以
19、前的项目中已经进行过内部开发的已有软件。,具有完全经验的构件:为以前项目开发的,且与当前项目具有相似的规格说明、设计、代码或测试数据的构件。,具有部分经验的构件:为以前项目开发的,且与当前项目有关的构件,但要做实质上的修改。,新构件:必须要专门开发的构件。,软件规模度量,软件过程的直接度量:,成本,工作量,产品的直接度量:,代码行(,LOC,),运行速度,某段时间内报告的缺陷,产品的间接度量:,功能,质量,复杂性,有效性,可靠性,可维护性,其他特性,面向规模的度量,代码行技术,度量:,每千行代码(,KLOC,)的错误数,每千行代码(,KLOC,)的缺陷数,每千行代码(,KLOC,)的成本,每千
20、行代码(,KLOC,)的文档页数,每人,月错误数,每人,月千行代码(,KLOC,),每页文档的成本,问题:,代码只是整个的一小部分,不同的语言实现同一个软件产品将导致不同的代码行数,计算代码行数往往不是很准确,并非所有的代码都交付给用户,代码行数在软件产品开发完全结束后才能确定,面向规模的度量,软件科学方法,源于软件科学基本度量原理的度量软件产品规模的方法,如计算软件产品中(单一)操作数和运算符的数目,可测量数据方法,FFP,度量方法,文件,F,i,、流,F,l,和过程,P,r,S,=,F,i,+,F,l,+,P,r,C,=,S,不适合用于强调功能和控制的大型数据库领域,面向规模的度量,功能点
21、度量方法,功能点(,FP,,,Function Points,)度量方法是使用软件产品提供的功能测量作为规范值的,信息域值有输入项数,Inp,、输出项数,Out,、查询项数,Inq,、主文件数,Maf,和接口数,Inf,计算功能点数,FP,最简单的公式如下:,FP=4Inp+5Out+4Inq+10Maf+7Inf,信息度量项的系数,可以根据软件复杂性分成的简单、平均和复杂三个等级来选择,度量项不同级别功能点分配值,度量项,简单级,平均级,复杂级,Inp,3,4,6,Out,4,5,7,Inq,3,4,6,Maf,7,10,15,Inf,5,7,10,功能点度量方法估算步骤,确定软件产品中每个
22、度量项,即,Inp,,,Out,,,Inq,,,Maf,,,Inf,的功能点数,确定对应等级是简单、平均还是复杂级,即每个信息度量项的系数,一个未调整的功能点,UFP,计算技术复杂性因子,TCF,14,种技术因素,每一个因素分配一个从,0,(无影响)到,5,(影响最大),这,14,个技术因子的影响值相加得到总影响程度,DI,TCF=0.65+0.01DI,扩展的功能点数,FP,从以下计算得到:,FP=UFPTCF,面向对象的度量,场景脚本的数量,关键类的数量,支持类的数量,每个关键类的平均支持类数量,子系统的数量,软件成本估算的分解技术,基于问题分解的估算,基于过程分解的估算,基于问题分解的估
23、算,界定的软件范围,软件分解为可以被单独估算的问题或者功能,估算每一个问题,/,功能的,LOC,,,FFP,或,FP,对每个功能或每个信息域的计算值都估算出乐观值,S,opt,,可能值,S,m,,悲观值,S,pess,计算估算变量(规模)的期望值,EV,=,(,S,opt,+4,S,m,+,S,pess,),/6,将基线生产率度量估算成本及工作量,举例:用基于,LOC,的方法估算,问题描述:,一个计算机辅助设计(,CAD,,,Computer Aided Design,)应用软件的开发成本。该,CAD,系统运行在工作站上,并与各种计算机图形外设,如鼠标、数字化仪、高分辨率彩色显示器,以及激光打
24、印机有接口。,主要功能模块,CAD,软件有用户界面及控制机制,二维几何分析,三维几何分析,数据库管理,计算机图形显示控制,外设控制,设计分析模块,三点估算,功能,LOC,估算,功能,LOC,估算,用户界面及控制机制,2300,计算机图形显示控制,4950,二维几何分析,5300,外设控制,2100,三维几何分析,7800,设计分析模块,8400,数据库管理,3350,总,LOC,估算,34200,成本与工作量,这类系统的平均生产率是,620 LOC/pm,如果一个劳动力价格是,10000,美元,/,月,则每行代码的成本约为,16,美元(,1000062016,),根据,LOC,估算及历史生产率
25、数据,总的项目成本估算约为,547200,美元(,3420016=547200,),工作量估算约为,55,人,月(,3420062056,),举例,:用功能点,FP,方法估算,估算软件的输入、输出、查询、主文件和外部接口,用平均级加权因子的未调整的,FP,估算,信息域值,乐观值,可能值,悲观值,估算计数,加权因子,FP,计数,输入,20,24,30,24,4,96,输出,12,15,22,16,5,80,查询,16,22,28,22,4,88,主文件,4,4,5,4,10,40,外部接口,2,2,3,2,7,14,总,FP,计数值,318,计算复杂度调整因子估算表,调整因子,值,调整因子,值,
26、调整因子,值,数据通信,2,联机数据输入,3,安装方便,5,分布式数据处理,0,终端用户效率,5,操作方便,5,性能计算,4,联机更新,3,可移植性,4,高负荷的硬件,3,计算复杂性,4,可维护性,5,高处理率,5,重用性,4,DI,值,52,举例,:用功能点,FP,方法估算,估算,14,个技术加权因子,并计算复杂度调整因子,DI,得出,FP,的估算值:,FP=318,(,0.65+0.0152,),=372,这类系统组织的平均生产率是,6.5 FP/pm,。,如果一个劳动力价格是,10000,美元,/,月,则每个,FP,的成本约为,1539,美元。根据功能点估算及历史生产率数据,总的项目成本
27、估算约为,572508,美元(,3721539=572508,),工作量估算约为,57,人,月(,3726.556,),基于过程分解的估算,得到软件功能描述,估算出每个软件功能的每个过程活动所需的工作量,并编制成估算表,将平均劳动力价格用来估算每一个活动的工作量,得到成本估算,估算每一个功能及软件过程活动的成本及工作量,举例:基于过程的估算方法,活动,用户,通信,计划,风险,分析,工程 建造 发布,用户,评估,总和,子任务,分析,设计,编码,测试,功,能,用户界面及控制机制,0.5,2.5,0.4,5,n/a,8.4,二维几何分析,0.75,4,0.6,2,n/a,7.35,三维几何分析,0.
28、5,4,1,3,n/a,8.5,数据库管理,0.5,3,1,1.5,n/a,6.0,计算机图形显示控制,0.5,3,0.75,1.5,n/a,5.75,外设控制,0.25,2,0.5,1.5,n/a,4.25,设计分析模块,0.5,2,0.5,2.0,n/a,5.0,总计,0.25,0.25,0.25,3.5,20.5,4.75,16.5,46.0,举例:基于过程的估算方法,如果一个劳动力价格是,10000,美元,/,月,则总的项目成本估算是,460000,美元,工作量估算是,46,个人,月。,如果需要做更详细的预算,每一个软件过程活动可以关联不同的劳动力价格。,经验估算模型,专家类比推断技术
29、专家通过比较目标产品与他曾经亲身参与过的产品项目,区别两者的异同,而得到估算结果,由底向上估算方法,把产品分解成许多更小的部分,先对每个部分的工作量和成本进行估算,然后把它们组合得到一个总的估算数据,COCOMO,(,COnstructive COst MOdel,构造性成本模型),中级,COCOMO,估算模型,基于对象点的估算,计算对象点:(,1,)用户界面数,(,2,)报表数,(,3,)构造应用可能需要的构件数,确定三个复杂度级别之一,即简单级、中等级和困难级,求和后得到了总的对象点数,对象类型,简单级,中等级,困难级,界面,1,2,3,报表,2,5,8,构件,10,中级,COCOMO,
30、估算模型,估算复用的百分比,并调整对象点数:,NOP=,对象点,(,100-,复用的百分比),/100,确定生产率的值,PROD=NOP/,人,月,得到项目工作量的估算值:,估算工作量,=NOP/PROD,开发者的经验,/,能力,非常低,低,正常,高,非常高,环境成熟度,/,能力,非常低,低,正常,高,非常高,PROD,4,7,13,25,50,中级,COCOMO,估算模型,基于代码行的估算,首先用千条代码行数(,KLOC,)度量产品长度,确定开发模式,有三种模式:组织型(,Organic,,小型、较简单型)、半独立型(,Semidetached,,中等规模型)和嵌入型(,Embedded,,
31、复杂型),计算正常工作量,E,(以人月为单位)和正常开发时间,T,(以月为单位),正常工作量(,E,),=,a,(,KLOC,),b,正常开发时间(,T,),=,c,(正常工作量),d,a,,,b,,,c,,,d,取值由开发模式而定,项目开发模式,a,b,c,d,组织型(简单型),3.2,1.05,2.5,0.38,半独立型(中等规模型),3.0,1.12,2.5,0.35,嵌入型(复杂型),2.8,1.20,2.5,0.32,中级,COCOMO,估算模型,正常的工作量,E,和开发时间,T,还必须与,15,个软件开发工作量调节因子(,EAF,,,Effort Adjustment Factor
32、相乘,每个调节因子可以有,6,个值,分别是非常低、低、正常、高、非常高和极高。,15,个工作量调节因子(,EAF,)值,工作量调节因子(,EAF,),因 素,非常低,低,正常,高,非常高,极高,产品,属性,软件要求的可靠性,0.75,0.88,1.0,1.15,1.40,-,数据库规模,-,0.94,1.0,1.08,1.16,-,产品复杂度,0.70,0.85,1.0,1.15,1.30,1.65,计算,机属,性,执行时间限制,-,-,1.0,1.11,1.30,1.66,主存限制,-,-,1.0,1.06,1.21,1.56,开发环境易变性,-,0.87,1.0,1.15,1.30,-
33、计算机响应时间,-,0.87,1.0,1.07,1.15,-,人员,属性,分析能力,1.46,1.19,1.0,0.86,0.71,-,应用领域的经验,1.29,1.13,1.0,0.91,0.82,-,程序员的能力,1.42,1.16,1.0,0.86,0.70,-,开发环境的使用经验,1.21,1.10,1.0,0.90,-,-,程序语言使用经验,1.14,1.07,1.0,0.95,-,-,项目,属性,现代软件技术使用程度,1.24,1.10,1.0,0.91,0.82,-,软件工具的使用程度,1.24,1.10,1.0,0.91,0.83,-,要求的开发进度,1.23,1.08,1.
34、0,1.04,1.10,-,举例:中级,COCOMO,方法估算,一个基于微处理器的通信处理软件,该通信处理软件用于可靠的电子基金传输网络,具有性能、开发速度和接口方面的要求,符合嵌入型模式的描述,估算有,10000,条源代码行,即,10 KLOC,。,该项目的具体情况和工作量调节因子(,EAF,)的取值如表,15-10,所示,中级,COCOMO,工作量调节因子,因 素,情 况,等级,工作量乘数,软件要求的可靠性,数据库规模,产品复杂度,执行时间限制,主存限制,开发环境易变性,计算机周转时间,分析能力,应用领域的经验,程序员的能力,开发环境的使用经验,程序语言的使用经验,现代软件技术使用程度,软
35、件工具的使用程度,要求的开发进度,软件故障会带来严重的后果,20000,字节,通信处理,70,%,的时间可用,64KB,中的,45KB,(,70,%,),基于商用微处理器硬件,平均周转时间为两小时,优秀的高级分析员,两年,优秀的程序员,两年,六个月,大多数技术使用一年,处于基本的小型机工具级,九个月,高,低,非常高,高,高,正常,正常,高,正常,高,正常,低,高,低,正常,1.15,0.94,1.30,1.11,1.06,1.00,1.00,0.86,1.00,0.86,1.00,1.10,0.91,1.10,1.00,举例:中级,COCOMO,方法估算,正常工作量,E,=2.810,1.20
36、44.4,(人月),正常开发时间,T,=2.544.4,0.32,=8.4,(月),将表,15-10,中,15,个工作量调节因子相乘,结果为,1.35,。,该项目的总估算为:,E,=44.41.35=59.9,(人月),T,=8.41.35=11.3,(月),成本估算管理,跟踪实际的开发工作量,并把它们与预测值进行比较,软件质量保证(,SQA,)小组独立对开发周期和成本估算再次进行估算分析,实例分析,短信系统,POS,机系统,小结,软件项目计划人员必须估算:需要多长时间、需要多少工作量,以及需要多少人员和需要的资源。,准确地估算开发周期和开发成本并不是一件容易的事,软件产品规模的度量是软件
37、成本估算的基础。,采用分解技术(专家类比推断法、由底向上估算法)和一些采用统计理论和数学方程、经过验证的经验估算模型,中级,COCOMO,模型是一个最为广泛的成本估算方法,软件项目计划与管理,软件质量管理,项目计划,项目管理工具,软件项目计划与管理,任务:,制定软件开发计划,跟踪、监督和协调工程进度,保证工期,软件质量管理,软件质量管理手段:,技术手段,改进测试方法,提高测试效率,提高软件质量,改进开发过程,使各种错误不会或很少引入软件开发过程,管理手段,技术手段能力有限,软件质量概念,软件质量属性包括循环复杂度、内聚性、功能点数量、代码行数,质量分为:,设计质量:指设计者为一个产品规定的特征
38、系统的需求,规格说明,设计,一致性质量:指在制造产品的过程中遵守设计规格说明的程度,实现问题,用户满意度,=,合格的产品,+,好的质量,+,按预算和进度交付,软件质量管理,软件的质量检测,属于一种粗放式的质量管理形式,事后检测的方式,软件质量保证,指软件生产过程包含的一系列质量保证活动,体现了软件质量全面控制(,TQC,,,Total Quality Control,)的核心思想,遵循的,PDCA,(,Plan-Do-Check-Action,)循环所建议的“计划,实施,检测,措施”的顺序,软件质量认证,把对个别产品的质量保证扩展到对软件企业(组织)整体资质的认证,ISO9000,软件质量保
39、证(,SQA,),SQA,小组,SQA,活动:,准备,SQA,计划,参与和监督软件过程,评审,记录报告,SQA,计划,ANSI/IEEE Std.983-1986 SQA,计划,1,计划目的,2,参考文献,3,管理,3.1,组织,3.2,任务,3.3,责任,4,文档,4.1,目的,4.2,软件工程文档,4.3,其他文档,5,标准、实践和约定,51,目的,5.2,约定,6,复审和审计,6.1,目的,6.2,需求复审,6.2.1,软件需求复审,6.2.2,设计复审,6.2.3,软件验证和确认复审,6.2.4,功能审计,6.2.5,物理审计,6.2.6,过程内部审计,6.2.7,管理复审,7,测试,
40、8,问题报告和改正行动,9,工具、技术和方法,10,代码控制,11,媒体控制,12,供应商控制,13,记录收集、维护和保留,14,培训,15,风险管理,软件质量度量,软件质量的定义和测量:,正确性:软件完成所要求的功能的程度,千行代码(,KLOC,)的缺陷数,缺陷是按标准时间段来计数的,一般是一年,可维护性:遇到错误时程序能够被修改的容易程度,平均变更时间(,mean-time-to-change,MTTC,),完整性:一个系统对安全性攻击的抵抗能力,完整性,=1,(危险性,(,1-,安全性),可用性:使用的容易程度进行量化,可靠性,:在规定的条件和时间内,软件完成规定功能的能力,缺陷排除效率
41、软件团队排除软件故障的能力,缺陷排除效率,缺陷排除效率(,defect removal efficiency,DRE,)是在项目级和过程级都有意义的质量度量,定义:,DRE=E/,(,E+D,),其中,E,是软件交付给用户之前发现的错误数,,D,是软件交付之后发现的缺陷数,软件可靠性,定义:软件可靠性是在给定的时间内,按照(系统规格说明书)规定的条件,软件成功运行的概率。,软件可靠性分为五级,分级,故障后果,工作量调节因子,很低,低,正常,高,很高,工作略有不便,有损失,但容易弥补,弥补损失比较困难,有重大的经济损失,危及人的生命,0.75,0.88,1.00,1.15,1.40,评测可靠
42、性的方法,可靠性与软件的故障密切相关,可靠性理论:,R,(,t,)可以表示为程序运行时间,t,和故障率,(单位时间内程序运行失败的次数)的指数函数,R,(,t,),=e,t,R,(,t,),1.0,t,1,2,3,1,2,3,评测可靠性的方法,衡量可靠性的方法是直接计算软件平均故障时间(,MTTF,,,Mean Time To Failure,),MTTF,可以是故障率的倒数,即,MTTF=l/,统可靠性(,R,SYS,)是软件、硬件和运行操作三种可靠性(分别是,R,S,,,R,H,,,R,OP,)的综合反映,R,SYS,=,R,S,R,H,R,OP,SYS,=,S,+,H,+,OP,MTTF
43、SYS,=l/,(,S,+,H,+,OP,),软件容错技术,容错性是软件可靠性的子属性之一,容错软件,即具有抗故障能力的软件,处理错误的方法有三种:,屏蔽错误,把错误屏蔽掉,使之不致产生危害,修复错误,能在一定程度上,使软件从错误状态恢复到正常状态,减少影响,能在一定程度上,使软件完成预定的功能,冗余(,Redundancy,)技术:以额外的资源消耗换取系统的正常运行”。常用的冗余技术有:,结构冗余:利用多余的结构来换取可靠性的提高,时间冗余:检测程序,如看门狗,信息冗余:附加的冗余信息(如奇偶码、循环码等误差校正码),检测和纠正传输或运算中可能出现的错误,静态、动态冗余结构系统示例,表决器
44、M,1,M,2,M,n,备用,备用,主用,M,1,M,2,M,n,软件复审,软件复审是软件错误的过滤器,软件复审可以认为是净化分析、设计和编程等过程所产生的软件产品的必要手段,复审分:,技术复审:越在早期发现错误越容易改正,代价也越低,正式的技术复审,技术复审小组由审查组长、作者和评审员组成,以会议形式进行,完整的技术复审过程一般由准备、介绍情况、阅读资料、开审查会、返工和复查六个步骤组成,审查会的目的是发现错误而不是改正错误,管理复审,软件质量认证标准,软件质量认证(,SQC,),ISO 9000,标准系列,SO 9000,标准系列由五个相关的标准组成:,质量术语标准(,ISO 8402-
45、1994,);,质量保证标准(,ISO 9001,等);,质量管理标准(,ISO 9004-1,等);,质量管理和质量保证标准的选用和实施指南(,ISO 9000-3,等);,支持性技术标准(,ISO 10005,等),ISO 9001,标准,包括:设计、开发、生产、安装和服务,ISO 9000-3,标准:计算机软件开发、供应、安装和维护的使用指,CMM,标准,强调持续改进,软件项目计划,目标是为项目负责人提供一个框架,7,个指导原则:,(,1,)运用项目规划的方法进行协调而不是控制,(,2,)在项目环境中利用不同个性的人,(,3,)预先制定项目规划中需要经常修改的版本,(,4,)授权员工对自
46、己的工作进行评估,(,5,)描述创造价值的任务而不仅仅是价值创造的活动,(,6,)定义具体的可实现的里程碑式的事件,(,7,)在项目规划中使用检查列表、矩阵模型等其他补充工具,项目进度安排,目标是定义所有项目任务和活动,识别关键任务,/,活动,并跟踪关键任务,/,活动的进展,基本原则:,划分,相互依赖性,时间分配,人员分配,定义责任,定义结果,定义里程碑,工作量调度指导原则:,“,40-20-40,规则”,即,40,%,或更多的工作量分配给前端的分析和设计任务,,40,%,的比例用于后端测试,只有,20,%,的比例用于编码工作,进度安排方法,方法:,程序评估和复审技术(,PERT,,,Prog
47、ram Evaluation and Review Technique,),关键路径管理(,CPM,,,Critical Path Management,),要点是:,提供项目工作量划分的工具,支持计划者确定关键路径(决定项目持续时间的任务链),通过使用统计模型为单个任务建立最有可能的时间估算,为特定任务定义其时间窗口的边界时间,建立时间表,甘特(,Gantt,)图,PERT,图:描绘任务的分解情况,每个任务的工作量、开始时间和结束时间、各个任务间的依赖关系,圆框表示一项任务,,圆框间的箭头表示任务的顺序,圆框上面的(,,,)表示开始时间和结束时间,工程网络图:一种有向图,圆表示事件,有向弧或
48、箭头表示子任务的进行,箭头上的数字称为权,该权表示此子任务的持续时间,箭头下面括号中的数字表示该任务的机动时间,时间表(,Gantt,图)描述示例,任务,负责人,1998,3,4,5,6,7,8,9,10,11,12,1999,1,2,3,4,5,A,SE,B,SE,C,PG,D,SE,E,VV,F,VV,G,VV,H,VV,PERT,图,起点,(,0,,,0,),终点,(,15,,,15,),E,(,3,,,5,),A,(,0,,,3,),B,(,3,,,7,),D,(,7,,,9,),H,(,11,,,15,),F,(,0,,,2,),C,(,7,,,11,),G,(,2,,,8,),工程
49、网络图,项目进度的跟踪管理,定期举行项目状态会议,由项目组成员分析报告进度和问题。,评估所有软件过程中所进行的复审的结果。,确定正式的项目里程碑是否在预定日期内完成。,比较项目表中列出的更新任务的实际开始日期与计划开始日期。,与开发者进行非正式会谈,获取他们对项目进展及可能出现的问题的客观评估。,软件项目管理工具,Microsoft Project,:,分配任务,并跟踪已完成的工作,请求和接收状态报表,审阅其任务分配,在“甘特图”中查看其任务,审阅项目、任务和资源信息,主界面,小结,软件项目管理是软件工程的保护性活动。它先于任何技术活动之前开始,并持续贯穿于整个软件的定义、开发和维护过程之中。
50、软件质量保证(,SQA,)机制是贯穿于整个生存周期的、全员参与的一系列保护性活动。,软件可靠性在质量属性中占有主要地位,它既可表示为一定时间内软件正常运行的概率,也可表示为软件的平均故障时间。,可靠性是通过避免错误和容错两类技术支持的。,软件项目整个开发周期的管理工作还必须涉及到软件项目的进度安排和跟踪管理。,项目计划的目标是为项目负责人提供一个框架,使之能合理地估算软件项目开发所需的资源、经费和开发进度,并控制软件项目开发过程按此计划进行。,软件项目的进度安排是通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。,本部分的实






