专业课程-软件过程管理

内容纲要

软件过程管理

第一章-软件过程规范

过程:将一组输入转化为输出的相互关联或相互作用的活动
软件过程是人们用来开发和维护软件及相关产品的活动、方法、实践和改进的集合
软件过程规范可以确保过程活动的一致性、有效性和持续性

软件过程

  1. 过程定义
    • 输入
    • 实施活动
    • 输出
  2. 软件过程的分类和组成
    • 分类
      • ISO/IEC12207
        • 基本过程
        • 支持过程
        • 组织过程
      • ISO/IEC15504
        • 工程过程
        • 支持过程
        • 管理过程
        • 组织过程
        • 客户-供应商过程

          基本过程:工程过程、客户-供应商过程
          组织过程:组织过程、管理过程

      • CMMI过程域
        • 工程管理(最基本)
        • 支持管理
        • 项目管理
        • 过程管理

过程规范

什么是过程规范

  1. 过程规范是对输入/输出和活动所构成的过程进行明文规定或约定成俗的标准
  2. 软件过程规范是软件开发组织行动的准则和指南
    • 软件基本过程规范
    • 软件支持过程规范
    • 软件组织过程规范
  3. 软件过程规范建立在软件组织之上
  4. 软件过程规范的建立
    • 软件成熟度模型CMM
    • 个体软件过程PSP
    • 团队软件过程TSP
    • 能力成熟度模型集成CMMI
    • IBM-Raional的统一过程(RUP)
    • 极限编程
    • 微软解决方案框架(MSF)

过程规范的影响和作用

  1. 积极
    • 帮助团队实现共同目标
    • 帮助团队建立统一、协调、规范的行动与工作方式
    • 提高软件组织的生产效率
    • 确保过程活动的一致性、有效性和持续性
  2. 消极
    • 可能会对过程的创新、技术创新有约束
    • 软件过程规范能保证正确地做事,但是不保证能做正确的事

软件过程建模

基于UML的过程建模

UML:统一建模语言(Unified Modeling Language)是一种过程建模的描述语言

  1. 表示和描述系统
    • 用户模型视图:从用户视角表示系统,用例描述使用场景
    • 结构模型视图:从系统内部分析数据和功能,静态结构建模
    • 行为模型视图:描述系统动态或行为方面的各种元素间交互和协作关系,动态结构建模
    • 实现模型视图:针对如何构建系统的结构和行为时的表示
    • 环境模型视图:表示带实现的系统环境的结构和行为
  2. 视图对应的模型
    • 用例模型用例图、序列图、协作图、状态图和活动图
    • 分析模型:类图、对象图、序列图、协作图、状态图和活动图
    • 设计模型:类图、对象图、序列图、协作图、状态图和活动图
    • 开发模型:配置图、序列图和协作图
    • 实现模型:组件图、序列图和协作图
    • 测试模型:全部
  3. UML图
    • 用例图
    • 序列图
    • 协作图
    • 状态图
    • 活动图
    • 类图
    • 对象图
    • 组件图
    • 包图

第二章-软件过程成熟度

过程成熟度标准

  1. 概念

    • 软件过程能力指遵循软件过程实现预期结果的程度
    • 软件过程性能指遵循软件过程执行的实际结果
    • 软件过程成熟度是指对具体软件过程进行明确定义、管理、度量和控制的有效程度
    • 成熟度代表着软件过程能力改善的能力
  2. 软件过程不成熟的特点

    • 软件过程能力低
    • 过程性能的不可预见性,不清楚每个阶段进出的标准、执行的方法和准则
    • 过程的不稳定性
    • 过程的被动性、缺乏改进的主动性
  3. 软件过程成熟的标准

    • 软件过程能力高
    • 软件过程性能可预见性
    • 软件过程规范化:有可遵循的标准、规则和指导性原则
    • 过程的一致性、丰富性、可视性、稳定性、不断改进

能力成熟度模型概述

CMM(软件过程能力成熟度模型)是一种描述有效软件过程的关键元素的框架,将软件过程、软件过程能力、软件过程性能、软件过程成熟度等概念集为一体

  1. 建立目的:以可重复的方式判断组织软件过程的成熟度
  2. 基本内容
    • 成熟度等级(Maturity Levels):五个等级提供了CMM的顶层结构
    • 关键过程域(KeyProcessAreas):每个等级由若干KPA组成,每个KPA标识一串相关活动
    • 关键实践(KeyPractices):每个KPA用若干KP进行描述
    • 共同特点(CommonFeatures):将关键实践分别归入五个CF
      • 执行约定
      • 执行能力
      • 执行活动
      • 测量和分析
      • 验证实施
  3. 系统工程能力模型SECAM
  4. 集成化产品开发模型IPPD
  5. 能力成熟度模型集成CMMI
    • 在CMM基础上,将现有的各种CMM集成到一个框架下
    • 在软件和系统工程之间实现了较高的集成化程度
    • 相对CMM的改变
      • 名称:关键过程区域(KPA)->过程区域(PA)
      • 目标
        • 通用目标
        • 特定目标
      • 实践
        • 通用活动
        • 特定活动

