形式化方法就是在逻辑科学中是指分析、研究思维形式化结构的方法。它把各种具有不同内容的思维形式加以比较,找出其中各个部分互相联结的方式。如果一个方法有良好的数学基础,那么它就是形式化的,典型的以形式化规约语言给出的。形式化方法的本质是基于数学的方法来描述目标软件系统属性是不同的一种技术。不同的形式化方法的数学基础是不同的。

基于数学的形式化规格说明技术,与欠形式化方法比较有实质性的优点:形式化的规格说明可以用数学方法研究、验证,此外形式化的规格说明消除了而义性,而且它鼓励软件开发者在软件工程过程的早期阶段使用更严格的方法,从而可以减少差错。

当然形式化方法也有缺点:大多数形式化的规格说明主要关注与系统的功能和数据,而问题的时序、控制和行为等方面的需求却更难于表示。此外,形式化方法比欠形式化方法更难学习,不仅在培训阶段要华大量的投资,而且对某些软件工程师来说,它代表了一种“文化冲击”

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图,状态图等。

阅读和了解什么是形式化方法相关推荐

  1. 1、阅读和了解什么是形式化方法 2、推荐阅读书籍《大象——thinking in UML》

    什么是软件形式化方法 软件形式化方法是指建立在严格数学基础上的软件开发方法.形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明.形式化方法使软件开发人员可以应用严格的数学符号来说明.开发和验 ...

  2. 阅读和了解什么是形式化方法?

    1.形式化方法概念: 形式化方法英文的名称是formal methods.在逻辑科学中是指分析.研究思维形式结构的方法.它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互 ...

  3. 阅读和了解什么是形式化方法,推荐月的书籍《大象---thinking in UML》

    形式化方法,中文也称形式方法.正规方法.在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述.开发和验证.将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样 ...

  4. CCF ChinaSoft 2022预告丨形式化方法工业应用前沿分论坛 暨中科国创高可信联合上海控安新品发布...

    2022年11月25-27日,2022年CCF中国软件大会(CCF ChinaSoft 2022)将于线上举行.大会将围绕"聚焦产教研用协同创新,提升关键软件供给能力"主题,举办包 ...

  5. 什么是软件形式化方法

    软件形式化方法(Formal Method)在软件开发中一直都受到多方面的争议.持肯定态度的拥护者认为形式化方法会引起软件开发的革命,另一些持否定态度者则怀疑甚至反对将数学引入软件开发过程中. 形式化 ...

  6. ChinaSoft 论坛巡礼 | 形式化方法工业应用前沿

    2022年CCF中国软件大会(CCF ChinaSoft 2022)将于2022年11月25-27日在线上举行.预期将有林惠民.陈左宁.邬江兴.何积丰.梅宏.吕建.柴洪峰.廖湘科.王怀民.郑纬民.蒋昌 ...

  7. ChinaSoft 论坛巡礼 | CCF-华为胡杨林基金-形式化方法专项论坛

    2022年CCF中国软件大会(CCF ChinaSoft 2022)将于2022年11月25-27日在线上举行.预期将有林惠民.陈左宁.邬江兴.何积丰.梅宏.吕建.柴洪峰.廖湘科.王怀民.郑纬民.蒋昌 ...

  8. 《融智学进阶文集》01:间接计算模型和间接形式化方法

    <融智学进阶文集>01: 间接计算模型和间接形式化方法 01-间接计算模型和间接形式化方法_邹晓辉.pdf 怎么采用融智学七遍通方法熟悉原创文本? 对照阅读 摘要: 本文旨在:从人机交互界 ...

  9. 迈向可验证的 AI: 形式化方法的五大挑战

    来源:AI科技评论 本文约10500字,建议阅读20分钟本文回顾了形式化方法传统的应用方式,指明了形式化方法在 AI 系统中的五个独特挑战. 人工智能试图模仿人类智能的计算系统,包括人类一些与智能具有 ...

最新文章

  1. 根据API创建BOM(Itpub)
  2. 使用百度地图API制作线路轨迹播放
  3. busybox 安装mysql_安装busybox
  4. B03_NumPy创建数组(numpy.empty,numpy.zeros,numpy.ones)
  5. public/private/protected/默认 的各种理论上的区别
  6. 动态网络表征学习在推荐领域的创新与实践
  7. BZOJ 1012 [JSOI2008]最大数maxnumber
  8. 前端学习(2456):文章列表
  9. 好吧,如果一定要RESTFUL的DJANGO
  10. Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程
  11. VB 各种进制相互转换大全
  12. 使用JavaScript判断用户是否为手机设备
  13. java 引用类型 String_java基础之 数据类型 值传递 引用传递 String 四种引用类型...
  14. 离散数学第二章(知识点总结)续
  15. [HAOI2007]理想的正方形(单调队列)
  16. 使用fsck修复文件系统错误
  17. 前端开发JS--匀速运动
  18. Android远程弹窗,Remote Desktop(远程桌面)Android平台远程电脑的又一神器!
  19. 4. 上新了Spring,全新一代类型转换机制
  20. 腾讯云乐固客户端加固打包上线流程

热门文章

  1. 《复联4》上映首日票房过6亿,影评两极分化,这份数据分析报告必看!
  2. 2020中国独角兽报告(附榜单)
  3. 什么叫恒流?什么叫恒流电源?(
  4. 预期违背_违背好的建议的理由
  5. 计算机发展的现在论文,计算机的发展论文.doc
  6. C++ set用法总结
  7. 【原创】Box2DFlash学习笔记
  8. 基于JAVA网络学习平台计算机毕业设计源码+数据库+lw文档+系统+部署
  9. 数学建模Day6 典型相关分析
  10. Unity Shader卡通渲染 · 高清渲染管线·HDRP