第二章软件项目管理基础_第1页
第二章软件项目管理基础_第2页
第二章软件项目管理基础_第3页
第二章软件项目管理基础_第4页
第二章软件项目管理基础_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章软件项目管理基础第二章软件项目管理基础软件项目的成功和失败软件开发的困惑为什么我们不能开发出高质量的软件?为什么人类无法定义它、解释它,深刻地了解它?为什么一些天才的科学家穷其一生的精力也不能把这些迷惑归纳成一种科学工程学科或行业标准?软件工程方法不堪一击,人们无法使用它们。软件项目失败原因客户需求不确定最终产品的设计和特色只有在过程中才能变得清晰,而不是开始时很难制定准确的计划估计不够,低估时间和成本来自营销、客户和管理者的压力沟通失败是项目失败的最大的威胁软件过程不可见软件开发的探索技术CASE,UMLOO过程控制ISO9001,ISO9000-3,ISO15504,ISO12207CMM,TickIT以上措施并没有真正解决软件危机“质量是制造出来的,不是检验出来”,在制造业适用,在软件行业作用并不大(软件过程不可见)项目失败率还是很高软件项目失败深层次原因对软件的误解是问题的根源。现有的方法是由那些有良好愿望但忘记了软件中的“软”的那些聪明人所创建的。他们假定开发软件就象造桥。方法不正确。没有人打算失败,具有讽刺意味的是为使失败最小化而创建的方法是失败的。开发人员士气不高,没有创造性。管理人员、开发人员能力不够。只重过程,不重人。没有良好的沟通。项目管理概述

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。软件项目管理的根本目的是为了让软件项目,尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本,按期、按质的完成软件,然后交付用户使用。

这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止。软件项目管理的特殊性软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。

项目管理分九个知识领域,分别是成本管理、质量管理、时间管理、范围管理、人力资源管理、沟通管理、风险管理、采购管理和整体管理。其中时间,质量和成本管理构成了三角形项目管理三角形时间质量成本中间是范围管理,也就是项目范围

项目管理包括5种基本活动启动:相关人员提出对项目的要求,项目开始。计划:计划涉及详细规定出要取得的结果;产生这些结果所需要的活动和任务;决定时间表和估计所需的资源,例如人力和资金。

组织:组织规定了项目的组织和角色、责任的定义。在计划活动中,角色被映射成确定的工作。

控制:控制确定正在进行的活动何时偏离了计划。

收尾:终止是结束项目。

项目生命期和阶段划分项目可以分成几个阶段

项目概念:关于项目的想法开始出现,通常伴随着成本效益分析和技术可行性研究。项目定义:包括以下活动

问题定义:客户和项目经理按照功能,限制条件和交付产品

定义系统的规模。客户和项目经理也在协议标准和目标日期上达成一致。

初始的软件项目管理计划(SPMP):项目经理提供对项目总的看法、项目结果的描述、工作分解结构、角色和责任、项目时间表、所需资源的预算和怎样定义和处理风险的描述。

初始的软件体系结构:它关注于软件体系结构,特别是把系统分解成子系统。

项目协议定义:在项目协议文档中,用户和项目经理对作为基线的系统规模和交付日期正式达成一致。

项目开始:项目经理设置了项目的基础设施,雇用参与者,把他们组成团队,并总结项目。项目开始包括以下活动基础设施设立:项目经理必需为项目的基础设施制定需求。这些需求描述了项目参与者之间的交流渠道,比如公告牌、网站和会议管理程序等。

技能定义:项目经理定义开发者的技能和兴趣,并在技能矩阵中记录它。

团队集合:项目经理分配团队参与者,定义团队功能且选择团队领导。项目经理也为团队成员定义所需的额外培训和课程。最后,项目经理为团队分配工作包。

项目总结:项目经理,团队领导和客户正式开始启动项目。项目稳定状态:团队领导要负责跟踪团队状态和在团队会议上提出问题。包括以下活动

项目规模定义控制:团队领导和项目经理每周将项目状况和SPMP中计划的时间表进行比较。团队领导负责收集状况信息和向项目经理报告情况。风险管理:项目经理和团队领导定义、分析、设定风险的优先级,并准备对意外事故的计划。项目重计划:当项目偏离了时间表或发生意外事故,项目经理需要修改时间表,并且重新分配资源来。项目终止:提交项目结果并收集项目历史。主要活动有

