软件缺陷的分类标准
1.缺陷标识(Identifier): 缺陷标识是标记某个缺陷的一组符号。
每个缺陷必须有一个唯一的标识。
2.缺陷类型 (Type): 缺陷类型是根据缺陷的自然属性划分的缺陷种类。
3.缺陷严重程度 (Severity) :缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。
4.缺陷优先级(Priority): 缺陷的优先级指缺陷必须被修复的紧急程度。
5.缺陷状态(Status) :缺陷状态指缺陷通过一个跟踪修复过程的进展情况。
6.缺陷起源(Origin) :缺陷来源指缺陷引起的故障或事件第一次被检测到的阶段。
7.缺陷来源(Source): 缺陷来源指引起缺陷的起因。
8.缺陷根源(Root Cause): 缺陷根源指发生错误的根本因素。
F- Function :影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构。
并且设计文档需要正式的变更。
如逻辑,指针,循环,递归,功能等缺陷。
A- Assignment: 需要修改少量代码,如初始化或控制块。
如声明、重复命名,范围、限定等缺陷。
I- Interface: 与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。
C- Checking: 提示的错误信息,不适当的数据验证等缺陷。
B Build/package/merge :由于配置库、变更管理或版本控制引起的错误。
D- Documentation: 影响发布和维护,包括注释。
G- Algorithm :算法错误。
U-User Interface:人机交互特性:屏幕格式,确认用户输入,功能有效性,页面排版等方面的缺陷。
P-Performance:不满足系统可测量的属性值,如:执行时间,事务处理速率等。
N-Norms:不符合各种标准的要求,如编码标准、设计符号等。
软件测试错误严重程度1.Critical:不能执行正常工作功能或重要功能。
或者危及人身安全。
2.Major:严重地影响系统要求或基本功能的实现,且没有办法更正。
(重新安装或重新启动该软件不属于更正办法)3.Minor:严重地影响系统要求或基本功能的实现,但存在合理的更正办法。
(重新安装或重新启动该软件不属于更正办法)4.Cosmetic:使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。
5.Other:其它错误。
同行评审错误严重程度1.Major:主要的,较大的缺陷2.Minor:次要的,小的缺陷 1.Resolve Immediately:缺陷必须被立即解决。
2.Normal Queue:缺陷需要正常排队等待修复或列入软件发布清单。
3.Not Urgent:缺陷可以在方便时被纠正。
1.Submitted: 已提交的缺陷2.Open :确认“提交的缺陷”,等待处理3.Rejected: 拒绝“提交的缺陷”,不需要修复或不是缺陷4.Resolved :缺陷被修复5.Closed :确认被修复的缺陷,将其关闭 1.Requirement:在需求阶段发现的缺陷2.Architecture:在构架阶段发现的缺陷3.Design:在设计阶段发现的缺陷4.Code:在编码阶段发现的缺陷5.Test:在测试阶段发现的缺陷 1.Requirement: 由于需求的问题引起的缺陷2.Architecture: 由于构架的问题引起的缺陷3.Design: 由于设计的问题引起的缺陷4.Code: 由于编码的问题引起的缺陷5.Test: 由于测试的问题引起的缺陷6.Integration: 由于集成的问题引起的缺陷
软件安全漏洞跟缺陷一样吗
认识软件缺陷,首先要了解软件缺陷的概念,其次是了解软件缺陷的详细特征,最后就是它的属性了,再高一个层次就是学习利用管理软件缺陷的工具了。
1、首先介绍软件缺陷的概念 软件缺陷是指系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。
2、软件缺陷的详细特征 a、单一准确 b、可以再现(要求软件缺陷具有精确的步骤) c、完整统一 d、短小简练 e、特定条件 f、补充完整 g、不做评价 3、软件缺陷的属性 软件缺陷的属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。
下面详细介绍一下以上这些属性: a、缺陷标识:是标记某个缺陷的唯一标识,可以用数字序号表示; b、缺陷类型:功能、用户界面、文档、软件包、性能、系统\模块接口 功能:影响了各种系统功能、逻辑的缺陷; 用户界面:影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输入格式等方面的缺陷; 文档:影响发布和维护,包括注释、用户手册、设计文档; 软件包:由于软件配置库、变更管理或版本控制引起的错误; 性能:不满足系统可测量的属性值,如执行时间、事务处理速率等; 系统\模块接口:与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。
c、缺陷严重程度:致命(Fatal)、严重(Ceritical)、一般(Major)、较小(Minor) 致命:系统任何一个主要功能完全丧失,用户数据受到破坏,系统崩溃、悬挂、死机或者危机人身安全; 严重:系统的主要功能部分丧失,数据不能保存,系统的次要功能完全丧失,系统所提供的功能或服务受到明显的影响; 一般:系统的次要功能没有完全实现,但不影响用户的正常使用。
例如:提示信息不太准确或用户界面差、操作时间长等一些问题; 较小:使操作者不方便或遇到麻烦,但它不影响功能过的操作和执行,如个别不影响产品理解的错别字、文字排列不整齐等一些小问题 d、缺陷产生可能性:总是、通常、有时、很少 总是:总是产生这个软件缺陷,其产生的频率是100%; 通常:按照测试用例,通常情况下会产生这个软件缺陷,其产生的频率大概是80%—90%; 有时:按照测试用例,有时候产生这个软件缺陷,其产生的频率大概是30%—50%;
开源软件的安全性究竟如何?
引:关于软件的安全性问题,随着网络的流行越来越成为人们关注的焦点,事实上每年发生的大量的攻击事件,病毒、黑客、蠕虫,使人们对软件的安全性不得不重视。
但是究竟是开源软件安全还是商业软件更安全呢?关于这个问题一直是仁者见仁智者见智。
关于软件的安全性问题,随着网络的流行越来越成为人们关注的焦点,事实上每年发生的大量的攻击事件,病毒、黑客、蠕虫,使人们对软件的安全性不得不重视。
但是究竟是开源软件安全还是商业软件更安全呢?关于这个问题一直是仁者见仁智者见智。
有人说开源软件由于源代码是开放的,因此即使有漏洞和BUG也极易被人们发现并及时进行修改和完善,但是商业软件却由于不开放源代码,仅有少数人知道源代码,因此在漏洞和BUG方面,可能发现的很晚,所以也极易造成破坏和损失。
不过商业软件商总是认为自己的软件的安全性是相当可靠的,是经过检验地,并且也称,即使是开源软件,如果BUG和漏洞被一些不法分子获悉,同样存在着安全隐患,而且因为它的源代码是开放的,这种获悉漏洞的机会将更大。
可以说,彼此对对方的安全性都提出了质疑,甚至有些不屑。
那么究竟开源软件的安全性症结在哪里呢?开源软件的安全性是不是要比商业软件更好呢?事实证明,无论是一些软件使用者还是一些研究机构,对开源软件还是情有独衷的。
从他们的使用和研究来看,开源软件的安全性确实要好一些,在很大程度上就是因为它的开放性和随时弥补性。
众所周知,即使再完善的软件也可能存在着安全隐患,也就是说也可能有漏洞,甚至可以毫不夸张地说,所有的软件都有漏洞,只是这些漏洞是不是能及时被发现并进行弥补。
从某种程度上讲,商业软件所依赖的所谓的“安全性”其实更多的是臆想和希望,而不是现实。
现在的软件市场极度依赖于所谓的“独立”测试和认证,但实际上,付钱资助那些进行软件测试和认证的机构的人同时就是这些软件公司。
因此即使是微软这样的软件巨人,在自己的软件上每年要修正多少漏洞,这还仅仅是已经发现的漏洞,还有很多没有被发现的不是同样在侵蚀着我们的系统吗?据普林斯顿大学二名研究人员最近发布的一份报告称,AOL、Adobe等大牌公司在编写安全的软件方面还可以做得更好。
研究人员对包括AIM、Photoshop在内的许多流行的应用软件进行了研究,发现其中许多软件都针对操作系统进行了优化,使黑客能够绕过一些Windows安全机制。
普林斯顿大学的这二名研究人员重点研究了Windows的访问控制系统,它控制着用户和应用软件能够在PC上执行哪种类型的操作。
他们的结论是:许多软件要求过多的权限,为可能的黑客打开了大门。
据美国系统网络安全协会(SANS Institute)称,在对Windows进行多年的攻击后,黑客越来越多地瞄准了在Windows上运行的应用软件。
它将即时通讯、媒体播放、备份软件列为新的安全缺陷重灾区。
而开源软件在安全性方面做得相对就好多了,笔者并不是说开源软件就已经做到无懈可击,就已经绝对安全了,事实上也并不是这样,只要有软件存在,就可能出现安全性问题,这已经是业界达成共识的东西了。
问题的关键是,它们是在全球进行使用和开发,因此开源软件总是能够站在安全性的最前沿。
因为它的源代码是开放的,因此给人一种更放心的应用,对那些喜欢自己动手丰衣足食的人来说,开源软件能给自己一种信心。
更何况现在的开源,很大程度上是一种全球的智慧,是全体软件人员共同的兴趣和爱好的结晶。
虽然我们不能避免开源软件就没有安全问题,但是因为它的开放性以及共享性,因此它出现问题之后的解决速度将更快,而且堆积了大部分人智慧的锤炼,它的漏洞相对来说也要少一些。
这和商业软件是有本质的区别的,虽然商业软件号称是安全的,是不开放的,但是从发生的安全漏洞和受攻击的成功率方面来看,封闭并不意味着安全,相反,更容易激发那些黑客的兴趣,并不断地试探、攻击、骚扰着商业软件的安全度。
而开放了源代码,彼此之间大家都可以知道源代码是什么?因此对可能存在的问题以及自己需要进行的工作都可以很容易地上手研究。
这是开源的一个优势,也是网络时代共享精神的充分体现。
很显然,对软件的安全性问题,笔者更看好开源软件的发展。
冬瓜10263302