软件工程实践汤铭端中国航天科工集团公司706所第九讲软件度量需求管理软件配置管理内容和目的了解软件度量的概念和内容掌握需求管理的概念了解需求管理的过程掌握配置管理的概念掌握配置管理的过程软件度量软件度量理解软件度量选择软件度量指标度量计划步骤软件度量的理解项目规划时,需要评估项目规模和进度等项目跟踪时,需要明确实际的工作量和时间与计划的对比情况判断软件产品的稳定性时,需要明确发现和纠正缺陷的速率定量了解项目的进展,需要对当前项目的绩效进行测量,并与基线进行比较软件度量的定义软件度量是软件中范围广泛的测度,让你定量了解进度,工作量,产品规模,项目状态以及质量性能,用于评估情况,跟踪进展,评价效率。度量类型过程项目技术过程中的度量战略目的进行连续的过程改进项目中的度量辅助估算质量控制生产率评估项目控制战术目标技术中的度量评估技术工作产品的质量在项目中进行决策作用软件度量是为项目估算,计划的基础数据软件度量提供控制项目的量化信息软件度量为质量管理提供指示软件度量能推动企业的过程改进度量成本开始度量时设定度量底线:收集度量的成本应与可获得的潜在利益相平衡防止意外成本(后果)的发生软件度量的困难不一定认为度量是软件工程的必备要素很难定义和收集度量,常常被忽视。今天的数据是明天的历史数据选择软件度量开始实施时,选择一组数量少而且平衡的度量,有助于企业达到目标GQM:目标-问题-度量GQM是一个杰出的技术用于选择适当度量来满足需求GQM:步骤1.首先选择几个项目或者几个机构的目标,尽可能将目标叙述的可以量化、可以测量。2.对于每个目标,设想一下必须回答的问题,看看是否达到目标3.最后,确认必须回答每个问题的度量目标:一年内降低50%维护成本将进度估计的准确性实际提高到10%以内将下一个项目的系统测试时间减少三个星期三个月内将消灭一个缺陷的时间减少40%问题一年内降低50%维护成本每个月我们花在维护上的费用是多少?花在我们支持的每个应用软件上的维护成本是多少?我们花在调整(调整以适应变更的环境)、完善(增加、提高)和修正(纠正缺陷)上的费用是多少?度量我们花在调整、完善和修正上的费用是多少?每类维护活动所花的时间每类维护活动所花的时间内的总维护成本平衡的度量组产品规模产品质量过程质量工作量项目状态客户满意度SEI度量指标SEI度量指标ProcessEffortCostQualitySQAAuditResultsReviewResultsTroubleReportsPeerReviewResultsDefectPreventionStabilityRequirementsStabilitySizeStabilityProcessStabilityComputerResourceUtilizationTraining项目的常用关键度量代码的行数及时完成的预定任务推迟完成的预定任务测试覆盖范围资源适合程度故障密度系统运行的可利用率推向市场的时间进度、质量和成本之间的折衷度量对象软件开发人员软件项目组软件机构软件开发人员工作量分布任务持续时间和工作量的估计值和实际值单元测试覆盖的代码单元测试发现的缺陷数目代码和设计的复杂性项目组产品规模工作量分布需求状态(批准的需求数,实现的需求数,核实的需求)通过测试的测试用例百分比各主要里程碑之间相隔时间的估计值和实际值人员水平的估计值和实际值集成测试和系统测试中发现的缺陷数检查发现的缺陷数缺陷状态需求的稳定性计划任务数和完成任务数机构组织发布的缺陷水平产品开发周期估计准确度的进展计划和工作量重新使用的有效性计划成本和实际成本数据的级别成员级别项目级别机构级别PSP的度量指标项目计划度量项目质量度量项目计划实际累计累计百分比总结Minutes/LOCLOC/HourDefects/KLOC过程效益A/FR程序规模(LOC)新开发与更改的最大值最小值开发时间计划设计编吗代码复查编译测试后置处理总计最大值最小值项目计划总结表项目计划总结表项目计划实际累计累计百分比引入的缺陷计划设计编码代码复查编译总计排除的缺陷计划设计编码代码复查编译总计项目规划度量--个人统计任务编号任务名称FPLOC时间类型001通讯模块310005编码002总体10设计项目名称:教育信息平台项目成员:张三成员级别系数:1.2项目规划度量—项目统计(最好利用工具)统计出所有项目中各个任务的度量值。统计出项目中某一类任务的工作量值:FP,LOC统计出项目中某一类任务的规模(人天)项目规划度量—项目统计例子项目的需求分析时间:50天项目的需求规模:100人天项目中任务001的设计时间:10天项目中任务001的设计规模:15人天项目中任务001的编码时间:5天项目中任务001的测试时间:6天项目中任务001的编码规模:5人天项目质量度量--个人统计任务编号任务名称类型阶段缺陷个数001通讯模块接口设计3002成绩查询语法编码6003招生管理函数测试2项目名称:教育信息平台项目成员:李四成员级别系数:0.8项目质量度量—项目统计统计出所有项目中各个任务的度量值。统计出某一类型缺陷的个数统计出某一阶段缺陷的个数统计出某一模块缺陷的个数项目质量度量—项目统计例子项目的需求阶段的缺陷:6项目的编码阶段的缺陷:100项目中任务001的缺陷数:20项目中接口类缺陷数:20开发度量计划的步骤开发度量计划的步骤1.标识目标2.选择起步度量3.明确工作活动4.汇总历史数据5.收集并分析度量,6.决策中使用度量1、标识目标确定明确的标准目标或者汇总一个基线标识目标作用让度量计划改善经营成果执行严格定义、目标集中的计划以降低成本奠定改善软件投资回报的基础2、选择起步度量进度度量需求度量测试覆盖的百分数软件规模故障密度故障发生解决率项目整体风险度量2.1进度度量计算按期完成的任务数推迟完成的任务数重订进计划中的任务数2.2需求度量已经变更需求的百分数新需求百分数2.3测试覆盖的百分数描述百分之几的代码已经经过测试了;统计表明:没有度量的测试只能测试代码的50-60%有有度量的测试可以推动代码测试覆盖率2.4软件规模代码行功能点人月数2.5故障密度软件质量的基本度量:每KNCSS未解决的故障数。例如:产品发行标准:0.25故障/KNCSS数据表明:7发现缺陷数/KNCSS2.6故障发生解决率在一段固定时间内,发现并解决故障的数目.是软件可以冻结的一个稳健机制。软件冻结的条件:故障发生率和解决率为0故障发生解决率可以判断测试阶段的完成,有助于测试过多。2.7项目整体风险度量完成特定进度计划的可能性百分数3、明确工作活动度量需要的什么特定日期谁负责收集度量数据何时收集、何时报告度量度量如何报告(状态报告、季度会议、度量报告)必要时可以赋予各种度量相应的优先级4、汇总历史数据已经完成的项目的度量数据当前项目的历史数据使用度量数据库存储收集的度量数据度量数据库原则数据库应当易于使用,人们才能方便地更新并报告数据数据库应当灵活,数据库最好与其他工具有接口界面数据库与图形报告工具有接口界面,便于制作图形和表格数据库足够大,以便包含更多的历史信息数据库避免重复数据库应注意安全数据库类型电子制表软件商用数据库软件5、收集并分析度量收据度量数据与既定的目标进行跟踪比较,得出相应的结论收集并分析度量的自动化知识纸面模板电子数据表预定义报告软件工具6、决策中使用度量可以判断产品的推出程度了解客户项目的成本和进度在估计成本和进度时考虑多少偶然因素过程改进中投资何处能得到最到的回报何时开始用户培训度量管理的注意事项软件度量成为习惯从小开始解释为什么分享数据定义数据选项及其规程理解趋势需求管理RequirementsManagement需求工程定义需求获取需求用户需求系统需求分析需求规格说明文档化需求评审需求管理需求理解需求保管需求实现需求控制需求验证需求需求管理的目的需求管理的目的是在顾客和将处理顾客需求的软件项目之间建立对顾客需求的共同理解。需求管理的内容需求管理包括和顾客一起建立和维护有关软件项目需求的协议,该协议称作“分配给软件的系统需求”。“顾客”可解释为系统工程组、销售组、另一个内部组织、或者一个外部顾客。协议既包括技术需求、又包括非技术需求(例如交付日期)。该协议形成估计、策划和跟踪整个软件生存周期内软件项目活动的基础。分配需求的形成将系统需求分配给软件、硬件和其它系统成分的工作可能由软件工程组之外的组(例如系统工程组)完成,软件工程组可能对此分配无直接控制。在项目约束范围内,软件工程组采取恰当步骤以保证对分配给软件的需求建档、并加以控制,该组负责处理分配给软件的系统需求。需求管理的目标目标1分配给软件的系统需求是受控的,建立供软件工程和管理使用的基线。目标2软件计划、产品和活动与分配给软件的系统需求保持一致。对分配需求建立文档分配需求包括:1.影响和确定软件项目活动的非技术性需求(即:协议、条件、和(或)合同条款),如—要交付的产品、交付日期、里程碑。2.对软件的技术需求,如最终用户、操作员、支持、或集成功能;性能要求;设计约束;编程语言;界面需求。3.用于确认软件产品满足分配需求的验收准则。需求管理的过程要求(1)活动1在分配需求被纳入软件项目之前,软件工程组评审它们。1.鉴别出不完整的和遗漏的分配需求。2.评审分配需求,确定它们是否:用软件来实现是可行的和恰当的,被清晰和正确地阐述,是相互一致的,和是可测试的。3.负责分析和分配系统需求的组评审任何被识别出是有潜在问题的分配需求,并作出必要的更改。4.和受到影响的组协商由分配需求引起的约定。需求管理的过程要求(2)活动2软件工程组采用分配需求作为软件计划、工作产品和活动的基础。分配需求:1.被进行管理和控制。“进行管理和控制”意味着在给定时间(过去或现在)使用的工作产品的版本是已知的(即版本控制),而且以受控的方式引进更改(即更改控制)。2.是软件开发计划的基础。3.是制定软件需求的基础。需求管理的过程要求(3)活动3评审对分配需求的更改,将其纳入软件项目。1.评估它对现有约定的影响,合适时协商更改。对组织外部的个人和组所作约定的更改由高级管理者参与评审。和受到影响的组协商组织内部约定的更改。2.对由于分配需求的更改所造成的对软件计划、工作产品和活动必须作的更改要加以:识别,评价,风险评估,文档化,规划,传达到受到影响的组和个人,跟踪直到结束。需求管理过程任何项目都必须存在分配需求类文档合同、任务书、立项报告、招标文件KickOff会议项目组讨论(评审)分配需求分配需求经批准后纳入配置管理对涉及外部承诺、约定内容的更改严格控制需求管理的工具:双向追溯矩阵建立需求档案检查需求的完成设计实现检测对相关的更改进行追踪需求追溯矩阵部件1部件2部件3部件4部件5需求1*需求2**需求3**需求4*需求5*软件配置管理SCMSoftwareConfigurationManagement软件开发中存在的一些问题文文不一致文档和文档之间不一致文实不一致文档和程序之间不一致程序版本不一致无法连接、无法安装、无法形成特定产品问题处理的混乱软件开发中存在的一些问题软件项目进行中面临的一个主要问题是持续不断的变化有效的项目管理能够控制变化,以最有效的手段应对变化不断命中移动的目标配置(Configuration)一计算机系统或网络按照其功能部件的特点、数量和主要特征而确定的排列。具体地讲,配置一词可以指硬件装置或软件装置。为确