720 likes | 833 Views
计算机软件培训讲座. 软件项目开发管理. 陈 志 成 北京东方瑞威科技发展有限公司 2007.03.24. 讲座内容. 一、 项目管理相关概念 二、 软件项目管理系统 三、 项目管理层次结构 四、 研发部的建设方面. 一、项目管理的相关概念. 1.1 什么是项目 ?. 根据美国项目管理协会 (PMI) 的定义: 项目是为完成某一独特的产品或服务所做的一次性努力。 从根本上说,项目就是一系列的相关工作。 项目管理是 20 世纪 40 年代以后迅速发展起来的一门科学,是现代管理学中的一个重要分支。
E N D
计算机软件培训讲座 软件项目开发管理 陈 志 成 北京东方瑞威科技发展有限公司 2007.03.24
讲座内容 一、项目管理相关概念 二、软件项目管理系统 三、项目管理层次结构 四、研发部的建设方面
1.1 什么是项目? • 根据美国项目管理协会(PMI)的定义:项目是为完成某一独特的产品或服务所做的一次性努力。从根本上说,项目就是一系列的相关工作。 • 项目管理是20世纪40年代以后迅速发展起来的一门科学,是现代管理学中的一个重要分支。 • 中国项目管理研究委员会对项目的定义是:项目是一个特殊的将被完成的有限任务。它是在一定时间内,满足一系列特定目标的多项相关工作的总称。根据这个定义,项目实际包含3层含义: (1)项目是一项有待完成的任务,有特定的环境和要求; (2)在一定的组织机构内,利用有限资源(人力、物力、财力等),在规定的时间内(指项目有明确的开始时间和结束时间)为特定客户完成特定目标的阶段性任务; (3)任务要满足一定性能、质量、数量、技术指标等要求。
项目的独特性。 项目的一次性。 项目的组织性。 项目的生命期。 项目的资源消耗性。 项目的目标冲突性。 项目后果的不确定性。 范围 要求 目标 成本 预算 费用 完成 期限 时间 项目的基本特征:
1.2 什么是项目管理? • 按PMI的定义:项目管理就是“在项目活动中运用一系列的知识、技能、工具和技术,以满足或超过相关利益者对项目的要求”。 • 中国项目管理研究委员会对项目管理总结为:“项目管理”一词具有两种不同的含义,其一是指一种管理活动;其二是指一种管理学科,前者是一种客观的实践活动,后者是前者的理论总结;前者以后者为指导,后者以前者为基础。 • 项目管理贯穿整个项目的生命期,是对项目的全过程管理。
项目管理的特点: • 项目管理的对象是项目。 • 系统工程思想贯穿项目管理的全过程。 • 项目管理的组织:具有一定的特殊性。 • 项目管理的体制是基于团队管理的个人负责制,项目经理是整个项目组中协调、控制的关键。 • 项目管理的要点是创造和保持一个使项目顺利进行的环境,使置身于这个环境的人们能在集体中协调工作以完成预定的目标。 • 项目管理的方法、工具和技术手段具有先进性。
1.3 项目管理的基本内容 • PMI编写的《项目管理知识体系》将项目管理划分为9个知识领域:范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、采购管理、风险管理和综合管理。 • 而中国项目管理研究委员会则将项目管理的内容概括为2个层次、4个阶段、5个过程、9大知识领域、42个要素及多个主体。
项目管理的基本内容 1. 项目综合管理项目 其包括3个基本的子过程:制订项目计划;项目计划执行;综合变更控制。 2.项目范围管理PMBOK将其分成5个阶段:启动;范围计划;范围界定;范围核实;范围变更控制。 3.项目时间管理PMBOK提出,项目时间管理由下述5项任务组成:活动定义;活动排序;活动时间估计;项目进度编制;项目进度控制。 4.项目成本管理 包括以下4个过程:制订资源计划;成本估计;成本预算;成本控制。 5.项目质量管理 主要包括以下4个过程:质量规划;质量控制;质量保证;全面质量管理。
项目管理的基本内容 6.项目人力资源管理 包括如下几个主要的过程:人力资源规划; 招聘与解聘; 筛选; 定向; 培训; 绩效评估; 职业发展; 团队建设。 7.项目风险管理PMBOK将其归纳为4个主要过程:风险识别;风险估计;风险应对计划;风险控制。 8.项目沟通管理 包括如下一些基本的过程:编制沟通计划;信息传递;绩效报告;管理收尾。 9.项目采购管理 主要包括:编制采购计划;编制询价计划;询价;选择供应商;合同管理;合同收尾。
1.4 项目管理的成功因素 • 范围(Scope) • 时间(Time) • 成本(Cost) • 质量(Quality)
1.5 软件项目管理的特点: • 软件项目将限制在以软件开发、集成和实施为主要目的的项目范围内。 • 软件项目具有自己非常明显的特点:阶段性(紧迫性)、独特性和不确定性。 • 软件项目管理和其他项目管理相比,具有很大的独特性: • 生产无形的产品生产无形的产品 • 过程没有明显的划分 • 大都是“一次性”的人力消耗型项目
1.6 软件项目管理的主要活动 软件项目管理主要的活动包括: l编写项目建议书 l项目成本的度量 l项目计划和进度安排 l项目监控和复审 l人员选择和评估 l项目报告的准备和发布
供决策参考 项目开发准备阶段 项目咨询人员 调查研究阶段 项目咨询人员 项目专业管理人员 提出可行性分析 项目分析阶段 项目专业管理人员 软件设计人员 项目设计阶段 软件设计人员 操作人员 项目实施阶段 修改意见 操作人员 维护与评价阶段 新的项目准备 软件项目的开发阶段 软件项目开发阶段
1.7 软件项目的组织结构 • 软件项目的组织结构 • 项目经理 • 产品项目组 • 主程序员组 • 程序员的工作效率
软件项目总监 程序项目经理 程序项目经理 质量项目经理 软件项目经理 软件项目经理 软件项目经理 QA1 QA2 QA3 软件项目经理 产品组 负责人 产品组 负责人 产品组 负责人 软件项目的组织结构
1.8 程序员的工作效率 • 项目经理的基本职责可以归纳为领导项目的计划、组织和控制工作,以实现项目的目标,即项目经理领导项目团队完成项目目标,项目经理需要协调各个团队成员的活动,使这些成员成为一个和谐的整体,履行各自的工作。 • 在软件项目中对工作效率的度量主要是采取间接测量的方法。几种常用的间接测量方法有: l每人月代码行(LOC) l每人月编的目标指令(OI) l每人月写的文档页数(POD) l每人月测试和执行的错误数(T&E)
分析时间 设计时间 编码时间 测试及编写文档时间 项目开发时间 1.9 软件项目开发周期 • 总开发时间包括分析和设计时间、编码时间、测试时间和编写文档的时间,其中编码时间只是其中的一部分,关系如图。
1.10 软件项目开发模型 • 瀑布模型 • 原型模型 • 螺旋模型
软件项目开发模型 (1) 瀑布模型: 是美国Winston Royce向IEEE WESCON(Royce, Winston 1970)提交的一篇名为《管理大规模软件系统的开发》的论文中首次提出的。 由于这种方法是从一个阶段成瀑布流入下一个阶段,所以这个模型就称为“瀑布模型”。 瀑布模型有很多的变化,包括以下的阶段: • 需求分析与定义, • 系统设计与软件设计, • 系统实施与单元测试, • 系统集成与系统测试, • 系统运行与系统维护。
需求分析 与定义 系统设计与 软件设计 系统实施与 单元测试 系统集成与 系统测试 系统运行与 系统维护 软件开发瀑布模型及不同阶段之间的交互 瀑布模型:
软件项目开发模型 (2) 原型模型(Prototype): l直观、形象,更多地遵循了人们认识事物的规律,因而更容易被人们接受。 l采用模拟的手段,缩短了用户和系统分析、设计人员之间的距离。 l在整个系统开发过程中反馈是及时的,标准是统一的,可及时地暴露问题,确保系统实现的正确性。 l充分利用了新一代的软件工具,使得系统开发和运行的效率都大大提高。
用户提出系统需求 识别并归纳用户需求 快速开发一个模型 重新设计或选择模型 修改模型 评价模型 模型不可行 模型不满意 满意 确定模型后的处理 系统运行、维护 原型法的基本过程 原型模型的基本过程
成本 过程迭代 确定下阶段目 标和约束条件 风险分析、构造原型 风险分析 风险分析 风险分析 可用原型 原型3 风险分析 原型2 原型1 评审 建模 需求计划 模拟 操作概念 评价 软件需求 开发计划 需求确认 详细 设计 软件产品设计 集成与测试计划 编码 设计确认与验证 单元 测试 集成 测试 接收 测试 制订下阶段计划 实现 开发、验证阶段 软件产品 软件项目开发模型:(3) 螺旋模型
2.1 项目管理系统的必要性 • (1)项目管理系统用于进行工作的派分,执行情况的跟踪,效果的监控,对项目的整个实施过程的进行管理。执行中可以及时报告工作的进展情况和帮助公司的管理和决策人员对资源进行合理分配。 • (2)通过对软件工程项目的管理,可以避免软件公司因为人员的流动对公司造成的巨大损失。同时因为管理系统记录了项目的详细过程信息,也为项目以后的升级和完善提供了宝贵的可供查询的第一手资料。 • (3)软件项目管理系统的价值体现在: • 增加项目进度可控性,降低项目风险 • 提供绩效考核和项目任务分派的依据 • 以电子PM协助人工PM,(注:PM指项目管理) • 公司领导层对所有项目情况可即时掌控 • 领先的配置管理,提高软件质量
项目管理系统的介绍 声明: • 目前公司软件存在部分问题是由于技术原因导致的,但是也有部分问题是由于软件管理、版本混乱引起的。 • 以我开发项目的经历为例进行说明,采用的项目管理模式基本上类似与微软的模式,但没有他们那样强大。 • 介绍项目管理系统,并不意味着大家一定也要开发这样一个系统,根据公司情况进行辨证吸收、适当借鉴、灵活运用到管理中去。 • 由于人工管理的“灵活性、难于统计”,所以利用管理系统来进行管理更为客观、重要的便于统计、查询进展状态。
2.3 项目管理系统的功能特征 • 预警功能——系统监控 • 系统每日自动进行预警试算,及时发现项目执行过程中的问题,加强项目执行过程的监控。 • 预警项的值用户可以定制,具体内容的内容包括: • 任务进度比时间进度慢 • 任务超时 • 添加记录不及时 • 审核处理时间超期 • 工作饱和度超差 • 工作确认不及时 • 任务超过开始时间未执行 • 任务分解——工作分解,责任到人
项目管理系统的功能特征 (2) 项目人员组织结构——灵活的人力资源配置 • 兼容职能型人力资源结构和项目型人力资源结构特征,符合矩阵型人员组织结构特征。 (3) 互审机制——共同认可 • 项目和任务都有两个重要的角色:负责角色和管理角色 • 项目中:项目主管(负责角色),直属领导(管理角色) • 任务中:任务负责人(负责角色),任务管理者(管理角色) • 系统中的所有工作的分配,执行过程的变更和最后完成,都需要两个角色(执行角色和管理角色)互相审核,双方同意。
项目管理系统的功能特征 (4) 与CVS有机结合——与源代码管理无缝结合 • 记录用户Checkin到CVS源代码文件,可以查看这些文件的历史,下载,并可以对比不同版本文件的差别。 (5) 项目文档管理 • 项目和任务的管理重视文档的管理,文档作为工作的输入,并要求输出文档(完成的要求)。并可以进行文档查询和输出文档的汇总。 (6) 关键路径计算——标识项目实施过程中的风险 • 计划的关键路径在执行过程中会发生变化,可能一个很小的任务不在关键路径上,但在实施过程中,此任务严重滞后,就可能变成关键路径。本系统在项目的执行过程,动态绘出项目的关键路径,提示项目主管注意关键路径上的任务。
项目管理系统的功能特征 (7) 模板功能——借鉴专家知识,简化任务分解 • 项目模板,一个可以直接复制的任务分解结构图,可以: • 标准化项目过程执行 • 借鉴专家经验,为任务分解提供参考,为项目划分提供指导 • 授权功能——临时转交自己负责的工作 • 通过功能将自己负责或者管理的任务临时转给其它人。对于临时请假和出差的用户非常方便,避免了一些工作因为本人不在而导致不能及时处理。
项目管理系统的功能特征 (8) 项目试算功能——可以提前预知变化对项目实施产生的影响 • 根据用户对任务(可以多个)几个参数值的变更,计算出此变更对整个项目的影响。 根据计划开始时间,计划完成时间,每日投入,完成进度,当前时间动态计算给出此次更改对项目和其它任务产生的影响。 (9) 与Email系统结合并记录用户操作日志 • 系统的每个操作会实时发送Email通告相关人员,同时将用户的操作记录保存成日志。此功能的使用还可以灵活配置。
3.1 项目的体系结构 项目的体系结构为树型结构,包括 项目、阶段、任务 三层: • 第一层:项目(信息类别包括:基本,文档,人员,预警) • 第二层:阶段(或模块) (隶属于项目) 有时序关系的称为“阶段”,如是功能结构上的划分,称为“模块”。阶段和模块同属于一个层次,本文暂时以阶段为例进行说明。 • 第三层:任务(隶属于阶段或模块) 其中:任务层的任务可以无限层次划分。
各层次的概念 (1) 项目概念 • 项目是项目管理系统中最大的管理单元,一般是具有特定目的的工程,主要指一个成型(整体)的软件产品。 (2) 阶段概念 • 阶段体现了我们在做一个项目的时候里程碑的概念。阶段必须在项目下,由项目主管负责创建,项目较大的项目一般有多个阶段,个别小项目可以没有阶段。 模块属性 • 模块是按照软件产品的结构、功能模块对项目进行细分,以便按照模块化的思想设计和生产软件产品。模块应该是有完整界面(接口)、提供一组完整,并且相关的功能的程序。每个模块都会从属于相应的项目。 (3) 任务概念 • 任务是项目系统最基本的工作单位和执行单位,每个人的工作是通过他本人负责的任务来体现的。
人员结构 • 项目的人员结构如下图所示,主要包括:项目主管,直属领导,相关领导,多个工作组(组长,组员)
文档结构 项目的文档分三个部分: (1) 设计文档:关于项目的设计与实现思路方法、详细过程。 (2) 参考文档:同类项目的已有参考文献。 (3) 验收文档:项目的完成情况验收情况 其中,设计文档和参考文档作为项目的输入信息(做什么,如何做),验收文档为项目的输出,是必须提交文档。
项目预警 • 每个项目都有自己的预警配置,配置项目包括: • 任务进度比时间进度慢 • 任务超时 • 添加记录不及时 • 审核处理时间超期 • 任务超过开始时间未执行 • 当系统执行过程中发生了进度等偏差会及时通报给相关人员,预警方式采用的是项目线和人事线双层预警,如下图所示,当满足某个条件就会预警并且会逐步升级。