《软件工程ppt课件第14章 软件项目管理.ppt》由会员分享,可在线阅读,更多相关《软件工程ppt课件第14章 软件项目管理.ppt(148页珍藏版)》请在三一办公上搜索。
1、软件工程,第14章 软件项目管理,沈阳建筑大学信息与控制工程学院 软件工程课程,2/148,项目,罗伯特.J.格雷厄姆(美国著名学者):因为项目是适应环境变化的普遍方式,故而一个组织的成功与否将取决于其管理项目的水平项目管理权威机构PMI:项目管理协会Project Management Institute项目的定义(PMI):一种被承办的旨在创造某种独特产品或服务的暂时性努力,沈阳建筑大学信息与控制工程学院 软件工程课程,3/148,软件项目管理,软件危机后的普遍性结论:软件项目成功率非常低的原因可能是项目管理能力太弱软件项目管理是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定
2、的时间和预设范围内,有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成,沈阳建筑大学信息与控制工程学院 软件工程课程,4/148,内容摘要,软件项目管理概述软件度量软件项目估算项目进度管理风险管理软件项目的组织软件质量管理软件配置管理小结,沈阳建筑大学信息与控制工程学院 软件工程课程,5/148,内容摘要,软件项目管理概述软件度量软件项目估算项目进度管理风险管理软件项目的组织软件质量管理软件配置管理小结,沈阳建筑大学信息与控制工程学院 软件工程课程,6/148,软件项目管理,项目管理是通过项目经理和项目组织的努力,运用系统理论的方法对项目及其资源进行计划、组织、
3、协调、控制,旨在实现项目的特定目标的管理方法体系(软件)项目管理的基本内容:项目定义、项目计划、项目执行、项目控制、项目结束,沈阳建筑大学信息与控制工程学院 软件工程课程,7/148,软件项目管理的关注点(4P),人员(People)人员是软件工程项目的基本要素和关键因素在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型 产品(Product)定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等 过程(Process)通常将项目分解为任务子任务等,其分解准则是基于软件工程的过程 项目(Project) 采用科学的方法及工具对项目基本内容进行管理,
4、沈阳建筑大学信息与控制工程学院 软件工程课程,8/148,软件项目管理中的五类人员,项目管理人员负责软件项目的管理工作,其负责人通常称为项目经理高级管理人员可以是领域专家,负责提出项目的目标并对业务问题进行定义开发人员掌握了开发一个产品或应用所需的专门技术,可胜任包括需求分析、设计、编码、测试、发布等各种相关的开发岗位客户一组可说明待开发软件的需求的人,也包括与项目目标有关的其它风险承担者最终用户产品或应用提交后与产品/应用进行交互的,沈阳建筑大学信息与控制工程学院 软件工程课程,9/148,软件项目管理中的产品,定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束目的
5、:从客户的角度定义该产品的总体目标,但不必考虑这些目标如何实现软件范围定义了与软件产品相关的数据、功能和行为,及其相关的约束:语境(context):说明待建造的软件与其它相关系统、产品或环境的关系,以及相关的约束条件信息目标:说明目标系统所需要的输入数据及应产生的输出数据功能和性能:说明软件应提供的功能来完成输入数据到输出数据的变换以及给出对目标软件的性能要求,沈阳建筑大学信息与控制工程学院 软件工程课程,10/148,软件项目方法,对项目进行有计划和可控制的管理明确目标及过程:充分理解被解决的问题,明确定义项目目标及软件范围,为项目小组及活动设置明确、现实的目标,并充分发挥相关小组的自主性
6、保持动力:提供激励措施使人员变动最小跟踪进展:对每个任务的进展进行跟踪,并对其软件过程和质量进行度量 做出聪明的决策:项目管理者和软件小组的决策应该 “保持其简单” 项目总结:从每个完成的项目中获取可学习的经验,沈阳建筑大学信息与控制工程学院 软件工程课程,11/148,软件项目管理过程示例,沈阳建筑大学信息与控制工程学院 软件工程课程,12/148,软件项目启动,在软件项目启动前对项目进行可行性分析,以明确项目的目标和范围,从而确定:合理精确的成本分析;实际可行的任务分解;可管理的进度安排在多个项目方案中选择一个相对完善的方案考虑交付期限、预算、个人能力、技术界面等限制条件在正式启动软件项目
7、前组成项目组,并召开项目启动会议,内容包括:项目组的初步交流;进一步对项目目标理解;对组织形式、管理方式、方针的一致认识;明确岗位职责,沈阳建筑大学信息与控制工程学院 软件工程课程,13/148,项目组织,在项目经理领导下,组织不同类型的项目组成员共同协作完成软件项目存在多种可选的项目组织结构,组织结构的选择对项目的成败具有很大影响规划软件工程项目组织结构时考虑如下因素:待解决问题的困难程度目标系统的规模,可用代码行或功能点来度量项目组的生存期,即项目小组需要共同工作的时间问题可被分解的程度对目标系统要求的质量和可靠性可供开发时间的紧迫性,即交付时间的严格程度项目组内部的通信的复杂性,即成员(
8、小组)之间正式或非正式通信的机制,沈阳建筑大学信息与控制工程学院 软件工程课程,14/148,项目计划,项目计划是项目组织根据软件项目的目标及范围,对项目实施中进行的各项活动进行周密的计划项目计划根据项目目标确定项目的各项任务、安排任务进度、编制完成任务所需的资源预算等项目计划包括:工作计划、人员组织计划、设备采购计划、变更控制计划、进度控制计划、财务计划、文件控制计划、应急计划等,沈阳建筑大学信息与控制工程学院 软件工程课程,15/148,软件度量,软件度量是指计算机软件范围内的测量,主要是为产品开发的软件过程和产品本身定义相关的测量方法和标度对软件开发过程度量的目的是为了对过程进行改进对产
9、品进行度量的目的是为了提高产品的质量,度量的作用是为了有效地采用定量的方式来进行管理管理人员利用度量来了解软件工程过程的执行情况和产品质量需要考虑:合适的度量是什么所收集的数据如何使用用于比较个人、过程或产品的度量是否合理,沈阳建筑大学信息与控制工程学院 软件工程课程,16/148,项目估算,项目估算是制定项目计划的基础项目所需的人力(以人月为单位)、项目持续时间(以年份或月份为单位)、成本(以元为单位)等参照以前类似项目中的相关数据进行估算若存在类似历史项目则可进行类比估算若缺少可类比的项目数据则采用特定的估算技术(例如功能点估算方法等)通常采用多种估算技术进行交叉检查,沈阳建筑大学信息与控
10、制工程学院 软件工程课程,17/148,风险管理,风险:人员、经费、进度及需求等方面存在的可能影响项目按计划完成的不确定因素风险管理:标识软件项目中的风险,预测风险发生的概率以及风险造成的影响,并对风险进行评估,找出那些可能导致项目失败的风险,然后采取相应的措施来缓解风险风险管理贯彻于整个软件工程过程中,沈阳建筑大学信息与控制工程学院 软件工程课程,18/148,进度安排,进度安排将项目划分成可管理的子项目、任务和活动确定任务之间的依赖关系,找出影响项目按期完成的关键任务为每个任务分配时间、工作量以及指定责任人,定义每个任务的输出结果及其关联的里程碑在项目实施过程中将在进度计划基础上跟踪实际执
11、行情况,从而及时发现偏差并采取措施加以调整以确保项目按期完成,沈阳建筑大学信息与控制工程学院 软件工程课程,19/148,跟踪与控制,跟踪是控制的前提,它实际上是在项目实施过程中对影响项目进展的内外部因素进行及时的、连续的、系统的记录和报告的活动,其核心在于反映项目变化、提供相关信息的报告控制是通过工具和技术对项目计划与实际执行进行对比,并对项目的未来走向进行预测,再此基础上进行项目的各种调整,沈阳建筑大学信息与控制工程学院 软件工程课程,20/148,软件配置管理,Software Confignation Management(SCM)任务:标识和确定系统中的配置项,在系统整个生命期内控制
12、这些项的发布和变更,记录并报告配置的状态和变更要求,验证配置项的完整性和正确性SCM存在于整个软件过程中,是一种保护性活动,沈阳建筑大学信息与控制工程学院 软件工程课程,21/148,内容摘要,软件项目管理概述软件度量软件项目估算项目进度管理风险管理软件项目的组织软件质量管理软件配置管理小结,沈阳建筑大学信息与控制工程学院 软件工程课程,22/148,术语定义(ISO/IEC 9126-1)信息技术 软件产品评价 质量特性及其使用指南,Metric(度量):定义测量方法和测量标度Measurement(测量):使用一种度量把标度值(可以是数字或类别)赋予实体的某个属性Measure(verb
13、测量):执行一次测量(measurement)Measure(noun 测度):通过执行一次测量赋予实体属性的数字或类别direct measure(直接测量):不依赖于任何其它属性的测量导出的属性测量indirect measure(间接测量):从一个或多个其它属性的测量导出的属性测量internal measure(内部测量):一种对产品本身的直接或间接的测量external measure(外部测量):一种通过对外系统的测量导出对产品(作为系统的一部分)的间接测量,沈阳建筑大学信息与控制工程学院 软件工程课程,23/148,软件度量,度量对象:软件产品、软件过程、资源外部属性:面向管理者
14、和用户的属性体现了软件产品/软件过程与相关资源和环境的关系,如成本、效益、开发人员的生产率通常可采用直接测量的办法进行内部属性:软件产品或过程本身的属性如软件产品的结构、模块化程度、复杂性、程序长度等有些内部属性只能用间接测量的方法度量,需要特定的测量方法或模型,沈阳建筑大学信息与控制工程学院 软件工程课程,24/148,软件度量分类,分类1:面向规模的度量用于收集与直接度量有关的软件工程输出信息和质量信息面向功能的度量的则集中在程序的“功能性”和“实用性”面向人的度量则收集有关人们开发计算机软件所用方式的信息和人员理解有关工具的方法和效率的信息分类2:软件生产率度量集中在软件工程过程的输出软
15、件质量度量可指明软件满足明确的和隐含的用户需求的程度技术度量主要集中在软件产品的某些特征(如逻辑复杂性、模块化程度)上,而不是软件开发的全过程,沈阳建筑大学信息与控制工程学院 软件工程课程,25/148,面向规模的度量,软件规模通常是指软件的大小(size),一般用代码行度量优点:方便、直观缺点:很大程度上取决于程序设计语言以及软件设计的质量测量出软件规模后可方便地度量其它软件属性,包括:,沈阳建筑大学信息与控制工程学院 软件工程课程,26/148,面向功能的度量,一种针对软件的功能特性进行度量的方法主要考虑软件系统的“功能性”和“实用性”功能点度量:基于软件信息域的特征(可直接测量)和软件复
16、杂性进行规模度量功能点度量方法步骤:计算信息域特征的值CT计算复杂度调整值计算功能点FP,沈阳建筑大学信息与控制工程学院 软件工程课程,27/148,计算信息域特征的值CT,对五个信息域特征及其含义(上表)统计相应的特征值,然后根据信息域特征的复杂程度选择适当的加权因子进行计算(下表),得到总计的CT值,沈阳建筑大学信息与控制工程学院 软件工程课程,28/148,计算复杂度调整值,复杂度调整值Fi(i=1到14)是基于对左表中问题的回答而得到的值,对每个问题回答的取值范围是0到5,见右表,沈阳建筑大学信息与控制工程学院 软件工程课程,29/148,计算功能点FP,功能点计算公式FP= CT*(
17、0.65+0.01*F)其中:CT是步骤1得到的“总计数值”,F是步骤2得到的Fi之和一旦计算出功能点,则用类似代码行的方法来计算软件生产率、质量及其他属性,沈阳建筑大学信息与控制工程学院 软件工程课程,30/148,扩展的功能点度量,功能点度量的不足:最初主要用于商业信息系统的度量,强调数据维,即信息域特征值,而忽略了功能和行为(控制)Jones提出了称为特征点(Feature Point)的扩展的功能点度量方法在功能点信息域特征中增加了一个算法特征,并将算法定义为“特定计算机程序中所包含的一个界定的计算问题”,沈阳建筑大学信息与控制工程学院 软件工程课程,31/148,功能点与LOC的换算
18、(部分),沈阳建筑大学信息与控制工程学院 软件工程课程,32/148,软件质量,软件质量定义ISO/IEC 9126:与软件产品满足明确或隐含需求的能力有关的特征和特性的总和GB/T 13423:软件产品中能满足给定需求的性质和特性的总和,例如符合规格说明的程度;软件具有所期望的各种属性的组合程度;客户或用户觉得软件满足其综合期望的程度;软件的综合特性,它确定软件在使用中将满足客户预期要求的程度典型的软件质量模型:McCall模型、Boehm模型和ISO/IEC9126质量模型,沈阳建筑大学信息与控制工程学院 软件工程课程,33/148,McCall模型,质量要素反映软件的质量,决定产品质量的
19、软件属性用作评价准则,量化的度量体系可测量软件质量属性的优劣,沈阳建筑大学信息与控制工程学院 软件工程课程,34/148,McCall软件质量要素,软件产品的运行、修改和迁移三个方面11个软件质量要素,沈阳建筑大学信息与控制工程学院 软件工程课程,35/148,McCall软件质量要素定义,正确性(correctness):一个程序满足它的需求规约和实现客户任务目标的程度可靠性(reliability):一个程序期望以所需的精确度完成它的预期功能的程度效率(efficiency):一个程序完成其功能所需的计算资源和代码的数量完整性(integrity):对未授权人员访问软件或数据的可控制程度可
20、用性(usability):学习、操作、准备输入和解释程序输出所需的工作量可维护性(maintainability):定位和修复程序中一个错误所需的工作量灵活性(flexibility):修改一个运作的程序所需的工作量可测试性(testability):测试一个程序以确保它完成所期望的功能所需的工作量可移植性(portability):把一个程序从一个硬件和/或软件系统环境移植到另一个所需的工作量可复用性(reusability):一个程序(或一个程序的部分)可以在另外一个应用程序中复用的程度,与程序完成的功能的包装和范围相关可互操作性(interoperability):连接一个系统和另一个
21、系统所需的工作量。,沈阳建筑大学信息与控制工程学院 软件工程课程,36/148,质量要素之间的关系,其中表示正相关,表示负相关,沈阳建筑大学信息与控制工程学院 软件工程课程,37/148,软件质量属性,软件质量要素难以直接测量,因此需要为每个质量要素定义一组软件质量属性用作质量要素的评价准则,要求能够完整、准确地描述软件质量要素容易量化和测量McCall定义了21种软件质量属性,沈阳建筑大学信息与控制工程学院 软件工程课程,38/148,软件质量要素评价准则-1,(1)可审计性(auditability)和标准的符合性可被检查的容易程度。(2)准确性(accuracy)计算和控制的准确度。(3
22、)通信共性(communication commonality)标准接口、协议和带宽的使用程度。(4)完备性(completeness)所需功能完全实现的程度。(5)简洁性(conciseness)以代码行数来评价的程序的简洁程度。(6)一致性(consistency)在软件开发项目中一致的设计和文档技术的使用。(7)数据共性(data commonality)在整个程序中对标准数据结构和类型的使用。,沈阳建筑大学信息与控制工程学院 软件工程课程,39/148,软件质量要素评价准则-2,(8)容错性(error tolerance)当程序遇到错误时所造成的损失。(9)执行效率(executio
23、n efficiency)一个程序的运行性能。(10)可扩展性(expandability)结构、数据或过程设计可被扩展的程度。(11)通用性(generality)程序构件潜在的应用宽度。(12)硬件独立性(hardware independence)软件独立于其运行于之上的硬件的程度。(13)自检测性(instrumentation)程序监视它自身操作并且标识产生的错误的程度。(14)模块性(modularity)程序部件的功能独立性。,沈阳建筑大学信息与控制工程学院 软件工程课程,40/148,软件质量要素评价准则-3,(15)可操作性(operability)程序操作的容易度。(16)
24、安全性(security)控制和保护程序和数据的机制的可用度。(17)自文档性(self-documentation)源代码提供有意义的文档程度。(18)简单性(simplicity)一个程序可以没有困难地被理解的程度。(19)软件系统独立性(software system independence)程序独立于非标准编程特性、操作系统特性和其他环境限制的程度。(20)可追踪性(traceability)从一个设计表示或实际程序部件跟踪到需求的能力。(21)易培训性(training)软件支持使得新用户使用系统的能力。,沈阳建筑大学信息与控制工程学院 软件工程课程,41/148,质量要素与评价准
25、则的关系,沈阳建筑大学信息与控制工程学院 软件工程课程,42/148,量化的度量,处于软件质量度量模型的最底层是定义了每个质量属性(评价准则)的可量化的度量指标通过对这些指标的测量(可以是主观的,也可以是客观的)和加权计算得到质量属性的测量值在McCall的模型中未给出具体的度量指标,度量者可根据不同的软件类型定义不同的度量指标体系,沈阳建筑大学信息与控制工程学院 软件工程课程,43/148,质量要素值的计算,在计算质量要素值之前,首先要将质量属性的测量值归一化,即将其变换到0到1范围内的实数假设:Fj是第j个质量要素,Mk是第k个质量属性(评价准则),Cjk是Mk在Fj中的加权系数。那么,F
26、j可用下列公式计算:,其中:,,,当 时表示第j个质量要素与第k个质量属性无关,沈阳建筑大学信息与控制工程学院 软件工程课程,44/148,ISO/IEC 9126质量模型,由质量特性、子特性和度量三个层次组成第一层有6个质量特性第二层有21个质量子特性第三层是由度量者定义的可定量化度量指标,沈阳建筑大学信息与控制工程学院 软件工程课程,45/148,ISO/IEC 9126的6个质量特性,功能性(functionality):与一组功能及其指定的性质有关的一组属性可靠性(reliability):与在规定的一段时间和条件下,软件维护其性能水平的能力有关的一组属性易用性(usability):
27、与一组规定或潜在的用户为使用软件所需作的努力和对这样的使用所作的评价有关的一组属性效率(efficiency):与在规定的条件下,软件的性能水平与所使用资源之间有关的一组属性可维护性(maintainability):与进行指定的修改所需的努力有关的一组属性可移植性(portability):与软件可从某一个环境移植到另一个环境的能力有关的一组属性,沈阳建筑大学信息与控制工程学院 软件工程课程,46/148,ISO/IEC 9126质量子特性-功能性,适合性(suitability):与规定任务能否提供一组功能以及这组功能的适合程度有关的软件属性准确性(accuracy):与能否得到正确或相符
28、的结果或效率有关的软件属性互操作性(interoperability):与同其它指定系统进行交互的能力有关的软件属性依从性(compliance):使软件遵循有关的标准、约定、法规及类似规定的软件属性安全性(security):与防止对程序及数据的非授权的故意或意外访问的能力有关的软件属性,沈阳建筑大学信息与控制工程学院 软件工程课程,47/148,ISO/IEC 9126质量子特性-可靠性,成熟性(maturity):与由软件故障引起失效的频率有关的软件属性容错性(fault tolerance):与在软件故障或违反指定接口的情况下,维持规定的性能水平的能力有关的软件属性易恢复性(recov
29、erability):与在失效发生后,重建其性能水平并恢复直接受影响数据的能力以及为达此目的所需的时间和努力有关的软件属性,沈阳建筑大学信息与控制工程学院 软件工程课程,48/148,ISO/IEC 9126质量子特性-易用性,易理解性(understandability):与用户为认识逻辑概念及其应用范围所花的努力有关的软件属性易学性(learnability):与用户为学习软件应用(例如运行控制、输入、输出)所花的努力有关的软件属性易操作性(operability):与用户为操作和运行控制所花努力有关的软件属性,沈阳建筑大学信息与控制工程学院 软件工程课程,49/148,ISO/IEC 9
30、126质量子特性-效率,时间特性(time behaviour):与软件执行其功能时响应和处理时间以及吞吐量有关的软件属性资源特性(resource behaviour):与在软件执行其功能时所使用的资源数量及其使用时间有关的软件属性,沈阳建筑大学信息与控制工程学院 软件工程课程,50/148,ISO/IEC 9126质量子特性-可维护性,易分析性(analysability):与为诊断缺陷或失效原因及为判定待修改的部分所需努力有关的软件属性易改变性(changeability):与进行修改、排除错误或适应环境变化所需努力有关的软件属性稳定性(stability):与修改所造成的未预料结果的风
31、险有关的软件属性易测试性(testability):与确认已修改软件所需的努力有关的软件属性,沈阳建筑大学信息与控制工程学院 软件工程课程,51/148,ISO/IEC 9126质量子特性-可移植性,适应性(adaptability):与软件无需采用有别于为该软件准备的活动或手段就可能适应不同的规定环境有关的软件属性易安装性(installability):与在指定环境下安装软件所需努力有关的软件属性遵循性(conformance):使软件遵循与可移植性有关的标准或约定的软件属性易替换性(replaceability):与软件在该软件环境中用来替代指定的其他软件的机会和努力有关的软件属性,沈阳
32、建筑大学信息与控制工程学院 软件工程课程,52/148,程序复杂性度量,软件复杂性是指理解和处理软件的难易程度,包括程序复杂性和文档复杂性,主要体现在程序复杂性中程序复杂性的6个方面程序理解的难度纠错、维护程序的难度向他人解释程序的难度按指定方法修改程序的难度根据设计文件编写程序的工作量执行程序时需要资源的程度典型的程序复杂性度量:McCabe环形复杂性度量、Halstead的复杂性度量,沈阳建筑大学信息与控制工程学院 软件工程课程,53/148,程序复杂性度量的基本原则,1.程序复杂性与程序大小的关系不是线性的2.控制结构复杂的程序较复杂3.数据结构复杂的程序较复杂4.转向语句使用不当的程序
33、较复杂5.循环结构比选择结构复杂,选择结构又比顺序结构复杂6.语句、数据、子程序和模块在程序中的次序对复杂性有影响7.全局变量、非局部变量较多时,程序较复杂8.参数按地址调用比按值调用复杂9.函数副作用比显式参数传递难以理解10.具有不同作用的变量共用一个名字时较难理解11.模块间、过程间联系密切的程序比较复杂12.嵌套深度越深,程序越复杂,沈阳建筑大学信息与控制工程学院 软件工程课程,54/148,McCabe环形复杂性度量,一种基于程序图的程序复杂性度量方法程序图:是一种退化的程序流程图,它将程序流程图中的每个处理符号(包括处理框、判断框、起点、终点等)退化成一个结点(若干个连续的处理框可
34、合并成一个结点),流程图中连接处理符号的控制流变成程序图中连接结点的有向弧 建立在图论的基础之上对于一个强连通的有向图G,若e是图中的弧数,n是图中的结点数,p是强连通分量的个数,则图G的环数计算公式为:,沈阳建筑大学信息与控制工程学院 软件工程课程,55/148,程序控制结构图的扩充,一个单入口和单出口的程序(或模块)的程序图是连通的,但通常不是强连通的为此在程序图中增加一条从出口结点到入口结点的弧,使程序图变成强连通(连通分量只有一个,即P=1)下图中,当增加了出口结点到入口结点的弧后成为图b后:e=7、n=5、V(G)=75+1=3为了简化环形复杂性的计算,我们通常用下列公式直接对图a进
35、行计算:V(G)=en+2,此时,e=6,n=5,V(G)=65+2=3,沈阳建筑大学信息与控制工程学院 软件工程课程,56/148,环形复杂性度量的含义,环形复杂性度量反映了程序(或模块)控制结构的复杂性McCabe发现V(G)=10是一个实际模块的上限,当模块的环复杂度超过10时,要充分测试这个模块变得特别难,沈阳建筑大学信息与控制工程学院 软件工程课程,57/148,Halstead复杂性度量-1,Halstead认为程序是由操作符和操作数组成的符号序列操作符包括算术操作符、逻辑操作符、赋值符、分界符、括号、子程序调用符等操作数是由程序定义并引用的操作对象,可以是变量、常量、数组、记录、
36、指针等设n1为程序中不同操作符的个数,n2为程序中不同操作数的个数、N1为程序中操作符的总数、N2为程序中操作数的总数,则Halstead度量公式如下:程序的符号长度:N = N1 + N2 程序的词汇量:n=n1+n2,沈阳建筑大学信息与控制工程学院 软件工程课程,58/148,Halstead复杂性度量-2,程序量(指存储容量):V=N log2 (n1 +n2)=(N1+ N2 ) log2 (n1 +n2),习惯上,称该公式为长度方程最小程序量:可以认为,最小的程序只有两个操作符:函数调用和赋值,即n1N1=2,而操作数n2*就是赋于函数值的变量和函数调用时的参数,即n2*= n2=
37、N2代入长度方程,可得最小程序量为:V*(2+n2*)log2(2+n2*)预测程序长度:V*n1 log2 n1 +n2 log2 n2预测程序潜在的错误数:B=V/3000,沈阳建筑大学信息与控制工程学院 软件工程课程,59/148,软件可靠性度量,软件可靠性是指在规定的条件下和规定的时间内软件按规格说明要求不引起系统失效的概率它是软件质量的一项重要指标,特别是对于一些实时系统、嵌入式系统和关键系统软件可靠性通常用下列公式进行计算:MTBFMTTFMTTR其中:MTBF(meantimebetweenfailer)是平均故障间隔时间,MTTF(meantimetofailer)是平均故障时
38、间,MTTR(meantimetorepair)是平均修复时间软件可用性(availability)是指软件在投入使用时能实现其指定的系统功能的概率。可用下式计算:,100,沈阳建筑大学信息与控制工程学院 软件工程课程,60/148,内容摘要,软件项目管理概述软件度量软件项目估算项目进度管理风险管理软件项目的组织软件质量管理软件配置管理小结,沈阳建筑大学信息与控制工程学院 软件工程课程,61/148,软件项目估算,常用的估算方法:基于已经完成的类似项目进行估算,这是一种常用的也是有效的估算方法基于分解技术进行估算问题分解是将一个复杂问题分解成若干个小问题,通过对小问题的估算得到复杂问题的估算过
39、程分解指先根据软件开发过程中的活动(分析、设计、编码、测试等)进行估算,然后得到整个项目的估算值。基于经验估算模型的估算。典型的经验估算模型有IBM估算模型、CoCoMo模型和Putnam模型。上述方法可以组合使用以提高估算的精度,沈阳建筑大学信息与控制工程学院 软件工程课程,62/148,一种简单有效的估算方法,1.请若干名有经验的技术人员或管理人员,采用上述估算办法的一种或多种,分别估算出代码行LOC或功能点FP的乐观值ai,悲观值bi及最有可能的值mi2.计算出平均值a,b,m3.LOC或FP的规模估算值:e(a4mb)/64.根据以前该组织软件开发的平均生产率(规模/人月数)和平均成本
40、(资金/规模)计算工作量估算值和成本估算值工作量估算值e/平均生产率成本估算值e*平均成本,沈阳建筑大学信息与控制工程学院 软件工程课程,63/148,IBM估算模型,基于代码行LOC的静态单变量模型:设L为源代码行数(KLOC),则工作量E=5.2L0.91人月项目持续时间D=4.1L0.3614.47E0.35人员数S=0.54E0.6文档数量DOC49L1.01此模型中一条机器指令为一行源代码,不包括程序注释及其它说明非机器指令编写的程序应转换成机器指令代码行数来考虑,转换关系为:,沈阳建筑大学信息与控制工程学院 软件工程课程,64/148,CoCoMo模型,Boehm提出的“构造性成本
41、模型”Constructive Cost Model, CoCoMoCoCoMo模型按其详细程度分为:基本模型、中间模型和详细模型将软件项目类型划分为三类:,沈阳建筑大学信息与控制工程学院 软件工程课程,65/148,基本CoCoMo模型,E=aLb D=cEd 其中:E表示工作量,单位是人月D表示开发时间,单位是月L是项目的源代码行估计值,单位是千行代码a、b、c、d是常数,其取值如下表所示,沈阳建筑大学信息与控制工程学院 软件工程课程,66/148,中间CoCoMo模型,在基本CoCoMo模型基础上考虑了15种影响软件工作量的因素通过工作量调节因子(EAF)修正对工作量的估算,从而使估算更
42、合理公式如下:E=a(L)bEAF其中:L是软件产品的目标代码行数,单位是千行代码数,a、b是常数,取值如下表所示,沈阳建筑大学信息与控制工程学院 软件工程课程,67/148,工作量调节因子的计算,每个调节因子Fi的取值分为很低、低、正常、高、很高、极高六级,正常情况下Fi=1当15个Fi选定,可得:EAF= Fi,沈阳建筑大学信息与控制工程学院 软件工程课程,68/148,详细COCOMO模型,估算公式与中间CoCoMo模型相同,并按分层、分阶段的形式给出其工作量影响因素分级表针对每一个影响因素,按模块层、子系统层、系统层,有三张工作量因素分级表,供不同层次的估算使用每一张表中又按开发各个不
43、同阶段给出例如软件可靠性在子系统层的工作量因素分级表如下所示,沈阳建筑大学信息与控制工程学院 软件工程课程,69/148,Putnam模型,一种软件项目工作量估算的动态多变量模型他根据一些大型软件项目(30人年以上)的工作量分布情况,推导出软件项目在软件生存周期各阶段的工作量分布,如图所示图中的工作量分布曲线与著名的Reyleigh-norden曲线相似,沈阳建筑大学信息与控制工程学院 软件工程课程,70/148,Putnam模型计算公式,根据Reyleigh-norden曲线给出代码行数、工作量和开发时间之间的关系,如下所示: L=CKE1/3 其中:L表示源程序代码行数(LOC) td表示
44、开发持续时间(年) E是包括软件开发和维护在整个生存期所花费的工作量(人年) CK表示技术状态常数,其值依赖于开发环境,由此可得:EL3/(Ck3td4),沈阳建筑大学信息与控制工程学院 软件工程课程,71/148,软件可靠性估算,与软件可靠性密切相关的程序中残留错误数的估算和平均故障间隔时间的估算错误植入法分别测试法软件平均故障间隔时间估算,沈阳建筑大学信息与控制工程学院 软件工程课程,72/148,错误植入法,假设程序中测试前残留的错误数为N,然后人为地在程序中植入Ns个错误,这些植入的错误对测试人员来说是未知的。经过一段时间的测试,如果发现的错误数为n,其中植入的错误数为ns,则原程序中
45、残留的错误估算值N可用下式计算:,沈阳建筑大学信息与控制工程学院 软件工程课程,73/148,分别测试法,采用两组(名)程序测试员同时对一个程序进行独立测试,设: Er程序中原有的残留错误数 E1=第一组测试员发现的错误数 E2=第二组测试员发现的错误数 E0=两组测试员同时发现的错误则程序中残留错误的估计值可用下列计算,沈阳建筑大学信息与控制工程学院 软件工程课程,74/148,软件平均故障间隔时间估算,在假设软件故障率是常数的前题下,通常可通过统计程序运行H小时期间出现的故障次数r来估算软件故障率估算公式如下:于是,软件的平均故障时间MTTF可用下式估算:根据软件项目组对以往项目的故障修复
46、时间的统计,可得到平均故障修复时间MTTR那么,软件平均故障间隔时间可用下式估算:MTBF=MTTF+MTTR=H/r+MTTR,沈阳建筑大学信息与控制工程学院 软件工程课程,75/148,内容摘要,软件项目管理概述软件度量软件项目估算项目进度管理风险管理软件项目的组织软件质量管理软件配置管理小结,沈阳建筑大学信息与控制工程学院 软件工程课程,76/148,项目进度管理,目标:确保软件项目在规定的时间内按期完成项目进度管理任务定义所有的项目任务以及它们之间的依赖关系制订项目的进度安排规划每个任务所需的工作量和持续时间在项目开发过程中不断跟踪项目的执行情况,发现那些未按计划进度完成的任务对整个项
47、目工期的影响,并及时进行调整制定进度计划的两种情况客户方都规定了明确的交付日期,此时进度安排必须在此约束下进行只规定了大致的时间界限,最终的交付日期由开发组织确定,此时的进度安排可以比较灵活,工作量的分布可考虑对资源的充分利用,沈阳建筑大学信息与控制工程学院 软件工程课程,77/148,指导软件项目进度安排的基本原则-1,划分:项目必须被划分成若干可以管理的活动和任务,为了实现项目的划分,对产品和过程都需要进行分解相互依赖性:确定各个被划分的活动或任务之间的相互关系,有些任务必须是串行的,有些可能是并行的时间分配:必须为每个被调度的任务分配一定数量的工作单位此外还必须为每个任务制定开始和结束日
48、期,这些日期是相互依赖的工作量确认:确保在任意时段中分配给任务的人员数量不会超过项目组中的人员数量,沈阳建筑大学信息与控制工程学院 软件工程课程,78/148,指导软件项目进度安排的基本原则,定义责任:每个被调度的任务都应该指定某个特定的小组成员来负责定义结果:每个被调度的任务都应该有一个确定的输出结果定义里程碑:每个任务或任务组都应该与一个项目里程碑相关联(当一个或多个工作产品经过质量评审并且得到认可时,标志着一个里程碑的完成),沈阳建筑大学信息与控制工程学院 软件工程课程,79/148,人员与生产率之间的关系,人员之间的交流开销:一个由n个人组成的项目组内共存在n(n1)/2条通信路径对于
49、生产率的影响:增加一个人并不等于净增了一个人的工作量,应扣除相应的通信代价每个开发小组的成员不宜太多,通过合理的组织形式减少组内的通信路径数在开发过程中尽量不要中途加人,避免太多的生产率损失参与项目的人员数与整体生产率之间的关系并非是线性的,沈阳建筑大学信息与控制工程学院 软件工程课程,80/148,任务的分解与并行,为了缩短开发进度,应该根据不同的软件项目性质,选择合适的软件工程过程对软件项目的任务进行分解,并从中找出其串行成分及并行成分由于并行任务是同时发生的,因而在制订进度计划表时必须确定任务之间的从属关系,即确定各个任务的先后次序和衔接关系,确定各个任务完成的持续时间,沈阳建筑大学信息
50、与控制工程学院 软件工程课程,81/148,基于瀑布模型的任务网络示例,沈阳建筑大学信息与控制工程学院 软件工程课程,82/148,任务工作量的确定,根据软件工程过程的不同,可确定其相应的任务的工程量分配常用的有40-20-40规则:在整个软件开发过程中,编码工作量仅占20%,编码前工作量占40%,编码后工作量占40%CoCoMo模型按目标程序规模对不同任务工作量分配的比例:在实际应用时,按此比例确定各个阶段工作量的分配,从而进一步确定每一阶段所需的开发时间,然后在每个阶段,进行任务分解,对各个任务再进行工作量和开发时间的分配,沈阳建筑大学信息与控制工程学院 软件工程课程,83/148,CoC