软件度量知识点

软件度量知识点

1.测量有哪些尺度类型?各有何区别?测量作为一个过程,有哪些阶段?

2.软件度量的实体有哪些?如何采用GQM定义度量框架?GQM中如何描述目标?

3.什么是功能点分析?特征点、对象点、和功能点有何不同?

4.什么是用例点分析?

5.Helstead 方法如何进行软件度量?与代码行相比有何优势?

6.什么是COCOMO模型?如何采用COCOMO模型进行成本估计?

7.什么是程序的环形复杂度?如何度量?

8.在面向对象的度量中,CK方法和LK方法各提供了哪些度量指标?

9.基于信息的度量中,shepperd方法与Herry/Kafura 方法有何不同?

10.举例说明数据结构如何影响软件的复杂性。

11.度量软件产品结构时,一般考虑哪三类结构?每个结构度量中考虑哪些因素?

12.ISO 9126质量模型,Bohem质量模型,McCall’s质量模型考虑了软件哪些主要质量因素?

13.软件能力成熟度模型CMM.

14.能够根据数据流图进行功能点计算,根据用例图进行用例点计算,根据类图进行面向对象度量.

 

 

测量定义:用数字或符号来表示真实世界中实体属性从而根据定义的规则来表示实体的过程。

度量定义:由用户和设计者一同设想的用来在可信和有意义的方式中显露出的的选择的特性。

软件度量的定义:用来量化软件产品软件开发资源和/或软件开发过程的度量。包括可直接测量的对象如代码行也包括通过测量计算得到的对象如软件质量。

 

1. 测量有哪些尺度类型?各有何区别?测量作为一个过程有哪些阶段?

答:(1)测量有标定尺度、类型尺度、序列尺度、间隔尺度、比例尺度、绝对尺度。

(2)标定尺度和类型尺度属于语言尺度Linguistic,间隔尺度、比例尺度和绝对尺度属于定量尺度。

    标定尺度给出了唯一且不含糊的概念名称,并且定义技术也属于标定尺度。

    类型尺度识别实体中已经定义且命名的类型或种类categories,也叫绝对标定尺度。

    序列尺度估计已测量的实体的值并将他们按顺序重组排列值和顺序均表达为字符或符号。

    间隔尺度用于发现增长间隔而不是比例没有不合理的0间隔后半句话翻译不好。

    比例尺度允许比例的计算并且允许合理的0参考点。

    绝对尺度用于计数count只有一种可能的绝对属性测量。

(3)感知Cognitive、语义Semantic、数字化Quantitative。

2. 软件度量的实体有哪些?如何采用GQM定义度量框架?GQM中如何描述目标?

答:(1)软件度量的实体类型:

    ①过程process软件开发中活动的集合。不同的软件开发模式中所采用的流程和活动也不一样。

    ②产品product软件过程活动的结果可以是一个程序、一个软件文档或其他任何交付物。

    ③资源resource实施这些活动所需要的对象可能是人力、设备、时间等。

(2)GQM定义度量框架:1.确定目标;2.细化感兴趣的问题列表;3.定义需要回答这些问题的度量标准;4.开发数据收集和分析的工具和机制;5.收集并验证数据;6.通过事后剖析的方式分析数据以评估是否与目标一致并为其后的改善提供意见;7.为利益相关者提供反馈信息。

(3)GQM中如何描述目标:GQM中目标有4个部分:一个感兴趣的对象、一个意图、一个观点、一个对环境和约束的描述。

3.什么是功能点分析?特征点、对象点、和功能点有何不同?

答:(1)功能点分析是对产品中为调整的函数数量UFC及值调整因子VAF的分析计算。(FP=UFC*VAF。生产率:FP/人月。文档率:页数/FP)。

(2)特征点分析扩展了功能点计数到实时和TLC环境MIS、RT、SC。当应用的算法数量及逻辑数据文件数相同时,功能点和特征点产生相同的结果。应用于MIS项目时结果通常完全相同。当应用于更复杂的系统软件形态时,特征点的计数要高的显著的多。

对象点是应用于开发循环早期的一种初始规模度量技术。每个对象被分成简单、中等、困难3个等级。度量由使用的窗口screen、报告reports、组件components的计数来决定。

功能点则是对产品中使用的功能函数的计数来度量程序。

4.什么是用例点分析?

答:用例点分析是面向对象分析和设计中一种用来提高需求的方法。

用例点分析方法为:

    1.计算未调整的角色数:UAW 

    2.计算未调整的用例数:UUCW 

    3.计算未调整的用例点数:UUCP=UAW+UUCW 

    4.计算技术复杂度因子:TCF=0.6+0.01*TFactor

    5.计算环境因子:EF=1.4-0.03*EFactor

    6.计算成本调整后的用例点数:UPC=UUCP*TCF*EF。