过程成熟度级别

  1. 五个等级

    • 初始级:有明显的不成熟过程的特点
    • 可重复级:已建立软件项目的方针和实施规程
    • 已定义级:组级
      • 一个已经定义的软件过程包含一组协调的、集成的、适度定义的软件工程过程和管理过程,软件过程被集成为一个有机整体
    • 定量管理级(已管理级):量化的管理过程
      • 可以建立度量分析体系对过程进行有效的定量控制和管理
    • (持续)优化级:过程的不断改善
  2. CMMI过程域

    • 工程管理(最基本)
    • 支持管理
    • 项目管理
    • 过程管理

软件过程的可视性

  1. 如何理解软件过程的可视性
    软件过程的管理依赖于软件过程的可视性,因为软件过程越透明,过程状态的实际情况就越清楚,过程越容易得到控制。如果软件过程不透明,项目的管理就主要依赖于掌握第一手材料的人,有一定的局限和不稳定性。所以,软件过程的可视性在软件过程的管理中具有重要性

  2. 软件过程不同程度的可视性(由软件过程的成熟度等级揭示)

    • 初始级
    • 受管理级
    • 已定义级
    • 已管理级
    • 持续优化级

软件过程框架

软件过程环境和过程框架

软件过程环境是保证软件过程基本活动的基础
软件过程框架是软件组织对技术、实践、方法和经验的的有序积累,是知识管理

软件过程文化

  1. 过程文化的类型(过程和组织、质量和效率的关系)

    • 过程至上:传统制造业,高可靠性、高质量
      • 组织、质量和效率服务于过程
      • 优点:过程执行严格,过程结果可靠、稳定
      • 缺点:效率较低,缺乏灵活和创造性
    • 关注但不拘泥于过程:一般应用软件系统
      • 过程服务于质量和效率且与组织结合得较好
    • 过程起辅助作用,人决定一切:不提倡
  2. 敏捷过程文化

    • 以快速响应变化、满足客户需求为中心
  3. 软件过程文化建设意见

    • 识别文化差异
    • 文化敏感性训练
    • 创建共同文化

PSP/TSP和CMM组成的软件过程框架

PSP(Personal SoftWare Process):个体软件过程
TSP(Team Software Process):团队软件过程

  1. PSP:基于软件工程思想、软件技术和专业方法,帮助软件开发团队中的个体—软件工程师改善其个人能力和素养的组织过程
  2. TSP:是建立在个体软件过程之上,致力于开发高质量的产品,建立、管理和授权项目小组,改善开发团队过程、提高开发团队能力的指导性框架

相关习题

  1. 如何理解软件过程文化,建议、意见有哪些?

    文化是管理的灵魂,一个软件组织的过程文化,能够帮助建立有效的软件过程。在不同的过程文化中,一般存在着三种基本类型:
    1.过程至上:如传统制造业,过程结果具有高可靠性、高质量
    2.关注但不拘泥于过程
    3.过程起辅助作用,以人为本
    敏捷开发以快速响应变化、满足客户需求为中心
    对建设软件过程文化的建议和意见:
    1.关注团队的沟通和合作,实现更多交流
    2.识别文化差异:通过识别成员同一性等多个指标来衡量
    3.文化敏感性训练。加强人们对不同文化环境的适应能力
    4.创建共同文化。即创造与组织商业目标相结合的一致的文化

  2. 对敏捷过程的理解

    软件组织处在以互联网为中心的商业环境,用户需求随着外部环境不断发生变化,产品生命周期不断缩短,要求软件过程适应这样快速的变化,敏捷过程应运而生。
    在敏捷过程中,强调满足用户需求,要求适应市场、竞争和技术等需求的变化,并且能对变化迅速作出反应、调整和改进

第三章-软件过程的组织管理

软件过程剪裁指南和准则

  1. 选择生命周期
  2. 根据项目特征进行剪裁
  3. 明确可剪裁对象
  4. 确定剪裁所考虑的要素
  5. 剪裁的决定要基于风险进行考虑

第四章-软件过程的需求管理

