450 likes | 643 Views
软件过程与管理 第二讲 个体软件过程. 荣国平 南京大学软件学院 2013 年 秋. 经典语录. “在很多方面,管理一个大型的计算机编程项目和管理其他行业的大型工程很相似 —— 比大多数程序员所认为的还要相似;在另外一些方面,它又有差别 —— 比大多数职业经理人所认为的差别还要大” ——Frederick P. Brooks. JR. 本讲要解决的问题. 为什么要有 PSP ? PSP 是什么? PSP 该如何实施?. 内容. PSP 简介 流程 度量 PROBE 估算方法. PSP 渊源和作用. 过程改进运动 TQM
E N D
软件过程与管理 第二讲个体软件过程 荣国平 南京大学软件学院 2013年 秋
经典语录 • “在很多方面,管理一个大型的计算机编程项目和管理其他行业的大型工程很相似——比大多数程序员所认为的还要相似;在另外一些方面,它又有差别——比大多数职业经理人所认为的差别还要大” ——Frederick P. Brooks. JR
本讲要解决的问题 • 为什么要有PSP? • PSP是什么? • PSP该如何实施?
内容 • PSP简介 • 流程 • 度量 • PROBE估算方法
PSP渊源和作用 • 过程改进运动 • TQM • Humphrey早期工作 • PSP/TSP • PSP作用 • 个人级别估算和计划 • 承诺和拒绝承诺 • 理解和改进 • 工业水准的过程和规范 • 客观决策的数据
什么是PSP? • PSP是包括了数据记录表格、过程操作指南和规程在内的结构化框架。 • 一个基本的PSP流程包括策划、设计、编码、编译、单元测试以及总结等阶段。 • 在每个阶段,都有相应的过程操作指南,用以指导该阶段的开发活动 • 所有的开发活动都需要记录相应的时间日志与缺陷日志。
PSP基本原则 • 软件系统的整体质量由该系统中质量最差的某些组件所决定; • 软件组件的质量取决于开发这些组件的软件工程师,更加确切的说,是由这些工程师所使用的开发过程所决定; • 作为合格的软件工程师,应当自己度量、跟踪自己的工作,应当自己管理软件组件的质量; • 作为合格的软件工程师,应当从自己开发过程的偏差中学习、总结,并将这些经验教训整合到自己的开发实践中,也就是说,应当建立持续地自我改进机制。
PSP过程度量 • 过程度量在过程管理和改进中起着极为重要的作用。 • PSP基本度量项 • 即时间 • 缺陷 • 规模 • 日程(TSP)
PSP规模度量标准选择 • 选择的规模度量方式必须反映开发成本; • 选择的度量方式必须精确; • 选择的度量方式必须能用自动化方法来统计; • 选择的度量方式必须有助于早期规划;
PSP 典型规模度量方式 • LOC • 物理 • 逻辑 procedure ISet.Set(var N: int; var inc: boolean); begin inc := false; SearchPtr := SetStart; while (SearchPtr<>nil) and (inc == false) do if SearchPtr^.ThisN == N then inc := true else SearchPtr:=SearchPtr^.NextN; end;
规模度量的困境 • 精确的度量方式往往不便于早期规划; • 有助于早期规划的度量往往难以产生精确度量结果; • LOC VS. FP? • PROBE的作用
内容 • PSP简介 • 流程 • 度量 • PROBE估算方法
PROBE原理示例 • PROBE(PROxy Based Estimation)
相对大小矩阵 大小 类型 130+200+90×2+60+25+240+400 = 1235(平方尺)
PROBE方法的应用 • 历史数据的处理 • 有限历史数据 • 个别极端数据的处理
历史数据的处理 • 简单方法 • 正态分布 • 对数正态分布
某人的历史数据 计算每个方法的代码行数,可以得出如下的数据:13,25.4,32.9.333,12,10.5。
简单方法 • 基本思想是: • 将每个方法的代码行数进行排序 • 选择最小值作为VS; • 选择最大值作为VL; • 选择中值作为M; • 选择VS与M的均值作为S; • 选择VL与M的均值作为L。 • 计算结果:VS = 9.333,VL = 32,M = 12 或者13,S = 11.2,L = 22.5。
正态分布法(2) • 使用正态分布法的计算方法如下: • 选择所有数据的均值作为M,计算所有数据的标准差σ。 • 那么S = M- σ,VS = M-2 σ,L = M+ σ,VL = M+2 σ。 • 计算结果: • 在上述例子中,VS = -1.67,S =7.68,M = 17.04,L = 26.39,VL = 35.75。
对数正态分布(1) • 大部分人习惯写很多规模很小的程序,少量规模较大的程序 • 此外,程序的规模不可能出现负数
对数正态分布(2) • 计算方法: • 以e为底计算所有数据的自然对数; • 计算取对数之后的值的均值作为M,计算相应标准差σ。 • 那么S = M- σ,VS = M-2 σ,L = M+ σ,VL = M+2 σ。 • 取反对数; • 计算结果: • VS = 5.55,S =9.19,M = 15.22,L = 25.21,VL = 41.75。
三种方法对比 • 简单方法 • 计算简单,但是,不稳定 • 正态分布法 • 相对稳定,在历史数据基本符合正态分布的情况下,可以给出非常好的相对大小矩阵 • 对数正态分布法 • 更加符合人们对于程序的规模的直观感觉
有限历史数据 • Probe方法依赖历史数据,但是实际历史数据有可能 • 历史数据少于3个数据点; • 有足够的历史数据,但是数据的质量不高
相关性 • 相关性描述的是两组变化的数据之间相互关联的程度; • 在PSP中为确保估算质量,对于历史数据的相关性要求r≥0.7。
显著性 • 它描述的是上述两组数据的相关关系出现的偶然性 • 因此,显著性越小越好。在PSP中要求显著性s≤0.05
极端数据 • PROBE A方法和B方法的时候,对于数据的相关性有要求。 • 然而很多时候,历史数据中的一些极端数据会造成相关性的“假象”。
160 • 140 • 120 • 100 • Writing Time • 80 • 60 • 40 • 20 • 0 • 0 • 5 • 10 • 15 • 20 • 25 • 30 • 35 • Chapter Pages r = 0.91
本章小结 • PSP基本概念 • PSP过程度量 • 时间、规模、缺陷 • PROBE估算方法 • 估算流程 • 历史数据组织 • 有限历史数据
问题回顾 • 为什么要有PSP? • PSP是什么? • PSP该如何实施?