《项目管理概述》由会员分享,可在线阅读,更多相关《项目管理概述(82页珍藏版)》请在金锄头文库上搜索。
1、项目管理概述目管理概述一、项目管理的概念1、项目2、项目管理3、管理项目管理的目的极大地提高 效率保证工作结果的质量控制进度、成本提高工作执行力项目 项目是在限定的资源及限定的时间内需要完成的一次性任务。项目管理 项目管理运用管理知识、工具和技术于项目活动上,来达成解决项目的问题或达成项目的需求。管理 所谓管理,包含领导、组织、用人、计划、控制等五项主要内容。二、项目管理的技术和特性项目管理的主要技术l关键性途径法(CPM) 假设每项活动的作业时间是确定值,重点在于费用和成本控制l计划评审技术(PERT) 作业时间不确定,用概率的方法进行估算,不十分关心项目费用和成本,重点在于时间控制l甘特图
2、(Gantt chart) 完整的用条形图表示进度的标志系统CPM图示例PERT图示例甘特图示例 前两者有发展一致的趋势,常常被结合使用,以得到时间和费用的最佳控制。项目管理的特性l普遍性l目的性l独特性l集成性l创新性普遍性普遍性 项目作为一种一次性和独特性的社会活动而普遍存在于我们人类社会的各项活动之中,甚至可以说是人类现有的各种物质文化成果最初都是通过项目的方式实现的,因为现有各种运营所依靠的设施与条件最初都是靠项目活动建设或开发的。目的性目的性 项目管理的目的性要通过开展项目管理活动去保证满足或超越项目有关各方面明确提出的项目目标或指标和满足项目有关各方未明确规定的潜在需求和追求。独特
3、性独特性 项目管理的独特性是项目管理不同于一般的企业生产运营管理,也不同于常规的政府和独特的管理内容,是一种完全不同的管理活动。集成性集成性 项目管理的集成性是项目的管理中必须根据具体项目各要素或各专业之间的配置关系做好集成性的管理,而不能孤立地开展项目各个专业或专业的独立管理。创新性新性 项目管理的创新性包括两层含义:其一是指项目管理是对于创新(项目所包含的创新之处)的管理,其二是指任何一个项目的管理都没有一成不变的模式和方法,都需要通过管理创新去实现对于具体项目的有效管理。三、项目管理的九大领域1、项目的整体管理2、项目的范围管理3、项目的时间管理4、项目的成本管理5、项目的质量管理6、项
4、目的人力资源管理7、项目的风险管理8、项目的沟通管理9、项目的采购管理1、项目的整体管理 是指为确保项目各项工作能够有机地协调和配合所展开的综合性和全局性的项目管理工作和过程1.1制定项目章程1.2制定项目初步范围说明书1.3制定项目管理计划1.4指导与管理项目执行1.5监控项目工作1.6整体变更控制1.7项目收尾2、项目的范围管理 是为了实现项目的目标,对项目的工作内容进行控制的管理过程。2.1范围规划2.2范围定义2.3制定工作分解结构2.4范围核实2.5范围控制3、项目的时间管理 是为了确保项目最终的按时完成的一系列管理过程。3.1活动定义3.2活动排序3.3活动资源估算3.4活动持续时
5、间估计3.5制定进度表3.6进度控制4、项目的成本管理 是为了保证完成项目的实际成本、费用不超过预算成本、费用的管理过程。4.1费用估算4.2费用预算4.3费用控制5、项目的质量管理 是为了确保项目达到客户所规定的质量要求所实施的一系列管理过程。5.1质量规划5.2实施质量保证5.3实施质量控制6、项目的人力资源管理 是为了保证所有项目关系人的能力和积极性都得到最有效地发挥和利用所做的一系列管理措施。6.1人力资源规划6.2项目团队组建6.3项目团队建设6.4项目团队管理7、项目的沟通管理 是为了确保项目的信息的合理收集和传输所需要实施的一系列措施。7.1沟通规划7.2信息发布7.3绩效报告7
6、.4利害关系者管理8、项目的风险管理 是涉及项目可能遇到各种不确定因素。8.1风险管理规划8.2风险识别8.3定性风险分析8.4定量风险分析8.5风险应对规划8.6风险监控9、项目的采购管理 是为了从项目实施组织之外获得所需资源或服务所采取的一系列管理措施。9.1采购规划9.2发包规划9.3询价9.4卖方选择9.5合同管理9.6合同收尾四、项目管理的五个过程理解目标对总目标的概要分析,定义交付物对目标的沟通对难以实现的目标的处理启动定义项目的工作范围,编写工作范围说明分解项目工作,得到WBS以WBS为基础,为其工作包安全资源、时间估算项目成本整理人力资源信息辅助计划工作:质量计划、风险计划、沟
7、通计划、其他针对计划的沟通工作(领导、团队成员、配合部门、客户等项目干系人)计划短期计划执行,计划细化短期任务下达、工作具体标准和要求的明确、执行推动质量保证工作的展开团队建设风险应对措施的执行沟通:项目干系人执行短期工作结果的检查、核实问题的发现、分析、协调、解决。纠偏措施和预防措施的制定和执行阶段工作检查、交付物的验收、验证风险监控变更控制控制项目验收项目经验总结、项目数据总结项目成员释放、执性结项流程项目考评收尾五、软件项目管理概念有效的软件项目管理集中于4个P上: 人员(People) 产品(Product) 过程(Process) 产品(Project) 必须将人员组织成有效率的团队
8、,激励他们完成高质量的软件工作,并协调他们实现有效的沟通。 产品需求必须在客户与开发者之间进行交流,划分(分解)成各个组成部分,并分配给软件团队。 过程必须适合于人员和产品。选择通过过程框架,采用核实的软件工程范型,并挑选工作任务集合来完成项目的开发 必须采用确保软件团队能够成功的方式来组织项目人员 培养有创造力,高技术水平的软件人员 People-CMM中针对软件人员定义了以下关键实践域:人员配备、沟通与协调、工作环境、业绩管理、培训、报酬、能力素质分析与开发、个人事业发展、工作组发展、团队精神或企业文化培养等利益相关者 高级管理者 项目(技术)管理者 开发人员 客户 最终用户团队负责人 领
9、导能力的MOI模型: M:Motivation(激励) O:Organization(组织) I :Idears or Innovation(思想或创新) 四种关键品质: 解决问题 管理者的特性 成就 影响和队伍建设软件团队 规划软件工程团队结构时应考虑的七个项目因素: 待解决问题的难度 开发程序的规模,以代码行或者功能点来度量 团队成员需要共同工作的时间(团队生存期) 能够对问题做模块划分的程度 待开发系统的质量要求和可靠性要求 交付日期的严格程度 项目所需要的友好交流的程度软件工程团队的四种组织范型: 封闭式范型:传统权力层次组织团队,有效但难以创新 随机式范型:松散的组织团队,创新但是无
10、序 开放式范型:前两者的结合,效率偏低 同步式范型:依赖于问题的自然划分,缺乏主动交流敏捷团队 小型的充满活力的项目团队。 敏捷方法学提倡的是:通过尽早的逐步交付软件来使客户满意;组织小型的充满活力的项目团队;采用非正式的方法;交付最小的软件工程工作产品;以及总体开发简易性。产品l软件范围 项目环境 信息目标 功能和性能 l问题分解 必须交付的功能和内容 所使用的过程 过程 选择一个适合于待开发软件的过程模型过程选择取决于1、需要该产品的客户和从事开发工作的人员2、产品本身的特性3、软件团队所处的项目工作环境l合并产品和过程 项目计划开始于产品和过程的合并。团队要完成的每一项功能都必须通过针对
11、软件组织而定义的一系列框架活动来完成。 通用框架活动:沟通、策划、建模、构造、部署l过程分解 软件团队在选择最适合项目的软件过程建模时,应该有很大的灵活性。一旦选定了过程模型,项目团队可以根据需要灵活地确定过程模型中应包含的软件工程任务。 项目为了成功的管理软件项目,我们必须了解可能会出现什么问题,为了避免这些问题,包含以下五部分 1、在正确的基础上开始工作 2、保持动力 3、跟踪进展 4、做出英明的决策 5、进行事后分析W5HH原则 该原则描述项目的目标、里程碑与进度、责任、管理和技术方法以及需要的资源:为什么开发这个系统(Why)将要做什么(What)什么时候做(When)某功能由谁负责(
12、Who)机构位于何处(Where)如何完成技术工作和管理工作(How)每种资源需要多少(How much)六、过程度量和项目度量l过程领域和项目领域中的度量l软件测量l软件质量度量l在软件过程中集成度量l小型组织的度量l制定软件度量大纲过程领域和项目领域中的度量过程度量和程度量和软件件过程改程改进 过程主要受到人员的技能和动力、产品的复杂性以及过程中采用的技术影响。另外也受到其他环境条件的影响:开发环境、商业条件、客户特征等。 软件度量件度量规则: 解释度量数据时使用常识、并考虑组织的敏感性 想收集测量和度量的个人及团队定期提供反馈 不要使用度量去评价个人 与开发者和团队一起设定清晰的目标,并
13、确定为达到这些目标需要的度量 不要用度量去威胁个人或团队 指出问题区域的度量数据不应该被“消极的”看待,这些数据仅仅是过程改进的指标 不要在某一个别的度量上纠缠,而无暇顾及其他重要度量项目度量目度量 软件过程度量用于战略目的,而软件项目测量用于战术目的。即项目管理者和软件项目团队通过使用项目度量及从中导出指标,可以改进项目工作流程和技术活动 项目度量的目的是双重的:首先,利用度量能够对开放进度进行必要的调整,以避免延迟,并减少潜在的问题和风险,从而使开发时间减到最少。其次,项目度量可用于在项目尽行过程中评估产品质量,必要时可以调整技术方法以提高质量。随着质量的提高,缺陷会减到最少。而随着缺陷数
14、的减少,项目中所需的修改工作量也会降低,这是项目总体成本降低软件测量 软件的度量可分为直接测量和间接测量:软件过程的直接测量包括花费的成本和工作量。产品的直接测量包括产生的代码行(LOC)、运行速度、存储容量以及某段时间内报告的缺陷;产品的间接测量包括功能、质量、复杂性、有效性、可靠性、可维护性、以及许多其他产品特性。面向面向规模的度量模的度量 面向规模的软件度量是通过对质量和生产率的测量进行规范化而得到的,而这些测量都是根据开发过的软件的规模得到的。包含代码行测量(LOC)面向功能的度量面向功能的度量 面向功能的软件度量是以功能(由应用程序提供)测量数据作为规范化值。应用最广泛的面向功能的度
15、量是功能点(Function Point,FP)。功能点是根据软件信息域的独特性及复杂性来计算的。调和代和代码行和功能点度量行和功能点度量 代码行和功能点之间的关系依赖于实现软件所采用的程序设计语言以及设计的质量面向面向对象的度量象的度量 传统的软件项目度量(LOC或FP)也可以用于估算面向对象的软件项目,但是这些度量并没有提供对进度和工作量进行调整的足够的力度。所以提出以下度量: 场景脚本的数量 关键类的数量 支持类的数量 每个关键类的平均支持类数量 子系统的数量面向用例的度量面向用例的度量 用例被广泛的用于描述客户层或业务领域的需求,而这些需求中隐含着软件的特性和功能,类似于LOC或FP,
16、使用用例作为规范化的测量应该是合理的。用例点(UCP)Web应用用项目度量目度量 所有Web应用项目的目标都是想最终用户交付内容和功能的结合体: 静态Web页的数量 动态Web页的数量 内部页面链接的数量 永久数据对象的数量 通过界面连接的外部系统的数量 静态内容对象的数量 动态内容对象的数量 可执行的功能的数量软件质量度量 软件工程的基本目标是在某个时间框架内卡法出满足市场需要的高质量的系统、应用或产品。而其质量取决于描述问题的需求、建模解决方案的设计、导出可执行程序的编码以及执行软件来发现错误的测试。 可以使用测量来获知需求与设计模型的质量,源代码的质量以及构造软件时就要创建的测试用例的质
17、量。为了做到这种实时的评价,必需应用产品质量来客观的,而不是主观的评估软件工程工作产品的质量。测量量质量量 软件质量的测量指标: 正确性 可维护性 完整性 可用性缺陷排除效率缺陷排除效率 缺陷排除效率(DRE)是在项目级和过程级都有意义的质量度量。本质上,DER,是对质量保证及控制动作中滤除缺陷能力的测量,而这些质量保证及控制活动贯穿应用于所有过程框架活动中在软件过程中集成度量 大多数软件开发者还没有开始测量,测量的作用是显著地,再艰苦的工作也值得做: 1、支持软件度量的论点 2、建立基线 数据必需相当精确 从尽可能多的项目中收集数据 测量数据必须是一致的 基线数据与将要做估算的工作类似 3、
18、度量收集、计算和评估小型组织的度量 绝大多数软件开发组织中,软件人员都不超过20人,所以要完成任何软件过程的相关活动都要“保持简单”:一开始先不要关注测量,而从结果入手,软件小组通过表决来决定一个需要改进的目标。 制定软件度量大纲1、明确你的业务目标2、弄清你要了解或学习的内容3、确定你的子目标4、确定你的子目标相关的实体和属性5、确定你的测量目标6、识别可量化的问题和相关的指标,你将使用它们帮知你达到测量目标7、明确你要收集的数据元素,从这些数据元素中要得到帮助你回答问题的指标8、定义将要使用的测量,并使这些定义具有可操作性9、弄清楚实现测量需要的操作10、准备一份实施测量的计划 七、软件项
19、目估算 软件项目管理从一组统称为项目策划的活动开始。在项目启动之前,软件团队应该估算将要做的工作,所需的资源,以及从开始和到完成所需要的时间。对估算的观察 估算是所有项目策划活动的基础,而项目策划提供了通往成功的软件工程的路线图 1、项目的复杂性对计划固有的不确定性有很大影响。 2、项目规模是另一能影响估算精度和功效的重要因素 3、结构的不确定程度也影响着估算风险 估算的风险取决于资源、成本及进度的定量估算中存在的不确定性。项目策划过程 软件项目策划的目标是提供一个能使管理人员对资源、成本及进度做出合理估算的框架。估算应该定义“最好的情况”及“最坏的情况”,使得项目的结果能够限制在一定范围内。
20、软件范围和可行性 软件范围描述了将要交付给最终用户的功能和特性、输入和输出数据、作为使用软件的结果呈现给用户的“内容”,以及界定系统的性能,约束条件、接口和可靠性。定义范围可以使用两种技术: 1、在与所有利益相关者交流之后,写出软件范围的叙述性描述 2、由最终用户开发的一组用例 软件的可行性有4个固定因素:技术、经济、时间、资源资源 软件计划的第二个任务是估算完成软件开发工作所需的资源。开发环境、可复用软件构件、人员。每一类资源都由四个特征来说明:资源描述、可用性说明、需要该资源的时间、及该资源被使用的持续时间。软件项目估算 软件成本及工作量估算永远不会是一门精确的科学。太多的变化人员、技术、
21、环境、策略影响了软件的最终成本及开发所需的工作量。为了可靠地估算成本及工作量,有以下几种选择可以考虑: 1、将估算拖延到项目的最后阶段。 2、基于已经完成的类似的项目进行估算。 3、使用简单的“分解技术”来进行项目成本及工作量的估算。 4、使用一个或多个经验模型进行软件成本及工作量的估算。分解技术 软件项目估算是一种解决问题的形式。在大多数情况下,如果将待解决的问题作为一个整体来考虑则太过复杂了。因此,我们要分解问题,把问题重新划分成一组较小的问题。 在估算之前,项目计划者必须了解待建造软件的范围,并对其“规模”有相应的估算。软件件规模估算模估算 软件项目估算的准确性取决于若干因素:(1)计划
22、者适当地估算待建造产品的规模的程度;(2)把规模估算转换成人的工作量、时间、及成本的能力(一个来自以前项目的可靠软件度量的可用性函数);(3)项目计划反映软件项目组能力的程度;以及(4)产品需求的稳定性及支持软件工程工作的环境。估算方法:1、“模糊逻辑”法:2、功能点法:3、标准构件法:4、修改法:基于基于问题的的估算估算 在软件项目估算中,LOC和FP数据在软件项目估算中有两种作用:(1)作为一个估算变量,用于估算软件中每个成分的规模;(2)作为从以前的项目中收集来的,并与估算变量结合使用的基线度量,以建立成本及工作量估算。基于基于过程的程的估算估算 估算一个项目的最常用的技术是基于使用的过
23、程进行估算,即,将过程分解为相对较小的活动或任务,再估算完成每个任务所需的工作量。 与基于问题的估算一样,基于过程的估算也是开始于从项目范围中得到的软件功能描述。对于每一个功能,都必须执行一系列的软件过程活动。小结 软件项目计划者在项目开始之前必须先估算三件事:需要多长时间、需要多少工作量、以及需要多少人员。此外,计划者必须预测所需要的资源(硬件及软件)和包含的风险。 范围说明能够帮助计划者使用一种或多种技术进行估算,这些技术主要分为两大类:分解和经验建模。分解技术需要划分出主要的软件功能,接着估算:LOC的数量、信息域内的选择值、用例的数量、实现每个功能所需的人月数、每个软件工程活动所需的人
24、月数。八、项目进度安排 项目管理者的目标是定义所有项目任务,识别关键任务,然后跟踪关键任务的进展以保证“一天一次”的发现进度拖延情况。为了做到这一点,管理者必须建立一个具有一定详细程度的进度表,使得项目管理者能够监督进度,并控制整个项目。基本原则划分划分相互依相互依赖性性时间分配分配工作量确工作量确认定定义责任任定定义结果果定定义里程碑里程碑为软件项目定义任务集 任务集合的设计应该可以应用于不同类型的项目和不同的严格度。尽管很难建立一个全面详尽的分类结构,但是大多数软件组织接手的项目一般属于下述类型:概念开概念开发项目目:项目的目的是为了探索某些新的商业概念或者某种新技术的应用。新新应用开用开
25、发项目目:根据特定的客户需求而承担的项目。应用增用增强项目目:对现有软件进行最终用户可察觉的功能、性能或界面的修改。应用用维护项目目:以一种最终用户不会立即察觉到的方式对现有软件进行纠错、适应或者扩展。再工程再工程项目目:为了全部或部分重建一个现有(遗留)系统而承担的项目。进度安排 软件项目的进度安排与任何其他多任务工程工作的进度安排几乎没有太多的差别。因此,通用的项目进度安排工具和技术不必做太多修改就可以应用于软件项目。 1、时序图 2、进度跟踪 3、跟踪OO项目的进展 4、WebApp项目进度安排挣值分析 挣值是对项目进展的测量。使计划者不依赖于感觉,采用定量的分析方法来评估一个项目的“完
26、成百分比”。按照以下步骤可以确定挣值: 1、为进度表中的每个工作任务确定其预计工作的预算成本(BCWS)。 2、所有工作任务的BCWS值加起来,可计算出完成工作的预算(BAC) 3、接着,可计算已完成工作的预算成本(BCWP)九、风险管理第一步:“风险识别”,即辨别出什么情况下可能会出问题。第二步:分析每个风险,确定其可能发生的概率以及发生时将带来的危害。了解这些信息之后,就可以按照可能发生的概率和危害程度对风险进行排序第三步:制定一个计划来管理那些发生概率高和危险程度大的风险被动和主动的风险策略被动风险策略:被动策略最多不过是针对可能发生的风险来监督项目,直到它们变成真正的问题时,才会拨出资
27、源来处理它们。主动风险策略:主动策略早在技术工作开始之前就已经启动了。标识出潜在的风险,评估它们出现的概率及产生的影响,且按重要性加以排序,然后,软件项目组建立一个计划来管理风险。主要的目标是预防风险,但因为不是所有的风险都能够预防,所以,项目组必须建立一个意外事件的计划,使其在必要时能够以可控的及有效的方式作出反应。软件风险不确定性:刻划风险的事件可能发生也可能不发生;即,没有100发生的风险(100发生的风险是加在项目上的约束)。损失:如果风险变成了现实,就会产生恶性后果或损失。 进行风险分析时,重要的是量化不确定性的程度及与每个风险相关的损失的程度。为了实现这点,必须考虑不同类型的风险。
28、 项目风险威胁到项目计划。 技术风险威胁到要开发软件的质量及交付时间。 商业风险威胁到要开发软件的生存能力。识别风险 识别风险是试图系统化地确定对项目计划(估算、进度、资源分配)的威胁。通过识别已知的和可预测的风险,项目管理者已经迈出了第一步在可能时避免这些风险,且当必要时控制这些风险。产品规模与要建造或要修改的软件的总体规模相关的风险。商业影响与管理或市场所加诸的约束相关的风险。客户特性与客户的素质以及开发者和客户定期通信的能力相关的风险。过程定义与软件过程被定义的程度以及它们被开发组织所遵守的程度相关的风险。开发环境与用以建造产品的工具的可用性及质量相关的风险。建造的技术与待开发软件的复杂
29、性及系统所包含技术的“新奇性”相关的风险。人员数目及经验与参与工作的软件工程师的总体技术水平及项目经验相关的风险。风险因素: 性能风险产品能够满足需求且符合于其使用目的的不确定的程度。 成本风险项目预算能够被维持的不确定的程度。 支持风险软件易于纠错、适应及增强的不确定的程度。 进度风险项目进度能够被维持且产品能按时交付的不确定的程度。 每一个风险驱动因子对风险因素的影响均可分为四个影响类别可忽略的、轻微的、严重的及灾难性的。风险预测 风险预测,又称风险估算,试图从两个方面评估每一个风险风险发生的可能性或概率,以及如果风险发生了,所产生的后果。项目计划者,以及其他管理人员和技术人员,一起执行四
30、个风险预测活动:(1)建立一个尺度,以反映风险发生的可能性(建立风险表);(2)描述风险的后果;(3)估算风险对项目及产品的影响;(4)标注风险预测的整体精确度,以免产生误解。十、维护与再工程持续变更法则复杂性增长法则自调节法则组织稳定性守恒法则熟悉度守恒法则持续增长法则质量下降法则反馈系统法则l软件维护 1、软件缺陷 2、软件人员变动,没人直接了解系统l软件可支持性 指在软件系统的整个产品生命周期内支持软件系统的能力。这意味着不仅要满足所有必要的要求或需求,而且还要能够提供装置、支持基础设施、附加软件、工具、人力、或所需要的任何资源以维护软件的运行并满足软件功能。l再工程 业务过程再工程 软件再工程 l逆向工程 逆向工程过程以及用于实现逆向工程过程的工具的抽象层次是指可以从源代码中抽取出来的设计信息的精密程度。数据的逆向工程 处理的逆向过程用户界面的逆向过程 重构 软件重构工作是修改源代码和(或)数据,使软件适应未来的变化。通常,重构并不修改总体程序结构,它倾向于关注单个模块的设计细节及模块中所定义的局部数据结构。小结