交付:由客户验收测试和系统安装2个子活动组成。客户验收测试:软件系统由客户按照项目协议中制定的验收准则进行评价。安装:系统被配置在目标环境中,并且交付文档。安装可能包括用户培训和实施阶段。事后分析:项目经理和团队领导收集项目历史资料以获得经验。定义工作分解结构项目计划的基本假设是项目结果不能在一个大型活动中被完成,我们必须用各个击破的方法来把工作分解成更小的、更容易做的小块。因此,在项目计划中一个主要的任务是把整个工作包分解成更小的任务。这包括2件事:定义合适的任务和定义任务间的依赖关系。

任务和活动任务是一项已经定义得很好的工作,该工作可分配给一个项目参与者或分配给一个团队。

任务是管理有关项目工作的最小的单元。任务包括对任务和持续时间的描述,还包括分配给所扮演角色的参与者。

工作产品,工作包和角色工作包描述了要生产的工作产品,要完成工作所需要的资源,所希望的持续时间,输入之间的相互依赖,也详细说明了验收规则和相关的个体或组织的单元的名字。

工作包是重要的管理产物,我们把它们分配给参与者去做。在任务定义之后可以定义工作包。

任何交付给用户的工作产品叫交付品,例如用户手册。工作分解结构在一个项目中,全体任务的层次描述叫工作分解结构(WBS)。

工作分解结构是一个要做工作的非常简单的模型。

注意:工作分解结构不表示活动的顺序。

项目范围阶段工作单元任务牛仔靴数据库项目数据库的生成应用的生成Web接口的生成故障解决和执行项目不要划分得太细,最小单元可为工作日。进度安排软件开发项目的进度安排有两种方式:

(1)系统最终交付日期已经确定,软件开发部门必须在规定期限内完成;

(2)系统最终交付日期只确定了大致的年限,最後交付日期由软件开发部门确定。进度安排的方法可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。为监控软件项目的进度计划和工作的实际进展情况,为表现各项任务之间进度的相互依赖关系,需要采用图示的方法。在图示方法中,必须明确标明:

各个任务的计划开始时间,完成时间;各个任务完成标志(即○文档编写和△评审);各个任务与参与工作的人数,各个任务与工作量之间的衔接情况;完成各个任务所需的物理资源和数据资源。甘特图也叫做线条图或横道图。它是以横线来表示每项活动的起止时间。甘特图的优点是简单、明了、直观,易于编制,因此到目前为止仍然是小型项目中常用的工具。即使在大型工程项目中,它也是高级管理层了解全局、基层安排进度时有用的工具。在甘特图上,可以看出各项活动的开始和终了时间。在绘制各项活动的起止时间时,也考虑它们的先后顺序。但各项活动上间的关系却没有表示出来,同时也没有指出影响项目寿命周期的关键所在。因此,对于复杂的项目来说,甘特图就显得不足以适应。在甘特图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是以必须交付应交付的文档与通过评审为标准。因此在甘特图中,文档编制与评审是软件开发进度的里程碑。甘特图要点:以图形或表格的形式显示活动现在是一种通用的显示进度的方法构造时应包括实际日历天和持续时间。不要将周末和节假日算在进度之内甘特图是做项目进度计划方法的重要方法,其他方法有:关键日期表:这是最简单的一种进度计划表,它只列出一些关键活动和进行的日期。关键路线法计划评审技术(ProgramEvaluationandReviewTechnique,简称PERT)。Gantt图能很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间,因此是进度计划和进度管理的有力工具。它具有直观简明和容易掌握、容易绘制的优点。Gantt图的3个主要缺点:(1)不能显式地描绘各项作业彼此间的依赖关系;(2)进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象;(3)计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。任务通过暂时的依赖关系联系起来。例如建屋顶的任务不能在建墙任务结束前开始。

任务及其依赖关系的集合叫任务模型或者网络图。

