title: 软件过程与改进复习
tags: 复习, 软件过程与改进
grammar_cjkRuby: true
第一章 软件过程基础
分粥的启示:通过设计一套合适的软件过程可以解决开发中的问题
影响软件产品质量和软件项目生产率的共同因素主要有3个:人员、技术和过程。
软件产品和服务的质量,很大程度上取决于生产和维护该软件或者服务的过程的质量。
重要人物
软件过程的分类与组成
软件基本过程:软件获取、供应、开发、运行和维护的过程,包括需求分析、软件设计、编码等过程。
软件支持过程:对软件主要过程提供支持的过程,包括文档编制过程、配置管理过程、质量保证过程、验证和确认过程(测试过程)、评审过程等。
软件组织过程:对软件主要过程和支持过程的组织保证过程,包括管理过程、基础设施过程、改进过程和培训过程。
CMM
PSP/TSP
RUP
敏捷过程
极限编程
SCRUM
平衡敏捷与规范
2 个体软件过程PSP
PSP——Personal Software Process,个体软件过程
是一种个体级用于管理和改进软件工程师个人工作方式的持续改进过程
PSP是包括了数据记录表格、过程操作指南和规程在内的结构化框架
一个基本的PSP流程包括策划、设计、编码、编译、单元测试以及总结等阶段
在每个阶段,都有相应的过程操作指南(过程脚本),用以指导该阶段的开发活动
所有的开发活动都需要记录相应的时间日志与缺陷日志
PSP基本原则
软件系统的整体质量由该系统中质量最差的某些组件所决定;
软件组件的质量取决于开发这些组件的软件工程师,更加确切的说,是由这些工程师所使用的开发过程所决定;
作为合格的软件工程师,应当自己度量、跟踪自己的工作,应当自己管理软件组件的质量;
作为合格的软件工程师,应当从自己开发过程的偏差中学习、总结,并将这些经验教训整合到自己的开发实践中,也就是说,应当建立持续地自我改进机制。
PSP成熟度级别
个体度量过程——PSP0和PSP0.1
个体规划过程——PSP1和PSP1.1
个体质量管理过程——PSP2和PSP2.1
个体循环过程——PSP3(TSP)
PSP过程度量
PSP基本度量项
时间:时间日志
缺陷:缺陷类型标准、缺陷日志
度量方式:代码行、功能点、PROBE基于代理的估算(模块、类、方法)
规模
通用计划框架
(1) 定义需求
(2) 概要设计
(3) 规模估算
(4) 资源估算
(5) 日程计划
(6) 开发产品
PROBE估算流程
包括概要设计、代理识别、估算并调整程序规模(时间)、计算预测区间等步骤
PROBE应用:
历史数据的处理
有限的历史数据
个别极端数据的处理
历史数据的处理(vs、s、m、l、vl 的确定方法)
-
简单方法
将每个方法的代码行数进行排序
选择最小值作为VS
选择最大值作为VL
选择中值作为M
选择VS与M的均值作为S
选择VL与M的均值作为L -
正态分布
选择所有数据的均值作为M,计算所有数据的标准差 σ
S = M - σ, VS = M -2 σ, L = M+ σ, VL = M+2 σ -
对数正态分布
大部分人习惯写很多规模很小的程序,少量规模较大的程序;程序的规模不可能出现负数
以e为底计算所有数据的自然对数 (lnX)
计算取对数之后的值的均值M,计算相应标准差 σ
S = M - σ ,VS = M - 2 σ ,L = M + σ ,VL = M + 2 σ
取反对数(eY)
对比
简单方法
计算简单,但不稳定,随着新数据的加入会造成相对大小矩阵数据的大幅度调整
正态分布法
相对稳定,在历史数据基本符合正态分布的情况下,可以给出非常好的相对大小矩阵,但实际上程序规模的分布并不是正态的
对数正态分布法
更加符合人们对于程序规模的直观感觉,PSP中大部分情况下都使用对数正态分布法来对历史数据进行整理,进而获得相对大小矩阵;需要经常维护和更新相对大小矩阵
有限历史数据
Probe方法依赖历史数据,但是实际历史数据有可能:
历史数据少于3个数据点
有足够的历史数据,但是数据的质量不高