《精编》计算机软件项目管理

软件项目管理 主讲人 张小平 2007年7月 目录第一章导论第二章软件项目需求管理第三章软件项目成本估算第四章软件项目进度管理第五章软件项目配置管理第六章软件项目质量管理 第一章导论 1 软件工程软件 是与一个系统 特别是一个计算机系统有关的程序 软件工程 是一类求解软件的工程 它应用计算机科学 数学 管理科学等原理 借鉴传统的原理 方法 创建软件 以达到提高质量 降低成本的目的 使计算机设备的能力借助于软件成为对人类有用的东西 解释 工程科学用于制定规范 设计模式 评价成本及确定权衡 计算机科学 数学用于构造模型和算法 管理科学用于计划 资源 质量 成本等管理 1 软件工程目标软件工程的目标 是 生产正确 可用及具经济效益的产品 2 软件工程活动软件工程的活动是指生产一个最终满足需求且达到工程目标的软件产品所需要的步骤 主要包括问题定义 可行性研究 需求分析 设计 实现 确认 支持等 软件生产发展过程 20世纪50 60年代 程序设计时代20世纪60 70年代 程序系统时代20世纪70 80年代 软件工程时代20世纪80年代至今 2项目管理 1 管理管理 是使事物的发展从混乱无序走向有序有效发展的方法 是一种有生命力的并能实现复杂的企业目标的方法 2 项目项目 是指在一定约束条件 费用 时间 质量 资源等 下具有特定目标的一项一次性任务 项目 是新企业 新产品 新系统和新技术的总称 特点 一次性 单件性 目标性 成果性目标和约束性目标 和可管理性 环境变化与效益的关系 项目的生命周期 启动 计划 实施和结束 3 项目管理PMI的定义 在项目活动中运用一系列的知识 技能 工具和技术 以满足或超过相关利益者对项目的要求 项目管理过程 初使过程 计划过程 执行过程 控制过程和关闭过程 项目管理任务 协调并完成项目对范围 时间 成本 风险及质量这些相互矛盾的任务的要求 确保能够满足需求和达到预期目标 项目管理的特点 1 综合性 2 创造性 3 时间性项目管理的制约因素 1 范围 2 时间 3 成本 4 质量 5 组织及客户满意度 4 项目管理知识体系以欧洲为首的体系 国国际项目管理协会IPMA InternationalProjectManagementAssociation 项目管理专业人员取证分为A B C D四级A 工程主任级证书B 项目经理级证书C 项目经理工程师级证书D 项目管理技术员级证书以美国为首的体系 美国项目管理学会PMI该知识体系把项目管理分为9个知识领域 集成管理 范围管理 时间管理 成本管理 质量管理 人力资源管理 沟通管理 风险管理 采购管理 3软件项目管理 1 软件项目产品的特点1 抽象性2 缺陷检测的困难性3 高度的复杂性4 缺乏统一的规则 2 软件项目管理的必要性1 软件失控项目软件项目在实施中 较大地突破了项目的主要约束指 2 软件项目失控的原因需求不明确 计划和估算失误 盲目采用新技术 管理方法 软件性能 团队组织 人际因素 3 软件项目管理1 软件项目管理的定义在软件项目活动中运用一系列知识 技能 工具和技术 以满足软件需求方的整体要求 2 软件项目管理的过程启动软件项目制定项目计划跟踪及控制项目计划评审项目计划编写管理文档 3 软件项目管理的内容软件项目需求管理软件项目估算与进度管理软件项目配置管理软件项目风险管理软件项目质量管理软件项目资源管理 第二章软件项目需求管理 1 软件需求 1 软件需求概念定义 软件需求是系统或软件必须达到的目标和能力 1997年版IEEE软件工程标准词汇表需求定义如下 用户解决问题或达到目标所需的条件和能力 系统或系统部件要满足合同 标准 规范或其他正式文档所需具有的条件或能力一种反映上面第一点或第二点所描述的条件或能力的文档说明以下五项内容确定一组完整的软件需求 1 系统的输入 2 系统的输出 3 系统的功能 4 系统的属性 5 系统环境的属性 2 软件需求在软件项目中的作用 2 需求工程 1 需求工程产生与发展定义 需求工程是一个包括创建和维护需求文档所必需的所有活动的过程 是将用户非形式化的软件需求转变为形式化的需求规格说明的过程 特点 软件需求不再仅限于软件开发的最初阶段 而是贯穿于软件项目开发的整个生命周期 是软件工程的子领域 另一个定义 需求工程是应用已证实有效的技术 方法确定用户需求 进行需求分析 帮助分析人员理解问题并定义目标系统的所有外部特征的一门科学 发展 1 对象化是指需求模型及其构造方法的对象化 2 形式化是具有严格数学基础的描述系统特征的方法 具有准确 无二义性的特点 有助于验证有效性和完整性 3 自动化随着软件工程的自动化程度的提高 需求工程逐渐进入自动化 2 需求工程研究内容需求工程的目标两个主要任务 1 通过对问题及其环境的理解 分析和综合 建立分析 系统 模型 2 在完全弄清用户对软件系统的确切要求的基础上 用SRS SoftwareRequirementSpecification 把用户的需求表达出来 需求工程的层次分解 需求工程分为需求开发和需求管理 3 需求管理需求管理的必要性1 需求供求双方固有的矛盾软件专业人员的技术性导致需求供求双方达成共识困难 2 需求具有易变性难以表达性软件项目中40 60 的问题都是在需求分析阶段埋下的祸根 软件中潜在的缺陷需求缺陷比例最大 3 需求错误出现的高频性和修复的高昂成本需求的错误 如果在软件项目进行到后期才发现 修复费用是非常可怕的 甚至会超出项目本身的费用 在维护阶段修复的成本是需求阶段修复成本的100 200倍 软件缺陷修复成本 需求管理的目标和原则1 需求管理的目标 使软件需求受控 并建立供软件工程和管理使用的需求基线 使软件计划 产品和活动与软件需求保持一致 2 需求管理的原则需求管理遵循的五条原则 需求一定要分类管理 需求必须分优先级 需求必须文档化 需求一旦变化 就必须对需求变更的影响进行评估 需求管理必须与需求工程的其他活动紧密整合 3 需求管理活动需求管理在需求开发的基础上进行的 贯穿于整个软件项目过程 需求管理内容 A 需求识别 B 变更管理过程 C 需求跟踪 D CASE工具选择 需求管理是一个对系统需求变更和控制的过程 需求管理活动 软件项目估算估算是指通过预测构造软件项目所需工作量的过程 1 估算的意义软件项目估算包括工作量估算和成本估算两个方面 以成本估算笼统的表示 一个成功的项目 应该在工程允许的范围内满足成本 进度和质量目标的要求 而不需要对它的进度或预算进行增补 软件项目工作量估算的失真 将导致软件成本上升 开发周期延长 从而使项目管理失效 2 估算的作用 初步的估算用于确定软件项目的可行性 详细的估算用于指导项目计划的制定 第三章软件项目成本估算 3 估算的时机软件产品的生命周期的5个阶段 计划软件产品 开发软件产品 验证软件产品 使用软件产品和淘汰软件产品 10个子阶段 客户需求 产品定义 系统设计 系统实现 系统测试 系统评审 系统运行 系统维护 系统升级和系统变更 4 软件规模软件规模 软件的程序量 是软件工作量的主要影响因素 两种软件度量标准 代码行 LOCLinesofCode 功能点 FPFunctionPoints 1 代码行代码行分为无注释的源代码行 NCLOCNon CommentedSourceLinesOfCode 和注释代码行 CLOCCommentedSourceLinesOfCode 源代码总行数 LOC NCLOC CLOC KLOC 1000 xLOC软件规模 KDSI Kilo ThousandsofDeliveredSourceInstructions 千行代码指令 代码行 1LOC 价值和人月均代码行数可以体现一个软件生产组织的生产能力 2 功能点是在系统需求阶段基于系统功能的一种 宏观 规模估算方法 通过研究初始应用需求来确定各种输入 输出 查询 外部文件和内部文件的数目 从而确定功能点数量 未调整 源 的功能点数 UFCUnadjustedFunctionPointsCount 的计算步骤 计算所需要的输入 输出 查询 外部文件和内部文件数量 对项目的复杂性划分为 简单 一般 复杂三种情况 UFC 功能点中各项数量 功能点中各项复杂性权重 功能点计算步骤 非功能性技术复杂度因子 TCFTechnicalComplexityFactor 有14个组成部分 A1 A14 每部分对应6个级别 TCF 0 65 0 01 Ai 0 65 1 35 Ai 0 5 i 1 14 功能点 FP UFC TCF功能点有助于在软件项目的早期做出规模估算 5 软件生产率影响因素软件生产率因素 影响每个人月平均完成代码数量的因素 软件生产率因素受到软件产品类型 技术 软件项目规模 代码量 和软件变更的程度影响 环境因素对生产率的影响也较为显著 如开发环境面积 安静程度 私密程度 受干扰程度等 软件规模和产品类型对生产率的影响 软件变更和产品类型对生产率的影响 生产率因素 生产率因素 从IBM500多个System 370项目的数据中总结的相关生产率因素表 可见 大型语言编译器的生产率是小型数据通信程序的4倍 4 0 1 0 新增的或大部分经过修改的语言程序的生产率是修改较小的数据通信程序的4 7倍 6 6 1 4 生产率数据的获取步骤如下 1 选择一些最近完成的 并且与待完成项目相似的项目 2 获得各项目的LOC数据 3 对于更改过的项目 记录更改代码所占比例 仅计算新增或更改部分KOC数量 4 计算投入到每个项目的人员数 5 计算各个项目的软件生产率 即LOC PM 每个人月生产代码的数量 进而求出平均值作为类似项目的典型软件生产率 6 软件项目成本估算1 成本估算方法 开发成本 工作量 劳动力成本 工作量与系统规模和生产效率有关 考虑因素 材料 人力 实施 固定 可变等成本 系统免维护期结束成本 开发成本 维护成本2 算法模型数学模型 工作量 a0 a1x1 a2x2 anxn 成本驱动因子的若干变量的函数 专家判定 求中值或平均值 召开小组会议 Delphi技术 WidebandDelphi技术 任务单元法样 自底向上 例 7 COCOMO ConstructiveCOstModel 构造性成本模型 模型1 原始COCOMO模型COCOMO模型包括 基本 中级和详细模型三个子模型 COCOMO模型是一个采用自底向上的方法进行估算的模型 E aSb EAFE是以人月为单位的工作量 S是以千行源代码 KLOC 计数的程序规模 EAF EffortAdjustmentFactor 是一个工作量调整因子 EAF在基本模型中取值1 a和b是两个随开发模式而改变的因子 三种开发模式 有机式 Organic 半分离式 Semidetached 嵌入式 Embedded 基本COCOMO模型工作量的计算公式 E aSbE PM 工作量 1PM 19人日 152人时 8时 日 1 12人年 S KLOC 程序规模 a b是随开发模式而改变的因子 开发时间的计算公式 t cEd t以月计 c d是随开发模式而改变的因子 开发模式ab有机式2 41 05半分离式3 01 12嵌入式3 61 20 三种开发模式在基本COCOMO模型中的取值 通过统计63个历史项目的历史数据 得到如下计算公式 开发模式cd有机式2 50 38半分离式2 50 35嵌入式2 50 32 开发时间参数 中级COCOMO模型在基本COCOMO模型的基础上 考虑了软件开发环境的因素 引入15个成本驱动量 附加预测量 分为四大类 产品 计算机 人员 项目 工作量计算公式 E aSb EAFEAF是工作量调整因子 调整前的工作量aSb称名义工作量 15个成本驱动量 分为四类 产品 计算机 人员 项目 每个有6个等级 即 很低 低 一般 高 很高 非常高 每个成本驱动量对应一个等级有一个取值 EAF 15个成本驱动量的评分值 部件估算 自底向上 E EiEi是第i