战争和防御系统中过时的遗留代码库会造成安全漏洞,并禁止引入以网络为中心的新技术。通过静态分析,这些系统可以进行改造,使其具有高完整性,使设备更具技术竞争力。
战争和防御的世界已经发生了变化。仅近10年来,排名最佳军队的主要因素就从仅仅拥有最大、最强大的战斗力转变为战场上人员和军事机器之间最好的沟通。这些军事机器不再像几十年前那样以硬件为中心;大多数使用嵌入式软件系统来执行基本功能。例如,目前部署在伊拉克和阿富汗的艾布拉姆斯M1坦克有一个计算机辅助瞄准系统,可以与热成像系统一起精确瞄准。
这些类型的嵌入式系统被设计为尽可能坚固和可靠,因为寿命取决于它们的有效性。这些系统是高度专业化的,一旦建成并部署到现场,通常意味着在设备的使用寿命内无需进一步改造即可使用。不幸的是,这样的设计理念没有考虑到随着技术的进步,这些系统最终需要发挥越来越大的作用,而安全性可能成为一个问题。
同样,在过去的几十年里,网络在军事设备中越来越多地发挥了越来越大的作用。对遗留系统进行现代化改造以利用依赖于软件的新网络功能已成为强制性要求。今天,坦克和其他车辆现在是一个更大的互连系统中的节点,不断共享信息。系统中的每个节点都可以与其网络中的其他节点(甚至其他网络中的节点)一起工作,以解决任何一个系统无法处理的问题。
软件驱动的系统,如包含移动通信(COTM)系统的防雷伏击保护(MRAP)车辆,依赖于软件架构,并且必须进行现代化改造才能以网络为中心。现代化是一个很好的策略,即使是可选的,因为从长远来看,这样做可以降低软件维护成本。一旦构建,遗留应用程序理论上应该永远存在,但它们很少这样做,因为日常维护最终会导致代码库恶化。维护旧代码非常昂贵(每年高达初始开发预算的 10%),因为它涉及修补漏洞和提高可靠性。这通常由拥有罕见正确技能的昂贵开发人员完成。相比之下,新代码要便宜得多。尽管对代码进行现代化改造的前期成本较高,但这样做通常更好,因为从长远来看,定期长期维护旧代码的成本更高。
遗留系统通常进行现代化改造(但由于成本原因没有完全被新单位取代),因为许多目前部署的军事系统至少还有十年的计划功能寿命。由于安全性和可靠性至关重要,因此必须在不影响先前质量或超出预算的情况下对软件进行现代化改造以包含所需的新功能。静态分析使此任务比其他任务更容易。
用于对旧代码进行现代化的静态分析
修改遗留代码以获得新功能或使其符合新标准不应轻易完成。由于遗留系统通常是关键任务,并且已经部署在现场,因此修订应在现有代码中引入最少的新编码缺陷。随着代码库变得越来越复杂,隔离和消除缺陷变得更加困难,因为有更多的变量可能会以不可预见的方式与其他缺陷交互并堆叠在上面。
虽然较旧的工具使用语法和基于样式的测试,但现代静态分析通过数据流分析与布尔满足性结合使用路径模拟。路径模拟的工作原理是模拟程序在编译并执行其代码库中的每个函数后将执行的操作。这允许增加对资源分配问题、指针管理不善、缓冲区和字符串使用不当以及污染数据处理的检测。布尔满足性将程序中的每个操作转换为布尔变量,并使用此数据来测试潜在的运行时问题,如整数溢出。这些方法产生的假阳性率低至 15%。
然而,要拯救的是静态分析,它可以帮助开发人员重构和重组遗留程序的代码库,以使其达到现代标准。静态分析揭示了在创建遗留项目时执行的步骤,以便开发人员可以了解程序的当前架构和初衷。此功能创新减轻了在尝试升级代码时检测资源分配问题、指针管理不善、缓冲区使用不当、字符串使用和受污染的数据处理等许多猜测。静态分析工具,例如Coverity提供的分析工具,也能够显示有关任何有问题的缺陷的信息,并显示它如何对整个程序产生不利影响。
与其他依赖软件的行业类似,国防不能允许其技术落后于时代。遗留代码的现代化是不可避免的,但高级静态分析提供了可靠的补救措施。
审核编辑:郭婷
-
嵌入式
+关注
关注
4600文章
16137浏览量
274527 -
移动通信
+关注
关注
10文章
2244浏览量
68897
发布评论请先 登录
相关推荐
评论