本文发表于《指挥信息系统与技术》2025年第1期
作者:杨胜蓝,邓家磊,黄太奇,吴姗姗
引用格式:杨胜蓝,邓家磊,黄太奇,等.美军软件工厂关键技术分析及启示[J].指挥信息系统与技术,2025,16(1):1-8.
摘要
美军软件工厂被视为美军数字化转型和现代化战略的重要组成部分。首先,介绍了美军软件工厂的发展历程和现状,并详细分析了军用软件工厂的核心使用模式和参考架构;其次,围绕提升软件生产效率这一核心目标,对军用软件工厂中关键技术开展分析,包括基础设施即代码、云原生应用开发、基于数字孪生的软件验证、全景化智能运维监控、软件资源分配和动态调度技术;最后,对军用软件工厂的发展趋势和启示做出总结,以期为未来我军软件工厂的建设发展提供重要的参考。
引言
在现代战争中,软件在现代军用装备体系中的比重日趋增加,在提升装备整体效能方面的作用日益凸显。在军事指挥的观察—判断—决策—行动(OODA)环中,指挥员通过软件获取装备状态和末端传感器数据,愈发依赖软件辅助决策,通过软件下达指令。可以说,软件决定了OODA环的效能,甚至出现了“软件定义战争”(Software Defined Warfare)概念。
现代作战体系愈发复杂,军事软件工程实践变得更具有挑战性,主要表现在以下3个方面:
1)军事业务应用系统架构具有复杂混合特性。a) 存在老旧成熟应用;b) 纵向存在多层架构、横向存在系统之系统,定制性较强、灵活性较弱;c) 存在新型特殊应用,依托于特有平台独立运行,较难管理。在复杂混合应用系统的开发、测试、交付和运维过程中,采取严格安全措施的同时,提升其持续交付能力,是军事领域软件工程实践中面临的关键挑战。
2)军事软件技术水平已落后于行业先进软件水平。随着云计算、大数据和人工智能等新技术不断涌现,以及软件开源运动,商业领域的数字化需求日益增长,推动了软件技术的快速创新和应用。但新兴技术在军事领域中的转移应用存在滞后性,而军事领域爆发出新技术在情报、侦察等领域中的使用需求,导致两者间存在矛盾。新技术的引入对现有军事软件工程实践提出新的挑战。
3)现代战争中,信息的获取、处理和分析需要在瞬时完成,软件需实时处理大量数据并保障即时情报;此外,随着战场环境的不断变化,软件需快速部署到新的平台,并更新以适应新的战术需求;同时,在战场环境中,软件必须具备高度的弹性和可靠性。因此保障交付系统的快速适应性,是未来软件工程实践面临的重要挑战。
为应对上述挑战,美国国防部将软件工厂概念应用于军事领域。我军用软件工厂的发展起步较晚,尚属于摸索阶段,亟需借鉴国外先进经验和做法。目前,关于美军软件工厂的文献较少,且缺乏对其核心技术的深入分析。本文旨在填补这一研究空白,通过对美国军用软件工厂的发展现状、使用模式和架构以及关键技术进行系统分析和总结,为我国军用软件工厂发展提供借鉴和指导。
1
美国军用软件工厂发展现状
1.1 软件工厂概念内涵
传统软件行业严重依赖软件开发人员的个人编码水平,存在软件生产效率低下、质量不稳定、开发周期长、成本高昂和维护困难等问题。为解决这些难题,美国R.W.Bemer提出一种软件开发的工业化概念框架——软件工厂(Software Factory),将软件开发过程视为一个高度工业化、可重复和可管理的生产过程,采用先进的工程化方法和工具,实现软件的快速、可靠和定制化生产。
软件工厂内封装了特定的业务和技术知识,帮助开发人员以一种高层次的抽象模式进行开发,通过适配、装配和配置框架化组件,开发人员能快速搭建一个典型架构的软件工程,仅需关注其核心业务功能。
1.2 美军软件工厂发展历程
在“软件定义战争”的概念下,军事能力发展与软件能力迭代紧密耦合。无论目标环境是云、端还是作战平台的传感器、嵌入式系统,软件的设计、实施和部署都会产生大量数据。这些数据经过标记、整理,供构建下一代军事系统的设计人员访问,设计人员从这些数据中学习模型、提取价值,并将模型集成到下一代军事系统。软件产生数据,数据提炼模型,模型重新集成至软件,从而形成闭环。这与软件的研发生产流程类似,美军软件工厂概念如图1所示。
图 1 美军软件工厂概念
美国国防部从2017年开始构建软件工厂生态系统,已初步建成空军、海军和陆军等军种软件工厂生态系统,在缩短产品交付时间、节约开发成本和提升作战效能等方面取得了显著成效。在顶层设计层面,美国国防部陆续发布了一系列战略计划,主要包括:2022年2月,美国国防部签署批准《国防部软件现代化战略》,战略中制定了“构建国防部软件工厂生态系统”的远期目标;2023年3月,美国国防部发布《国防部软件现代化实施计划》,明确了构建国防部软件工厂生态系统的4项具体任务。
在军种层面,美空军于2017年成立首个软件工厂“Kessel Run”实验室。目前,美空军已建立18家软件工厂,业务领域涉及空域感知、智慧控制和后勤保障等,通过如Platform One等体系服务商,为软件工厂提供通用服务和技术。美军软件工厂的数量已经达到近50家,软件工厂生态系统已初具规模。
1.3 美军现有软件工厂分析
为分析美军软件工厂现状,本节选取美军软件工厂典型案例,从软件工厂的目标、研制产品/项目、交付时间和关键功能等方面进行分析,案例分析如表 1所示。目前美军各军种的软件工厂还处在独立建设阶段,尚未形成整合效应,但各软件工厂具备共性的可衡量特征。
1)功能齐全性。从关键功能对比发现,各软件工厂均提供持续集成、持续交付、持续监控等方面的关键支撑功能,可见软件生产流水线的支撑功能越齐全,表明该软件生产流水线的自动化水平更高。
2)流程标准性。从软件研发模式对比发现,各软件工厂的研发模式均基于开发、安全和运维一体化(DevSecOps)开展,可见软件生产流水线中开发、测试、试用和生产过程中的各个环节较为规范,标准化程度越高,表明软件生产质量的可控性和可预测性越强。
3)场景适用性。从研制产品/项目对比发现,各软件工厂适用场景从业务领域分类,包括作战类、通信类、情报分析类和传感器类等有所不同。支撑的类型越多,说明软件工厂整合能力越强。
4)软件复用性。从基础平台能力对比发现,各软件工厂均提供基础设施即服务、共性平台中间件等复用能力,支撑软件快速开发或代码共享,可见软件在生产过程中重用比例较高。重用比例越高,说明软件工厂的组件化程度越高,生产效率越高。
5)交付敏捷性。从交付周期对比发现,各软件工厂的软件交付周期基本在3个月以内,可见软件响应需求能力很快。交付周期越快速,表明软件工厂的运营管理能力越强。
表1 美军软件工厂案例分析
2
军用软件工厂使用模式与架构分析
2.1 使用模式分析
军用软件工厂重新定义了军事领域的软件交付使用模式。军用软件工厂与传统软件交付使用模式对比如图 2所示。传统模式中,软件交付严重依赖于交付人员的技术水平,交付人员在生产环境中需完成软件安装配置和集成遗留系统2方面工作,其中,安装配置主要包括软件在硬件环境上的安装配置、软件在操作系统和三方库上的安装配置以及软件本身的安装配置;集成遗留系统主要包括与监控服务、传输服务、消息服务等的集成。由于软件所依赖的底层环境在不同交付环境下存在区别,因此难以通过脚本自动完成安装配置与集成。在软件初次部署后,运维人员经常会变更部署后的环境,如更新三方库、修改应用或系统配置等,这些变更难以提前校验,升级时软件容易故障。
相较于传统软件交付模式,软件工厂的流水线软件交付模式更为自动化,大幅提升了软件交付效率,主要有以下3个优点:
图 2 军用软件工厂与传统软件交付使用模式对比
1)软件整体交付。通过整体交付减少了软件与配置参数、环境之间的安装配置工作,降低了安装配置的错误风险;能够通过工具和脚本自动化完成软件交付,提升交付效率。
2)软件持续自动集成。软件代码在开发人员提交后自动的执行构建和测试,便于快速发现并修复软件错误,减少集成和合并代码时的冲突,提升开发效率。
3)软件持续自动部署。软件测试后将自动进入资源库。资源库作为交付仓库,能够记录所有软件变更的版本、配置参数、脚本等,并具备版本跟踪和回溯机制,支持软件的版本升级或回滚,提升软件交付的可靠性。
军用软件工厂软件生产流水线的核心是基于开发、安全和运维一体化理念,利用共用软件资产和自动化研发流水线,实现军用软件产品“工厂化、规模化”快速组装交付并持续改进能力。
2.2 参考架构分析
军用软件工厂是一个抽象概念,将军用软件系统项目的研制交付过程类比为工厂的生产过程,输入是敏捷需求,输出是可交付的软件产品集,军用软件工厂参考架构如图3所示。项目管理模块获取项目输入,并依据标准规范和标准工具来组织项目资源;敏捷需求来源于项目初始需求、用户反馈需求以及持续监控服务从实际部署环境采集的运维数据,并从数据中挖掘分析得到的用户改进问题;基础设施服务模块为软件产品的开发、测试和生产提供随取随用的基础计算存储环境;平台软件服务模块为软件产品的开发提供一套集成了军用平台软件中间件服务的基础开发环境,通过集成复用平台软件服务从而降低软件开发的复杂软件生产流水线工具集模块为软件开发、测试和生产的研发交付流程的自动化提供支撑,通过集成构建自动化、部署自动化和测试自动化等工具尽可能降低流程中人工执行的比例;安全防护模块为基础计算存储环境、软件研发流程和软件最终运营提供安全监测和审计,确保软件系统的安全受控;交付产品模块对交付的软件、基础设施脚本和文档进行配置管理。
图 3 军用软件工厂参考架构
3
军用软件工厂关键技术分析
本章将从软件运行环境搭建(基础设施即代码(IaC))、软件开发模式(云原生应用开发)、原型验证环境搭建(数字孪生)、软件反馈链路构建(全景化智能运维监控)和软件生产环境搭建(软件资源分配与动态调度)等方面对军用软件工厂的关键技术开展详细分析。
3.1 基础设施即代码
在军用软件研发过程中,存在软件开发环境、测试环境、预生产环境和准生产环境等。由于各环境中服务器存在配置漂移,经常发生相同代码在开发环境运行没有问题,而在预生产/生产环境中出现问题。随着云计算的发展,通过软件上云,使得软件运行环境基础设施的搭建流程自动化。通过IaC技术,支持用代码来配置和管理基础设施。IaC技术应用示意如图4所示。
基于IaC技术,用户能够使用简单的声明性语言将基础设施定义为代码脚本,并通过命令来部署和管理基于云的基础设施。通过运行该脚本,可以在不同环境中部署一个高度一致的基础设施堆栈。IaC技术主要包括以下3个方面:
1)服务开通。IaC工具接入云服务,获取命令式代码集,并执行配置文件调用云服务的API以获取所需的基础设施环境。该配置文件存储至版本控制系统中,以供后续对该环境的跟踪和分享。
2)服务器模板化。首先,将完全独立的服务器“快照”创建为映像,包括操作系统、软件、文件以及所有其他相关的详细信息;然后,使用IaC工具,在所有服务器上统一安装该映像。
3)服务器配置管理。通过IaC工具管理大量的远程服务器,支持在众多服务器上同步执行代码,从而管理服务器上的软件,如为多个软件分配流量等。IaC工具可以提供通用函数,以保证代码运行的一致性。
图 4 基础设施即代码技术应用示意
3.2 云原生应用开发
传统军用项目大多交付的是单体架构应用,一般部署于单台服务器。随着云计算技术的普及,应用开始部署在云端,若仅把单体架构应用迁移到云端虚拟机中,未开展云化重构,那么该应用仍难以享受云计算带来的高可用性、可扩展性和灵活性等能力。
云原生应用基于云计算能力,通过云服务提升其稳定性。云原生应用开发技术主要包括以下3个方面:
1)微服务架构。微服务运行在自己的进程中,服务间通信机制轻量,服务围绕业务能力构建并且能够独立部署,具备自治、隔离及弹性等特性。因此,微服务架构应用依赖一套基础平台,包括API服务网关、服务注册中心和服务代理等,使微服务在结构上实现“松耦合”,在功能上表现为统一整体。
2)容器编排与调度。容器提供一种隔离的执行环境,简化了微服务的部署过程。该执行环境能够独立地分配和限制其使用的CPU、内存等资源,使得系统精细控制和管理成为可能。通过容器编排与调度工具,能够在一个集群中自动化管理和调度容器实例。依据各节点的资源利用情况,进行容器的调度和分配。根据应用的负载情况进行负载均衡,避免某些节点负载过高而导致性能下降。
3)Serverless云服务。Serverless将主机管理、操作系统管理、资源分配、扩容甚至软件逻辑的全部组件都看作某种形式的服务,为软件提供了性能高度优化、抽象度更高的API,成为构建云原生应用的重要元素。通过搭建Serverless云服务,提供基于云函数的命令行开发工具,开发人员无需关注底层资源,即可联动云资源,完成函数的开发、部署与调试,还可以结合云上的前端服务、API网关和数据库等其他资源。
3.3 基于数字孪生的软件验证
在军用研发验证中,常见的软件测试手段涉及静态测试、黑盒测试和白盒测试等。通常这些测试手段均在模拟环境下开展,存在测试场景单一、效率低的缺点。近年来,基于数字孪生的软件验证方法得到高度关注。基于数字孪生的软件验证技术能够集成物理模型、传感器数据等数据在虚拟空间中实现实时映射,将软件的虚拟副本与实际软件环境进行精确匹配,以模拟和预测软件在实际运行中的行为。
以指挥控制软件装备为例,数字孪生验证系统主要包括实际系统、测试系统和虚拟测试平台3个部分,军用软件工厂数字孪生验证系统如图 5所示。测试系统为由软件工厂流水线自动部署的生产环境;实际系统为真实的战场环境,包括指挥控制系统、武器资源和传感器资源等;虚拟测试平台包括作战仿真平台、战场环境模型和武器装备模型等。通过建模仿真手段将复杂战场环境的全要素虚拟化重建,构建与真实战场环境精准映射的数字孪生体,支持仿真模型实时融合真实战场数据,完善自身仿真数据,实现战场环境的全生命周期仿真运行。
在运行过程中,首先,借助虚拟测试平台作战仿真平台生成测试的虚拟场景,并在作战仿真平台中建立多种虚拟传感器模型,将虚拟传感器探测到的态势数据注入在线数据融合优化模块;其次,在线数据融合优化模块接收实际系统的传感器探测数据,为测试系统注入经过融合优化后的仿真数据;最后,测试系统依据虚拟测试平台注入的仿真数据和实际系统注入的真实用户操作数据,进行系统运行和决策输出,输出结果将反馈至虚拟测试平台,并与真实系统输出的决策输出结果进行对比评估,从而判断测试系统相较于真实系统是否存在能力升级。
图 5 军用软件工厂数字孪生验证系统
3.4 全景化智能运维监控
传统军用项目实施过程中,运维监控一般针对特定场景和资源建设,如网络性能监控系统监控网络异常、IT资源监控系统监控服务器和网络设备等。在软件工厂模式下,传统的分散监控系统难以满足云化、微服务化监控运维需求,通过引入智能运维技术(AIOps),将离散、竖井式的监控系统关联打通,构建一致的全景化应用监控视图,提供精准的风险态势监控和定位决策支持,并及时将运行数据通过软件工厂的需求链路反馈至开发团队,促进软件的迭代升级。
军用软件智能运维系统从面向云、管与端环境的应用系统监控数据采集,海量异构运维数据存储检索,人工智能算法支撑的数据分析等方面提供能力支撑。
1)监控数据采集。面向应用全栈数据进行采集,提供代码链路监控探针、应用埋点SDK和网络嗅探器等不同类型的数据采集工具,所有监控数据通过统一数据采集管道对接服务端入库或直接由实时数据分析平台进行分析。
2)运维大数据湖。数据湖架构适合存储多源异构的海量数据,能够线性扩展地存储、检索各种类型的结构化、半结构化的监控数据,包括时间序列指标、文本日志、图数据、网络包和代码链路等。
3)监控数据智能分析。基于大数据分析平台,应用机器学习、人工智能算法,对运维监控数据进行深度挖掘,自动识别和分类各类数据模式,进而发现潜在的问题和故障,并帮助运维人员快速定位故障并提供解决方案,支撑对运行的应用进行异常检测、因果推理、趋势预测与关系发现等。
3.5 软件资源分配与动态调度
由于军事信息系统存在传统架构应用和新架构应用混合的特点,且在边端环境时存在资源受限和快速适变等情况,军用软件资源的分配与管控难以完全依赖新兴技术解决。通过引入软件资源分配与动态调度技术,自动化开展系统的部署方案规划和执行,并依据动态变化的外部资源环境和能力需求,动态调整部署方案。
软件系统的部署涉及通信网络、计算设施与软件应用等多种类型构成要素,要素之间具有复杂依赖关系和交互关系,导致系统运行环境的构建成为一个复杂且耗时的工作。为自动化实现系统运行环境的按需、快速开设,必须解决如何依据用户需求将计算资源、运行环境和软件资源等动态组合,以形成运行环境最优开设部署方案并自动执行的问题。
软件资源分配与动态调度技术原理如图 6所示,软件资源分配与动态调度技术具体包括如下3个方面:
1)软件资源部署特征元数据建模。军事信息系统的软件组成复杂,为使用户能够快速厘清软件资源的部署需求,需提供一种有效元数据描述模型标准,用于对软件进行规范化描述,以确保软件资源在部署和适变过程中可观可控。在软件工厂的流水线生产过程中,通过充分迭代测试能够对软件资源进行元数据建模。
2)计算存储资源的统一管理。设计基础管理服务,包括管理节点模块和代理节点模块。代理节点负责收集系统内设备的资源信息,并上报给管理节点,同时根据接收到的管理节点下发的部署任务来执行软件部署操作;管理节点汇总代理节点上报的空闲资源信息,会根据资源动态分配与调度算法来选择系统内的空闲资源将软件部署任务发送给相应的代理节点执行。
3)资源动态分配与调度算法。基于软件资源和计算存储资源特性的合理描述,能够将系统构建问题转化为数学优化问题。基于用户对应用的需求,从而自动匹配所需部署的应用服务全集,基于现有计算存储资源的部署平台和运行环境约束,选择合适的优化目标,如最大化资源利用率、最优化软件性能等,从而求解全集服务的部署方案。基于该软件部署优化问题,能够通过遗传算法、蚁群算法等启发式算法进行求解,为资源的动态分配和快速调整提供基础。
图 6 软件资源分配与动态调度技术原理
4
军用软件工厂发展趋势和启示
4.1发展趋势
目前美军软件工厂主要为各军种独立建设,尚未形成互用与整合的规模效应。未来美军将采用体系性的解决方案,建立统一的软件工厂生态系统。
1)协作化。为扩大各军种软件工厂的资源共享,实现跨项目、跨军种的统筹管理与利用,未来软件工厂将趋向协作化,开发人员、验证环境和软件构件等资源均能在不同软件工厂中流通和协同构建。
2)自动化。相较于工业界的数据驱动敏捷产品设计,在军用领域,需求获取的渠道较为单一,因此未来军用软件工厂将在软件代码的编写、测试,乃至软件需求的获取与验证等方面不断提升软件自动化水平。
3)韧性化。军用软件具有其特殊性,尤其是战术环境下资源有限、网络弹性,因此未来软件工厂将趋向于韧性化,在如何智能化地提升软件的安全性、稳定性和抗毁性等方面不断发展,以适应复杂多变的战场环境。
4.2 相关启示
美军通过一系列软件工厂的研制建设,打造了军用软件的产业化供应链,降低了对复杂软件系统供应链的管理成本,大幅提升了软件的交付效率,使得软件能够更快贴合用户需求反馈而升级变化。因此,军用软件工厂的发展理念和技术实施路径值得关注和学习,可为我国军事软件生产的模式转型提供参考价值。
1)平台支撑。在软件架构层面,尽可能减少新功能、新模块乃至新软件的开发代码量。在软件设计之初,使用基于某种模式的工厂模板来创建产品生产线,由生产线创建出不同的产品,并通过一定的规范将产品组装成为一个完整系统。具体来说,如美空军平台一号、美海军超越软件库等,在军内各业务领域打造经过安全认证且封装特定知识的组件库和体系结构框架,并用于产品复用和组装。
2)资源云化。为军内云、边和端系统提供一体化的基础设施资源,该资源能够被统一管理、调度、配置和定义。通过基础设施的资源云化,打破软件部署从采购设备开始的传统采办思路,而是为任意软件的快速部署提供所需的基础设施资源。更进一步,为云、边和端系统提供云化服务资源,软件部署时可根据需要灵活选择所需的服务资源并进行组合,进一步提升软件战备就绪度。
3)敏捷能力。在软件生产交付和迭代升级过程中,利用自动化流程敏捷地减少人为的失误和干扰。通过一系列工具、脚本和环境,编排组建软件生产流水线;通过高度自动化的单元测试、功能测试、集成测试和安全测试,消除软件在交付时存在的缺陷;通过持续测试与监控运营,评估软件运行过程中人员、平台与流程的合理性和有效性,加快软件的迭代升级。
5
结束语
本文深入分析了美军软件工厂的发展现状和关键技术。首先,介绍了软件工厂的概念内涵以及美军软件工厂的发展历程,揭示了它在军事领域的重要作用,通过对其使用模式和参考架构进行分析,探究其对于实现高效、灵活的软件开发至关重要的作用;其次,从基础设施即代码技术、云原生应用开发技术和数字孪生技术等方面对军用软件工厂的关键技术开展详细分析。这些技术的应用对于提高软件质量和缩短开发周期具有显著影响;最后,总结了军用软件工厂的发展趋势和启示,旨在为未来我军软件工厂的建设提供宝贵的参考和指导,增强我军在软件领域的竞争力和战略优势。
声明:本文来自防务快讯,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。