Formal verification of a software system relies on formalising the requirements to which it should adhere, which can be challenging. While formalising requirements from natural-language, we have dependencies that lead to duplication of information across many requirements, meaning that a change to one requirement causes updates in several places. We propose to adapt code refactorings for NASA's Formal Requirements Elicitation Tool (FRET), our tool-of-choice. Refactoring is the process of reorganising software to improve its internal structure without altering its external behaviour; it can also be applied to requirements, to make them more manageable by reducing repetition. FRET automatically translates requirements (written in its input language Fretish) into Temporal Logic, which enables us to formally verify that refactoring has preserved the requirements' underlying meaning. In this paper, we present four refactorings for Fretish requirements and explain their utility. We describe the application of one of these refactorings to the requirements of a civilian aircraft engine software controller, to decouple the dependencies from the duplication, and analyse how this changes the number of requirements and the number of repetitions. We evaluate our approach using Spot, a tool for checking equivalence of Temporal Logic specifications.
翻译:软件系统的正式核查取决于软件系统应该遵守的要求的正规化,这可能具有挑战性。在将自然语言的要求正规化的同时,我们存在着导致许多要求的信息重复的相互依存关系,这意味着对一项要求的修改导致若干地方的更新。我们提议调整美国航天局正式要求Eliucation 工具(FRET)的代码重新设置,这是我们的选择工具。重新设置是重新组织软件的过程,以改进其内部结构,同时又不改变其外部行为;它也可以应用到各种要求,通过减少重复来使其更加易于管理。FRET将要求(以输入语言Fretish)自动翻译成Temoal Lologic,使我们能够正式核实重新设置的要求保留了基本含义。我们在本文件中提出了四项关于Fretish要求的重新设置,并解释其效用。我们描述了对民用飞机发动机软件控制要求的其中一项重新配置的应用,以便通过减少重复来调和这些要求的可靠性,我们用StaryLA方法来分析这种改变我们的标准的定值方法的数量。