软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软件度量,就不能从软件开发的暗箱中跳将出来。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。度量取向是软件开发诸多事项的横断面,包括顾客满意度度量、质量度量、项目度量、以及品牌资产度量、知识产权价值度量,等。度量取向要依靠事实、数据、原理、法则;其方法是测试、审核、调查;其工具是统计、图表、数字、模型;其标准是量化的指标。
什么叫软件质量?
1 软件质量就是 “ 软件与明确的和隐含的定义的需求相一致的
程度
2 指定的标准定义了一组指导软件开发的准则,如果没有
遵守这些准则,几乎肯定会导致质量不高。
3 通常,有一组没有显式描述的隐含需求(如期望软件是
容易维护的)。如果软件满足明确描述的需求,但却不
满足隐含的需求,那么软件的质量仍然是值得怀疑的
软件质量考虑要素
功能性
1功能性
当软件在指定条件下使用时,软件产品提供满足明确和隐含
要求的功能的能力。
l 适合性
软件产品符合需求,能解决用户业务问题
l 准确性
软件产品数据和处理处理能力要准确
l 互操作性
软件产品与其他系统的交互和对接能力。
l 安全保密性
软件产品权限安全,不同角色进入拥有不同的操作权限.
性能
时间特性
软件产品执行其功能时,提供满足需求的响应时间和处理时
间以及吞吐率等指标的能力。
l 资源利用性
软件产品执行其功能时,提供满足需求的CPU、内存等占用
率的能力
安全性
软件在受到恶意攻击的情形下依然能够继续正确运行的能力
l 软件被在授权范围内合法使用的能力,如:序列号决定使用
数。
兼容性
软件适应不同的规定环境下的能力
l 软件遵循与可移植性有关的标准或约定的能力
l 软件与其他替代软件兼容的能力
l 常见的兼容性(浏览器、操作系统)
可靠性
可靠性
在指定条件下使用时,软件产品维持规定的性能级别的能力。
l 成熟性
软件产品为避免由软件内部的故障而导致失效的能力。
l 容错性
软件出现故障或者违反其指定接口的情况下,依然维持规定
的性能级别的能力。
l 易恢复性
失效发生后,重建规定的性能级别并恢复受直接影响的数据
的能力。
易用性
易用性
在指定条件下使用时,软件产品被理解、学习、使用和吸引
用户的能力。
l 易理解性
软件产品让用户无须过多学习就能理解的能力。
l 易学性
软件产品让用户即使参加了学习,学习成本高低的能力。
l 易操作性
软件产品让用户操作方便,符合使用习惯的能力。
l 吸引性
软件产品让用户觉得舒服、操作吸引眼球的能力。
l 用户体验性
是以上几个特性的统称,部分企业把易用性也称之为用户体
验性,是一个比较时髦的词。
安装、卸载
执行安装/卸载时,能按照一定的规格和流程将软件安装上
的能力。
l 简化的软件安装/卸载过程
l 提供亲切友善的操作逻辑或接口
l 软件完整,避免被盗版、破解或植入病毒
可维护性
易分析性
软件出问题后,快速判断问题点并能快速修复的能力。
l 易改变性
软件修改后可快速发布,快速投入生产的能力。
l 稳定性
软件避免由于软件修改而造成意外结果的能力。
l 易测试性
软件版本升级修改后被快速确认的能力。
可移植性
适应性
软件不需采用其他手段就可适应不同的指定环境的能力。
l 易安装性
软件在指定环境中被快速安装的能力。
l 共存性
软件在同一环境下同与其他软件共存的能力。
l 易替换性
软件在同一环境下,替代另一个相同用途的软件的能力
什么是SQDC 是生产中的术语么?
软件质量设计评价准则(SQDC)
衡量标准的组合反映某一软件质量要素精确性、稳健性、安全性、通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追踪性、可见性、硬件系统无关性、软件系统无关性、可扩充性、公用性、模块性、清晰性、自描述性、简单性、结构性、文件完备性等
软件产品的度量主要针对作为软件开发成果的软件产品的质量而言,独立于其过程。软件的质量由一系列质量要素组成,每一个质量要素又由一些衡量标准组成,每个衡量标准又由一些量度标准加以定量刻划。质量度量贯穿于软件工程的全过程以及软件交付之后,在软件交付之前的度量主要包括程序复杂性、模块的有效性和总的程序规模,在软件交付之后的度量则主要包括残存的缺陷数和系统的可维护性方面。一般情况下,可以将软件质量特性定义成分层模型。勃姆(Barry W. Boehm)在《软件风险管理》(Software Risk Management)中第一次提出了软件质量度量的层次模型。而麦考尔(McCall)等人将软件质量分解至能够度量的层次,提出FCM 3层模型(参见表5-13):软件质量要素(factor)、衡量标准(criteria)和量度标准(metrics),包括11个标准,分为产品操作(product operation)、产品修正(product revision)和产品转移(product transition)。ISO 9126将软件质量总结为6大特性,每个特性包括一系列副特性,其软件质量模型包括3层,即高层:软件质量需求评价准则(SQRC);中层:软件质量设计评价准则(SQDC);低层:软件质量度量评价准则(SQMC)。
什么是可信软件
可信就是:一个实体在实现给定目标时,其行为与结果总是可以预期的。
如果软件服务总是与用户的预期相符,即使在运行过程中出现一些特殊情况,这样的软件就是可信软件。
特殊情况包括:
1、硬件环境(计算机、网络)发生故障
2、低层软件(操作系统、数据库)出现错误
3、其它软件(病毒软件、流氓软件)对其产生影响
4、出现有意(攻击)、无意(误操作)的错误操作
什么样的软件是可信的?
可用
功能:正确、不少、不多
可靠性(容错):高
安全性(机密性、完整性):高
响应时间(从输入到输出):小
维护费用(监测、演化):小
……
软件测试的方法一共有几种
1、从是否关心内部结构来看
(1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。
(2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。
(3)灰盒测试:是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。
2、从是否执行代码看
(1)静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
(2)动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。
3、从开发过程级别看
(1)单元测试:又称模块测试,是针对软件设计的最小单位----程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验程序各模块是否存在各种差错,是否能正确地实现了其功能,满足其性能和接口要求。
(2)集成测试:又叫组装测试或联合,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。旨在检验软件单元之间的接口关系,以期望通过测试发现各软件单元接口之间存在的问题,最终把经过测试的单元组成符合设计要求的软件。
(3)系统测试:是为判断系统是否符合要求而对集成的软、硬件系统进行的测试活动、它是将已经集成好的软件系统,作为基于整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、人员、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
在系统测试中,对于具体的测试类型有:
(1)功能测试:对软件需求规格说明书中的功能需求逐项进行的测试,以验证功能是否满足要求。
(2)性能测试:对软件需求规格说明书的功能需求逐项进行的测试,以验证功能是否满足要求。
(3)接口测试:对软件需求规格说明中的接口需求逐项进行的测试。
(4)人机交互界面测试:对所有人机交互界面提供的操作和显示界面进行的测试,以检验是否满足用户的需求。
(5)强度测试:强制软件运行在异常乃至发生故障的情况下(设计的极限状态到超出极限),验证软件可以运行到何种程序的测试。
(6)余量测试:对软件是否达到规格说明中要求的余量的测试。
(7)安全性测试:检验软件中已存在的安全性、安全保密性措施是否有效的测试,
(8)可靠性测试:在真实的或仿真的环境中,为做出软件可靠性估计而对软件进行的功能(其输入覆盖和环境覆盖一般大于普通的功能测试)
(9)恢复性测试:对有恢复或重置功能的软件的每一类导致恢复或重置的情况,逐一进行的测试。
(10)边界测试:对软件处在边界或端点情况下运行状态的测试。
(11)数据处理测试:对完成专门数据处理功能所进行的测试。
(12)安装性测试:对安装过程是否符合安装规程的测试,以发现安装过程中的错误。
(13)容量测试:检验软件的能力最高能达到什么程度的测试。
(14)互操作性测试:为验证不同软件之间的互操作能力而进行的测试。
(15)敏感性测试:为发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试。
(16)标准符合性测试:验证软件与相关国家标准或规范(如军用标准、国家标准、行业标准及国际标准)一致性的测试。
(17)兼容性测试:验证软件在规定条件下与若干个实体共同使用或实现数据格式转换时能满足有关要求能力的测试。
(18)中文本地化测试:验证软件在不降低原有能力的条件下,处理中文能力的测试。
4、从执行过程是否需要人工干预来看
(1)手工测试:就是测试人员按照事先为覆盖被测软件需求而编写的测试用例,根据测试大纲中所描述的测试步骤和方法,手工地一个一个地输 入执行,包括与被测软件进行交互(如输入测试数据、记录测试结果等),然后观察测试结果,看被测程序是否存在问题,或在执行过程中是否会有一场发生,属于比较原始但是必须执行的一个步骤。
(2)自动化测试:实际上是将大量的重复性的测试工作交给计算机去完成,通常是使用自动化测试工具来模拟手动测试步骤,执行用某种程序设计语言编写的过程(全自动测试就是指在自动测试过程中,不需要人工干预,由程序自动完成测试的全过程;半自动测试就是指在自动测试过程中,需要手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试)
5、从测试实施组织看
(1)开发测试:开发人员进行的测试
(2)用户测试:用户方进行的测试
(3)第三方测试:有别于开发人员或用户进行的测试,由专业的第三方承担的测试,目的是为了保证测试工作的客观性
6、从测试所处的环境看
(1)阿尔法测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试
(2)贝塔测试:是用户公司组织各方面的典型终端用户在日常工作中实际使用贝塔版本,并要求用户报告
扩展资料
软件测试的内容:
1 得到需求、功能设计、内部设计说书和其他必要的文档
2 得到预算和进度要求
3 确定与项目有关的人员和他们的责任、对报告的要求、所需的标准和过程 ( 例如发行过程、变更过程、等等 )
4 确定应用软件的高风险范围,建立优先级、确定测试所涉及的范围和限制
5 确定测试的步骤和方法 ── 部件、集成、功能、系统、负载、可用性等各种测试
6 确定对测试环境的要求 ( 硬件、软件、通信等 )
7 确定所需的测试用具 (testware) ,包括记录 / 回放工具、覆盖分析、测试跟踪、问题 / 错误跟踪、等等
8 确定对测试的输入数据的要求
9 分配任务和任务负责人,以及所需的劳动力
10 设立大致的时间表、期限、和里程碑
11 确定输入环境的类别、边界值分析、错误类别
12 准备测试计划文件和对计划进行必要的回顾
13 准备白盒测试案例
14 对测试案例进行必要的回顾 / 调查 / 计划
15 准备测试环境和测试用具,得到必需的用户手册 / 参考文件 / 结构指南 / 安装指南,建立测试跟踪过程,建立日志和档案、建立或得到测试输入数据
16 得到并安装软件版本
17 进行测试
18 评估和报告结果
19 跟踪问题 / 错误,并解决它
20 如果有必要,重新进行测试
21 在整个生命周期里维护和修改测试计划、测试案例、测试环境、和测试用具
参考资料:百度百科-软件测试
软件工程专业毕业出来能做什么工作?
你可以不做开发,可以做技术支持,软件设施,软件销售,这些职位对专业技术要求不是很高,所以在你现在还没毕业之前,赶紧找一些相关资料好好看看,多了解一下,能学进去的话,最好多学点,对你就业有好没坏,但是做这些你首先得感兴趣,不感兴趣的话就免了,别浪费这些时间。有关系的话,找个相关单位实习一下最好,这样你就在就业的时候有资本了。
转载请注明出处51数据库 » 软件安全性度量 什么是软件度量?
名字去哪拉
