软件质量保证和管理论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件质量保证和管理》
姓名:
学号:
专业:
教师:
2012年 05月 28 日
第二章《软件质量》的学习总结
摘要
软件具有很强的鲜明的特点,不同于传统工业产品,软件的开发也不同于传
统的制造业,所有有必要去审视软件的特点,了解软件质量特有的内涵,了解影响软件质量的因素。另一方面,软件质量危机却越来越突出。软件在质量管理上远远落后于其他传统行业,同时软件企业的多数管理者又认为软件质量不可把
握,使软件质量矛盾更加尖锐化。软件质量,必然越来越成为讨论的焦点。
关键词:软件质量
1.1 软件特点
软件是相对硬件的概念,是逻辑的,知识性的产品集合,是对物理世界的一种抽象或者是某种物理形态的虚拟化。软件与硬件是完全不同的。但是随着时间的推移,硬件构建会由于各种原因收到不同程度的磨损,软件不会。新的硬件故障少,软件则相反。另一方面,软硬件的维护差别很大。
1.2软件过程
软件过程为一个为建造高质量软件所需完成的任务的框架,即形成软件产品的一系列步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。软
件过程(Software Process)是指一套关于项目的阶段、状态、方法、技术和开发、
维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。
软件过程可概括为三类:基本过程类、支持过程类和组织过程类。基本过程类包括需求分析、设计过程、编程过程、测试过程、维护过程。支持过程类包括文档
过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审
计过程以及过程。组织过程类包括基础设施过程、改进过程以及培训过程。
1.2.2 软件开发过程模型
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。
软件开发模型包括:瀑布模型,原型模型,快速应用开发模型,螺旋模型,增
量模型和迭代模型,构件组装模型,开发模型,并发模型,驱动测模型,RATIONAL 统一过程模型,协议开发——形式描述技术FDT,敏捷方法——极限编程模型。
1.2.3 V模型的完整诠释
V模型是在快速应用开发模型基础上演变而来的,由于将整个开发过程构成一个V字而得名。V模型强点软件开发写作的速度和协作,将软件实现和验证邮
寄的结合起来,在保证较高的软件质量情况下缩短开发周期。
图为简单的V模型
V模型的缺陷仅仅把测试过程作为在需求分析、系统设计及编码之后的一
个阶段忽视了测试对需求分析,系统设计的验证,一直到后期的验收测试才被发现。
1.2.4 敏捷方法的极限编程
是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化
的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档
更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的
代码编写和团队组织方法,也更注重做为软件开发中人的作用。敏捷开发的宗旨就是“沟通,简化,反馈,激励”。
极限编程是敏捷方法的代表是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常
严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目
都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP 是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。极限编程中有四个核
心价值是我们在开发中必须注意的:沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)。XP用“沟通、简单、反馈和勇气”来减轻开发压力和包袱;无论是术语命名、专著叙述内容和方式、过程要求,都可以从中感受到轻松愉快和主动奋发
的态度和气氛。这是一种帮助理解和更容易激发人的潜力的手段。XP用自己的实践,在一
定范围内成功地打破了软件工程“必须重量”才能成功的传统观念。
1.2.5 阶段性开发模型
软件开发不管采用什么手段什么模型都不是一蹴而就的,一个软件产品的开发往往是分阶段进行的,所以阶段性开发模型是很有必要的。
软件分阶段开发主要原因: 1.市场的压力和竞争策略的需要。 2.产品的开发周期和资源会受到预算的限制。 3.可以尽在发现错误,降低成本。 4.系统设计越来越困难。
分阶段软件开发可以通过增量模型和迭代模型两种来描述。两者的最终目标是一致的,都是为了实现一个功能完善的、高质量的、稳定的产品。
1.3 软件缺陷
软件缺陷(Defect),常常又被叫做Bug。所谓软件缺陷,即为计算机软件或程序中存在
的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品
在某种程度上不能满足用户的需要。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。在软件开发生命周期的后期,修复检测到的软件错误的成本较高。
1.3.1 产生的原因
在软件开发的过程中,软件缺陷的产生是不可避免的。那么造成软件缺陷的主要原因有
哪些?从软件本身、团队工作和技术问题等角度分析,就可以了解造成软件缺陷的主要因素。
软件缺陷的产生主要是由软件产品的特点和开发过程决定的。
软件本身
①需求不清晰,导致设计目标偏离客户的需求,从而引起功能或产品特征上
的缺陷。②系统结构非常复杂,而又无法设计成一个很好的层次结构或
组件结构,结果导致意想不到的问题或系统维护、扩充上的困难;即使设计成良好的面向对象的系统,由于对象、类太多,很难完成对各种对象、类相互作用的
组合测试,而隐藏着一些参数传递、方法调用、对象状态变化等方面问题。
③对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造
成容量或边界错误。
④对一些实时应用,要进行精心设计和技术处理,保证精确的时间同步,否
则容易引起时间上不协调,不一致性带来的问题。
⑤没有考虑系统崩溃后的自我恢复或数据的异地备份、灾难性恢复等问题,
从而存在系统安全性、可靠性的隐患。
⑥系统运行环境的复杂,不仅用户使用的计算机环境千变万化,包括用户的
各种操作方式或各种不同的输入数据,容易引起一些特定用户环境下的问题;在系统实际应用中,数据量很大。从而会引起强度或负载问题。
⑦由于通信端口多、存取和加密手段的矛盾性等,会造成系统的安全性或适
用性等问题。⑧新技术的采用,可能涉及技术或系统兼容的问题,事先没
有考虑到。
1.3.2 软件缺陷的分类
属性名称描述缺陷标识(Identifier) 缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识缺陷类型(Type) 缺陷类型是根据缺陷的自然属性划分的缺陷种类。缺陷严重程度(Severity) 缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。缺陷优先级(Priority) 缺陷的优先级指缺陷必须被修复的紧急程度。缺陷状态(Status) 缺陷状态指缺陷通过一个跟踪修复过程的进展情况。缺陷起源(Origin) 缺陷来源指缺陷引起的故障
或事件第一次被检测到的阶段。缺陷来源(Source) 缺陷来源指引起缺陷的起因。缺陷根源