在软件开发的过程中,软件缺陷的产生是不可避免的。那么造成软件缺陷的主要原因有哪些?从软件本身、团队工作和技术问题等角度分析,就可以了解造成软件缺陷的主要因素。
软件缺陷的产生主要是由软件产品的特点和开发过程决定的。 1.需求不清晰,导致设计目标偏离客户的需求,从而引起功能或产品特征上的缺陷。
2.系统结构非常复杂,而又无法设计成一个很好的层次结构或组件结构,结果导致意想不到的问题或系统维护、扩充上的困难;即使设计成良好的面向对象的系统,由于对象、类太多,很难完成对各种对象、类相互作用的组合测试,而隐藏着一些参数传递、方法调用、对象状态变化等方面问题。
3.对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误。
4.对一些实时应用,要进行精心设计和技术处理,保证精确的时间同步,否则容易引起时间上不协调,不一致性带来的问题。
5.没有考虑系统崩溃后的自我恢复或数据的异地备份、灾难性恢复等问题,从而存在系统安全性、可靠性的隐患。
6.系统运行环境的复杂,不仅用户使用的计算机环境千变万化,包括用户的各种操作方式或各种不同的输入数据,容易引起一些特定用户环境下的问题;在系统实际应用中,数据量很大。从而会引起强度或负载问题。
7.由于通信端口多、存取和加密手段的矛盾性等,会造成系统的安全性或适用性等问题。
8.新技术的采用,可能涉及技术或系统兼容的问题,事先没有考虑到。 1.系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存在一些困难。
2.不同阶段的开发人员相互理解不一致。例如,软件设计人员对需求分析的理解有偏差,编程人员对系统设计规格说明书某些内容重视不够,或存在误解。
3.对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通。
4.项目组成员技术水平参差不齐,新员工较多,或培训不够等原因也容易引起问题。 1.算法错误:在给定条件下没能给出正确或准确的结果。
2.语法错误:对于编译性语言程序,编译器可以发现这类问题;但对于解释性语言程序,只能在测试运行时发现。
3.计算和精度问题:计算的结果没有满足所需要的精度。
4.系统结构不合理、算法选择不科学,造成系统性能低下。
5.接口参数传递不匹配,导致模块集成出现问题。 1.缺乏质量文化,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试、等时间,遗留的缺陷会比较多。
2.系统分析时对客户的需求不是十分清楚,或者和用户的沟通存在一些困难。
3.开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;周期短,还给各类开发人员造成太大的压力,引起一些人为的错误。
4.开发流程不够完善,存在太多的随机性和缺乏严谨的内审或评审机制,容易产生问题。
5.文档不完善,风险估计不足等。
用户操作不当跟软件自身缺陷,那个是漏洞产生的主要原因
一般都是说软件自身缺陷
因为用户的行为不可控
所以,
漏洞在所难免,只能是不断打补丁!
软件缺陷怎么描述
认识软件缺陷,首先要了解软件缺陷的概念,其次是了解软件缺陷的详细特征,最后就是它的属性了,再高一个层次就是学习利用管理软件缺陷的工具了。 1、首先介绍软件缺陷的概念
软件缺陷是指系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。 2、软件缺陷的详细特征 a、单一准确
b、可以再现(要求软件缺陷具有精确的步骤) c、完整统一 d、短小简练 e、特定条件 f、补充完整 g、不做评价
3、软件缺陷的属性
软件缺陷的属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。 下面详细介绍一下以上这些属性:
a、缺陷标识:是标记某个缺陷的唯一标识,可以用数字序号表示; b、缺陷类型:功能、用户界面、文档、软件包、性能、系统\模块接口 功能:影响了各种系统功能、逻辑的缺陷;
用户界面:影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输入格式等方面的缺陷;
文档:影响发布和维护,包括注释、用户手册、设计文档; 软件包:由于软件配置库、变更管理或版本控制引起的错误;
性能:不满足系统可测量的属性值,如执行时间、事务处理速率等; 系统\模块接口:与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。
c、缺陷严重程度:致命(Fatal)、严重(Ceritical)、一般(Major)、较小(Minor)
致命:系统任何一个主要功能完全丧失,用户数据受到破坏,系统崩溃、悬挂、死机或者危机人身安全; 严重:系统的主要功能部分丧失,数据不能保存,系统的次要功能完全丧失,系统所提供的功能或服务受到明显的影响;
一般:系统的次要功能没有完全实现,但不影响用户的正常使用。例如:提示信息不太准确或用户界面差、操作时间长等一些问题;
较小:使操作者不方便或遇到麻烦,但它不影响功能过的操作和执行,如个别不影响产品理解的错别字、文字排列不整齐等一些小问题 d、缺陷产生可能性:总是、通常、有时、很少
总是:总是产生这个软件缺陷,其产生的频率是100%;
通常:按照测试用例,通常情况下会产生这个软件缺陷,其产生的频率大概是80%—90%;
有时:按照测试用例,有时候产生这个软件缺陷,其产生的频率大概是30%—50%;
软件缺陷的构成
从软件测试观点出发,软件缺陷有以下五大类: (1)规格说明书缺陷:规格说明书可能不完全,有二义性或自身矛盾。另外,在设计过程中可能修改功能,如果不能紧跟这种变化并及时修改规格说明书,则产生规格说明书错误。 功 规格说明书 404 能 功能 147 缺 测试 7 陷 总计 558 27% (2)功能缺陷:程序实现的功能与用户要求的不一致。这常常是由于规格说明书包含错误的功能、多余的功能或遗漏的功能所致。在发现和改正这些缺陷的过程中又可能引入新的缺陷。
(3)测试缺陷:软件测试的设计与实施发生错误。特别是系统级的功能测试,要求复杂的测试环境和数据库支持,还需要对测试进行脚本编写。因此软件测试自身也可能发生错误。另外,如果测试人员对系统缺乏了解,或对规格说明书做了错误的解释,也会发生许多错误。
(4)测试标准引起的缺陷:对软件测试的标准要选择适当,若测试标准太复杂,则导致测试过程出错的可能就大。 ◆外部接口缺陷:外部接口是指如终端、打印机、通信线路等系统与外部环境通讯的手段。所有外部接口之间、人与机器之间的通讯都使用形式的或非形式的专门协议。如果协议有错,或太复杂,难以理解,致使在使用中出错。此外,还包括对输入/输出格式错误理解,对输入数据不合理的容错等。 内部接口 29 系 硬件 63 统 操作系统 2 缺 软件结构 193 陷 控制与顺序 43 资源 8 总计 338 16% ◆内部接口缺陷:内部接口是指程序内部子系统或模块之间的联系。它所发生的缺陷与外部接口相同,只是与程序内实现的细节有关,如设计协议错、输入/输出格式错、数据保护不可靠、子程序访问错等。
◆硬件结构缺陷:与硬件结构有关的软件缺陷在于不能正确的理解硬件如何工作。如忽视或错误地理解分页机构、地址生成、通道容量、I/O指令、中断处理、设备初始化和启动等而导致的出错。
◆操作系统缺陷:与操作系统有关的软件缺陷在于不了解操作系统的工作机制而导致出错。当然,操作系统本身也有缺陷,但是一般用户很难发现这种缺陷。
◆软件结构缺陷:由于软件结构不合理而产生的缺陷。这种缺陷通常与系统的负载有关,而且往往在系统满载时才出现。如错误地设置局部参数或全局参数;错误地假定寄存器与存储器单元初始化了;错误地假定被调用子程序常驻内存或非常驻内存等,都将导致软件出错。
◆控制与顺序缺陷:如忽视了时间因素而破坏了事件的顺序;等待一个不可能发生的条件;漏掉先决条件;规定错误的优先级或程序状态;漏掉处理步骤;存在不正确的处理步骤或多余的处理步骤等。
◆资源管理缺陷:由于不正确地使用资源而产生的缺陷。如使用未经获准的资源;使用后未释放资源;资源死锁;把资源链接到错误的队列中等。 ◇算法与操作缺陷:是指在算术运算、函数求值和一般操作过程中发生的缺陷。如数据类型转换错;除法溢出;不正确地使用关系运算符;不正确地使用整数与浮点数做比较等。 算术 114 加 初始化 15 工 控制与次序 271 缺 静态逻辑 13 陷 其他 120 总计 533 26% ◇初始化缺陷:如忘记初始化工作区,忘记初始化寄存器和数据区;错误地对循环控制变量赋初值;用不正确的格式、数据或类类型进行初始化等。
◇控制和次序缺陷:与系统级同名缺陷相比,它是局部缺陷。如遗漏路径;不可达到的代码;不符合语法的循环嵌套;循环返回和终止的条件不正确;漏掉处理步骤或处理步骤有错等。
◇静态逻辑缺陷:如不正确地使用switch语句;在表达式中使用不正确的否定(例如用“>”代替“<”的否定);对情况不适当地分解与组合;混淆“或”与“异或”等。 △动态数据缺陷:动态数据是在程序执行过程中暂时存在的数据,它的生存期非常短。各种不同类型的动态数据在执行期间将共享一个共同的存储区域,若程序启动时对这个区域未初始化,救护导致数据出错。 类型 36 数 结构 34 据 初始值 51 错 其他 120 误 总计 241 12% △静态数据缺陷:静态数据在内容和格式上都是固定的。它们直接或间接的出现在程序或数据库中,有编译程序或其他专门对他们做预处理,但预处理也会出错。
△数据内容、结构和属性缺陷:数据内容是指存储于存储单元或数据结构中的位串、字符串或数字。数据内容缺陷就是由于内容被破坏或被错误地解释而造成的缺陷。数据结构是指数据元素的大小和组织形式。在同一存储区域中可以定义不同的数据结构。数据结构缺陷包括结构说明错误及数据结构误用的错误。数据属性是指数据内容的含义或语义。数据属性缺陷包括对数据属性不正确地解释,如错把整数当实数,允许不同类型数据混合运算而导致的错误等。 包括数据说明错、数据使用错、计算错、比较错、控制流错、界面错、输入\输出错,及其他的错误。
规格说明书是软件缺陷出现最多的地方,其原因是: 程序编写错误 78 4% 文档和其他错误 322 16% ◆用户一般是非软件开发专业人员,软件开发人员和用户的沟通存在较大困难,对要开发的产品功能理解不一致。
◆由于在开发初期,软件产品还没有设计和编程,完全靠想象去描述系统的实现结果,所以有些需求特性不够完整、清晰。
◆用户的需求总是不断变化,这些变化如果没有在产品规格说明书中得到正确的描述,容易引起前后文、上下文的矛盾。
◆对规格说明书不够重视,在规格说明书的设计和写作上投入的人力、时间不足。
◆没有在整个开发队伍中进行充分沟通,有时只有设计师或项目经理得到比较多的信息。
排在产品规格说明书之后的是设计,编程排在第三位。许多人印象中,软件测试主要是找程序代码中的错误,这是一个认识的误区。
"软件缺陷就是软件运行时产生的错误"这句话对吗
软件缺陷1、概念:软件缺陷简单说就是存在于软件
(文档、数据、程序)之中的那些不希望,
或不可接受的偏差,而导致软件产生的质量问题。
按照一般的定义,只要符合下面5个规则中的一个,就叫做软件缺陷。
产生软件质量问题的主要原因有哪些
问题很多:
1、软件前期需求分析不足,需求理解不充分、有误,研发产品不符合客户需求
2、软件详细设计不深入,设计与需求不一致
3、人员能力水平不够(都是菜鸟新人、做出的软件产品质量肯定一般)
4、项目周期短,无充分的时间进行需求分析、详细设计、研发、测试。
5、项目过程中,客户需求一直处于变更
……
软件测试中缺陷来自哪里?
软件缺陷产生的原因
在软件开发的过程中,软件缺陷的产生是不可避免的。那么造成软件缺陷的主要原因有哪些?从软件本身、团队工作和技术问题等角度分析,就可以了解造成软件缺陷的主要因素。 软件缺陷的产生主要是由软件产品的特点和开发过程决定的。
软件本身
①需求不清晰,导致设计目标偏离客户的需求,从而引起功能或产品特征上的缺陷。 ②系统结构非常复杂,而又无法设计成一个很好的层次结构或组件结构,结果导致意想不到的问题或系统维护、扩充上的困难;即使设计成良好的面向对象的系统,由于对象、类太多,很难完成对各种对象、类相互作用的组合测试,而隐藏着一些参数传递、方法调用、对象状态变化等方面问题。 ③对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误。 ④对一些实时应用,要进行精心设计和技术处理,保证精确的时间同步,否则容易引起时间上不协调,不一致性带来的问题。 ⑤没有考虑系统崩溃后的自我恢复或数据的异地备份、灾难性恢复等问题,从而存在系统安全性、可靠性的隐患。 ⑥系统运行环境的复杂,不仅用户使用的计算机环境千变万化,包括用户的各种操作方式或各种不同的输入数据,容易引起一些特定用户环境下的问题;在系统实际应用中,数据量很大。从而会引起强度或负载问题。 ⑦由于通信端口多、存取和加密手段的矛盾性等,会造成系统的安全性或适用性等问题。 ⑧新技术的采用,可能涉及技术或系统兼容的问题,事先没有考虑到。
团队工作
☆系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存在一些困难。 ☆不同阶段的开发人员相互理解不一致。例如,软件设计人员对需求分析的理解有偏差,编程人员对系统设计规格说明书某些内容重视不够,或存在误解。 ☆对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通。 ☆项目组成员技术水平参差不齐,新员工较多,或培训不够等原因也容易引起问题。
技术问题
○算法错误:在给定条件下没能给出正确或准确的结果。 ○语法错误:对于编译性语言程序,编译器可以发现这类问题;但对于解释性语言程序,只能在测试运行时发现。 ○计算和精度问题:计算的结果没有满足所需要的精度。 ○系统结构不合理、算法选择不科学,造成系统性能低下。 ○接口参数传递不匹配,导致模块集成出现问题。
项目管理的问题
· 缺乏质量文化,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试、等时间,遗留的缺陷会比较多。 · 系统分析时对客户的需求不是十分清楚,或者和用户的沟通存在一些困难。 · 开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;周期短,还给各类开发人员造成太大的压力,引起一些人为的错误。 · 开发流程不够完善,存在太多的随机性和缺乏严谨的内审或评审机制,容易产生问题。 · 文档不完善,风险估计不足等。
转载请注明出处51数据库 » 软件缺陷产生的主要原因 软件缺陷的产生原因
白夜行的嘿嘿哥

