软件工程作业五:阅读和了解什么是形式化方法

形式化方法在计算机科学和软件工程中用于提高设计的可靠性和强健性,尤其在硬件和安全关键系统设计中至关重要。通过形式化验证,可以数学化证明系统正确性,避免昂贵的错误修复。例子如Intel的Pentium CPU错误和阿丽亚娜5型火箭发射失败后,业界开始广泛采用形式化方法进行验证。NASA、IBM、AMD等机构都在其关键项目中应用此技术。
摘要由CSDN通过智能技术生成

形式化方法,中文也称形式方法、正规方法。在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证[3]。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和强健性[4]。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。


形式验证:在计算机硬件(特别是集成电路)和软件系统的设计过程中,形式验证的含义是根据某个或某些形式规范或属性,使用数学的方法证明其正确性或非正确性。
 

在计算机硬件(特别是集成电路)和软件系统的设计过程中,形式化验证的含义是根据某个或某些形式化规范或属性,使用数学的方法证明其正确性或非正确性。神秘感大抵来源于定义中的两个严谨而且抽象的关键词——“形式化规范”和“数学方法证明”。事实上,揭开这层神秘的面纱,你会发现形式化验证的许多有趣之处。


形式语言:在数学、逻辑和计算机科学中,形式语言(英语:Formal language)是用精确的数学或机器可处理的公式定义的语言。
如语言学中语言一样,形式语言一般有两个方面:语法和语义。专门研究语言的语法的数学和计算机科学分支叫做形式语言理论,它只研究语言的语法而不致力于它的语义。在形式语言理论中,形式语言是一个字母表上的某些有限长字符串的集合。一个形式语言可以包含无限多个字符串。
语言的表示方法:

枚举法

如果一个形式语言的元素数目是有限的,那么可以通过枚举它的各个字串来严格地定义它。

形式文法

通过形式文法来产生。


正则表达式
正则表达式是一种很多编程语言和库都支持的语法,这种语法可以用于匹配符合一定条件的字符串,经常用于文本的搜索和过滤。从名称上来说,正则表达式应当是对应于正则语言的,在形式语言领域内所称的正则表达式确实如此。不过,在实际的编程语言中,很多正则表达式已经通过引入复杂的扩展,可以匹配正则表达式所不能描述的内容。形式语言中的正则表达式和一般编程语言中所称的正则表达式在语法上也有较大差异。


自动机
直觉上来说,自动机消耗输入符号,并在自身的不同状态间转移,可以通过状态机消耗完整个字符串之后是否达到某些特定状态来定义一个字符串是否属于某一个语言。语言可以通过某种自动机来识别,比如图灵机、有限状态自动机。

常用的两个案例:我们首先来探讨一下,哪些领域对程序错误是零容忍的?在哪些领域,程序错误带来的损失难以估量?
实际上,形式化方法是从硬件设计开始普及的。一个著名的例子是:当年Intel的Pentium CPU浮点运算单元出错(FDIV Bug),数以万计的CPU不得不回收和替换,给Intel造成了巨大损失(475M $)[1]。
从那之后,Intel开始在其芯片设计中广泛采用形式化方法。
计算机硬件巨头如IBM,AMD, NVIDIA 和 CADENCE[2]等等也都是形式化方法的使用者…
要说起吃一堑才能长一智,其实各行各业都有试错者,在工业界也是如此。举个例子:1996年,欧洲航天局首次发射的阿丽亚娜5型(Ariane 5)火箭,由于惯性导航系统发送的错误指令(浮点数转换为整数造成溢出),导致火箭在发射仅仅37秒后便偏离了预定轨道,最终坠毁。欧洲航天局的巨额研发经费(8B $)[3]付之一炬。
在那之后不久,EADS公司开发阿丽亚娜火箭的任务调度模型就开始使用形式化方法。
美国国家宇航局NASA和英国国防部在90年代相继发布设计标准[4],形式化方法的使用位列其中。我国的玉兔号月球车控制系统和我国第一个自主研发的空间飞行器嵌入式实时操作系统SpaceOS[5],也都是通过形式化方法验证其正确性。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值