完成任务有一个持续时间,由项目经理在项目开始前估算。一旦知道了任务间依赖关系和任务的持续时间,项目经理能计算出项目能被完成的最短可能时间。该时间在任务模型中表现为最长路径,即关键路径。关键路径经过项目的第一项任务到最后一项任务,其长度由任务的持续时间相加计算出来。在关键路径上的任务延迟会导致整个项目的延迟,从而使项目延期。任务的最迟完成时间是在不耽误项目的其他要完成的任务时,任务能被推迟的最大时间。关键路线法F1周开始0周A1周D2周C1周B1周E1周结束0周关键路决定项目的最短完成时间关键路分析(CriticalPath)关键路径的计算与调整优化关键路径是网络图中最长的路线。它决定了项目的总实耗时间。项目经理必须把注意力集中于那些优先等级最高的任务,确保它们准时完成,关键路径上的任何活动的推迟将使整个项目推迟。向关键路要时间,向非关键路要资源。调整进度,平衡资源任务的确定与并行性当参加同一软件工程项目的人数不止一人的时候,开发工作就会出现并行情形。软件开发进程中设置许多里程碑。里程碑为管理人员提供了指示项目进度的可靠依据。里程碑:一个具有特定重要性的事件,通常代表项目工作中一个重要阶段的完成。在里程碑处,通常要计划进行检查。软件工程项目的并行性提出了一系列的进度要求。40-20-40规则在整个软件开发过程中,编码工作量仅占20%,编码前工作量占40%,编码后工作量占40%。40-20-40规则只应用来做为一个指南。实际的工作量分配比例必须按照各项目的特点来决定。技能矩阵技能矩阵是在项目中关于要完成任务的人的技能、知识和兴趣的一张简单表。技能矩阵的一行表示来自工作分解结构的工作单元——任务、活动和项目功能。一列表示项目参与者。矩阵中的一项为任务,定义了特定参与者的技能和知识层次。我们把3种项目区分开:主要技能、次要技能和兴趣。主要技能使一个人能胜任领导一个工作单元。次要技能使一个人能参与任务。兴趣表示在任务中一个人感兴趣但不具备该技能。

2.2.6组织组织由组织单元及其交互组成。最小组织单元是一个参与者(也叫个人或成员)。一组参与者能组成部门、处或小组。

呈现组织结构组织的表现及其信息结构通常叫组织图。

人员组织除了追求更好的组织方式之外,每个管理者的目标都是建立有凝聚力的项目组。现有的软件项目组的组织方式很多,通常,组织软件开发人员的方法,取决于所承担的项目的特点、以往的组织经验以及管理者的看法和喜好。民主制程序员组民主制程序员组的一个重要特点是,小组成员完全平等,享有充分民主,通过协商做出技术决策。因此,小组成员之间的通信是平行的,如果小组内有n个成员,则可能的通信信道共有n(n-1)/2条。民主制程序员组通常采用非正式的组织方式,也就是说,虽然名义上有一个组长,但是他和组内其他成员完成同样的任务。主要优点是,组员们对发现程序错误持积极的态度。小组有高度凝聚力,有利于攻克技术难关。主程序员组美国IBM公司在20世纪70年代初期开始采用主程序员组的组织方式。采用这种组织方式主要出于下述几点考虑:(1)软件开发人员多数比较缺乏经验;(2)程序设计过程中有许多事务性的工作,例如,大量信息的存储和更新;(3)多渠道通信很费时间,将降低程序员的生产率。典型的主程序员组的组织形式主程序员组用经验多、技术好、能力强的程序员作为主程序员。该组由主程序员、后备程序员、编程秘书以及1~3名程序员组成。在必要的时候,该组还有其他领域的专家协助。主程序员组核心人员的分工(1)主程序员既是成功的管理人员又是经验丰富、技术好、能力强的高级程序员,负责体系结构设计和关键部分(或复杂部分)的详细设计,并且负责指导其他程序员完成详细设计和编码工作。(2)后备程序员也应该技术熟练而且富于经验,他协助主程序员工作并且在必要时接替主程序员的工作。平时,主要是设计测试方案、分析测试结果及独立于设计过程的其他工作。(3)编程秘书负责完成与项目有关的全部事务性工作。现代程序员组技术组长,负责小组的技术活动,参与全部代码审查工作,他要对代码的各方面质量负责。行政组长,负责所有非技术性事务的管理决策,他的职责是对程序员的业绩进行评价。行政组长应该在常规调度会议上了解每名组员的技术能力和工作业绩。但是,即使已经做了明确分工,有时也会出现职责不清的矛盾。大型项目的技术管理组织结构把民主制程序员组和主程序员组的优点结合起来的另一种方法,是在合适的地方采用分散做决定的方法。这种组织方式对于适合采用民主方法的那类问题非常有效。包含分散决策的组织方式软件项目管理计划软件项目管理计划(SPMP)中的文件在项目总结大会之前创建,并且当任务完成和步骤更新的时候被更新,这种更新将贯穿整个项目。SPMP的使用者包括管理者和开发者。SPMP有五部分。1.

