任 芸 刘 雄 高雅慧
(驻一八五厂军事代表室,贵州 贵阳 550009)
随着科学技术的飞速发展,计算机系统越来越多地应用于武器装备,计算机资源已经成为武器的重要组成部分。伴随着计算机硬件的发展,计算机软件所起的作用也越来越大,现在不但能执行过去由专门硬件执行的功能,而且能执行一些专门硬件几乎无法执行的功能,软件已不再是硬件的附属物,已成为与硬件并列的、独立的技术状态管理项目。
计算机资源是指计算机硬件、软件、人员、文档、物资和服务的总和。
计算机硬件是指接受和储存计算机数据,对计算机数据执行有规则的操作序列或产生控制输出的装置,主要有中央处理器(CPU)、存储器、各种接口装置等。
计算机软件是能使计算机硬件完成计算机和控制功能的有关计算机指令和计算机数据定义的组合。软件包含有6个质量特性:即软件的功能性、可靠性、易使用性、效率、维护性和可移植性。
现代武器装备无不依赖于计算机及其软件,各种武器系统中使用的计算机担负着不同的任务,软件作为武器系统中的一个组成部分,驱动或控制着武器装备性能的发挥,起到了性能倍增器的作用,特别是新一代装备中,软件所占比例越来越高,所起作用越来越大,如:在航电系统功能中,第二代F-117飞机硬件实现占80%,而软件实现占20%,第三代F-16飞机硬件实现占60%,软件实现占40%,而到第四代F-22飞机硬件实现占20%,软件实现占80%。在我国,计算机技术的发展,特别是在武器装备中的应用相对落后,在大多数武器装备中,只是将软件作为硬件的一个附属部分,而不是作为一种产品。许多软件的开发和生产大都处于“三自一包”的手工过程,即自设计、自编码、自测试、自行包维护。软件质量低,风险大,保障难。产生软件问题的原因主要是随着软件功能的扩展,软件规模越来越大,越来越复杂,影响其质量的因素也越来越多,而软件技术和管理薄弱是根本原因,这将对武器装备发展和建设带来致命影响。例如:某型飞机首飞前航空电子系统在地面测试中测出的故障800个,其中软件故障600个,占75%;硬件故障127个,占16%;其他故障73个,占9%。因此,要充分认识软件问题的重要性。
武器装备软件开发过程包括5个阶段,主要特点如下:
主要特点是分析系统要求和使用环境,拟定软件任务书和明确软件验收方法,并确定软件关键程度等级等。
主要特点是确定软件功能、性能和接口要求,编写需求规格说明,制定软件可靠性、安全性设计准则,拟订软件的系统测试计划。
主要特点是进行软件的概要设计和详细设计,对关键、重要软件应进行可靠性、安全性分析和设计,并制定软件综合测试计划。
主要特点是按照设计要求和规范编写源程序,并进行程序的静态分析和单元测试、软件综合测试和软/硬件系统测试并完成软件使用说明的编制。
软件开发阶段应进行的测试工作如下:
代码走查
单元测试
软件集成测试
软/硬件系统测试
验收测试
主要特点是按验收要求对软件进行验收和审核,并组织软件产品向合同甲方移交。
大多数型号将软件作为硬件的一个附属部分,而没有将软件作为一个产品对待,软件没有考核指标,没有列入型号技术配套表,没有相应的人力和资源保证。
由于软件生产单位大多采用“手工作坊”式的开发方式,未能加强对软件开发过程的管理,使得软件出现故障后只能由开发者自己去维护,其他人员很难介入,有时由于软件开发人员的流动,使得接替的人员往往需要从头开始,费时费力,造成工作被动,使软件使用受到很大限制,有的甚至陷入瘫痪,严重影响科研工作的开展和部队使用维护。
美军对软件评审,一般由一个独立的和若干软件系统工程和技术专家组成评审小组对各项项目进行评审,并就技术和开发风险、费用、进度、设计、开发、项目管理程序和软件工程最好实践的应用情况写出报告,同时软件安全性必须符合国防部信息技术安全合格审定和认证程序。而目前,我军武器装备对软件(特别是嵌入式软件)的评审缺乏系统性和可操作性,因此评审力度不够。
在软件开发过程中未能有效建立严格的技术状态管理制度,造成由于多数软件开发单位对软件的更改标识、更改控制、更改检查等控制不严,使软件管理较混乱,使得产品的软件错误较多。
由于软件的测试工作量对于一般软件来说占总工作量的40~50%,通过测试可以确认软件产品是否达到了指标和可靠性要求,并了解软件实际水平。然而目前,软件的测试软件、测试工具缺乏,标准和规范还不太健全,绝大多数的软件检验都是与硬件一起进行,在软件验收中所谓的测试也总是对预先指定的几个用例进行测试,而不是对源程序及其实际执行所产生的执行结果进行检查分析。特别是将安全关键软件提交独立的第三方测试仍有相当的阻力,因此未能进行充分测试,但测试不充分的后果是严重的:a、会将软件的缺陷和错误带入到外场,延缓设计定型时间;b、甚至会对装备造成灾难性后果。
目前,多数军工企业,对软件没有象硬件那样建立严格的“三检”等检验制度,软件检验基本上由软件开发者自己完成,而实践证明仅仅依靠自检是不能保证软件质量的。因此交付部队使用的产品软件质量问题多,在部队使用中发现,有时一个误操作就可能引起死机等现象。
由于软件是一项复杂的知识密集型的产品,因此要实施软件工程,提高软件的透明度,加强软件的测试和质量控制,军代表在软件开发过程中实施的检查监控的主要内容如下。
(1)检查是否确定软件定性定量要求,是否可以验证;
(2)检查是否制定了完整的软件任务书;
(3)是否明确软件验收方法;
(4)评审软件需求规格说明;
(5)与开发方一起确定关键软件等,并对软件按关键、重要、一般软件三个级别实施分级管理。软件级别划分如下:
一般软件(Ⅰ级):不影响安全和任务完成。复杂性一般。
重要软件(Ⅱ级):不影响安全但影响任务完成。比较复杂。
关键软件(Ⅲ级):影响装备安全危及人员安全影响关键任务完成。非常复杂。
(1)是否建立了必要的、完整的软件文档;
(2)是否严格实施了软件配置管理;
(3)是否对软件进行了转阶段评审,包括软件需求评审,概要设计评审,详细设计评审,软/硬件系统测试评审和软件验收评审。
(1)软件验收测试检查;
(2)软件验收。
概括起来军代表对软件开发过程检查监督的关键为“抓两头,查中间”。
软件在武器装备中所起的作用越来越大,软件已不再是硬件的附属物,因此督促承制方将软件当作产品对待,建立软件考核指标,将软件列入型号技术配套表,并有相应的人力和资源进行保证。
通过加强企业软件研制生产质量水平的审核,促使承制方能充分认识到软件研制质量水平是衡量军工企业科研能力的重要标志之一,使企业能加强人才建设,创造良好的机制和环境,引进培养、留住、用好优秀软件人才,这也是全面提高软件水平的核心工作,同时军代表通过审核,也对承制方的软件研发能力做到心中有数。
为提高软件质量和可靠性,军代表必须督促承制方采取软件工程的方法开发软件,使软件生产工业化,即:使软件开发、运行、维护和引退整个过程规范化,这个过程应是可控的、可重复的以及可预测的。只有做到设计、生产、检验相互制约,增加软件的透明度,才能从根本上有效提高软件质量和可靠性。
提高软件质量和可靠性的一项重要措施就是开展软件通用化、系列化、模块化设计,提高模块的重复使用率。实行软件“三化”的关键就是督促承制方在软件开发的各个阶段严格执行标准规范,而且在产品的鉴定及定型时,要象考核硬件标准系数那样,把软件的标准化系数作为一项指标考核,只有这样才能有效提高软件的“三化”水平。
督促承制方在软件的开发过程中,应象硬件一样建立严格的设计评审制度,使之成为把好软件质量关的重要手段,为防止软件设计的各个阶段评审走过场,需要制定软件各阶段设计评审检查单,以便按检查单逐项评审,提高评审可操作性和有效性。
为保证产品质量,在软件开发过程中,建立严格的技术状态管理制度。软件的技术状态管理标识和确定系统中的配置项,记录并报告技术和更改要求,验证技术状态项目的完整性和正确性,严格的技术状态管理是保证软件质量和可靠性的重要措施之一。
软件测试是保证软件质量,提高软件可靠性的最主要活动之一,因此军代表要督促承制方加强软件测试,尤其是加强将软件提交给第三方进行充分测试。软件测试一般分为制订测试方案、制订测试计划、测试、编写测试报告四个阶段。承制方对软件的测试必须是有计划、有组织并明确任务、时间、人员、设备、经费、方法与工具等,并做好测试记录的备案,以保证能对被测试软件进行全面考核。
由于软件的重要性,对测试检验人员提出很高要求,必须具备较强的专业知识、计算机知识等,还应具备软件测试经验和能力。因此,军代表必须督促企业尽早培养软件的检测人员,在坚持完善自检的基础上,必须组织有效的“互检”,并积极创造条件组建软件专检队伍和机构,实行专检,积极贯彻软件“自检、互检、专检”三检制。同时软件测试人员要与设计人员一同参与软件开发的各个阶段。
总之随着高新技术的广泛应用,军工产品的科技含量越来越高,这就要求军代表必须具备很高的专业素质,才能适应未来军检验收的发展。在软件开发和测试方面,我们的人才队伍相对缺乏,所以要加快培养提高军代表专业水平,造就软件方面的高水平队伍,只有这样才能确保软件的研制开发质量,最终确保武器装备质量。