软件度量:软件结构度量

合集下载

常见软件项目度量指标 和控制指标

常见软件项目度量指标 和控制指标

软件项目度量指标和控制指标是软件开发过程中非常重要的一部分,它们能够帮助开发团队和管理人员评估项目进展情况,及时发现并解决问题,确保项目按时交付、质量可控。

本文将从常见软件项目度量指标和控制指标两个方面进行探讨,为软件项目管理提供有益的参考。

一、常见软件项目度量指标对于软件项目管理来说,度量指标是评估项目进展和质量的重要依据,合理选择和使用度量指标能够帮助团队领导及时发现问题、及时调整问题和保证项目交付质量,常见的软件项目度量指标有:1. 代码行数:代表了软件代码的规模,是度量软件规模的最基本指标之一。

代码行数在软件开发过程中被广泛使用,可以用于评估软件规模、成本估算、进度控制等方面。

2. 功能点数:是根据软件功能区分的度量指标,它能够更好地反映软件的实际使用价值。

功能点数是一个重要的度量指标,可以帮助团队直观地了解软件的功能复杂度和开发进度。

3. 缺陷密度:是度量软件质量的重要指标之一,它可以帮助团队了解软件的缺陷情况,以及缺陷的严重程度。

通过缺陷密度指标,团队可以及时发现和解决软件质量问题,提高软件质量。

4. 代码覆盖率:是度量软件测试覆盖情况的指标,通过代码覆盖率可以了解软件的测试覆盖情况,帮助团队评估测试质量和发现测试遗漏情况。

5. 进度指标:包括工作完成进度、任务完成比例、工作量增减变化情况等,可以帮助团队领导及时了解项目进展情况,调整项目计划和资源分配。

二、常见软件项目控制指标除了度量指标,软件项目的控制指标也是非常重要的,它们能够帮助团队领导控制项目进度、成本和质量,确保项目按时交付和质量可控。

常见的软件项目控制指标有:1. 成本偏差(Cost Variance,CV):是衡量项目成本偏离预算的指标,CV=实际成本-计划成本,通过成本偏差指标可以帮助团队领导了解项目成本控制情况,及时调整成本预算和资源分配。

2. 进度偏差(Schedule Variance,SV):是衡量项目进度偏离计划的指标,SV=实际完成工作-计划完成工作,通过进度偏差指标可以帮助团队领导了解项目进度控制情况,及时调整项目计划和资源分配。

第7章 软件测试度量与评价

第7章  软件测试度量与评价
• 外部质量特征: 正确性、可用性、效率、可靠性、完整性、适应性、精确性、坚 固性等。
ISO-9126质量模型
• 使用质量: 在规定的使用环境下软件产品使特定用户在达到规定目标方 面的能力。 它是从用户观点出发,来看待软件产品用于特定环境和条件 下的质量,反映的是从用户角度看到的软件产品在适当系统 环境下满足其需求的程度。
可移植性的 依从性
ISO-9126质量模型
• 内部质量: 是从内部观点出发的软件产品特性的总体,是针对 内部质量需求被测量和评价的质量。
• 内部质量特征: 可维护性、灵活性、可移植性、可重用性、可读性、 可测试性、可理解性等。
ISO-9126质量模型
• 外部质量: 软件产品在规定条件下使用时满足需求的程度。 它是从外部观点出发的软件产品特性的总体,当软件执行时,更 典型地是使用外部度量在模拟环境中,用模拟数据测试时,所被 测量和评价的质量,即在预定的系统环境中运行时可能达到的质 量水平。
软件度量
• 软件的度量取向一般包括项目规模、项目成本、项目进度 、顾客满意度、质量等度量,以及品牌资产度量、知识产 权价值度量等。
• 度量取向要依靠事实、数据、原理、法则;其方法是测试 、审核、调查;其工具是统计、图表、数字、模型;其标 准是量化的指标。
软件质量及度量
软件质量需要 度量
质量包括哪些 方面?
• (415+230)/[(69+129+500+393)-(35+68+100)] *100%=73%
• 3.缺陷密度
• 软件缺陷密度是一种以平均值估算法来计算出软件缺 陷分布的密度值。程序代码通常是以千行为单位的, 软件缺陷密度是用下面公式计算的:
McCall质量模型 *

