张彦君 王宇飞
总装驻常州某企业军代室
软件工程化是用工程的方法开发软件,即采用可定义、可量化、可再生产和管理的工程实践方法,实现软件产品的开发过程。软件工程化是系统化、规范化、数量化地进行装备软件开发和维护最为有效的途径,是对装备软件采取有组织的质量保证和全面质量管理的重要方法和手段,是提高软件质量和可靠性水平的必要保证。随着我军向实现机械化和信息化的目标跨越式地迈进,大量新型装备陆续开始研制或投入生产,提高装备软件质量重要性日益突出,积极推进软件工程化,将有效的解决当前装备软件质量管理工作中存在的问题,提高装备软件质量水平。
近年来,陆续颁布了一系列有关软件管理方面的国家军用标准和文件,这些标准和文件在一定程度上得到了贯彻和实施。然而,尽管部分科研生产单位按软件工程化的要求作了有益的探索,目前装备在研制和生产中软件质量水平有所提高,软件质量管理工作取得了一定进展,但在科研生产中存在的问题仍然很多:
表现在:管理工作未制度化,没有建立行之有效的软件项目负责制和分工协作机制,往往是个人大包大揽,个人能力决定了软件的质量;软件工作缺乏计划性,即使制订了项目计划,软件人员并不按计划行事;缺乏必要的配置管理,软件及其组成单元、文档的版本较为混乱,随意变动需求的现象时有发生。
这是由于软件开发的各个阶段没有开展制度化的评审活动,软件开发中没有进行规范化的软件测试。
一方面科研生产部门没有制定切合本单位实际的软件工程管理标准,使软件开发和管理工作在一定程度上无章可循;另一方面现有的标准由于可操作性不强在实际工作中往往不能得到有效贯彻。
如:管理者不能很好的按标准和规定行事,管理工作存在较大的随意性;在软件开发工作中,开发人员较少进行需求分析和设计等关键性的前期工作,一般更多的是关注软件的功能性要求,而忽略其它方面的要求。
体现在:软件人员水平参差不齐,项目人员的安排也不尽合理,没有根据项目的具体情况对人员进行培训;缺少必要的软件工程支撑工具,如建模工具、配置管理工具;软件在调试和使用中错误繁多,调试、维护工作量巨大,大量人力财力耗费在调试、维护活动中。
综上所述,装备软件的质量管理仍然是初步的,某些方面还是比较混乱的。我们要充分认识软件质量问题的重要性和严重性,大力加强对软件开发和生产的质量管理,积极推进软件工程化。
建立分工协作的软件工程化管理体系,制定软件工程化的管理文件,成立软件工程化组织,兼顾软件全寿命周期,即系统分析、设计开发、系统集成、测试验收、使用维护直至退役的全过程,将软件开发过程的分划为系统分析、需求分析、专题研究与试验、概要设计、详细设计、编码、单元集成、配置项集成和测试、系统联调和测试、使用和信息反馈等十个阶段,明确各阶段的工作内容以及与硬件开发阶段的对应关系,建立功能基线、分配基线和产品基线,建立项目管理、技术开发、测试评估、配置管理、阶段评审和产品维护六线合一的质量保证体系,进而规范软件的研制和生产过程,使软件在各阶段的工作有章可循。
软件配置管理是指对软件产品在软件生存期,即全寿命周期的各个阶段所产生的各种形式和各种版本的文档、程序及其数据的集合进行有效管理,以保证软件的正确性、唯一性、完整性、可追溯性和安全性。研制生产单位、部门和开发人员分别建立软件受产品、库控库和开发库,规定相应的出、入库制度和更改权限,对软件开发过程中的各个基线进行较好的控制,按软件配置管理规定和各软件配置项的软件开发计划对其进行配置管理,组织进行配置审核,以规范软件文档的保存和管理。
加强软件产品的技术状态管理是规范研制生产过程的关键,软件更改控制更是重要的一环。对一个简单语句作一个简单的修改,有时都可能遭致灾难性的结局。软件更改包括为了纠正研制生产过程中暴露出的错误而进行的改正性更改;为了适应外部环境变化而进行的适应性更改;为了改进原有软件性能而进行的完善性更改。对软件更改的控制应贯穿与软件生存期全过程。研制生产单位应明确规定软件受控库和产品库中软件更改的报告、审批、更改、测试、评审和入库程序,明确审批权限,并与软件配置管理制度相结合,对软件的更改实施严格的控制,确保产品在各阶段的基线,使软件的各种版本置于严格的配置管理之下。
软件评审就是对软件开发的各阶段实施工程化管理,明确和量化各阶段的转段标准,以确保软件质量。软件评审作为软件开发的基础工作,对于确定软件在全寿命周期内的质量和可靠性水平有着作用。研制生产单位应根据软件特点,详细规定对软件开发计划、系统和段设计文件、质量保证计划、需求分析、接口需求规格说明、软件设计、程序走查、部件测试和系统验收的评审内容和要求。只有严格和规范软件评审制度,才能对软件质量实施真正有效的管理。
软件测试是软件质量保证的关键步骤,软件测试是对需求规格说明、软件设计和编码的最终审核。软件测试的内容包括软件单元、部件、配置项、系统等测试,软件测试的工作量往往占软件开发总工作量的40%以上,测试的目的就是要在软件投入生产性运行之前,尽可能多地发现软件中的错误。因此,必须高度重视软件测试工作。应将软件测试工作明确纳入产品研制计划中,并结合硬件计划制定考核软件的测试计划,所有的测试都应追溯到用户需求。与此同时,还应根据软件测试生命周期,建立由测试计划、测试设计、定制个案直至测试执行评估全过程的具有缺陷跟踪和更改管理效能的测试管理体系,以提高软件质量和可靠性水平。
软件工程化的实现是一个从低级到高级不断渐进和反复迭代的过程。在一个企业,软件工程化体系能否真正运行的关键,就是要把软件工程化的方法、理论、工具、组织管理与本单位的组织管理、人员、制度、硬件开发和技术等结合起来,这是一件相当细致的工作。由于执行和实施软件工程化要求的过程,将直接影响到对软件的组织、管理、人员、技术等方面的变革,各个方面都将有一个长期的磨合过程。
军代表对装备软件质量监督及验收工作还处于起步发展阶段,要充分发挥军代表在软件质量管理中的作用,应注意把握以下三个方面:
当前,软件质量的重要性在越来越多的研制生产单位得到了高度重视,很多单位采取了建立软件文档管理制度、健全质量保证措施、加强评审和测试等手段以保证软件质量,但距软件工程化的要求还有较大差距,不少单位对软件工程化的认识还不够深入和全面,在研制生产过程中实际推行软件工程化的单位更少。军代表应积极督促研制生产单位推行软件工程化,实施软件工程化的组织管理、开发管理和质量管理,推广软件工程化的方法、规范、工具,使各项主要过程有法可依,有章可循,以提高装备软件质量水平和开发效率。
军代表对装备软件质量监督及验收工作,是把握软件在研制生产各阶段各过程中的重点环节,尤其是软件的评审、测试和验收三个环节,要加强重点监督:
首先,军代表应将软件开发计划、需求分析、软件设计、部件测试和系统验收、软件更改作为软件评审的重点,通过评审,对软件需求是否符合有关标准、规范的要求,是否完整、准确的表达了分配的需求,软件开发计划的可行性、资源保障情况、软件需求规格说明与软件开发计划之间是否一致、软件更改是否可行等重要问题得出结论,深入研究软件开发全过程的关键技术细节,有针对性地对软件质量开展监督;
其次,军代表应积极参与软件的各项测试工作,加强对软件在各阶段和过程中状态的监督,尽最大可能检测和消除隐藏在软件中的故障。加强测试方法研究,建立软件测试队伍,对软件质量进行分析评估;
第三,军代表应规范软件验收工作,编制详细的软件验收规范,合理确定验收的目的、项目、方法和评判标准,在对软件产品符合性和文档全面检查的基础上,进行功能和性能测试。
软件工程化条件下,如何开展软件质量监督和控制对军代表来说是个全新的课题。一方面,由于多种客观原因,软件工程化在军品研制和生产单位推行时间较短,军代表系统对此研究较少,目前就工程化条件下开展软件质量监督和控制工作,没有相关指导性、操作性很强的规范或细则;另一方面,虽然大多军代表都认识到加强软件质量管理和监督的重要性,但很多一线军代表对软件工程化的基本原理、概念和特点不甚了解,对软件工程化的目标、任务、过程、原则和方法就更不熟悉,这就很难真正深入到软件生存周期的各个阶段和过程中去,把握住关键环节,切实起到对软件的质量监督和管理作用。因此,必须加强对人才的培养,不仅掌握软件工程化的基本知识和基本概念,更要掌握软件的质量属性、质量要素。了解软件生存周期各个阶段和过程中各个环节软件错误发生的原因、发生的规律,要解决军代表做什么、为什么要做、什么时机做、如何做。要加强对工程化条件下软件质量形成规律、特点进行研究,加强对软件质量监督和管理方法研究和规律探索,及时总结、交流,并在此基础上尽快形成软件质量监督和控制的规范做法,用以指导军代表更加规范、有效地开展软件质量监督和控制工作,确保软件产品质量。