精华内容
下载资源
问答
  • 形式化方法

    2018-03-17 15:29:06
    形式化方法:通过数学逻辑来表述一个软件开发,最终还可以通过验证来证明软件开发的可行性。
  • 形式化方法
  • 形式化方法教材

    2017-11-13 11:27:16
    形式化方法教材,教材及练习题答案。Ch01-Ch16,APPENDIX2
  • 了解形式化方法

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

    中文也称形式方法、正规方法。在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和强健性。

    也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。

    但是,由于采用形式化方法的成本高,这意味着它们通常只应用于开发注重安全性的高度整合的系统。

    形式化方法的核心就是形式化语言,以及基于形式化语言构建出来的系统的形式化模型。

    形式化语言常用于软件工程生命周期的需求分析阶段,可以帮助工程师理解需求文档,完成建模(需求到形式化模型的转换),甚至进一步完善需求文档(挖掘隐藏的需求,以及改进需求中矛盾的部分)。需求文档常常用自然语言等非形式化的方式被说明,这样会引出很多问题。我们怎么能确信这样一个描述是正确的?我们能保证所描述的程序一定终止吗(没有无穷循环,也没有死锁)?程序应该维持哪些类别的性质?为了回答这些问题,我们需要形式化地构造我们的程序。这类活动应该在正式开始编码前完成,以便使被考虑的系统能做到构造即正确。

    对于一些 safety critical 的系统(例如航空航天、高铁动车、核电等)来说其系统的行为必须是可以预测的,即某些行为(死锁、data race)等都是不允许的。而一般的软件工程方法(测试)无法保证这些系统属性的实现。

    因此需要将这些系统用语义明确的形式化语言进行建模,继而采用模型监测、定理证明的方法对目标属性进行验证。工业界位某些类型的系统(如高铁上的动力控制系统等)的开发流程和实现制定了许多标准,如 IEC 61508(The IEC 61508 standard deals with the functional safety of electrical/electronic systems and programmable electronic (E/E/EP).),以及大量的衍生标准。只有通过这些标准,才能达到很多设备要求的安全等级(如 SIL 4),才能在市面上卖。而这些标准在工程中的实现,需要形式化工具的支持。例如,卖几百万一套的 SCADE Suite,其建模语言为 SSM(Graphical Esterel) + Lustre,都是很著名的形式化语言。通过对经过验证的模型进行代码生成,实现高质量的系统。而 Mathworks 的系列工具 Simulink、 Polyspace 也是各种标准加持。验证方面,模型检测工具、定理证明器(Coq、Isabelle、ACL2 等)、SMT Solver(Z3等)都是可以采用的方向,工程实践中很多会结合多种方法。

    总之,形式化方法既需要花(很多)钱购买工具,还要花钱(及很长时间)培训人员使用,成本很高。但因其能够降低安全攸关系统的风险,在一些行业中仍然是不可或缺的。

    形式化方法现在已经较广泛应用于分布式系统,世界最重要的一些软件公司、互联网公司都跟进了。例如业界分布式系统数一数二的公司Amazon最核心的几个分布式服务都是TLA+/PlusCal玩过的,比如它帮助发现了多个可以导致数据丢失的DynamoDB设计bug,S3, ebs, DynamoDB,内部的分布式锁服务,这些都应用了,各个都实用,众所周知的微软也有很多类似项目。

    展开全文
  • 关于形式化方法

    2020-11-03 10:16:07
    形式化方法 形式化方法在古代就运用了,而在现代逻辑中又有了进一步的发展和完善。这种方法特别在数学、计算机科学、人工智能等领域得到广泛运用。它能精确地揭示各种逻辑规律,制定相应的逻辑规则,使各种理论体系...

    形式化方法

    形式化方法在古代就运用了,而在现代逻辑中又有了进一步的发展和完善。这种方法特别在数学、计算机科学、人工智能等领域得到广泛运用。它能精确地揭示各种逻辑规律,制定相应的逻辑规则,使各种理论体系更加严密。同时也能正确地训练思维、提高思维的抽象能力。形式化方法英文的名称是formal methods。

    形式化方法是基于严密的、数学上的形式机制的计算机系统研究方法。

    形式化方法的分类

    根据说明目标软件系统的方式,形式化方法可以分为两类:
    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图,状态图等。

    转载形式化方法概述

    转载形式化

    展开全文
  • 浅析形式化方法

    2020-11-13 22:05:59
    这个问题太抽象,太难理解,看了很多文章还处于懵懵懂懂的状态,所以只能复述一下我查到的资料。 形式化方法可以分为形式化描述和建立...形式化方法研究的目的就是希望能够提供更好的理论、方法和工具,扩大形式化方法

    这个问题太抽象,太难理解,看了很多文章还处于懵懵懂懂的状态,所以只能复述一下我查到的资料。
    形式化方法可以分为形式化描述和建立在形式化描述基础之上的形式化开发。形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)做描述。形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理验证来保证最终的软件产品是否满足这些需求和具备这些特征。这样的验证当然得建立在严格的语法语义的基础之上的。在实际应用中,这是不容易做到的。形式化方法研究的目的就是希望能够提供更好的理论、方法和工具,扩大形式化方法的应用范围和使用价值。

    展开全文
  • 形式化方法论文集合

    2018-03-17 13:50:13
    有关形式化方法著名论文的集合,由日本九州大学的教授整理的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,671
精华内容 7,868
关键字:

形式化方法