您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程13(西南交通大学软件工程课件)
第13章:软件评价与管理ANSI/IEEEStd729-1983定义的“软件质量”为:与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体。M.J.Fisher定义的“软件质量”为:所有描述计算机软件优秀程度的特性的组合。13.1软件质量在计算机发展早期,计算机内存容量有限,运行速度慢,人们设计软件时特别强调时间、空间效率。现今对软件质量已经开始形成较全面的评价。13.1.1软件质量标准一般说来,应从三个方面考虑软件质量:1)功能与性能方面软件应该能够按照既定的要求进行工作,与明确规定的功能和性能需求一致。软件要保证能够可靠的工作,合法的输入下正确运行,非法输入和意外事件可安全处理。2)软件结构方面软件应该具备良好的结构:1)要求系统内部结构清晰,易于软件人员阅读和理解,方便对软件的修改和维护;2)要求系统具备良好的人机交互界面,方便用户使用。与明确规定的功能和性能要求相比,这些需求是隐含的,也是“软件质量”概念中所定义的。3)开发标准与文档方面软件开发应该与明确成文的开发标准相一致,而且要遵循一些软件开发准则,软件文档资料也必须齐全。以上三方面是相辅相成的,但还必须指出:A.不同的人对软件质量的要求不同。用户要求软件使用方便,执行效率高;而维护人员要求软件文档资料清晰、完整。B.不同的软件系统,它的关键特性有所不同。例如,可移植性是某类软件系统的重要特性,而对于另外一些系统却不是最重要的。C.质量的不同特性之间可能是矛盾的。例如,片面强调软件执行效率,设计出来的软件就可能结构复杂;追求良好的可靠性,就不一定能获得较高的运行速度。大型软件系统的质量应该从可靠性、易理解性、易维护性和效率等几个方面评价。具体开发时应使诸多的质量特性最大限度地满足。软件质量保证(SQA)主要做好几方面:1)应用技术手段软件质量保证活动开始于帮助分析员获得高质量的规格说明书,帮助设计员应用高效的技术方法和工具,并且始终贯穿整个开发过程。13.1.2软件质量保证2)组织技术评审在软件开发过程的每个阶段结束后,都需要组织技术评审,可以及早发现软件开发过程中可能引起的潜在错误,并对质量进行评价。3)加强软件测试软件测试是软件质量保证的重要手段,可以发现软件中大多数隐蔽的错误。4)推行软件工程标准标准是由用户或委托单位确定的,有时是设计者自定的。一旦标准确定,就应该重视标准,并在软件开发中统一遵循。因此,可以将软件规范情况作为软件技术评审的一项内容。5)控制软件变更软件质量的一个主要威胁来自于对软件的修改和变更。在修改的过程中常常会引起一些新的潜在错误。因此,应严格控制软件的修改和变更。6)对软件质量进行度量软件质量保证的一个重要目标也是对软件质量进行跟踪,这就需要对软件质量进行度量,并对软件质量情况及时记录和报告。Boehm在1976年提出了定量评价软件质量的概念,并给出了60个质量度量公式,还第一次提出了软件质量的层次模型。可移植性可使用性可维护性可靠性效率环境工程可测试性可理解性可修改性设备独立性完善性准确性一致性设备效率可存取性通信性结构性自描述性简洁性易读性可扩充性图13.1Boehm模型一、Boehm模型13.2软件质量度量模型McCall于1979年提出了包括软件质量要素、软件评价准则、软件质量度量的三个层次的McCall软件质量度量模型。产品修正产品转移互连性可移植性复用性可维护性可测试性灵活性正确性可靠性可使用性效率完整性图13.2McCall软件质量模型产品运行二、McCall模型这个模型提出了11个软件质量要素,22个软件属性(评价准则)。其中11个质量要素分别面向软件产品的运行、修正和转移等三个主要用途。产品修正产品转移互连性可移植性复用性可维护性可测试性灵活性正确性可靠性可使用性效率完整性图13.2McCall软件质量模型产品运行软件的质量因素定义如下:1)正确性:软件满足设计规格说明及用户预期目标的程度,它要求软件没有错误。2)可靠性:软件按设计要求,在规定时间和条件下不出故障、持续运行的程度。3)效率:为完成预定功能,软件系统所需的计算机资源的多少。4)完整性:为某一目的而保护数据,避免它受到有意、偶然的破坏或遗失的能力。5)可使用性:用户学习、使用软件以及为程序准备输入和解释输出所需工作量的大小。6)可维护性:对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。7)可测试性:测试软件以确保其能够执行预定功能所需工作量的大小。8)灵活性:修改或改进一个已投入运行的软件所需工作量的大小。9)可移植性:将一个软件系统从一个计算机系统移植到另一个计算机系统或环境所需工作量的大小。10)复用性:一个软件(或软件的部件)能再次用于其它应用的程度。11)互连性:连接一个软件或其他系统所需工作量的大小。通常,对以上11个质量要素直接度量是困难的,因此McCall定义了一些评价准则,使用它们来估计软件质量要素的值。可训练性可操作性可跟踪性完整性容错性准确性一致性执行效率复杂性安全性工具性简明性可审计性可扩充性模块性自描述性简洁性通用性硬件独立性软件独立性通信共用性数据共用性可使用性正确性可靠性效率完整性可维护性灵活性可测试性可移植性复用性互连性产品运行产品修正产品转移图13.3McCall质量度量模型质量因素主要用途软件属性(评价准则)度量三、ISO质量度量模型1985年,国际标准化组织(ISO)提出建议,软件质量度量模型由三层组成:1)高层是软件质量需求评价准则(SQRC)2)中层是软件质量设计评价准则(SQDC)3)底层是软件质量度量评价准则(SQMC)ISO的三层结构来源于McCall的模型,其高层、中层、底层分别与McCall模型的质量因素、评价准则、度量相对应。其中SQRC由8个质量因素组成,SQDC选用了23个评价准则。ISO认为,高层和中层应建立国际标准,以便在国际范围内推广应用SQM技术。而底层SQMC则可以由各使用单位根据实际情况制定。图13.4ISO建议的质量度量模型可跟踪性完整性一致性准确性容错性简洁性模块性通用性可扩充性工具性自描述性简明性执行效率存储效率存取控制存取审查可操作性可训练性通信性软件独立性硬件独立性通信共用性数据共用性正确性可靠性可维护性适应性效率安全性可用性连接性SQRCSQDCSQMC由各使用单位根据实际情况制定1991年ISO发布的ISO/IEC9126质量特性国际标准中:SQRC(高层)改称为“质量特性”;SQDC(中层)称为“质量子特性”;SQMC(底层)称为“度量”。高层质量特性降为6个,分别是:1)功能性;2)可靠性;3)可维护性;4)效率;5)可使用性;6)可移植性。中层子特性推荐使用21个。软件的各种质量因素之间相互存在有利和不利的影响,所以没有一种软件的设计能同时使所有的质量因素都是最佳的。在实际中,应根据软件的不同类型和不同要求,对不同的评价准则给出不同的权重。软件质量度量(SQM)技术,仍然处于发展和完善阶段。关于软件质量因素的选用,有面向用户的,有面向软件开发人员的,有面向管理人员的。根据ISO今年来讨论的趋势,逐渐向面向用户靠拢。因为,软件质量因素是在软件需求分析和定义阶段,由用户根据需要提出来的要求。13.3软件工程管理软件工程管理就是指对整个软件开发运行过程,包括分析、设计、编码、测试及维护各个阶段的一切活动进行有效的管理和控制。它主要包括开发人员、组织机构、用户、文档资料、计划进度、经费开支等方面的管理。一、组织机构软件开发没有统一的模式,但是一个好的软件开发组织应该具有好的组织机构、合理的人员分工、有效的通讯。软件经理项目经理1项目经理2项目经理n程序小组程序小组程序小组程序小组程序小组程序小组……审查小组图13.5大型软件开发组织结构13.3.1组织机构与人员管理在大型软件开发组织结构中,软件经理负责管理软件开发部门,在各个项目间分配和协调各种资源。项目经理领导1到6个程序小组,管理一个具体项目的各个方面(包括计划、进度、审查、复审等)。软件经理项目经理1项目经理2项目经理n程序小组程序小组程序小组程序小组程序小组程序小组……审查小组图13.5大型软件开发组织结构每个程序小组负责项目的一部分开发工作。审查小组从事质量保证活动,在项目开发每个阶段结束之前进行技术审查和管理复审。软件经理项目经理1项目经理2项目经理n程序小组程序小组程序小组程序小组程序小组程序小组……审查小组图13.5大型软件开发组织结构二、主程序员组主程序员组由IBM公司在70年代初期提出,它是一种程序小组的较为流行的组织形式。高级工程师(主程序员)后备工程师技术人员专家资料员辅助人员图13.6主程序员组主程序员组中选用经验丰富、技术好的程序员担任主程序员。他负责主持计划、协调和复审该程序小组中的全部技术活动。技术人员一般由2到5人组成,负责软件分析和开发活动。后备工程师支持高级工程师(主程序员)的工作,必要时代替主程序员工作。高级工程师(主程序员)后备工程师技术人员专家资料员辅助人员图12.6主程序员组根据应用的规模和类型,程序小组可能还需要临时或长期地增加一些具体领域的专家、辅助人员(初级程序设计员、秘书、打字员等)、资料管理员。高级工程师(主程序员)后备工程师技术人员专家资料员辅助人员图12.6主程序员组三、用户用户是应用软件开发中一个重要的,不可忽视的因素。在软件开发过程中必须得到用户的密切配合与支持。项目负责人必须特别留意与用户保持联系,掌握用户的心理和动态,防止来自用户的一些干扰。用户的干扰,如:1)不配合。这种表现来自于对软件持怀疑态度或抵触心理的用户。2)急于求成。3)变化无常。这种表现来自于个别用户不假思索,不断改变原有的需求,提出新的要求和修改意见。为了保证软件开发能按预定的时间表进行,必须对软件开发过程加以控制:1)进度控制项目进度的制定应在软件定义与分析阶段完成,一旦制定,要严格执行,不要随意更改。13.3.2软件工程控制2)人员控制人员的频繁变动或流动将会大大增加软件出错机会,因此要保证开发人员的稳定性。至少要保证软件项目每一期工程,或者软件生存周期每一阶段中人员的相对稳定性。还要努力调动每一个开发人员的积极性。3)经费控制要编制详细的经费预算,并在各个阶段进行经费的核算,尽量避免预算超支。4)质量控制认真抓好各个阶段的复审工作。软件工程管理很大程度上是通过对文档资料的管理来实现的。每个阶段的文档资料是对前面工作的总结和审核,又是后一阶段的工作基础。所以,应该建立一套完整的文档资料体系,描述和记录整个开发过程。文档资料标准化是文档管理的重要课题。13.3.3文档资料管理13.4软件产权软件产品的特殊性是:软件开发工作量大、周期长、投资高,然而软件复制却相当容易,而且复制费用很低。所以长期以来,软件产品的侵权行为非常严重,严重挫伤了人们开发软件的积极性。计算机软件是一种人类智力的创作成果,享有的经济权利和精神权利主要靠知识产权来保护。有关软件产权保护的法律有:1)版权法2)专利法3)商标法4)商业秘密法13.4.1软件知识产权的法律保护1)版权法版权法主要保护对象是文字作品。计算机软件中的文档资料大部分是文字作品,源程序中的注释部分也是文字作品。如果将代码看作是特殊的文字,整个程序就是文字作品了。所以,版权法保护计算机软件。版权法要求受保护的软件产品具有独创性(也称为初创性、原创性),不能抄袭或复制他人的软件。2)专利法版权法保护的只是文字作品的表达形式,不保护作品中反映出的作者的构思、方案。软件产品的作者在软件构思上的工作是创造性劳动,类似于发明成果,可以使用专利法来保护。对软件产品的保护,专利法比版权法要求严格。它要求受保护的软件具有三个特性:新颖性、技术先进性、实用性。对于已经获得专利的软件,可以享受专利法和版权法所赋予的双重法律保护。3)商标法计算机软件兼有作品和产品的特征,所以也得到商标法的保护。4)商业秘密法无论采取哪种知识产权法的保护,对软件的一部分源程序始终受到商业秘密法的保护。一些软件的主要开发者在许可他人使用有关软件时,如果不愿意
本文标题:软件工程13(西南交通大学软件工程课件)
链接地址:https://www.777doc.com/doc-3476215 .html