华为公司 常见软件度量指标

华为公司 常见软件度量指标

常见软件项目度量指标介绍发布时间:未知来源:网络转载字体:小中大|上一篇下一篇|打印|我要投稿|推荐标签:软件测试基本度量项持续时间偏差(%)进度偏差(%)工作量偏差(%)规模偏差(%)分配需求稳定性指数(%)软件需求稳定性指数(%)((实际持续时间-计划持续时间)/计划持续时间)*100 (持续时间不包含非工作日)((实际结束时间-计划结束时间)/计划持续时间)*100(实际工作量-计划工作量)/计划工作量((实际规模-计划规划)/计划规模)*100(1-(修改、增加或删除的分配需求数/初始的分配需求数))*100(1-(修改、增加或删除的软件需求数/初始的软件需求数))*100((发布后缺陷发现总数-(发布后前测试计划本身缺陷数)/规发布前缺陷发现密度(个/KLOC)遗留缺陷密度(个/KLOC)(遗留缺陷:测试部发现的缺陷)生产率(LOC/人天)SRS评审缺陷发现密度(个/页)STP评审缺陷发现密度(个/用例)HLD评审缺陷发现密度(个/页)ITP评审缺陷发现密度(个/用例)LLD评审缺陷发现密度(个/页)UTP评审缺陷发现密度(个/用例)CODE评审缺陷发现密度(个/KLOC)UT缺陷发现密度(个/KLOC)IT缺陷发现密度(个/KLOC)ST缺陷发现密度(个/KLOC)模(KLOC)(这里的发布指开发向测试部发布)(测试部发现缺陷数-测试部测试计划本身缺陷数)/规模(KLOC) 软件规模(LOC)/总工作(人天)SRS评审发现的缺陷数/SRS文档页数STP评审发现的缺陷数/ST用例数HLD评审发现的缺陷数/HLD文档页数ITP评审发现的缺陷数/IT用例数LLD评审发现的缺陷数/LLD文档页数UTP计划评审发现的缺陷数/UT用例数CODE评审发现缺陷数/编码阶段代码规模UT发现缺陷数/UT阶段代码规模IT发现缺陷数/IT阶段代码规模ST发现缺陷数/ST阶段代码规模考)SR缺陷引入密度(个/页)HLD缺陷引入密度(个/页)SRS类型缺陷数/SRS文档页数HLD类型缺陷数/HLD文档页数质量控制活动缺陷发现密度(度量目的:建立基线,评估评审、测试是否充分提供参考)缺陷类型引入密度:(度量目的:建立基线,为分析能力水平薄弱环节及交付件质量提供参LLD缺陷引入密度(个/页)Code缺陷引入密度(个/KLOC)SRS评审有效性(%)HLD评审有效性(%)LLD评审有效性(%)代码评审有效性(%)LLD类型缺陷数/LLD文档页数CODE类缺陷数/代码规模SRS评审发现的SRS类缺陷数/SRS类缺陷总数HLD评审发现的HLD类缺陷数/HLD类缺陷总数LLD评审发现的LLD类缺陷数/LLD类缺陷总数代码评审发现的Code类缺陷数/Code类缺陷总数是否合理角度提供参考)评审活动的有效性(度量目的:建立基线,对相关评审是否充分提供参考)每千行代码的文档规模(度量目的:建立基线,为评估交付件的质量从设计是否充分、粒度每千行代码SRS文档规模(pages/KLOC)每千行代码HLD文档规模(pages/KLOC)每千行代码LLD文档规模(pages/KLOC)SRS文档页数/代码规模HLD文档页数/代码规模LLD文档页数/代码规模质量成本(评审工作量+返工工作量+缺陷修改工作量+测试计划准备工作量+测试执行工作量+培训工作量+质量保证工作量)/实际总工作量(返工工作量+缺陷修改工作量)/实际总工作量交付件生产率SRS文档页数/(SRS文档准备工作量+SRS评审工作量+SRS修改工作量)ST用例数/(STP准备工作量+STP评审工作量+STP修改工作量)HLD文档页数/(HLD文档准备工作量+HLD评审工作量+HLD修改工作量)ITP用例数/(ITP准备工作量+ITP评审工作量+ITP修改工作量)UTP用例数/(UTP准备工作量+UTP评审工作量+UTP修改工作量)修改工作量)测试执行效率UT用例数/(UT准备工作量+UT用例执行工作量+UT缺陷修改工作量)IT用例数/(IT准备工作量+IT用例执行工作量+IT缺陷修改工作量)ST用例数/(ST准备工作量+ST用例执行工作量+ST缺陷修改工作量)度角度提供一个参考)质量成本(%)返工成本指数(%)SRS文档生产率(页/人天)STP用例生产率(用例/人天)HLD用例生产率(页/人天)ITP用例生产率(页/人天)UTP用例生产率(页/人天)编码阶段代码生产率(LOC/人编码阶段实际代码规模/(编码工作量+代码评审工作量+代码天)UT用例执行效率(用例/人天)IT用例执行效率(用例/人天)ST用例执行效率(用例/人天)每千行代码测试用例规模(度量目的:建立基线,为评估交付件的质量从设计是否充分、粒每千行代码ST用例规模(用例/KLOC)每千行代码IT用例规模(用例/KLOC)每千行代码UT用例规模(用例/KLOC)UT实测规模缺陷发现密度(个/KLOC)IT实测规模缺陷发现密度(个/KLOC)ST实测规模缺陷发现密度(个/KLOC)总结:ST用例数/代码规模IT用例数/代码规模UT用例数/代码规模实测规模缺陷发现密度(度量目的:建立基线,为评估测试用例的质量提供一个参考)UT发现的缺陷数/UT活动实际测试代码规模IT发现的缺陷数/UT活动实际测试代码规模ST发现的缺陷数/UT活动实际测试代码规模开展度量活动的一个最关键的因素是要保证度量基础数据的有效、准确性,否则度量结果将是垃圾,反而会起误导作用.搜集准确有效的度量数据工作量并不小,所以决定采用哪些度量项需要从投入和产出来衡量。

软件质量度量指标及说明

软件质量度量指标及说明

软件质量度量指标及说明在软件开发过程中,了解和掌握软件质量度量指标是至关重要的,它们能够帮助我们评估软件的质量和可靠性。

下面将介绍一些常用的软件质量度量指标及其说明。

1. 可靠性:可靠性是指软件在规定条件下,按照规定的要求正常运行的能力。

常用的可靠性度量指标包括故障密度、平均失效间隔时间(MTTF)和平均修复时间(MTTR)等。

故障密度是指在特定时间内发生的故障数量与代码行数的比例,反映了软件中存在的错误密度。

2. 可用性:可用性是指软件按照规定的要求可供用户使用的程度。

常用的可用性度量指标包括平均时间到故障(MTTF)和平均修复时间(MTTR)。

MTTF是指在平均情况下,软件在无故障状态下运行的时间,越大表示可用性越高。

3. 可维护性:可维护性是指软件在修改、测试、故障排除和改进方面的容易程度。

常用的可维护性度量指标包括平均修复时间(MTTR)、修复效率和变更稳定性等。

MTTR是指修复故障所需的平均时间。

4. 可测试性:可测试性是指软件在测试过程中的容易程度。

常用的可测试性度量指标包括测试用例覆盖率和测试可行性。

测试用例覆盖率是指被测试的代码行数与被测试的总代码行数之比,反映了测试的覆盖程度。

5. 可移植性:可移植性是指软件在不同平台或环境下的适应性。

常用的可移植性度量指标包括代码冗余度和平台无关性。

代码冗余度是指在软件中存在的重复代码的比例。

以上是常用的软件质量度量指标及其说明,通过对这些指标的评估和分析,可以帮助开发团队提升软件的质量和可靠性。

在软件开发过程中,建议根据具体项目的需求和情况选择合适的度量指标,并结合实际情况进行评估和改进。

SPM12

SPM12

第十二章本章要点软件度量基本概念度量技术度量管理过程度量指标选择度量计划案例分析12.1 软件度量基本概念引言引言z项目规划时,需要评估项目规模和进度等z项目跟踪时,需要明确实际的工作量和时间与计划的对比情况z判断软件产品的稳定性时,需要明确发现和纠正缺陷的速率z定量了解项目的进展,需要对当前项目的绩效进行测量,并与基线进行比较软件度量的定义软件度量(Software Measurement)是通过各种不同的量度(metric)对软件生命周期中的各个元素进行度量(Measure)Measure:单个元素的测量z Loc, defectMetric:指标器z缺陷率:defect/LocMeasurement:统称度量类型z过程度量z项目度量z技术度量过程中的度量z战略目的z进行连续的过程改进项目中的度量z战术目标辅助估算质量控制项目控制技术中的度量z评估技术工作产品的质量z在项目中进行决策软件度量的作用z软件度量可以帮助明确量化的目标z软件度量是项目估算,计划的基础数据z软件度量提供控制项目的量化信息z软件度量为质量管理提供指示z软件度量能推动企业的过程改进软件度量的相关人软件度量的困难z对度量的认识不足z不容易准确定义和收集度量,常常被忽视z度量的效益不是立竿见影的本章要点软件度量基本概念度量技术度量管理过程度量指标选择度量计划案例分析12.2 度量技术常用的度量技术z GQM(Goal目标-Question问题-Metric度量)zPSM(Practical Software Measurement:实用软件测量)GQM:目标-问题-度量z GQM(Goal-Question-Measure)是一个杰出的技术z基于目标驱动的度量z可以选择适当的软件度量来满足需求GQM:步骤z选择目标z对于每个目标,设想一下必须回答的问题,看看是否达到目标z选择回答每个问题所必需的度量z确认度量体系GQM示例——Step1:目标z一年内降低50%维护成本z将进度估计的准确性实际提高到10%以内z将下一个项目的系统测试时间减少15%GQM示例——Step2:问题一年内降低50%维护成本z每个月我们花在维护上的费用是多少?z花在我们支持的每个应用软件上的维护成本是多少?z我们花在调整(调整以适应变更的环境)、完善(增加、提高)和修正(纠正缺陷)上的费用是多少?GQM示例——Step3:度量我们花在调整、完善和修正上的费用是多少?z每类维护活动所花的时间z每类维护活动所花的时间内的总维护成本PSMzPSM是几十年来数十个组织摸索的如何最佳地实现软件度量的经验积累z基于风险和问题驱动的度量z包括三个基本的度量活动——剪裁、应用和实施z模型信息模型:解决度量信息结构的问题过程模型:描述度量活动和任务本章要点软件度量基本概念度量技术度量管理过程度量指标选择度量计划案例分析12.3 度量管理的过程z标识目标z选择度量指标z定义数据收集z分析度量z改进度量过程2、选择度量指标z生产率z质量z规模成本z时间1)项目生产率软件开发过程中的效率例如z Loc/hour2)质量-故障密度软件质量的基本度量:每KNCSS未解决的故障数3)软件规模z代码行z功能点z人月数4)时间进度3、定义数据收集z数据定义z数据收集z收集度量的责任z度量收集的工具目标4、分析度量z收集度量数据z与既定的目标进行跟踪比较z得出相应的结论,进行决策可以判断产品的推出程度了解客户项目的成本和进度在估计成本和进度时考虑多少偶然因素估计过程改进中投资何处能得到最大的回报 ……5、改进度量过程度量过程的改进也有PIMA模型(Plan,Implementation,Metric,Action)计划实施度量改进z计划z实施z度量z改进本章要点软件度量基本概念度量技术度量管理过程度量指标选择度量计划案例分析12.4 度量指标选择选择软件度量z开始实施时,选择一组数量少而且平衡的度量,有助于企业达到目标z可以采用GQM技术选择软件度量几种度量指标组z PSM平衡的度量组z SEI度量组z PSP度量组z SEL度量组平衡的度量组-PSM信息分类z经验表明:大部分项目信息可以按照通用的域来分组,即度量组(或者信息分类)z是项目经理每日需要管理的主要关注点PSM信息分类z产品规模z产品质量z过程质量z工作量(资源和成本)z项目状态(进度和进展)z客户满意度z技术有效性PSM信息分类产品规模z 功能规模z物理规模技术有效性z 技术适合性z技术易变性产品质量z 功能正确性z 可维护性z 效率z 可移植性z 可用性z可靠性过程质量z 过程依从性z 过程效率z过程有效性工作量z 个人工作量z 财务性能z环境和支持资源项目状态z 完成的里程碑z 关键路径的性能z工作单元进展客户满意度z 客户反馈z客户支持几种度量指标组平衡的度量组SEI度量组PSP度量组SEL度量组SEI度量指标SEI度量指标SEI度量指标SEI推荐了四个基本的度量z规模:物理的代码行计数z工作量:花费的人工时计数z进度:日历日期z质量:软件问题和缺陷计数。

