《第十三章 管理技术.ppt》由会员分享,可在线阅读,更多相关《第十三章 管理技术.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十三章第十三章管理技术管理技术13.1管理的目的与内容一、目的方法、工具和管理(过程)是软件工程的三要素。大型软件开发,需要一定的人力、物力、财力、时间、技术、工具.为使软件项目按照预定的成本、进度、质量顺利完成,需要对成本、人员、进度、质量、风险等进行分析与管理.由于软件产品是逻辑的,而不是物理的,软件项目的施工是开发小组集体的智力劳动,使用的开发工具是建立在计算机系统上的软件。因此,软件项目管理不仅有它的特殊性,也有一定的困难.山西大学计算机与信息技术学院山西大学计算机与信息技术学院软件工程软件工程主讲人主讲人:李桂成李桂成 二、内容 就其内容而言,有四个部分 1、成本管理(费用管理)目
2、的:对软件开发进行成本核算,使软件生产按照商品生产的经济规律办事.任务:.以简单实用和科学的方法估算出软件的开发费用,作为签订开发合同的根据.管理开发费用的有效使用,用经济手段来保证,产品如期按质完成.2、质量管理 目的:保证软件产品,包括最终程序和文挡的质量.任务:.制定软件质量保证计划.按照软件质量评价体系控制软件质量要素.对阶段性的软件产品进行评审。.对最终产品进行验证和确认(确保软件产品的质量)3、配置管理目的:通过对于程序、文挡和数据的各种版本所进行的管理,保证资料的完整性.任务:.确认软件配置中的各种对象(成份).管理软件的各种版本.建立系统.控制对软件的修改.审计配置.报告配置状
3、况.4、项目管理目的:以合理的费用和进度,圆满完成计划所规定的软件项目.任务:.制定项目实施计划.对人员进行组织、分工.按照计划的进度及要求进行软件开 发,最终完成各项任务.13.2 成本管理(估计)成本估算成本估算 由于软件是逻辑产品,成本估算涉及人、技术、环境、政策等多种因素。因此,在项目完成之前,很难精确地估算出项目的开销.常用的估算方法有四种:参照已完成的类似项目,估算待开发项目的成本和工作量.将大的项目分解成若干个小的子项目,在估算出每个子项目成本和工作量之后,再估算整个项目.将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,并汇总、估算出整个项目的工
4、作量和成本.根据实验或历史数据给出软件项目工作量或成本的经验估算公式.一、经验估算模型之一CoCoMo模型 1981年Boehm在他的名著软件工程经济学一书中,详细介绍了他提出的“构造成本模型”(Constructive Cost Model)简称CoCoMO模型。在这种模型中,软件开发工作量表示成如下形式:例:假定要在微处理器上开发一个嵌入式的电信处理程序,程序规模为10000行,试计算所需的工作量与开发时间。二、经验优先模型之二putnam模型 1978年,putnam提出了大型软件项目工作量(30人年)估算模型,它是一个动态多变量模型,适用于软件开发的各个阶段,相应的方程为:三、标准值模
5、型(专家测定技术)成本效益分析度量效益的几种方法:货币的时间价值投资回收期纯收入投资回收率 13.3 质量管理一、软件质量 软件质量是软件的生命,它直接影响软件的使用和维护,由于开发者、管理者、维护者和用户在软件的开发维护和使用中所处的地位不同,他们对软件质量的理解和要求也不同,如:用户关心软件的性能和可靠性,维护人员关心软件正确性、可理解性和可修改性,管理者关心开发标准、经费、时间、功能等.因此,应该对软件质量给出一个客观、科学的定义并尽量予以量化。1983年ANSI/IEEEEstd729给出的软件质量的定义:软件产品满足规定的和隐含的与需求能力有关的全部特征和特性,包括:1软件产品质量满
6、足用户要求的程度;2软件各种属性的组合程度;3用户对软件产品的综合反映程度;4软件在使用过程中满足组用户要求的程度.二、软件质量要素 三、质量保证 1审查 审查就是在软件生命周期每个阶段结束之前,都正式使用结束标准对该阶段生产出的软件配置成分进行严格的技术审查.审查过程可能有6个步骤:(1)计划:组织审查组,分发材料,安排日程等 (2)概貌介绍:当项目复杂时,可考虑由作者介绍概貌 (3)准备:评审员阅读材料取得有关项目的知识 (4)评审会:目的是发现和记录错误,通常每次会议不超过90分钟 (5)返工:作者修正已经发现的问题 (6)复审:判断返工十分真正解决了问题 一一般般说说来来,至至少少在在
7、生生命命周周期期每每个个阶阶段段结结束束之之前前,应应该该进进行行一次正式的审查一次正式的审查,某些阶段可能需要进行多次审查某些阶段可能需要进行多次审查.开发阶段与响应的检验项目开发阶段与响应的检验项目2.复查和管理复审复查即时检查已有的材料,以断定特定阶段的工作是否能够开始或继续,每个阶段开始时的复查,是为了肯定前一个阶段结束时确实进行了认真的复审,已经具备了开始当前阶段工作所必需的材料.管理复审通常指向开发组织或使用部门的管理人员,提供有关项目的总体状况,成本和进度等方面的情况,以便他们从管理角度对开发工作进行审查.13.4 配置管理软 件 配 置 管 理(Software Configu
8、ration Management)SCM是对软件修改进行确认、组织和控制的技术,用来协调和控制整个系统过程,其目的是为了减少混乱,提高软件生产率.软件配置-是一个软件在生存周期内,它的各种形式,各种版本的文档与程序的总和.基线各个阶段产品的复审时间均称为基线.基线之前更改自由,基线之后严格管理.中心思想:在软件开发的进程中,开发者有权对本阶段的阶段产品进行更改,但一旦阶段产品通过了复审,就应该将它交给配置管理人员去控制,任何人(包括编制这一文档的人员)需要对它更改时,都要经过正式的批准手续.一、软件配置项(SCI)软件配置管理的对象1.系统规格说明;2.软件项目规划;3.需求分析结果;4.初
9、步用户手册;5.设计规格说明书;6.源代码清单;7.测试规格说明书;8.操作和安装手册;9.可执行程序;10.数据库描述;11.联机用户手册;12.维护文档;13.软件工程的标准;14.软件工具.二、基线技术基线(baseline)标志软件开发过程中的各个里程碑,任何一个软件配置项SCI如设计说明书,一旦形成文档并复审通过,而成为一个基线,它标志开发过程中一个阶段的结束.在软件开发过程中,由于各种原因,可能需要变动需求、预算、进度和实际方案,尽管这些变动请求中绝大部分是合理的,但在不同的时机作出不同的变动,难易程度和造成的影响差别甚大,软件配置管理中引入基线概念后,可以有效的控制变动,对于它成
10、为基线的SCI,虽然可以修改,但必须按照一个特殊的、正式的过程进行评估,确认每一处修改。相反,对于未成为基线的SCI,可以进行非正式修改.三、软件配置管理任务1.确认配置对象基本对象:如每个模块的源代码,一套测试用例等复合对象:由若干基本对象组成,每个对象有名字、描述、资源列表和实际存在体.2.版本控制要解决以下问题1.根据不同的用户需求要配置不同的系统2.保存系统老版本,为以后调查问题使用3.建立一个系统新版本,使它包含某些决策而抛弃另一些4.高效存储项目的多个版本5.支持两位以上工程师同时在一个项目中工作3.系统建立(考虑以下问题)1.建立系统时使用了哪些源代码和编译程序选件2.某个项目修
11、改后,系统哪些部分需要重新编译3.建立系统时是否有编译或警告错误4.建立系统的正确步骤5.安装使用一个新编译程序有什么影响4.修改控制(变更控制)软件生存期内的全部软件配置是软件产品的真正代表,必须使其保持精确.软件工程过程中任意阶段的变更,均要引起软件配置的变更,这种变更必须严格加以控制和管理,保持修改信息,并把精确、清晰的信息传递到软件工程过程的后续步骤.把人的努力与自动工具合起来,建立一套机制,有意识地控制修改.5.配置审计软件的完整性,是指软件开发后期的产品能够满足用户所提出的对软件的要求.软件配置审核的目的就是要证实整个软件生存期中各项产品在技术上和管理上的完整性.同时还要确保所有文
12、档的内容变动不超出当初确定的软件要求范围,使得软件配置具有良好的可跟踪性.这是软件变更控制人员掌握配置情况、进行审批的依据.软件配置审核提出并解释以下问题:1.ECO(工程变动命令)中指定的修改是否都已完成?还另加了哪些修改?2.是否做过正式技术复审?3.是否严格遵守软件工程标准4.修改过的SCI(软件配置项)是否做了特殊标记?(日期、人员等)5.是否完成了与本次修改有关的注释、记录和报告等事宜6.所有相关的SCI是否一并修改?6.配置状况报告(ConfigurationStatusReportingCSR)为了清楚及时的记载软件配置的变化,不至于到后期贻误,需要对开发的过程做系统的记录,以反
13、映开发活动的历史情况.这就是配置状态登录的任务.登录主要根据变更控制小组会议的记录,产生配置状态报告.报告对于每项变更,记录以下问题:1.发生了什么事情?2.谁做的?3.何时发生的?4.有什么影响?13.5项目管理项目管理一一.风险分析风险分析1.风险标识(项目风险风险标识(项目风险技术风险技术风险商业风险)与估算商业风险)与估算风风险险分分析析实实际际上上是是4个个不不同同的的活活动动,即即风风险险识识别别、风风险险估估计计、风风险评价和风险驾驭险评价和风险驾驭风风险险识识别别就就是是要要系系统统的的确确定定对对息息怒怒计计划划(估估算算、进进度度、资资源源分分配配)的的威威胁胁,通通过过识
14、识别别已已知知的的或或可可预预测测的的风风险险,就就能能设设法法避避开开风风险险或或驾驾驭驭风风险险。用用不不同同的的方方法法对对风风险险进进行行分分类类是是可可能能的的。风风险险可可分为项目风险、技术风险、商业风险。分为项目风险、技术风险、商业风险。项项目目风风险险由由于于项项目目在在预预算算、进进度度、人人力力、资资源源、顾顾客客和和需需求求等等方面的原因对软方面的原因对软件项目产生的不良影响。件项目产生的不良影响。技技术术风风险险软软件件在在设设计计、实实现现、接接口口、验验证证和和维维护护过过程程中中可可能能发发生的潜在问题对软件项目带来的危害。生的潜在问题对软件项目带来的危害。商商业
15、业风风险险开开发发了了一一个个没没人人需需要要的的优优质质软软件件或或推推销销部部门门不不知知如如何何销售这一软件产品或开发的产品不符合公司的产品销售销售这一软件产品或开发的产品不符合公司的产品销售.附:人员配备风险检测表1)开发人员的水平如何2)开发人员在技术上是否配套3)开发人员的数量如何4)开发人员是否能够自始至终地参加软件开发工作5)开发人员是否能够集中全部精力投入软件开发工作6)开发人员对自己的工作是否有正确的期望7)开发人员是否接受过必要的培训8)开发人员的流动是否能够保证工作人员的连续性用0,1,2,3,4,55个等级回答,完全肯定取0,反之取5,中间情况取1,2,3,4值越大风
16、险越大.2.风险评价和管理1)项目开发前应控制产生风险的原因,在项目开工后应想法设法减轻风险的影响。2)了解导致项目开发人员变动的原因,在项目开发期间应控制上述原因,尽量减少人员的流动。3)在工作方法和技术上应采取适当措施防止因人员流动给工作带来损失。4)项目在开发过程中应及时分布并交流项目开发的信息。5)建立组织机构,确定文档标准,并及时生成文档。6)经常对工作进行集体复审,使多数人都能了解工作的细节,跟上工作进度。7)为关键技术准备后备人员。二进度安排软件项目的进度安排与任何一个多任务工作的进度安排差不多,因此,只要稍加修改,就可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。软
17、件项目的进度计划和工作的实际进展情况也需要采用图示的方法描述,特别是对各项任务之间进度的相互依赖关系。这里介绍几种有效的图示方法。在这几种图示方法中,有几个信息必须明确标明:各个任务的计划开始时间、完成时间 各个任务完成的标志(即文档编写和评审)各个任务参与的人数,各个任务与工作量之间的衔接情况 完成各个任务的物理资源和数据资源1.Gantt图(横道图)Gantt图有三个主要缺点:(1)不能显式地描绘各项作业彼此间的依赖关系;(2)进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象;(3)计划中有潜力的部分及潜力的大小不准确,往往造成潜力的浪费.2计划评审技术(Program E
18、valuationandReviewTechnique)也称工程网络技术1)建立PERT图2)找出关键路径3)标出最迟开始时间4)说明确保关键路径上的各项活动按时完成,因为在该路径上的任何活动如有延期,整个项目将随之延期。通过缩短关键路径上的某些活动的时间,达到缩短项目的开发时间的目的。三三.人员组织(开发时间宁可长些,开发人员宁可少些人员组织(开发时间宁可长些,开发人员宁可少些)软件项目的开发实践表明,软件开发各个阶段所需要的技术人员类型、层次和数量是不同的.软件项目的计划与分析阶段只需要少数人,主要是系统分析员、从事软件系统论证和概要设计的软件高级工程师和项目高级管理员.概要设计时要增加一
19、部分高级程序员,软件测试员.在此过程中软件开发管理人员和各类专门人员也逐渐增加,到测试阶段结束时,软件开发人员的数量达到顶峰.软件运行初期,参加软件维护的人员也比较多,过早解散软件开发人员会给软件维护带来意想不到的困难.软件运行一段时间之后,由于软件开发人员参与纠正性维护,软件出错率会很快衰减,这时软件开发人员也就可以逐步撤出.如果系统不做适应性或完善性维护,需要留守的人员就不多了向一个已经延期的软件项目追加开发人员,可能使项目完成的更晚.软件开发组织的管理机构计划与分析:少数人系统分析员高级工程师高级管理员概要:增加一部分高级程序员详细:增加软件工程师和程序员编码测试:还要增加程序员,软件测
20、试员,管理人员及各类人员测试末期:人数达到顶峰运行初期:维护人员较多运行后期:维护人员减少如何合理的配备人员,也是成功地完成软件项目的切实保证.所谓合理地配备人员是指,按不同阶段适时任用人员,恰当掌握用人标准.项目开发挨各阶段所需人员一个软件项目完成的快慢,取决于参与开发人员的多少.在开发的整个过程中,多数软件项目是以恒定人力配备的.配备人员的原则配备软件人员时,应注意以下3个原则:a)重质量b)重培训c)双阶梯提升 对项目经理人员的要求软件经理人员是工作的组织者,他的管理能力的强弱是项目成败的关键.除去一般的管理要求外,他应具有以下能力:a)把用户提出的非技术性的要求加以整理提炼,以技术说明
21、书的形式转告给分析员和测试员b)能说服用户放弃一些不切实际的要求,以保证合理的要求得以满足c)能够把表面上似乎无关的要求集中在一起,归结为”需要什么”,”要解决什么问题”.这是一种综合问题的能力d)要懂得心理学,能说服上级领导和用户,让他们理解什么是不合理的要求.但又要使他们毫不勉强,乐于接受,并受到启发.评价人员的条件软件项目中人的因素越来越受到重视.在评价和任用软件人员时,必须掌握一定的标准.人员素质的优劣常常影响到项目的成败.能否达到以下这些条件是不应忽视的.a)牢固掌握计算机软件的基础知识和技能;b)善于分析和综合问题,具有严密的逻辑思维能力;c)工作踏实、细致,不靠碰运气,遵循标准和
22、规范,具有严格的科学作风;d)工作中表现出有耐心、有毅力、有责任心;e)善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系;f)具有良好的书面和口头表达能力.指导与检验指导与检验指导的目的是在软件项目的过程中,动员和促进工作人员积极完成所分配的任务.实际上,指导也属于人员管理的范围,是组织好软件项目不可缺少的工作.四四项目计划项目计划1.内容1概述一般性地叙述开发项目,描述计划组织,并且概述这个文档其余部分的内容.2计划讨论项目开发周期-需求分析阶段,总体设计阶段,详细设计阶段等等.详细说明每个阶段应该完成的日期,并且指出不同阶段可以互相重叠的时间等等.3组织计划规定从事这个开发项
23、目的每个小组的具体责任.4测试计划概述应进行的测试和需要的工具,以及完成系统测试的过程和分工.在这一节中并不包括具体的测试方案.5变动控制计划确定在系统开发过程中需求变动的管理控制机制.6文档计划这一节的目的是定义和管理与项目有关的文档.7培训计划培训从事开发工作的程序员和使用系统的用户的计划.8复审和报告计划讨论如何报告项目的状况,并且确定对项目进展情况进行正式复审的计划.9安装和运行计划描述在用户现场安装该系统的过程.10资源和配置计划概述关键的细节计划-进度里程碑和按合同规定应交付的系统配置成分.11索引上述项目计划内容大部分已经在前面的章节中详细讨论过,本节只讨论项目报告和变动控制两个
24、问题.2.报告3.变动控制五1.软件过程软件过程是软件生存期中的一系列相关软件工程活动的集合.每个软件过程是由一组工作任务、项目里程碑、软件工程产品和交付物、质 量 保 证(SQA,SoftwareQualitiyAssurance)点等组成.软件过程的改进1983年美国TRW公司BWBoehm提出著名的软件工程7条原则:(如下)1)按软件生存期分阶段指定计划并认真实施;2)逐个阶段进行确认;3)坚持严格的产品控制;4)适用现代程序设计技术;5)明确责任;6)用人少而精;7)不断改进开发过程.软软件件过过程程需要不断完善,首先,从非工程化的软件开发方式转变为工程化的软件开发方式,按照软件工程的
25、系统方法,进行软件的工程活动和管理活动,进而不断完善各个软件过程,不断提高软件过程能力,随着这种能力的提高,一个软件机构完成软件产品时,在预算进度,特别是产品质量方面的风险不断降低,因此,软件过程能力的提高需要首先对当前的软件过程状况进行评估。1)过程分析2)确定改进3)过程变更4)培训5)调整过程变更2.软件过程能力评估的软件过程能力评估的CMM模型模型1)软件机构的过度成熟度软件开发的风险之所以大,是由于软件过程能力低.其中最关键的问题在于,软件开发机构不能很好的管理其软件过程,从而使得一些好的开发方法和技术起不到预期的作用.对于不同的软件开发机构,在组织人员完成软件项目时所依据的管理策略
26、有很大的差别,因而软件项目所遵循的软件过程也不同.在此,用软件机构的成熟度加以区别.在各个软件机构的过程成熟度有着相当大的差别的情况下,为了作出客观、公正的比较,需要建立一种衡量的标尺.使用这个标尺可以评价软件承包机构的质量保证能力,在软件项目评标活动中,选择中标机构.另一方面,这一标尺也必然成为软件机构改进软件质量,加强质量管理以及提高软件产品质量的依据.2)软软 件件 机机 构构 的的 能能 力力 成成 熟熟 度度 模模 型型CMM(CapabilityMaturityModel)CMM将软件过程的成熟度分为5个等级 各个等级的软件机构的特征各个等级的软件机构的特征补充:软件体系结构软件体系结构的三要素是程序构件(模块)的层次结构、构件之间交互的方式,以及数据的结构.软件设计的一个目标是建立软件的体系结构表示.(1)结构(2)附属的功能(3)可复用 软件构件分类软件构件分类构件之间的连接方式构件之间的连接方式山西大学计算机与信息技术学院山西大学计算机与信息技术学院软件工程软件工程第十三章结束第十三章结束