D'Event-B vers UML/OCL en passant par UML/EM-OCL
为了克服这两种方法的经典和正式的复杂软件的开发的局限性,我们提出了一种混合的方法相结合的正式的方法(事件-B)和经典的方法(UML/OCL)。我们的方法的上游阶段包括:重写需求文档,细化策略,抽象规格说明和水平细化。我们已经证明了我们的方法的可行性的案例研究:电子酒店钥匙系统(SCEH)。从正式(事件B)到半正式(UML/OCL)的过渡问题是通过我们的扩展OCL(EM-OCL)处理。
2012-12-20 cs.SE
Proceedings 15th International Refinement Workshop
精化是软件工程形式化方法的基石之一:从抽象规范通过一系列基于抽象的步骤开发更详细的设计或实现的过程,这些步骤相对于原始规范保持正确性。这个BCS FACS精化研讨会的目的是汇集那些有兴趣从抽象规范中使用正式符号开发更具体的设计或可执行程序的人,正式软件开发的工具支持以及正式精化方法的实践经验。讲习班的目的是提供一个论坛,供交流意见,讨论共同点和主要分歧。这第15次研讨会延续了20年的传统,在英国计算机协会(BCS)的FACS特别兴趣小组的主持下运行的改进研讨会。在英国举办了前七届之后,1998年,它与澳大拉西亚精炼研讨会合并为国际精炼研讨会,在澳大利亚国立大学举办。随后又在不同地点出版了六个版本,所有版本都有电子出版的会议记录和相关的期刊特刊。
2011-06-17 cs.LO cs.SE
Refinement type contracts for verification of scientific investigative software
我们的科学知识越来越多地建立在软件输出上。定义数据分析管道和计算模型的用户代码对于自然科学和社会科学的研究是必不可少的,但很少有人知道如何确保其正确性。这种代码的结构和用于构建它的开发过程限制了传统测试方法的实用性。软件验证的形式化方法在确保代码正确性方面取得了巨大的成功,但通常需要比自然科学和社会科学更专业的培训,开发时间和资金。在这里,我们提出了一个Python库,它使用轻量级的形式化方法来提供正确性保证,而不需要专门的知识或大量的时间投资。我们的包提供了使用细化类型的函数入口和出口条件契约的运行时验证。它允许检查合同中的超属性,并提供自动测试用例生成来补充在线检查。我们共同开发了我们的工具与一个中型($\approx$ 3000磅)软件包,它模拟决策的认知神经科学。除了帮助我们在开发周期的早期定位小错误之外,我们的工具还能够定位四个使用传统测试方法可能很难找到的错误。它还能够发现用户代码中不包含契约或细化类型注释的bug。这表明形式化方法可以用来验证科学软件的正确性,这是很难测试的主流方法。
2019-09-01 cs.SE
SpecSyn: LLM-based Synthesis and Refinement of Formal Specifications for Real-world Program Verification
Nanjing University(南京大学);Nanyang Technological University(南洋理工大学)
本文提出SpecSyn,一种基于大语言模型的规范生成方法,通过分解程序并引入语义非等价变异和变体辨别机制,提升规范的语义强度,实验显示其在精度和召回率上显著优于现有方法。
2026-10-11 cs.SE
Stepwise Refinement of Data Flow Architectures
本文的目的是将实际软件开发方法中使用的异构文档集成到一个基于形式化精化的软件开发过程中来描述视图。因此,我们提出了一个集成的语义异构文档的基础上,一个共同的系统模型和一组语法的发展步骤与一个定义良好的语义文档的演变。在一个小例子中演示了开发步骤的使用。
2014-09-25 cs.SE
Validation Obligations: A Novel Approach to Check Compliance between Requirements and their Formal Specification
传统上,从业者主要将形式化方法用于质量保证过程的一半:验证(我们构建的软件正确吗?)。另一半--验证(我们是否构建了正确的软件?)--相对来说,很少受到关注。虽然验证是基于精化的形式化方法的核心,其中每个新的精化步骤必须保留其抽象模型的所有属性,但验证通常被推迟到开发的最新阶段,此时模型可以自动执行。因此,在需求或其解释中的错误被发现得太晚了:通常在开发过程的最后。在本文中,我们提出了一种新的方法来检查符合性的需求和他们的正式细化为基础的规范在早期阶段的发展。我们提出的方法--“验证义务”--基于一个简单的想法,即验证和验证都是系统所有细化步骤的组成部分。
2021-02-11 cs.FL cs.SE
Managing LTL properties in Event-B refinement
事件B中的细化支持通过基于证据的逐步细化事件来开发系统。这种细化方法确保了安全属性得到保留,但需要额外的推理来建立活性和公平性。在本文中,我们提出的结果,允许两个正式的方法,事件-B和线性时序逻辑的紧密结合。特别是,我们展示了如何一类时序逻辑属性可以进行通过细化链的机器。细化步骤可以包括引入新事件、事件重命名和事件拆分。我们还确定了一个通用的活性属性,适用于细化链的初始系统的事件。该方法将帮助开发人员在开发的早期阶段验证线性时序逻辑属性,知道它们将在后期阶段被保留。我们通过一个简单的案例研究来说明结果。
2014-07-02 cs.SE
Structural Abstraction and Selective Refinement for Formal Verification
Institute of Computer Technology(计算机技术研究所);TU Wien(维也纳技术大学)
针对复杂机器人环境安全验证耗时或失败问题,提出基于体素表示的结构抽象与结合CEGAR的选择性细化自动验证工作流,显著提升了模型检测效率。
2025-05-29 cs.RO cs.SE
Refinement-based Specification and Security Analysis of Separation Kernels
在分离核的安全认证中,强制要求通过形式化方法来保证信息流的安全性。ARINC 653作为提高安全性的工业标准,已被主流分离内核所遵守。由于将安全和安全功能集成到一个分离内核中的新趋势,ARINC 653的安全性分析以及具有安全证明的形式化规范对于开发和认证符合ARINC 653的分离内核(ARINC SK)具有重要意义。提出了一种基于精化的ARINC SK规范开发和安全性分析方法。我们提出了一个通用的安全模型和逐步完善的框架。两个层次的功能规格的细化开发。对ARINC 653中分离内核的主要需求进行了建模,包括内核初始化、两级调度、分区和进程管理、分区间通信等。在Isabelle/HOL定理证明器中进行了形式化描述和安全性证明。我们已经审查了一个工业和两个开源的ARINC SK实现,即ARINC Works 653,XtratuM和POK的源代码,根据正式规范。在验证和代码审查过程中,发现ARINC 653标准及其实现中存在6个可能导致信息泄露的安全漏洞。
2017-02-20 cs.CR cs.SE
SCJ-Circus: a refinement-oriented formal notation for Safety-Critical Java
安全关键Java(Safety-Critical Java,SCJ)是Java的一个版本,其目标是支持实时,嵌入式,安全关键软件的开发。特别是,SCJ通过引入实施更简单的体系结构和更简单的并发和内存模型的抽象来支持此类软件的认证。在本文中,我们提出了SCJ-Circus,一个面向细化的正式符号,支持规范和验证的低级别的编程模型,包括SCJ引入的新的抽象。SCJ-Circus是状态丰富进程代数Circus家族的一部分,因此,SCJ-Circus包括Circus结构,用于建模顺序和并发行为,实时和面向对象。我们在这里提出的语法和语义的SCJ-Circus,这是定义映射SCJ-Circus结构的标准Circus。这是基于现有的方法建模SCJ程序。我们还扩展了现有的马戏团为基础的细化策略,目标SCJ程序占SCJ马戏团模型的生成接近SCJ的实现。
2016-06-07 cs.LO cs.PL cs.SE
Proceedings 18th Refinement Workshop
精化是软件工程形式化方法的基石之一。细化是从抽象规范通过一系列基于抽象的步骤来开发更详细的设计或实现的过程,这些步骤相对于原始规范保持正确性。对Z、B、VDM和CSP等语言基础的研究使它们在某些工业部门得到了广泛的使用,例如,那些有安全或安全关键问题的人。除了精确的规范,形式化方法还允许精确和可验证的开发的可能性,正如精化的概念所捕获的那样。第18届精炼研讨会作为FLoC 2018的一部分在英国牛津举行。
2018-10-20 cs.LO cs.PL cs.SE
Dependability Engineering in Isabelle
在本文中,我们介绍了一个过程中的形式化系统开发支持的交互式定理证明在一个专用的Isabelle框架。这个伊莎贝尔基础设施框架实现规范和验证的循环过程中的攻击树分析密切相关的正式细化的规范。这个过程是循环的:在一个重复的迭代中,细化将更多的细节添加到系统规范中。如何找到下一个细化步骤是一个已知的难题:这个问题是通过使用Kripke结构和CTL逻辑的基于攻击的分析来解决的。我们把这个循环过程称为精炼-风险循环(RR-循环)。它最初是为了物联网医疗保健系统的安全和隐私而开发的,但更普遍地适用于安全性,即一般的可靠性。在本文中,我们提出了扩展的伊莎贝尔基础设施框架实现了一个正式的概念,属性保持细化交织攻击树分析的RR周期。该过程说明了规范的发展和隐私分析的移动冠状病毒预警应用程序。
2021-12-08 cs.CR cs.SE
Formal requirement and architecture specifications of a multi-agent robotic system
多智能体机器人系统的规范工程中最具挑战性的任务之一是正式指定和架构的系统,特别是作为一个多智能体机器人系统是并发的并发处理,往往有动态的环境。形式化的需求和体系结构规范以及从抽象到具体概念的逐步细化在系统的形式化中起着重要作用。本文提出了正式的需求和架构规范方面的一种方法,支持分析方面的功能以及非功能属性逐步细化从抽象到具体的规范和正式的架构定义。这些正式的规范已被举例说明的案例研究。随着形式化规范技术的日益成熟,我们构建正确的复杂多智能体机器人系统的能力也在迅速增长。
2015-01-21 cs.MA cs.SE
Intent-aligned Formal Specification Synthesis via Traceable Refinement
Amazon Web Services(亚马逊云服务);Harvard University(哈佛大学)
本文提出VeriSpecGen框架,通过需求级归因和局部修复生成意图对齐的规范,提升规范合成的准确性和效率。
2026-04-12 cs.AI cs.LG cs.LO
Towards Refinement Strategy Planning for Event-B
Event-B是一种面向系统建模和分析的形式化方法。它支持细化机制,使逐步建模和验证的系统。通过使用精化,可以分散和减轻验证的复杂性。在使用Event-B的公共开发中,在建模之前检查用自然语言编写的规范,以便规划建模和细化策略。然后,从一个简单的抽象模型开始,通过逐步引入复杂的结构和概念,构建了几个不同抽象层次的具体模型。虽然Event-B的用户必须计划如何抽象每个模型的构造规范,但尚未建议此类计划的指导方针。具体来说,由于Event-B的语义约束,模型中的某些元素通常要求模型中包含其他元素。由于这种需求同时引入了许多元素,事件B的非专家通常会使细化变得粗糙,尽管粗糙的细化并不能很好地降低验证的复杂性。针对这个问题,提出了一种方法来规划在每个抽象层中构建什么模型。该方法考虑事件B的语义约束和系统中元素之间的关系,计算出降低复杂性的计划。
2012-10-26 cs.SE
Formal Modelling, Testing and Verification of HSA Memory Models using Event-B
HSA基金会已经制定了HSA平台系统架构规范,该规范在解决明确和一致的方法来指定弱一致内存的需求方面有很大的帮助。HSA是用自然语言指定的,这使得它对多种模糊的解释开放,并且可能在硬件和软件中实现它时出现错误。在本文中,我们提出了一个形式化的HSA模型,可用于并发软件应用程序的开发和验证,以及在开发和验证的HSA兼容平台本身。我们使用Event-B语言来建立一个可证明正确的层次结构的模型,从最抽象的HSA接近实现级别的详细细化。我们的内存模型是通用的,因为它们代表了任意数量的主机,程序和指令交织。我们使用精化来推理这样的一般模型。使用罗丹工具,我们能够建模和验证整个层次的模型使用证明,以建立每个细化是正确的。我们定义了一个自动化的验证方法,使我们能够测试模型的基线符合性对一套已发布的HSA石蕊测试。一旦我们完成了模型验证,我们开发了一个覆盖率驱动的方法,从事件B模型和用户指定的覆盖率模型中提取更丰富的测试集。这些测试用于硬件和软件系统的广泛回归测试。我们的方法的细化为基础的正式建模,基线符合性测试的模型和覆盖率驱动的测试提取使用单一的语言的事件-B是一种新的方式来解决所面临的一个关键挑战的设计和验证的多核系统。
2016-05-16 cs.LO cs.SE
Towards Large Language Model Aided Program Refinement
National University of Singapore(新加坡国立大学);Griffith University(格里菲斯大学);Peking University(北京大学);Singapore Institute of Technology(新加坡科技设计大学);Shanghai Jiaotong University(上海交通大学);Singapore Management University(新加坡管理大学)
针对传统程序细化缺乏自动化及LLM生成代码不可靠的问题,提出LLM4PR工具,结合形式化细化演算与LLM自动生成并验证代码,确保代码正确性。
2024-06-26 cs.AI cs.CL cs.SE
Formal-Method-Guided Vibe Coding: Closing the Verification Loop on AI-Generated Safety-Critical Software Through Model-Driven Engineering
Lancaster University(兰卡斯特大学);Tsinghua University(清华大学);Harbin Institute of Technology(哈尔滨工业大学);Southwest University(西南大学);Aarhus University(奥胡斯大学);University of York(约克大学)
提出Forge管道,结合Vibe编码与模型驱动工程,通过多种形式化验证(Dafny、CSP、Isabelle)迭代修正LLM生成的Java代码,生成符合安全标准的验证证据。
2026-06-24 cs.FL cs.SE
Incremental Database Design using UML-B and Event-B
许多关键系统的正确操作依赖于底层数据库的数据一致性和完整性属性。因此,一个可验证的和严格的数据库设计过程是非常可取的。本研究的目的是调查和提供一个全面和实用的方法,通过分层细化正式的方法建模数据库。该方法是由一些案例研究,使用UML-B的抽象和细化和验证与罗丹工具的指导。UML-B是Event-B形式主义的图形表示,Rodin工具支持Event-B和UML-B的验证。我们的方法指导开发人员通过分层细化在UML-B中建模关系数据库,并指定数据库上的必要约束和操作。
2018-05-15 cs.DB cs.LO cs.SE
The Unit-B Method -- Refinement Guided by Progress Concerns
我们提出了Unit-B,一个正式的方法的灵感来自事件B和UNITY。单元B旨在逐步设计满足安全性和活性特性的软件系统。该方法的特点是新的概念,粗和细的时间表,一个概括的弱和强的公平性指定事件的调度假设。基于事件时间表,我们提出了证明规则,原因的进展性质和细化顺序保持活性和安全属性。我们通过一个例子来说明我们的方法,表明系统开发不仅可以由安全性,而且还可以由活性要求来驱动。
2020-03-31 cs.LO cs.SE cs.SY
Proceedings First Workshop on Causal Reasoning for Embedded and safety-critical Systems Technologies
自动因果关系分析,故障定位,事件解释,问责制和责备的正式方法已经由几个社区独立提出-特别是人工智能,并发,基于模型的诊断,正式方法。在过去几年中,关于这些专题的工作大大加快了速度。CREST的目标是汇集和促进来自不同社区的研究人员之间的交流,并介绍和讨论该领域的最新进展和新想法。研讨会的程序包括一组邀请和贡献的演示文稿,说明不同的技术,因果关系分析和故障定位的应用。该计划由两个主题演讲组成。Hana Chockler(国王学院)的主旨发言提供了一个广泛的视角,探讨了基于Halpern和Pearl对实际因果关系的定义的因果推理在从形式化验证到法律推理等各种应用领域的应用。Chao Wang(弗吉尼亚理工大学)的主题演讲集中在调试和验证并发程序的基于约束的分析技术。研讨会论文涉及成分因果关系分析和广泛的因果推理应用,如概率模型的调试,问责制和责任,基于刘易斯反事实的实践中的危险分析,以及故障定位和修复。
2016-08-26 cs.AI cs.LO cs.SE