《软件项目管理规划课程》由会员分享,可在线阅读,更多相关《软件项目管理规划课程(145页珍藏版)》请在金锄头文库上搜索。
1、-软件项目管理软件项目管理软件工程软件工程内容提要内容提要软件项目管理活动软件项目管理活动项目规划项目规划项目进度项目进度质量管理质量管理软件成本估算软件成本估算人员管理人员管理配置管理配置管理CMM软件项目管理概述软件项目管理概述随着信息技术的飞速发展,软件产品的规模也越来越随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。理引入开发活动中,对开发实行有效的管理。软件项目管理
2、就是通过合理地组织和利用一切可软件项目管理就是通过合理地组织和利用一切可以利用的资源,按照计划的成本和计划的进度,以利用的资源,按照计划的成本和计划的进度,完成一个计划的目标,它包含团队管理、风险管完成一个计划的目标,它包含团队管理、风险管理、采购管理、流程管理、时间管理、成本管理理、采购管理、流程管理、时间管理、成本管理和质量管理等。和质量管理等。是否需要管理是专业软件开发是否需要管理是专业软件开发和业余编程之间的重要区别。和业余编程之间的重要区别。软件项目管理的特点软件项目管理的特点软件产品是无形的;软件产品是无形的;没有标准的软件过程;没有标准的软件过程;大型软件项目经常是大型软件项目经
3、常是“一次性的一次性的”。软件工程管理者与其他工程管理者的性质是相同的,软件工程管理者与其他工程管理者的性质是相同的,但软件工程管理很多方面有显著的区别,这导致了但软件工程管理很多方面有显著的区别,这导致了软件工程管理的难度相当大。许多大型软件项目的软件工程管理的难度相当大。许多大型软件项目的失败也告诉我们:失败也告诉我们:软件管理困难重重软件管理困难重重。软件项目管理的特点软件项目管理的特点项目管理是一项复杂的工作。项目管理是一项复杂的工作。项目管理具有创造性。项目管理具有创造性。项目管理需要集权领导和建立专门的项目管理需要集权领导和建立专门的项目组织。项目组织。项目负责人在项目管理中起着非
4、常重项目负责人在项目管理中起着非常重要的作用。要的作用。具有创新性的工程项目经常会存在进度问题。具有创新性的工程项目经常会存在进度问题。软件项目管理活动软件项目管理活动提出项目建议书提出项目建议书项目规划与进度项目规划与进度项目成本管理项目成本管理项目监督和评审项目监督和评审人员管理人员管理拟定工作报告拟定工作报告项目建议书项目建议书项目建议书要写清楚项目建议书要写清楚:项目的项目的目标目标和实和实现该目标的现该目标的方法方法;还要估算项目的;还要估算项目的成本成本和和进度进度;有时还要说明与某一特定机构;有时还要说明与某一特定机构或团队签约的或团队签约的理由理由。许多软件机构之所以存在是因为
5、其手头许多软件机构之所以存在是因为其手头有大量的建议书和合同。有大量的建议书和合同。写建议书没有固定的格式供参考,它是写建议书没有固定的格式供参考,它是一种经验性的技巧。一种经验性的技巧。项目监督项目监督项目监督是一种连续性的活动。管理人项目监督是一种连续性的活动。管理人员必须密切关注项目进展情况,将实际员必须密切关注项目进展情况,将实际进展和成本与原计划的进度和成本作比进展和成本与原计划的进度和成本作比较。较。项目监督可以划分为:项目监督可以划分为:正式监督正式监督非正式监督非正式监督项目规划项目规划对软件项目的有效管理取决于对该项目对软件项目的有效管理取决于对该项目进展状况的全面规划。项目
6、管理者必须进展状况的全面规划。项目管理者必须能预见可能出现的问题,并且准备好相能预见可能出现的问题,并且准备好相应的解决方案予以应对。应的解决方案予以应对。项目规划在项目之初拟定,它是整个项项目规划在项目之初拟定,它是整个项目的驱动器。目的驱动器。项目规划是一个反复的过程,只有当项项目规划是一个反复的过程,只有当项目完成时规划才告一段落。目完成时规划才告一段落。项目规划过程项目规划过程确定项目的约束条件确定项目的约束条件初步评估各项项目参数初步评估各项项目参数定义项目里程碑和可交付的文档定义项目里程碑和可交付的文档while while 项目未完成或被取消项目未完成或被取消 loop loop
7、拟定项目进度表拟定项目进度表根据项目进度表启动各项活动根据项目进度表启动各项活动 等待(一定的时间)等待(一定的时间) 评审项目进展状况评审项目进展状况 修正对项目参数的初步估算修正对项目参数的初步估算 更新项目进度表更新项目进度表重新协商项目约束条件和可交付的文档重新协商项目约束条件和可交付的文档 if (if (出现问题出现问题) then) then 开始进行技术评审和可能的修正开始进行技术评审和可能的修正 end ifend ifend loop end loop (开发过程开发过程)项目计划项目计划有些机构的项目计划包含:开发计划、质量计划、有些机构的项目计划包含:开发计划、质量计划
8、、有效性验证计划、配置管理计划、维护计划和人有效性验证计划、配置管理计划、维护计划和人员开发计划。有些机构只涉及开发过程。员开发计划。有些机构只涉及开发过程。项目计划书的具体内容随着项目和开发机构类型项目计划书的具体内容随着项目和开发机构类型不同而改变。不过多数计划书应该包括以下几个不同而改变。不过多数计划书应该包括以下几个部分:部分:引言引言项目组织项目组织风险分析风险分析软硬件资源需求软硬件资源需求工作分解工作分解项目进度项目进度监控和报告机制监控和报告机制项目项目里程碑里程碑一个项目一个项目里程碑里程碑就是一个软件过程活动的就是一个软件过程活动的终结。在每个里程碑都应该有一个正式的终结。
9、在每个里程碑都应该有一个正式的可以提交给管理层的可以提交给管理层的输出结果输出结果。里程碑应代表该项目的一个特定的逻辑意里程碑应代表该项目的一个特定的逻辑意义上的阶段的终结。义上的阶段的终结。里程碑的两个必要特征:里程碑的两个必要特征:-与软件开发进展相关联;与软件开发进展相关联;-在完成时必须非常明显。在完成时必须非常明显。可交付的文档可交付的文档可交付的文档可交付的文档是交付给客户的项目成果,是交付给客户的项目成果,通常是在项目的描述、设计等主要项目通常是在项目的描述、设计等主要项目阶段结束时交付。阶段结束时交付。可交付的文档也是里程碑,但里程碑不一定要可交付的文档也是里程碑,但里程碑不一
10、定要交付。里程碑是项目内部的阶段性成果,供项交付。里程碑是项目内部的阶段性成果,供项目管理者来检查项目进展情况。目管理者来检查项目进展情况。软件过程中的里程碑软件过程中的里程碑要建立里程碑,软件过程就一定要分解成一系要建立里程碑,软件过程就一定要分解成一系列相关的基本活动,而每一个这样的基本活动列相关的基本活动,而每一个这样的基本活动都要建立相应的输出结果。都要建立相应的输出结果。以需求工程为例以需求工程为例(以建立原型来帮助验证需求以建立原型来帮助验证需求):可行性研究可行性研究需求分析需求分析原型开发原型开发设计研究设计研究需求描述需求描述可行性研究可行性研究报告报告用户需求用户需求估算报
11、告估算报告体系结构设体系结构设计计系统需求系统需求活动活动里程碑里程碑项目进度项目进度项目进度对软件管理者的要求是十分苛刻项目进度对软件管理者的要求是十分苛刻的。管理人员必须估算完成各项活动所需的。管理人员必须估算完成各项活动所需要的时间和资源,并按照一定的顺序把他要的时间和资源,并按照一定的顺序把他们紧密组织起来。们紧密组织起来。项目进度包括把一个项目所有工作分解为项目进度包括把一个项目所有工作分解为若干独立活动,以及完成这些活动所需的若干独立活动,以及完成这些活动所需的时间。时间。项目进度过程项目进度过程软件需求软件需求识别活动识别活动识别活动识别活动依赖关系依赖关系估算活动估算活动的资源
12、的资源为活动为活动分配人员分配人员创建创建项目图表项目图表活动图表活动图表及条形图及条形图n有些活动是并行进行的,调度人员必须协调这些并行活动,有些活动是并行进行的,调度人员必须协调这些并行活动,并把整个工作组织起来,使人力资源得到充分利用。并把整个工作组织起来,使人力资源得到充分利用。n一定要避免出现因一项关键任务没有完成而使整个项目延一定要避免出现因一项关键任务没有完成而使整个项目延期交付的情形。期交付的情形。活动分解及进度管理活动分解及进度管理n正常情况,各活动应至少持续正常情况,各活动应至少持续1周;周;n对所有活动安排一个最高的时间限制(对所有活动安排一个最高的时间限制(810周周左
13、右),如一项活动持续时间超过限制,就应该左右),如一项活动持续时间超过限制,就应该再次细分;再次细分;n估算进度时,管理者不能想当然认为项目的每个估算进度时,管理者不能想当然认为项目的每个阶段都不会出问题;阶段都不会出问题;n初时间外,还必须估算完成每项任务所需的资源:初时间外,还必须估算完成每项任务所需的资源:人力资源和其他可能的资源。人力资源和其他可能的资源。经验法则:估算时先假定什么问题也没有,然后再把预计出经验法则:估算时先假定什么问题也没有,然后再把预计出现的问题加到估计中去(现的问题加到估计中去(30)。还要考虑因偶然因素带)。还要考虑因偶然因素带来的意想不到的问题(来的意想不到的
14、问题(20)。)。进度管理工具进度管理工具n项目进度通常用一系列的图表表示,通过项目进度通常用一系列的图表表示,通过这些图表可以了解任务分解、活动依赖关这些图表可以了解任务分解、活动依赖关系和人员分配情况。系和人员分配情况。n常用的项目进度表示法有:常用的项目进度表示法有:甘特图(甘特图(Gantt)活动网络图(活动网络图(PERT)n常用软件管理工具是:常用软件管理工具是:MS-Project甘特图甘特图是历史悠久、应用广泛的制定进度计划的是历史悠久、应用广泛的制定进度计划的工具。工具。例:例:假设有一座陈旧的矩形木板房需要重新油漆。这项工作必假设有一座陈旧的矩形木板房需要重新油漆。这项工作
15、必须分须分3 3步:首先刮掉旧漆,然后刷上新漆,最后清除溅在窗步:首先刮掉旧漆,然后刷上新漆,最后清除溅在窗户上的油漆。户上的油漆。一共分配了一共分配了1515名工人去完成这项工作,而工具只有:名工人去完成这项工作,而工具只有:5 5把刮把刮旧漆的刮板,旧漆的刮板,5 5把刷漆用的刷子,把刷漆用的刷子,5 5把清除溅在窗户上油漆把清除溅在窗户上油漆的小刮刀。的小刮刀。如何安排工作,最有效?如何安排工作,最有效?甘特图甘特图刮旧漆刮旧漆刷新漆刷新漆清理清理1或或32312或或4462墙壁墙壁工序工序各道工序估计需要时间(小时)各道工序估计需要时间(小时)木板房的第木板房的第2、4两面墙两面墙的长
16、度是第的长度是第1、3两面墙两面墙的一倍。的一倍。一种做法是,先刮掉一种做法是,先刮掉4面墙的旧漆,然后给每面墙刷面墙的旧漆,然后给每面墙刷新漆,最后清除每个窗户上的油漆,共需时间新漆,最后清除每个窗户上的油漆,共需时间36小时。小时。显然,这是效率最低的做法,任何时候都有显然,这是效率最低的做法,任何时候都有10名工人名工人闲着没事干。闲着没事干。248101214182016622甘特图甘特图111234刮旧漆刮旧漆刷新漆刷新漆清理清理时间时间(小时小时)工序工序旧木板房刷油漆工程的旧木板房刷油漆工程的Gantt图图“流水作业法流水作业法”肯定是好的方法。肯定是好的方法。全部工程在全部工程
17、在22小时后结束。小时后结束。234234软件工程是特殊的工程,软件工程是特殊的工程,Gantt图也可以特殊化,每个任务图也可以特殊化,每个任务的开始和结束时间均先用空心三角形表示,两者用横线相连。的开始和结束时间均先用空心三角形表示,两者用横线相连。当活动开始时,左边三角形涂黑,当活动结束时,再将右边当活动开始时,左边三角形涂黑,当活动结束时,再将右边三角形涂黑。三角形涂黑。任务任务负责人负责人2000年年2001年年1 2 3 4 5 6 7 8 9 101112 1 2 3 4 5 6分析分析测试计划测试计划总体设计总体设计详细设计详细设计编码编码模块测试模块测试集成测试集成测试验收测试
18、验收测试文档文档甘特图甘特图Gantt图形象地描绘了任务的分解,及每个作业的图形象地描绘了任务的分解,及每个作业的开始和结束时间,优点是直观简明、容易掌握和开始和结束时间,优点是直观简明、容易掌握和绘制,但有三个缺点:绘制,但有三个缺点:不能显示地描绘各项作业间的依赖关系;不能显示地描绘各项作业间的依赖关系;进度的关键部分不明确,难以判断哪些部分是主攻和进度的关键部分不明确,难以判断哪些部分是主攻和主控的对象;主控的对象;计划中有潜力的部分及潜力的大小不明确,往往造成计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。潜力的浪费。甘特图中,每一任务完成的标准,不是以能否继续下一阶段甘特图
19、中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是必须交付应交付的文档与通过评审为标准。任务为标准,而是必须交付应交付的文档与通过评审为标准。PERT图与CPM技术1235468791011刮1刮2刮3刮4刷1刷2刷3刷4清1清2清3清4PERT图中:图中:对于某事件,箭头进入表示此作业结束,箭头离开表示对于某事件,箭头进入表示此作业结束,箭头离开表示此作业的开始;此作业的开始;实线箭头表示具体存在的作业;实线箭头表示具体存在的作业;虚线箭头表示虚拟作业,只为了表示作业之间的依赖关虚线箭头表示虚拟作业,只为了表示作业之间的依赖关系。系。活动网络图活动网络图用箭头表示作业用箭头表示作
20、业( (如刮旧漆、刷新漆、清理等如刮旧漆、刷新漆、清理等) ),用圆圈表示事件,用圆圈表示事件( (一项作业的开始或结束一项作业的开始或结束) );事件仅是可以明确定义的时间点,它不耗费时事件仅是可以明确定义的时间点,它不耗费时间和资源;间和资源;作业通常既消耗资源,又要持续一定时间。作业通常既消耗资源,又要持续一定时间。活动网络图活动网络图画出画出PERT图后,系统分析员就可以估算工程进度了,为图后,系统分析员就可以估算工程进度了,为此需要在此需要在PERT上增加一些必要的信息:上增加一些必要的信息:把每个作业估计需要时间写在表示该项作业的箭头上把每个作业估计需要时间写在表示该项作业的箭头上
21、方。方。为每个事件计算两个统计数字:最早时刻为每个事件计算两个统计数字:最早时刻(EET)和最迟和最迟时刻时刻(LET)。这两个数字分别写在表示事件的圆圈的左这两个数字分别写在表示事件的圆圈的左上角和右下角。上角和右下角。持续时间持续时间(机动时间机动时间)EETLET事件号事件号活动网络图活动网络图事件的最早时刻是该事件可以发生的最早时事件的最早时刻是该事件可以发生的最早时间。通常间。通常PERT中第一个事件的中第一个事件的EET定义为定义为0,其他事件的,其他事件的EET从左到右按事件发生顺从左到右按事件发生顺序计算。简单原则:序计算。简单原则:考虑进入该事件的所有作业;考虑进入该事件的所
22、有作业;对每个作业都计算它的持续时间与开始事件对每个作业都计算它的持续时间与开始事件EET之和;之和;选取上述和数中最大值作为该事件的选取上述和数中最大值作为该事件的EET。102610115348792424363612120000旧木板房刷漆工程旧木板房刷漆工程的的PERT图图事件事件2只有一个只有一个作业进入,只作业进入,只有当有当1-2完成才完成才开始,所以开始,所以EET22事件事件3 3也只有也只有一个作业进一个作业进入,只有当入,只有当2-32-3完成才开完成才开始,所以始,所以EETEET2 24 46 666按此方法,不难沿着按此方法,不难沿着PERT图从左图从左到右顺序算出
23、每个事件的到右顺序算出每个事件的EET8121215152123事件事件4有两个作业进入有两个作业进入(2-4,3-4),只有当两者都完成,只有当两者都完成后事件后事件4才能开始,所以才能开始,所以EET=max2+3,6+0=6活动网络图活动网络图事件的最迟时刻是在不影响工程竣工时间的事件的最迟时刻是在不影响工程竣工时间的前提下,该事件最晚可以发生的时刻。按惯前提下,该事件最晚可以发生的时刻。按惯例,例,PERT中最后一个事件的中最后一个事件的LET就是它的就是它的EET,其他事件的其他事件的LET从右到左按逆作业流从右到左按逆作业流的方向计算。简单原则:的方向计算。简单原则:考虑离开该事件
24、的所有作业;考虑离开该事件的所有作业;从每个作业的结束时间的从每个作业的结束时间的LET中减去该作业的中减去该作业的持续时间;持续时间;选取上述差数中最小值作为该事件的选取上述差数中最小值作为该事件的LET。2621002610115348794243631210000旧木板房刷漆工旧木板房刷漆工程的程的PERT图图按惯例,事按惯例,事件件11的的LET与与EET相同,相同,都是都是23266812121515212323逆作业流方向,接逆作业流方向,接着是计算事件着是计算事件10的的LET,离开它的作业离开它的作业只有只有10-11,持续时,持续时间为间为2,而它的,而它的LET为为23,因
25、此事件,因此事件10的的LET=23-2=2121类似地,事件类似地,事件9的的LET=21-1=2020事件事件8有两个离有两个离开它的作业开它的作业8-9和和8-10,因此,因此LET=min20-0,21-6=1515按此方法,不难沿着按此方法,不难沿着PERT图从右图从右到左的逆序算出每个事件的到左的逆序算出每个事件的LET181211662关键路径关键路径(CPM,Critical Path Method) :从起点到终点,可以有许多条路径,我们把从起点到终点,可以有许多条路径,我们把耗时最长的路径耗时最长的路径称作关键路径。关键路径耗时等于整个工程的耗时,因此,称作关键路径。关键路
26、径耗时等于整个工程的耗时,因此,要想缩短工程时间,就必须找出关键路径,并研究如何减少要想缩短工程时间,就必须找出关键路径,并研究如何减少关键路径的耗时。关键路径的耗时。6100261011534879242436312120000266812121515212323212015181211662关键路径上事件关键路径上事件的的 EETLET关键路径的事件必须关键路径的事件必须准时发生,作业的实准时发生,作业的实际持续时间不能超过际持续时间不能超过估计持续时间。否则估计持续时间。否则工程不能按时完成。工程不能按时完成。610026101153487924243631212000026681212
27、1515212323212015181211662机动时间:机动时间:不在关键路径上的作业有一定程度的机动余地不在关键路径上的作业有一定程度的机动余地实际开始实际开始时间可以比预定时间晚一些,或者实际持续时间可以比预定时间可以比预定时间晚一些,或者实际持续时间可以比预定的持续时间长一些,而不影响整个工程的完成时间。一个作的持续时间长一些,而不影响整个工程的完成时间。一个作业可以有的全部业可以有的全部机动时间机动时间(LET)结束结束(EET)开始开始持续时间持续时间(1)(3)(11)(4)(3)(6)(6)(5)(5)活动网络图活动网络图在制定进度计划时仔细考虑和利用在制定进度计划时仔细考虑
28、和利用PERT图中的图中的机动时间,往往能够安排出既节省资源又不影机动时间,往往能够安排出既节省资源又不影响最终竣工时间的进度表。响最终竣工时间的进度表。从上图可见,清理前三面墙窗户的作业都有相从上图可见,清理前三面墙窗户的作业都有相当多的机动时间,即这些作业可以晚些开始或当多的机动时间,即这些作业可以晚些开始或者持续时间长一些者持续时间长一些(少用一些资源少用一些资源);此外,刮第此外,刮第3、第、第4面墙上旧漆和给第面墙上旧漆和给第1面墙刷新面墙刷新漆的作业也都有机动时间,且这些机动时间之漆的作业也都有机动时间,且这些机动时间之和大于清理前三面墙窗户需要用的工作时间。和大于清理前三面墙窗户
29、需要用的工作时间。因此,有可能仅用因此,有可能仅用10个工人在同样时间内个工人在同样时间内(23小小时时)完成这项工程。完成这项工程。248101214182016622刮旧漆刮旧漆刷新漆刷新漆清理清理时间时间(小时小时)工序工序活动网络图活动网络图这个方案不仅比前面的方案节省人力,而且改正了前图的一这个方案不仅比前面的方案节省人力,而且改正了前图的一个错误:因为给第个错误:因为给第3面墙刷漆的作业面墙刷漆的作业4-6不仅必须在给第不仅必须在给第1面墙面墙刷完漆之后刷完漆之后(2-4作业结束作业结束),而且还必须在把第,而且还必须在把第3面墙刮净之后面墙刮净之后(2-3作业和作业和3-4虚作业
30、结束虚作业结束)才能开始。全部工程需要才能开始。全部工程需要23小时,小时,而不是而不是22小时。小时。活动网络图活动网络图1100222612121021211123235811366466815157121891520242436362120000(0)(0)(1)(0)(3)(4)(0)(11)(0)(6)(5)(3)(5)(0)(0)旧木板房刷漆工程旧木板房刷漆工程完整完整PERT图图进度管理实践进度管理实践MS ProjectMS ProjectT11(M8)10T12T9(M6)7T11T5,T7(M7)15T10T3,T6(M4)15T9T4(M5)25T8T1(M1)20T7T
31、1,T2(M3)5T6T2,T4(M2)10T510T4T1(M1)15T315T28T1依赖关系持续时间任务MS ProjectMS Project活活动网络图动网络图4/7/058天14/7/0515天4/8/0515天25/08/057天5/9/0510天19/9/0515天11/8/0525天10天20天5天25/7/0515天25/7/0518/7/05开始开始10天完成完成T8M5T4T2T3M1M3T7T6M2T5M4M7T10T12M8T11M6T9T1MS Project-MS Project-甘特图甘特图4/711/718/725/71/88/815/822/829/85/
32、912/919/9T4T1T2M1T7T3M5T8M3M2T6T5M4T9M7T10M6T11M8T12开始完成人员分配人员分配4/711/718/725/71/88/815/822/829/85/912/919/9T4T8T11T12T1T3T9T2T6T10T7T5FredJaneAnneMaryJim质量管理质量管理质量是产品的生命线,不论任何产品,质量是产品的生命线,不论任何产品,质量都是极端重要的。质量都是极端重要的。软件产品开发周期长,需耗费巨大的人软件产品开发周期长,需耗费巨大的人力、物力,更必须特别注意保证产品质力、物力,更必须特别注意保证产品质量。量。软件质量的定义软件质量的
33、定义软件质量就是软件质量就是“软件与明确的和隐含定软件与明确的和隐含定义的需求相一致的程度义的需求相一致的程度”,即软件与明,即软件与明确描述的功能和性能需求、文档中明确确描述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的件产品都应该具有的隐含特征相一致的程度。程度。软件质量的定义软件质量的定义上述定义强调了以下三个重要的方面:上述定义强调了以下三个重要的方面:软件需求是进行软件需求是进行质量质量度量的基础,不符合需求就度量的基础,不符合需求就是质量不高。是质量不高。规范化的标准定义了一些开发准则以指导软件开发
34、,规范化的标准定义了一些开发准则以指导软件开发,如果不遵照这些准则,则极有可能导致质量不高。如果不遵照这些准则,则极有可能导致质量不高。往往会有一些隐含的需求没有明确地提出来,如软往往会有一些隐含的需求没有明确地提出来,如软件的可维护性等,忽略了这些隐含需求,软件的质件的可维护性等,忽略了这些隐含需求,软件的质量也难以保证。量也难以保证。软件质量是一个多因素的复杂混合,这些因素随着软件质量是一个多因素的复杂混合,这些因素随着不同的应用和用户而变化。不同的应用和用户而变化。软件质量模型软件质量模型软件质量与软件的内部特性及其组合有关。要度软件质量与软件的内部特性及其组合有关。要度量软件质量,就应
35、根据这些内部特性(即软件属量软件质量,就应根据这些内部特性(即软件属性)建立起软件度量模型,进而构建软件质量度性)建立起软件度量模型,进而构建软件质量度量体系。量体系。从管理角度对软件质量进行度量的从管理角度对软件质量进行度量的McCall软件质软件质量模型如下:量模型如下:软件质量模型软件质量模型产品修改产品修改产品转移产品转移产品运行产品运行可理解性可理解性可维护性可维护性灵活性灵活性可测试性可测试性可移植性可移植性可重用性可重用性互运行性互运行性轻便性轻便性 正确性、健壮性、效率、完整性、可用性、风险正确性、健壮性、效率、完整性、可用性、风险上述模型反映了用户在使用软件产品时的三种不同的
36、上述模型反映了用户在使用软件产品时的三种不同的倾向:产品运行、产品修改和产品转移倾向:产品运行、产品修改和产品转移。软件质量的属性软件质量的属性正确性正确性系统满足规格说明和用户目标的程度,在预定环境下能系统满足规格说明和用户目标的程度,在预定环境下能正确完成预期功能的程度。正确完成预期功能的程度。健壮性健壮性在硬件发生故障、输入数据无效、操作错误等意外环境在硬件发生故障、输入数据无效、操作错误等意外环境下,系统能做出适当响应的程度。下,系统能做出适当响应的程度。效率效率为了完成预定功能,系统需要的计算资源的多少。为了完成预定功能,系统需要的计算资源的多少。完整性完整性对未经授权的软件使用请求
37、或数据访问的企图,系统能对未经授权的软件使用请求或数据访问的企图,系统能够控制(或禁止够控制(或禁止)的程度。的程度。软件质量的属性软件质量的属性可用性可用性系统在完成预定功能时令用户满意的程度。系统在完成预定功能时令用户满意的程度。风险风险按预定的成本和进度开发系统,并且使得用户满意的概按预定的成本和进度开发系统,并且使得用户满意的概率。率。可理解性可理解性理解和使用软件的容易程度。理解和使用软件的容易程度。可维护性可维护性诊断和改正在运行现场发现的错误所需要的工作量大小。诊断和改正在运行现场发现的错误所需要的工作量大小。软件质量的属性软件质量的属性适应性适应性修改或改进正在运行的系统需要的
38、工作量大小修改或改进正在运行的系统需要的工作量大小可测试性可测试性软件容易测试的程度。软件容易测试的程度。可移植性可移植性把软件从一软硬件环境移植到另一配置环境时,需要的把软件从一软硬件环境移植到另一配置环境时,需要的工作量大小。工作量大小。可可重用性重用性在其他应用中该软件可以被使用的程度或范围。在其他应用中该软件可以被使用的程度或范围。软件质量的属性软件质量的属性互运行性互运行性把该软件系统和另一软件系统结合起来所需要的工作把该软件系统和另一软件系统结合起来所需要的工作量大小。量大小。轻便性轻便性允许软件能够从一台计算机很容易地传输到另一台需要允许软件能够从一台计算机很容易地传输到另一台需
39、要运行的计算机上的能力。运行的计算机上的能力。 软件质量管理软件质量管理软件质量管理就是确保软件有较少缺陷,并达软件质量管理就是确保软件有较少缺陷,并达到软件系统既定目标。到软件系统既定目标。一个机构的质量管理者的职责是确保软件产品质量达一个机构的质量管理者的职责是确保软件产品质量达到客户要求。到客户要求。理论上,质量管理只包含制定软件质量规程和软件开理论上,质量管理只包含制定软件质量规程和软件开发标准,以及检查是否所有的工程人员都遵守了这些发标准,以及检查是否所有的工程人员都遵守了这些规章和标准。但实际上,质量管理内容远不止这些。规章和标准。但实际上,质量管理内容远不止这些。好的质量管理者致
40、力于培养好的质量管理者致力于培养“质量文化质量文化”,让每个参与让每个参与产品开发的人都有强烈质量意识。他们鼓励团队对自产品开发的人都有强烈质量意识。他们鼓励团队对自己的工作质量负责,鼓励他们探求改善质量的途径和己的工作质量负责,鼓励他们探求改善质量的途径和方法,鼓励团队每一员对软件质量特征量化的研究。方法,鼓励团队每一员对软件质量特征量化的研究。软件质量管理活动软件质量管理活动软件质量管理有以下三个主要活动组成:软件质量管理有以下三个主要活动组成:1 1)质量保证质量保证( (Quality Assurance) )建立起机构质量规程和标准的整体框架,这是生产高建立起机构质量规程和标准的整体
41、框架,这是生产高质量软件的保证。质量软件的保证。2 2)质量规划质量规划( (Quality Planning) )从这个框架中选择适当的质量规程和标准,进行改写从这个框架中选择适当的质量规程和标准,进行改写使之适应于特定软件项目。使之适应于特定软件项目。3 3)质量控制质量控制( (Quality Control) )定义并设计软件过程,确保软件开发团队严格遵守项定义并设计软件过程,确保软件开发团队严格遵守项目质量规划和标准。目质量规划和标准。软件质量管理活动软件质量管理活动质量管理应该与软件项目管理相分离,这样质质量管理应该与软件项目管理相分离,这样质量管理就不会屈从于项目预算和进度。量管
42、理就不会屈从于项目预算和进度。应该由一个独立的团队专门负责质量管理,并应该由一个独立的团队专门负责质量管理,并应该向项目管理者的上级领导汇报。应该向项目管理者的上级领导汇报。软件质量管理者不应该参与具体的开发工作,软件质量管理者不应该参与具体的开发工作,而应该负责整个机构的质量管理。而应该负责整个机构的质量管理。质量管理与软件开发质量管理与软件开发D1D2D3D4D5可交可交付产付产品品质量保证质量保证质量规划质量规划质量控制质量控制软件开发过程软件开发过程质量管理过程质量管理过程软件质量保证软件质量保证QAQA活动为达到高质量软件提供了一个框架。活动为达到高质量软件提供了一个框架。QAQA过
43、程包括对软件开发过程包括对软件开发过程标准过程标准或软件或软件产产品标准品标准的定义和选择。这些标准应该融合的定义和选择。这些标准应该融合在软件开发的过程或过程中。在软件开发的过程或过程中。质量标准质量标准在质量保证过程中要制定两种类型的标准:在质量保证过程中要制定两种类型的标准:产品标准产品标准定义了所有要提供的产品的特征,包括:文档标准,如定义了所有要提供的产品的特征,包括:文档标准,如生成的需求文档的结构;文档编写标准,如定义对象类生成的需求文档的结构;文档编写标准,如定义对象类时注释头的标准写法;还有编码标准,它规定了如何使时注释头的标准写法;还有编码标准,它规定了如何使用某种程序设计
44、语言。用某种程序设计语言。过程标准过程标准这些标准定义了软件开发必须遵循的过程,包括描述、这些标准定义了软件开发必须遵循的过程,包括描述、设计、有效性验证过程的定义,以及对在这些过程中产设计、有效性验证过程的定义,以及对在这些过程中产生的文档描述。生的文档描述。产品标准与过程标准产品标准与过程标准产品标准产品标准设计评审形式设计评审形式需求文档结构需求文档结构规程标题结构规程标题结构Java编程规范编程规范项目计划格式项目计划格式变更请求形式变更请求形式过程标准过程标准设计评审行为设计评审行为提交文档给提交文档给CM版本发放过程版本发放过程项目计划批准过程项目计划批准过程变更控制过程变更控制过
45、程测试记录过程测试记录过程封装了最成功的经验封装了最成功的经验避免重犯过去避免重犯过去的错误。的错误。 提供了质量保证过程的框架提供了质量保证过程的框架质量控质量控制的任务只要保证这些标准严格执行就制的任务只要保证这些标准严格执行就可以了。可以了。有助于工作的连贯性有助于工作的连贯性由一个人着手由一个人着手进行的工作别人可以接着做。进行的工作别人可以接着做。标准的重要性标准的重要性质量规划质量规划质量规划描述希望得到的产品的质量要质量规划描述希望得到的产品的质量要求及其评定办法,并且定义最重要的质求及其评定办法,并且定义最重要的质量属性。量属性。质量规划应该定义质量的评定过程。质量规划应该定义
46、质量的评定过程。也应该说明采用哪个组织的标准,如果也应该说明采用哪个组织的标准,如果有必要还要定义新的标准。有必要还要定义新的标准。质量规划质量规划产品介绍产品介绍:说明产品、产品的意向市场及对:说明产品、产品的意向市场及对产品性质的预期。产品性质的预期。软件计划软件计划:包括产品确切的发布日期、产品:包括产品确切的发布日期、产品责任及产品的销售和售后服务计划。责任及产品的销售和售后服务计划。过程描述过程描述:产品的开发和管理中应该采用开:产品的开发和管理中应该采用开发和售后服务质量过程。发和售后服务质量过程。质量目标质量目标:包括鉴定和验证产品的关键质量:包括鉴定和验证产品的关键质量属性。属
47、性。风险和风险管理风险和风险管理:说说明影响产品质量的主要明影响产品质量的主要风险和这些风险的应对措施。风险和这些风险的应对措施。Humphrey的结构框架:的结构框架:质量规划质量规划质量规划时要考虑各种潜在的软件质量属性:质量规划时要考虑各种潜在的软件质量属性:安全性安全性可理解性可理解性可移植性可移植性保密性保密性可测试性可测试性可使用性可使用性可靠性可靠性适应性适应性复用性复用性弹性弹性模块性模块性效率效率鲁棒性鲁棒性复杂性复杂性可学习性可学习性当然,要对任何系统的所有这些属性都重点关注是不可当然,要对任何系统的所有这些属性都重点关注是不可能的,因此质量规划的一个关键任务是挑选出关键的
48、质能的,因此质量规划的一个关键任务是挑选出关键的质量属性,然后对如何达到这些质量属性做出规划。量属性,然后对如何达到这些质量属性做出规划。质量控制质量控制质量控制就是监督检查整个软件开发过程,以质量控制就是监督检查整个软件开发过程,以确保质量保证规程和标准被严格执行。确保质量保证规程和标准被严格执行。有两种质量控制的方法:有两种质量控制的方法:质量评审质量评审:一组人对软件、文档编制及软件:一组人对软件、文档编制及软件制作过程进行评审。制作过程进行评审。自动化的软件评估自动化的软件评估:软件和文档生成后,经:软件和文档生成后,经过一定的程序进行处理,并与用于具体项目过一定的程序进行处理,并与用
49、于具体项目的标准相对照。的标准相对照。软件成本估算软件成本估算成本估算是可行性分析的重要依据,也是软件管成本估算是可行性分析的重要依据,也是软件管理的重要内容,直接影响到软件开发的风险。理的重要内容,直接影响到软件开发的风险。软件开发成本主要是指软件开发过程中所花软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,即主要是人的劳费的工作量及相应的代价,即主要是人的劳动的消耗。动的消耗。软件产品不存在重复制造过程,它的开发成软件产品不存在重复制造过程,它的开发成本是以一次性开发过程所花费的代价来计算本是以一次性开发过程所花费的代价来计算的。因此软件成本估算,应以软件计划、需的。因此软件
50、成本估算,应以软件计划、需求分析、设计、编码到测试的软件开发全过求分析、设计、编码到测试的软件开发全过程所花费的代价为依据。程所花费的代价为依据。*成本估算与成本估计是软件管理的核心任务之一。成本估算与成本估计是软件管理的核心任务之一。软件成本估算软件成本估算由于软件成本涉及较多变量,因而难以对其作由于软件成本涉及较多变量,因而难以对其作出准确的估算。出准确的估算。我们需要使用多种不同的方法对软件成本进行交我们需要使用多种不同的方法对软件成本进行交叉估算,才有可能得到软件成本的较精确的估算叉估算,才有可能得到软件成本的较精确的估算结果。结果。对于大型项目,由于其项目的复杂度,必须建立对于大型项
51、目,由于其项目的复杂度,必须建立相应的估算模型,按照一定的方法、技术来进行相应的估算模型,按照一定的方法、技术来进行估算。估算。软件成本估算软件成本估算项目的规模项目的规模项目的难度项目的难度项目的时间限制项目的时间限制资源资源根据需求分析后根据需求分析后确定的功能模块确定的功能模块的数量,或者用的数量,或者用例的数量例的数量 确定确定根据现有经验、根据现有经验、技术水平技术水平确定确定根据客户的要根据客户的要求及现有资源求及现有资源确定确定确定确定软件规模估算软件规模估算代码行技术代码行技术功能点技术功能点技术代码行技术代码行技术代码行技术是比较简单的代码行技术是比较简单的定量定量估算软件规
52、模的估算软件规模的方法。方法。这种方法依据以往开发类似产品的经验和历史这种方法依据以往开发类似产品的经验和历史数据,估算实现一个功能所需要的源程序行数。数据,估算实现一个功能所需要的源程序行数。当有以往开发类似产品的历史数据可供参考时,当有以往开发类似产品的历史数据可供参考时,这种方法估算出的数值还是比较准确的。这种方法估算出的数值还是比较准确的。代码行技术代码行技术为使得对软件规模估计值更接近实际值,可以由多名有为使得对软件规模估计值更接近实际值,可以由多名有经验的软件工程师分别作出估计。每个人都估计软件的经验的软件工程师分别作出估计。每个人都估计软件的最小规模最小规模(a)(a)、最大规模
53、最大规模(b)(b)和最可能规模和最可能规模(m)(m),分别算分别算出三者的平均值出三者的平均值a a,b b,m m,再用下式计算软件规模估算再用下式计算软件规模估算值:值:在使用代码行技术估算软件规模时,若软件较小时常用的单位在使用代码行技术估算软件规模时,若软件较小时常用的单位是代码行数(是代码行数(LOC);若软件较大时常用的单位是千行代码数);若软件较大时常用的单位是千行代码数(KLOC)。)。常使用的单位有:常使用的单位有:SLOC(single line of code)、KLOC(thousand lines of code)、LLOC(logical line of cod
54、e)、PLOC(physical line of code)、NCLOC (non-commented line of code)、DSI(delivered source instruction交付源指令数交付源指令数 )。 代码行技术代码行技术代码行技术的优点:代码行技术的优点:代码是所有软件项目开发都包含的代码是所有软件项目开发都包含的“产品产品”,而且,而且代码行数很容易计算。代码行数很容易计算。代码行技术的缺点:代码行技术的缺点:源程序仅是软件配置的一个成分,用它的规模代表源程序仅是软件配置的一个成分,用它的规模代表整个软件规模不太合理;整个软件规模不太合理;用不同语言实现同一个软件
55、所需的代码行数并不相用不同语言实现同一个软件所需的代码行数并不相同,即它依赖于所使用的编程语言;同,即它依赖于所使用的编程语言;不适合于非过程语言。不适合于非过程语言。功能点技术功能点技术是为克服代码行技术缺点提出的;是为克服代码行技术缺点提出的;它涉及多种因素的度量方法;它涉及多种因素的度量方法;功能点技术根据软件的基本功能来定义,所以功能点技术根据软件的基本功能来定义,所以在系统设计初期就能够估算出软件项目的规模。在系统设计初期就能够估算出软件项目的规模。信息域特性信息域特性产品信息域的产品信息域的5 5个特性:个特性:输入项数输入项数( (InpInp):):用户向软件输入的项数,这些用
56、户向软件输入的项数,这些输入给软件提供了面向应用的数据。输入给软件提供了面向应用的数据。输出项数输出项数(Out):(Out):软件向用户输出的项数,它们软件向用户输出的项数,它们向用户提供面向应用的信息。向用户提供面向应用的信息。查询数查询数( (InqInq):):查询即一次联机输入,它导致软查询即一次联机输入,它导致软件以联机输出方式产生某种即时响应。件以联机输出方式产生某种即时响应。主文件数主文件数( (MafMaf):):逻辑主文件(数据的一个逻辑逻辑主文件(数据的一个逻辑集合)的数目。集合)的数目。外部接口数外部接口数( (InfInf):):机器可读的全部接口的数量。机器可读的全
57、部接口的数量。功能点技术基本原理功能点技术基本原理使用使用5个信息域的个信息域的“加权和加权和”CT与与14个技个技术因素的术因素的“复杂性调节值复杂性调节值”Fi来计算功能来计算功能点点FP:估算功能点的步骤估算功能点的步骤1 1、计算未调整的功能点数、计算未调整的功能点数CTCT首先把信息域的首先把信息域的每个特性都分类为简单级、平均级每个特性都分类为简单级、平均级或复杂级,根据等级按下表分配功能点数:或复杂级,根据等级按下表分配功能点数:1075接口系数接口系数a515107文件系数文件系数a4643查询系数查询系数a3754输出系数输出系数a2543输入系数输入系数a1复杂复杂平均平均
58、简单简单特性系数特性系数复杂级别复杂级别然后用下式计算未调整的功能点数然后用下式计算未调整的功能点数CT:CT=a1Inpa2Outa3Inqa4Mafa5Inf估算功能点的步骤估算功能点的步骤2 2、计算技术复杂因子、计算技术复杂因子TCFTCF软件复杂度的估算基于软件复杂度的估算基于1414个问题,逐个问题,逐一对各问题做出复杂度估计一对各问题做出复杂度估计F Fi i,其取值,其取值范围是范围是0-50-5。估算功能点的步骤估算功能点的步骤“没有影响没有影响”取值取值0 0 “偶然的偶然的”取值取值1 1“适中的适中的”取值取值2 2“普通的普通的”取值取值3 3“重要的重要的”取值取值
59、4 4 “极重要的极重要的”取值取值5 5系统需要可靠的备份和复原吗?系统需要可靠的备份和复原吗?需要数据通信吗?需要数据通信吗?有分布处理功能吗?有分布处理功能吗?性能很关键吗?性能很关键吗?系统是否在一个已有的、很实用的操作环境中运行?系统是否在一个已有的、很实用的操作环境中运行?系统需要联机入口吗?系统需要联机入口吗?联机入口需要在多屏幕或多操作之间切换以完成输入?联机入口需要在多屏幕或多操作之间切换以完成输入?系统联机需要更新主文件吗?系统联机需要更新主文件吗?系统的输入、输出、文件或查询很复杂吗?系统的输入、输出、文件或查询很复杂吗?系统内部处理复杂吗?系统内部处理复杂吗?代码需要被
60、设计成可复用的吗?代码需要被设计成可复用的吗?设计中要包括转换及安装吗?设计中要包括转换及安装吗?系统的设计支持不同组织的多次安装吗?系统的设计支持不同组织的多次安装吗?系统的设计有利于用户修改和使用吗?系统的设计有利于用户修改和使用吗? 功能点技术功能点技术功能点技术没有涉及系统本身的算法复功能点技术没有涉及系统本身的算法复杂性。杂性。因此,它仅仅适合与算法比较简单的事因此,它仅仅适合与算法比较简单的事务处理系统软件的规模度量;对算法较务处理系统软件的规模度量;对算法较复杂的大型软件系统并不适应。复杂的大型软件系统并不适应。工作量估算工作量估算软件估算模型使用由经验导出的公式来预测软软件估算
61、模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模件开发工作量,工作量是软件规模(LOC(LOC或或FP)FP)的函数,工作量的单位通常是人月(的函数,工作量的单位通常是人月(pmpm)。)。静态单变量模型静态单变量模型动态多变量模型动态多变量模型COCOMO2COCOMO2模型模型支持大多数估算模型的经验数据,都是从有限个支持大多数估算模型的经验数据,都是从有限个项目的样本集中总结出来的,因此,没有一个估项目的样本集中总结出来的,因此,没有一个估算模型可以使用于所有类型的软件和开发环境。算模型可以使用于所有类型的软件和开发环境。静态单变量模型静态单变量模型静态单变量的总体结构形式
62、如下:静态单变量的总体结构形式如下: 其中,其中,A A、B B、C C是由经验数据导出的常数,是由经验数据导出的常数,E E是是以以人月为单位的工作量,人月为单位的工作量,evev是估算变量(是估算变量(KLOCKLOC或或FPFP)。)。下面给出典型的静态单变量模型:下面给出典型的静态单变量模型:1)1)面向面向KLOCKLOC的估算模型的估算模型2)2)面向面向FPFP的估算模型的估算模型面向面向KLOCKLOC的估算模型的估算模型nWalston_FelixWalston_Felix (IBM (IBM模型模型) )nBailey_BasiliBailey_Basili模型模型nBoe
63、hmBoehm简单模型简单模型nDotyDoty模型模型(KLOC9(KLOC9时适合时适合) )面向面向FPFP的估算模型的估算模型nAlbrecht&Gaffney模型模型nMaston,Barnett和和Mellichamp模型模型静态单变量的估算模型静态单变量的估算模型从上面可以看出,对于相同的从上面可以看出,对于相同的KLOCKLOC或或FPFP,用不用不同的模型估算的结果各不相同。同的模型估算的结果各不相同。主要原因:主要原因:这些模型都仅仅依据若干领域中有限个项目的这些模型都仅仅依据若干领域中有限个项目的经验数据推导出来的,适应范围有限。经验数据推导出来的,适应范围有限。因此,必
64、须根据当前项目特点选择适应的估算因此,必须根据当前项目特点选择适应的估算模型,并依据需要对相应模型作出调整。模型,并依据需要对相应模型作出调整。动态多变量模型动态多变量模型动态多变量模型,即软件方程式,它是根据动态多变量模型,即软件方程式,它是根据40004000多个当代软件项目中收集的生产率数据推多个当代软件项目中收集的生产率数据推导出来的。导出来的。该模型把工作量看作是软件规模和开发时间的该模型把工作量看作是软件规模和开发时间的函数,其形式如下:函数,其形式如下:动态多变量模型动态多变量模型其中:其中:E E是是以人月或人年为单位的工作量;以人月或人年为单位的工作量;t t是以月或年为单位
65、的项目持续时间;是以月或年为单位的项目持续时间;B B是特殊因子,它随着对测试、质量保证、文档及管理是特殊因子,它随着对测试、质量保证、文档及管理技术的需求的增加而缓慢增加。对于较小程序技术的需求的增加而缓慢增加。对于较小程序(KLOC=5(KLOC=515)15),B=0.16B=0.16;而;而对于超过对于超过70KLOC70KLOC的程序,的程序,B=0.39B=0.39;P P是生产率参数,它反映下属因素对工作量的影响:是生产率参数,它反映下属因素对工作量的影响:总体过程成熟度及管理水平;总体过程成熟度及管理水平;使用良好的软件工程实践的程度;使用良好的软件工程实践的程度;使用程序设计
66、语言的级别;使用程序设计语言的级别;软件环境状态;软件环境状态;软件项目组的经验和技术;软件项目组的经验和技术;应用系统的复杂性等。应用系统的复杂性等。动态多变量模型动态多变量模型P P的取值:的取值:开发实时嵌入式软件时,开发实时嵌入式软件时,P P的典型值为的典型值为20002000;开发电信系统和系统软件时,开发电信系统和系统软件时,P=10000P=10000;对于商业应用软件来说,对于商业应用软件来说,P=28000P=28000。从上式可以看出,开发同一个软件产品(即从上式可以看出,开发同一个软件产品(即LOCLOC固定)固定)的时候,如果把项目持续时间延长,则可降低完成的时候,如
67、果把项目持续时间延长,则可降低完成项目所需要功能的工作量。项目所需要功能的工作量。COCOMOCOCOMO模型模型COCOMOCOCOMO模型模型-Constructive Cost Model-Constructive Cost Model它是它是BoehmBoehm于于19811981年在静态单变量模型基础上提年在静态单变量模型基础上提出的出的“构造性成本模型构造性成本模型” ” 。19971997年年BoehmBoehm等人提出修订版等人提出修订版CoCoMo2CoCoMo2模型。模型。COCOMO模型模型依据系统规模和考虑因素的多少,由三种类依据系统规模和考虑因素的多少,由三种类型的型
68、的COCOMOCOCOMO模型:模型:基本基本COCOMOCOCOMO模型模型中间中间COCOMOCOCOMO模型模型详细详细COCOMOCOCOMO模型模型独立型(独立型(OrganicOrganic) 较简单,对产品目标理解充分,经验丰富,对软件开发较简单,对产品目标理解充分,经验丰富,对软件开发环境熟悉,由小团队开发。大多数应用软件及老的操作环境熟悉,由小团队开发。大多数应用软件及老的操作系统、编译系统属此类。系统、编译系统属此类。半独立型(半独立型(Semidetached) Semidetached) 项目较复杂,团队成员对系统可能有些经验。如新操作项目较复杂,团队成员对系统可能有些
69、经验。如新操作系统,大型数据库,生产控制等软件属此类。系统,大型数据库,生产控制等软件属此类。嵌入型(嵌入型(EmbaddedEmbadded) ) 项目复杂,软件只是复杂系统的一部分,软件、硬件、项目复杂,软件只是复杂系统的一部分,软件、硬件、规则和操作规程关系紧密,对接口、数据结构,算法要规则和操作规程关系紧密,对接口、数据结构,算法要求较高。如大型复杂的事务处理系统,大型、超大型的求较高。如大型复杂的事务处理系统,大型、超大型的操作系统,军事指挥系统,航天控制系统等。操作系统,军事指挥系统,航天控制系统等。软件复杂度的三种类型软件复杂度的三种类型 基本基本COCOMOCOCOMO模型模型
70、基本基本COCOMOCOCOMO模型是一个静态单变量模型,它把软模型是一个静态单变量模型,它把软件系统所需要的成本看作是程序大小单一变量件系统所需要的成本看作是程序大小单一变量(KLOC)(KLOC)的的( (经验经验) )函数,用于系统级的粗略估算。函数,用于系统级的粗略估算。实时处理、控制程序、实时处理、控制程序、操作系统操作系统0.322.51.203.6嵌入型嵌入型各类实用程序、编译各类实用程序、编译程序等程序等0.352.51.123.0半独立型半独立型各类应用软件各类应用软件0.382.51.052.4独立型独立型适应范围适应范围dcaC软件类型软件类型工作量工作量 E=CKLOC
71、 E=CKLOCa a ( (人月人月| |人年人年) )开发时间开发时间 TDEV=cE TDEV=cEd d ( (月月| |年年) )中间中间COCOMOCOCOMO模型模型中间中间COCOMOCOCOMO模型是一个静态多变量模型,它模型是一个静态多变量模型,它把软件系统所需要的成本看作是程序大小和把软件系统所需要的成本看作是程序大小和一系列成本驱动属性的函数。一系列成本驱动属性的函数。估算方程:估算方程:其中:其中:E是开发工作量;是开发工作量; C是模型系数;是模型系数; KLOC是估计代码行数;是估计代码行数; a是模型指数;是模型指数; fi是成本因素是成本因素1.202.8嵌入
72、型嵌入型1.123.0半独立型半独立型1.053.2独立型独立型aC软件类型软件类型每个成本因素每个成本因素Fi根据它的重要程度和影根据它的重要程度和影响大小赋予一定的值,可把这些成本因响大小赋予一定的值,可把这些成本因素划分为素划分为(共共15个个):产品因素产品因素计算机因素计算机因素人员因素人员因素项目因素。项目因素。中间中间COCOMO模型模型EAF Fii=115工作量调节因子工作量调节因子1.101.041.001.081.23开发进度的要求(SCED)0.830.911.001.101.24软件工具的使用(TOOL)0.820.911.001.101.24程序设计实践(MODP)
73、0.951.001.071.14程序设计语言的经验(LEXP)0.901.001.101.21开发环境的经验(VEXP)0.700.861.001.171.42程序员水平(PCAP)0.820.911.001.131.29应用经验(AEXP)0.710.861.001.191.46系统分析员的能力(ACAP)1.151.071.000.87开发环境的响应速度(TURN)1.301.151.000.87软件开发环境的变化(VIRT)1.561.211.061.00内存约束(STOR)1.661.301.111.00执行时间约束(TIME)1.651.301.151.000.850.70软件复杂性
74、(CPLX)1.161.081.000.94数据库规模(DATA)1.401.151.000.880.75软件可靠性(RELY)极高很高高正常低很低级别成本因素详细详细COCOMOCOCOMO模型模型详细详细COCOMOCOCOMO模型除了包括中级模型除了包括中级COCOMOCOCOMO模型中模型中所考虑的因素以外,并对工作量调节因子在所考虑的因素以外,并对工作量调节因子在软件过程中每个步骤的影响作出详细评估。软件过程中每个步骤的影响作出详细评估。该模型则将软件分为系统、子系统、模块三该模型则将软件分为系统、子系统、模块三个层次。个层次。COCOMOCOCOMO模型模型基本基本CoCoMo模型
75、用于系统开发的初期,估模型用于系统开发的初期,估算整个系统算整个系统(包括维护包括维护)的工作量和软件开发的工作量和软件开发所需要的时间。所需要的时间。中间中间CoCoMo模型用于估算各个子系统的工模型用于估算各个子系统的工作量和开发时间。作量和开发时间。详细详细CoCoMo模型用于估算独立的软部件。模型用于估算独立的软部件。人员管理人员管理人员是软件机构中最重要的资产,他们代表着人员是软件机构中最重要的资产,他们代表着智力资本。智力资本。合理地调配人员是成功完成软件项目的切实保合理地调配人员是成功完成软件项目的切实保证。证。因此软件项目管理的关键是人员管理。项目管因此软件项目管理的关键是人员
76、管理。项目管理者必须利用其团队成员,用可能最有效的方理者必须利用其团队成员,用可能最有效的方式解决技术和非技术上的问题。式解决技术和非技术上的问题。软件机构要尊重员工,管理者要激励员工。软件机构要尊重员工,管理者要激励员工。人员管理不当是项目成败的最重要的原因之一!人员管理不当是项目成败的最重要的原因之一!人员组织人员组织软件项目成功的关键是能够将高素质的软件软件项目成功的关键是能够将高素质的软件开发人员合理地组织起来,使他们有效地分开发人员合理地组织起来,使他们有效地分工协作,共同完成开发工作。工协作,共同完成开发工作。经验表明,人员组织的好坏决定着生产率的经验表明,人员组织的好坏决定着生产
77、率的高低和产品质量的好坏。高低和产品质量的好坏。项目组的组织原则项目组的组织原则软件开发小组的规模不宜太大软件开发小组的规模不宜太大软件开发小组的规模不宜太大软件开发小组的规模不宜太大,人数不能太人数不能太多,一般多,一般3-53-5人左右为宜。人左右为宜。切切切切忌忌忌忌在在在在开开开开发发发发过过过过程程程程中中中中增增增增加加加加人人人人员员员员,这这将将使使人人员员之之间间的的联联系系增增多多,造造成成通通信信成成本本的的增增加加而而导导致致效率降低。效率降低。项目组的组织原则项目组的组织原则例:例:设一开发小组有设一开发小组有4 4个软件工程师,开发效率为个软件工程师,开发效率为50
78、005000行行/ /年,共年,共有有6 6条通信路径,每条路径降低生产率条通信路径,每条路径降低生产率250250行行/ /年,则小组生产年,则小组生产率为:率为: 5000450004250625061850018500(行(行/ /年)年)为了加快进度,新增加为了加快进度,新增加2 2人,每人效率为人,每人效率为840840行行/ /年,通信路径年,通信路径增加到增加到1515条,此时的小组生产率为:条,此时的小组生产率为: 5000450004 84028402250152501517930 17930 (行(行/ /年)年) 即新增加人,并未提高生产率。即新增加人,并未提高生产率。B
79、rooks定律定律向一个进度已经落后的项目增派开发向一个进度已经落后的项目增派开发人员,可能使项目完成得更晚。人员,可能使项目完成得更晚。人与月是不能互换的!人与月是不能互换的!开发人员以算术级数增加,人员之间交开发人员以算术级数增加,人员之间交换意见的路径数将以几何级数增加。换意见的路径数将以几何级数增加。项目组的组织方式项目组的组织方式软件项目组的组织方式很多,如民主制程序员软件项目组的组织方式很多,如民主制程序员组、主程序员组、现代程序员组等。组、主程序员组、现代程序员组等。具体项目组组织方式的选择,取决于所承担的项具体项目组组织方式的选择,取决于所承担的项目特点、以往组织经验及管理者的
80、看法和喜好!目特点、以往组织经验及管理者的看法和喜好!民主制程序员组民主制程序员组小组成员完全平等,享有充分民主,通过协商小组成员完全平等,享有充分民主,通过协商做出决策。做出决策。小组成员之间的通讯是平行的,如果小组有小组成员之间的通讯是平行的,如果小组有n n个成员,则可能的通讯信道为个成员,则可能的通讯信道为n(n-1)/2n(n-1)/2条。条。民主制程序员组通常采用非正式的组织方式,民主制程序员组通常采用非正式的组织方式,虽然名义上有一个组长,但其与组内其它成员虽然名义上有一个组长,但其与组内其它成员完成同样的任务。完成同样的任务。由小组全体成员讨论协商决定应该完成的工作,由小组全体
81、成员讨论协商决定应该完成的工作,并依据各成员能力和经验分配适当的任务。并依据各成员能力和经验分配适当的任务。民主制程序员组民主制程序员组优点:优点:组员对发现程序错误持积极的态度,组员对发现程序错误持积极的态度,这种态度有助于更快地发现错误,从这种态度有助于更快地发现错误,从而导致高质量的代码;而导致高质量的代码;组员享有充分民主,小组有高度凝聚组员享有充分民主,小组有高度凝聚力,组内学习气氛浓厚,有利于攻克力,组内学习气氛浓厚,有利于攻克技术难关。技术难关。民主制程序员组民主制程序员组如果组内多数成员是经验丰富、技术熟练的程如果组内多数成员是经验丰富、技术熟练的程序员,采用该组织方式是非常有
82、效的。序员,采用该组织方式是非常有效的。但是,在组内多数成员技术水平不高或缺乏经但是,在组内多数成员技术水平不高或缺乏经验情况下采用该组织方式,将会因为没有明确验情况下采用该组织方式,将会因为没有明确的权威指导项目进展,小组成员间缺乏必要的的权威指导项目进展,小组成员间缺乏必要的协调,而导致项目失败。协调,而导致项目失败。适合于研制周期长、难度大的项目。日本大多适合于研制周期长、难度大的项目。日本大多数软件开发公司都采用这种形式。数软件开发公司都采用这种形式。主程序员组主程序员组u项目开发普遍存在以下事实:项目开发普遍存在以下事实:软件开发人员多数比较缺乏经验;软件开发人员多数比较缺乏经验;程
83、序设计过程有许多事务性的工作;程序设计过程有许多事务性的工作;多渠道通讯很浪费时间,降低程序员的生多渠道通讯很浪费时间,降低程序员的生产率。产率。uIBMIBM在在2020世纪世纪7070年代初期开始使用主程序年代初期开始使用主程序员组的组织方式。员组的组织方式。编程秘书负责完成与项目有关的全部事务性工作,编程秘书负责完成与项目有关的全部事务性工作,如,维护项目资料库和项目文档,编译、连接、如,维护项目资料库和项目文档,编译、连接、执行源程序和测试用例。执行源程序和测试用例。主程序员既是成功的管理人员,又是经验丰富、技术好、主程序员既是成功的管理人员,又是经验丰富、技术好、能力强的高级程序员,
84、负责体系结构设计和关键部分的详能力强的高级程序员,负责体系结构设计和关键部分的详细设计,并且负责指导其他程序员完成详细设计和编码工细设计,并且负责指导其他程序员完成详细设计和编码工作作主程序员组主程序员组主程序员主程序员编程秘书编程秘书后备程序员后备程序员程序员程序员程序员程序员程序员程序员后备程序员也应该技术熟练而且富于经验,他协助主程序后备程序员也应该技术熟练而且富于经验,他协助主程序员工作并且在必要时员工作并且在必要时( (主程序员生病、出差或跳槽主程序员生病、出差或跳槽) )接替主接替主程序员的工作。所以后备程序员必须和主程序一样优秀,程序员的工作。所以后备程序员必须和主程序一样优秀,
85、一样深入了解项目。一样深入了解项目。主程序员组主程序员组主程序员组使用经验丰富、技术好、能力强的主程序员组使用经验丰富、技术好、能力强的程序员作为主程序员程序员作为主程序员。同时,利用人和计算机。同时,利用人和计算机在事务性工作方面给主程序员提供充分支持,在事务性工作方面给主程序员提供充分支持,而且而且保证所有通讯都通过一两个人进行保证所有通讯都通过一两个人进行。这种组织方式这种组织方式类似于外科手术小组的组织类似于外科手术小组的组织:主:主刀大夫对手术全面负责,并且完成订制手术方刀大夫对手术全面负责,并且完成订制手术方案、动手术等关键工作,同时麻醉师、护士等案、动手术等关键工作,同时麻醉师、
86、护士等技术熟练的专门工作人员协助配合主刀大夫工技术熟练的专门工作人员协助配合主刀大夫工作,此外,必要时还要聘请领域专家予以协助。作,此外,必要时还要聘请领域专家予以协助。主程序员组的重要特征主程序员组的重要特征专业化专业化该组每名成员仅完成他们受过专业训练的那些该组每名成员仅完成他们受过专业训练的那些工作。工作。层次性层次性主程序员负责指挥每名成员工作,对软件项目主程序员负责指挥每名成员工作,对软件项目全面负责。全面负责。主程序员组的不足主程序员组的不足虽然主程序员组有很多优点,但是,我们还应虽然主程序员组有很多优点,但是,我们还应看到这种组织方式固有的不切实际的地方:看到这种组织方式固有的不
87、切实际的地方:主程序员既是高级程序员又是优秀管理者,主程序员既是高级程序员又是优秀管理者,但现实中这种人才很难见到。但现实中这种人才很难见到。后备程序员更难找。人们希望后备程序员像后备程序员更难找。人们希望后备程序员像主程序员一样优秀,但他们必须坐在主程序员一样优秀,但他们必须坐在“替补替补席席”上,拿着较低的工资等待接替主程序员。上,拿着较低的工资等待接替主程序员。编程秘书也很难找。专业的软件技术人员一编程秘书也很难找。专业的软件技术人员一般都厌烦日常的事务性工作。般都厌烦日常的事务性工作。现代程序员组现代程序员组使用主程序员组时,主程序员对每行代码质量负责,使用主程序员组时,主程序员对每行
88、代码质量负责,因此,他必须参与所有代码审查工作。他往往会把发因此,他必须参与所有代码审查工作。他往往会把发现程序错误与小组成员业绩联系起来,造成小组成员现程序错误与小组成员业绩联系起来,造成小组成员不愿意发现错误的心理。解决办法是:取消主程序员不愿意发现错误的心理。解决办法是:取消主程序员的行政管理工作。这样既解决了问题,又使寻找主程的行政管理工作。这样既解决了问题,又使寻找主程序员的人选不再那么困难。序员的人选不再那么困难。行政组长行政组长技术组长技术组长程序员程序员程序员程序员程序员程序员技术管理技术管理非技术管理非技术管理图例:图例:现代程序员组现代程序员组由于项目组人员不宜过多,当软件
89、规模较大时,由于项目组人员不宜过多,当软件规模较大时,应该把程序员划分成若干小组,宜采用下图所应该把程序员划分成若干小组,宜采用下图所示的组织结构:示的组织结构:程序员程序员程序员程序员程序员程序员组长组长程序员程序员程序员程序员程序员程序员组长组长程序员程序员程序员程序员组长组长项目经理项目经理技术管理技术管理图例:图例:现代程序员组现代程序员组为了更好的把主程序员组和民主程序员组的优点结合为了更好的把主程序员组和民主程序员组的优点结合其来,在合适的时候才用分散决定的方法,即集中指其来,在合适的时候才用分散决定的方法,即集中指导下的发扬民主:导下的发扬民主:程序员程序员程序员程序员程序员程序
90、员组长组长程序员程序员程序员程序员程序员程序员组长组长程序员程序员程序员程序员组长组长项目经理项目经理技术管理技术管理图例:图例:软件配置管理软件配置管理 任何软件开发都是迭代过程,因此在软件开发任何软件开发都是迭代过程,因此在软件开发过程中,变化既是必要的,又是不可避免的。过程中,变化既是必要的,又是不可避免的。同时,变化也很容易失去控制。同时,变化也很容易失去控制。如果不能适当的控制管理这些变化,势必导致如果不能适当的控制管理这些变化,势必导致混乱并产生严重的错误!混乱并产生严重的错误!软件配置管理软件配置管理 目标:使变化更准确且容易被适应,在必须变目标:使变化更准确且容易被适应,在必须
91、变化时减少所需要花费的工作量化时减少所需要花费的工作量。软件配置管理是在软件项目启动时就开始,并软件配置管理是在软件项目启动时就开始,并且一直持续到软件软件退役才终止的一组追踪且一直持续到软件软件退役才终止的一组追踪和控制软件变动的保护性活动。和控制软件变动的保护性活动。 软件配置管理(软件配置管理(SCM),是在软件整个生命),是在软件整个生命周期内管理变化的一组活动。是对工作成果的周期内管理变化的一组活动。是对工作成果的一种有效保护。一种有效保护。软件配置软件配置上述这些项组成了软件过程中产生的全部信息,上述这些项组成了软件过程中产生的全部信息,我们把他们统称为软件配置,其中每一项即一个我
92、们把他们统称为软件配置,其中每一项即一个软件配置项(软件配置项(Software Configuration Item,简简称称SCI)。)。SCI是纳入配置管理范畴的工作成果。是纳入配置管理范畴的工作成果。SCI是配置管理的基本单位。是配置管理的基本单位。软件开发过程的工作成果:软件开发过程的工作成果:1) 计算机程序(源代码和可执行程序);计算机程序(源代码和可执行程序);2) 描述计算机程序的文档(供技术人员或用户使用描述计算机程序的文档(供技术人员或用户使用););3)数据(包括程序内部和外部定义的数据)。数据(包括程序内部和外部定义的数据)。软件配置项软件配置项nSCI的主要属性:名
93、称、标识符、状态、版本、的主要属性:名称、标识符、状态、版本、作者、日期等。作者、日期等。nSCI的状态有:的状态有:草稿草稿(Draft)、正式发布正式发布(Released)和和正在修改正在修改(Changing)。正式发布正式发布正在修改正在修改评审评审或审批或审批草稿草稿通过通过否决否决自由修改自由修改变更控制变更控制SCISCI状态变迁图状态变迁图基线基线(Baseline)IEEEIEEE把基线定义为:把基线定义为:“已经通过正式复审和批准的某规约或产品,它因已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能遵循正式此可以作为进一步开发的基础,并且只能遵
94、循正式的变化控制过程得到改变的变化控制过程得到改变”简而言之,基线是由通过正式评审的一组软件配置简而言之,基线是由通过正式评审的一组软件配置项组成。在软件配置项变成基线之前,可以迅速而项组成。在软件配置项变成基线之前,可以迅速而非正式的修改它。一旦建立了基线以后,基线中的非正式的修改它。一旦建立了基线以后,基线中的配置项就被配置项就被“冻结冻结”了,不能再被任何人随意修改。了,不能再被任何人随意修改。基线的主要属性有名称、标识符、版本、日期等。基线的主要属性有名称、标识符、版本、日期等。通常将交付给客户的基线称一个通常将交付给客户的基线称一个“Release”Release”,为,为内部开发用
95、的基线则称为一个内部开发用的基线则称为一个“Build”Build”计划计划分析分析设计设计编码编码测试测试计划计划计划计划基线基线需求规格需求规格说明说明需求需求基线基线设计设计基线基线编码编码基线基线测试测试基线基线配置配置基线基线设计方案设计方案程序清单程序清单测试报告测试报告基线是软件开发的里程碑基线是软件开发的里程碑基线基线(Baseline)软件配置管理活动软件配置管理活动软件配置管理软件配置管理 是软件质量保证的重要一环,是软件质量保证的重要一环,它包含主要如下任务:它包含主要如下任务:配置项标识配置项标识变动控制变动控制版本控制版本控制配置审计配置审计配置状态报告配置状态报告软
96、件配置管理流程软件配置管理流程配置库操作配置库操作配置管理计划配置管理计划变动管理变动管理版本控制版本控制配配置置审审计计配置管理计划配置管理计划开发人员CCB负责人配置管理员职 责 描 述人 员角 色1、人员与职责备份设备计算机软件工具描 述资 源 名 称2、软件硬件资源源代码测试文档设计文档需求文档预计正式发布时间标识符主要配置项3、配置项计划配置管理计划配置管理计划4、基线计划预计建立时间基线包含的配置项基 线 名 称5、配置库备份计划备份内容、目的的、方式等备 份 人时间、频度6、版本控制规划提示:配置管理员简述本项目的版本控制规则。7、变更控制规划提示:配置管理员简述本项目的变更控制
97、规则。8、审批提示:CCB负责人(或项目经理)审批本计划。注:CCB为配置控制委员会配置项标识配置项标识目标:目标:明确项目生存周期内所要产生的文档、程序以及明确项目生存周期内所要产生的文档、程序以及确定文档、程序的名称和命名规则。确定文档、程序的名称和命名规则。 内容内容单独命名每个配置项,然后采用面向对象方法单独命名每个配置项,然后采用面向对象方法把所识别的配置项组织起来。把所识别的配置项组织起来。每个配置项都拥有一组能唯一标识它的特征:每个配置项都拥有一组能唯一标识它的特征:名字、描述、资源列表和名字、描述、资源列表和“实现实现”。变动控制变动控制变动控制的目的是防止变动控制的目的是防止
98、SCI被随意修改而导致混乱。被随意修改而导致混乱。变动控制,就是在生存期中对变动控制,就是在生存期中对SCI的变动建立的变动建立评审评审及及核准核准的机制。的机制。为提高效率,对于处于为提高效率,对于处于“草稿草稿”状态的状态的SCI,不必进行变更,不必进行变更控制,因为草稿本来就要不断地修改。控制,因为草稿本来就要不断地修改。当当SCI处于处于“正式发布正式发布”状态,或该状态,或该SCI已经成为某个基线已经成为某个基线的一部分,若要修改,必须按照变更控制规则执行。的一部分,若要修改,必须按照变更控制规则执行。当变更被核准后,就把软件移交给开发或维护团队,以当变更被核准后,就把软件移交给开发
99、或维护团队,以实现变更。实现变更。当软件变更时,每个组件的变更记录都应该维护,这称当软件变更时,每个组件的变更记录都应该维护,这称为:为:组件的导出历史组件的导出历史。组件头信息组件头信息/ BANKSEC project (IS T 6087)/ BANKSEC-TOOLS/AUTH/RBAC/USER_ROLE/ Object: currentRole/ Author: N. Perwaiz/ Creation date: 10th November 2002/ Lancaster University 2002/ Modification history/ Version Mofifie
100、r Date Change Reason/ 1.0 J.Jones 1/12/2002 Add header Submitted to CM/ 1.1 N.Perwaiz 9/4/2003 New Field Change req. R07/02版本控制版本控制版本控制的目的是按照一定的规则保存版本控制的目的是按照一定的规则保存SCI的的所有版本,避免发生版本丢失或混淆等现象,所有版本,避免发生版本丢失或混淆等现象,并且可以快速准确地查找到并且可以快速准确地查找到SCI的任何版本。的任何版本。版本标识版本标识一个大型系统内有数以百计的软件组件,其中每一个大型系统内有数以百计的软件组件,其中每种
101、组件都可能有许多不同的版本。种组件都可能有许多不同的版本。版本标识过程必须定义一种版本标识过程必须定义一种明确标识明确标识软件组件版软件组件版本的方式。本的方式。简单的版本编号方式是使用线性导出:简单的版本编号方式是使用线性导出: V1, V1.1, V1.2, V2.1, V2.2 V1, V1.1, V1.2, V2.1, V2.2 等。等。实际导出结构是树型或网络型,而不是顺序型的。实际导出结构是树型或网络型,而不是顺序型的。版本导出结构版本导出结构版本导出规则版本导出规则SCI版本号与版本号与SCI状态紧密相关:状态紧密相关:处于处于“草稿草稿”状态的状态的SCI版本号格式为:版本号格
102、式为:0.YZYZ数字范围为数字范围为0199;随着草稿的不断完善,随着草稿的不断完善,“YZ”值应递增,初值和增幅由值应递增,初值和增幅由规则定。规则定。处于处于“正式发布正式发布”状态的状态的SCI版本号格式为:版本号格式为:X.YX为主版本号,取值为主版本号,取值19。Y为次版本号,取值为次版本号,取值19;SCI第一次第一次“正式发布正式发布”时,版本号为时,版本号为1.0;如果如果SCI版本升级幅度较小,一般只增加版本升级幅度较小,一般只增加Y值,值,X值保值保持不变,只有持不变,只有SCI版本升级幅度较大,才允许增加版本升级幅度较大,才允许增加X值。值。处于处于“正在修改正在修改”
103、状态的状态的SCI版本号格式为:版本号格式为:X.YZSCI正在修改时,一般只增大正在修改时,一般只增大Z值,值,X.Y值保持不变;值保持不变;当当SCI修改完毕,状态重新成为修改完毕,状态重新成为“正式发布正式发布”时,将时,将Z值值设为设为0,增加,增加X.Y值。参见规则值。参见规则2。发布版本发布版本系统的发布版本是分发给客户的系统版本。系统的发布版本是分发给客户的系统版本。系统的发布版本不仅仅是系统的可执行代码,系统的发布版本不仅仅是系统的可执行代码,还包括:还包括:配置文件配置文件数据文件数据文件安装程序安装程序电子和书面文档电子和书面文档包装和相关的宣传包装和相关的宣传n发布管理者
104、不能想当然认为客户总是想安装新发布管理者不能想当然认为客户总是想安装新的系统版本。因此系统的新版本不能依赖于以的系统版本。因此系统的新版本不能依赖于以前的版本。前的版本。发布版本发布版本我们来看一个例子,考虑以下情况:我们来看一个例子,考虑以下情况:系统的发布版本系统的发布版本1 1发布并投入使用;发布并投入使用;发布版本发布版本2 2随后发布。由于发布版本随后发布。由于发布版本2 2需要安装新的数需要安装新的数据文件,而有些客户不需要发布版本据文件,而有些客户不需要发布版本2 2所提供的功能,所提供的功能,而仍使用发布版本而仍使用发布版本1 1;发布版本发布版本3 3需要发布版本需要发布版本
105、2 2中的数据文件,没有新的数中的数据文件,没有新的数据文件。据文件。发布人员不能认为发布版本发布人员不能认为发布版本3 3所需要的文件已经安装在所在所需要的文件已经安装在所在地点。有些地点可能从发布版本地点。有些地点可能从发布版本1 1直接到发布版本直接到发布版本3 3,跳过了,跳过了发布版本发布版本2 2。有些地方则可能已经根据具体情况对发布版本。有些地方则可能已经根据具体情况对发布版本2 2有关的数据文件做了修改。因此数据文件必须随同系统的发有关的数据文件做了修改。因此数据文件必须随同系统的发布版本布版本3 3一起发布和安装。一起发布和安装。配置审计配置审计配置审计主要目的是要保证基线在
106、技术上、管配置审计主要目的是要保证基线在技术上、管理上的完整性,保证对理上的完整性,保证对SCI的变动是服从需求的变动是服从需求规定的。规定的。配置审计工作是变动控制委员会批准配置审计工作是变动控制委员会批准SCI的先的先决条件。决条件。在在SLC间,不断进行配置审计。间,不断进行配置审计。配置状态报告配置状态报告建立并发布配置状况报告(建立并发布配置状况报告(Configuration Status Reporting,简称简称CSR)是软件配置管是软件配置管理的一项重要任务。理的一项重要任务。CSR主要是回答主要是回答“发生了什么事情发生了什么事情”、“谁做的谁做的”、”何时发生的何时发生
107、的“、“有什么影响有什么影响”等问题。等问题。通过通过CSR纪录和报告的复查,便能确定合适做纪录和报告的复查,便能确定合适做过何种变动,何种元素被添加到已批准的基线过何种变动,何种元素被添加到已批准的基线及在给定时刻软件配置处于何种状态等等。及在给定时刻软件配置处于何种状态等等。配置管理工具配置管理工具SourceSafeMicrosoft Visual Studio套件之一套件之一简单易用,一学就会简单易用,一学就会是国内最流行的配置管理工具是国内最流行的配置管理工具CVSConcurrent Version System(并行版本系统)(并行版本系统)开源工具,服务器用开源工具,服务器用J
108、AVA编写,用于编写,用于UNIX,LINUX客户端很杂,安装使用不便客户端很杂,安装使用不便 ClearCaseRational产品产品是软件行业公认的功能最强大、价格最昂贵的配置管理软件是软件行业公认的功能最强大、价格最昂贵的配置管理软件不参加培训,基本不可能无师自通不参加培训,基本不可能无师自通能力成熟度模型能力成熟度模型CMM美国卡内基美国卡内基-梅隆大学软件工程研究所梅隆大学软件工程研究所(SEI)80年代中期 美国国防部美国国防部 资助提出软件能力成熟度模型软件能力成熟度模型 (Software Capability Maturity Model )软件过程改进工业标准软件过程改进
109、工业标准克劳斯比克劳斯比汉弗莱汉弗莱成熟度框成熟度框架架当初,建立当初,建立CMM的目的主要是:为大型软件的目的主要是:为大型软件项目的招投标活动提供一种全面而客观的评项目的招投标活动提供一种全面而客观的评审依据,发展到后来,此模型又同时被应用审依据,发展到后来,此模型又同时被应用于许多软件机构内部的过程改进活动中。于许多软件机构内部的过程改进活动中。能力成熟度模型能力成熟度模型CMM软件组织的比较软件组织的比较产品质量有保证,软件过程有产品质量有保证,软件过程有纪律,有必要的支持性基础设纪律,有必要的支持性基础设施。施。 问题判断无基础,难预料;进问题判断无基础,难预料;进度滞后时,常减少或
110、取消评审、度滞后时,常减少或取消评审、测试等保证质量的活动。测试等保证质量的活动。 质量管理质量管理有历史数据和客观依据,比较有历史数据和客观依据,比较准确。准确。 无实际根据,硬件限定时,常无实际根据,硬件限定时,常在质量上作让步。在质量上作让步。 进度、经进度、经费估计费估计主动式,监控产品质量和顾客主动式,监控产品质量和顾客满意程度。满意程度。 反应式(消防式)反应式(消防式)管理方式管理方式有统一标准,且切实可行,并有统一标准,且切实可行,并不断改进;通过培训,全员理不断改进;通过培训,全员理解,各司其职,纪律严明。解,各司其职,纪律严明。 临时拼凑、不能贯彻临时拼凑、不能贯彻软件过程
111、软件过程成熟的软件组织成熟的软件组织 不成熟的软件组织不成熟的软件组织 比较项目比较项目 CMMCMM的基本概念的基本概念软件过程能力软件过程能力描述开发组织或项目组遵循其软件过程能够实现预期描述开发组织或项目组遵循其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。对一个软件项目而言。软件过程成熟度软件过程成熟度一个特定软件过程被明确且有效地定义、管理、测量一个特定软件过程被明确且有效地定义、管理、测量和控制的程度。和控制的程度。软件能力成熟度等级软件能力成熟度等级软件开发组织在走向成熟的途中几个具有明确定义的
112、软件开发组织在走向成熟的途中几个具有明确定义的表示软件过程能力成熟度的平台。表示软件过程能力成熟度的平台。n由于软件危机等问题是由我们管理软件过程的方由于软件危机等问题是由我们管理软件过程的方法不当引起的,所以法不当引起的,所以新软件技术新软件技术的应用的应用并不会并不会自自动提高软件的动提高软件的生产率生产率和和质量质量。n能力成熟度模型有助于软件开发机构能力成熟度模型有助于软件开发机构建立建立一个有一个有规律的、成熟的软件过程。改进的软件过程将开规律的、成熟的软件过程。改进的软件过程将开发出质量更好的软件,使更多的软件项目免受时发出质量更好的软件,使更多的软件项目免受时间和经费超支之苦。间
113、和经费超支之苦。CMM基本思想基本思想CMMCMM把软件过程从无序到有序的进化分成把软件过程从无序到有序的进化分成5 5个个阶段,排序而形成阶段,排序而形成5 5个逐层提高的等级。个逐层提高的等级。用以测量软件机构的软件过程成熟度和评价用以测量软件机构的软件过程成熟度和评价其软件过程能力。其软件过程能力。1 初始级初始级2 可重复级可重复级5 优化级优化级3 已定义级已定义级4 已管理级已管理级CMMCMM模型概要模型概要 软软件件过过程程是是无无序序的的,有有时时甚甚至至是是混混乱乱的的,对对软软件件过过程程几几乎乎没没有有定定义义,成成功功取取决决于于个个人人努努力力。管管理理是反应式是反
114、应式( (消防式消防式) )。 软软件件机机构构基基本本没没有有健健全全的的工工程程管管理理制制度度,软软件件过过程程完完全全取取决决于于项项目目组组的的人人员员配配备备,具具有有不不可可预预测测性,人员变了过程随之改变。性,人员变了过程随之改变。 处处于于1 1级级成成熟熟度度的的软软件件机机构构,其其过过程程能能力力不不可可预预测测,软软件件过过程程是是不不稳稳定定的的,产产品品质质量量是是根根据据相相关关人人员员的的个个人人工工作作能能力力而而不不是是软软件件机机构构的的过过程程能能力力来来预测。预测。1 1 初始级初始级 建立了基本的项目管理过程建立了基本的项目管理过程( (过程模型过
115、程模型) )来跟踪成来跟踪成本、进度和质量特性。制定了必要的过程规范,能重本、进度和质量特性。制定了必要的过程规范,能重复早先类似应用项目的实践经验成功完成新项目。复早先类似应用项目的实践经验成功完成新项目。达达到到2 2级的目标是使项目管理过程稳定,从而使得软件级的目标是使项目管理过程稳定,从而使得软件机构能重复以前在成功项目中所进行过的软件项目工机构能重复以前在成功项目中所进行过的软件项目工程实践。程实践。 处于处于2 2级的软件机构,其软件项目的策略和跟踪级的软件机构,其软件项目的策略和跟踪是稳定的,已经为一个有纪律的管理过程提供了可重是稳定的,已经为一个有纪律的管理过程提供了可重复以前
116、成功实践的项目环境。复以前成功实践的项目环境。2 2 可重复级可重复级 已已经经定定义义了了完完整整的的软软件件过过程程,软软件件过过程程已已文文档档化化、标标准准化化。所所有有项项目目均均使使用用经经批批准准的的、文文档档化化的的标标准准软软件件过过程程来开发和维护软件。包含来开发和维护软件。包含2 2级的全部特征。级的全部特征。 在在第第3 3级级成成熟熟度度的的软软件件机机构构中中,有有一一个个固固定定的的过过程程小小组组从从事事软软件件过过程程工工程程活活动动。过过程程小小组组可可以以利利用用过过程程模模型型进进行行过过程程例例化化活活动动,还还可可以以推推进进软软件件机机构构的的过过
117、程程改改进进活活动动。实实施施了了培培训训计计划划,保保证证全全体体项项目目负负责责人人和和开开发发人人员员具具有有完完成承担的任务所要求的知识和技能。成承担的任务所要求的知识和技能。 处处于于3 3级级的的软软件件机机构构,无无论论管管理理活活动动和和工工程程活活动动都都是是稳稳定定的的。成成本本、进进度度和和质质量量都都受受到到控控制制,且且软软件件质质量量具具有有可追溯性。可追溯性。3 3 已定义级已定义级 所有项目的重要过程活动都是可度量的。软所有项目的重要过程活动都是可度量的。软件机构收集了过程度量和产品质量的方法并加以件机构收集了过程度量和产品质量的方法并加以运用,对软件过程和产品
118、都有定量的理解与控制。运用,对软件过程和产品都有定量的理解与控制。包含包含3 3级的全部特征。级的全部特征。 处于处于4 4级成熟度的软件机构,软件过程是可度级成熟度的软件机构,软件过程是可度量的,软件过程在可度量的范围内运行。量的,软件过程在可度量的范围内运行。 这一级的过程能力允许软件机构在定量的范这一级的过程能力允许软件机构在定量的范围内预测过程和产品质量趋势,在发生偏离时可围内预测过程和产品质量趋势,在发生偏离时可以及时采取措施予以纠正。以及时采取措施予以纠正。4 4 已定量管理级已定量管理级过过程程的的量量化化反反馈馈和和先先进进的的新新思思想想、新新技技术术促促进进软软件件过过程程
119、不不断断改改进进。软软件件机机构构是是一一个个以以防防止止出出现现缺缺陷陷为为目目标标的的机机构构,它它有有能能力力识识别别出出软软件件过过程程要要素素的的薄薄弱弱环环节,并有足够的手段改进它们。包含节,并有足够的手段改进它们。包含4 4级的全部特征。级的全部特征。通通过过对对过过程程实实例例性性能能的的分分析析,确确定定产产生生某某缺缺陷陷的的原原因因,来来防防止止出出现现这这种种类类型型的的缺缺陷陷;通通过过对对任任何何过过程程实实例例的的分分析析所所获获得得的的经经验验教教训训都都可可以以成成为为该该软软件件机机构构优优化化其其过过程程模模型型的的有有效效依依据据,从从而而使使其其他他项
120、项目目的的过过程程实例得到优化。实例得到优化。5 5 优化级优化级CMM概述概述这这5个成熟度等级定义了一个有序的尺度,用以个成熟度等级定义了一个有序的尺度,用以测量软件机构过程能力成熟度和评价其软件过程测量软件机构过程能力成熟度和评价其软件过程能力。这些等级还能够帮助软件机构把应做的改能力。这些等级还能够帮助软件机构把应做的改进工作排出优先顺序。进工作排出优先顺序。CMM对对5个成熟度级别的描述,说明了不同级个成熟度级别的描述,说明了不同级别之间软件过程的主要变化。从别之间软件过程的主要变化。从1级到级到5级,反映级,反映了一个软件机构为了达到从一个无序、混乱的软了一个软件机构为了达到从一个
121、无序、混乱的软件过程进化到一个有序、有纪律且成熟的软件过件过程进化到一个有序、有纪律且成熟的软件过程的目标,必须经历的过程改进的途径。程的目标,必须经历的过程改进的途径。统计数字表明,提高一个完整的成熟统计数字表明,提高一个完整的成熟度等级大约需要花度等级大约需要花18个月到个月到3年时间,年时间,但从第但从第1级上升到第级上升到第2级有时要花级有时要花3年甚年甚至至5年时间。这说明要向一个处于混乱年时间。这说明要向一个处于混乱和被动的行动方式的软件机构灌输系和被动的行动方式的软件机构灌输系统化方法是困难的。统化方法是困难的。CMM概述概述软件过程评估软件过程评估:目的是确定一个组织的当前软:
122、目的是确定一个组织的当前软件过程的状态,找出组织所面临的急需解决的件过程的状态,找出组织所面临的急需解决的与软件过程有关问题,进而有步骤地实施软件与软件过程有关问题,进而有步骤地实施软件过程改进,使组织的软件过程能力不断提高。过程改进,使组织的软件过程能力不断提高。 软件能力评价软件能力评价:目的是识别合格的能完成软件:目的是识别合格的能完成软件工程项目的承制方,或者监控承制方现有软件工程项目的承制方,或者监控承制方现有软件工作中软件过程的状态,进而提出承制方应改工作中软件过程的状态,进而提出承制方应改进之处。进之处。 CMM应用应用9、静夜四无邻,荒居旧业贫。2024/7/202024/7/
123、20Saturday, July 20, 202410、雨中黄叶树,灯下白头人。2024/7/202024/7/202024/7/207/20/2024 3:03:43 AM11、以我独沈久,愧君相见频。2024/7/202024/7/202024/7/20Jul-2420-Jul-2412、故人江海别,几度隔山川。2024/7/202024/7/202024/7/20Saturday, July 20, 202413、乍见翻疑梦,相悲各问年。2024/7/202024/7/202024/7/202024/7/207/20/202414、他乡生白发,旧国见青山。20 七月 20242024/7
124、/202024/7/202024/7/2015、比不了得就不比,得不到的就不要。七月 242024/7/202024/7/202024/7/207/20/202416、行动出成果,工作出财富。2024/7/202024/7/2020 July 202417、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。2024/7/202024/7/202024/7/202024/7/209、没有失败,只有暂时停止成功!。2024/7/202024/7/20Saturday, July 20, 202410、很多事情努力了未必有结果,但是不努力却什么改变也没有。2024/7/202024/
125、7/202024/7/207/20/2024 3:03:43 AM11、成功就是日复一日那一点点小小努力的积累。2024/7/202024/7/202024/7/20Jul-2420-Jul-2412、世间成事,不求其绝对圆满,留一份不足,可得无限完美。2024/7/202024/7/202024/7/20Saturday, July 20, 202413、不知香积寺,数里入云峰。2024/7/202024/7/202024/7/202024/7/207/20/202414、意志坚强的人能把世界放在手中像泥块一样任意揉捏。20 七月 20242024/7/202024/7/202024/7/2
126、015、楚塞三湘接,荆门九派通。七月 242024/7/202024/7/202024/7/207/20/202416、少年十五二十时,步行夺得胡马骑。2024/7/202024/7/2020 July 202417、空山新雨后,天气晚来秋。2024/7/202024/7/202024/7/202024/7/209、杨柳散和风,青山澹吾虑。2024/7/202024/7/20Saturday, July 20, 202410、阅读一切好书如同和过去最杰出的人谈话。2024/7/202024/7/202024/7/207/20/2024 3:03:43 AM11、越是没有本领的就越加自命不凡。2
127、024/7/202024/7/202024/7/20Jul-2420-Jul-2412、越是无能的人,越喜欢挑剔别人的错儿。2024/7/202024/7/202024/7/20Saturday, July 20, 202413、知人者智,自知者明。胜人者有力,自胜者强。2024/7/202024/7/202024/7/202024/7/207/20/202414、意志坚强的人能把世界放在手中像泥块一样任意揉捏。20 七月 20242024/7/202024/7/202024/7/2015、最具挑战性的挑战莫过于提升自我。七月 242024/7/202024/7/202024/7/207/20
128、/202416、业余生活要有意义,不要越轨。2024/7/202024/7/2020 July 202417、一个人即使已登上顶峰,也仍要自强不息。2024/7/202024/7/202024/7/202024/7/20MOMODA POWERPOINTLorem ipsum dolor sit, eleifend nulla ac, fringilla purus. Nulla iaculis tempor felis amet, consectetur adipiscing elit. Fusce id urna blanditut cursus. 感感谢谢您您的的下下载载观观看看专家告诉