软件项目管理复习提纲软件项目管理评审大纲本文简介;软件项目管理复习提纲前言1、软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在软件工程领域的应用。2、软件项目的抽象性决定了软件项目管理的难度要大于一般的工程项目管理。3、软件项目需求管理、项目估算与进度管理、项目配置管理、项目风险管理、项目质量管理、项目资源管理等六个方面对软件项软件项目管理复习提纲本文内容:软件项目管理复习提纲前言1、软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在软件工程领域的应用。2、软件项目的抽象性决定了软件项目管理的难度要大于一般的工程项目管理。3、软件项目需求管理、项目估算与进度管理、项目配置管理、项目风险管理、项目质量管理、项目资源管理等六个方面对软件项目中的管理问题进行了探讨。?第一章???导论1、软件工程的概念:一类求解软件的工程。???应用计算机科学、数学以及管理科学等原理、借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的,使计算机设备的能力借助于软件成为对人类有用的东西。其中,计算机科学、数学用于构造模型和算法,工程科学用于制定规范、设计模式、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程框架:软件工程——目标:可用性、正确性、合算性活动:问题定义、可行性分析、需求分析、设计、实现、确认、支持原则:开发范型、设计方法、支持过程、管理过程2、项目管理项目是指在一定约束条件下具有特定目标的一项一次性任务。这里所说的?一次性,又称为单件性,指这次任务完成之后,不会再有与此完全相同的另一任务。?目标,即项目的目标有成果性目标和约束性目标。成果性目标——项目的功能性要求,约束性目标——资源消耗、时间要求、质量规定等限制条件。?作为管理对象的整体性,即一个项目是一个整体管理对象。项目的生命周期:项目从开始到结束,一般都要经历启动、计划、实施、结束几个阶段,称之为项目的生命周期????启动阶段要进行可行性分析,以便确定是否接受项目。????计划阶段建立解决需求或问题的方案,向客户提交各种计划书。????实施阶段就是执行计划阶段提出的解决方案,在各种因素的制约下,实现项目的目标。????项目的结束阶段就是正式验收项目,使得项目圆满完成。项目管理的定义:在一个确定的时间范围内,为了完成一个既定的目标,通过特殊形式的临时性组织运行机制,经有效的计划、组织、领导和控制,充分利用既定有限资源的一种系统管理方法。项目管理具有如下特点:(1)综合性;(2)创造性;(3)时间性关于创造性:由于项目具有一次性的特点,因而既要承担风险又必须发挥创造性。这也是与一般重复性管理的主要区别。关于时间性:项目具有寿命周期,项目管理的本质是计划和控制一次性的工作,在规定期限内达到预定目标。对每个阶段开始和完成的条件与时间要有明确的定义,以便于审查其完成程度。项目管理的要素:项目目标的实现主要由六个因素制约,分别为范围、时间、成本、质量、组织及客户满意度,称为项目管理的六要素3、软件项目管理:软件项目产品的特点:1.抽象性;?2.缺陷检测的困难性;3.高度的复杂性;4.缺乏统一规则软件项目失控的原因诸如:(1)需求不明确;(2)不充分的计划和过于乐观的评估;(3)采用新技术;(4)管理方法缺乏或不恰当;(5)性能问题;(6)团队组织不当;(7)人际因素软件项目管理的定义:在软件项目活动中运用一系列知识、技能、工具和技术,以满足软件需求方的整体要求。软件项目管理的内容:软件项目需求管理;软件项目估算与进度管理;软件项目配置管理;软件项目风险管理;软件项目质量管理;软件项目资源管理?第二章???软件项目需求管理软件需求的定义:(1)用户解决问题或达到目标所需的条件或能力。(2)系统或系统部件要满足合同、标准、规范或其他正式文档所需具有的条件或能力。(3)一种反映上面第一点或第二点所描述的条件或能力的文档说明。?????????软件需求在软件项目中的作用:软件需求在软件项目中占有重要地位,是软件设计和软件实现的基础。需求的改变将导致其后一系列过程的更改,因而软件需求与软件项目中其他过程有着密切关系?软件需求的抽象层次:从问题求解过程来看,软件需求可以分成四个抽象的层次:原始问题描述;用户需求;系统需求;软件设计描述?用户需求:从用户的角度描述系统的需求,以便没有专业技术背景的用户能看懂。它只描述系统的外部行为,尽量避免涉及系统内部的设计特性,通过自然语言、图表、图形等来叙述。?在编写用户需求文档的时候,应该遵守如下一些简单的原则:(1)标准的格式(2)使用一致的语言(3)使用特殊文本(4)尽量避免专业术语?系统需求:是比用户需求更为详细和专业的需求描述,是系统实现的依据。一个完整且一致的系统需求描述,是软件设计的起点。需求文档的编制与作用:软件需求分析和描述的最终目的是在用户和软件开发组织之间就将要开发的软件系统达成一致的协议,从而产生正式的需求文档,以便为软件设计和实现提供依据。软件需求文档包括用户需求和详细的系统需求描述,是对软件系统要求的正式陈述。软件需求质量度量的九个元素:正确性、无歧义性、完备性、一致性、分级性、可验证性、可修改性、可跟踪和可理解性。需求管理:需求管理的必要性:1.需求供求双方固有的矛盾:软件开发人员的思维贯穿了软件设计的全过程,同样也贯穿了需求过程,而普通人没有这方面的思维,因而他们都觉得和软件开发人员打交道极为困难。因此需求过程中,需求的供求双方经常会遇到双方不能达成共识或双方达成共识的内容其实有相当大的出入等情况。2.需求具有易变性和难以表述性:3.需求错误出现的高频性和修复的高昂成本需求变更管理:变更管理过程:原需求-变更描述→变更分析→变更实现-修正后的需求变更影响分析:进行需求变更影响分析,应评估每项选择的需求变更,以确定它对项目计划安排和其他需求的影响,同时明确与变更相关的任务并评估完成这些任务需要的工作量。变更影响分析通过对变更内容的检验及对变更建议的准确理解,有助于变更控制委员会做出信息量充分的变更决策,确定对变更是修改还是抛弃,或者创建新系统以及评估每个任务的工作量。需求跟踪的必要性:进行需求跟踪的目的是建立和维护从用户需求开始到测试之间的一致性与完整性,确保所有的实现都以用户需求为基础,而实现的需求也全部覆盖了预期的需求,同时确保所有的输出与用户需求的符合性需求跟踪的作用:(1)在需求验证中的作用(2)有助于需求变更影响分析(3)便于需求的维护(4)便于测试时找出问题所在?(5)便于项目跟踪(6)减小项目的风险?(7)简化了系统的再设计(8)易于软件重用需求管理质量保证:(1)需求验证【需求验证可按如下四个步骤进行:i审查需求文档ii依据需求编写测试用例?iii编写用户手册iv确定合格的标准】;(2)需求评审?第3章软件项目成本管理成本:生产一种产品所需的全部费用。软件项目成本大体包括以下4个方面:人力资源成本(软件项目有关人员的工资、福利、招聘和培训等的费用)软硬件资源成本(开发测试工具等的成本)商务活动成本(项目开发过程中的差旅、交通、通信及接待等的费用)其它成本(未在上述罗列的费用)软件项目估算:估算是指通过预测构造软件项目所需要的工作量的过程。软件项目估算包括工作量估算和成本估算两个方面,通常笼统的表示为成本估算。估算的意义:软件估算作为软件项目管理的一项重要内容,是确保软件项目成功的关键因素。软件项目工作量估算的失真,将导致软件成本上升,开发周期延长,从而使项目管理失效,开发者受损、使用者不能如期得到合约规定的产品,最终使项目失败。初步的估算用于确定软件项目的可行性,详细的估算用于指导项目计划的制定。软件规模:软件规模是软件工作量的主要影响因素。对软件规模的估计要从软件的分解开始。规模度量标准有两种:代码行LOC和功能点FP代码行(LOC):代码行是常用的源代码程序长度的度量标准。可以分为无注释的源代码行和注释的源代码行。功能点度量方法通过研究初始应用需求来确定各种输入、输出、查询、外部文件和内部文件的数目,从而确定功能点数量。软件生产率【LOC/PM(每个人月生产代码的数量)】:生产率数据的获取(1)选择一些最近完成的相似的项目;(2)获得各个项目的LOC数据;(3)对于更改过的程序,记录更改代码所占比例;(4)计算投入到每个项目上的人员数量;(5)计算各个项目的软件生产率,即LOC/PM(每个人月生产代码的数量)软件项目成本估算成本估算方法:成本估算是对完成软件项目所需费用的估计和计划。在软件项目管理过程中,为了使时间、费用和工作范围内的资源得到最佳利用,人们开发出了不少成本估算方法,以尽量得到较好的估算。算法模型:算法模型提供一个或多个数学算法,这些算法将软件成本估算值看成是主要成本驱动因素的若干变量的函数。常见的算法形式有线性模型、乘积模型、解析模型、表格模型、复合模型。线性模型:工作量=a0+a1x1+……+anxn式中,x1,……,xn是成本驱动因素变量,a0,……,an是一组经过选择的、能使本模型与一组观察数据点之间的拟合度最佳的系数。开发成本一般通过将工作量乘以某一恒定的劳动力成本而求出。虽然简单,但由于在软件开发中非线性相互作用太多,以至于线性模型效果并不好。乘积模型:工作量=a0a1x1……anxn式中,x1,……,xn是成本驱动因素变量,a0,……,an是一组经过选择的、能使本模型与一组观察数据点之间的拟合度最佳的系数。专家判定:专家判定就是与一位或多位专家商讨,专家根据自己的经验和对项目的理解对项目成本做出估算。类比:类比法就是把当前项目和以前作过的类似项目比较,通过比较获得其工作量的估算值;自顶向下:从软件项目的整体出发,即根据将要开发的软件项目的总体特性,结合以前完成项目积累的经验,推算出项目的总体成本或工作量,然后按比例分配到各个组成部分中去。自底向上:把待开发的软件逐步细化,直到能明确工作量值,然后把所有部分相加。成本估算步骤:(该过程表明软件成本估算工作本身也是一种小型项目,需要相应的规划、复审和事后跟踪。)Boehm提出的成本估算方法:(1)建立目标;(2)规划需要的数据和资源;(3)确定软件需求;(4)拟定可行的细节;(5)运用多种独立的技术和原始资料;(6)比较并迭代各个估算值;(7)随访跟踪?第四章软件项目进度管理制定项目计划:定义工作并确定完成工作的方式,对主要任务及需要的时间和资源进行估计,定义管理评审和控制的框架。正确的文档化计划与项目实际的结果进行对比,能够使计划人员发现估计的错误从而改进估计过程,提高估计的准确性。分阶段交付:(1)必要性:对于规模较大的软件项目,制定项目计划时,项目的交付最好采用按阶段交付的形式。(2)分阶段交付的过程:分阶段交付不会自发产生,它要求稳固的体系结构、精心的管理和详细的技术计划。这是对软件项目的一个明智投资,因为它能够消除一般项目的下述风险:逾期交付、集成失败、软件特征的逐渐增加及客户、经理与开发人员之间的摩擦。进度安排:(1)进度安排的整体过程:在确定了项目的资源(总成本及时间等)后,把其分配到各个项目开发阶段中,即确定项目的进度。这时候,软件组织在类似项目的历史经验数据很有借鉴价值。如果缺乏经验数据,则可以参考一些公开发表的数据。(2)进度中的并行性:一般软件项目经常是很多人同时参加工作,因而项目工作中就会出现并行的情形。进度安排的方法:进度是计划的时间表。软件项目的进度安排与任何一个多重任务工作的进度安排类似。为了清楚地表达各项任务之间进度的相互依赖关系,采用图示方法。常用的有(1)甘特图:甘特图(GanttChart),又称横道图,是各种任务活动与日历表的对照图。它用水平线段来表示任务的工作阶段,其中线段的长度表示完成任务所需要的时间,起点和终点分别表示任务的开始和结束时间。优缺点见P124;(2)网络图:用网络分析的方法编制的进度计划称为网络图,它是20世纪50年代末发展起来的一编制大型工程进度计划的有效方法。??第五章软件项目风险管理风险:定义