软件度量与评估

软件度量与评估

软件度量与评估在当今信息技术高速发展的时代,软件开发的规模和复杂性越来越大,软件质量的控制成为了关乎企业竞争力的重要环节。

软件度量与评估作为一种有效的管理手段,可以帮助企业准确了解软件开发过程中的各种指标和数据,并根据这些数据进行科学分析和评估,从而提高软件质量和开发效率。

一、软件度量的概念和作用软件度量是指对软件产品、软件过程和软件项目进行定量和定性的测量和评估的过程。

通过软件度量,可以获得软件开发过程中的各种数据和指标,如代码行数、Bug数量、测试覆盖率等,进而对软件的质量、进度和效率进行评估和改进。

软件度量的作用主要体现在以下几个方面:1. 评估软件质量:通过度量软件的各项指标,可以客观地评估软件的质量,发现软件中存在的问题和风险,并采取相应的措施进行改进和优化。

2. 优化软件开发过程:通过对软件开发过程的度量,可以揭示出存在的问题和瓶颈,并优化整个开发过程,提高开发效率和质量。

3. 支持决策:软件度量提供了可靠的数据支持,可以帮助管理者做出科学决策,制定合理的开发计划和策略。

4. 监控项目进展:通过对软件开发过程中的度量指标进行监控,可以及时了解项目的进展情况,及时发现和解决问题,确保项目按时交付。

