1.25k likes | 1.36k Views
软件项目管理课程 之. 第4讲 软件项目计划. 毛新军 xjmao21@21cn.com http://software.nudt.edu.cn/~xjmao http://www.618.net.cn 计算机科学与技术系 602 教研室 0731-(45)73649. 讲授内容. 项目案例 什么是软件项目计划? 为什么需要软件项目计划? 制定软件项目计划应考虑的因素 制定软件项目计划的步骤 CMM 对软件项目计划的要求 成功的和过于乐观的软件开发计划 案例分析及 CASE 工具 小结. 小王:软件项目负责人. 老王:公司技术老总.
E N D
软件项目管理课程 之 第4讲 软件项目计划 毛新军 xjmao21@21cn.com http://software.nudt.edu.cn/~xjmao http://www.618.net.cn 计算机科学与技术系602教研室 0731-(45)73649
第4讲 软件项目计划 讲授内容 • 项目案例 • 什么是软件项目计划? • 为什么需要软件项目计划? • 制定软件项目计划应考虑的因素 • 制定软件项目计划的步骤 • CMM对软件项目计划的要求 • 成功的和过于乐观的软件开发计划 • 案例分析及CASE工具 • 小结
小王:软件项目负责人 老王:公司技术老总 开发小组:小李,老赵,小田,小谢 第4讲 软件项目计划 项目案例 案例角色和人物
第4讲 软件项目计划 软件项目的实施需要计划(1/3) • 项目开始实施之时,老王就提醒小王,为了更好地管理和控制软件开发项目,他应该马上着手制定软件项目的实施计划,该计划的制定对于整个项目的组织、管理和开展是至关重要的 • 由于认识到软件项目计划的重要性,小王化了1周时间制定了一个详细的软件项目计划,包括了详细的工作安排、明确的人员分工和具体的进度要求,计划看起来似乎是科学和合理的 • 项目计划最后交给项目组的所有成员进行讨论,并交付给公司的领导审阅,通过并批准,开始被付诸实施
第4讲 软件项目计划 软件项目的实施需要计划(2/3) • 软件项目计划分发到了项目组的各个成员,每个成员根据计划准确地了解了各自的任务和工作,也了解了这些工作的实施进度要求 • 根据软件项目计划开始阶段似乎一切顺利,各项工作已经按照计划的要求有序开展 • 然而,随着项目实施的进展,小王发现实际的工作很难按照计划中所计划的那样开展进行。在计划制定时,低估了软件项目的规模,高估了开发人员的素质和能力,整个计划过于乐观,软件项目计划不得不多次进行调整,项目进展一拖再拖。
第4讲 软件项目计划 软件项目的实施需要计划(3/3) • 后来小王发现,低估项目规模的一个主要原因是由于在制定计划时缺乏对项目规模的详细、准确的了解。 • 尽管小王对用户做了无数次的解释保证按期交付产品,用户对项目的按期交付表示怀疑,并要求加快项目的实施进度 • 公司高层开始表示关注,为了弥补时间和进度,不得不要求员工牺牲休息日进行加班,项目组部分成员开始抱怨。 • 幸运的是,软件项目计划在经过多达10次的更改,在项目组成员的积极努力和用户的配合下,项目最终在拖延了6个月之后顺利完工了
第4讲 软件项目计划 案例提示我们 • 软件项目计划的制定是极为重要的 • 软件项目计划应该在项目实施的初期制定 • 软件项目计划的制定必须科学、准确,这样才能真正促进软件项目的管理 • ……
第4讲 软件项目计划 管理问题 • 什么是软件项目计划? • 软件项目计划包括哪些方面的内容? • 软件项目计划制定应该注意哪些方面问题? • 如何制定软件项目计划? • 如何保证所制定计划的科学性和准确性?
第4讲 软件项目计划 讲授内容 • 项目案例 • 什么是软件项目计划? • 为什么需要软件项目计划? • 制定软件项目计划应考虑的因素 • 制定软件项目计划的步骤 • CMM对软件项目计划的要求 • 成功的和过于乐观的软件开发计划 • 案例分析及CASE工具 • 小结
第4讲 软件项目计划 什么是软件项目计划 • 什么是软件项目计划? • 软件项目计划的内容 • 软件项目计划制定的基础和依据 • 软件项目计划制定的时机 • 初步和详细的软件项目计划
第4讲 软件项目计划 什么是软件项目计划? • 软件项目计划是对软件项目实施所涉及的活动、人员的安排、任务的划分、开发进度、资源的分配和使用等方面作出的预先规划 • 活动和任务 • 资源及其安排 • 进度计划 • 进度计划与计划中的其他部分相关,是软件项目计划中最难以制定,对软件项目的实施影响最大,着重关注进度计划的制定
第4讲 软件项目计划 软件项目计划的内容(1/3) • 任务和开发活动 • 活动(技术活动和管理活动)以及它们之间的关系,来自过程剪裁 • 例如,需求分析,软件概要设计,软件详细设计等等 • 进一步细化,以描述完成工作详细、具体步骤及其逻辑顺序,如需求分析(需求调查、分析和建模、撰写文档、评审) • 进度计划 • 各项活动按什么样的时间进度开展实施:何时开始,何时结束 • 例如,需求分析:2002/8/1开始-2002/10/23结束 • 软件概要设计:2002/10/25开始-2002/11/23结束
第4讲 软件项目计划 软件项目计划的内容(2/3) • 资源使用和安排计划 • 如何针对不同活动的特点计划分配资源(人员、资金、设备等) • 哪些角色(项目经理、需求分析人员、软件设计人员),哪些人(小王,小李,老赵,小田,小谢) • 开发人员充当什么角色、负责和参与哪些活动 • 例如,张三作为需求分析小组负责人,负责和参与需求分析阶段工作;李四作为需求分析小组成员,参与需求分析的具体工作 • 例如,在需求分析阶段,投入3个人、预计投入资金10万元(包括人员薪水、外地出差费用) 、PC机3台、PC服务器1台
活动、资源和人员、进度等方面的计划是密切相关的活动、资源和人员、进度等方面的计划是密切相关的 注意 项目进度应该是宏观的,应该保留在一定的抽象层次,不宜过细、过于具体 对于软件开发而言,资源和人员与进度之间并不是线性关系 第4讲 软件项目计划 软件项目计划的内容(3/3) 人员和资源 时间进度 活动
软件开发过程 要完成的工作 约束和限制 制定软件开发计划 软件项目计划 第4讲 软件项目计划 制定软件项目计划的基础和依据 • 定义和剪裁的软件开发过程(及其细化) • 要完成的工作 • 工作说明和软件需求 • 历史数据和估算模型 • 估算工作量和成本 • 约束和限制条件 • 人员 • 资源 • 进度
第4讲 软件项目计划 制定软件项目计划的时机 • 在项目开始实施之时制定计划 • 明确了软件开发活动 • 明确了约束和限制条件 • 不明确要完成的工作,因为需求分析工作还没开始 • 制定软件项目计划的时机 • 项目开始之时:初步计划 • 需求完成之时:详细计划
第4讲 软件项目计划 初步和详细的软件项目计划(1/3)
第4讲 软件项目计划 初步和详细的软件项目计划(2/3) • 初步的软件项目计划 • 时机:项目开始(1-2周内)但是还没有获取完整和详细的软件需求 • 依据 • 项目的初步描述、用户需求的初步描述 • 定义和剪裁的过程 • 限制和约束 • 形式:仅仅计划最近(需求分析阶段或者4-6周之内)的软件开发计划
第4讲 软件项目计划 初步和详细的软件项目计划(3/3) • 详细完整的软件项目计划 • 时机:获取了详细、完整的软件需求 • 依据 • 软件需求规格说明书 • 定义和剪裁的过程 • 限制和约束 • 形式:提供了项目后期的详细、完整的计划
第4讲 软件项目计划 讲授内容 • 项目案例 • 什么是软件项目计划? • 为什么需要软件项目计划? • 制定软件项目计划应考虑的因素 • 制定软件项目计划的步骤 • CMM对软件项目计划的要求 • 成功的和过于乐观的软件开发计划 • 案例分析及CASE工具 • 小结
第4讲 软件项目计划 为什么需要软件项目计划? • 有序、可控制地对软件项目进行管理 • 生产高质量的软件产品 • 确保员工的士气高昂 • 确保员工保持高生产率 • 及时交付软件产品 • 降低软件开发成本 • 成功地进入市场 • 客户满意度 • 及时发布产品新版本
第4讲 软件项目计划 讲授内容 • 项目案例 • 什么是软件项目计划? • 为什么需要软件项目计划? • 制定软件项目计划应考虑的因素 • 制定软件项目计划的步骤 • CMM对软件项目计划的要求 • 成功的和过于乐观的软件开发计划 • 案例分析及CASE工具 • 小结
第4讲 软件项目计划 制定软件项目计划的方法 • 计划制定的二种方式 • 活动关系类型 • 估计活动的周期 • 确定里程碑 • 活动责任矩阵 • 描述进度计划 • 关键路径 • 参与、承诺和分发
第4讲 软件项目计划 软件项目计划制定的方式(1/3) • 自顶向下 • 自底向上
第4讲 软件项目计划 软件项目计划制定的方式(2/3) • 自顶向下 • 由一个或者一部分人单独完成 • 目的是服务于高层领导和用户,而不是项目组 • 主要依据项目进度的要求和约束,针对项目中的重大活动(如需求分析、软件设计等)而制定的一个粗略的软件项目计划 • 只能作为目标进度表,不能作为实施进度表
第4讲 软件项目计划 软件项目计划制定的方式(3/3) • 自底向上 • 计划由计划制订者负责,所有项目组成员参与制定 • 一般供项目组,用于实际项目的实施 • 要求项目组成员事先了解和认可 • 详细定义了计划中的所有活动(不仅仅是哪些重大活动),明确了活动的参与者、持续时间以及活动之间的关系
第4讲 软件项目计划 软件开发活动关系的类型 • 什么是软件开发活动关系? • 活动关系描述了活动之间的逻辑和执行时序 • 活动之间有哪些关系? • 结束到开始 • 开始到开始 • 结束到结束 • 开始到结束
第4讲 软件项目计划 结束到开始
第4讲 软件项目计划 开始到开始
第4讲 软件项目计划 结束到结束
第4讲 软件项目计划 估算活动的周期(1/4) • 细分活动 • 活动的粒度越小,估算的准确度就会越高 • 借鉴历史数据 • 积累历史数据 • 使用估算模型 • 例如,CoCoMo模型 • 考虑缓冲时间 • 缓冲时间保证项目按照计划有足够的时间来完成活动
第4讲 软件项目计划 估算活动的周期(2/4) • 缓冲时间 • 意外事件的缓冲 • 意外事件可能会发生(如全企业的培训) • 例如,需求分析计划从8.1开始共需20个工作日,应该8.29日完成,但中间公司要开展2天的全员培训,因此8.31结束 • 节假日时间的缓冲 • 例如,编码计划从9.31开始,工作量为10个工作日,因为国庆放假1周,因此,应该计划在10.21日完成 • 不要在计划中考虑加班时间,加班是不可避免得,但是考虑了加班,可能会发生更多的加班
第4讲 软件项目计划 估算活动的周期(3/4) • 综合考虑其他因素 • 考虑节假日 • 以工作日(而不是星期)规定活动周期 • 考虑参与活动团队的教育、培训、经验和技能水平 • 考虑教育和培训需要 • 考虑评审所化的时间 • 考虑传播时间 • 考虑团队中成员的其他工作 • 考虑硬件、工具和人员的效率 • 考虑活动的迭代和重复 • 活动之间有一定的缓冲……
分析和设计40%-50% 测试和调试30%-40% 编码 10%-20% 第4讲 软件项目计划 估算活动的周期(4/4) • 工作量的分布
第4讲 软件项目计划 确定里程碑(1/3) • 什么是软件开发的里程碑(milestone) • 软件项目实施过程中的重大事件,这些事件有助于了解项目实施的进展情况 • 例如,某个重要活动的开始和结束 • 有哪些典型的里程碑 • 活动 • 需求分析、概要设计、详细设计、编码 • 检查点 • 开始和结束
第4讲 软件项目计划 确定里程碑(2/3) • 为什么需要关注里程碑 • 获取对项目实施的整体了解 • 便于向高层管理者汇报项目进展情况 • 如何获取里程碑 • 来自于项目高层计划,或者从项目计划中抽取 • 确定你要关注的活动以及检查点
第4讲 软件项目计划 确定里程碑(3/3) • 里程碑的例子 • 需求分析通过评审并正式批准,标志需求分析工作的完成,后续阶段工作的开始 • 软件设计规格说明书通过评审并且得到批准,标志软件设计工作完成,后续工作的开始
第4讲 软件项目计划 活动责任矩阵(1/4) • 在制定软件项目计划时要定义活动责任矩阵 • 什么是活动责任矩阵 • 一种表示方法,用于定义了执行、评审和批准软件项目活动及其相关软件产品的角色和人员
第4讲 软件项目计划 活动责任矩阵(2/4) • 活动责任矩阵的例子
第4讲 软件项目计划 活动责任矩阵(3/4) • 活动责任矩阵的例子(续)
第4讲 软件项目计划 活动责任矩阵(4/4) • 为什么需要定义活动责任矩阵 • 是软件项目计划的一个组成部分 • 明确、清晰说明项目的职责区域 • 帮助项目组成员了解他们的任务和职责,以及要参与的工作 • 帮助项目组成员了解与其相关的人员 • 帮助项目组成员预计其工作量
第4讲 软件项目计划 描述项目进度计划 • 甘特图 • 网络图
第4讲 软件项目计划 甘特图(1/2) • 甘特图是一个图形化的任务表示方式,分为二个部分来显示任务计划 • 左部的工作表,以文字方式显示任务信息,如任务名称,开始和结束日期等 • 右边的图表,以条形图方式显示任务信息
第4讲 软件项目计划 甘特图(2/2)
第4讲 软件项目计划 网络图(1/2) • 网络图是一个图形化的任务表示方式 • 框表示任务,框内用文字显示任务信息,如任务名称,开始和结束日期等 • 框间的连接,表示任务之间的相关性
第4讲 软件项目计划 网络图(2/2)
第4讲 软件项目计划 甘特图和网络图的区别 • 甘特图和网络图是等价的,可以相互转换 • 甘特图的特点 • 更能直观的显示任务的进程 • 网络图的特点 • 更能展示任务之间的相关性
第4讲 软件项目计划 关键路径(1/3) • 什么是关键路径? • 是指从起始任务开始,到结束任务为止的、具有最长长度的路径 • 关键路径1:A-D-H; 关键路径2:A-E-F-G-H
第4讲 软件项目计划 关键路径(2/3) • 为什么要考虑关键路径? • 关键路径上活动的进度直接影响到整个项目的进度 • 如果关键路径上活动的进度受到影响,那么整个项目的进度肯定会受到影响 • 要缩短项目的开发周期,必须加快关键路径上活动的开发进度