介绍1.1项目概况1.2项目交付品1.3文档的演化1.4参考书1.5定义和缩写表2.

项目组织2.1过程模型2.2组织结构2.3组织边界和接口2.4项目责任3.

管理过程3.1管理目标和优先级3.2假设,依赖和限制3.3风险管理3.4监督和控制机制4.

技术过程4.1方法,工具和技术4.2软件文档4.3项目支持功能5.

工作元素,日程表和预算软件项目管理计划(SPMP)

2.3项目管理活动

在项目定义期间,项目经理的主要活动是定义组织结构和定义工作产品、任务、时间表和角色。团队领导在项目定义阶段的最后时刻参加项目,他们的主要工作是在稳定状态下监督和管理团队。

2.3.1计划项目定义问题、确定初始任务模型和组织结构、评估所需的资源,如人员和资金。这一阶段要完成以下的工作:1.问题陈述:记述了当前情况、要支持的功能和系统要使用的环境,也要定义客户希望的产品、交付日期和一套验收标准,可能也指定了开发环境中的限制,例如要用的编程语言。问题陈述是由项目经理和客户经过迭代活动开发的。

2.顶层设计:顶层设计描述了系统的软件体系结构,应由软件结构师完成。软件结构师定义主要的子系统及其服务,但还不定义子系统的界面。3.软件项目管理计划(SPMP):描述了项目的所有管理方面,特别是工作分解结构、日程表、组织、工作包和预算。为一个项目定义工作分解结构(WBS),有不同的方法。最常用的方法是基于软件过程的功能分解。

2.3.2组织项目雇用参与者、确定技能、为参与者分配角色和责任并组织指导与项目总结有关的会议。

1.设立交流设施2.定义技能:软件工程开发项目需要具有应用领域技能、交流技巧、技术能力、质量能力和管理能力。项目经理要用技能矩阵,为每个任务按合适的技能关系定义人员。3.分配管理角色:分配团队领导等管理角色。团队领导要有交流的能力,要作为更高层管理者和开发者之间的联络者有上通下达以取得协调的能力;有时团队领导必须具有命令开发者完成紧迫任务的决定权。

4.分配技术角色:技术角色最好和管理角色分开。5.处理技能缺乏:当技能不足时,项目经理应该做出培训计划安排。这包括专门培训和工作中展开的培训。6.选择团队规模三个成员。

四个成员。

五个或六个成员。这是规模理想的软件开发团队。

七个成员。

八个和更多成员。7.聚集团队:项目经理在团队建立前选择团队领导。除了能了解团队状态之外,团队领导需要有效地进行交流,识别潜在的危险(技术或社会的),考虑项目利益选择折衷方案。

8.总结会议:项目经理、团队领导和客户在所有开发者都参加的总结会议上,正式启动项目。开总结会议的目的,是与所有项目参与者共享有关项目领域、交流设施、每个团队责任的信息。

9.对项目范围达成一致:各方将对项目范围达成一致的结论,以文档形式加以记录,这个文档正式定义了项目的范围、期限、成本和交付。项目协议由合同、工作声明、商业计划或项目宪章的形式书写。项目协议应该至少包括以下内容:交付文档清单;功能需求演示的标准;非功能性需求演示的标准,非功能性需求包括准确性、可靠性、响应时间和安全性等;验收标准。

在项目总结完成和对项目范围取得一致后,项目进入稳定状态。

2.3.3控制项目项目监督、风险管理和项目协议。

为了在项目稳定阶段做出有效的决定,项目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论