二、常见的软件度量指标软件度量指标是对软件开发过程中的各种属性、过程和结果进行度量和评估的具体指标。

常见的软件度量指标主要包括以下几个方面:1. 代码规模指标:如源代码行数、模块数、类数等,用于衡量软件的规模和复杂性。

2. 缺陷密度指标:如每千行代码的缺陷数,用于评估软件的质量和稳定性。

3. 功能点指标:如功能点个数、功能点投入产出比等,用于评估软件开发的效率和成本。

4. 资源消耗指标:如开发时间、工作量、成本等,用于评估软件开发所需的资源消耗。

5. 可维护性指标:如代码的复杂度、可读性、可理解性等,用于评估软件的可维护性和可扩展性。

三、软件评估模型和方法为了实现对软件质量和效果的全面评估,人们提出了各种软件评估模型和方法。

软件度量知识点

软件度量知识点

软件度量知识点
1.测量有哪些尺度类型?各有何区别?测量作为一个过程,有哪些阶段?
2.软件度量的实体有哪些?如何采用GQM定义度量框架?GQM中如何描述目标?3.在度量数据的频域分析中,如何描述测量数据的散步度?
4.什么是功能点分析?特征点、对象点、和功能点有何不同?
5.什么是用例点分析?
6.Helstead 方法如何进行软件度量?与代码行相比有何优势?
7.什么是COCOMO模型?如何采用COCOMO模型进行成本估计?
8.Pareto 图和Histogram 图有何区别?运行图和控制图有何区别?
9.什么是程序的环形复杂度?如何度量?
10.在面向对象的度量中,CK方法和LK方法各提供了哪些度量指标?
11.基于信息的度量中,shepperd方法与Herry/Kafura 方法有何不同?
12.举例说明数据结构如何影响软件的复杂性。

