写道
形式化方法
形式化方法英文的名称是formal methods。
在逻辑科学中是指分析、研究思维形式结构的方法。它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互联结的方式,如命题中包含概念彼此间的联结,推理中则是各个命题之间的联结,抽取出它们共同的形式结构;再引入表达形式结构的符号语言,用符号与符号之间的联系表达命题或推理的形式结构。例如,把全称肯定命题,用符号形式化为“SAP”;把联言命题、假言命题分别形式化为:“p∧q、“p→q”。又例如:一个具体的假言联言推理“如果这种金属是纯铝,那么它的物理性质必与纯铝相同;如果这种金属是纯铝,那么它的化学性质必与纯铝相同;但这种金属的物理性质和化学性质与纯铝不相同;所以,它不是纯铝。”这个推理的形式结构是:“如果p,则q;如果p,则r;非q且非r;所以非p。”可进而形式化为下列公式:((p→q)∧(p→r)∧┐p∧┐r→┐p。
形式化方法在古代就运用了,而在现代逻辑中又有了进一步的发展和完善。这种方法特别在数学、计算机科学、人工智能等领域得到广泛运用。它能精确地揭示各种逻辑规律,制定相应的逻辑规则,使各种理论体系更加严密。同时也能正确地训练思维、提高思维的抽象能力。
1.形式化方法的发展
软件形式化方法最早可追溯到20世纪50年代后期对于程序设计语言编译技术的研究,即J.Backus提出BNF描述Algol60语言的语法,出现了各 种语法分析程序自动生成器以及语法制导的编译方法,使得编译系统的开发从“手工艺制作方式”发展成具有牢固理论基础的系统方法。形式化方法的研究高潮始于 20世纪60年代后期,针对当时所谓“软件危机”,人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织、管理软件的开发过程;二是深入探讨程 序和程序开发过程的规律,建立严密的理论,以其用来指导软件开发实践。前者导致“软件工程”的出现和发展,后者则推动了形式化方法的深入研究。经过30多 年的研究和应用,如今人们在形式化方法这一领域取得了大量、重要的成果,从早期最简单的形式化方法——一阶谓词演算方法到现在的应用于不同领域、不同阶段 的基于逻辑、状态机、网络、进程代数、代数等众多形式化方法。形式化方法的发展趋势逐渐融入软件开发过程的各个阶段,从需求分析、功能描述(规约)、(体 系结构/算法)设计、编程、测试直至维护。
2.形式化方法的定义
用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术,这样的形式化方法提供了一个框架,可以在框架中以系统的而不是特别的方式刻划、开发和验 证系统。 如果一个方法有良好的数学基础,那么它就是形式化的,典型地以形式化规约语言给出。这个基础提供一系列精确定义的概念,如:一致性和完整性,以及定义规范 的实现和正确性。 形式化方法的本质是基于数学的方法来描述目标软件系统属性的一种技术。不同的形式化方法的数学基础是不同的,有的以集合论和一阶谓词演算为基础(如Z和 VDM),有的则以时态逻辑为基础。形式化方法需要形式化规约说明语言的支持。
3.形式化方法的研究内容
形式化方法的一个重要研究内容是形式规约(Formal Specification,也称形式规范或形式化描述),它是对程序“做什么”(what to do)的数学描述,是用具有精确语义的形式语言书写的程序功能描述,它是设计和编制程序的出发点,也是验证程序是否正确的依据。对形式规约通常要讨论其一 致性(自身无矛盾)和完备性(是否完全、无遗漏地刻画所要描述的对象)等性质。形式规约的方法主要可分为两类:一类是面向模型的方法也称为系统建模,该方 法通过构造系统的计算模型来刻画系统的不同行为特征;另一类是面向性质的方法也称为性质描述,该方法通过定义系统必须满足的一些性质来描述一个系统。不同 的形式规约方法要求不同的形式规约语言,即用于书写形式规约的语言(也称形式化描述语言),如代数语言OBJ、Clear、ASL、ACT One/Two等;进程代数语言CSP、CCS、π演算等;时序逻辑语言PLTL、CTL、XYZ/E、UNITY、TLA等;这些规约语言由于基于不同 的数学理论及规约方法,因而也千差万别,但它们有一个共同的特点,即每种规约语言均由基本成分和构造成分两部分构成。前者用来描述基本(原子)规约,后者 把基本部分组合成大规约。构造成分是形式规约研究和设计的重点,也是衡量规约语言优劣的主要依据。下面给出用于顺序和并发程序形式规约的常见方法及语言: 形式验证形式化方法的另一重要研究内容是形式验证(Formal Verification)。形式验证与形式规约之间具有紧密的联系,形式验证就是验证已有的程序(系统)P,是否满足其规约(φ,ψ)的要求(即P (φ,ψ)),它也是形式化方法所要解决的核心问题。传统的验证方法包括模拟(simulation)和测试(testing),它们都是通过实验的方法 对系统进行查错。模拟和测试分别在系统抽象模型和实际系统上进行,一般的方法是在系统的某点给予输入,观察在另一点的输出,这些方法花费很大,而且由于实 验所能涵盖的系统行为有限,很难找出所有潜在的错误。基于此,早期的形式验证主要研究如何使用数学方法,严格证明一个程序的正确性(即程序验证)。
4.形式化方法的分类
根据说明目标软件系统的方式,形式化方法可以分为两类:
1)面向模型的形式化方法。面向模型的方法通过构造一个数学模型来说明系统的行为。
2)面向属性的形式化方法。面向属性的方法通过描述目标软件系统的各种属性来间接定义系统行为。
根据表达能力,形式化方法可以分为五类:
1)基于模型的方法:通过明确定义状态和操作来建立一个系统模型(使系统从一个状态转换到另一个状态)。用这种方法虽可以表示非功能性需求(诸如时间需求),但不能很好地表示并发性。如:Z语言,VDM,B方法等。
2)基于逻辑的方法:用逻辑描述系统预期的性能,包括底层规约、时序和可能性行为。采用与所选逻辑相关的公理系统证明系统具有预期的性能。用具体的编程构 造扩充逻辑从而得到一种广谱形式化方法,通过保持正确性的细化步骤集来开发系统。如:ITL(区间时序逻辑),区段演算(DC),hoare 逻辑,WP演算,模态逻辑,时序逻辑,TAM(时序代理模型),RTTL(实时时序逻辑)等。
3)代数方法:通过将未定义状态下不同的操作行为相联系,给出操作的显式定义。与基于模型的方法相同的是,没有给出并发的显式表示。如:OBJ, Larch族代数规约语言等;
4)过程代数方法:通过限制所有容许的可观察的过程间通信来表示系统行为。此类方法允许并发过程的显式表示。如:通信顺序过程(CSP),通信系统演算 (CCS),通信过程代数(ACP),时序排序规约语言(LOTOS),计时CSP(TCSP),通信系统计时可能性演算(TPCCS)等。
5)基于网络的方法:由于图形化表示法易于理解,而且非专业人员能够使用,因此是一种通用的系统确定表示法。该方法采用具有形式语义的图形语言,为系统开发和再工程带来特殊的好处。如 Petri图,计时Petri图,状态图等。
分享到:
相关推荐
### 形式化方法在软件开发中的应用及挑战 #### 一、引言 随着信息技术的飞速发展,软件系统变得越来越复杂。确保这些系统既可靠又高效成为了软件工程领域的一项重大挑战。为了应对这一挑战,形式化方法作为一种...
形式化方法是软件工程中的一种高级技术,它利用数学逻辑和符号来精确地定义和验证计算机系统的结构和行为。这种严谨的方法旨在确保软件的质量和可靠性,通过消除潜在的错误和漏洞,特别是在关键系统中,如航空、医疗...
### 形式化方法与软件可靠性 #### 一、形式化方法概述 形式化方法是一种利用数学和逻辑学原理对软件进行精确描述和验证的技术。它通过严格的数学模型来定义软件的行为,从而确保软件的质量和可靠性。这种方法的...
### 软件开发的形式化方法 #### 一、引言 随着信息技术的快速发展与广泛应用,软件系统的复杂度日益增加,传统的开发方法已难以确保软件的质量。为了提高软件产品的可靠性和可维护性,形式化方法作为一种重要的...
《软件开发中的形式化方法》 形式化方法在软件开发中扮演着至关重要的角色,尤其在面对日益复杂的软件系统时,确保软件的正确性和可靠性变得愈发迫切。形式化方法依赖于严格的数学基础,旨在提高软件的可信度和结构...
形式化方法是计算机科学中的一种重要工具,它利用数学逻辑严谨地表述和验证软件系统的行为。在本PPT中,重点介绍了计算机中的逻辑学原理,特别是动态逻辑这一领域。动态逻辑是一种程序模态逻辑,它专门用于描述和...
非形式化方法常采用自然语言描述软件需求,这可能导致矛盾性、二义性、含糊性、不完整性和抽象层次混乱等问题。形式化方法通过引入严谨的数学描述,能够简洁、准确地表达需求,并能在软件开发的不同阶段实现平滑过渡...
在IT行业中,软件形式化方法是一种严谨的软件开发与验证技术,它利用数学逻辑和模型来精确地描述软件的行为和属性。有限状态机(Finite State Machine, FSM)是这种方法中的一个重要概念,常用于建模复杂的系统行为...
在本书《UML与形式化建模方法》中,作者从基础到应用,系统地介绍了UML的各个方面。开篇首先讲述了建模的重要性,强调了模型化在软件开发中的关键作用。随后介绍了UML的基础知识,包括它作为一种建模语言的不同应用...
"电信协议工程与形式化方法"这个主题深入探讨了如何设计、分析和验证这些协议,以确保它们的正确性和可靠性。协议工程是一门综合性的学科,涉及到软件工程、网络通信、计算机科学以及数学等多个领域的知识。 首先,...
形式化方法是一种数学化、严密的方法,用于软件和系统的开发、分析和验证。它包括了一系列的技术、工具和规范语言,以确保系统能够满足其预定的要求和规格。形式化方法在安全关键系统(如航空、铁路和医疗设备)的...
软件形式化方法是一种重要的软件开发技术,旨在通过严谨的数学工具和逻辑来精确描述和验证软件系统的规格和行为。这种方法论旨在解决所谓的“软件危机”,即在20世纪60年代末期,软件开发过程中遇到的诸如高昂的成本...
《用于通信网络协议开发的形式化方法》一文深入探讨了通信网络协议开发中面临的挑战以及形式化方法在解决这些问题上的应用。随着计算机网络技术的飞速发展,新一代通信网络正向着数字化、宽带化、智能化、个人化和...
总的来说,《网络协议的形式化分析与设计》这本书将引导读者深入理解网络协议背后的逻辑和数学原理,掌握如何使用形式化方法来分析和设计协议,从而在实际工作中更好地保证网络通信的可靠性与安全性。
《网络游戏-无线传感器网络控制代码形式化方法和装置》是一个重要的技术资料,主要涉及的是无线传感器网络(Wireless Sensor Networks, WSN)在网络游戏中的应用及其控制代码的形式化设计与验证方法。这篇文档可能...