
这是在通读了一个详尽“总体工艺方案”后的思考,这个方案本身真不错,针对传统硬件生产、装调给出了细致约束和工艺基线,但之于软件生产特别是研制过程的集成调试没有触及,但软件相关又实在是相当之重要,所以有了以下思考——
以下试图通过全貌和关键点呈现,但比较遗憾的是本人非软件专业出身,对于软件理解不够深入,只能照猫画虎,一些说法可能不准确或是错误,但主旨相信各位能够理解,谬误之处还请批评指正。
————————————————
一个经常被提起的问题——
装备研制过程中,软件的装调可不可以纳入传统的工艺方案中去?
这貌似是一个问题,但在现代装备研制中已是通行的工程实践,尤其在航电、雷达、火控等软件密集型装备上,软硬协同已无法分割。
但要注意,不能简单“塞进去”,而要在理念和方法上升级传统工艺。
一、为什么必须纳入?
① 技术状态“一本账”要求:
军用标准(如GJB 3206B)要求对技术状态全追溯。若软件装调不在工艺文件中,造出的装备就成了“黑箱”,无法确认功能基线。
② 打通功能基线:
硬件装调后,装备还是“死”的。只有完成操作系统烧录、参数配置等软件装调,装备才具备设计规定的功能,这道工序决定了功能基线能否建立。
二、具体怎么操作?
软件与硬件的物理形态不同,工艺设计需覆盖其全流程:
1. 介质灌装与烧录工序
这类似硬件装配,是将软件固化到硬件的过程。
① 输入:空白的存储芯片或单板。
② 典型工步:工装连接、上电检查、软件烧录、校验比对。
③ 检验点:必须采用校验码比对,确保介质一致。
2. 系统配置与参数装订工序
这相当于硬件的“调试与校准”。
①内容:如注入惯导对准参数、发动机特性参数、敌我识别密钥等。
②工艺要求:要像设计专用工装一样,开发“参数装订专用软件”,并对操作员权限分级,防止偏离、「超差」、篡改。
3. 研配阶段的特殊处理
研制阶段软件迭代快,工艺管理要兼顾灵活与受控。
① 工艺文件管理:建议将工艺方法(如烧录步骤)与软件版本号分离。软件版本号不入工艺规程正文,由“研制任务书”动态指定,避免反复修改工艺文件。
② 配套表管理:在工艺文件中,必须把软件介质、烧录工具、License授权文件等,像螺丝、垫片一样列入“”配套明细表”/“装机明细表”。
三、常见的认知阻力与应对
1、“软件太灵活,没法编成固定工步”
分解来看,烧录、校验、参数注入等操作都是高度重复的,完全可以标准化。不同软件的差异在于参数,在于代码和架构的不同,不在步骤。
2、 “软件装调无损,不需检验”
这是严重误解。烧录数据翻转、参数输错都可能导致致命后果。必须设置强制检验点,如回读比对、人机界面核查。
总的来说,装备研制必须将软件装调纳入工艺方案,重点要管理好烧录检验、参数装订和版本追溯这三个核心环节,并适应研制阶段的动态调整。
四、案例演绎
以下以一套典型的「综合航电系统」为例,来具体说明如何将软件装调设计为正式的工艺规程。
这个案例的场景是:完成硬件总装后的航电系统,第一次上电,需要将飞控、导航、显控等各分系统的软件灌装并协同调试至可放飞状态(一般而言,这项工作会在分系统阶段在各分系统完成,此处以第一次上电之前的集中烧写为例)。
可以将整个软件装调设计为一份独立的工艺规程,命名为「某型航电系统软件灌装与联调工艺规程」,并把过程划分为四个阶段:
1、阶段一:灌装前准备与状态确认(硬件状态基线检查)
这是装调的基础,必须像硬件装配前点件一样严格。
工序名称:航电系统上电前状态检查
典型工步:
① 核对硬件构型/技术状态(实物产品确认):按「装机设备清单」检查各LRU(现场可更换单元)的件号与序号,确保硬件已通过上道检验。
② 检查接口完整性:目视确认总线连接器、射频电缆等已按图纸连接并打保险。
③上电前电阻检查:使用兆欧表测量电源输入端对地电阻,防止短路烧毁设备。
④ 关键检验点:记录所有LRU的序列号,这是本次装调的硬件基线。
2、阶段二:软件灌装与校验(将软件固化到硬件)
这是最核心的“软件装配”动作,工艺设计须防范烧录失败或版本用错。
工序名称:显控子系统软件灌装
工艺装备:地面维护终端(便携加固计算机)、专用烧录线缆、USB加密狗
工步分解:
① 介质与版本确认:在维护终端上,通过“版本管理工具”调取配套表指定的今日研制任务书规定的软件版本包。二人双岗核对文件名与校验码。
② 建立链接:用专用线缆连接维护终端与显控计算机维护口。
③ 擦除与写入:运行烧录脚本,先擦除存储区,再写入新映像文件。
④ 强制校验:工具自动回读并比对CRC32校验码。不做这一步不得进入下道工序。
⑤ 粘贴标识:在显控机箱指定位置粘贴本次写入的软件版次号标签。
3、阶段三:系统参数装订(注入任务数据与算法参数)
这些参数直接决定装备功能特性,是关键的调试工序。
工序名称:航电系统任务参数装订
人员要求:参数装订操作员、专检员须分别持有相应权限账户。
工步示例:
① 获取参数文件:从技术状态受控库中下载经审签的装机参数包。
② 加载惯导对准参数:通过维护终端命令,将本机惯导的零偏、标度因数等载入惯性测量单元。
③ 设定总线调度表:将系统综合调度表上传至任务管理计算机,使各分系统通信周期、相位与定义一致。
④ 关键检验点:装订完成后,必须在维护终端窗口逐项回读、屏幕截图并打印存档。
4、阶段四:功能联调与检验(软件总装后的联合调试)
这相当于硬件总装后的“试车”,检验各软件模块协同是否正确。
工序名称:航电系统全功能联调
工艺方法:按“功能联调测试大纲”执行,大纲作为本规程的引用文件。
典型检验内容:
① 总线监控:在监控终端上确认无错误帧,心跳信号连续。
② 画面一致性:检查前后舱显示器的关键飞行参数是否同步、无跳变。
③ 模式切换:在模拟器配合下,按步骤检查导航、进场、作战等模式的切换功能。
④ 故障注入测试:故意断开某传感器,检查显控系统的告警信息是否符合设计。
⑤ 检验点:全部功能合格后,打印“航电系统软件功能测试报告”,经专业总师和军代表签字后归档。
在配套表与通用工艺方面,建议这样考虑:
① 软件配套表
这份工艺规程需要的“零件”不再是螺钉,而是——
任务计算机启动软件、显控应用软件、参数装订工具、模块通信调度表等。每项软件都应像零件一样有唯一标识和版本号,依据研制任务书动态更新。
② 通用工艺规程
对于不同机型、不同状态,软件灌装和参数装订的原理是通用的。
建议将其制定成一份通用软件装调工艺规程,正文描述通用的“怎么灌”、“怎么校”、“风险点是什么”。不同装备只换用不同的“配套表”和“”任务书”即可,避免工艺文件冗余。
总的来说,把软件装调纳入工艺方案,就是要用硬件的“预置、装配、检验”思维,去规范软件的“烧录、配置、验证”过程,让无形的代码交付过程变得严格、可追溯。
五、如何把软件装调流程与 GJB 3206B《技术状态管理》 的要求具体结合起来
这其实就是把刚才工艺规程里产生的所有记录,变成符合标准的技术状态证据,确保审查时不出问题。
以下将结合 GJB 3206B 的四个核心支柱:标识、控制、记实、审核来展开:
1. 技术状态标识:赋予软件清晰的“身份证号”
这一步的核心,是把软件从“功能性描述”转化为可追溯、可装配的实体单元。
操作落地:
① 建立产品结构分解:在你的产品结构树里,必须将软件作为一个独立节点,与硬件LRU并列或作为其子项。
不推荐:任务管理计算机 → 只列硬件组件
符合要求:任务管理计算机 → 硬件模块 / 操作系统软件 / 航电应用软件V1.0
② 确定唯一标识符:每一份需灌装的软件,都要有独立的“件号”和“版本号”。
示例:显控应用软件,件号 SW-DISP-001,今日研配版本 REV-0621。
这个件号,就是在《软件配套明细表》里必须列出的关键字段,即软件本身的身份证。
而整个也可以以现在约束的版本号来执行,包括了软件代号和版本号。
2. 技术状态控制:将软件变更纳入工程更改流程
这是军代表审查的重点,要防止“程序员私自刷个新版本就上去飞”的情况。每次软件更新,都必须是受控的工程更改或偏离。
① 操作落地:软硬件联动更改,必须走完整的“工程更改建议-审批-通知单/偏离单”闭环。
② 场景:因为算法仿真结果不好,飞控软件从 REV-0620 升为 REV-0621。这个升级不能只在软件部门内部流转,必须发起工程更改单,描述清楚“改了什么、影响什么、是否影响硬件接口”。
③ 工艺联动:更改单批准后,它会驱动两张表更新——你这份航电工艺规程的软件配套明细表(版次从0620变为0621),以及相关的调试说明。这样就杜绝了“工艺文件还没改,机上已经刷了新软件”的情况。
3. 技术状态记实:形成可追溯的“数字档案”
这就是前面工艺规程设计里,那些“检验点”和“记录”产出物的最终作用——形成装备的技术状态档案,确保履历清楚。
核心证据链,建议至少包含三份不可更改的记录:
① 软件灌装日志:自动生成的电子记录,包含时间戳、操作员ID、目标LRU序列号、写入和回读的哈希校验码。这是证明“正确的软件被刷进了正确的硬件”的最有力证据。
② 参数装订确认单:前面提到的屏幕截图和打印文件,由操作员、专检员签字,证明“作战飞行程序、惯导参数”等按指令装订无误。
③ 功能配置审计记录:也就是「航电系统软件功能测试报告」。这份报告经总师和军代表签字后,就宣告了本阶段软件配置项已通过验证、正式固化,是转段评审的必要输入。
④ 技术状态审核:用功能/物理基线支撑节点审查
这样,每个研制节点的技术状态审查就能做到严丝合缝。
功能基线审查:早期需求阶段,审核你的软件研制任务书是否明确。
分配基线审查:方案阶段,审核各分系统软件的接口需求规格。
产品基线审查:也就是现在的装调与联调后。
审查时你要能拿出:
a受控的“软件灌装与联调工艺规程”
b完整签字的“软件功能测试报告”
c能追溯到每个LRU序列号的软件版次号清单
d所有相关的工程更改与偏差处理闭环证据
简单总结一下,用GJB 3206B的语言来描述,为软件装调设计的这份工艺规程,就是将“软件产品基线”从纸面落实到真实装备上的操作指令集。
它的核心作用,是确保“写出来的代码”与“装上飞机的软件”完全一致,并且整个交付过程可控、可追溯。
这样一来,在内部质量审核或军检时,你就能拿出一条从技术状态要求、到物理实施、再到功能验证的完整证据链了。
六、延伸和拓展——研制阶段软件集成测试
研制阶段软件集成测试的挑战在于——
目标是在一个高度不稳定的“零件”组合中,通过动态测试来暴露问题,而非像批产那样去“执行”一个固化的流程。 传统的“按章操作、合格放行”思路,在这里会失效。
需要将思维方式从“符合性工艺”升级到“探伤性工艺”。
以下是具体展开的要点:
〔一〕理解问题的根源:为什么多软件配置项集成到单机/系统容易出问题?
多个软件配置项装入同一台设备或单机(例如:一台航电计算机里同时运行着操作系统、平台中间件、飞控解算软件、余度管理软件),它们之间的协调问题通常表现为:
① 时序竞争:A软件还没写完共享内存,B软件已经去读了。
② 资源死锁:在极低概率的特定中断组合下,两个软件互相锁死了对方需要的信号量。
③ 状态机失配:飞控软件认为系统处于“地面维护”模式,而显控软件却切换到了“起飞准备”模式,状态机没有对齐。
④ 性能降级:在高负载下,一个低优先级的软件长时间占用CPU,导致高优先级的飞控解算超时。
在纯软件仿真环境下,硬件和操作系统的真实开销、中断抖动都模拟不准确,这些深层次问题往往测不出来,必须上真实或半实物环境。
〔二〕如何设计“暴露问题”的集成测试工艺?
这就需要设计专门的操作规程,去主动“攻击”这些集成薄弱点。
1. 工艺方法:分层渐进式集成
不要等所有软件都灌装完再测试,那样问题定位极难。工艺规程应规定从最小系统开始的集成路径。
工步1:裸机+操作系统固化测试
先只灌装操作系统内核,外接监测线缆。测试重点是中断响应、任务切换抖动和内存访问稳定性,暴露硬件驱动与操作系统底层的匹配问题。
工步2:框架+中间件集成
再灌装平台公共服务,如通信中间件。编写专门的工装测试软件调用所有API,以极限长度、频率收发数据,检查在高负载下是否有丢包、死锁。
工步3:应用软件逐项加载与“冲突测试”
这个阶段才将飞控、导航等应用软件逐个灌入。工艺文件应明确规定:每新加载一个配置项,必须完整重跑一遍之前已测过配置项的回归测试,检查新软件的加入是否破坏了原有的协调性。
2. 工艺装备:设计“监听探伤”工装
这相当于给设备做“心电图”,需要工艺规程明确规定测试工装的连接和数据采集要求。
① 物理层探伤:在工艺文件中规定,打开调试口的串口输出,通过专用工装监听软件模块间交互的控制流指令和心跳包,检查时序是否乱序。
② 性能探伤:强制要求连接硬件调试器,在任务调度切换点设置断点。工艺规程可像定义扭力扳手一样,定义每个航电周期内各软件配置项的最坏执行时间的超标阈值,并记录超限情况。
3. 工艺参数:设置能激发问题的测试工况
区别于批产测试“验证功能正常”,研制集成的测试用例要“怎么容易坏怎么来”,并作为正式工序固化。
① “暴力”数据流测试:在工艺文件中可以规定:“通过总线工装,以2倍于正常周期的频率向被测设备连续发送5000帧异常长度数据包,系统不得崩溃或死机”。
② 电源与时钟的边界测试:编写工序:“将供电电压在18V至32V之间来回扫频,斜率设定为X,要求飞控解算输出结果无误码”。
③ 长时间并发压力测试:规定强制进行48小时或更长的“烤机”,期间必须施加振动、高低温剖面,监控日志中是否有偶发性错误。
〔三〕如何管理这个阶段的“技术状态混乱”?
研制阶段软件迭代快,今天上午的版本和晚上可能就不一样。这期间的技术状态记实,核心是保持测试环境、被测对象、发现问题的严格可追溯。
操作:在工艺规程配套的“问题跟踪表”中,强制记录每次测试时所有软件配置项的版本号,甚至包括调试工具版本,构建完整的“故障现场”档案。
每日构建与冒烟测试:可以在工艺文件中,将“每日构建后自动进行冒烟测试”规定为一项日常工作。一旦冒烟测试不通过,立即中止当天正式测试并退回版本,防止多配置项版本混乱。
总结来说,研制阶段的软件集成调测工艺,是一套以“破坏性验证”为导向的操作规范。它的成功,在于用严密的工艺纪律,管理起一个探索性的过程,让无形的软件缺陷,在受控试验中暴露并解决。
〔四〕集成测试暴露出的软件问题,如何与传统的FRACAS(故障报告、分析和纠正措施系统)闭环流程相结合
这是确保研制过程质量的核心闭环,难点在于软件故障的“归零”与硬件有着本质不同。硬件的纠正措施可能是换一个电阻,而软件的纠正措施是更改代码、生成新版本,这又直接联动回我们之前讨论的技术状态控制。
以下是将软件集成测试问题纳入FRACAS的完整操作框架。
1、 准确启动FRACAS:什么样的软件问题算“故障”?
在集成测试阶段,只要有现象表明软件未按预期执行,就应立即启动FRACAS,不轻易放过任何蛛丝马迹。
常见且容易被忽视的启动点:
① 偶发性“一次过”现象:系统宕机一次后重启又正常了。切忌用“可能是接触不好”搪塞过去,必须启动故障报告。这类问题往往是深层次时序或资源竞争缺陷的雪泥鸿爪。
② 非预期响应:输入A,设计应输出B,实际输出C。这是明确的功能偏离,启动。
③ 性能边界超差:最大执行时间偶尔超过设计阈值2毫秒。虽未造成功能失效,但已触及设计裕度红线,必须启动分析,以防在高低温等极限条件下爆发。
④ 日志中的异常记录:操作系统或中间件打印出的“资源不足”、“重试超限”等告警日志。这些都是故障的早期表征,应当启动。
2、 故障报告:构建软件故障的完整“现场”
软件故障现场转瞬即逝,远比硬件损坏现场难保留。集成测试工艺必须强制规定故障发生时的取证要求,形成标准格式的《软件故障报告》。
报告中必须包含的关键信息,即故障现场“五要素”:
〔1〕精确的软硬件技术状态:这是软件归零的基础,也是最大难点。
记录所有相关软件配置项的精确版次号,包括:被测操作系统、中间件、应用软件,以及测试工装、仿真模型本身的版次。
记录硬件唯一标识:被测设备的序列号。
〔2〕详尽的运行工况:当时的供电电压、环境温度、振动量级,以及系统持续运行时间(很多问题在连续运行数十小时后才出现)。
〔3〕复现操作序列:导致故障的精确操作步骤,最好是可回放的激励脚本。
〔4〕固化后的“黑匣子”数据:强制要求抓取并附着以下电子数据作为报告的附件:
① 关键内存区域的数据转储。
② 操作系统任务调用栈信息。
③ 故障发生前后各一段时间内的总线通信记录。
〔5〕初步影响评估:操作员对故障现象的清晰描述,如“显控画面冻结,操纵无响应”。
3、 故障分析:定位到缺陷代码行的“根因分析”
这是软件归零的技术核心,FRACAS小组(须包含软件设计师、测试工艺师、系统工程师)共同分析。
分析路径与工具,应在工艺文件中引导使用:
〔1〕重放与回溯:在保持软硬件状态完全一致的环境下,使用“重放”工具复现故障。若无法复现,该故障不能关闭,必须提出并实施增强监控的补充测试方案。
〔2〕静态分析走查:针对涉事的软件配置项,组织同行专家进行代码走查。
重点检查:
① 共享数据保护是否遗漏。
② 中断嵌套是否可能导致死锁。
③逻辑分支是否覆盖了故障工况。
〔3〕故障树与“五个为什么”:构建以软件逻辑为顶事件的故障树,层层深挖。
例如:
问:为什么导航数据跳变?答:因为总线数据帧偶发性丢包。
问:为什么丢包?答:因为总线接收缓冲区在该特定时序下溢出。
问:为什么溢出?答:因为高优先级中断服务程序过长,导致接收中断被延迟响应超过容许时间。
最终定位:高优先级软件配置项的中断服务程序设计不符合实时性要求,需重构。
4、 纠正措施与归零:区分“软件产品”与“软件工程过程”
这是软件FRACAS与硬件最大的不同点。软件缺陷,往往既是代码编写错误,也暴露了开发过程管理的缺失。
纠正措施必须双管齐下,实现技术和管理的“双归零”:
〔1〕技术归零:更改代码,回归验证
修改代码:针对根因更改代码,生成新的受控版本。
回归测试:不仅要复测原故障用例,还必须执行我们之前定义的分层渐进式集成回归测试工艺,确保修改一个软件配置项后,没有破坏系统中其他配置项的功能。
归零评审:更改后,需组织专题评审,确认“定位准确、机理清楚、问题复现、措施有效、举一反三”,这五条要求缺一不可。
〔2〕管理归零:完善研制流程,举一反三
软件缺陷常暴露出开发流程的薄弱点,必须举一反三。
案例:若分析发现,问题是“需求规格未明确中断嵌套场景”,那么纠正措施就不仅是改代码。
必须补充:完善软件需求规格模板,增加“中断场景分析”必审项;同时,对所有在研的、存在中断嵌套的软件配置项,开展举一反三排查。
5、在研制节点有效关闭软件故障
只有当上述技术和管理双重纠正措施都已完成、相关证据都已提交,FRACAS报告才能在研制转段评审前正式关闭。
需归档的文件包至少包含:
“软件故障报告”
“软件故障分析报告”(含故障树、定位证据)
(前两者可以合并为技术归零报告)
“软件更改单”
“回归测试记录与报告”
“管理归零报告”(如适用)
这个完整的闭环,向审查方证明了:软件并非靠“烧写正确”就合格了,而是经过了“设计-测试-暴露问题-分析归零-回归验证”的严格工程锤炼,其集成质量是受控、可信的。
这样,我们就形成了一个完整的、从工艺设计到问题闭环管理的研制阶段软件质量控制解决方案。
七、结论
尽管传统的工艺方案和工艺专家对于软件相关部分不重视、不友好,但考虑到软件定义装备和软件复杂程度和代码量的急剧增加,有必要将软件装调、参数配置、集成测试与故障闭环处理等环节系统性地纳入工艺方案,建立起与硬件工艺同等严格、可追溯的软件工艺规程体系。
这意味着必须从理念上完成三个转变:
①从“软件是灵活的智力活动”转向“软件交付是可规范的工程作业”;
②从“重功能、轻过程”转向“流程受控、状态透明、缺陷归零”;
③从软硬件工艺“两张皮”转向深度融合。
只有这样,才能打通“代码—装备—战斗力”的完整链条,保证每一套交付装备的软件技术状态基线清晰、功能基线完整、质量全程受控,让无形的软件真正具备可制造、可检验、可追溯的工程属性,全面适应“软件定义装备”时代对工艺工程能力的根本要求。
20260609—0611于田村山下。


夜雨聆风