5.Helstead方法如何进行软件度量?与代码行相比有何优势?

答:(1)答法一:Halstead方法认为程序是一组记号,由两种基本的元素组成操作数(变量、常量、地址、空间)和操作符编程语言中定义的操作。它统计程序中出现的不重复的操作符数量μ1和操作数数量μ2及总共的操作符数N1和操作数数N2。

    程序的单词量vocabulary:μ=μ1+μ2

    程序的长度为总共出现的操作符数和操作数数:N=N1+N2

    程序预计长度:N^=μ1log2μ1+μ2log2μ2

    程序容量:V=Nlog2μ=Nlog2(μ1+μ2)。Halstead方法认为V是编写长度为N的程序所需要的思维比较次数。V通常用来测量软件复杂度。

    潜在容量V*:是一个算法任意表达的最小容量。假设只有一个操作符一个操作符,只引用一次。V*=(2+μ2*)log2(2+μ2*)    程序等级L:是一个算法的具体实现的抽象级别。L=V*/V

    智力内容I:测量程序里表述了“多少”。I=L^*V

    困难度:D=1/L

答法二:Halstead方法是一种程序复杂度度量方法。Halstead度量方法不仅仅度量了程序长度还描述了程序的最小实现和实际实现之间的关系。并据此阐释程序语言的等级高低。它以程序中出现的操作符和操作数为计数对象。以它们的出现次数作为计数目标来测算程序容量和工作量。

    n1:操作符数量  n2:操作数数量 N1:操作符出现的总数量  N2:操作数出现的总数量

    Program length:程序长度 N=N1+N2

    Program vocabulary:程序词汇量 n=n1+n2

    Volume:程序体积    V=Nlog2n

    Difficulty:难度

    Effort:总工作量    E=D*V

    Halstead还给出了预测程序中包含错误的个数的公式如下:E=Nlog2(n1+n2)/3000

(2)Halstead方法与代码行相比:

    1.定义清晰  2.对具体的编程语言依赖性小 3.能为早期的设计提供支持  4.对开发人员技术的依赖性较小。

6.什么是COCOMO模型?如何采用COCOMO模型进行成本估计?

答:(1)COCoMo是指Constructive Cost Model,构造性成本模型,Boehm于1981年提出,用于对软件开发项目的规模、成本、进度等方面进行估算。CoCoMo模型是一个综合经验模型,模型中的参数取值来至于经验值,并且综合了诸多的因素、比较全面的估算模型。比较实用、可操作,在欧盟国家应用较为广泛。

(2)1.基本COCOMO模型:系统开发的初期,估算整个系统的工作量(包括维护)和软件开发和维护所需的时间。

       工作量:E=a*(kLOC)b  (单位人月);开发时间:D=c*Ed  (单位月)    其中a,b,c,d为经验常数

2.中间COCOMO模型:估算各个子系统的工作量和开发时间

         工作量:E=a*(kLOC)b*EAF   EAF:工作量调节因子(15个因素之积、取值0.70-1.66)

    3.详细COCOMO模型:估算独立的软构件,如各个子系统的各个模块的工作量和开发时间

7.什么是程序的环形复杂度?如何度量?

答:(1)用McCabe方法度量得出的结果称为程序的环形复杂度。它等于强连通的程序控制结构图中线性无关的有向环的个数。所谓强连通图是指从图中任一个节点出发都可以到达所有其它节点。程序控制结构图通常不是强连通的,因为从图中较低的即较靠近出口点的节点往往不能到达较高的节点。然而如果从出口点到入口点画一条虚弧则程序控制结构图必然成为强连通的。

(2)McCabe方法的计算步骤分如下三步:

    步骤1:将程序流程图退化成有向图即将程序流程图的每个处理框看作一个节点,将流线看作连接各节点的有向弧。

    步骤2:在有向图中由程序出口到入口连接一条虚有向弧。

    步骤3:计算VG=m-n+1

其中VG是有向图G中环数,m是有向图G中的弧数,n是有向图G中的节点数。

    实践表明模块规模以VG≤10为宜,也就是说VG=10是模块规模的一个更科学、更精确的上限。FA 0 FSm1m2 m1 m2FCm1m2 m1 m2 1 FLm1 m1

8.在面向对象的度量中,CK方法和LK方法各提供了哪些度量指标?

答:LK方法提供了:LOC程序大小、CS类大小(可能说明类职责过多)、NOO重载类个数(NOO过大说明设计有问题,继承层次抽象度低)、NOA新增方法个数(说明设计漂移)、SI过高说明层次中的类不符合抽象定义、DIT继承树深度等。