13.度量软件产品结构时,一般考虑哪三类结构?每个结构度量中考虑哪些因素?
14.什么是过程能力?如何度量过程能力?
15.ISO 9126质量模型,Bohem质量模型,McCall’s质量模型考虑了软件哪些主要质量因素?
16.软件能力成熟度模型CMM.
17.能够根据数据流图进行功能点计算,根据用例图进行用例点计算,根据类图进行面向对
象度量.。

软件质量度量体系

软件质量度量体系

软件质量度量体系
软件质量度量体系是一个系统性的方法,用于对软件产品进行评价,并在此基础之上推进产品设计、产品制造和产品服务优化。

软件质量度量体系的主要目标是确保软件产品的质量,通过一系列的质量度量标准和方法,对软件产品的各个层面进行评估和测量。

这有助于发现潜在的问题和缺陷,并及时进行改进,从而提高软件产品的可靠性和稳定性。

在软件质量度量体系中,通常包括以下方面:
1.质量特性度量:对软件产品的各项质量特性进行度量,如功能性、可靠性、可用性、性能等。

2.过程度量:对软件开发过程中的各项活动进行度量,如需求分析、设计、编码、测试等。

3.组织度量:对软件开发组织的管理能力、技术能力、人员素质等方面进行度量。

4.成本效益度量:对软件开发的经济效益进行度量,包括直接成本、间接成本、收益等。

