首页 > 其他分享 >软件工程:关于形式化方法

软件工程:关于形式化方法

时间:2022-12-13 12:56:00浏览次数:47  
标签:逻辑 形式语言 系统 形式化 时序 软件工程 关于 方法

形式化方法(Formal Methods),在逻辑科学中是指分析、研究思维形式结构的方法。它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互联结的方式,如命题中包含概念彼此间的联结,推理中则是各个命题之间的联结,抽取出它们共同的形式结构;再引入表达形式结构的符号语言,用符号与符号之间的联系表达命题或推理的形式结构。

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

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASFdpblpuaWVK,size_20,color_FFFFFF,t_70,g_se,x_16

由上图可知,形式化方法还包含了:

形式化验证、形式语言等内容。

形式化验证:

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

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

形式语言:

在数学、逻辑和计算机科学中,形式语言(英语:Formal Language)是用精确的数学或机器可处理的公式定义的语言。

如语言学中语言一样,形式语言一般有两个方面:语法和语义。专门研究语言的语法的数学和计算机科学分支叫做形式语言理论,它只研究语言的语法而不致力于它的语义。在形式语言理论中,形式语言是一个字母表上的某些有限长字符串的集合。一个形式语言可以包含无限多个字符串。

?

根据表达能力,形式化方法可以分为五类:

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

 

标签:逻辑,形式语言,系统,形式化,时序,软件工程,关于,方法
From: https://www.cnblogs.com/mjtmlzlo/p/16978266.html

相关文章

  • 2022 软件工程 | 第十二组
    项目名称慧眼识珠——眼底识别微信小程序前端app微信小程序开发工具数据库微信云开发gitee地址点击此处一、项目设计分工(1)画图分工:每个组员都......
  • 关于el-descriptions-item自定义使用方法
    如果有错请及时点出,虚心接受各位大佬提醒-----------开发不容易且行且珍惜显示类似于原生的table表格的列形式exportdefault{components:{},name:'n......
  • 关于win11辅助功能-文字大小设置导致浏览器实际缩放比例变化
     前段时间在开发数据可视化大屏时发现新买的电脑浏览器分辨率不对劲,检查一看只有1600*900,就各种查设置,显示分辨率、缩放比例、浏览器缩放比例、screen.width、window.dev......
  • 关于MySQL性能优化方式,这一篇就够!
    小鱼已经很长时间没有更新博,主要是去年十月份转战到某上市大厂,由于在工业领域专业知识太薄弱,所以这段时间一直在嗷嗷补工业领域的专业知识,最近在进入review开发代码时,发现一......
  • #yyds干货盘点#关于梳理前端业务的探索和实践
    前言业务是我们日常工作围绕的主体内容和背后逻辑,对于前端工程师来说业务的形态相较于后端会有所差异,比如我们有可见的页面,我们会谈用户交互,更贴近用户的日常操作和......
  • 《软件工程导论》学习笔记·
    嗯,软件工程的笔记是上课做的,发现有小伙伴收藏,很开心,这里列出上学时的笔记,有些是课堂笔记,有些是图书馆刷书的笔记,电子档的笔记后面都有资源,生活加油,天天开心,^_^​​《Oracle......
  • 关于Linux中控制群组cgroup(资源管理)的一些笔记
    写在前面学习遇到容器资源限制的处理问题,所以研究下。博文内容涉及:​​容器​​​中​​cgroup​​的应用控制群组部分属节译,介意小伙伴请看原文。原文链接:​​https:......
  • 关于 分布式和微服务 的一些总结
    写在前面一直对微服务和分布式这两个概念模凌两可,不是太清晰,而且接触的项目也没这么大体量,没有用到过,所以蹭现在有时间总结一下,总结很大部分来源于《从Paxos到Zookper分布式......
  • 关于JAVA 反射 基础知识/编码经验的一些总结
    写在前面温习一下毕业以来学习的东西。准备做成一个系列。所以对于每一部分技术点进行一个笔记整理。更多详见​​java面试的一些总结​​笔记主要是以网上开源的一本​​......
  • 关于Linux中作业调度 crond 和 systemd.timer 使用场景的一些笔记
    写在前面分享一些​​systemd.timer​​相关的笔记博文内容涉及:​​systemd.timer​​的一些介绍​​cron​​​VS​​systemd.timer​​区别如何创建​​syst......