个体软件过程(PSP)学习笔记 (未完)

个体软件过程

前言

软件工程漫谈

  • 软件工程认识观
    • 标准定义
    • 软件开发管理
    • 个人的作用
  • 软件开发中的问题
    • 难以发挥潜能
    • 难于满足商业需求
    • 达到不可靠性要求
    • 难于维护

PSP简介

唯一不变的就是变化

  • 软件控制着大部分商业、政府及军队中的相关事务.
  • 软件成本、进度和质量成为业务中的关键问题。
  • 项目为什么会失败
    • 承诺不现实
    • 大项目难控制
    • 质量问题严重
    • 团队的领导
  • 什么是过程
    • 过程是做一项工作的步骤序列,过程的定义就是该过程的描述。
    • 一个已定义的过程标识了一项工作的主要步骤,其提供了:
      • 帮助人们从复杂的活动中分离出执行程序
      • 建立了每个过程步骤的启动和完成准则
      • 增加了人们对过程的理解并且为过程的自动化提供了一个很好的基础
      • 能够制定详细的计划、精确的度量并 告其工作状态
      • 能够判断自己的估算和计划的准确性
      • 能够和用户、其他人员、经理及客户进行精确的交流
  • 过程要素详解
    • 目标/目的
    • 角色与职责
    • 入口、出口准则
    • 输入、输出
    • 活动
    • 度量
    • 验证

PSP的原则及目标

  • PSP基本原则
    • 部件决定整体质量
    • 部件是个体开发
    • 过程决定部件质量
    • 个体决定关键质量
    • 自己负责
    • 自己分析
    • 自己学习
    • 应用实践

什么是PSP/h3>
  • 什么是PSP
    • 它是一个自我改进的过程,它帮助控制、管理和改进自己的工作方式
    • 它是一个结构化的框架,包括了软件开发中使用的表格、准则和规程
    • 它提供了一个度量和分析框架,用来检验和管理你的个人工作
    • 它还是一个已定义过程,用来帮助你改善自己的个人绩效
  • PSP框架说明
    • PSP0:You establish a measured performance baseline.(建立一个可度量的绩效基线,目标是收集准确和完整的你个人工作数据)
    • PSP1:You make size, resource, and schedule plans.(制定规模、资源和进度计划)
    • PSP2:You practice defect and yield management.(练习缺陷和产品管理)

PSP如何帮助工作/h3>
  • PSP可以做什么
    • 稳定、成熟的PSP可以使你:
      • 估计和计划自己的工作
      • 满足自己的承诺
      • 拒绝不合理的承诺
    • 你还可以:
      • 了解自己当前绩效
      • 更好的提高自己的能力
    • PSP提供了:
      • 一个得到证明的用于开发的基础框架
      • 告诉你怎么来改进自己个体过程
      • 持续改进工作效率、工作质量、工作可预测性的相关数据

时间管理

  • 怎么进行时间管理
    • 分清主次
    • 记录时间
    • 标准方法

过程度量

目标管理的SMART原则

  • 无论是制定团队目标还是个人的目标时,必须符合SMART原则,制定目标的过程也是自身能力不断增长的过程
    • 目标必须是具体的(Specific)
    • 目标必须是可度量的(Measurable)
    • 目标必须是可以达到的(Attainable)
    • 各目标或目标与工作职责之间必须具有一定的相关性(Relevant)
    • 目标完成必须有明确的截止期限(Time-bound)