CK方法提供了:WMC:Weighted Methods perClass方法的权重和复杂性、DIT:Depth of Inheritance继承树深度值越大复杂度越大、NOC:Number of Children子类数直接继承于某个类的个数(指示一个类可能对系统和设计存在的潜在影响)、CBO:Coupling Between Objects类耦合度(过大说明类关系较多维护困难)、RFC:Response for a Class类响应度(所有可以用于对一个对象的消息做出响应的方法个数)、LCOM:Lack of Cohension内聚度的缺乏,不同的方法用同样的变量实例集做出不同的表象叫存在内聚度。

9.基于信息的度量中,shepperd方法与Herry/Kafura方法有何不同?

答:答法一:shepperd方法是一种较原始的改善。我们的指标特征是它们消除信息和控制流的模糊性,集中在信息流的度量上。而henry和kafura度量是不能做到的。

答法二:基于信息的度量使用扇入扇出度量。Shepperd方法认为信息流复杂度(M)=((fan-in(M)*(fan-out(M))2。shepperd强调这方法是在初始阶段度量的改进。

HenryKafura方法认为信息流复杂度:(M)=length(M)*((fan-in(M)*(fan-out(M))2。

10.举例说明数据结构如何影响软件的复杂性。

答:系统的全局复杂性不能无视数据结构而进行测量,控制流测量对鉴别隐藏在数据结构中的复杂度时会失效。

11.度量软件产品结构时一般考虑哪三类结构?每个结构度量中考虑哪些因素?

答:(1)控制流结构、数据流结构、数据结构

(2)圈复杂度是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可能质量低且难于测试和维护。经验表明程序的可能错误和高的圈复杂度有着很大关系。

Shepperd度量使用扇入扇出度量。Shepperd方法认为信息流复杂度(M)=((fan-in(M)*(fan-out(M))2。shepperd强调这方法是在初始阶段度量的改进。

Halstead复杂度是以程序中出现的运算符和运算元为计数对象,以它们出现的次数作为计数目标直接测量指标,然后据以计算出程序容量、工作量。

12.ISO 9126质量模型、Bohem质量模型、McCall's质量模型考虑了软件哪些主要质量因素?

答:ISO 9126质量模型:功能性、可靠性、可用性、效率、可维护性、可移植性。

Bohem质量模型:总体适用性、可移植性、可维护性

McCall’s质量模型:正确性、可靠性、效率、完整性、可用性。

13.软件能力成熟度模型CMM。

答:CMM是是一种用于评价软件承包能力,并帮助其改善软件质量的方法。侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级、二级为可重复级、三级为已定义级、四级为已管理级、五级为优化级。

14.能够根据数据流图进行功能点计算,根据用例图进行用例点计算,根据类图进行面向对象度量。

答:(1)数据流图进行功能点计算

    1计算各要素的基本计数

    2应用复杂度加权因子乘以复杂度加权因子,即简单、一般、复杂,得到UFC

    3应用环境参数

    4计算复杂度调整系数:VAF=0.65+0.01EFi(E代表求和,i是下标)

    5计算调整后的功能点:FP=UFC*VAF

(2)根据用例图进行用例点计算

    1.计算未调节前的参与者权重:UAW

(程序接口,即与其他系统交互的级别为simple,权重Factor1;协议、合作的级别为average,权重Factor2;人机交互GUI的级别为complex,权重Factor3)

    2.计算未调节前的用例权重:UUCW  (基于事物、基于分析类的用例权重分析)

    3.计算未调节前的用例点:UUCP=UAW+UUCW

    4.技术复杂度因素:TCF=0.6+0.01*TFactor

    5.环境因素:EF=1.4-0.03*EFactor

    6.调节后的用例点:UCP=UUCP*TCF*EF

(3)类图进行面向对象度量

    LK:对规模、继承度量

    CK:对类的方法复杂性、特性、模块间内聚 度量

===============================================================================

买一送一:

1.Pareto 图和 Histogram 图有何区别?运行图和控制图有何区别?

答:(1)Pareto图又叫80-20准侧图。它把频率条按降序从左到右排列,X轴通常是引起缺陷的原因,而Y轴通常是缺陷数。它给出了引起缺陷的主要因素。Histogram图的X轴是按单位间隔排列的参数且参数按升序从左到右排列,Y轴包含了频率计数。

Pareto图中频率条按频率计数排序显示,Histogram图用来显示参数特征的分布度。

(2)运行图和控制图的X轴Y轴表示相同,运行图是使用历史数据进行趋势分析,而控制图比运行图多一条中线用来判断数据是否脱离控制,表明需要进行纠正操作。

2.什么是过程能力?如何度量过程能力?

答:(1)过程能力是指过程或工序处于稳定状态下的实际加工能力。它是衡量工序质量的一种标志。对加工过程的工序能力进行分析可使我们随时掌握制造过程中各工序质量的保证能力。从而为保证和提高产品质量提供必要的信息和依据。

(2)过程能力度量:通过使用Cpk指数进行过程能力度量来评定实际过程与基线的目标均值的接近程度以及过程变更的数量。

要度量组织的过程能力首先需要有如下信息:

1.指定界限即上限和下限

2.指定宽度可根据指定界限得出

3.过程界限通过过程度量所得出的上限和下限

4.过程宽度可根据过程界限得出。Cpk1表示过程超过 了预定的最低标准,单个峰值较小的方差过程峰值与目标接近。

3.在度量数据的频域分析中如何描述测量数据的散步度?

答:散步度描述了被测量观察数据在数据集中是怎样分布的。

主要通过以下3个参数来反映:

    极差是资料组数据集中最高和最低值之差

    方差测量观察值的波动范围

    标准差是方差的平方根。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是我为您准备的更加详细的思维导图: ![Python全栈基础系列-详细版](https://i.ibb.co/9rTJyfS/python-full-stack-detailed.png) 上图中,紫色框表示整个Python全栈基础系列,包含了以下几个主要方面: 1. **编程基础**:这是学习Python的基础,包括了Python语言基础、数据结构和算法、编程范式等内容。 - Python语言基础 - 变量、数据类型、运算符 - 控制结构、循环结构、函数 - 模块、包、命名空间 - 数据结构和算法 - 数组、链表、栈、队列 - 二叉树、哈希表、图 - 排序算法、查找算法 - 编程范式 - 面向对象编程 - 函数式编程 - 命令式编程 2. **Web开发基础**:这是学习Web开发的基础,包括了HTML、CSS、JavaScript以及HTTP协议等内容。 - HTML - 标签、属性、文本、注释 - 表单、音频、视频、Canvas - HTML5新特性 - CSS - 选择器、样式、优先级 - 盒模型、布局、动画 - CSS3新特性 - JavaScript - 变量、数据类型、运算符 - 控制结构、循环结构、函数 - 对象、事件、DOM操作、Ajax - HTTP协议 - 请求、响应、状态码 - URL、Cookie、Session - HTTPS、HTTP2.0 3. **前端开发**:这是Web开发的前端部分,主要包括了前端框架、UI框架和前端工具等内容。 - 前端框架 - React、Vue、Angular - 组件、路由、状态管理 - 服务器端渲染、静态网站生成器 - UI框架 - Bootstrap、Ant Design、ElementUI - 布局、组件、主题 - 响应式设计、移动端适配 - 前端工具 - Webpack、Babel、ESLint - 自动化构建、代码分割、模块热替换 - 代码检查、格式化、优化 4. **后端开发**:这是Web开发的后端部分,主要包括了Python Web框架、数据库、缓存、消息队列等内容。 - Python Web框架 - Flask、Django、Tornado - 路由、视图、模板 - ORM、中间件、静态文件处理 - 数据库 - MySQL、PostgreSQL、MongoDB - 关系型数据库、非关系型数据库 - 数据库设计、索引、事务 - 缓存 - Redis、Memcached - 缓存策略、缓存穿透、缓存雪崩 - 分布式缓存 - 消息队列 - RabbitMQ、Kafka - 消息的发布和订阅、消息持久化 - 队列延迟、队列长度控制 5. **运维基础**:这是保证Web应用可用性和稳定性的基础,包括了Linux系统、网络基础、安全和监控等内容。 - Linux系统 - 常用命令、文件系统、进程管理 - Shell脚本、定时任务、系统监控 - 软件安装、配置、编译 - 网络基础 - TCP/IP协议、网络拓扑 - DNS、HTTP、HTTPS - 负载均衡、反向代理、CDN - 安全 - 漏洞、攻击、防范 - Web安全、服务器安全、网络安全 - 认证、授权、加密 - 监控 - 监控指标、监控系统 - 告警、日志、度量 - 高可用、自动化、容器化 6. **项目实践**:这是把前面学到的知识应用到实际项目中的阶段,包括了项目管理、版本控制、测试等内容。 - 项目管理 - 项目规划、需求分析、进度控制 - 团队协作、沟通、文档管理 - 敏捷开发、Scrum、Kanban - 版本控制 - Git、SVN - 分支管理、合并、冲突解决 - 版本发布、回滚、标签管理 - 测试 - 单元测试、集成测试、系统测试 - 测试用例、测试报告、缺陷管理 - 自动化测试、持续集成 以上是Python全栈基础系列的具体知识点内容,希望这个思维导图能够帮助您更好地了解Python全栈基础系列的学习内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值