软件工程规范
软件过程的分类
- 软件主要过程: 软件获取、供应、开发运行和维护的过程。
- 软件支持过程: 对软件的主要过程提供支持的过程。
- 软件组织过程:对软件主要过程和支持过程过程的提供组织保证的过程。
软件过程的组成
管理工程、工程过程和支持过程。
过程规范
过程规范指的是对输入、输出和活动所构成的过程进行明文规定或约定俗成的标准。
作用: 帮助团队实现共同的目标, 一个规范的软件过程必将能带来稳定、高水平的过程质量, 过程规范使软件组织的生产效率更高。
软件过程规范
软件过程规范是软件开发组织行动的准则与指南, 可以依据上垒各类过程的特点而建立相应的规范。
软件过程规范的建立
- 软件能力成熟度模型(CMM/CMMI)
- 个体软件过程(PSP)
- 团体软件过程(TSP)
- IBM-Raional 统一过程(RUP)
- 极限编程 (eXtreme Programming,XP)
- 微软软件框架(MSF)
软件生命周期的过程需求
- 软件工程过程
- 软件支持过程
- 软件管理过程
- 软件组织过程
- 软件客户-供应商的过程
软件过程模型
- 瀑布模型
- 螺旋模型
- 增量模型
软件过程成熟度
CMM
CMM是软件过程能力成熟度模型, 描述一条从无序混乱到成熟有纪律的过程的改进途径, 描绘出软件组织如何增加对软件开发和维护的过程控制等方面的指导。
CMMI
CMMI是能力成熟度模型集成, 前身是CMM
CMM/CMMI五个等级
- 初始级: 具有明显不成熟过程的特点
- 可重复级: 建立了管理软件项目的方针和实施这些方针的规程, 使软件项目的有效管理制度化
- 已定义级:包含一组协调的、集成的、适度定义的软件工程过程和管理过程,具有良好的文档化、标准化,使软件过程具有可视性、一致性、稳定性和可重复性,软件过程被集成为一个有机的整体
- 定量管理级: 在上述已定义级的基础上,可以建立有关软件过程和产品质量的、一致的度量体系,采集详细的数据进行分析,从而对软件产品和过程进行有效的定量控制和管理。
- 优化级: 断改善组织的软件过程能力和项目的过程性能,利用来自过程和来自新思想、新技术的先导性试验的定量反馈信息,使持续过程改进成为可能。为了预防缺陷出现,组织有办法识别出弱点并预先针对性地加强过程
CMMI过程域
- 工程管理
- 支持管理
- 项目管理
- 过程管理
PSP/TSP和CMM组成的软件过程框架
软件过程的组织管理
组织过程定义-过程裁剪
剪裁指南和准则的主要作用:
- 选择一个适合项目的生命周期模型。
- 剪裁和细化组织标准软件过程和所选择的软件生命周期,使之适合项目的具体特征。
组织过程焦点-执行约定
- 组织应该遵循一个文档化的关于协调软件流程的指定和改进活动的组织方针
- 高级管理人员发起对软件过程制定和改进的组织活动
- 高级管理人员进度软件过程的指定和改进的组织活动
组织过程焦点-执行能力
- 建立一个负责整个组织的软件过程活动的工作组
- 为软件过程活动提供足够的资源和资金
- 组织软件过程活动的组员进行培训
- 软件过程组和其它工程组的组员接受软件过程活动的相关培训
组织过程焦点-执行活动
- 定期评估软件过程并根据评估结果制订相应的更改计划
- 组织制定和维护有关软件过程和改进活动的计划
- 协调组织的标准软件过程和项目自定义的软件过程的制定和改进工作
- 协调组织的软件过程数据库的使用
- 新过程、新方法、新工具的评价、监控和推广
- 对有关组织和项目的软件过程培训进行统一管理
- 及时将有关软件过程制定和改进的活动通知与实施软件过程相关的组和人员
组织过程焦点-评估
- 度量和分析
- 实施验证
PSP过程框架和成熟度模型
- PSP过程框架:PSP过程由一系列方法、表格、脚本等组成,用以指导软件开发人员计划、度量和管理他们的工作。
- PSP成熟度模型:PSP是一个具有4个等级的成熟度框架, 其中四个等级分别为个体度量过程、个体计划过程、个体质量管理过程和个体循环过程。
TSP
软件需求管理
业务需求、用户需求、功能需求
需求开发
需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。
需求获取概述
需求回去是通过各种途径获取用户的需求信息
需求获取的方法
- 需求研讨会
- 头脑风暴
- 用例模型
- 访谈
- 角色扮演
- 原型法
需求跟踪
- 需求的标识
- 需求的属性
- 需求的状态: 已建议、已批准、已实现和已删除
正向跟踪:以用户需求为切入点,检查《用户需求说明书》或《需求规格说明书》中的每个需求是否都能在后继工作产品中找到对应点。
逆向跟踪:检查设计文档、代码、测试用例等工作产品是否都能在《需求规格说明书》中找到出处。
正向跟踪和逆向跟踪合称为“双向跟踪”。
需求变更
软件过程的技术管理
技术路线
- 软件项目过程的技术解决流程
- 技术解决计划的建立和实施
- 开发设计
- 编程和单元测试
- 验证、确认与测试
软件过程的项目管理
PMI项目管理知识域
- 整合管理
- 范围管理
- 时间管理
- 成本管理
- 质量管理
- 人力资源管理
- 沟通管理
- 风险管理
- 采购管理
- 干系人管理
PMI将47个管理过程归纳为5大类
- 启动过程组:获得授权,定义一个新项目或现有项目的一个新阶段,正式开始该项目或阶段的一组过程。
- 规划过程组:明确项目范围,优化目标,为实现目标而制定行动方案的一组过程。
- 执行过程组:完成项目管理计划中确定的工作以实现项目目标的一组过程。
- 监控过程组:跟踪、审查和调整项目进展与绩效,识别必要的计划变更并启动相应变更的一组过程。
- 收尾过程组:为完结所有过程组的所有活动以正式结束项目或阶段而实施的一组过程。
估算活动持续时间的方法
三点估算
- 最乐观时间(tO)。基于活动的最好情况,所估算的活动持续时间
- 最悲观时间(tP)。基于活动的最差情况,所估算的活动持续时间
- 最可能时间(tM)。基于最可能获得的资源、最可能取得的资源生产率、对资源可用时间的现实预计、资源对其他参与者的可能依赖及可能发生的各种干扰等,所估算的活动持续时间。
- 基于持续时间在三种估算值区间内的假定分布情况(β分布),使用公式来计算期望持续时间tE
tE = (t0 + 4 * tM + tP) / 6
- 正态曲线下,横轴区间(μ-σ,μ+σ)内的面积为68.268949%。
P{|X-μ|<σ}=2Φ(1)-1=0.6826- 横轴区间(μ-1.96σ,μ+1.96σ)内的面积为95.449974%。
P{|X-μ|<2σ}=2Φ(2)-1=0.9544- 横轴区间(μ-2.58σ,μ+2.58σ)内的面积为99.730020%。
P{|X-μ|<3σ}=2Φ(3)-1=0.9974
其余公式
PV[Planned Value]计划值:应该完成多少工作?[96版的BCWS]
EV[Earned Value]挣值:完成了多少预算工作?[96版的BCWP]
AC[Actual Cost]实际成本:完成工作的实际成本是多少?[96版的ACWP]
BAC[Budget cost at completion]完工预算:全部工作的预算是多少?不改变成本基准,BAC就不会发生变化
EAC[Estimate at completion]完成预估:全部工作的成本是多少?是根据项目的绩效和风险量化对项目最可能的总成本所做的一种预测。
ETC完工尚需估算:剩余工作在当前的估算是多少?
CPI成本绩效指数:CPI=EV/AC CPI>1代表工作价值高,好
SPI进度绩效指数:SPI=EV/PV SPI>1代表实际进度快,好
PC任务完成指数:PC=EV/BA
CV成本差异:CV=EV-AC CV>0代表成本节约,好
成本差异比例%=CV/EV=(EV-AC)/EV=1-1/CPI
SV进度差异:SV=EV-PV SV>0代表进度提前,好
成本差异比例%=SV/PV=(EV-PV)/PV=SPI-1
EAC=BAC+AC-EV=BAC-CV
EAC=BAC/CPI
EAC=ETC+AC