项目计划与团队建设 导读 “计划赶不上变化”“计划阻碍了人的主观能动性”,那么,为什么还要做软件项目计划 呢? 凡事预则立,不预则废。任何事情,事前有准备就可以成功;反之,就会失败。在哲学 上,计划反映的是原因和结果的关系。 项目计划是根据对未来的项目决策,项目执行机构选择制订包括项目目标、工程标 准、项目预算、实施程序及实施方案等的活动。在一个具体的项目环境中,项目计划可以 说是预先确定的行动纲领。制订项目计划旨在消除或减少不确定性、改善经营效率、对项 目目标有更好的理解,以及为项目监控提供依据。 项目计划主要有以下几个方面的工作内容:项目目标的确立、实施方案的制订、预算 的编制、预测的进行、人员的组织、政策的确立、执行程序的安排及标准的选用。 项目计划应既有系统性,又有灵活性,还能发现遗漏,也有利于监督和管理。 在制订项目计划时,还有一个重要的组织随之建立,那就是项目团队。一个企业之所 以知名,不仅因为它的创业经历,令人敬仰的业绩,著名的品牌;更为名贵的是,它有优秀 的团队。微软前CEO 比尔·盖茨曾说“纵然失去现有的统统财产,只要留下这个团队, 我能再造一个微软!”。通用电气前CEO 杰克·韦尔奇曾说“失去最优秀的前20%是领 导的失败,留住最差的10%是一种过错”。 团队建设是指为了实现团队绩效及产出最大化而进行的一系列结构设计及人员激励 等团队优化行为。软件项目团队一般包括市场人员、项目管理人员、软件开发人员、软件 测试人员、销售人员等。 团队规模大小要根据软件生命周期长短而定。 5 68 5.1 制订项目计划 5.1.1 制订项目计划的目的 在软件项目实施前,制订项目计划是必需的。软件项目计划(SoftwareProject Planning)是软件项目进入系统实施的启动阶段。项目计划的各个组成部分可能由项目 团队成员中的部分专家进行编制,但对此负责的人是项目经理。软件项目计划的主要内 容包括以下几个方面: (1)确定项目实施范围。 (2)定义阶段性成果。 (3)评估项目实施中主要的风险。 (4)制订项目实施进度计划表。 (5)计划成本和预算。 (6)定义项目组织,计划人力等资源。 软件项目计划的制定,是软件开发的第一步。项目计划的目标是为项目负责人提供 一个可实施的框架,既能合理估算软件项目开发需要的资源、经费和开度,又能控制开发 过程。软 件项目计划包括研究和估算。通过研究能确定软件项目的主要功能、性能、出错处 理措施、接口、系统约束以及系统界面等;通过估算预测软件项目的成本和收益,在做项目 计划时,必须就需要的人力、项目持续时间以及成本做出估算。 5.1.2 项目计划的制订 项目计划就是要确定软件项目的范围和实施路径,其包含项目工作分解结构(Work BreakdownStructure,WBS)、项目的进度计划、任务分配表、项目里程碑的标识、风险标 识以及服务变更管理流程。 1.制订项目计划的步骤 1)明确目标 项目目标必须是具体的、可度量的、可行的、相关性的以及能截止的,必须符合 SMART(Specific、Measurable、Attainable、Relevant、Time-based)原则。 (1)目标必须是具体(Specific)的。要用具体的语言清楚地说明要达成的行为标准。 (2)目标必须是可以衡量(Measurable)的。有一组明确的数据,衡量是否达成目标。 (3)目标必须是可以达到(Attainable)的。目标是要能够被执行人所接受的。 (4)目标必须和其他目标具有相关性(Relevant)。实现此目标与其他目标的关联。 (5)目标必须具有明确的截止期限(Time-based)。目标是有时间限制的。 无论是制订团队的工作目标,还是员工的绩效目标,都必须符合上述原则,五个原则 缺一不可。制订的过程也是自身能力不断增长的过程,项目经理必须和项目组成员一起 在不断制订高绩效目标的过程中共同提高绩效能力。 2)制订项目工作范围 对照项目计划的目标,将需要完成的工作进行分析和梳理,列出完成目标需要进行的 所有活动一览表,即确定项目的工作范围。一般地,范围的制订有两种方法。 (1)对于小型项目,建议使用“头脑风暴”法。它是一种集体开发创造性思维的方法。 “直接头脑风暴”法是在项目组专家决策基础上尽可能激发创造性,产生尽可能多的设想 的方法;“质疑头脑风暴”法是对已提出的设想和方案逐一质疑,发现其现实可行性的 方法。 (2)对于中大型项目,好的方法是使用WBS生成一份项目分解清单。归纳和定义了 项目的整个工作范围每下降一层代表对项目工作的更详细定义。WBS总是处于计划过 程的中心,也是制订进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基 础;同时,它也是控制项目变更的重要手段。 3)分配任务职责 利用责任分配矩阵(ResponsibilityAsignmentMatrix,RAM)将项目分解结构要素 要求的工作和负责完成该工作的职能组织相结合而形成的矩阵结构是分配任务职责较好 的方法。 4)统筹规划项目各活动之间的关联 确定各个项目活动需要的时间、人力和物力,明确各项活动之间的先后逻辑关系,通 常通过工程网络完成(将在第13章软件项目管理中叙述)。 完成以上4个步骤后,项目经理还可以为项目计划添加一些支持性文档以及备注等。 所有这些资料将作为项目计划成为项目的信息中心。 2.制订项目计划的原则 制订项目计划的原则主要包括以下5个方面。 (1)不应过分拘泥于细节。应制订出已通过批准、总体结构准确且具有指导意义的 项目计划书。计划的完善是一项贯穿于整个项目生命周期的持续改进过程。 (2)短期计划和长期计划相结合。短期计划需要做出周密的规划,长期计划只给出 指导性规划即可。 (3)项目计划的确定可以采用目标管理法,即强调上下交互来制订项目的目标和任 务,增加项目组成员的责任感,以便于项目工作的开展。 ①由项目经理把项目的整体计划制订出来。 ②由项目成员根据整体计划指导各自任务的制订(通过协商和小范围集体讨论 讨论)。 (4)不可忽视重要信息。主要包括组织架构图、各关键部门的组织结构和部门职能。 (5)在项目的初期,项目关系人的要求往往是模糊的。作为项目经理,在指定项目计 划时要充分认识到这一点,要清晰定义项目,并注意平衡不同的项目关键关系人的需求。 指定的项目计划一定要得到项目关键关系人的正式书面批准。 69 703.制订项目计划的工具WBSWBS 将项目的“交付物”自顶向下逐层分解成易于管理的若干因素,结构化组织和定 义了项目的工作范围。 WBS 的制定没有固定模式,但可以参考以下原则: (1)大任务分层原则。将任务分解成层次结构,便于项目开发、实施和管理。 (2)80 小时原则。80 个小时就是10 个工作日,在任务分层过程中,最小级别的任务 的工期应控制在10 个工作日内,以便于检查和监控。同时,任务的工期也不能太短,控制 的粒度过细会影响项目组成员的积极性。 (3)责任到个人原则。任务分解中,最小级别的任务应分配到人。如果一个任务必 须由若干成员完成,为了更好地控制项目,建议将任务细化,责任到人;否则,一旦任务在 执行中出现问题,不利于问题的排查。 (4)风险分解原则。在任务分解中,若存在较大风险的任务,要将任务分解,既能一 定程度上化解风险,也能便于缓解风险和解决风险。 (5)逐步求精原则。高质量的任务分解需要花费很长时间,在项目开始前期可粗放 分解任务,待到任务准备执行时再做细化分解。 (6)团队工作原则。在任务分解过程中,项目组成员参与并职责到人,尽可能避免在 任务分解和项目执行过程中产生分歧。 图5.1是WBS 的一个示例。 图5.1 WBS 示例 4.制订项目计划的工具RAMRAM 是以表格形式表示完成工作分解结构中任务与项目成员的职责关系。通过 RAM,可以对项目组成员进行责任分工,确定每个成员的角色和职责;此外,项目组成员 还能通过它了解与自己相关的其他成员的具体职责,以便于沟通和协作。 RAM 中,纵向表示项目工作单元,横向表示项目组成员或部门单元,纵横交叉处表 示项目组成员或部门的任务职责,见表5.1。 表5. 1 RAM 示例 序号工作单元项目成员1 项目成员2 项目成员3 项目成员4 项目成员5 项目成员6 1 需求分析D d d 2 总体设计D d 3 详细设计D d,X X 4 编码X X X 5 设计测试计划d D,X d,X 6 设计测试用例d D,X X 7 执行单元测试X X X 8 执行集成测试X X 9 执行系统测试X X 10 执行验收测试X X D—决定性决策;d—参与决策;X—执行任务 5.3 设计项目计划 1. 好的项目计划能指导软件项目按部就班地被实施。项目计划一般包括项目概述、项 目团队组织以及实施计划等内容。通过以下的项目计划模板,能理解项目计划的设计 内容。 1 引言 1 编写目的 1. 2 背景 1. 3 定义及缩略语 1. 4 基线 1. 2 项目概述 1 项目工作内容 2.项目计划示例 2 项目开发环境 2. 3 项目验收方式与依据 2. 3 项目团队组织 1 组织结构 3. 2 人员分工 3. 3 协作与沟通 3. 4 进度和完成的最后期限 3. 5 经费预算 3. 6 关键问题 3. 7 独立确认测试工作计划和安排 3. 8 风险评估 3. 71 72 4 实施计划 4.1 风险评估及对策 4.2 工作流程 4.3 总体进度计划 5 质量保证 5.1 质量审核 5.2 加强软件测试 5.3 对软件的变更进行控制 5.4 对软件质量进行度量 6 应交付成果 6.1 需要完成的软件 6.2 需要提交用户的文档 7 软件配置管理 7.1 基本要求 7.2 配置表示规则 7.3 配置控制 7.3.1 更改控制 7.3.2 更改流程 制订项目计划的有效经验主要包括以下几点: (1)注重项目计划的层次性。 (2)重视与客户的沟通。 (3)把握详细和简略的尺度。 (4)制订的项目计划要实现。 (5)运用过程化的思想指导开发。 (6)利用成熟的项目管理工具。 5.1.4 项目计划的修改与维护 项目计划实施过程中的一些改动,包括资源(包括人力和物力资源等)的变动、时间的 限制以及市场需求的变化,需要对开发项目做必要的调整。相应地,软件开发计划也要做 相应的变更。 一般地,需要修改的文档应该由某个人进行维护,或把文档放在项目控制版本文件 中,可以避免因多人修改而造成版本错误或内容的不一致。在修改时,应对改动项进行标 注,并且在版本信息里添加索引。当其他人员看到版本改动时,就能根据索引定位改动位 置,提高工作效率。 5.2 建立项目团队 5.2.1 项目团队的定义 项目团队不同于一般的群体或组织,它是为实现项目目标而建设的,一种按照团队模 式开展项目工作的组织,是项目人力资源的聚集体。 根据立信会计出版社2008 年8月出版的《项目管理》所述,按照现代项目管理的观 点,项目团队是指项目的中心管理小组,由一群人集合而成,并被看作一个组,共同承担项 目目标的责任,兼职或者全职地向项目经理进行汇报。 2.建立项目团队的目的 5.2 软件项目(特别是大型软件项目)不是由一个人独立完成的,往往分成多个子系统,由 多人并行或协作开发。甚至,从立项到发布,软件项目需要多个部门的参与。 因此,组建项目团队有效地协调工作直接决定软件项目的成功与否。TomDeMarco 与TimothyLister曾在《人件》中表达“本质上,我们工作中的主要问题,与其说是技术问 题,不如说是社会学问题”。 高效项目团队的特点主要体现在以下4点。 (1)共同的目标和价值观是前提。 以目标为向导的行为能促使项目成员遵循项目计划、步调一致,逐步完成阶段性任 务,直至项目成功;能增强团队的凝聚力,激励项目成员为项目付出智慧、时间和努力。此 外,共同的价值观形成团队精神去规范个体成员的行为,按照项目进度实施项目目标。 (2)合理的分工和协作是关键。 在项目计划阶段,团队对如何完成任务、由谁完成任务、完成怎样的任务、完成的期 限、所需技能等方面通过RAM 得到清晰的界定。团队成员分工明确、权责对等,每个成 员都清楚自己在项目中的角色、职责、与上下级的关系,以及与团队成员之间的协作关系。 在冲突和问题面前能分担责任、集思广益听取他人意见,为共同目标而努力。 (3)高度的信任和有效的沟通是保证。 团队成员之间的高度信任、相互尊重,能增强团队凝聚力,有助于成员之间的沟通;及 时发现问题、解决问题,取长补短,帮助团队实现项目目标。 (4)超强的执行能力和生产力是标志。 高效项目团队体现的标志是能低成本、少投入,更快捷地生产出高质量、高标准的软 件项目。高效的生产力源自团队成员超强的执行能力和成员之间的精诚协作和通畅 沟通。 2.建立和管理项目团队 5.3 组建一支高效的项目团队主要通过以下几项措施。 (1)加强项目团队领导。 组建一支基础广泛的团队是建立高效项目团队的前提。在组建项目团队时,除考虑 每个人的教育背景、工作经验外,还须考虑其兴趣爱好、个性特征以及年龄、性别的搭配, 确保团队队员优势互补、人尽其才。项目经理要为个人和团队设定明确而有感召力的目 标,阐明实现项目目标的衡量标准,让每个成员明确理解他的工作职责、角色、应完成的工 作及其质量标准。进行开放性的沟通并积极地倾听,充分授权,民主决策。营造以信任为 基础的工作环境,尊重与关怀团队成员,视团队成员为团队的财富,强化个人服从组织、少 73 数服从多数的团队精神。根据队员的不同发展阶段实施情境领导,鼓励队员积极主动地 分担项目经理的责任,创造性地完成任务,以争取项目的成功。 (2)鼓舞项目团队士气。 项目团队士气依赖于项目组成员对项目工作的热情及意愿,为此,项目经理必须采取 有效措施激发成员的工作热情与进一步发展的愿望,创造出信任、和谐而健康的工作氛 围。鼓励成员相互协调、彼此帮助,开诚布公地表达自己的思想,设身处地地提供反馈帮 助自己和队员与项目一道成长。提倡与支持不断学习的气氛,使团队成员有成长和学习 新技术的机会,能够获得职业和人生上的进步。灵活多样而丰富多彩的团队建设活动是 培养和发展个人友谊、鼓舞团队士气的有效方式。另外,通过定期召开项目团队会议,也 能充分讨论关于建设高效团队的有益话题。 (3)提高项目团队效率。 建设高效项目团队的最终目的是提高团队的工作效率。项目团队的工作效率依赖于 团队的士气和合作共事的关系,依赖于成员的专业知识和掌握的技术,依赖于团队的业务 目标和交付成果,依赖于依靠团队解决问题和制定决策的程度。高效项目团队必定能在 领导、创新、质量、成本、服务、生产等方面取得竞争优势,必定能以最佳的资源组合和最低 的投入取得最大的产出。 加强团队领导、鼓舞团队士气、提高团队效率,鼓励队员依照共同的价值观达成目标。 依靠团队的聪明才智和力量解决项目问题,是取得高效项目成果的必由之路。 2.项目团队的组织结构 5.4 软件项目团队包括市场人员、项目管理人员、软件开发人员、软件测试人员、售后人员 等,其职责见表5.项目团队的组织结构规模与项目规模大小有关, 2。当然, 项目规模大小 根据软件周期决定。 表5.团队成员职责 2 角色名简称职责必选 项目经理PM 负责整个项目的计划、执行、跟踪、发布,是项目的最终决策人和 负责人 是 技术经理TM 负责项目代码开发管理:预估开发工作量、分配开发任务、发布开 发日报、详细设计、BUG 跟踪、发布前的准备,技术开发方面的最 终负责人 是 产品设计经理PDM 负责项目的功能性需求与产品设计,是产品功能与交互设计的最 终负责人 是 运营经理POM 负责项目的非功能性需求,主要是运营、推广方面的设计与实施 测试经理QAM 负责项目的测试计划、测试任务分配、BUG 跟踪,是项目最终是否 通过测试,是否可以上线的最终决策人 是 客服经理CSM 是项目的来自客户需求的管理者 开发组长TL 负责某一个开发小组的管理任务,受TM 领导 74 75 续表 角色名简称职 责必选 架构师PA 负责整体架构,代码审核 开发工程师DE 负责具体的设计、编码、测试,受TL或TM 领导是 数据库管理员DBA 负责项目的数据库设计的审核、变更,SQL 语句的审核,数据订 正,测试或上线数据准备 系统管理员SA 负责环境部署、维护;网站流量或压力监控 界面设计师UI 负责用户界面设计与交互设计 产品运营师PO 负责产品的运营活动 产品设计师PD 负责需求的收集与分析,产品设计与交互设计,受PDM 领导 测试工程师QA 负责软件的集成测试,包括测试环境、预发布环境、线上环境是 产品配置管理员PCM 负责本项目的分支管理,代码合并,版本控制是 发布员PB 负责发布程序到:开发环境,测试环境,线上环境是 软件工程专员SQA 负责监督项目的过程计划与执行情况,协助项目的规范化以及风 险告警 是 项目团队组织结构图如图5.2所示。 图5.2 项目团队组织结构图 5.3 随堂笔记 一、本章摘要 76 二、练练手 (1)IT 企业对专业程序员的素质要求中,不包括( ) 。 A. 能千方百计缩短程序,提高运行效率 B. 与企业文化高度契合 C. 参与软件项目开发并解决遇到的问题 D. 诚信、聪明、肯干 (2)以下关于软件开发相关的叙述中,不正确的是( ) 。 A. 专业程序员应将复杂的问题分解为若干个相对简单的、易于编程的问题 B. 移动互联网时代的软件开发人员应注重用户界面设计,提高用户体验 C. 软件测试时应对所有可能导致软件运行出错的情况进行详尽的测试 D. 软件设计者应有敏锐的产品感觉,不因枝节而影响产品的迭代和上线 (3)在软件开发中,有利于发挥集体智慧的一种做法是( ) 。 A. 设计评审B. 模块化 C. 主程序员制D. 度控制 (4)责任分配矩阵不被用来说明( ) 。 A. 谁负责哪方面的工作 B. 实现项目目标需要哪些工作因素 C. 工作单元间哪些关键界面需要管理上协调 D. 谁向谁汇报 (5)( ) 工具为确定必须安排进度的工作奠定了基础。 A. 工作分解结构B. 预算 C. 主进度计划D. 甘特图 (6)( ) 就是将知识、技能、工具和技术应用到项目活动,以达到组织的要求。 A. 项目管理B. 项目组管理 C. 项目组合管理D. 需求管理 (7)对于风险比较大的项目,最好选择生命周期模型中的( ) 。 A. 瀑布模型B. 原型模型C. 螺旋模型D.V模型 (8)项目管理最主要的关注点是( ) 、时间、成本和质量。 A. 空间B. 范围C. 效益D. 资源 (9)( ) 可以避免一次性投资太多带来的风险。 A. 瀑布模型B. 原型模型C. 增量模型D. 喷泉模型