时间:2022-05-29 09:15:10
序论:速发表网结合其深厚的文秘经验,特别为您筛选了1篇软件质量管理论文范文。如果您需要更多原创资料,欢迎随时与我们的客服老师联系,希望您能从中汲取灵感和知识!
[摘要] 随着软件行业的发展,软件质量越来越成为人们关注的焦点。本文从软件质量管理体系出发,结合笔者自身多年的软件质量管理经验,对现有软件质量管理体系进行了总结和归纳,提出了软件开发过程中质量控制的具体改进方法,并将全面质量管理观念融汇于实际软件质量管理日常事务之中。
[关键词] 软件质量管理体系 改进 全面质量管理 持续发展
一个开发团队要提高效率,就需要思考目前的管理活动中有哪些要素是可以改进的:如何把一些事务性的操作变得自动化,从而节约人力;如何找到更好的方法,让开发过程更为合理,更注重软件的质量;如何在团队中传播优秀的思想,让团队成员不断地学习和进取,自发地改进过程。这些美好的愿望几乎是所有方法论和各种认证的共同心声,但要完全做到可就太难了。在本文中,提出了一些优秀的实践,优秀实践均是来源于软件开发界中的一些新思路和新理论,它们能够为以上愿望的达成起到正面的作用。在组织中引用这些实践决不是一个容易的过程,但它们确实非常有效。这些实践包括:建立日创建、测试驱动开发、建立核心框架和面向组件进行编程。
一、软件开发的有效管理:日创建
一个组织应当拥有一个有效的工作流程,这个工作流程能够指导软件开发的进行。这个流程应当是具体的、可操作的。随意的计划和从来不遵循的进度决不是一个有效的工作流程。日创建实践提出了一种对开发过程进行精细管理的方法,它是量化软件管理的基础。有了日创建,你会发现计划的制定和进度的监控是非常容易的一件事情。
我们传统开发软件的流程一般是这样,理解领域问题,然后分配任务,由不同的人负责不同的软件部件,在开发完成之后,再把各人的部件整合起来,形成完整的软件。这个思路看起来并没有什么问题,但是在实践中却问题多多。
首先,这种方式适合开发人员之间工作彼此没有交集的情况,以前这种现象很常见,但是现在,随着软件规模的扩大、分工合作的加深,开发人员间的相互依赖程度越来越高,这种清晰的职责划分已经变得越来越难了。
其次,在软件集成时,往往会出现各种各样的问题,可是却很难发现到底问题在哪里?公说公有理,婆说婆有理。每个人的代码都没有问题,结合到一起就出现大量的问题。
所以日构建就将平时难得一见的集成工作转换成频繁进行的一件工作,从而使得原先如同噩梦般的集成变成了一件简单的工作。这也是很容易理解的,如果集成工作几个月才进行一次,谁能够记起几个月前的细节呢?但是如果集成以天,甚至以分钟为单位进行,排除bug就变成一件很容易的事情了。
二、测试驱动开发
软件质量的根源来源于测试,测试做好了,软件质量就会好。这是毫无疑问的。问题的关键在于怎么做测试,才能保证测试的投入能够带来软件质量的有效提升。测试驱动开发正是为了解决这个问题而出现的。它不是一个完整的方法论,可以和任何一种开发流程进行融合。测试驱动开发不但能够改善测试效果,还能够改进软件的设计。
测试驱动开发起源于XP法中提倡的测试优先实践。测试优先实践重视单元测试,强调程序员除了编写代码,还应该编写单元测试代码。在开发的顺序上,它改变了以往先编写代码,再编写测试的过程,而采用先编写测试,再编写代码来满足测试的方法。这种方法在实际中能够起到非常好的效果,使得测试工作不仅仅是单纯的测试,而成为设计的一部分。
在编写程序之前,每个人都会先进行设计工作。可能有些人的设计比较正式,绘制模型,编写文档。有些人的设计只是存在于脑海之中。且不论设计是精细还是粗糙,你都为随后的编码活动制定了一个标准。这个标准的明确程度和你的设计的细致程度有关。但应该承认,这个标准是不够细化的。因为你的设计不可能精细到代码级的程度。而标准不够明确则会产生一些问题,例如,在编写代码的过程中,你还可能会发现原先的设计出现问题,从而中途改变代码的编写思路。这将会导致成果难以检验,进度难以度量。
既然以设计为导向的标准不够明确、不够具体。那什么样的标准才是合适的呢?只能是代码。因为代码是最明确、最具体的。所以测试优先的本质其实是目标管理。编写测试代码其实是在制定一个小目标。这个小目标非常明确,它规定了你需要设计的类、方法,以及方法需要满足的结果。这些目标制定完成之后,你才开始编写代码来达成该目标。测试的目标要比设计的目标粒度更小,但是成本上却更为经济。
测试优先是软件开发中一种细粒度的目标管理方法,通过明确的目标,推动软件开发的进行。
三、建立核心框架
框架是一种具有高度重用性的软件,这个特性决定了它非常适合成为软件组织积累知识的一种有效手段。传统的知识积累的方法是文档,但是文档容易产生歧异,开发人员往往也不愿意去阅读和理解文档。框架提供的是一种综合的手段,包括文档、模型和代码。更容易理解,更重要的是,开发人员必须在日常的工作中使用框架,这使得他们对框架中的知识非常熟悉,并根据工作的需要来改进框架。
四、面向组件编程
有效的组织在于有效的分工。体力活动容易进行分工,脑力劳动则比较难,而软件开发似乎就更难了。所以,长久以来我们都习惯采用以功能块为单位的粗粒度划分方式。面向组件编程采用更加细密的划分方式,并以服务作为组件之间相互依赖的契约,不但定义了组件和组件之间的关系,也规定了组件开发者、组件使用者、组件测试者的权利和义务。从而能够进行软件开发工作的分配、管理、QA等工作。
软件形式上是产品,本质上是服务,是高科技计算机信息技术和人类创新智慧的结合。在软件产品的研发过程中,软件质量一直处于最为核心的地位。ISO9001标准和CMM原则被誉为软件质量管理的圣经,是当今国际上最推崇的软件质量改进方法和保证措施。然而,很多实施ISO9001、CMM3级的企业过于强调过程管理,忽略了“人比过程更重要”这一原则,形式重于实质,这一做法在国外已受到猛烈抨击。如何更好地将质量管理理论和企业经营生存之道密切融合,走出一条独辟蹊径、立竿见影的“质量革命”之路,是摆在诸多企业高管面前的重要课题之一。这里总结了软件项目质量管理的6大最佳实践,供同行参考。
全面管理,塑造质量文化
全面质量管理即为全员、全过程、全方位的质量管理,它具有以下基本特点:
1.全员:质量控制从少数质量保证人员扩展到企业的所有人员。质量控制管理不是质量保证部门一个部门的事情,需要全员的大力支持、准确理解、精确执行。
2.全过程:将质量控制、质量检验、质量统计延伸扩展到整个产品生命周期。
3.全方位:全面运用一切有效方法,全面控制质量因素,如软件开发成本、进度、可靠性、安全性等。
全面质量管理可以归纳为两大基本原则: 首先是以满足顾客需求为导向,不断改善,最终实现顾客的全面满足;其次是以全员参与为基础,进行全过程的质量控制。质量管理理论认为,“质量出自计划,而非出自检查”。软件前期的质量保证主要依靠设计、生产、研发,后期的质量保证则主要依靠测试、完善、改进。全过程的质量保证依靠行之有效的管理体系。这种观点强调运用确定性、过程化的管理制度、程序、体制来控制管理潜在诸多不确定性、多变性因素的软件质量品质。事实上,影响软件项目进度、成本、质量的三大因素分别是人、过程、技术,人永远是第一位的,人永远比过程更重要,人是影响质量的最关键因素,只有在软件质量管理过程中坚持“以人为本”,强调人与过程的和谐,塑造以人为核心的质量管理文化,才能让质量管理的成效得到淋漓尽致的发挥。
分级管理,把握
质量目标的层次性
ISO9001体系认为,建立质量方针、质量目标是实施质量管理的必经之路。事实上,现代软件的架构是层次化的,这一点尤其重要,软件质量也应按照层次从里到外、功能由轻到重、地位从低到高因地制宜、区别对待,对于不同的软件层面和需求制定不同的质量目标。例如:对于一个大型网络游戏而言,大气炫丽、细腻仿真的3D动画操作界面是非常必要的;但对于一个小型超市仓库管理软件而言,只要能满足出库、入库、损益、盘点的基本需求就可以了,简单粗糙的操作界面反而更容易上手。
在进行软件工程的质量控制时,应把握关键层面,抓住质量控制的瓶颈。一般来说,越是靠近底层、核心区域(如平台、框架、引擎、关键业务等)的代码质量要求越高,开发人员的素质要求越高,质量检测及保证工作代价开销越大。精益求精只适用于靠近核心的代码层;而对于外围代码层, 可酌情适当降低代码质量,放松测试条件。
验证确认,全程质量控制
质量控制是确定项目结果与质量标准是否相符,并及时纠正产品缺陷的过程。质量控制的主要手段是验证与确认:验证是从开发者的视角来检查是否正确地构造了产品,而确认则是以用户的视角来检查是否构造了正确的产品。
事实证明,具有清晰开发模式及过程管理规范的软件产品,在质量上要明显超过那些没有明确过程模型及规范指导的软件产品。软件工程理论提出了诸多开发模型,如瀑布模型、喷泉模型、增量模型、快速原型模型、螺旋模型、迭代模型等,当前最常用的大型软件开发模式是螺旋式的增量开发方式(如图1所示)。
图中1〜7 是各阶段的输出点,也是质量控制点,有相应的输出文档和阶段性成果,均需要得到质量保证部门的确认。软件项目中最常用的质量控制工具手段,包括评审(技术评审、代码评审、设计评审、同行评审等)、审查、测试验证(黑盒测试、白盒测试、单元测试、集成测试、确认测试等)、抽查、调查、走查、旁站、缺陷跟踪等。
技术评审最初是由IBM公司为了提高软件质量和提高程序员生产率而倡导的,分为正式技术评审(FTR)和非正式技术评审(ITR)两种,该方法已经被业界广泛采用并收到了很好的效果,它被普遍认为是软件开发的最佳实践之一。需要重点指出的是,同行评审是一种特殊类型的技术评审,由与产品开发人员具有同等背景和能力的人员对产品进行技术评审,非常有利于发现产品中潜在的问题。成功的同行评审是提高质量和生产率的重要手段,评审的对象应该包括所有软件开发的中间和最终工作产品。
引入工具,复用成功模式
质量管理是可以通过信息化手段量化的,采用先进的质量管理工具可以极大地提高质量管理水平。例如:Bugzilla是Mozilla公司提供的一个开源的缺陷跟踪工具,在全世界拥有大量用户。它能够为软件组织建立一个完善的缺陷跟踪体系,包括报告缺陷、查询缺陷记录并产生报表、处理解决缺陷等。
质量和缺陷是一对无法化解的矛盾,想要提高质量必须千方百计地减少缺陷。有三种方法可以减少缺陷产生的频率、数量、规模等级。
1.事前预防:在开发过程中始终要考虑工作成果可能产生缺陷,将高质量内建于开发过程之中。主要措施包括提高技术水平和规范化水平,也就是练内功,通称为“软件过程改进”。
2.事中控制:及时对各个阶段的工作成果进行质量检查,找出并消除其中的缺陷。这种方式实践效果较好,已经被企业广泛采用,主要措施是技术评审、软件测试和过程检查。
3.事后补救:当软件产品正式交付到用户手中投入生产经营时发现了重大缺陷(如系统常常崩溃、运行速度极慢、报表统计错误等),然后再进行修改维护。这实质上反映出软件项目管理中存在较大的缺失和漏洞,建设单位、承建单位、监理单位三方都有不可推卸的责任,应规避这类水平低级、后果严重、影响恶劣的失误再次发生。
复用是在软件开发领域提高软件质量的重要方法之一。被复用的对象往往是经过反复使用验证的,自身具有较高的质量,因此,合理化复用有利于提高质量、提高生产率和降低成本,技术开发活动与管理活动中的任何成果都应尽量被复用,如思想方法、经验、程序、文档等。软件质量管理的最终目的除了能够不断持续改进之外,还在于形成有特色、有成效、可操作的质量管理模式,并最大程度地复用。
协同合作,三权分立
由于软件质量管理的专业性和复杂性,软件项目组织建设上应实行“设计、检验、监管”三权分离、鼎足而立的原则:设计部门专攻软件需求分析、规划设计、系统研发工作;检验部门从事系统测试(性能测试、回归测试等);质量监管部门制定质量管理工作计划,对各部门的质量管理工作提出指导建议,跟踪、内审、改进质量体系的运行。
技术评审、测试和质量保证是提高软件质量的三个重要法宝,但三者在作用上各不相同。技术评审与测试关注的是产品质量而不是过程质量,两者的技术强度比质量保证要高得多。技术评审和测试能弥补质量保证的不足,三者是相辅相承的质量管理方法。我们在实践中不能将质量保证、技术评审和测试混为一谈,也不能把三者孤立起来执行。建议让质量保证人员参加并监督重要的技术评审和测试工作(大约占其工作量的30%左右),只有这样他们才能更深入地了解软件的质量问题,把三者有机地结合起来,做到三位一体,全方位堵住质量缺陷的漏洞。在部门职能规划上,质量保证部门具有充分的权力,可以对质量不合格的工作成果做出处理,只有这样质量保证工作才不会被轻视,才更有助于加强全员的质量意识(质量保证过程域的主要活动如下图2所示)。
和谐管理,做好一把手工程
当前很多软件企业都组建了质量保证部门,出台了质量保证制度,然而软件质量并未得到实质性突破,质量保证人员也没有发挥预期的效果,造成这种情况的常见原因有两个:一是软件开发团队管理过程不够规范;二是企业领导者,尤其是最高领导者(即“一把手”)重视程度不足,措施不到位。
调查结果表明,在软件项目中,质量保证人员往往是最“吃力不讨好”的一族,通常没有实质性权力,项目成功功劳属于别人,自己缺乏成就感,项目失败却担负最多的责任。鉴于这种情况,领导层一定要从根本上重视、爱护、支持质量保证工作,充分发挥组织协调作用,体现人文关怀,运用管理艺术,构建和谐团队,让每一个项目组成员都树立较强的责任感、归属感和大局意识。事实上,软件开发工程是典型的“全员参与工程”、“一把手工程”,没有企业“一把手”的知情、重视、认可和支持,软件项目顺利实施和取得实效根本无从谈起。有时候企业领导层对于软件质量保证的作用往往是决定性的,这是任何技术手段都无法替代的。
链接
软件质量管理常见误区
误区一:软件质量是可以精确测量的。
软件的质量属性很多,如正确性、健壮性、可靠性等,但在大多数用户看来,实用、适用、好用的软件就是成功的。成功的软件通常都会在功能、性能、界面、操作等方面,以最简捷有效的方式满足用户的最紧迫、最直接的需求。质量是一个相对的概念,软件产品质量没有国际通用的评价标准,质量目标的弹性较大,没有绝对合格或不合格的界限,软件不可能做到“零缺陷”,有缺陷的软件仍然可以使用。
误区二:企业软件的质量越高越好,最好是“零缺陷”。
商业目标决定了软件的质量目标。软件的质量评价也不能从纯粹的软件工程、软件商品、软件技术的角度去考量。理想的软件质量目标不是“零缺陷”,而是恰好能够满足应用需求、生存发展、市场竞争需要,并且将提高质量所付出的代价控制在预算之内。一味追求高质量代码,把质量目标凌驾于赢利目标之上,是多数技术人员所犯的常见错误。
误区三:通过ISO9001、CMM3级认证就意味着软件质量一定有保证。
当前很多通过CMM3或者ISO9001质量认证的软件企业在软件项目管理上的确更加规范了,但代表核心竞争力的软件质量驾驭能力并未得到实质性的提升。产品生产过程与产品质量存在一定的因果关系,通常好的过程产生好的产品,而差的过程将产生差的产品。实践证明,软件质量保证并不能绝对保证软件质量,质量保证只能检测出哪些不符合既定程序规范、肤浅的软件缺陷,对于潜藏在软件深处符合既定设计规范的缺陷却显得无能为力。仅靠制度、规范、流程是无法全面识别出软件中的潜在缺陷的,质量保证对于保证质量而言只是必要的手段,而不是充分的手段。
误区四:拥有充足的人力资源,软件质量就有保障。
软件开发并不一定是人多力量大,相反,人力资源配置不当反而会延误工期。不同人员的水平和素质差异较大,软件项目增加新人可能会增加新的缺陷,无益于软件质量提升。软件开发是一种智力创新活动,任何程序员都无法避免缺陷的发生,缺陷发生是必然的,程序员首先必须了解决定软件质量的各个关键因素(如成本、进度、可靠性、安全性等),搞清楚质量控制的目标和计划,然后才可以在进行需求开发、系统设计、编程测试时确保交付软件的高质量。
摘要:软件产品的质量在很大程度上受到软件开发过程的影响。为了提高竞争力、改进质量以及提高效率,软件企业就需要将更多的注意力放在过程上,通过过程控制其结果。本文对软件质量管理过程进行了研究,通过过程性能基线和过程性能模型分析和管理质量,提出了一个基于过程性能模型的软件质量管理过程模型,并在研究的基础上,构建了软件质量管理系统的体系结构。
关键词:软件质量管理过程性能基线过程性能模型
1 引言
随着软件产业的飞速发展,软件的核心竞争力主要集中体现在质量、成本和交付工期上,而质量是最显著影响其它两方面的因素。对软件企业来说,质量不再只是争夺市场的一个有利因素,而变成了公司在竞争中成功的必要条件。然而,随着软件规模和复杂度的增加,软件开发过程越来越难以控制,导致开发过程中的产品质量和过程质量处于失控状态。
过去存在着一些片面的观点,认为先进的工具和方法可以神奇地解决软件开发中的质量问题。目前的现实并不尽如人意。有的企业由于缺乏对开发过程的控制,往往很难平衡客户和公司在质量、成本和交付工期的要求,成功的项目比例很小。
面对如前所述的现状,软件质量管理一定要面向预测式管理。一个软件产品的质量主要是由它的开发、采购和维护过程决定的,为了改进软件产品的质量进而提高竞争力,就要把焦点放在能够稳定地开发优质产品所需的过程上[1],通过过程数据预测和控制结果。
过程性能模型重点强调过程和产品度量对结果的重要性,分析和建立过程和产品度量与结果的关系。其通过过程性能基线控制过程的关键因子,分析过程的性能偏差,进而预测并控制最终结果。由此可以看出,过程性能模型是解决上述问题的有效方法,本文将关注基于过程性能模型的软件质量管理过程。
本文首先归纳了软件质量和软件质量管理的研究现状,并指出了现有软件质量管理过程所存在的问题;随后引入了过程性能基线和过程性能模型,提出了基于过程性能模型的软件质量管理过程模型,阐述了过程性能基线和模型在质量计划、质量活动、质量度量和分析、质量预测和控制、质量评价和改进等五个质量管理子过程中的应用;最后在研究的基础上,构建了软件质量管理系统的体系结构,包括组织过程资产库,过程支持和软件质量管理三个子系统。
2 软件质量及管理
当前业界已将交付软件的缺陷密度作为软件产品的质量的衡量关键标准。即,已交付软件中每个单位规模的缺陷数,简称为交付缺陷密度。因此,软件质量管理通常围绕缺陷而展开,软件项目的目标是使交付的软件存在尽可能少的缺陷[2]。
质量管理的任务是计划恰当的质量活动,然后正确执行和控制这些活动,以便可以在软件开发过程中(即在软件交付以前)检测到大多数缺陷[2]。
质量管理包括确定软件的质量目标,制定实现这些目标的计划,并监控和调整软件计划、软件工作产品、活动和质量目标,以满足客户和最终用户对高质量产品的需求和愿望。
质量管理基于机构、客户和最终用户的需求建立软件产品的质量目标。为实现这些目标,机构制定相应的策略和计划,项目则为实现这些质量目标对其定义的软件过程进行具体调整[3]。
在软件质量管理过程和方法上,传统的包括:全面质量管理(Total Quality Management, TQM)是一套能控制质量、提高质量的方法;在PMBOK[4]中,软件项目的质量管理是指保证项目满足其目标要求所需要的过程,包括质量计划、质量保证和质量控制三个过程域;著名的“Juran三部曲”[5]――TQM的理论基础和基本方法的主要基石――包含质量计划、质量控制和质量改进三个步骤,突出了对过程改进的支持。最有成效的要属六西格玛质量管理方法,其理念是通过排除和预防缺陷来提高客户满意度,进而提高企业的收益率,包括过程性能度量集、多种改进框架和分析工具,尤以DMAIC框架(定义-度量-分析-改进-控制)最常用[6]。将六西格玛与CMMI实施相结合将是更有效的过程改进途径。
在软件质量管理工具方面,Ishikawa提出了质量控制的七种基本统计工具[7],包括因果图[8]、Pareto图、直方图、控制图、散布图、运行图、检查单。目前也有许多有关预测模型的论著,如:Rayleigh模型。
现有的软件质量管理过程和方法提供了质量管理的高层指导,主要关注于实施步骤以及最终结果,质量管理工具也着力于解决质量管理中的具体的某“点”的质量问题和控制,但在如何通过过程控制其结果,业界正在寻求有效的途径,是亟待解决的问题。例如:如何制定低风险且切实可行的质量计划、如何在开发过程不同的影响因素下确保项目质量目标得以实现等。这些正是本文致力于研究的主题。
3 基于过程性能模型的软件质量管理过程
过程性能模型是解决通过过程控制其结果的有效方法,具体定义如下。
过程性能基线(Process Performance Baseline, PPB)是对遵循过程所达到的实际结果的文档化刻画,用于比较实际过程性能和预期过程性能的基准[9]。
过程性能模型(Process Performance Model, PPM)是对过程属性和过程工作产品之间关系的描述,基于历史过程性能数据而建立,并使用项目中收集的过程度量和产品度量进行校准,最终用于预测遵循过程将能达到的结果[9]。
过程性能基线可用于组织内任何独立的项目,通过分析所收集的度量,建立结果的分布和极差,其刻画了所选过程的预期性能[10]。过程性能模型基于其他过程和产品的度量来估算或者预测某一过程性能的度量,刻画了过去的和当前的过程性能,对过程将来的性能进行预测。过程性能基线控制子过程的能力;过程性能模型预测过程的中间目标和最终目标,通过过程控制结果,在子过程结束时进行调整和预测,确保最终目标的实现。
基于六西格玛质量管理的方法及其DMAIC框架(定义-度量-分析-改进-控制),以及过程管理的四个核心职责(定义过程、度量过程、控制过程、改进过程),并结合过程性能基线和模型的原理,本文提出了一种基于过程性能模型的软件质量管理过程模型,该模型在质量管理过程中增加了过程性能基线和模型的指导、统计管理以及预测和控制,提供了软件开发过程中进行质量控制和持续改进的框架,如图1所示。模型主要包括:质量计划、质量活动、质量度量和分析、质量预测和控制、质量评价和改进。接下来将详细阐述过程性能基线和模型在上述五个质量管理子过程中的应用。
图1 基于过程性能模型的软件质量管理过程模型
3.1 质量计划
要生产出高质量的产品,首先必须制定质量计划。质量计划作为基于过程性能模型的软件质量管理过程模型的一个核心环节,简言之,就是怎样以及何时将质量活动和质量材料应用到一个项目中。质量计划中必须明确定义在软件开发的各个阶段应如何进行质量活动。制定质量计划的前提是项目已完成任务计划、进度计划和规模估算,故在制定质量计划之前必须进行入口准则的验证。
基于过程性能模型的软件质量管理过程要充分发挥过程性能基线和模型在质量计划制定时的指导作用。团队软件过程(Team Software Process, TSP)质量计划是一个最佳范例,本节将介绍如何使用过程性能基线和模型指导质量计划的制定。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
3.1.1 TSP质量计划
团队软件过程(TSP)制定的质量计划包括以下几个方面[11]:系统无缺陷比率、各阶段排除缺陷密度、质检过失比、阶段收益、过程收益、缺陷引入率和缺陷排除率,可划分为过程质量度量和产品质量度量两大类。
为了提高客户满意度,首要解决的就是降低交付缺陷密度,即验收测试过程中发现的缺陷密度。团队在制定质量计划时,首先估算可能会引入的缺陷数,其中估算每个过程阶段所引入的缺陷数的方法有许多种,TSP质量计划使用的是缺陷引入率;然后就是估算排除的缺陷数,这里TSP质量计划使用了阶段收益。一旦团队按阶段估算了引入和排除的缺陷,那么结合项目的规模估算与任务和进度计划,就可以估算出每个阶段将会排除的缺陷密度,然后检查所估算的交付缺陷密度是否满足项目的质量目标,进而通过局部调整以完成质量计划。
3.1.2 使用过程性能基线和模型指导质量计划制定
在使用缺陷引入率和阶段收益估算缺陷的引入与排除时,传统的做法是“拍脑袋”或者基于业界数据,有经验的组织会基于历史数据,但是实际实施表明:上述情况中绝大多数的估算都是徒劳的。原因如下:一是因为对阶段缺陷引入率和阶段收益的估计值没有准确地反映缺陷引入与排除过程的能力,不应只是单个值,而应该是一个区间,包括均值和上下限;二是因为没有对缺陷引入与排除的过程进行计划,尤其是某些关键度量,例如评审速度、测试覆盖度、人员技能、经验等级、检查单条目数等,从而无法通过缺陷引入与排除的过程控制过程的执行结果(缺陷引入率和阶段收益),使得项目质量目标的实现变得不可预测和控制。
为解决上述问题,这里使用过程性能基线和模型从四个环节提供支持:
(1)建立项目的质量目标,制定交付缺陷密度的计划值。
(2)基于组织的历史数据,建立阶段缺陷引入率和阶段收益的过程性能基线,参照过程性能基线计划阶段缺陷引入率和阶段收益,以“上限,均值,下限”的三元组形式。
(3)基于组织的历史数据,构建缺陷引入过程和缺陷排除过程内部的过程性能模型,建立子过程结果(也即中间目标)与子过程因子(包括可控的和不可控的)之间的关系,以及子过程可控因子的过程性能基线,参考所建立的过程性能基线和模型制定子过程的质量计划。同时在质量预测和控制时,需要对这些子过程进行统计管理。例如设计评审,代码评审,单元测试。
(4)在分别计划好项目的质量目标、缺陷引入和排除过程的中间目标、缺陷引入和排除过程因子之后,使用统计方法(例如蒙特卡洛模拟)对项目质量目标达成情况进行预测[12],通过置信度与置信区间评估目标达成情况的风险,必要时调整计划。
若软件组织处于起步阶段,没有足够的历史数据,质量计划的制定可参考TSP质量准则[13]。
3.2 质量活动
质量活动作为软件开发过程中的一项必要且非常重要的活动,负责排除开发过程中所引入的缺陷。其作为软件质量管理过程中不可缺少的环节,通常分为两大类:评审和测试。评审不但可以识别存在于可执行系统中的缺陷,而且可用于文档。评审有许多种类型,其中主要的类型有审查、走查和个人评审。审查和走查是同行评审[14]。测试则旨在发现尽可能多的缺陷。测试有七种类型,分别是单元测试、集成测试、外部功能测试、回归测试、系统测试、验收测试以及安装测试[15]。常用的有单元测试、集成测试以及系统测试等项。
以TSP为例,其任务计划中所涉及的质量活动按执行的先后顺序排列有需求审查、高层测试审查、详细设计评审、详细设计审查、代码评审、编译、代码审查、单元测试、集成测试、系统测试、验收测试。
项目的质量经理根据进度计划,按期组织任务计划中所安排的质量活动,基于既定的质量计划,具体由质量保证人员按计划实施。
3.3 质量度量和分析
在质量活动实施的过程中,软件质量保证人员应收集质量度量的实际数据,包括基本度量和派生度量。以软件审查为例,基本度量包括规模、评审准备时间、评审会时间、参与审查人数以及所发现的不同类型的缺陷数;派生度量包括总的审查时间、准备速度、审查速度、总的审查速度、缺陷密度、每小时发现缺陷数、评审准备时间与评审会时间之比、审查有效性。个体软件过程(Personal Software Process, PSP)[14]提供了非常有价值的度量和分析。
与此同时,质量人员可对收集的质量度量数据进行一些初步的探索性分析,为进一步的质量预测和控制打下基础。数据分析的切入点可以为缺陷的引入、排除以及泄漏,与评审有关的准备速度、评审速度、缺陷密度、审查有效性等,以及与测试有关的测试用例密度、测试覆盖度、测试用例有效性等。数据分析的方法包括如下:
(1)推测,支持工具有Pareto图、运行图、直方图、箱线图、多变异图等;
(2)提出原因的假设,支持工具有因果图和关系图等;
(3)证实或排除原因,这主要是由能提供假设检验、方差分析和多元分析等方法的高级分析工具所支持。
3.4 质量预测和控制
为了有效地跟踪并控制质量活动的实施,实现质量计划中对各质量活动所设定的预期目标,进而确保项目质量目标的达成,基于过程性能模型的软件质量管理过程模型所包含的另一个核心环节就是质量预测和控制,主要涉及到统计管理子过程性能和预测项目质量目标达成两方面。具体而言就是使用过程性能基线和模型对质量计划中标注的关键子过程实施统计管理,在每一个子过程结束时使用过程性能模型预测项目质量目标达成的置信度,必要时对质量计划进行调整。
3.4.1 统计管理子过程性能
统计管理的过程[9](Statistically Managed Process)即使用基于统计的方法进行管理的过程,其中,对该过程进行了分析,过程偏差的特殊原因得以识别,过程性能也被控制在已定义的范围内。对子过程实施统计管理,可以使子过程的性能得到很好的控制,从而确保实现子过程的预期质量目标。适于统计管理的度量必须是可控的,对子过程来说是关键的,可以为人员属性、环境因子、技术因子、工具或硬件条件、过程因子、客户以及供应商等利益相关者,例如人员经验等级、人员可用性、同行评审相关度量、测试覆盖度、编程语言等[16]。
根据对相关材料的研究,本文归纳并提炼出了一个统计管理子过程性能的流程,大体将统计管理子过程划分为过程稳定性评估和过程能力评估两部分,如图2所示。
图2 统计管理子过程性能
(1)过程稳定性评估
过程稳定性评估[17]需要用到统计过程控制方法(Statistical Process Control, SPC)。SPC主要用来测量一个过程的稳定性并识别过程的各个执行情况是否超出所预期的变化范围和控制界限。控制图是实现统计过程控制强有力的工具,常用的为XmR图和U图。通常情况下,适于统计管理的度量其取值都是服从正态分布的,对于不服从正态分布的情况,可以使用箱线图。
对于不稳定的过程(子过程中出现了性能偏差),需要识别偏差的特殊原因,集中分析并采取矫正措施排除特殊原因。检测不稳定性除了Western Electric提出的4种有效测试 [17] 外,还可参考Minitab等统计软件中提供的其他测试规则。必要时可采用分组的方法。
(2)过程能力评估
在子过程执行即将结束时,需要分析子过程的能力,进行过程能力评估。过程能力[17]评估的前提是过程是稳定的或统计受控的。有能力的过程首先是稳定的,且其能力的上下限必须在规格界限之内。过程能力可以通过过程能力指数Cp和Cpk来衡量,使用控制图或直方图进行图形化展示。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
过程能力指数Cp是我们描述过程能力的最重要指标,但由于Cp的计算与过程输出的均值µ无关,它是假定过程输出的均值与规格中值M重合时的过程能力。因此,Cp指数只是反映了过程的潜在能力。为此引入了过程能力指数Cpk,其被称为实际过程能力指数[18]。
合理考虑Cp和Cpk两个指数,对整个过程的状况就有了较为全面的了解。不应单独使用这两个之中的一个。
当Cp和Cpk都较小且二者差别不大时,说明过程的主要问题是σ太大,改进过程应首先着眼于降低过程的波动。
若Cp较大,而Cpk很小,二者差别较大,说明过程的主要问题是µ偏离M太多,改进过程应首先着眼于移动µ值,使之更接近M。
如果Cp本身不够好,Cpk更小,二者差别较大时,说明过程的µ和σ都有问题,通常改进过程应首先移动µ值,使之更接近M,然后设法降低过程的波动,减小σ。
需要特别强调的是,Cp和Cpk是由处于统计受控状态下的过程波动的大小和均值偏离决定的。因此首先要判断过程是否处于统计受控状态。
3.4.2 预测项目质量目标达成
在每一个子过程结束时,应使用子过程中间目标与项目质量目标之间的过程性能模型预测项目质量目标达成的置信度。
3.5 质量评价和改进
项目到达结项阶段时,软件质量管理也进入了最后一个环节:质量评价和改进。基于过程性能模型的软件质量管理过程中的质量评价和改进除了进行传统的质量总结报告之外,还包括基于正交缺陷分类[19](Orthogonal Defect Classification, ODC)的Pareto缺陷类型分析、过程性能基线和过程性能模型的分析评价。
质量总结报告提供了项目质量目标达成情况,质量活动的过程度量和结果度量实际数据,以及缺陷的引入排除情况汇总等。
考虑到ODC的缺陷类型与特定的软件开发阶段相联系,将Pareto缺陷类型分析与ODC结合起来,有利于识别最普遍的缺陷类型。而且通过Pareto分析找出缺陷数最多的缺陷类型,然后找出与该缺陷类型相关的开发阶段,从而对该阶段采取相应的改进措施。
质量评价和改进环节最重要的一步就是要对整个质量管理过程中所使用的过程性能基线和过程性能模型进行分析和评价,包括过程性能基线是否需要更新、过程性能模型的评价以及过程性能模型是否需要更新等。
3.5.1 过程性能基线更新决策
过程性能基线的建立过程是增量或迭代的,在获得新项目的实际度量数据后,要评估数据质量,然后将数据纳入已有基线的分析,确定是建立一个新基线还是使用已有基线。
判断将新的项目数据纳入已有过程性能基线是否合适的一个方法是:执行假设检验来判断新数据与已有基线是否存在显著的统计差异。如果存在显著的统计差异,我们需要使用新的项目数据建立新基线;如果假设检验的结果表明没有显著差异,则继续使用已有基线。
此外,在综合考虑项目和项目组之间的内在区别及组织业务变更的基础上,应定期评审组织过程性能基线集,以确定是否需要建立新的基线,或者是否需要合并、修订或放弃已有基线。组织过程性能基线需要合并、修订或放弃的情况如下:
(1)当子过程改变时;
(2)当组织的结果改变时(例如,由于过程偏移);
(3)当组织的需要改变时。
3.5.2 过程性能模型评价与更新决策
基于过程性能模型的软件质量管理过程是否能真正奏效,过程性能模型自身的好坏至关重要,其是否能有效且准确地对目标进行预测和控制、其可理解程度及其可用性等都需要进行严格的评价。
通过对可靠性增长模型、质量管理模型等模型的评价标准进行调研[20],本文归纳了四条过程性能模型的评价标准,如下所示:
(1)预测有效性。预测结果与实际结果偏差大不大,直接关系到模型的好坏。
(2)及时性。模型能够越早地发现问题或提高的征兆,就有越多的时间提前进行计划。
(3)开发过程的覆盖程度。开发过程的所有阶段的模型覆盖度是很重要的。每个开发阶段必须得到管理,并且应当实施适当的措施。往往需要建立模型集。
(4)简单性。数据采集简单并且代价不高;概念简单,用户不需要很多的数学基础就能理解。
过程性能模型的更新包括对模型的校准(Calibration)和修订(Revision)。
量化管理项目时,从统计管理选择的子过程中获取关键属性度量,通过使用所获得的这些实际性能数据,校准有关过程的过程性能模型,判断项目是否能够实现其目标,包括中期和最终目标(此时这些目标在项目生命周期的后面阶段才可以度量)。
需要修订过程性能模型的情况总结如下:
(1)当子过程改变时;
(2)当组织的结果改变时;
(3)当组织的需要改变时。
4 质量管理系统体系结构
在对基于过程性能模型的软件质量管理过程的研究的基础上,研发了质量管理系统,其体系结构如图3所示。该系统建立了组织过程资产库,并提供两大功能:过程支持和软件质量管理。
图3 质量管理系统体系结构
4.1 组织过程资产库
一个组织应该拥有自己的过程资产库,包括组织的标准过程集、度量库、过程性能基线库以及过程性能模型库,分别为过程、度量、PPB和PPM建立了相应的数据字典。其中,标准过程集支持过程定义和裁剪,度量库包括过程度量和产品度量,过程性能基线库以“上限、均值、下限”的方式存储,过程性能模型库中涵盖基本的统计预测模型和高级预测模型。
4.2 过程支持
过程支持提供了从软件度量到过程性能基线直至过程性能模型的建立与维护功能。随着度量数据的不断积累,过程性能基线的控制限在建立的过程中需要不断地修订。开发过程性能模型也是一个迭代的过程,不断的选择一个或多个适当的统计建模方法,并用过去的性能数据对模型进行评估,直到得到适当的模型预测值。
过程性能基线建立的统计方法为控制图理论,支持过程性能模型建立的统计方法包括回归、方差分析、虚拟变量回归、卡方检验、逻辑斯蒂回归,以及蒙特卡洛模拟,贝叶斯信念网络(Bayesian Belief Networks, BBN)。
4.3 软件质量管理
(1)质量计划模块支持入口准则验证、质量计划概要、项目质量目标的建立、各阶段质量活动其质量目标的建立、各阶段质量活动的属性及其度量的详细计划、项目质量目标达成情况预测及结果报告。
(2)质量活动模块支持评审过程、测试过程的实施。前者包括评审计划、评审会、缺陷修复、评审总结,后者包含测试用例管理、测试报告、缺陷管理。
(3)质量度量和分析模块负责从过程中进行质量度量数据(特别是缺陷数据)的收集、分析、评价并生成质量状态报告,质量数据分析包括按阶段和项目划分的缺陷引入和排除情况分析等。
(4)质量预测和控制支持统计管理子过程性能和目标达成情况预测,为质量活动反馈偏差原因和建议的矫正措施,必要时提供质量计划调整的相关决策。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
(5)质量评价和改进模块基于项目质量目标实际达成情况和软件开发过程中的质量数据,生成质量总结报告,并支持基于ODC的Pareto缺陷类型分析,重点提供过程性能基线和过程性能模型更新的决策和相关评价。
5 结语
本文对软件质量管理过程进行了研究,提出了一种基于过程性能模型的软件质量管理过程模型,包括如何使用过程性能基线和模型指导质量计划的制定、进行质量预测和控制等,解决了质量目标无法有效预测和控制的问题。基于研究,构建了软件质量管理系统的体系结构,下一步将深入研究通过开发过程控制缺陷的引入,从而全方位地实现软件质量管理。
摘 要:通过对目前军用软件系统开发的特点和存在问题的分析,探讨了利用CMM原理来改进军用软件过程、提升软件质量的途径和方法。并对提高装备软件的质量管理水平给出了若干建议,为不断深化装备软件质量意识和完善装备软件质量工作提供了参考。
关键词:软件质量,质量管理,CMM
随着国防信息化程度的不断提高,军用软件作为信息化装备系统的神经中枢已经成为武器装备系统中不可或缺的组成部分。高新武器装备中由软件实现的功能有时甚至会超过硬件,乃至软件本身就可以看作一类重要的装备,系统中软件性能的好坏、可靠性的高低、安全性的优劣决定着整个武器装备系统效能的发挥。目前如何提高军用软件的质量已经成为提升整个武器装备系统战斗力的关键所在。
一、军用软件的特点
软件是用计算机语言表示的与计算机操作有关的程序、进程和数据的集合,具有零磨损特性,其质量完全取决于开发过程。ANSI/IEEE Std 729-1983定义软件质量为:软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体。该定义表明如果软件本身设计出来的质量特性能高度满足软件各项功能、性能需求,则其质量的优秀等级较高。
对于军用软件而言,还存在一些特殊性,表现在:①开发过程受严格的软硬件条件制约,且很难制定具体的、量化的质量标准。②规模巨大,大系统软件源代码往往会超过一千万行。③军用软件用于军事目的,要求无差错运行,对可靠性、实时性、安全性、保密性、互操作性等方面都有极高的要求。④成系统的大型军用软件面对装备情况复杂,研制参与人员较多,这些因素会造成高风险、长周期,高成本。
二、军用软件开发中的问题
随着对软件开发规律和军用软件质量重要性认识的提高,已经有越来越多的软件承制单位开始建立基本的软件过程,按照软件开发规律进行开发,但还有相当多单位,依然沿用“手工作坊”式的开发方式,全过程由软件开发设计人员“自行设计,自行编码,自行测试,自行包维护”。这种方式无法对软件开发过程进行有效的监督与管理,一旦软件产品出现故障,只能由开发者自行维护,其它人员难以介入,软件质量就会处于失控状态下,造成这种状态的主要原因除了国内软件开发整体水平较低外,限制软件的质量的原因还有:①目前相当多的军用软件是当作硬件的附件而不是独立的产品,没有按照基本的软件过程模型进行软件开发。②在研制过程中软件的评审力度不够。③软件开发文档及编制过程不规范,文档对开发过程的没有起到指导作用,软件验收和维护也没有依据。④软件测试非独立过程,软件的测试软件、测试工具缺乏,标准、规范不健全,软件检验与硬件合并进行,使得测试过程难以发现软件本身存在的问题。⑤部队使用装备投入对软件维护的力度不够。
三、CMM原理和作用
为有效针对军用软件目前存在的若干问题,保证软件产品质量,应清晰和完善的软件过程。我国于2001年基于SW2CMM1.1版的理念,制定了GJB5000―2003《军用软件能力成熟度模型》,并于08年在原标准基础上修改了若干内容,了GJB5000A-2008作为替代原文件版本,这些都标志着我国军用软件开发管理已经进入规范化管理阶段。
软件能力成熟度模型CMM主要用于软件过程评估和软件能力评价。其中软件过程评估用于确定当前软件过程的状态,发现与软件过程有关的嗜待解决的问题,进而有步骤地对软件过程实施改进,提高组织的软件过程能力。
CMM模型为软件开发组织设计了一个循序渐进的改进过程,帮助开发组织按模型进行对照检查,找出自身的强项和弱点,制定改进计划,逐步提升软件过程能力。同时也为软件委托方或采办者提供了一个评价标准,可以为对软件承包商进行软件过程能力评估,对风险进行控制。软件能力成熟度越高,软件过程越透明,软件性能越稳定,软件质量越高。
CMM将软件过程能力成熟度分为5级,从1级到5级软件能力成熟度逐步提高,每个等级有其软件过程特点,1级不含关键过程域,2级以上每一等级包含一组关键过程域,每一关键过程域中包含一组目标,当这组目标全部实现时该关键过程域相应的要求得到稳定。当一个等级及其以下所有等级的各关键过程域的全部目标实现时,就表明达到了该等级的成熟度。
四、利用CMM对军用软件能力成熟度评估
我国目前军用软件研制受整体水平的制约,还处于起步阶段,所以在引入并实施军用软件能力成熟度模型CMM时,可以从可重复级(2级)做起,帮助软件开发组织的过程能力按阶段逐步建立,逐级提高成熟度等级。可重复级共有需求管理、软件项目策划、软件项目跟踪与监督、软件质量保证、软件配置管理、软件子合同管理等6个关键过程域。为实现6个过程域的满足,应注重以下几个方面:①高层管理者应确定软件工程化方针,以CMM模型为蓝本,要求软件项目组按照软件工程要求实施软件开发,对项目进行阶段性分割,推进文档化交流方式,以便对软件开发的全过程进行有效控制和管理。②对原有组织进行适当调整,依据CMM过程域实现要求进行必要的人员配备和准备,建立软件工程过程组、系统测试组、软件质量保证组、软件配置管理组与软件配置控制委员会。③ 在全组织内进行动员、学习和培训CMM相关知识和理论;将本单位的组织、角色和术语与CMM中的相对应,完成软件开发CMM模型本地化改造;建立激励机制,鼓励软件组成员尽快地接受CMM的理念和实践推进。
五、对于军用软件质量管理实施的几点建议
军用软件成熟度模型CMM是评估软件过程和评价软件能力的重要工具,对规范军用软件承制单位按照软件开发规律进行软件开发,提高研制开发能力,保证软件质量具有非常重要的意义。我国军用软件能力水平目前大部分处在CMM初始级或可重复级阶段,GJB5000A-2008《军用软件能力成熟度模型》军用标准要求全军各部队和全国所有军用软件承制单位贯彻执行在一定程度上推进了我国军用软件过程能力的提高,但在短期内想要提升软件成熟度等级还具有一定困难。所以我们应本着长期坚持,循序渐进的工作方法,结合实际情况,制定相应的改进措施,逐步完善实施过程。
此外,我们还应结合更多的管理方法对军用软件质量管理进行完善。如加强对军用软件研制单位质量水平的审核。通过二方(顾客方,如军方)或第三方(如独立的认证机构)严格审核,可以提高军用软件研制单位对软件质量的重视;及时更新软件工程理论技术,如软件开发过程模型,软件产品的评价模型方法、质量保证方法、软件工程集成环境和工具,可靠性和安全性技术等;建立一支高水平的软件测试检验队伍,保证软件测试人员的技术水平等级不低于软件开发人员;在软件开发过程中坚持开展软件标准化、系列化、模块化设计理念,提高软件模块复用率,用以提高软件的质量和可靠性。
提高军用软件质量管理水平是一个涉及多学科多技术的综合应用系统工程,军用软件承制单位中各部门各专业只有共同努力,通力合作才能使我军电子装备软件系统开发的整体水平跨上一个新的台阶。
摘要:近年来,随着我国社会经济的不断发展,我国软件技术发展速度也在不断加快,但同时我国软件技术还存在较多的问题,要想有效解决这些问题,必须加强软件质量管理,不断完善软件质量管理体系,促进软件快速交付。文章研究表明,通过软件质量管理,不仅可以促进软件开发,还可以确保软件质量。
关键词:软件;质量管理;优化对策
0引言
在软件技术快速发展和应用范围不断扩大的同时,软件复杂性也不断提升。在当前的很多软件开发企业中,软件质量管理问题开始成了关注的焦点。
1软件质量管理中存在的主要问题分析
1.1需求模糊问题
结合软件工程来说的话,软件产品的生产主要包括多个过程:第一是系统需求研究过程;第二是系统设计过程;第三是系统实现过程。但对于软件系统需求来说,往往描述不够完善,相应的软件需求调研以及研究也不够深入,没有加强对软件质量需求的管理,这样不仅会使得研发以及测试设计工作落实不到位,还会明显提升沟通成本,导致产品实现与用户需求不一致[1]。
1.2立项管理不到位问题
大量实践结果表明,通过加强立项管理,可以有效避免质量管理项目风险的产生,赋予软件项目开发深刻的意义。(1)软件项目开展。不加强深入的立项调查,以及加强项目可行性分析,落实好立项评审,则可能会导致产品需求获取不到位,软件开发产品规划出现很多问题,无法保证软件研发工作的有效开展,致使项目研发功能明显减弱,不但会导致资源浪费,还会阻碍新产品的正常[2]。(2)软件项目。如果没有加强立项管理,可能会导致成员行为涣散问题的出现。工作人员只顾自己,不顾团队利益,无法全面了解项目产品的实际开发要求与背景,也不能从根本上明确项目开发的最终目标,无法满足用户的实际软件开发需求,最终使得软件开发计划无法按期实施以及软件开发费用超支等问题出现。
1.3软件质量保证体系尚待完善
针对我国很多软件开发企业来说,往往都处于“软件质量管理”实施的最初阶段,甚至是试行阶段,很多科研制作部门对应的标准化软件质量管理体系还都不完善,甚至有一些科研部门对应的软件质量管理制度和体系还没有形成[3]。另外,一些企业虽然设立了软件质量管理的专有部门,但相应的体系文件却还不完善,需要经过大量的实践来完善。在软件开发项目研制部门质量管理普通较低的情况下,软件开发工作者的综合素质低下,也会影响软件产品的最终质量。
2软件质量管理的优化对策分析
2.1加强需求工程有效管理
在实际的软件开发当中,如果相应需求模糊,会出现需求随意变更的现象,导致时间被白白浪费。对于该问题来说,必须针对相关需求活动,加强统一化的需求管理。要在落实好软件需求开发工作的基础上加强需求管理,这样不但能够限制需求变更的实际次数,还能促进工程师对质量管理需求的深入理解。总之,软件需求开发与软件需求管理的重要性同等重要,必须实现两者的有效结合,才能保证最终产品的质量。
2.2加强软件测试流程有效管理
在软件测试的各个环节,都可能会出现一些问题,必须不断优化软件测试流程,加强对软件测试流程的有效管理。具体来说:(1)软件测试相关部门人员,必须加强需求知识学习,开展深入的需求探讨。(2)对有疑虑的需求者,研发设计工作者要做出及时而准确的解答。对于研发设计工作者也不能有效解答的问题,要让他们联系用户来有效解答。在明确需求的基础上,根据软件系统的作用以及性能,专门的测试工程师要科学合理地设计软件测试测用例,具体要结合两大方面的内容来设计:第一,针对测试工程师来说,必须结合实际需求,科学合理地编写测试用例;第二,针对测试工程师来说,要在结合实际用户反馈情况的基础上,做好分析汇总工作[4]。要大力引入和合理应用QC功能测试设备以及工具,加强对软件以及实际操作系统兼容性能的合理性测试,才能充分发挥软件测试工具使用的功能与作用,落实好软件兼容性测试工作。此外,要加强自由软件测试,适当补充软件测试用例,了解软件测试用例没有涉及的问题以及问题产生的原因;要采取定期研究和分析的方法,明确缺陷库里面存在的问题,并深入研究问题成因,进而利用测试用例来解决问题[5]。
2.3加强项目进度质量有效管理
要保证软件开发项目的顺利完成,首先必须保证软件项目质量足够好。在软件项目开始实施之前,必须保证项目开发计划足够科学、合理。如果软件开发项目计划设计人员相关工作经验足够丰富、设计能力足够强,往往可以有效保证软件开发计划的合理性与完善性,有效预见软件开发计划当中的问题,消除相关阻碍和影响因素。在软件开发项目计划设计的开始,相关人应及时组织软件质量管理人员,开展软件项目计划讨论会与评审会,并请相关技术专家、真实用户等,针对软件项目计划的科学性和合理性进行探讨,分享个人意见和看法,由专门的记录人员总结相关意见,最终形成系统化的质量记录,再以书面或者文档的形式传送给相关工作人员进行意见修改整合,确保软件项目计划的完善性。
2.4提升工作人员的综合素质
在软件开发和质量管理过程中,技术人员和管理人员是核心主体。因此,要想有效保证软件质量管理有效性,必须保证管理工作人员和技术人员的综合素质足够高。让员工全面地了解企业,正确理解自身的工作性质和要求,并不断增强自身的责任感。即使工作人员已经对工作内容很熟悉,也可能没有深入理解企业经营战略以及相应的发展规划。企业外部环境条件变化幅度比较大,企业工作人员必须及时掌握内部战略和规划变化情况,及时调整自己的工作计划和方法。对于软件质量管理人员来说,不但要主动参与到企业发展规划设计工作中,还必须及时将相关信息传达给各个部门。通常来说,企业应当定期或者不定期地开展例会,介绍企业近期情况和之后的发展规划。在掌握全体例会内容的基础上,各个部门负责人员应当再次开展部门会议,根据部门工作开展情况,做好后期工作规划调整工作,使得每位员工都掌握企业发展动态,进行自身科学合理的工作调整与规划。软件质量管理者还必须基于企业内部软件质量问题,增强创新意识,提出可以有效解决软件质量问题的措施。
3结语
综上所述,软件开发成本管理不到位、软件质量管理不到位等问题仍然存在,导致这些问题产生的主要原因是管理者管理不到位,如:软件质量管理制度不完善、随意性较强。要有效解决这些问题,必须以完善的软件质量管理体系为依据,加强软件开发的全过程监控。
摘要:将数据挖掘技术运用于软件质量管理,根据影响系统质量的属性,建立了质量管理和分析模型,并根据模型给出了系统实现的初步方案。该系统的实施,能够有效的保证软件产品的质量。
关键词:软件质量管理;数据挖掘;联机分析处理;关联规则
1 引言
随着计算机软件越来越深入地应用到社会生活的各个方面,尤其是一些关键领域,软件的规模也随之日益增大,软件的质量也越来越受到重视[1-2]。软件的质量不过关,可能会产生严重后果。目前中国软件业尚未形成规模,全国的软件企业数量不少,但是大规模软件企业聊聊无几。我国软件业竞争力低下固然有产业规模小,资金投入不足、知识产权保护不力等各方面原因,但软件产品质量不高也是一个不争的事实,它直接影响到企业的形象及其在市场上的信誉,进而影响到其生产需求,使企业存在潜在的生存危机。
目前,对于软件质量控制一般都采用ISO9000或者是CMM,通过对软件开发过程的管理来控制开发质量[3-5]。本文研究了数据挖掘技术在软件质量管理中的应用,设计了一种基于数据挖掘的软件质量管理系统。系统通过软件缺陷的数据,软件生命周期全过程中关于分析、设计、编码、测试等阶段有关人员素质、开发和管理过程的信息以及软件属性、开发机构资质和经验、目标用户评价等资料的数据库,来建立质量预测模型,发现制约质量和过程的规律,从而采取预防缺陷措施。那么就能最大限度的降低开发维护的费用,大大降低软件故障和失败的可能。
2 影响软件质量的各种因素
软件的设计开发、营销、服务与支持活动,涉及投资者、管理者、销售者、软件产品用户等各类人员及其组织。因此,需要从全面的软件质量观出发,深入分析与软件生产有关的组织、人员、活动,对软件生产过程进行模块划分,建立通用的模块化的软件生产过程模型,以识别影响软件质量的各种因素。在此基础上,构架基于过程的软件质量体系结构,提供构成软件质量系统的通用概念框架,这就在高层次上找到了满足用户的要求,使定量质量管理成为可能。同时建立通过模块化过程的质量保证以及过程网络协同运作的质量保证系统,来保证软件产品质量的质量管理方法。进而建立完善软件过程质量的质量评价体系,用软件过程能力指数评价过程质量的高低,以过程的稳定受控来保证软件产品满足规定的质量特性要求。
2.1 质量属性
软件的质量属性可分为两大类:第一类可在运行软件并观察其结果的时候进行度量,例如性能、安全性、可靠性和功能性等都属于这一类。第二类不能够在运行软件并观察其结果的时候进行度量,但可通过对开发或维护过程的观察进行度量,这一类的质量属性包括可移植性、适应性、可复用性等。
2.2 软件体系结构对软件质量的影响
软件需求确定后,软件体系架构在软件质量中会起重要作用[3],有合理的软件体系架构,可以使需求变更产生的影响变得更小。如果没有合理的体系结构,先进的编程技巧也不一定能弥补体系架构对质量的影响。
软件体系结构问题包括软件系统总体组织和全局控制、通讯协议、同步、数据存取、给设计元素分配特定功能,设计元素的组织、规模和性能,在各个设计方案间进行选择。软件体系结构的设计是从问题域到软件解空间的第一步。一些体系结构方面的问题对软件的质量属性有重大的影响。比如,模块的层次可能影响系统的可修改性;功能的划分和封装可能影响系统的可扩展;构件间的通信协议可能影响系统的效率等。从另一方面看,良好的软件体系架构并不能确保系统的功能性需求及质量需求。后阶段的设计、实现等同样可以使系统的质量发生变化甚至损坏。毕竟,软件生命周期的任何阶段都对软件质量有或大或小的影响。因此,好的软件体系结构是良好系统质量的基础。
2.3 软件过程对软件质量的影响
从质量管理模式来看,软件企业按照某种软件生命周期模型来组织软件项目或软件产品的开发。目前比较流行的有瀑布型和迭代式开发方法。瀑布型的开发方法适合小型的、需求明确的软件项目,这种模型有个根本缺陷就是没有把用户需求反映在在整个项目当中。迭代式开发方法强调软件风险管理,把项目分成一个个的开发提交阶段,把里程碑处提交的产品提交用户反馈,并将反馈信息加入到下一个阶段的软件开发当中,其本质是基于产品开发的组织方式。
长期以来,软件开发过程中需求的变化,特别是软件使用后需求的变化,一直是制约软件质量提高的“瓶颈”[4]。随着软件产品或项目规模的扩大,软件产业的兴起,软件生产的组织方式也要从面向产品的生产组织转向面向过程的组织方式,面向过程的生产是软件产品生产的主流方向,必须以面向过程的生产组织方式,对软件需求获取、设计、开发、维护服务与支持的各过程进行预防为主的过程质量控制,对产品及过程的质量全部量化。
3 数据挖掘技术
3.1 数据挖掘和联机分析处理OLAP
数据挖掘是20世纪90年代迅速兴起的一个十分活跃的研究方向。其目的在于发现大型数据集中隐含的、不为我们所知的潜在有用信息,受到了数据库、人工智能、统计学和数学等领域研究人员的广泛重视,成为继Internet之后的技术热点[5]。目前,数据挖掘在销售、金融、电信、保险、教育、政府决策和基因工程研究等许多领域都得到了成功的应用,已产生了巨大的经济效益和社会效益。数据挖掘过程一般包括三个步骤,即数据准备、数据挖掘和知识分析和获取。数据准备用于选择相关数据用于预处理,包括消除数据噪声、弥补数据缺失和解决数据冲突,然后转换成适合挖掘的形式;数据挖掘则是采用有关算法对经过清洗的数据进行分析,其结果是大量的规则;知识分析和获取用于对产生的一系列规则进行评价,并从中抽取有用的知识,以辅助决策,如图1所示。数据挖掘有分类规则挖掘、聚类规则挖掘、关联规则挖掘、转移规则挖掘、例外模式挖掘、序列模式挖掘、Web挖掘、正文挖掘、多媒体数据挖掘、空间数据挖掘和时态数据挖掘等。
联机分析处理OLAP使用多维数据模型,在数据仓库中进行一系列统计操作,使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求。在企业当中得到越来越广泛的应用。
摘 要 本文简要介绍了军用软件特性,从软件分级管理、软件配置管理、SFRACAS三个方面探讨了如何加强军用软件的质量管理,为军用软件质量管理工作提供参考。
【关键词】军用软件 质量管理 软件配置管理 SFRACAS
随着武器装备信息化程度的不断提高,军用软件产品在武器装备上得以广泛应用,军用软件质量已经成为影响武器装备质量与安全的关键性因素之一,有必要采取措施加强军用软件的质量管理。
1 军用软件特性
军用软件是指应用于军事用途的软件。军用软件的特殊性使其开发和质量保障难度较大,具有以下特性:
(1)军用软件通常要面临复杂的作战环境,可靠性、安全性要求高;
(2)军用软件一般为嵌入式软件,对操作性要求较高;
(3)大部分军用软件规模巨大,研制周期较长,成本较高,风险较大;
(4)应用于军事用途,对开发人员、开发工具等提出较高的保密性要求。
2 军用软件质量管理措施
2.1 开展软件分级管理
军用软件应按照GJB/Z 102《软件可靠性和安全性设计准则》要求进行分级管理,按照软件失效的危险严重性等级分为A、B、C、D四个等级。其中A、B级软件失效可能导致人员死亡或严重受伤、系统报废或严重损坏,因此在软件开发的各个阶段必须开展危险性分析,降低风险。同时A级软件可能导致人员死亡或系统报废,因此必须对A级软件开展第三方测试,确保测试结果的独立性和权威性。由于军用软件的特殊性,如专业化程度更高,保密性要求高,使得第三方独立测试存在一定困难,可以考虑由军用软件承制单位进行测试,但必须由第三方组织和全程监督,必要时让军用软件用户参与进来,使测试结果更加准确有效。
2.2 开展软件配置管理
软件配置管理的对象是软件配置项。软件配置项就是在软件生命周期内各个阶段产生的各种形式的文档、程序、数据。软件配置管理目的是利用配置标识、配置控制、配置状态报告和配置审核建立和维护配置项的完整性,通过自定义三库管理策略,建立开发库、受控库和产品库,对软件配置项进行入库、访问、出库、维护、更改、等活动实施管理,以确保软件产品的正确性、完整性、可控性、可追溯性,主要包括以下四方面内容:
2.2.1 配置标识
配置标识主要包括三方面工作,一是定义项目生存周期中所建立的基线,二是识别和选择要管理的配置项,三是维护配置项标识。
2.2.2 配置控制
配置控制包括版本控制和变更控制两方面工作。软件产品为了适应不同的运行环境、不同的平台、不同用户的使用要求,导致同一软件产生或演化出不同的版本,必须进行版本控制。版本控制的目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧版本,避免文件的丢失、修改的丢失和相互覆盖。版本控制是实现团队并行开发、提高开发效率的基础。变更管理是配置管理的一个重要组成部分,实现对需求变更及软件代码变更的高效管理。变更必须履行审批手续,首先由软件配置项负责人提交变更申请至配置管理员,再由配置管理员提交软件配置控制管理委员会进行评审,如批准及时修改并指定修改人,配置管理员将配置项检出至修改人员的开发库中进行修改,修改后经评审或确认批准后,由配置管理员将修改批准后的配置项重新入受控库(要求有版本升级记录),更新受控库状态报告;如没有批准修改或批准延后修改,配置管理员应向问题提出者提供未批准及批准延后修改的原因。当软件产品经过最终验收或交付后应提交配置管理员,入产品库。
2.2.3 配置状态报告
配置管理员通过配置管理系统收集当前基线配置项的状态,汇总形成配置状态报告,定期提交项目负责人审阅。
2.2.4 配置审核
配置审核主要是对软件开发过程进行审核,确保软件配置项正确可控,一般由质量保证人员单独执行。
2.3 建立SFRACAS
SFRACAS即软件故障报告、分析和纠正措施系统,建立该系统的目的是及时报告软件发生的故障,分析软件故障产生的原因,制定纠正措施并验证其有效性,防止故障再次发生。军用软件承制单位应从软件研制开始建立SFRACAS,对故障实行闭环控制,有效地消除软件缺陷、故障,提升软件研制工作的质量。
建立SFRACAS应遵循PDCA原则,P代表计划(PLAN),D代表执行(DO),C代表检查(CHECK),A代表处理(ACTION),这四个过程循环执行,周而复始,促使军用软件质量不断改进。SFRACAS具体工作流程如下:
2.3.1 故障报告
软件在研制和使用阶段发生的故障,应由相关部门负责信息收集的人员予以及时、完整的收集,编制故障报告,并在规定的时间内向规定的管理组织报告。
2.3.2 故障核实
质量保证部门应组织有关人员对报告的故障内容都应按发生故障时的实际情况进行核实,故障核实可通过重现故障模式或依靠故障证据来完成。对缺乏证据的应给予说明。
2.3.3 故障分析
在软件的故障得到核实后,故障责任单位应尽快组织相关人员对故障进行分析,以确定故障原因,并编制故障分析报告。
2.3.4 故障纠正
故障原因确定后,故障责任单位的有关部门应根据对故障的分析结论,研究并制定纠正措施,编制纠正措施实施报告,并提交规定的管理组织审批确认,再下发有关部门组织实施。
2.3.5 纠正措施效果的验证
纠正措施实施后,有关部门应通过试验、试用等方法证实纠正措施的有效性,如达不到预期效果,则需复查故障的原因或进一步采取其它的纠正措施,直至故障彻底解决。最终,将确定的纠正措施及其实施效果提交给规定的管理组织。
2.3.6 故障信息管理
故障解决后,软件承制单位应统一管理保存全部故障信息报告及有关文档资料,并建立故障信息库,供有关人员查询。
3 结束语
对军用软件的质量管理,是当今武器装备质量管理的重要组成部分。本文简要介绍了军用软件特性,从软件分级管理、软件配置管理、SFRACAS三个方面探讨了如何加强军用软件的质量管理,为军用软件质量管理工作提供参考。
【摘要】本文首先从面向对象技术和重用的角度对软件工程进行了分析,然后结合现有的软件工程开发技术及管理成果,对提高软件生产效率的开发方法进行了进一步的探讨。
【关键词】软件工程 软件质量 质量管理
目前我国软件开发行业中拥有大量优秀的软件开发人员,虽然如此,但是我国企业的软件开发管理却始终处于一种比较低的水平上,近年来随着国内工业企业逐渐与国际标准相接轨,纷纷进行国际标准化质量体系认证,多数软件开发企业已经开始意识到软件质量管理的重要性,开始进行有关软件质量体系的标准化认证等工作,鉴于此,本文主要针对软件工程与软件质量管理领域的一些问题展开分析。
一、软件工程分析
(一)面向对象的开发方法
最终产品的特性与结构主要由开发方法所决定,在工业化过程中逐渐将软件工程技术纳入到规模化生产中,在系统开发过程中各个阶段之间的过渡变得更加平滑,系统模型也更容易维护,已有成果得到了最大程度的重用,这些目标的实现皆得益于对面向对象技术的应用。很多问题的存在利用传统的功能/数据方法根本不能得到有效解决,首先,可以利用功能/数据将系统分解成数据和功能两部分,功能部分体现出主动的色彩,伴随着相应的行为,数据部分则体现出了被动的色彩,被其不同的行为所利用;其次,人们利用功能/数据方法开发系统和软件时,不同系统和不同软件之间始终存在一些差异,一般来说是不能利用现实生活中的实体建立系统模型的,需要将实体中的功能及数据提取出来;最后,继承是面向对象技术的主要特点之一,从最大程度上利用现有的软件产品。因此,在一些大型系统开发过程中应对面向对象的技术进行有效的应用。
(二)重用
在系统开发过程中都希望可以对已有的成果进行尽可能的应用,重用可以使生产效率得到最大程度的提高,软件工程中解决危机问题通常会使用重用的方法,但是传统软件工程开发方法并不能对已有软件产品进行尽可能的应用。重用软件代码在工作中比较常见,对于生产效率的提高非常有用,但是从软件工程领域来看,解决问题的方式并不唯一,从软件开发的角度上来看,会从更为广泛的范围内对重用技术进行应用。此外,文档的重用也比较常见,不管是开发阶段还是维护阶段,通常重用文档的方式存在很多不便,加上格式的重用率比较高,因此利用面向对象的技术可以为其提供较大帮助,为重用事务的分配提供了良好的解决方法。
二、软件质量管理分析
软件质量管理领域已经提出了质量工作的相关特征,在全公司范围内展开质量控制及监督等工作,组织相关人员参加业务培训和教育,从全国范围内促进质量的提高,具体来说起其内容主要涉及到与人、机构有关的内容,要想提高质量就要与人发生关系,质量管理不能脱离人而存在。现阶段很多企业都专门设置了质量管理部门,这意味着现在很多企业领导者开始意识到了质量管理的重要性,但是这些企业对质量管理的认识也只停留在了这些部门上,企业中其他部门的人员都认为质量管理就是这些部门的事情,跟自己无关。而事实上质量的提高与企业中所有员工都有着必然的联系,企业中所有的员工都会对质量的提高起到或多或少的作用,而质量管理部门设置的目的在于针对质量的提高进行审查与监督,并展开质量培训,特别是最高管理者,只有这些人了解了质量管理的重要性,才能对质量管理措施进行贯彻落实。全面质量管理作为保证产品质量的一项重要工作,企业应将质量作为主要目标,所有企业活动都要围绕质量的提高进行。
现在我国多数企业已经将全面质量管理作为企业内部的主要管理模式,其内容主要包括生产、管理等方面,体现了效率性、科学性等一系列特点。之所以要在企业中进行全面质量管理,其主要目的在于将生产中存在的缺陷消除,这些缺陷主要是由人工和管理两方面原因导致的,其中,由于人工引起的缺陷比较容易消除,只要由工人在生产过程中加以注意就能使质量得到提高,并注意工人的培训,认识到缺陷产生的原因和解决的方法。因为管理而产生的缺陷往往是不容易解决的,因为这些缺陷往往是不易察觉的,在管理上形成了交叠,加上软件产品测试很难将方方面面考虑到,其中难免存在着一些隐藏的缺陷,所以管理制度的建立对于消除这些缺陷具有重要意义,以达到提高质量的目的。
三、结语
综上所述,近年来随着科学技术水平的快速发展,计算机的应用领域开始不断扩大,这种情况下软件系统开发也显得越来越复杂,很容易出现出现“软件危机”,为了对软件可维护性差、无法完成软件进度等问题进行解决,软件工程学科由此产生。然而开始时人们因为过分重视软件工程技术,忽视了质量管理的重要性,所以有关软件工程管理的研究并不多,本文主要基于这一方向展开了分析,供大家参考。
摘要:通过参与机载软件研制项目的研发过程,并对机载软件全生命周期的质量管理过程进行研究和分析,从中提炼出机载软件在其生命周期过程(本文开发生命周期过程指从计划,到需求捕获和确认,经设计,到编码集成直至交付的过程)中的质量管理三个基本特性(完整性、符合性和可追溯性),同时通过对实际状态的对比分析和研究,针对机载软件质量管理的三个基本特性的意义和作用,提出了机载软件质量管理的三个基本特性在其生命周期质量管理过程中的实际应用,强调使用过程方法进行机载软件质量管理工作,以确保机载软件质量管理的系统性、根本性地全面可持续开展,继而确保机载软件在开发生命周期过程中满足相关要求,最终确保按照生命周期过程开发和生产的航空机载产品满足客户和适航的要求,最终确保产品的交付和盈利,争取更多的市场份额。
关键词:质量管理;完整性;符合性;可追溯性;适航;机载软件
一、前言
目前中国国内航空机载软件的自主研发起步比较晚,而大部分参与的公司/人员,由于之前质量管理的经验,形成一些固定的质量管理思维。随着国内民用航空产品市场的增加和国家对民用航空产品的重视,以及机载软件的技术日益发展成熟,我们需要更加重视航空机载软件质量管理的研究和分析,确保航空机载软件满足客户和适航的要求。航空机载软件质量管理相关的基础和标准,不管是国际航空标准AS9100,还是一些工业标准(包括DO-178B),以及一些已经的适航标准(包括Order8110.49)等等,更加关注产品在计划、设计、生产直至交付的所有节点中的每个过程,注重质量管理过程体系和程序的建立;按照建立的体系和程序执行相关过程,强调所有过程进行记录并保证可追溯性。笔者通过对航空机载软件生命周期研发过程质量管理的研究,包括AS9100、适航法规、先进的工业标准等进行研究,对实际质量管理状态进行总结,提炼出质量管理的三个基本特性――完整性、符合性、可追溯性,就航空机载软件生命周期过程中如何贯彻和应用这三个基本特性进行了浅显的分析,确保航空机载软件的交付满足客户及适航要求。以下内容是个人就质量管理的三个基本特性的概念及应用进行浅显的论述。
二、质量管理三个基本特性的概念
要想在机载软件的生命周期内贯彻质量管理的三个基本特性,首先需要了解三个特性的基本概念,只有对其概念和意义的理解,才能更好地在生命周期过程中应用和贯彻这三个基本特性。
1.完整性,指应确保产品生命周期过程中质量管理体系的完整覆盖。完整性是质量管理的基础,如果质量管理体系不能完全覆盖所有操作过程,也就谈不上质量管理。完整性也可以总结为“写我所做”;
2.符合性,指在设计和制造以及交付过程的所有操作应符合相应的文件/程序、符合相应的作业指导书以及产品符合经批准的设计和工艺。符合性是质量管理的主体,也是质量管理的执行过程。符合性可以总结为“做我所写”;
3.可追溯性,即应将所有过程中产生的数据进行相应的记录,确保在发生不符合时,能获得相应的数据分析的支持。可追溯性是质量管理的反馈,也是质量管理过程中持续改进的必备。可追溯性可以总结为“记我所做”。
三、理解和应用
可以将质量管理的三个基本特性总结为质量管理中的三句话:写我所做,做我所写,记我所做。也通过这三句话,可以清晰的发现这个三个基本特性涵盖了航空机载软件质量管理的全部过程和要点。以下内容就笔者在现有质量管理状态分析的基础上,分别就这三个特性如何应用,进行简单的阐述:
1.完整性
完整性,作为质量管理的基础,首要任务是是建立完整覆盖顾客要求、法律法规的质量管理体系。如何建立?民航产业有自己行业的质量标准――AS9100,按AS9100的条款,建立质量管理体系,形成质量管理体系框架。对于航空机载软件来说,仅仅满足AS9100的要求是不够的。在质量管理体系的建设中,必须同时要考虑适航规章的相关要求,包括DO-178B、Order8110.49。笔者认为以下图形象地形容AS9100和适航标准之于质量管理体系之间的关系:
图1 质量管理体系和AS9100及适航要求三者间的关系图
根据实际参与项目预投产质量管理体系的适航审定经验以及实际参与项目的开发经验,可以使用符合性矩阵分析的方法,通过建立程序和AS/9100及适航标准三者之间的符合性矩阵,一方面明确AS9100和相关适航标准的各方面的要求,一方面在矩阵中可以明显地看出当前质量管理体系完整性状态。下表为方法中采用的简易的矩阵表:
注1:由于篇幅有限,只能简单列出表头,其中横行中可以列出AS9100条款号;左侧纵列可以列出相关适航条款要求,在表的右侧某一栏中可以列出体系程序的名称。表格可以根据条款的详细程度进行调整;表格因人而异,可调整以适合本企业的相关要求。
注2:对应矩阵中,可以采用标志方式,如完全满足,用表示;如果AS9100条例满足,但是不满足适航要求,用表示;如AS9100条例不满足,但是适航要求满足,用表示;
随着适航标准不断更新以及产品研发经验的积累,公司同样需要不断改善和持续改进体系文件以切实满足质量管理的完整性要求,如DO-178B升级为DO-178C,则公司应针对升级前后版本识别,确保质量管理的动态完整性。完整性,是质量管理过程的基础,也是前提,只有确保质量管理中体系文件/程序的完整覆盖,才能有效保证质量管理的实施,才能确保企业有效率、有组织的进行。
2.符合性
符合性,之于完整性和可追溯性来说,起承上启下的作用。为确保符合性,首要任务是建立满足符合性的方法。日本质量大师石川馨认为:“当引进某种做事的方法时,很自然要考虑这种方法是否合适。通常我们根据过去的结果与经验或传统的方法做出决策。适当的评估将使这种决策变得更加有效,同时工作过程中的数据对于评估工作来说也是至关重要的。”对应质量行业中老话“不是最先进的方法就是最佳的方法,选择最合适的方法才是最佳的方法”。对于一个企业的质量人来说,应该清晰自身企业所处的规模、阶段,并选择相应的方法以确保符合性。符合性,是PDCA过程方法最重要的环节。笔者个人觉得对于一个企业来说,简要的操作流程可以按照如下流程进行:
图2 符合性实施流程图
注:对于任何产品来说,数据的积累是产品优化,行业的发展的基础。
结合上述流程图,以机载软件生命周期过程中的研发过程为例,具体操作可以参考如下:
针对机载软件研发过程,利用电子检查单(peer review)方式进行过程把关。
对各个层次的人员进行相关业务知识方面培训,要言明使用检查单的意义和作用。
建立每个过程作业指导书,找出每个过程的关键要素,将关键要素导入到电子数据库中。
依据检查单内容,对实际项目研发过程进行评审和检查,将每个关键要素的检查结果导入数据库。
以数据库为基础,针对检查结果中出现的问题分析,进行相关管理过程和/或相关产品设计构型进行改正和/或预防。
注:实现数据库与检查单相连接,通过在数据库中输入关键字,使其自动生成检查单;一方面减少不同素质的人员造成检查单内容的差异,另一方面有利于人员更专注于产品检查和改进的本身,提高执行效率。
符合性,是一个持续改进螺旋过程,是建立在公司的质量管理基础上,逐步的改善,根据机载软件的不同阶段选择相应方法以确保符合性。
3.可追溯性
对于机载软件来说,可追溯性的意义在于验证完整性和符合性,另外也在于后续过程的软件维护和升级,以及航线过程中如果发现问题,可以及时排查出问题所在,找到根本原因。机载软件的配置管理过程是确保可追溯性的前提。在DO-178B和AS9100中可以查询有关配置管理的规定,根据AS9100要求和适航要求以及DO-178B建立配置管理程序。在机载软件的配置管理过程中,
首先需要针对机载软件相关阶段建立配置基线,包括需求基线,设计基线;
针对所有需求、源代码、目标代码建立追溯矩阵;
如果机载软件已经建立配置基线,其中的任何更改,都需要按照配置管理程序(计划)的更改控制流程实施更改;
按要求定期进行配置审核,并编制配置管理报告;
按照加载规程实施机载软件加载前环境确认,并填写加载记录。
现如今各个企业更加重视信息化管理,在实际工作过程中,不断引进新的工具软件,如对于机载软件需求的管理,一般会采用DOORs软件进行管理。未来的信息化系统应该更是一个高度集成的信息化平台,能够实现简单输入自动实现,容易检索等等,给员工工作带来很大的便捷性,降低了人为错误,进一步提高了工作效率。而所谓高度化集成的信息平台,个人觉得可以通过建立不同的模块,然后在模块后台实现数据库支持。以航空机载软件的几大过程为例,包括计划过程,,需求过程,设计过程,编码过程过程,供应商管理过程,建立相应的模块,在各个模块之间共享同一个数据库;对于每个模块之间再细分子过程,为每个子过程建立窗口。高度集成化信息平台能够将一个机载软件完整生命周期所有信息记录在同一平台上实施分类保存,可以通过菜单拉取机载软件配置项,了解其当前状态,链接到供应商管理,进一步了解供应商的需求和编码状态。
可追溯性,是质量管理过程的体现,只有实际工作中进行了相应的记录和标识,才能确保机载软件的可追溯性。也才能真正确保机载软件产品满足初始适航和持续适航能力。可追溯性确保了质量管理真正的实现。
四、三个基本特性之间的关联
三性,用综合性的话语来描述:针对航空机载软件的每个过程,按照AS9100/适航要求建立完善的机载软件质量管理体系程序和方法以及计划;每个过程的操作按照既定的程序进行,做好相关记录。完整性、符合性、可追溯性,用三句话概括他们的关系:写我所做,做我所写,记我所做。实际质量管理过程中,却不能将这三个特性割裂开来对待。在实际操作中,完整性是质量管理的必备因素,充分条件,只有满足了完整性,才能确保符合性和可追溯性的实现;符合性是质量管理过程的主体,满足了符合性,才能体现了质量管理完整性的同时能确保质量管理的可追溯性;可追溯性是质量管理的必要条件,可追溯性的实现才能体现完整性和符合性的实现。三者之间密不可分,环环相扣。当三性中有一点不满足要求,其他两性也就不能满足要求,进一步说明质量管理失控。
在实际机载软件的需求和设计编码中,只有确保各项活动满足质量管理的三个基本特性――完整性、符合性、可追溯性,才能实现质量的过程方法管理,才能充分说明质量管理的完善有效,才能真正确保航空机载软件满足系统功能和适航要求,最终确保产品满足客户的要求。
五、结语
对于机载软件来说,实现其功能和运行已非难事,难点是如何使航空机载软件在满足安全的情况,实现成本降低,技术性能提高,以持续满足客户和适航要求,最终获得更高市场份额。相信通过满足质量管理的三性:从小处来看,可以培训企业所有员工的质量意识,在航空机载软件研发生命周期中更注重过程的输入和输出以及过程活动,降低了研发的成本;从大处来看,也使得缩小与国际先进航空研发企业的思想和流程上的差距,使企业有更多精力投入产品的技术研发和创新过程,以进一步缩小与其之间的技术差距。
笔者清楚,就单单质量管理本身来说,要想建立一套行之有效的质量过程管理方法,并实际应用于企业,为企业带来益处,并非一朝一夕,需要很长的路要走;笔者更清楚,质量管理,受制于产品研发技术,单单发展好质量管理流程,并不能带来根本性地变化。要想真正实现中国自主研发的民航产品进入市场,甚至走出国门,需要从技术、管理、人才等各个方面着手进行循序渐进的改善。套用屈原前辈的一句话“路漫漫其修远兮,吾将上下而求索”。
摘 要:论文针对气象水文软件开发中存在的问题,分析了国内外常用的软件质量控制方法以及它们所存在的问题,提出了将质量管理体系和CMMI相结合的质量控制方法,建立了一种新的软件质量控制模型,为全面提升气象水文软件的质量提供新的思路。
关键词:软件质量;质量管理体系;CMMI;GJB9001B-2009;质量控制模型
软件在装备系统的研发过程中起着至关重要的作用,软件产品的质量已逐步成为军队信息化建设的核心,软件质量关系到武器装备系统的生命,关系到军队信息化建设的整体水平,一旦软件失效,就可能导致整套装备系统的失效,甚至导致战争的失败。目前,软件在研发过程中存在诸多问题,导致软件的质量和可靠性远不如人意,特别是与硬件的可靠性相比,软件的可靠性一般要低一个数量级[1]。
1 软件开发中存在的问题
(1)装备系统研发软硬件管理不均衡,过分强调硬件。武器装备的研发是一个非常复杂的系统工程,涉及到技术和管理的方方面面,而且其各个因素又是相互关联和制约,不均衡的过分强调某几个方面都是不科学的。而现状是系统的研发过分强调硬件的重要性,软件只是被当做硬件的一个附件来对待,未作为产品列入装备系统计划和技术配套表。
(2)总体单位不抓配套单位分系统软件的质量,监控力度不够。在软件产品的开发中不遵循软件工程的要求,而且武器装备系统的总体单位只抓本单位开发的软件质量,对配套单位分系统软件的开发过程监控不力,对配套单位交付给总体单位的软件普遍不进行软件验收测试和软件验收评审。
(3)软件设计文档的编制不规范,不符合国军标要求。编制时缺少文档化的过程描述,尤其是缺少工作文档、风险管理文档和工作量统计文档,而且文档编制水平和质量参差不齐。特别严重的是大多数单位的文档是在软件编程完成后补写的,失去了以文档指导软件实现的作用。
(4)高层管理者对软件管理不够重视,软件配置管理不到位。管理要从高层做起,但是多数高层却忽略了管理的重要性,有的软件开发组未设配置管理员,有的单位对配置管理的概念(如对基线标识和配置控制等)模糊,对软件开发库、受控库的设置与管理不当,致使软件在出厂前基本不受控。
(5)对软件测试的概念和方法认识模糊,缺乏对过程和产品进行测试。软件开发测试人员和质量控制人员之间缺乏对对方工作的基本认知,双方难以沟通,阻碍了研发工作的顺利开展。部分单位对第三方测试存有疑虑:担心泄密,难以保护知识产权,或担心经费不足和增加工作量延误工程进度。
上述问题是装备研发中普遍存在的现象,亟待改进。国内外的经验说明,为了解决上述问题,最根本的一条是必须“树立软件产品的观念”和“用软件工程方法组织软件开发”[2],并按照软件工程方法的基本原则不断改进软件开发过程。现在国内比较常用的控制软件质量的方法是质量管理体系法,而国外比较流行的是运用CMMI(Capability Maturity Model Integration,即能力成熟度模型集成)来控制软件的质量。
2 软件质量控制的常用方法及缺陷
2.1 军用软件研制质量控制的一般做法及缺陷
我国一直采用质量管理体系中全面质量管理的原则来控制军用软件的质量。按照全面质量管理的观点,“产品质量是设计、生产出来的”,关注软件开发、研制的过程,通过强调过程模式,将组织内所有的工作定义为一个个明确的过程来进行质量保证和评估,使影响软件产品质量的因素在产品形成的全过程中始终处于受控状态,以此来提高其使用的可靠性、安全性,突出的把持续改进的过程作为提高质量管理体系水平的重要手段。
目前,军用软件研制质量控制的整套模型源于GJB9001B-2009,该国军标适用面广,可面向于硬件、软件、流程性材料和服务四大产品[3],主要强调的是硬件产品的质量控制,对军用软件的适用性稍弱,没有针对软件产品及其研发的特点展开说明,尤其是在型号的不断改进,装备状态的多次更改之后,对军用软件的配置管理等方面的更高层次的问题,缺乏行之有效的解决方法,在实施该标准时无法引起高层领导的重视,没有对质量提出更高的要求,忽略了该标准反复强调的“质量管理必须坚持持续进行质量改进”,导致研制单位无法拥有一套适用的质量管理体系。
2.2 国外软件研制质量控制的一般做法及缺陷
CMM(Capability Maturity Model for Software,即软件能力成熟度模型)是对组织软件过程能力的描述[4]。CMM 中最为核心的思想是:只有好的过程才能造就好的结果。它侧重于软件开发过程的管理及软件工程能力的改进与评估,是一种高效的管理标准,有助于最大程度地降低成本,提高产品的质量和用户满意度。CMMI是CMM模型的最新版本,它把软件开发视为一个过程,并根据这一原则对软件的研发和维护进行过程监管,以使其更加科学化、规范化。CMMI项目为军工界和政府部门提供了一个集成的产品集,其主要目的是消除不同模型之间的不一致和重复性,降低基于模型的改善成本。CMMI将以更加系统和一致的框架来指导组织改善软件过程,提高软件产品的研发、获取和维护能力。
CMMI是目前国际上最流行、最实用的一种软件质量控制模型,强调各个方面的均衡发展,注重基于模型的、循序渐进的过程改进,可以帮助软件企业有效地管理软件过程,但是CMMI也存在缺陷,CMMI本身是国外的体系,是基于法治的体系,而我国强调的是人治的氛围,这种文化性问题是CMMI能否适用于我军的关键;实施该体系时单位对于软件研发人员缺少必要的有关质量管理方面的培训,导致软件研制人员与质量管理人员难以沟通,阻碍了研发工作的进度;CMMI只强调关键过程域,无法保证软件产品能被成功的研制出来。
3 基于质量管理体系和CMMI的气象水文软件质量控制方法
3.1 质量管理体系与CMMI的共同性
质量管理体系与CMMI面向的都是组织和软件产品的质量问题,都是以现代质量管理理念为基础,充分体现了质量管理、质量保证、全面质量控制、全面质量检验等思想。它们都非常关注产品的质量,都以相同的质量原理为基础,都强调通过良好的过程来保证产品的质量,都在强调外部沟通的同时强调内部沟通,都以组织的领导者和管理者作为最关键的成功条件,都采用PCDA方法,都重视规范化、活动规程和必要的文档与记录。
3.2 质量管理体系与CMMI的差异性
作为质量管理的标准性文件,CMMI与GJB 9001B是有着明显的差别的。GJB 9001B是一个适用于各类产品的通用型标准,主要是针对制造业制定的,而CMMI是专门针对软件开发设计的,可以帮助软件企业有效地管理软件过程;GJB 9001B强调完整的组织体系,可以用来建立符合ISO9000管理的组织管理,而CMMI本身对管理体系没有明确要求,默认组织体系是有效的、健全的;GJB 9001B评估的目的是要认证组织是否建立了有效的质量管理体系,为此给出比较简明、科学、原则性的要求,评估出结论合格与否,而CMMI则用于评估组织的软件能力的改善,确定采购风险,或找出软件过程的强项和弱项,明确改进途径,为此给出良好软件过程的详细描述和能力提高的简明科学途径。
3.3 基于质量管理体系和CMMI的气象水文软件质量控制模型的建立
GJB 9001B鼓励在建立、实施质量管理体系以及改进其有效性时采用过程方法,通过满足顾客要求,增强顾客满意,而CMMI的本质是通过对软件研制过程中关键过程域的精确定义,来使软件研制从一个不确定的“黑箱”操作过程,变成一个各步骤可视的、可对偏差随时控制的“透明”操作过程。根据质量管理体系和CMMI的相关理念和技术要求设计出适用于气象水文软件的质量控制模型。
质量控制是一个循序渐进的过程,该模型将质量控制归纳成七个阶段:(1)明确准备目标、项目范围和资源需求,依据CMMI的相关标准对软件的现状进行评估,定义相应的目标和指导原则,为下一阶段准备好相应的评估资料;(2)根据客户的要求和技术指标制定软件的开发流程,该阶段表达了组织层上下同心、拟定目标和愿望的状态,这是对将来有一个共同思考的过程;(3)在新的开发流程下引入GJB 9001B质量管理体系的相关要求,对组织当前的状态进行判决,及时向组织传达发现的情况和问题,并根据GJB 9001B的要求,确定需要进一步改进的方向;(4)根据上述要求拟定软件管理流程,确定关键业务主题、各团队的角色和职责、需要进行的活动以及改进进度安排;(5)在此流程的基础上导入成熟的开发和管理理论及方法,并根据客户的要求建立相应的规则、度量方法、模板,作为改进和实施的基础;(6)按层次和相关要求编写各层次文件,根据国军标的要求编写相应的工作文档、风险管理文档以及工作量统计文档;(7)依据软件运行的实际情况改进流程,在这个过程中组织的所有人员确定需要改进的目标,分析现有的工作步骤、客户需求和存在的问题,给出改进方案,验证并更新实施流程,在提高技能、绩效的同时,也提高软件的质量。质量控制是一个总结、再学习和提高的过程,通过不断的改进建立下一轮工作的更高目标,制定组织进一步工作的计划,只有通过这种反复的评估改进才能不断提高软件质量。
4 结束语
在信息化高速发展的今天,要高质量、高效率地开发出复杂的大型软件系统已不再是单个质量控制方法所能完成的任务,只有通过融合多种方法的优点推出一种新的质量控制模型,才能保证气象水文软件产品的质量和可靠性。本模型旨在GJB 9001B的基础上结合CMMI的理念和技术要求,把GJB 9001B作为CMMI的保障,而把CMMI作为GJB 9001B的“使能器”,两者相互促进,全面提升气象水文软件的质量及服务能力,进而提高武器装备软件的质量。
摘 要
为了加强仿真训练软件开发过程中状态变化的控制,针对仿真训练软件质量管理中存在的问题,在软件开发过程中建立“三库”,并通过“三库”的有效管理实现配置管理的部分功能,达到提高仿真训练软件质量和质量管理水平的目的。
【关键词】仿真训练 软件 质量管理 三库
1 引言
我国信息化建设突飞猛进的发展,给我们的工作和生活带来很多便捷。无论是在学校、军营,还是机关、农村,信息化覆盖率越来越高,让人们真切感受到科技带来的独特魅力,人们可以足不出户就能体验到科技给予我们的全新的感受。科技让我们距离世界很近;科技让我们工作或生活更加轻松;科技让我们颠覆过去的思维及工作、生活方式。
信息化建设如火似荼地发展,同时也催生了仿真训练软件的数量越来越多、规模越来越大、结构越来越复杂,软件质量对仿真训练软件可靠性的制约也日益凸显。为了满足日益提高的仿真训练软件质量要求,确保软件质量和可靠性,做好软件质量管控工作具有十分重要的意义。
作为软件质量管理的核心内容,配置管理是可以控制软件变化的科学管理。软件配置管理的主要内容集中在软件的版本控制、变更控制和过程支持。其中,设立“三库”,即开发库、受控库、产品库,对软件技术状态变更和版本控制的管理更是其最主要、最核心的问题,也是配置管理的重点。在军用仿真训练软件开发过程中,通过对软件“三库”的有效管理来达到控制状态的变化和标识的情况,并严格履行软件产品的出入库规定,从而实现对软件的质量监督。
2 “三库”的含义
“三库”是指软件开发库、软件受控库和软件产品库。“三库”的建立是配置管理当中的一个重点内容,不仅可以对软件开发过程中软件状态的变化进行控制,还可以对软件配置项进行有效的标识,同时又可以避免复杂的配置管理技术给开发成本造成太大的影响。
GJB 5000A《军用软件能力成熟度模型》、GJB 5235《军用软件配置管理》和GJB5716-2006《军用软件开发库、受控库和产品库通用要求》都有对“三库”建设的相关要求,其中,GJB5716-2006中给出“三库”的定义分别是:
(1)软件开发库(software development library)是指在软件生存周期中,存放软件配置项的集合。
(2)软件受控库(software controlled library)是指在软件生存周期中,存放已通过测试或评审且作为阶段性产品的软件配置项的集合。
(3)软件产品库(software product library)是指在软件生存周期中,存放已定型(鉴定)且供交付、生产、检验验收的软件配置项的集合。
通俗一点的解释“三库”的含义是:
软件开发库就是在软件生存周期的某一个阶段期间,存放于该阶段软件开发工作有关的计算机可读信息和人工可读信息的库;在软件生存周期的某一个阶段结束时,开发库内的内容经过评审通过后,就可以进入到软件受控库中;在软件生存周期的组装与系统测试阶段结束后,形成的可以直接交付给用户的最终产品或可以在现场安装的软件就存放在产品库中。
3 仿真训练软件质量管理中存在的问题
目前,仿真训练软件的质量管理工作还没有采取有效的管理办法和措施,软件质量还远不能满足软件开发的要求,软件开发成本与进度计划难以准确估计,对软件产品质量的评价还缺乏标准和手段。归纳起来,军用仿真训练软件质量管理中存在的问题具体表现为以下4个方面:
3.1 软件项目质量管理意识不强
现阶段,大部分仿真训练软件开发研制单位质量管理意识不强,在软件开发过程中没有按照质量管理体系要求行之有效的管理和监督。在软件开发过程中,缺少质量保证大纲等质量保证文件和阶段性的评审制度,软件的质量保证工作基本上是由软件开发者自身完成的,而实践已经证明,采用这种方法开发的软件是无法保证软件的质量的。
3.2 缺乏软件技术状态管理和控制
在仿真训练软件开发过程中,软件的技术状态非常多,软件的一条语句或一个函数的修改都可能造成软件部分功能无法正常运行,甚至整个软件瘫痪。所以,一旦软件出现故障,由于没有对软件的技术状态实施管理和控制,很难快速准确的找出故障原因,严重的情况下,还会造成更大的损失,直接影响整个军用仿真训练软件的质量。
3.3 软件测试不够充分
大多数仿真训练软件开发单位没有设立独立的软件测试部门和专门的软件测试人员,而是在软件开发的各个阶段由开发人员采取自己设计、自己编程、自己测试、自己维护的方式来完成的。由于软件开发人员任务重,他们在测试上不可能花费很多时间和精力,所以很容易把软件测试环节变成只是走过场、讲形式,导致测试的作用和可信度大大降低,一些隐含的错误和缺陷被遗留到软件交付之后的运行阶段。
3.4 对软件文档的重视程度不够
软件文档是软件的一个重要组成部分,是保证软件质量的一个重要手段,它关系着整个软件的有效运行和维护。在军用仿真训练软件开发过程中,开发人员没有充分认识到文档在软件开发过程中的作用,所以导致开发人员对文档编制不感兴趣,编制不及时;软件文档内容不完整,与开发过程不一致,格式不规范;文档审核和管理不够严格,未经审批可随意更改文档内容等问题,最后造成软件的透明度低,软件可维护性和可移植性不好,给软件研制和维护带来很多困难和问题。
4 “三库”在仿真训练软件开发过程中的应用
在仿真训练软件的开发过程中,软件的技术状态是在不断变化的,软件在各个阶段的配置项内容是不相同的,软件的版本也是存在更新的情况。因此,对软件技术状态的管理和控制是保证军用仿真训练软件质量管理的关键。“三库”质量管理是软件质量保证的一个非常重要的手段,也是软件产品形成过程技术状态管理的核心任务。
4.1 建立“三库”
按照相应国军标的要求,在仿真训练软件生存周期中,要建立软件“三库”,通过对“三库”的集中管理,实现对软件开发过程中状态变化的控制和对软件配置项的正确有效的标识,以确保仿真训练软件产品的正确性、完整性、可控性、可追溯性。
4.1.1 开发库
从技术状态形成过程、有效控制和管理的角度看,在仿真训练软件完成详细设计阶段工作之后建立软件开发库。此时将未进行测试和评审的软件和软件相关设计文档等软件配置项存放到开发库中进行集中管理,并由软件开发项目组或分系统负责。
4.1.2 受控库
软件受控库反映的是软件研制开发过程的轨迹。在仿真训练软件形成过程初、中期等阶段建立软件受控库,对通过测试和评审,确认正确的软件版本、完整的软件文档材料,以及其它相关软件配置项,采用软件受控库管理,由系统总体负责管理。
4.1.3 产品库
在仿真训练软件研制开发的末期建立软件产品库,对通过综合测试(验收)的软件、完整的软件文档材料、软件生命周期更改的版本,以及开发研制该软件产品的相关的成套软件(包括开发环境和开发工具)集中控制管理,由研制单位质量管理部门负责。
4.2 软件开发库的管理
软件开发库建立在承担仿真训练软件开发任务的项目组,由项目组质量管理人员或分系统负责人(无分系统的由项目负责人)负责日常管理和维护。软件开发库中管理的内容包括软件开发、测试阶段对应的文档和“初始阶段”的软件。
4.2.1软件开发库入库的内容
(1)按照对应国军标要求,软件在开发过程中规定的所有系统的和阶段设计文档,包括:软件开发计划、软件技术规格书、软件需求规格说明书、接口需求规格说明书、概要设计说明、详细设计说明、接口设计文档、软件测试计划、软件测试说明、软件测试报告、软件配置管理计划等。
(2)软件开发过程中各阶段所产生的计算机软件部件、计算机软件单元及其源程序代码、目标代码和数据定义文档,软件开发过程中各阶段进行软件测试的测试用例和测试结果等。
4.2.2 软件开发库的控制要求
项目组首先根据开发软件的规模,将符合项目标识、版本等软件配置要求的软件配置项入库控制,在此基础上对开发库的每一项内容(配置项)进行标识,由专人负责记录开发库中每一个配置项的位置、标识和入库时间。如果有某个配置项需要进行修改,则需要按权限实施更改,并必须通过项目负责人的审批。在进行更改操作的同时还下需要填写《软件开发库更改记录表》以记录开发库中的有关更改信息,并保存更改前的软件或文档的标识和版本。出库控制应按规定的权限出库,记录有关出库的出库项、软件提取人和出库时间等信息。
4.3 软件受控库的管理
在仿真训练软件测试工作开始之前需要对开发库中的软件配置项进行确认工作,然后从中提取被测软件和相应文档进行测试。通过认可的测试或评审的软件配置项就可以转库到软件受控库。
4.3.1 软件受控库入库的内容
软件受控库入库的内容必须是通过测评或评审的软件配置项,以及是仿真训练软件开发单位或用户认可的内容。具体内容包括:可行性研究报告、项目开发计划、软件需求说明、概要设计说明、详细设计说明数据库设计说明、软件测试计划、软件测试分析报告、用户手册、操作手册、软件维护手册、项目总结报告、项目验收报告、质量要求文档(质量保证大纲、标准化大纲、可靠性和维修性保证大纲等)、软件(源程序、目标代码、编译成目标代码的详细步骤、可执行程序和写入可编程器件的程序等)、软件设计更改报告及审核文档,以及所有文档的电子版本。
4.3.2 受控库的控制要求
仿真训练软件的受控库控制要求要比开发库更为严格,受控库的管理控制由承研单位的质量管理部门负责,软件开发人员受控使用。
软件开发库中通过测评和审核的软件配置项必须转入到受控库进行管理,每次访问需按权限,并要通过项目负责人和质量管理部门负责人联合审批才可获得批准,同时还要记录访问人 、访问时间、访问项、访问批准人等信息。出库控制时,软件提取人的申请,项目负责人和质量管理部门负责人审批,并进行出库信息登记。更改控制时,软件开发人员先提出更改申请,质量管理部门向有关人员更改信息,并且组织评审,待更改内容通过评审后方可按要求办理出库,转入到开发库中进行更改;完成更改后按相关要求重新入库,并及时向有关人员更改信息。
4.4 产品库的管理
软件在通过综合测试或验收之后,其配置项应转入软件产品库进行管理。而其它项应纳入承研单位的档案管理。
4.4.1 产品库的内容
软件产品库入库内容应是已经完成了综合测试等待交付给用户运行或者是现场安装的最终的软件产品,具体包括可执行程序、系统配置文件、数据文件、安装文件以及电子文档和书面文档。
4.4.2 产品库的控制要求
产品库的管理控制直接由军用仿真训练软件承研单位的科研部负责。对软件产品库须按相关要求进行入库、访问、出库、更改、配置状态报告、配置审核等的控制。
产品软件版本必须与设计文件及其电子版同步归档,软件档案必须与其纸质软件文档相符。产品软件归档媒体一式两套,一套为基准盘封存保管,一套为工作盘提供利用。
5 “三库”应用的效果分析
在仿真训练软件的开发过程中应用“三库”,对软件的变化状态和有效的标识实施管理,使得软件的开发过程变得可控,杜绝了软件开发和使用的随意性,软件质量得到了保证。“三库”应用的效果具体表现为以下几个方面:
(1)在仿真训练软件开发过程中应用“三库”进行有效的标识,减少了项目开发因为版本错乱、标识不清等低级错误,导致整个软件产品质量下降,保证了软件的开发周期及阶段性取得的成果。
(2)在仿真训练软件的开发各个阶段中,软件和其它软件配置项不可避免会发生更改,通过“三库”的应用,强化对开发库、受控库和产品库更改的审批控制,使软件的所有的技术状态都处于可控的范围内。
(3)在仿真训练软件的开发中应用软件“三库”实施管理,不仅可以帮助项目管理人员和软件开发人员清晰、准确的把握软件开发的每一个阶段和流程,而且通过软件“三库”的管理还可以让软件开发人员发现并避免一些重复性、阶段性的错误,使软件开发人员能够开发出高质量的软件产品。
6 结束语
随着仿真训练软件的发展,软件的质量要求也随之提高,软件的质量管理工作就成为越来越重要的问题。本文研究了仿真训练软件质量管理中的“三库”概念和建设方法,并在软件开发过程引用“三库”实施管理类,从软件开发阶段开始提高软件质量,建立和维护军用仿真训练软件在软件生存周期中各个阶段产品(包括各个文档、程序及其数据等)的完整性,确保对仿真训练软件形成过程的质量实现可追溯性,使软件开发、技术状态管理和维护过程处于受控状态,最终提高仿真训练软件质量。
作者单位
海军潜艇学院 山东省青岛市 266042
[摘 要] 随着军队信息化的高速发展和广泛应用,军用软件在武器装备系统中的重要性日益突出,其质量已成为影响武器装备作战性能的关键因素。分析了我国军用软件质量管理的发展和现状,并从突出地位作用、加强理论研究、加快系统建设、提高建设水平四个方面对如何加强我国军用软件质量管理提出了思考与建议。
[关键词] 军用软件;质量管理
随着高新技术的发展和装备信息化程度的提高,软件在现代武器装备中所占的比重不断增加,在武器装备系统中的地位逐渐由硬件的配套产品上升为独立的产品,成为武器装备系统和自动化指挥系统的重要组成部分,武器系统功能的生成和发挥对软件的依赖性越来越强。军用软件的质量关系着装备系统功能的强弱和成败,直接影响甚至决定着武器装备的质量。
一、军用软件
军用软件(Military Software)是指用于保障军事装备及其配套系统正常工作,经正式立项研制并交付军方使用的特殊的专用软件产品。与常用软件相比,它实时性、时序性、精度性、安全可靠性要求更高,并具有嵌入式软件多、能适应各种恶劣军事应用环境的特点。
军用软件一般分为两类。一类是武器系统软件,包括为武器系统专门设计或专用的嵌入式软件,指挥、控制和通信软件;对武器系统及其完成军事任务进行保障的其他软件。另一类是自动化信息系统软件,主要是指执行与武器系统无关的系统使用和保障功能的软件。
二、我国军用软件质量管理的发展
同国外相比,我国军用软件质量管理起步较晚。1996年,原航天工业总公司颁发了《中国航天工业总公司软件质量管理规定》,明确规定了软件也是产品,必须和硬件一样纳入型号配套管理,列入产品配套表和技术配套表,实施产品管理。2000年3月,国防科工委颁布了《国防科工委关于加强国防科技工业质量工作问题的若干决定》,并于2001年9月颁布了《军工产品软件质量管理规定》。2002年,国防科工委专门组织软件调研组,对重点型号的软件承制单位进行了调研,并对加强软件质量与可靠性工作进行了现场指导。在2002年9月召开的国防科技工业质量工作会上指出,软件质量是当前比较薄弱的环节,应充分重视软件质量问题,积极借鉴国外软件质量管理方面的经验,加强国防科技工业内部各单位的交流,促进软件质量控制和可靠性工作。
我国军用软件质量管理基本上是以软件开发项目为中心,以软件工程化带动和推进软件质量管理,其具体方法如下:
1.依据软件工程原理,按照一定的软件开发方法学,确定适当的软件生存周期模型,分阶段实施了软件质量管理和控制。
2.型号软件纳入了产品配套表,对软件产品的研制进行了严格的质量管理。
3.根据软件的规模和安全关键性等级,对软件进行了分级分类管理。
4.落实型号研制人员的岗位职责,软件研制人员经培训合格后持证上岗。
5.制定并实施了大型项目的软件规范。
6.建立并完善了软件独立测试机构,提出并实施了软件仿真测试,加强了软件开发项目组内的软件测试力量,对A、B级软件开展了独立的确认测试。
7.为总结型号软件开发方面的教训,编写了型号软件故障启示录;为总结型号软件测试经验,编写了软件评测文集与案例,建立了测试实例库。
三、我国军用软件质量管理现状
随着军事装备体系化、复杂化、高技术化趋势逐渐显著,各类军用软件的使用日趋广泛,结构日益复杂,军用软件已不再是硬件的附属物,已经成为与硬件并列的、独立的技术状态管理项目。军用软件要求具有很高的可靠性、可维护性和安全性,以保证最大限度地发挥系统的整体作战效能。因此,军用软件开发中必须采用有效的手段和工具进行软件的质量保证活动,以支持开发人员在最短的时间内,用最小的费用开发高质量的软件,满足应用需求,同时减少维护费用。
但是,由于受多种因素的影响和制约,军用软件的质量和可靠性问题一直没有引起人们足够的重视。软件在开发、设计阶段缺乏严格的需求分析和评审;在调试、验收阶段,由于缺乏科学的测试手段也无法对软件进行必要的测试;在使用、维护阶段,不能严格按照软件配置进行管理,造成软件在生存周期中,存在着更改随意性大、质量难控制的问题。这些都不可避免地造成了软件的技术状态混乱,给用户的使用和维护工作带来了困难,影响了战斗力的提高。军用软件质量管理存在的一些不足如下:
(一)承制方尚未建立完善的软件质量保证体系
目前,虽然已经建立基本的军用软件质量体系标准,如GJB9001B-2009等,但是实施程度较差。在现阶段,军事科研软件的开发大多集中于军队直属单位中,大多是院校、科研所及相关部门。参与软件开发单位一般较多,但单位内部没有建立较为完善的软件质量保证体系。由于质量体系的不完善导致了软件开发过程缺乏行之有效的管理和监督,软件的质量保证工作基本上是由软件开发者自身完成的。
(二)军方尚未有效参与软件需求定义
软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。但当前的型号研制中,军用软件需求定义阶段缺少军方的有效参与,设计人员无法全面、准确地理解和定义装备的作战使用需求,同时对军用软件隐含的需求(如软件的可维护性)重视不够,导致在后续工作中软件修改、返工频繁,不但影响了软件研制进度,而且一些质量问题和缺陷也带进了后面阶段的工作中,软件质量难以保证。
(三)软件测试不够充分
目前,军用软件承制方多数没有建立专门的软件测试组,而是在软件开发的各阶段主要由开发人员采取自测和互测相结合的方式。由于软件开发人员任务重,他们在测试上不可能花费很多时间,容易走过场,致使测试的作用和可信度大大降低,一些隐含的错误和缺陷被遗留到软件产品交付投入运行阶段。
(四)文档在软件质量保证中的作用尚未引起足够的重视
软件文档是计算机软件产品不可缺少的一部分,它关系到系统能否有效运行、开发和维护,是保证软件质量的一个重要手段,它主要体现在文档本身的可追溯性和可改进性。但是,在实际工作中,文档的形成过程是一项艰苦、枯燥的劳动,人们常常忽视它,致使文档的编制和管理存在着许多亟待解决的问题。一是软件开发人员对文档编制不感兴趣,编制不及时;二是软件文档格式不规范,内容不完整,可读性差;三是文档审核、管理把关不严,未经许可随意更改的现象比较普遍。这些问题导致了软件透明度低、可维护性差。
四、加强我国军用软件质量管理的措施
(一)要突出军用软件质量管理地位作用
随着军用软件在作战、训练、战备、管理等军事领域的广泛应用,其地位和作用更加突出,必须充分认识到软件质量问题的严重性和紧迫性,努力提高军用软件的质量和管理水平。必须针对军用软件研制及使用保障过程中存在的种种不足,强化质量意识,加强质量管理制度建设,建立健全软件质量管理体系,不断提升质量管理能力。
(二)要加强军用软件质量管理的理论研究
军用软件在研制开发过程中,对质量管理理论具有明显的依赖性。针对目前对军用软件质量管理理论研究较少的现状,迫切需要加强相关领域的研究。
1.加强军用软件质量管理基础理论研究。军用软件质量管理基础理论主要包括基本概念和基本原理,军用软件质量管理的特点、要求和原则,以及面对当前软件开发和使用保障过程中遇到的新问题,提出解决的对策、措施和研究重点,以便系统地研究和解决。
2.加强军用软件质量管理基本规律研究。军用软件质量管理基本规律是进行质量管理活动的基本遵循和依据。应根据军用软件自身的特点和要求,借鉴质量管理活动的基本规律,从军用软件的需求分析、设计、开发、测试、定型与鉴定、质量监督、项目管理、验收、配置以及维护等不同活动的特点出发,来研究军用软件质量管理的基本规律。
3.加强军用软件质量管理方法手段研究。要紧贴军用软件质量管理的实际,区分不同活动的特殊要求,围绕军用软件质量形成的全过程,深入开展质量管理方法手段的研究。
(三)要加快军用软件质量管理体系建设
现代高技术武器大量采用计算机系统,军用软件为完成智能化的任务,也越来越复杂,外军已经把军用软件作为装备纳入了管理体系。我军新一代武器陆续装备,指挥自动化系统也初具规模,软件的成分大大增加。但军用软件在设计、开发、测试、维护、使用管理上还很薄弱。因此,针对军用软件的特殊性,建立系统化、正规化的质量管理体系十分重要。
1.建立军用软件质量管理部门。有必要在总部一级建立一个集中统一的软件管理部门,负责制定用以规范和指导军用软件发展的法规、制度和技术标准,在总体上规范和指导各军兵种的软件开发与采办;在各军兵种成立相应的部门,负责指导、规范本军兵种的软件开发与采办工作。
2.健全军用软件质量管理体系。在准确把握军用软件质量需求的基础上,研究如何加强组织体系建设,形成科学合理的质量管理体系,明确各层次、各部门的质量管理职责,提高质量管理的保障能力和水平。
3.健全军用软件质量管理的相关法规和技术标准。健全完善的法规和技术标准是军用软件质量管理的前提。为保证军用软件质量管理的顺利实施,必须加强顶层设计和体系结构的总体规划,建立满足军事需求的、统一的软件体系,结构和标准规范,解决好软件的发展同步、功能配套、兼容匹配。
(四)要提高军用软件质量管理建设水平
1.运用全寿命管理的思想提高质量。对军用软件从需求分析到新系统替代的整个生存周期过程中各阶段及各环节的活动,实施前后衔接、持续不断、首尾响应、协调统一的管理,明确每一个阶段、每一个部门的管理任务和目标。
2.用软件工程的原则与方法研制、开发、维护军用软件。军用软件系统复杂,软件度量、工作量估计、需求变化和风险管理难度大,开发进度和质量难以保证。运用软件工程的思想加强软件开发,有助于提高软件产品的质量和开发效率,减少维护的困难。
3.建立相应的规章制度,明确职责与职权,使软件质量管理工作规范化、标准化。软件开发时间周期长,参与人员、部门多,在整个生存周期内,软件的开发环境、运行环境都会发生变化。通过建立一套评估、控制和实施软件质量管理的机制,有利于实现软件质量管理的科学化、制度化和经常化。
【摘 要】随着现代信息技术的发展以及计算机软件开发应用的不断进步,在积极性软件质量管理中,基于过程方法的软件开发与生产质量管理等,已经逐渐成为现代信息化发展中,软件质量管理应用的标志性管理技术方法。基于过程的软件质量管理,对于软件的开发利用来讲具有高质量保证与高可信度的优势。本文主要通过对于基于过程的软件质量管理原理的分析论述,并结合信息化发展过程中软件质量管理的问题,对于基于过程的软件质量管理在信息化中的应用进行分析论述。以提高过程方法在软件开发设计与管理中的应用,推进现代信息化的发展。
【关键词】过程方法;软件质量管理;信息化;管理平台;设计;分析
在软件技术开发与软件设计应用中,最为关键并且重要的问题之一就是对于开发设计软件以及软件技术质量的保障与成本控制实现。近年来,随着软件技术与软件开发设计应用的不断发展进步,对于软件工程的研究发展也有了很大的进步,但是在软件技术质量保证与成本控制方面的问题一直没有很好的得到解决。基于过程的软件质量管理方法技术,就是在这样的发展背景与需求下,逐渐在信息化发展实际中进行应用实现的。基于过程的软件质量管理最早是由美国软件行业在上世纪80年代初期进行提出并应用的,它实际上就是将软件技术的改进发展与软件开发设计过程的改进之间同步进行与实现,通过对于软件技术开发与设计过程的控制,实现对于软件技术质量的管理控制,这样一来不仅对于软件技术和软件应用发展有着积极的作用,而且在一定程度上也推动了社会信息化的发展进步。
1.基于过程的软件质量管理与技术概述
1.1基于过程的软件质量管理含义分析
基于过程的软件质量管理通常也被称为是过程管理方法,对于软件质量的过程管理提出与实现,最早是由美国软件行业在上世纪80年代,以进入以过程为中心的软件技术以及软件产品的开发利用时代为标志。随着美国软件行业中以过程为中心的软件产品、技术的开发利用发展,基于过程的软件质量管理方法以及管理平台在实际开发应用中越来受到欢迎,并且基于过程的软件质量管理平台开发设计的相关要求准则等,也随之出现并发展起来。在对于基于过程的软件管理平台设计建立要求准则中,以美国CMM以及PSP、TSP管理平台的设计应用实现最具有代表性和意义。
通常情况下,对于基于过程的软件质量管理平台与方法中,过程一词多被解释为将输入方式转化为输出方式的一组相互关联或者是相互作用的活动。对于软件产品以及技术的设计实现以及管理过程,又被按照一定的规律关联分解为软件工程过程以及软件管理过程、软件支持过程等三大过程类型。其中,软件工程过程主要是指软件产品以及技术的开发、生产、设计实现过程,包含对于软件技术与产品的需求分析以及编码设计、系统测试等过程步骤;而软件管理过程主要是指对于软件工程的管理维护过程,包含对于软件产品、技术的开发、生产、设计应用等的管理以及维护实施等,比如对于软件开发项目的策划、跟踪监控以及质量保证管理过程等;最后,软件过程中的支持过程主要是指对于软件技术以及产品的开发、设计、生产利用进行支持的过程行为,包括对于软件产品与技术的评审以及培训、度量等过程。在软件工程开发设计以及应用管理过程中,建立相关系统平台,实现对于软件工程系统化与自动化管理控制实现,是在现代信息化发展情况下,进行软件质量管理的有效方法与途径措施。
1.2基于过程的软件质量管理技术概述
在应用过程管理方法,对于软件质量进行管理实现的实际应用过程中,主要的软件过程质量管理技术有CMM软件过程质量管理技术以及PSP、TSP软件过程质量管理技术等,此外,还包含ISO9000系列的软件过程质量管理应用技术,以及IEC15504要求标准下的软件过程质量管理技术。
其中,CMM、PSP以及TSP软件过程质量管理应用技术,是由一家软件工程研究机构研究提出的基于过程的软件质量管理系统模型平台。CMM软件过程质量管理系统模型平台主要是在对于CMMI系统模型结构与人力资源管理思想理念、以及软件开发生产技术、产品相互融合的情况下,最终形成一个完整的CMM管理系统与体系,实现对于软件质量管理过程中的人与技术、管理过程三个方面的管理控制实现。而ISO9000标准系列的软件过程质量管理技术一种由国际标准化研究组织研究提出的通过过程方法实现对于软件工程质量管理的技术方法,它在许多国家和地区的信息化发展中有广泛以及普遍的应用实现,尤其是在政府以及工业发展、信息技术研究领域的应用实现更为突出。
2.基于过程的软件质量管理在信息化中的应用分析
2.1信息化过程中的软件质量管理问题
随着社会信息化的不断发展,信息化发展过程中出现的矛盾问题也越来越多,比如信息化的建设发展各自为政、信息化重复建设和信息化建设成果垄断等问题,在信息化发展的过程中越来越突出。作为社会信息化建设与发展的重要基础和核心部分,软件的开发利用以及发展不仅对于社会信息化的建设发展有着重要的影响作用,更是对于国家生产力水平以及综合实力情况也有着很大的影响。
根据社会信息化发展与软件质量管理的情况来看,目前,在信息化发展过程中,软件质量的管理也存在着一定的问题,首先表现在对于软件质量管理的意识比较缺乏,软件质量管理的重视程度不够。其次,在社会信息化发展过程中,对于计算机软件产品的开发设计与利用过程中,过分重视对于软件技术产品以及项目的开发设计进度、数量等问题,而忽视对于软件产品质量以及软件开发设计过程的控制管理。再次,在进行软件技术以及产品的开发设计过程中,所运用的软件产品与技术的开发设计质量管理体系相对比较落后,并且对于同一个软件产品与技术的开发设计转包现象比较严重,通常存在有多个软件开发方,这对于软件质量的管理以及软件开发的发展进步都十分不利。最后,在进行软件质量管理过程中,缺乏有效的软件质量控制管理体系,也是信息化发展中软件开发设计与管理中的重要问题,如下图1所示。
2.2基于过程的软件质量管理在信息化中的应用
在社会信息化发展中,基于过程的软件质量管理方法,就是通过对于软件需求过程以及软件设计过程等的质量控制与管理实现,同时对于软件的编码以及测试、维护等,基于过程质量控制管理的方式,实现对于软件质量的控制管理实现。具体质量控制管理方式如上图2所示。
首先,在基于软件质量控制管理的软件需求过程的质量管理中,应注意从对于客户管理以及目标控制、需求范围的控制、需求筛选等方面,进行软件需求过程的质量控制与管理实现,保证软件技术与产品的质量。其次,对于软件设计过程的质量管理控制,主要就是根据软件需求分析情况,对于软件总体结构的设计过程与质量进行控制管理,以实现软件过程设计的目标。再次,对于软件编码过程中质量控制管理,主要是通过对于软件编码的过程进行规范,以及做好相应的软件编码代码审查、单元测试的控制与管理;在软件测试过程中,做好软件的单元测试以及集成测试、系统测试三个部分的测试,并对于测试过程进行控制管理,保证软件测试过程质量符合要求。最后,在进行软件产品以及技术的维护过程中,应注意针对不同的软件维护类别,对于软件技术与产品进行改进,以满足客户对于软件产品的需求。总之,基于过程的软件质量管理,就是要结合软件技术以及产品开发设计实现的过程,对于过程方法进行控制管理实施,从而实现对于软件产品的质量管理。
3.结束语
总之,质量管理是企业管理工作中的关键与重要内容部分。而基于过程的软件质量管理更是现代软件质量管理的重要趋势方向,进行方面的应用分析,具有很大的必要性与重要性意义。