在实施软件质量度量体系时,通常需要制定相应的度量计划和标准,确定度量的目标、范围和方法,然后按照计划进行度量活动,并对结果进行分析和改进。

需要注意的是,软件质量度量体系是一个持续的过程,需要不断地进行评估和改进。

同时,不同的软件项目和组织可能需要不同的度量方法和标准,因此需要根据实际情况进行调整和优化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章软件结构度量方法
4.1 基础知识
早期软件度量学和当时面向功能分解的设计方法相联系,多以模块度量为主。

面向过程的程序设计,影响软件质量的主要因素:耦合性、内聚性、复杂性、模块化及规模大小。

利用软件模块结构图进行分析,可以从以下方面度量:
●模块间传递数据量的最大值
●模块间传递数据量的平均值
●模块间传递数据量的总数
●模块间公共数据数目
●模块扇入、扇出平均值和最大值
●模块条件调用、循环调用数目
●最大深度(层数)
一般认为设计良好的软件产品用其内部结构来描述其特点。

软件内部结构属性包括模块性、耦合、内聚、复杂度、信息流、重用度等。

如果能够对这些属性进行度量,就能够找出软件中难于实现、测试与维护的部分。

4.2 结构度量的类型
结构会影响到设计、编码和测试的时间与工作量、维护成本以及复杂性。

主要对三类结构进行度量:控制流结构、数据流结构、数据结构。

控制流(Control Flow)解决的是各种指令在程序中的执行顺序问题,反映了程序的迭代和循环性质。

程序规模对一条指令只能进行一次计数,而控制流反映出在程序在实际运行时可能会多次执行某条指令。

数据流(Data Flow)能够在程序创建或处理某个数据项的过程中对其轨迹进行跟踪。

数据流度量描述了数据在与程序进行交互的行为。

数据结构(Data Structure)涉及数据自身的组织问题,与程序无关。

如果把数据元素组织成表、队列、堆栈或者其他具有良好定义的结构,则程序实现时就容易对创建、修改或删除数据的算法进行良好定义。

数据结构能够反映出在编写“用来处理数据”的程序时的难度以及定义“用来验证程序正确性”的测试用例
时的难度。

有些情况下,程序的复杂性是由复杂的数据结构而不是复杂的控制流或数据流结构引起的。

4.3 控制流结构
控制流度量的建模通常采用有向图(Directed Graph)。

在有向图中,每个结点(或点)所对应的是一条程序语句,每段弧(或有向边)所表示的是从一条语句到另一条语句的控制流。

这个有向图是控制流图(Control-flow Graph)或流图(Flow Graph)。

McCabe圈复杂性能够对控制流结构进行度量,有以下三种方法:
(1)用程序流图的圈数来测量程序的复杂性。

(需要将程序流图的首尾结点连起来)
(2)通过V(G)= e – n +2 计算,其中e是程序流图中的边数,n是程序流图中的结点数。

(3)可以通过计算程序中的用于分支与循环判断的判定语句数量。

4.4 数据流结构
4.4.1 耦合
模块内的内聚(Cohesion)与模块间的耦合(Coupling)。

耦合:两个模块之间的相互依赖程度。

因此耦合指的是模块对的一个属性,而不是作为一个整体的设计属性。

设计中模块的全集表示的是全局耦合(Global Coupling),全局耦合可以从可能的模块对中的耦合推导而来。

