Approaches for Software Verification of an Emergency Recovery System for Micro Air Vehicles
本文介绍了微型飞行器的竞争降落伞系统的开发和验证,特别是侧重于嵌入式软件的验证。我们首先介绍了包括系统级故障分析的整体解决方案,然后展示了我们如何最大限度地减少错误软件的影响。本文表明,仔细的抽象和过度近似,整个代码运行在微处理器上可以使用有界模型检验进行验证,这是一个有用的方法,资源受限的嵌入式系统。据我们所知,由此产生的紧急恢复系统是第一个通过形式化验证的紧急恢复系统,而且从操作的角度来看,它优于所有其他现有的解决方案(包括商业上可用的解决方案)。
2017-06-08 cs.SE
Compositional Verification of Evolving Software Product Lines
提出了一种新的软件产品线(SPL)设计验证方法。所提出的方法假设的需求和设计建模为有限状态机的可变性信息。在需求和设计级别的可变性信息在不同的抽象级别上以不同的方式表达。此外,所提出的方法支持SPL的验证,其中新的功能和可变性可以逐步增加。考虑到SPL的设计和要求,所提出的设计验证方法可确保设计级的每个产品在行为上符合要求级的产品。一致性程序是组合的,在这个意义上,由多个功能组成的整个SPL的验证减少到单个功能的验证。该方法已被实施,并在一个原型工具SPLEnD(SPL引擎设计验证)上的一对夫妇相当大的案例研究证明。
2012-12-18 cs.SE
From Verification to Herding: Exploiting Software's Sparsity of Influence
North Carolina State University(北卡罗来纳州立大学)
本文提出EZR方法,通过利用软件影响的稀疏性,以轻量采样替代重型求解器,在多个任务中实现高效测试
2026-03-11 cs.SE
BeSpaceD: Towards a Tool Framework and Methodology for the Specification and Verification of Spatial Behavior of Distributed Software Component Systems
在这份报告中,我们提出了一个框架的建模和检查行为的空间分布组件系统的工作。我们的框架的设计目标是能够在一个面向组件的,简单和直观的方式,自动分析和验证系统和集成的可能性与其他建模和验证工具的空间行为建模的能力。我们提出的例子和必要的验证步骤,以证明属性,如范围覆盖或组件和技术细节之间的冲突的情况下。
2014-04-14 cs.SE
Towards Practical Requirement Analysis and Verification: A Case Study on Software IP Components in Aerospace Embedded Systems
本文以中国空间技术研究院的五个真实航空航天嵌入式软件IP组件为案例,提出利用大语言模型自动将自然语言需求转换为时序逻辑规范,并结合三种验证技术实现形式化验证,从而降低对领域专家和人工的依赖。
2024-03-31 cs.SE
Analysing software failure using runtime verification and LTL
本文提出一种基于运行时验证的方法,在组件层面诊断四类软件错误,并通过mRUBIS仿真验证其在自修复系统中检测故障的有效性。
2024-02-15 cs.SE
When Code Becomes Abundant: Redefining Software Engineering Around Orchestration and Verification
Institute of Informatics, UFRGS(信息学研究所,南里奥格兰德联邦大学)
本文提出软件工程应从代码构建转向以意图表达、架构控制和验证为核心,重新定义软件工程的学科方向。
2026-02-04 cs.SE
Verification of Concurrent Engineering Software Using CSM Models
工程设计过程可能涉及可以同时执行的软件模块。并发模块很容易出现一些同步错误。本文讨论了此类工程软件的验证过程。我们提出了一种验证方法,需要几个步骤。首先,构造状态图模型,描述设计迭代和与设计者的交互。接着,将状态图模型转换为并发状态机(CSM)。在此基础上,对CSM模型进行了分析,以验证其正确性。在此阶段,必要时进行修改。在最后一个阶段,生成代码。支持我们方法的工具可以称为新的并发CASE工具。使用这些工具,可以创建工程软件,该工程软件被验证关于并发执行的正确性。
2017-04-20 cs.SE
Benchmarking of Java Verification Tools at the Software Verification Competition (SV-COMP)
通过基准测试对验证工具进行经验性评估是软件验证研究中常用的方法。软件验证竞赛(SV-COMP)旨在通过对C程序的全自动软件验证器的比较评估,每年在软件验证社区内实现基准测试的标准化和可重复性。在此成功的基础上,我们将介绍如何重用围绕SV-COMP开发的生态系统来对Java验证工具进行基准测试。我们提供了一个详细的描述的基准测试验证任务的规则,新的工具集成到SV-COMP的基准测试框架,并给出了一个基准测试运行在最先进的Java验证工具,JPF,SPF,JayHorn和JBMC的实验结果。
2019-03-04 cs.LO cs.SE
Klever: Verification Framework for Critical Industrial C Programs
针对大型关键工业 C 程序验证耗时且缺乏环境建模、多版本配置验证等支持的问题,本文提出 Klever 框架以降低自动验证工具的应用成本。
2023-09-28 cs.SE
On verification of software components
利用第三方软件组件开发新的系统成为当今许多组织中有些不利的方法。这种不情愿主要是由于缺乏支持来验证软件组件的质量属性,以避免与系统要求的潜在不匹配。本文提出了一种方法来克服这个问题,通过提供一个工具支持,检查组件的兼容性,由开发人员提供的规范。因此,可以检查组件的兼容性,开发人员可以在将组件集成到系统之前验证组件是否符合其质量属性。
2012-10-14 cs.SE
Framework and Methodology for Verification of a Complex Scientific Simulation Software, Flash-X
针对科学软件验证难、缺乏系统测试方法的问题,面向具备可组合组件的多领域社区仿真软件Flash-X,提出一种验证方法,平衡软件质量、开发者效率与社区科学目标,解决可组合性带来的代码覆盖率难题。
2023-08-30 cs.SE
Towards Formal Verification of a TPM Software Stack
本文基于Frama-C对开源TPM软件栈tpm2-tss开展形式化验证案例研究,针对链表和复杂数据结构带来的挑战提出解决方案,验证了代表性函数的功能性质与无运行时错误,并指出实现完整验证所需的工具改进。
2023-10-27 cs.SE
Software Verification with PDR: Implementation and Empirical Evaluation of the State of the Art
属性导向可达性(PDR)是一种基于SAT/SMT的可达性算法,它递增地构造归纳不变量。在成功地应用于硬件模型检验之后,提出了几种适用于软件模型检验的改进方法。我们贡献了一个可复制的和彻底的比较评估的最先进的:我们(1)实现了一个独立的PDR算法,并作为改进,基于PDR的k-induction的不变量生成器,(2)进行了实验研究的最大的公开可用的基准测试集的C验证任务,在其中,我们探索的有效性和效率的软件验证PDR。我们工作的主要贡献是通过提供一个精心设计的参考实现和现有技术的实验评估,为该领域正在进行的研究建立一个可重复的基线。
2020-02-24 cs.SE
Selene: Pioneering Automated Proof in Software Verification
本文介绍 Selene,这是第一个基于 seL4 微内核构建的项目级自动化证明基准,提供端到端证明生成框架和轻量级验证环境,并通过 GPT-3.5-turbo 和 GPT-4 等实验展示了LLM 在自动化证明生成领域的能力能力。
2024-06-05 cs.SE
A Survey of Challenges for Runtime Verification from Advanced Application Domains (Beyond Software)
可执行性验证是形式化方法的一个领域,它研究针对形式化规范的执行跟踪的动态分析。通常,运行时验证工作中的两个主要活动是根据规范创建监视器的过程,以及根据生成的监视器评估跟踪的算法。其他活动涉及系统的仪表化以生成跟踪以及被分析系统与监视器之间的通信。运行时验证中的大多数应用都集中在软件的动态分析上,尽管在其他计算设备和目标系统中有更多的潜在应用。在本文中,我们提出了一个集合的挑战,从具体的应用领域提取的运行时验证,重点是必须克服的困难,以解决这些具体的挑战。表征这些领域的计算模型需要在运行时验证中设计出超越当前最先进技术的新技术。
2018-11-16 cs.SE
Using Assurance Cases to Guide Verification and Validation of Research Software
本文通过主动脉分割软件案例,展示保证案例如何指导研究软件的验证与确认,强调证据收集及软件与用户责任区分的重要性。
2024-11-05 cs.SE
Verification of Distributed Artificial Intelligence Systems in Bioinformatics
软件是许多项目的重要推动者,否则这些项目将无法执行。这些项目包括太空探索,天气建模,基因组计划等。帮助这些项目的软件做它被期望做的事情是至关重要的。在软件工程的术语中,符合需求的软件,也就是做了预期要做的事情的软件被称为正确的。软件的正确性检查一直是软件工程领域的研究热点。软件应用领域的从业者通常不重视检查这种正确性。然而,随着软件系统变得越来越大,可能与由不同作者编写的分布式子系统相结合,这种验证变得更加重要。并发分布式系统由于其组件的执行速度不同而容易出现危险的错误,例如死锁、竞争条件或违反项目特定属性。本计画描述一种称为模型检验的静态分析方法,应用于生物资讯学过程的分散式系统验证。在它,我们评估的模型检验方法的效率,以验证组合过程的并发执行的步骤越来越多。我们表明,我们的实验结果符合分析推导的期望。我们还强调了静态分析在生物信息学领域中对组合过程的重要性。
2023-02-09 cs.SE
A Unit Proofing Framework for Code-level Verification: A Research Agenda
针对代码级验证工具难以扩展到大型软件的问题,通过分析AWS的单元证明实践,提出一个单元证明框架的研究议程,旨在提供方法与工具支持工程师高效应用单元证明,从而及早发现代码级缺陷。
2025-04-30 cs.SE
SCENARIOTCHECK: A Checklist-based Reading Technique for the Verification of IoT Scenarios
物联网上的软件系统已经将世界带入了一场新的工业革命,带来了新的功能和关注点,例如自主性,持续的设备连接以及系统,用户和事物之间的交互。然而,由于其特定的功能,构建这些类型的系统仍然是一个有问题的活动。经验研究表明,缺乏技术来支持物联网软件系统的构建,其中应该创建不同的软件工件以确保其质量。因此,软件检查已经成为一种替代的基于证据的方法,以支持在软件开发周期中产生的工件的质量保证。然而,没有适用于物联网软件系统的检查技术的知识。因此,本研究提出了SCENARIOTSTUDIO,这是一种用于物联网场景验证的基于检查表的读取技术。通过实验研究对该清单进行了评价。这项研究表明,该技术在成本效益、效率和物联网软件系统开发效率方面具有良好的效果。
2021-07-28 cs.SE
Development and Verification of a Flight Stack for a High-Altitude Glider in Ada/SPARK 2014
SPARK 2014是一种现代程序设计语言,也是一种用于开发和验证高完整性软件的最新工具集。在本文中,我们探讨了其最新版本的能力和局限性的背景下,建立一个高海拔无人驾驶滑翔机的飞行堆栈。为此,我们特意在实现过程中尽早并持续地应用静态分析,以使验证有可能指导软件设计。在这个过程中,我们已经确定了SPARK中软件设计和验证的几个限制和陷阱,我们给出了解决方法和保护措施来避免它们。最后,我们给出了设计建议,已被证明是有效的验证,并总结了我们的经验,这种新的语言。
2017-06-08 cs.SE
Proceedings Seventh Conference on Systems Software Verification
本卷包含2012年11月28日至30日在悉尼举行的第七届系统软件验证会议(SSV 2012)上接受的论文。SSV研讨会和会议系列的目的是汇集来自学术界和工业界的研究人员和开发人员,他们面临着真正的软件和真正的问题,目标是找到真正的,适用的解决方案。
2012-11-26 cs.LO cs.SE
Refinement type contracts for verification of scientific investigative software
我们的科学知识越来越多地建立在软件输出上。定义数据分析管道和计算模型的用户代码对于自然科学和社会科学的研究是必不可少的,但很少有人知道如何确保其正确性。这种代码的结构和用于构建它的开发过程限制了传统测试方法的实用性。软件验证的形式化方法在确保代码正确性方面取得了巨大的成功,但通常需要比自然科学和社会科学更专业的培训,开发时间和资金。在这里,我们提出了一个Python库,它使用轻量级的形式化方法来提供正确性保证,而不需要专门的知识或大量的时间投资。我们的包提供了使用细化类型的函数入口和出口条件契约的运行时验证。它允许检查合同中的超属性,并提供自动测试用例生成来补充在线检查。我们共同开发了我们的工具与一个中型($\approx$ 3000磅)软件包,它模拟决策的认知神经科学。除了帮助我们在开发周期的早期定位小错误之外,我们的工具还能够定位四个使用传统测试方法可能很难找到的错误。它还能够发现用户代码中不包含契约或细化类型注释的bug。这表明形式化方法可以用来验证科学软件的正确性,这是很难测试的主流方法。
2019-09-01 cs.SE
From Design Contracts to Component Requirements Verification
在复杂机载系统的开发和验证过程中,各种语言和开发环境用于系统层次结构的不同级别。因此,可能需要手动步骤来转换这些不同环境之间的需求。本文提出了一种工具支持的出口技术,翻译高层次的需求,从软件体系结构建模环境到观察员的要求,可用于验证的软件组件环境。这允许有效地验证组件设计是否符合其高级要求。它还提供了一个自动化的工具链,支持从系统需求到低级软件需求的形式化验证,这与航空电子系统的认证指南是一致的。该技术的有效性进行了评估,并证明了医疗输液泵和飞机车轮制动系统。
2016-04-22 cs.SE
Software is infrastructure: failures, successes, costs, and the case for formal verification
Université Paris Cité(巴黎西岱大学);University of Malta(马耳他大学);University of Southern Denmark(南丹麦大学);King’s College London(伦敦国王学院)
本文探讨了软件在现代社会中的重要性及质量缺陷带来的成本,主张通过形式验证和程序分析来提升软件可靠性。
2026-01-29 cs.CY cs.SE
Formal Verification, Engineering and Business Value
如何将模型检验和静态程序分析等自动化验证技术应用于数百万行嵌入式C/C++代码?如何将这种技术包装成软件开发人员和工程师可以使用的方式,他们可能没有形式化验证的背景?以及如何说服企业经理实际支付这样的软件?这项工作解决了其中一些问题。基于我们自己开发和发布Goanna源代码分析器的经验,我们解释了模型检验,静态分析和SMT解决的底层技术,涉及创建工业证明工具的步骤。
2013-01-01 cs.SE
Incremental Bounded Model Checking for Embedded Software (extended version)
程序分析在嵌入式系统开发中处于主流的边缘。基于有界模型检验的自动化验证工具在行为需求的形式化验证、发现运行时错误和自动化测试用例生成等方面有着广泛的应用。现有的嵌入式软件的工业工具使用现成的有界模型迭代,并应用它来验证程序与越来越多的解绕。这种方法不必要地浪费时间重复已经完成的工作,并且无法利用增量SAT求解的能力。本文报告了软件模型检查器CBMC的扩展,以支持增量有界模型检验和它的成功集成与工业嵌入式软件验证工具BTC EmbeddedTester。我们提出了一个广泛的评估大型工业嵌入式程序,这表明,增量有界模型检验削减运行时间的一个数量级相比,标准的非增量方法,使应用程序的形式化验证大型和复杂的嵌入式软件。
2014-09-20 cs.SE
Circuit-Based Program Verification: Sequential Circuits as an Intermediate Representation for Verifying C Programs
LMU Munich(慕尼黑大学);National Taiwan University(台湾大学);University of Freiburg(弗赖堡大学)
本文提出CPV框架,将C程序转时序电路并调用硬件模型检查器,在16000+任务基准上验证,其性能与成熟软件验证器相当且可解决其他工具无法处理的任务。
2026-08-10 cs.SE
Formal Modelling and Verification of Software Defined Network
在云计算中,软件定义网络(SDN)以其在网络配置、提高网络性能和网络监控等方面的优势越来越受到关注。SDN通过允许网络系统的集中控制来解决传统网络中的静态架构的问题。SDN包含集中式网络智能模块,其将转发分组的过程(数据平面)与分组路由过程(控制平面)分离。SDN中数据的安全传输需要保证SDN的正确性。选择模型检查来验证SDN网络。计算树逻辑(CTL)和线性时态逻辑(LTL)用作表示SDN属性的规范。然后形式化地定义了完整的SDN结构及其Kripke结构。最后,针对SDN Kripke模型分析了时间特性,以确保SDN的性质是正确的。
2020-04-09 cs.SE
umd-verification: Automation of Software Validation for the EGI federated e-Infrastructure
在EGI e-Infrastructure中支持e-Science需要广泛而可靠的软件,用于高级计算用途,部署在大约300个欧洲和全球数据中心。统一中间件分发(UMD)和云中间件分发(CMD)是为EGI电子基础设施消费提供软件的渠道。软件按照软件供应过程(SWPP)进行编译、确认和分发,其中质量标准(QC)定义设定了EGI验收的最低质量要求。目前UMD和CMD发行版中存在的软件组件越来越多,阻碍了传统的基于手动的验证机制的应用,从而推动了自动化解决方案的采用。本文介绍了umd验证,一个开源的工具,强制执行的QC要求,在一个自动化的方式为科学处置的软件产品的持续验证的履行。UMD验证工具已成功集成到SWPP管道中,并逐步支持UMD和CMD存储库中产品的全面验证。虽然支持新产品的成本取决于基础设施即代码解决方案的可用性,以接管部署和高测试覆盖率,但已经集成的产品所获得的结果是有希望的,因为产品验证所投入的时间已经大大减少。此外,自动化的采用为流程的可靠性带来了好处,例如消除了与人为相关的错误或先前测试功能的回归风险。
2018-07-30 cs.SE
Predicting Rankings of Software Verification Competitions
Paderborn University(帕德博恩大学)
软件验证竞赛,如年度SV-COMP,评估软件验证工具的有效性和效率。通常情况下,竞争的结果是一个(可能是特定类别的)排名的工具。对于许多应用,例如构建组合求解器,期望预先了解验证工具在给定验证任务上的(相对)性能,即,在实际运行任务上的所有工具之前。在本文中,我们提出了一个机器学习的方法来预测排名的工具验证任务。该方法建立在所谓的标签排名算法的基础上,我们补充了适当的内核,为验证任务提供了相似性度量。我们的内核采用图形表示的软件源代码,混合元素的控制流和程序依赖图与抽象语法树。使用SV-COMP的数据集,我们证明了我们的秩预测技术,以及推广,并实现了相当高的预测精度。特别是,我们的方法优于Demyanova等人最近提出的基于特征的方法(当应用于排名预测时)。
2017-03-02 cs.LG cs.SE
Lessons Learned From Microkernel Verification -- Specification is the New Bottleneck
软件验证工具近年来变得更加强大。甚至大型复杂系统的验证也是可行的,如L4.verified和Verisoft XT项目所示。尽管如此,大型软件系统的功能验证是罕见的-原因超出了大规模的验证工作所需的大小。在本文中,我们报告的经验教训,验证大型软件系统的基础上获得的经验,在Verisoft XT项目的微核验证。我们讨论了一些问题,阻碍广泛引入形式化验证在软件生命周期过程。
2012-11-27 cs.LO cs.SE
A System for Deduction-based Formal Verification of Workflow-oriented Software Models
研究了基于演绎方法的面向工作流软件模型的形式化验证。模型的行为的形式正确性被认为是。人工建立逻辑规范,这被认为是一组时态逻辑公式,似乎是一个没有经验的用户在应用演绎方法时的重大障碍。提出了一种基于演绎的面向工作流模型验证系统及其体系结构。推理过程基于语义表法,与传统的推理策略相比具有一定的优势。提出了一种自动生成逻辑规格说明的算法。生成过程基于BPMN的预定义工作流模式,BPMN是业务流程建模的标准和主导符号。该方法的主要思想是考虑模式,定义在时序逻辑方面,作为一种(逻辑)原语,使模型的转换构成一个逻辑规范的时序逻辑公式。自动化的生成过程是至关重要的,为弥合之间的差距的演绎推理的直观性和困难的实际应用的情况下,当逻辑规范是手动建立。这种方法已经在某种程度上支持了面向工作流模型的基于演绎的形式化验证,并有望增强我们对它的理解。
2014-12-31 cs.SE
Cooperative Verification via Collective Invariant Generation
由于新的验证方法的发展和支持技术(如SMT解决方案)的加速,软件验证最近取得了巨大的进展。为了使软件验证工具跟上这些进步,工具开发人员不断将新设计的方法集成到他们的工具中,几乎完全是通过在他们自己的框架内重新实现方法。虽然这允许方法的概念性重用,但它需要为每一项新技术提供新的实现。在本文中,我们采用合作验证,以避免重新实现,并使使用新的工具作为黑盒组件在验证。具体而言,合作是用于软件验证的核心成分是不变式生成。找到一个合适的循环不变量是验证运行成功的关键。我们的框架名为CoVerCIG允许主验证工具委托的任务不变生成一个或几个专门的助手不变生成器。他们的结果,然后利用内的主验证器的验证运行,特别是允许交叉检查的有效性不变。我们使用SV-COMP 2020中的一些基准测试,在一个具有两个主节点和三个不同的不变生成器的实例上对我们的框架进行了实验评估。实验表明,CoVerCIG的使用可以在不增加资源使用的情况下,增加正确验证任务的数量
2020-08-11 cs.SE
Software Verification for Weak Memory via Program Transformation
尽管多处理器实现弱内存模型,验证方法往往假设顺序一致性(SC),因此可能会错过错误,由于弱内存。我们提出了一个健全的改造方案进行验证,使SC工具进行验证w.r.t.记忆力差我们提出了各种各样的模型(从x86/TSO到Power/ARM)和各种各样的验证工具的实验,量化了转换的额外成本,并强调了我们可以大幅降低它的情况。
2012-07-30 cs.LO cs.SE
DARVIZ: Deep Abstract Representation, Visualization, and Verification of Deep Learning Models
传统的软件工程编程范式大多是面向对象或过程的,由确定性算法驱动。随着深度学习和认知科学的出现,数据驱动编程的趋势正在出现,这在软件工程社区中创造了编程范式的转变。可视化和解释当前大规模数据驱动的软件开发的执行是具有挑战性的。此外,对于深度学习开发,有许多库采用多种程序设计语言,如TensorFlow(Python)、CAFFE(C++)、Theano(Python)、Torch(Lua)和Deeplearning4j(Java),这推动了对跨库互操作性的巨大需求。
2017-08-16 cs.SE
SMT-Based Bounded Model Checking for Embedded ANSI-C Software
命题有界模型检验已成功地应用于嵌入式软件的验证,但受到命题公式大小增加和翻译过程中结构丢失的限制。这些限制可以通过在比命题逻辑更丰富的理论中编码字级信息并使用SMT求解器来生成验证条件来减少。在这里,我们调查不同的SMT求解器的应用程序的验证嵌入式软件编写的ANSI-C。我们扩展了以前基于SMT的有界模型检查器的编码,为有限变量、位向量操作、数组、结构、联合和指针提供更准确的支持。我们将CVC 3、Boolector和Z3求解器与CBMC前端集成,并使用标准软件模型检验基准和电信、控制系统和医疗设备的典型嵌入式应用对其进行评估。实验表明,我们的方法可以分析较大的问题,并大大减少验证时间。
2009-07-13 cs.SE
From Model Checking to Runtime Verification and Back
我们描述了一种新的方法,适应现有的软件模型检查器进行精确的运行时验证。允许被测软件与更广泛的环境(包括文件系统和网络)进行通信。对模型检查器的修改很小,并且是独立的,这使得它成为在新的上下文中重用现有模型检验工具的可行策略。此外,从在运行时验证模式下的单次执行期间收集的数据中,我们自动重新构建执行环境的描述,然后可以在标准的完整模型检查器中使用。这个额外的验证步骤可以进一步提高覆盖率,特别是在并行程序的情况下,而不会在运行时验证过程中引入大量开销。
2018-05-31 cs.SE
OpenJML: Software verification for Java 7 using JML, OpenJDK, and Eclipse
OpenJML是一个检查Java程序的代码和规范的工具。我们描述了我们的经验,建立在JML,OpenJDK和Eclipse的基础上的工具,以及在基于规范的软件验证的许多进步。该实现展示了直接在软件开发IDE中集成规范工具的价值,以及尽可能多地自动化任务的价值。该工具,虽然仍在进行中,现在已被用于几个大学水平的课程,软件规范和验证,并对现有的Java程序的小规模研究。
2014-04-26 cs.LO cs.PL cs.SE
Proceedings Fourth International Workshop on Testing, Analysis and Verification of Web Software
本卷包含在第四届国际软件测试、分析和验证研讨会上提交的论文,该研讨会与第25届IEEE/ACM自动化软件工程国际会议(ASE 2010)有关。论文集包括形式规格说明,模型检查,测试和Web软件调试的研究。
2010-09-17 cs.FL cs.LO cs.PL
Combining Tests and Proofs for Better Software Verification
Constructor University Bremen(不来梅构造大学);Eiffel Software(艾菲尔软件);Constructor University(构造大学)
通过结合测试与证明技术,利用设计契约和反例生成,提升软件验证的质量与效率。
2026-02-07 cs.SE
Context-Aware Trust Verification for Identity-Based Software Signing
Purdue University(普渡大学)
DiVerify通过多实体验证和增强上下文保证,提升基于身份的软件签名的可信度与可验证性。
2026-09-25 cs.CR cs.SE
Modular Verification of Interrupt-Driven Software
中断已被广泛用于安全关键计算机系统中,以处理外部刺激并与硬件交互,但有关中断驱动软件的推理仍然是一项困难的任务。虽然已经提出了一些静态验证技术的中断驱动的软件,他们往往依赖于构建一个单片验证模型。此外,它们不能精确地捕获中断的完整执行语义,例如中断处理程序的嵌套调用。为了克服这些限制,我们提出了一个抽象的解释框架,中断驱动的软件,首先分析每个中断处理程序的隔离,如果它是一个顺序的程序,然后传播的结果到其他中断处理程序的静态验证。这个迭代过程一直持续到来自所有中断处理程序的结果到达一个固定点。由于我们的方法从来没有构造全局模型,它避免了在模型构造中阻碍现有的,非模块化的,验证技术的前期爆破。我们已经在35个中断驱动的应用程序上评估了我们的方法,总共有22,541行代码。我们的结果表明,该方法能够快速,更准确地分析中断的行为。
2017-09-28 cs.PL cs.SE
An Integer Programming Model for Embedding Social Values into Software Requirement Selection
现有的软件需求选择方法主要集中在优化软件产品的经济价值,而忽略了其社会价值及其对社会的长期影响。然而,社会价值观也很重要,需要在软件需求选择中加以考虑。此外,社会价值的软件需求可能会改变存在或不存在的其他需求,由于这些需求之间的价值依赖。这些依赖关系是不精确的,很难在软件项目中指定。本文提出了一种将社会价值观和社会价值观之间的依赖关系整合到软件需求选择中的可重用程序设计(IP)模型。我们进一步,占社会价值观的不精确性和它们之间的依赖关系,使用模糊图的代数结构。
2020-03-09 cs.SE
Supporting Software Formal Verification with Large Language Models: An Experimental Study
本文提出 SpecVerify 框架,将 Claude 3.5 Sonnet 与 ESBMC 结合实现自动化形式化验证,在九个信息物理系统上达到 46.5% 准确率,并表明 LLM 可降低验证门槛但人机协作仍不可或缺。
2025-07-07 cs.SE
Interpolation and SAT-Based Model Checking Revisited: Adoption to Software Verification
本研究将McMillan 2003年提出的基于插值的SAT模型检测算法适配到软件验证领域,在CPAchecker框架实现并通过公开C安全验证基准测试证明其具备竞争力,填补了该算法20年未用于程序验证的研究空白。
2024-03-12 cs.PL cs.SE
A Formal Verification Approach to Safeguard Controller Variables from Single Event Upset
本文提出一种结合程序分析与形式化验证的方法来识别条件相关变量,以减少单粒子翻转场景下的误报,并有助于编译器优化寄存器分配,从而降低控制器芯片成本。
2025-05-10 cs.SE
Automatic Error Localization for Software using Deductive Verification
即使是优秀的程序员也会犯错误。自动验证可以检测错误,但将查找错误代码行的令人沮丧的任务留给了用户。本文提出了一种自动识别软件中潜在错误位置的方法。它基于一个演绎验证引擎,该引擎检测用前置和后置条件注释的函数中的错误。使用自动定理证明器,我们的方法在代码中找到可以修改的表达式,使程序满足其规范。可伸缩性是通过单独分析每个函数来实现的。我们已经实现了我们的方法在广泛使用的框架-C框架,目前的第一个实验结果。这是[8]的扩展版本,增加了一个附录。
2014-09-16 cs.LO cs.SE
Boost the Impact of Continuous Formal Verification in Industry
软件模型检验在过去的二十年里取得了长足的进步,但其可扩展性和适应性仍然是制约其实际应用的主要瓶颈之一。在这里,我们描述了一种通过利用持续集成和回归测试等实践将软件模型检验技术集成到DevOps文化中的方法。特别是,我们提出的方法着眼于修改的软件系统,因为它的最后一次验证,并提交给一个连续的形式化验证过程中,一组回归测试用例的指导下。我们的愿景是专注于开发人员,通过使用他们的主要软件开发方法和工具,将形式化验证技术集成到开发人员的工作流程中。
2019-07-17 cs.LO cs.SE
Modular Verification of Autonomous Space Robotics
University of Liverpool(利物浦大学)
确保自主空间机器人控制软件正常运行至关重要,特别是因为太空中的软件故障往往等同于任务失败,并可能危及附近的宇航员和昂贵的设备。为了尽量减少软件错误导致的任务失败,我们可以利用各种工具和技术来验证软件是否按预期运行。特别是,机器人系统中的不同节点通常需要不同的验证技术来确保它们的行为符合预期。本文介绍了一种方法,用于集成的各种验证技术,适用于机器人软件,通过一阶逻辑(FOL)规范,捕捉每个节点的假设和保证。然后,这些FOL规范用于指导各个节点的验证,无论是通过测试还是使用正式方法。我们还概述了衡量我们对所用核查技术核查整个系统的信心的方法。
2019-08-28 cs.RO cs.SE
An Introduction to Software Engineering and Fault Tolerance
这本书由描述将容错集成到软件开发过程中的新方法的章节组成。它们涵盖了广泛的主题,侧重于容错在不同阶段的软件开发,软件工程技术的验证和确认的容错手段,和语言支持容错规范和实施。因此,本书分为以下三个部分:A部分:容错工程:从需求到代码; B部分:容错系统的验证和确认; C部分:工程容错系统的语言和工具。
2010-11-06 cs.SE
Selection of Architecture Styles using Analytic Network Process for the Optimization of Software Architecture
随着软件系统规模和复杂性的不断扩大,系统设计对软件生产至关重要。因此,软件架构在软件开发中的作用非常重要。它作为软件开发和软件评估的评估和实施计划。因此,选择正确的体系结构是软件工程领域的一个关键问题。此外,软件体系结构选择是一个多准则决策问题,其中必须考虑不同的目标和目的。本文利用ANP推理方法,为软件架构师提供更精确、更合适的架构风格选择决策支持,以最佳方式利用风格属性优化软件架构设计。
2010-05-24 cs.SE
Quantifying SMT Solver Instability for Formal Verification
St. Olaf College(圣奥拉夫学院)
本文针对形式化验证中SMT求解器的不稳定性问题,采用变异系数量化三个软件领域SMT查询的不稳定性,发现其显著且随查询平均时长增加而上升,提出优化查询结构可缓解不稳定性并提升性能。
2026-10-12 cs.SE
When Regression Verification Meets CEGAR
软件系统在其生存周期中不断演化。许多修订是随着时间的推移而产生的。对软件的每个修订版本进行模型检验是不切实际的。回归验证建议重复使用先前验证运行的中间结果。本文提出了一种全自动的回归验证技术的背景下CEGAR。过程摘要描述了过程的输入/输出行为,被建议作为中间结果进行重用。过程摘要存储起来相当小,在技术上易于处理,并且不需要太多额外的计算工作就可以重用。重复使用过程摘要可以节省对相应过程的大量分析工作。通过结合回归验证和CEGAR,我们提出了一种技术,能够重用过程摘要在不同的抽象精度和不同的程序修订。我们对大量的工业程序(89个Linux内核设备驱动程序的534个版本)进行了广泛的实验。实验结果表明,该方法可以显著提高回归验证的性能.
2018-06-13 cs.SE