军事和航空电子软件系统的开发人员可以做些什么来利用软件重用,同时确保软件尽可能无错误和安全?
软件在军事和航空航天工业中通过不同的程序使用和重用并不完全是国家安全机密。这是一种久经考验的软件开发方法。GAO 在 2004 年 3 月向美国参议院提交的报告估计,某些项目中软件的重用率高达 70%,这在成本节约和效率方面提供了重大机会。但是,迁移如此数量的软件并非没有风险,尤其是在用于安全或任务关键型软件应用程序时。因此,问题是:军事和航空电子软件系统的开发人员可以做些什么来利用软件重用,同时确保软件尽可能无错误和安全?
迁移软件以在新系统上使用并与新开发的代码相结合,对任务关键型系统提出了巨大的挑战。首先是当今软件系统的规模和范围。据估计,美国陆军的未来作战系统(FCS)将在最终产品中提供超过6000万行软件代码。最新商用喷气式飞机上的航空电子软件涉及数百万行代码;运行波音787的软件接近700万行代码,是777的三倍。要正确测试这种规模的软件项目(基本上要考虑无限数量的代码路径)并非易事,尤其是当设计用于任务和安全关键型上下文时。
除了这一迁移挑战之外,还有这样一个事实:即使代码被重用,并且在多年的现场操作后可能被认为是稳定的,但它通常在新的上下文或环境中运行。这提供了以前潜在的错误变成活动的关键错误的可能性,以前安全的编码实践变成了高风险的安全漏洞。这不是一个理论讨论。随着阿丽亚娜5号航天器的发射,欧洲航天局(ESA)发生了这个确切的问题,该航天器重用了其前身阿丽亚娜4号的代码。代码在旧飞船中安全运行,但执行上下文发生了变化,将阿丽亚娜4中的“理论”或潜在错误更改为导致阿丽亚娜5崩溃的关键错误。安全漏洞也是如此:多年前在非网络系统中的编码实践在部署在现代软件环境中时可能会成为极高风险的漏洞,其中系统在安全的任务关键型环境中联网。
软件风险为业内专业人士所熟知,民用航空航天软件行业受 DO-178B 法规的约束,这些法规管理软件开发和验证要求。这些类型的指南存在于许多行业中,在这些行业中,安全要求对于正在开发的软件至关重要。这些行业的软件开发专业人员面临的挑战是找到正确的工具和流程组合,以解决重用大量代码的独特挑战,同时能够扩展到任务关键型系统的规模和范围。
任务关键型软件开发的一个增长趋势是采用源代码分析 (SCA) 作为一种技术来增强(甚至取代)传统的源代码验证技术,例如无法扩展的同行代码审查。SCA 是一种 bug 检测技术,不需要测试用例,是完全自动化的,并允许开发人员在开发生命周期的早期检查其源代码,确保 bug 不会向下游传播,从而导致不必要的质量和效率问题。与 SCA 相关的底层技术称为静态分析,当前一代技术解决方案能够提供复杂、快速和准确的分析,定位和描述源代码中的弱点区域,包括内存和资源管理、程序数据管理、缓冲区溢出、未经验证的用户输入、易受攻击的编码实践和并发冲突,以及各种长期维护问题。
SCA不同于传统的动态分析技术,如单元测试或渗透测试,因为工作是在构建时仅使用相关程序或模块的源代码执行的。因此,报告的结果是从每个可能的执行路径的完整视图生成的,而不是从有限的、观察到的运行时行为的某些方面生成的。这在传统迁移环境中特别有价值,SCA 可以检查难以测试的领域,例如错误处理例程。SCA还将报告“潜在”问题,以便高级开发人员可以确保通过重用在运行时上下文中的更改不会产生新的错误源。当与现有的测试和软件验证技术相结合时,SCA 为源代码的大规模验证提供了一个可扩展、高效的解决方案。
随着软件复杂性的爆炸式增长及其关键任务性质的不断增加,软件测试和验证的未来在于持续的自动化。新形式的验证将扩展SCA等技术的深度和广度,并将它们与其他形式的软件测试相结合,以提供创建创新,全面的软件验证方法的技术。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !