浅谈软件开发过程的质量度量技术

2024-05-13 07:58

1. 浅谈软件开发过程的质量度量技术

浅谈软件开发过程的质量度量技术
                   
      摘要:本文讨论软件开发过程中度量对质量管理的重要性。如果没有度量,没有对软件过程的可见度,就无法控制软件质量。
   
      关键词:软件开发质量度量
   
      软件工程的唯一目标是生产出高质量的软件“。软件质量保证”(Software Quality Assurance,简称SQA)是一种应用于整个软件过程的保护性活动。目的是验证在软件开发过程中是否遵循了合适的过程和标准。SQA应用软件质量度量技术使其在软件生命周期各阶段均得以保证。
   
      软件度量是测度。测度用于整个软件过程:辅助估算、质量控制、生产率评估、及项目控制,目的是改进它。软件工程管理和其它工程管理相比有其特殊性。首先,软件是知识产品,进度和质量都难以度量,生产效率也难以保证。其次,软件系统复杂程度也是超乎想象的。正因为软件如此复杂和难以度量,为生产出高质量的软件这个目的,软件工程质量度量显得更加重要。
   
      1、软件需求是进行“质量”度量的基础软件质量度量考虑两种不同的质量:设计质量和符合质量。设计质量包括系统的需求、规约和设计。符合质量则主要关注实现问题,如果实现了设计、得到的系统满足需求和性能目标,则符合质量较高,缺乏需求符合性则质量不高;指定的质量标准定义了一组软件开发的准则,缺乏开发标准就缺少质量“;隐含需求”没有满足,软件质量也值得怀疑。
   
      为了保证软件产品满足需求,质量控制应用于整个开发周期的一系列审查、复审和测试。质量控制的任务就是策划可行的质量管理活动,然后正确地执行和控制这些活动以保证绝大多数的缺陷可以在开发过程中被发现。质量控制在创建工作产品的过程中还包括一个反馈循环。度量和反馈相结合,使得监测产品不满足规约时可调整开发过程。质量控制将视为整个制造过程的一部分。
   
      2、软件度量的三个步骤
   
      软件度量有数据收集、度量计算及度量评估三个必须执行的步骤。要度量软件质量,可通过创建一个包含过程及产品测量的数据库,让软件工程师及管理者能够更好地了解他们所做的工作及所开发的产品各个时段的质量状态。
   
      软件工程是一种层次化技术,包括过程、方法和工具,它对技术或实体的分析、设计、建造、验证和管理。其基础是过程层,软件过程是建造高质量软件需要完成的任务框架,它定义了软件开发中采用的方法,而方法层是技术上如何实现,工具层对过程和方法提供自动化和半自动化工具的支持。软件工程探索软件开发过程的研究现状,以有组织的质量保证为基础。质量管理刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的`不断出现。
   
      3、软件工程用技术度量评估质量软件工程的最高目标就是产生高质量的系统、应用软件或产品。为了达到这个目标,软件工程师必须掌握在成熟的软件过程背景下对有效的方法及现代化的工具(如CASE)之应用。由于硬件成本持续降低,可支持运行CASE工具的工作站和网络已经成为软件工程使用的工作平台,CASE工具可完成一些特定的软件开发过程。这些工具提供给软件设计者以图形方式描述软件设计的能力,这样就易于维护、易于交叉检查、易于理解。除此之外,优秀的软件工程师及优秀的软件工程管理者必须不时评估是否能够达到高质量的目标。
   
      4、有用的软件质量的测量指标
   
      为了保证软件质量,人们用直接的或间接的测量方法测度质量因素,书中提出四种常用测量指标:正确性:正确性是软件完成所需的功能的程度。正确性的最常用的测量是每千行(KLOC)的缺陷数,在这里,缺陷定义为验证出来的与需求不符的地方。
   
      可维护性:指遇到错误时程序能被修改的容易程度;环境发生变化时程序能够适应的容易程度,用户希望改变需求时程序被增强的容易程度。可维护性无法直接测量,采用间接测量。如面向时间的度量用平均修改时间(mean-time-to-change,MTTC),即分析改变的需求、设计合格的修改方案、并将修改的结果发布给用户所花的时间。
   
      完整性:现在软件完整性日益重要。它测量系统在安全方面的抗攻击能力。这些攻击可能发生在软件的三个主要成分上:程序、数据及文档。为了测量完整性必须加入两个附加的属性:威胁和安全性。一个系统的完整性可以定义为:完整性=Σ[l—威胁×(1—安全性)]可用性:即“用户友好性”。根据四个特性量化“用户友好性”:(1)学会系统所需的体力的和/或智力的投入;(2)使用系统达到中等效率所需的时间;(3)当系统由某个具有中等效率的人使用时,测量到的生产率的净增长率(与被该系统替代的老系统相比);以及(4)用户对系统的态度的主观评估(可以通过调查表获得)。
   
      上述的四个因素仅仅是被建议作为软件质量测量显的众多因素中的一个样板,软件质量因素还有:健壮性、效率、可用性、风险、可理解性、可维修性、灵活性(适应性)、可测试性、可移植性(、有一种定量度量的方法是:用原来程序设计和调试的成本除移植时需用的费用)。可再用性、可运行性等等。
   
      5、结语
   
      差异控制是软件工程质量控制的核心。要生产出高质量的软件,就要注意差异控制,注意项目需求分析。在需求分析阶段要注意:(1)质量指标对不同人群、不同目的、不同时段要求可能不同,具体质量控制指标需供需双方共同约定;(2)质量指标与度量标准、目的相关,一般的情况是高指标具有高技术难度、需要高投入、较长开发期;(3)软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);(4)软件开发不需要使用大量的物质资源,而主要是人力资源。
   
      充分认识软件工程的目标,为确保目标实现切实采用的软件度量技术,控制所有过程的质量,满足顾客和组织内部双方的需要和利益,定期评价质量体系,生产出高质量软件。    ;

浅谈软件开发过程的质量度量技术

2. 软件质量的软件开发

 确保客户所要求的系统是可行的。确保客户指定的需求确实能够满足他的真正 要求。避免开发者和客户之间的误解。向用户提供为满足他所提出的需求而实际构建的适当软件系统。 通过建立需求跟踪文档,确保规格说明书与系统需求保持一致。确保规格说明书能适当地改进系统的灵活性、可维护性以及性能。确保已建立了测试策略。确保已建立了现实的开发进度表,包括 预定的评审。确保已为系统设计了正式的变更规程。 确保已建立用于描述设计的标准,并且确保遵循这些标准。确保适当地控制并用文档记录对设计进行的变更。确保在系统设计组件已按照商定的准则得到批准之后才开始编码。确保对设计的评审按照进度进行。确保代码遵循已建立的风格、结构和文档标准。确保代码经过适当测试和集成,同时对编码模块的修改得到适当的标识。查看代码编写是否遵循既定的进度。确保代码评审按照进度进行。 确保测试计划的建立和遵循。确保创建的测试计划能够满足所有系统规格说明书的要求。确保经过测试和返工后软件与规格说明书保持一致。 确保代码和文档的一致性。确保对已建立的变更控制过程进行监测,包括将变更集成到软件的产品版本中的过程。确保对代码的修改遵循编码标准,并且要对其进行评审,不要破坏整个代码结构。

3. 如何评估个人的软件开发能力

读程序的能力 很多的软件开发工作不一定会从头开始,这就需要开发人员有良好的阅读程序的能力,能在尽可能短的时间里了解软件整体的架构,理解该软件初始的开发思想,能迅速并有效地参与到项目开发中去。2.
编码能力 这点会涉及到开发人员对所用语言的熟练程度,和该开发人员的编程风格。是否拥有良好的编程习惯,能遵循通用的编程规范,并作好注释,对该开发人员所开发代码的易读性和易维护性有很大的影响。3.
调试和测试能力 现代的软件行业中,代码的调试和测试时间并不比编码时间短,甚至会超出,当然,很多的调试和测试工作并不都是编码人员完成,但测试工作是很多软件开发人员的必经之路。4.
软件的维护 似乎维护谈不上需要什么能力,因为这时更多需要的是开发人员的耐心。记得曾经看过这样的话(大意):你的程序就是你的孩子,在你产生了他们之后,还需要你的呵护才能成长和成熟^^ 前面讨论的都是实际动手能力,是一个软件开发人员的基本功。而评估一个开发人员的软件开发能力,除了评估他的编程能力外,还应考虑到其他的一些很重要的能力,如1.
需求分析的能力 一个项目,最初就需要做需求分析,了解该项目的目的,对系统的需求,对功能的要求,并对其进行分析,作好项目规划和说明.2.
建立软件框架的能力 建立一个良好的软件框架是这个项目成功的一个保证,需要考虑整个软件的一致性和完整性.3.
贯穿项目始终的管理控制能力 在项目开发过程中,不可避免会出现新需求的加入,目标的修正,或者人员的变动等问题,对此进行有效的管理控制是对开发人员的更高要求. 因为到现在为止,在软件方面,我还只是在别人的程序上修修改改,做增减功能,调试查错等工作,所以只能谈这么多了,也希望大家不吝赐教,共同进步^0^.从基本的来看,应涉及到以下几点:

如何评估个人的软件开发能力

最新文章
热门文章
推荐阅读