电子装备的研制程序,是以硬件的设计为主线而划分阶段的,现代电子装备大量地嵌入了软件开发,但文献大多是把软件和硬件研制按照独立的两个过程来描述的。本文根据现代电子装备的研制实际,把包含硬件和软件的过程以自然结合的方式加以描述,明确在电子装备研制的各阶段需要开展的软件活动。
0 引言
现代电子装备的研制中,始终贯穿了两个过程:即硬件研制和软件的开发。这两个过程其实是交织在一起,有些软件的设计活动与硬件的设计还是迭代进行的。但又基于软件设计与硬件设计各自不同的特性和规律,大多研制过程的程序文件是把软件和硬件研制按照独立的两个过程来描述或界定的。这样就带来一个问题,很多设计人员以及管理人员有时就不清楚在研制的各阶段中应该开展哪些软件的设计工作,或者某个软件开发过程,对应于装备研制过程的哪个阶段,以至于在研制计划的安排上,软件与硬件的设计进程不能很好地同步,造成时间上的延误。目前,还未见相关资料对此加以论述,所以,理清电子装备在研制各阶段的软件开发工作还是十分必要的。
1 论证阶段
论证阶段的工作是进行战术技术指标、总体技术方案的论证及研制经费、保障条件、研制周期的预测,主要进行技术、经济可行性研究。嵌入式软件是由于计算机技术的发展应运而生,软件是硬件功能的更为便捷高效的实现,所以,在论证阶段,只需要论证人员了解基于嵌入式CPU、DSP等处理芯片和软件的发展水平,并无实际具体的软件开发工作。
2 方案阶段
方案阶段的主要工作是进行系统方案设计、关键技术攻关和新部件、分系统的试制与试验,根据装备的特点和需要进行模型样机或原理性样机研制与试验。在此阶段,要按照软件工程化的要求,开展系统需求分析和设计,主要工作是按照GJB 2786A的相关要求分析系统对软件的需求,确定软件的实现和运行环境,对研制的软件项目进行定义,形成软件研制任务书。其具体工作是:
①通过获取软件所从属的系统(或产品)的有关资料,分析系统的要求及实现环境;分析硬件和软件的关系,进行可行性研究。②确定硬件环境和软件环境。分析硬件和软件的关系,定义硬件和软件之间的接口;③确定系统的功能和性能要求,明确标识关键性要求;④将系统的功能和性能要求分配到软件和硬件;⑤评估和确定软件项目的安全关键性等级;⑥确定对关键计算机资源和资源余量的要求。例如:处理器、时间、存储器、I/O通道等资源的约束。
若要进行原理样机的研制,则还需针对原理样机的需求,开展软件需求分析、软件设计和编码。
3 工程研制阶段
工程研制阶段的主要工作是根据批准的《研制任务书》进行武器装备的设计、试制、试验工作。在这个阶段软件的开发工作依次是:
3.1 软件需求分析 软件需求分析阶段的主要目的为每个计算机软件配置项(CSCI)分配一组完整的功能、性能要求和一组完整的接口要求,并编制《软件需求规格说明》和《接口需求规格说明》。主要工作内容有:
①根据《软件研制任务书》定义的系统要求,建立软件逻辑模型,自顶向下地把系统对软件的需求逐层分解;②分配软件的功能需求、性能需求、接口需求、操作需求、资源需求、确认测试需求、文档需求、可靠性需求、安全保密需求、质量需求等,确保所有软件需求分配到CSCI;③进行软件安全关键性分析,提出安全性关键CSCI清单;④进行故障模式分析,确定可靠性冗余设计需求;⑤对资源的需求进行分析;⑥编制《软件需求规格说明》和《接口需求规格说明》。
在软件需求分析中,软件的功能需求、性能需求、接口需求、操作需求等都对软件的运行环境和资源提出了需求,所以,软件需求分析须在《软件研制任务书》下达后即可进行,以便给硬件的设计提供依据。
3.2 软件设计 《软件需求规格说明》通过评审后,即可进入软件设计。其主要的工作有:
①将需求分析阶段建立的逻辑模型转化为能实现软件需求的实现模型;②进行CSCI体系结构设计。设计软件的总体层次结构,采用自顶向下的方法,把《软件需求规格说明》和《接口需求规格说明》的要求逐项分解到计算机软件配置项的计算机软件部件(CSC);③设计各CSC接口相关的数据结构(或数据库)、数据流和控制流;④进行安全性设计,使关键、重要部件符合软件安全性要求;⑤如果软件研制合同/研制任务书中对交付软件的编程语言有明确规定,则软件项目组应遵循其要求。否则应按照软件继承性、通用化和标准化的要求选取编程语言;⑥软件项目组应确定所遵循的软件编码标准;⑦针对资源的要求进行设计,包括运算能力、时间、存储、I/O通道、数据库等资源;⑧进行CSCI详细设计。将构成软件系统的各个软件部件(CSC)逐步细化,形成若干软件单元(CSU);⑨采用程序流程图或其它表示方法对各个软件单元进行过程描述,包括算法和数据结构;⑩设计各软件单元间的接口信息。
3.3 编码和单元测试 软件设计(含接口和数据库设计)说明通过了评审,即可进入编码和单元测试阶段。其主要的工作有:
①根据软件设计说明对各软件单元进行编码,确保软件代码正确实现了设计的逻辑并满足相关的约束和要求;②软件源代码的编写应遵循软件编码标准的要求;③对编码完成的软件单元进行编译,采用合适的调试技术查找和纠正其中的错误;④采用静态分析工具对软件所有单元的源代码进行静态分析,找出其中的缺陷、错误、违背编码标准之处,并加以分析和纠正;⑤按照GJB/Z 141《军用软件测试指南》的要求,对所有软件单元进行动态测试;⑥使用单元测试工具,编制测试用例、开发单元测试辅助程序;⑦按照软件文档编制与管理指南的格式要求编制《软件单元测试计划》、《软件单元测试说明》文档;⑧执行单元测试用例和辅助程序,填写单元测试记录单;⑨确认和纠正单元测试中发现的问题,并进行单元回归测试。
3.4 软件集成和部件测试阶段 软件单元测试达到测试要求,通过评审后,即可进入软件集成和部件测试阶段。其主要的工作有:
①采用增量式的集成方法,将软件单元逐步集成为软件部件、构件直至软件配置项;②按照GJB/Z 141《军用软件测试指南》的要求,对所有软件部件进行测试;③编制《软件部件测试计划》;④按测试计划建立部件集成测试环境,编写测试用例和测试辅助程序;⑤编制《软件部件测试说明》;⑥确认和纠正软件部件测试中发现的问题,对文档和代码进行必要的修改,并通过回归测试;⑦软件部件测试需求覆盖率和调用对覆盖率均应达到100%,未达到测试覆盖率指标的,应给出合理的说明。
3.5 软件配置项(CSCI)测试 软件部件测试报告通过了评审后即可进入软件配置项(CSCI)测试。软件配置项(CSCI)测试工作可以由研制单位软件测试专门机构完成,也可以由用户指定的第三方软件测评机构完成。其主要内容有:
①根据软件需求规格说明和软件设计说明文档,识别软件测试需求;②编写《软件配置项测试计划》和《软件配置项测试说明》;③建立软件配置项的测试环境;④按照软件研制任务书中规定的测试类别,对识别出来的每个测试项分别编制测试用例和测试辅助程序。
3.6 软件系统测试 软件配置项测试报告通过了评审后即可进入软件系统测试。由用户指定的第三方软件测评机构完成。其主要内容有:
①根据《软件研制任务书》、《软件需求规格说明》和《软件设计说明》文档,识别软件测试需求;②建立系统测试环境;③编写《系统测试计划》和《系统测试说明》;④按照《软件研制任务书》中规定的测试类别,对识别出来的每个测试项分别编制测试用例和测试辅助程序;⑤根据测试结果对设计文档和代码进行修改,并实施所有必需的回归测试。
软件单元测试和软件集成和部件测试,可在搭建的仿真环境中进行,但对性能方面的测试,最好在真实的目标环境中进行,这就要求,硬件的组件(模块)设计、组合或分系统设计在时间安排上与之相匹配。
软件配置项(CSCI)测试和软件系统测试,属合格性测试,按照软件工程的要求,严格地讲,应该在正样机鉴定之前进行。软件配置项测试可在承制单位内部的软件测试专门机构进行测试,如使用方有要求,需在由用户指定的第三方软件测评机构进行。软件系统测试,一般在由用户指定的第三方软件测评机构进行。
在实际工作中,由于时间、经费等方面原因,经过使用方和承制方协商达成共识,也可在正样机鉴定时不进行合格性测试,而在设计定型阶段由定委指定软件测评机构进行软件测评即可。
4 设计定型阶段
设计定型阶段软件工作主要是进行软件测评。软件测评,是通过软件测试,来评价软件是否满足研制要求。软件测评由定委指定的软件测评机构完成。软件测评和基地试验、部队试验同步进行。
5 结束语
电子装备的研制程序,是以传统的硬件研制过程为主线进行的,而现代电子装备,嵌入了软件的研制过程,这是一个有别于硬件研制模式、又分属于两个团队的研制过程,深入了解硬件研制和软件研制过程各阶段关联性,对于科学合理安排研制计划,有效管理研制进程,提高研制效率,都具有重要的作用。
作者:苏小应 等 来源:价值工程 2012年24期