过程度量

  • 度量软件规模
    • 编制开发计划的步骤为:
      • 首先产生一个概念设计
      • 然后估算依照这个设计需要构建的产品的规模
    • 计划过程是从规模估算开始的,由此必须做规模估算
    • 依据规模估算,我们可以估计出完成产品开发所需要的时间(怎么算
    • 在此之前,我们必须有一个度量规模的方法
  • 过程度量原则
    • 为了保证有用,度量必须满足如下要求:
      • 为特定目标而收集数据
      • 准确定义
      • 适合管理
      • 适合使用,即,它必须是精确、特定的而且可以自动计算
    • 度量过程并不会改进它,为了达到持久改进,必须改变过程。
  • 过程度量的作用
    • understand and manage change(理解并管理变化)
    • predict or plan for the future(对未来进行预测或计划)
    • compare one product, process, or organization with another(与其他产品、过程或组织进行对比)
    • determine adherence to standards(确定遵守标准)
    • provide a basis for control(为控制提供依据)
  • 过程度量的目标
    • 度量只能产生数据,为了使之有效,必须满足以下几点:
      • relate to business objectives(与商业目标相关)
      • be properly interpreted(恰当有意的解释)
      • lead to appropriate action(可以采取适当的行动)
    • 如果度量的商业目标得不到理解,则会:
      • the wrong data may be gathered(收集到错误数据)
      • data may not be properly used(数据可能会被不恰当应用)
  • 常见度量的类型
    • 要产生客户和准确的度量,为了保证有用,需要理解各类关联关系,比如:
      • program size versus development hours(程序规模和开发用时)
      • cost distributions(成本分布)
      • defect densities(缺陷密度)
    • 还需要寻求控制和预测能力(提高预知性)
      • actions to reduce test defects(减少测试缺陷的活动)
      • steps to improve review quality(改进评审质量的步骤)
      • means to improve productivity(改进生产率的方法)
  • PSP中的度量
    • PSP基础的数据项包括:
      • program size(程序规模)
      • time spent by phase(每阶段用时)
      • defects found and injected by phase(每阶段发现和注入缺陷数)
    • 对于其中的每一项即要收集实际数据,也有收集估计数据
    • 从这些数据派生出的度量,可以
      • support planning(支持计划编写,怎么支持
      • characterize process quality (描述过程质量,怎么描述
  • PSP中的规模度量
    • PSP规模度量的目标是:
      • 定义一个一致的规模度量
      • 建立一个规范化时间和缺陷数据的基础
      • 帮助进行更好的规模估算
    • 这些数据可以帮助回答如下问题:
      • 计划开发的程序规模是多大/li>
      • 我的规模估算的能力如何/li>
      • 最终完成程序的规模是多大/li>
  • PSP中的时间度量
    • PSP时间度量的目标为:
      • 确定在每个PSP阶段你所花费的时间
      • 帮助你更好的进行时间估算
    • 这些数据可以帮助回答如下问题:
      • 每个PSP阶段花费了多少时间/li>
      • 计划每个PSP阶段要花费多少时间/li>
  • PSP中的缺陷度量
    • PSP缺陷度量的目标为:
      • 为缺陷数据提供一个历史基线(基准线)
      • 了解缺陷注入的数量和类型
      • 了解在每个PSP阶段移除缺陷的相对成本
    • 这些数据可以帮助回答如下问题:
      • 在每个阶段产生了多少缺陷/li>
      • 在每个阶段移除了多少缺陷/li>
      • 发现和修正每个缺陷花费了多少时间/li>
  • PSP中派生出来的度量
    • To Date and To Date %(累计和累计百分比)
    • Product size developed or reviewed per hour(每小时开发或评审的产品规模)
    • CPI(成本性能指标)
    • % Reuse and % New Reusable(重用百分比和新的可重用百分比)

软件规模

  • 规模度量选择的准则
    • 规模度量必须满足如下特别:
      • related to development effort(与开发投入有关)
      • Precise(精准)
      • machine countable(可机器计数)
      • suitable for early planning(适合于早期计划)
  • 规模与开发投入的关系
    • 重点:如果规模度量与开发成本没有直接关系,那么规模度量是没有用的
    • 对于规模有多种度量方式:
      • database elements(数据库元素)
      • lines of code (LOC)(代码行数)
      • function points(功能点数)
      • pages, screens, scripts, reports(页数、屏幕数、脚本数、 表数)
    • 规模度量应当与开发语言、设计和开发实践紧密相关,对这些因素是敏感的
  • 规模度量与开发时间的关系分析
    • 页数通常对于文档编写来说是一个可接受的度量
    • LOC对于使用Pascal和C++等来开发源代码程序是不错的度量
    • 其他可能的度量包括:功能点数、屏幕数、模块数、数据库元素数、维护修正数等
  • 规模度量必须是精准的
    • 要想达到相同的结果,需要一个精准的度量定义
    • 度量还必须得到恰当的应用,以LOC为例做如下考虑,在定义时需要考虑应用时的具体影响因素:
      • 不同的人通过对数据库元素数会有不同的定义
      • Pascal LOC 不等同于汇编的 LOC
      • 新的LOC 与修改的LOC不同
      • 逻辑的LOC不等同于物理的LOC.
      • 一个人的C++ LOC可能与其他人的C++ LOC无关
  • 度量怎么适合于早期计划
    • 为了制定初始项目计划,度量需要在工作开始前是可视的:
      • 对于房屋,通常是以每平方英尺来预计成本的
      • 在没有项目建设初期,很少有人能对一个房子使用平方英尺做为术语来描述居住空间的
      • 在这个阶段,相比较起来房子数量更直观
    • 直观的规模度量对于初始计划通常比较有用
    • 不幸的是,流行的直观度量通常不可测量,流行的可测量的度量通常不直观,在软件开发中会遇到如下度量:
      • Function points(功能点)
        • Intuitive(直观)
        • not directly measurable(不能直接测量)
      • LOC(代码行数)
        • not intuitive(不直观)
        • directly measurable(可直接测量)

计算程序规模

  • PSP中计算程序规模
    • PSP使用编码标准和物理行数计算器用于LOC规模度量
      • defined coding standard(定义编码标准)
      • physical line for each logical line(计算每个逻辑行的物理行)
    • 为了计算程序规模,一致的编码标准/规范必须得到完全的遵守

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年3月13日
下一篇 2019年3月13日

相关推荐