系统中有两个模块x和y,两个模块之间可能有6种耦合关系:
(1)无耦合关系R0:x和y之间没有任何联系,即x和y完全独立;
(2)数据耦合关系R1:x和y通过参数产生联系,其中每个参数是一个数据元素或者是一个由不含控制元素的同类数据项的组成的集合。

这种
类型的耦合对模块之间的任何联系都是必须的;
(3)标记耦合关系R2:x和y把相同的记录类型当作一个参数。

这种类型
的耦合可以使两个在其他方面不相关的模块相互依赖;
(4)控制耦合关系R3:x向y传递了一个参数,能够控制y的行为。

即传递的参数是一个标志,如传递了1或0的值,用于控制y中程序的执
行过程;
(5)公共耦合关系R4:x和y引用相同的全局数据。

这种类型的耦合会使得在全局数据格式改变时,必须改变所有公共耦合关系的模块。

(6)内容耦合关系R5:x引用到y的内部,即x的一个分支进入y,或者改变y内的数据,或者修改y内的某个语句。

以上6种耦合关系的排列顺序:顶端的依赖性最弱,底端的依赖性最强。

所以i〉j,则R i〉R j。

i等于1或2,则认为x和y之间是一种松散耦合(Loosely Coupled)。

I等于4或5,即公共耦合和内容耦合是属于紧耦合(Tightly Coupled)。

用(i, j)表示模块x和y之间的耦合性,其中i表示耦合关系R i,j表示给定类型的耦合出现在x和y之间的次数。

模块x和y之间耦合性的度量方法为:
c(x, y) = k + n / n+1
k表示x和y之间存在的最大的耦合关系R k,n是x和y之间的相互连接数。

(Fention, Melton. 1990)
假设系统S是由模块D1, …, D p,…, D q,…,D n组成,则系统S的全局耦合度C的度量方法:
C(S)是集合{ c(D p, D q): 1≤p≤q≤n} 的中位数
系统S的全局耦合度反映了系统中连接性的总体水平。

耦合是影响系统设计质量的最重要属性之一。

4.4.2 内聚
模块内聚时指完成同一任务时对模块各个组成部分的需要程度。

7种内聚:功能内聚:模块完成一个定义良好的功能;
顺序内聚:模块完成的功能不止一个,但这些功能出现的次序是规格说明所规定;
通信内聚:模块完成的功能不止一个,但这些功能都位于同一个数据体上;
过程内聚:模块完成的功能不止一个,但这些功能只与一个通用过程相关;
时间内聚:模块完成的功能不止一个,这些功能是在相同的时间内出现的。

如:初始化模块。

逻辑内聚:模块完成的功能不止一个,但这些功能只在逻辑上相关;
巧合内聚:模块完成的功能不止一个,这些功能是不相关的。

以上7种耦合关系的排列顺序:顶端的内聚最强,底端的内聚最弱。

一个系统的内聚程度的度量方法:
内聚率= 具有功能内聚的模块数/模块总数
(Yourdon and Constantine, 1979)
复杂的内聚度量方法(Bieman and Ott, 1994)
4.4.3 信息流
模块和系统其他部分之间的信息流,存在于以下情况:
(1)一个模块调用另外一个模块,并且向该模块传递信息;
(2)被调用模块向调用模块返回一个结果。

如果被调用模块返回的信息随后被传递给第二个被调用模块,则认为存在局部间接流(local indirect flow);如果信息流通过全局数据结构从一个模块传递到另一个模块,则认为存在全局流(global flow)。

模块M的扇入(fan-in)等于终止于M的局部流数加上M从中取回信息的数据结构的数目。

模块M的扇出(fan-out)等于发源于M的局部流数加上M所更新的数据结构数。

Henry和Kafural把信息流“复杂性”定义为:
信息流复杂性(M)= 长度(M)*((扇入(M)*扇出(M))2)
扇入值、扇出值较低的模块独立于系统,相应的“复杂性”也较低。

Shepperd信息流度量方法:
Shepperd复杂性(M)=(扇入(M)*扇出(M))2
4.5 数据结构
通过对简单的数据类型(如整数类型、字符类型和布尔类型)、复杂数据结构以及在这些数据类型的各种操作对数据结构进行度量。

Halstead方法中对操作符、操作数的计算,即是一种数据结构的度量方法。

相关文档
最新文档