需求管理的模型和流程

软件需求工程:所有与需求直接相关的活动统称为需求工程

  1. 软件需求工程概述
    在软件开发过程中,需求变更贯穿软件项目的整个生命周期,软件需求工程提供一个比较完善的流程来了解客户需求、分析需求、评估需求可行性、协商合理的解决方案、无歧义定义解决方案、确认需求以及管理需求

  2. 软件需求工程的两个部分

    • 需求开发
      • 需求获取(软件需求的三个层次)
        • 业务需求:客户和组织机构概括的目标要求
        • 用户需求:用户使用系统所要完成的任务
        • 功能需求(包括非功能需求):必须实现的软件功能
      • 需求分析
      • 需求定义
    • 需求管理
      • 需求跟踪
      • 变更控制
      • 版本控制

第五章-软件过程的技术管理

技术管理

  1. 软件过程管理技术管理的主要内容

    • 软件过程的技术架构
    • 软件过程的问题分析和决策方法
    • 软件过程的技术路线和知识传递
    • 软件过程管理的自动化,包括工具使用
  2. 在技术解决计划执行过程中或"技术解决"活动中,主要有下列工具

    • 设计规范工具
    • 仿真程序和建模工具
    • 原型设计工具
    • 场景定义和管理工具
    • 需求跟踪工具
    • 交互式文档编制工具
  3. 如何理解验证和确认,以及它们的不同之处

    • 验证:验证的过程是为了判断每一个生命周期活动是否已经完成,以及是否可以启动其他生命周期活动建立一个新的基准
    • (有效性)确认:有效性确认的过程是为了确认软件是否满足客户需求,并解决了相关问题
    • 不同之处
      • 验证过程与确认过程的目标不同,处理的问题也不同
      • 验证是要检验件软件工作产品是否符合规定的设计要求
      • 确认过程则要证明软件最终产品在其预定环境中是否发挥其预定作用以及是否满足客户使用的需求
  4. 知识传递:软件开发过程是知识传递或知识转换的过程

    • 纵向传递:开发过程中各阶段之间的传递
      • 具有很强时间顺序性的接力过程
        • 需求分析到设计阶段:文档和模型(工件)
        • 编程阶段:模型转换为编程语言
      • 用户需求和产品功能特性的差异可以看作信息传递的失真程度
    • 横向传递:不同开发团队之间的传递
    • 知识传递的有效方法:保证知识传递的有效性、及时性、准确性和完整性
      • 创建愉快、活跃的团队氛围
      • 对团队适时、定期地进行培训
      • 对新员工进行培训

第六章-软件过程的版本控制

版本控制是对系统化不同版本进行标识和跟踪的过程,是实行软件配置管理的基础,也是所有配置管理系统的核心功能
成本估算是从费用角度对项目进行规划

  1. 变更控制的七个阶段
    • 变更请求提交
    • 变更请求接收
    • 变更请求评估
    • 变更请求决策
    • 变更请求实现
    • 变更请求验证
    • 变更请求完成
  2. 直接成本和间接成本
    • 直接成本:指可以追溯到个别产品、服务或部门的成本
      • 代表真实的现金流,随着项目进展而支付
      • 包括人工、硬件设备和软件等费用
    • 间接成本:指由几项服务或几个部门共同引起的成本
      • 项目管理成本:不能和特定可交付物关联起来,但对整个项目起作用的项目成本
      • 一般管理成本:不直接与特定项目联系的组织成本,也称为固定成本
  3. 风险评估
    • 内在风险:指项目工作组能加以控制和影响的风险,如人事任免和成本估算
    • 外在风险:指超出项目工作组等控力和影响力之外的风险,如市场转向或政府行为等。

第七章-软件过程的质量管理

  1. 软件评审流程
    • 计划
    • 总体会议
    • 会议准备
    • 评审会议
    • 返工和跟踪
  2. 质量度量
    • 项目度量
    • 产品度量
    • 过程度量
  3. 软件度量要素
    • 数据
    • 图表
    • 度量模型

第八章-软件过程的集成管理

  1. 集成管理流程概述
    • 目的:将软件工程方面的工作和软件管理方面的工作结合起来,形成一套完整、联系密切的以及明确定义的软件过程
    • 集成项目管理也就是对已定义的组织标准软件过程进行剪裁以符合项目的特性,吸收相关软件过程财富,制定集成的项目自定义过程来管理多个项目,并且满足相关利益者的要求,到达平衡
  2. 集成管理的三个阶段
    • 制定集成项目管理计划
    • 运用项目已定义过程
    • 与相关利益者协调和合作

发表评论