形式化说明技术

  • 一、概述
    • (一) 非形式化方法的缺点
    • (二) 形式化方法的优点
    • (三) 应用形式化方法的准则
      • 1.应该选用适当的表示方法
      • 2. 应该形式化,但不要过分形式化
      • 3. 应该估算成本
      • 4.应该有形式化方法顾问随时提供咨询
      • 5.不应该放弃传统的开发方法
      • 6. 应该建立详尽的文档
  • 二、有穷状态机
    • (一) 概念
  • 三、 Petri网
    • (一) 概念

一、概述

按照形式化的程度,可以把软件工程使用的方法划分成3类:非形式化 、半形式化、形式化。

  • 用自然语言描述需求规格说明,是典型的非形式化方法。
  • 用数据流图或实体-联系图建立模型,是典型的半形式化方法。

所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。

(一) 非形式化方法的缺点

用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。
所谓矛盾是指一组相互冲突的陈述。
二义性是指读者可以用不同方式理解的陈述。

(二) 形式化方法的优点

为了克服非形式化方法的缺点,人们把数学引入软件开发过程,创造了基于数学的形式化方法。
  
  在开发大型软件系统的过程中应用数学,能够带来下述的几个优点:

  • 能够简洁准确地描述物理现象、对象或动作的结果,因此是理想的建模工具。

数学特别适合于表示状态,也就是表示“做什么”,数学比自然语言更适于描述详细的需求。
  在软件开发过程中使用数学的另一个优点是,可以在不同的软件工程活动之间平滑地过渡。
不仅功能规格说明,而且系统设计也可以用数学表达,当然,程序代码也是一种数学符号(虽然是一种相当繁琐、冗长的数学符号)。
  数学作为软件开发工具的最后一个优点是,它提供了高层确认的手段。可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。

(三) 应用形式化方法的准则

对形式化方法应该“一分为二”,既不要过分夸大它的优点也不要一概排斥。
下面给出应用形式化方法的几条准则:

1.应该选用适当的表示方法

通常,一种规格说明技术只能用自然的方式说明某一类概念,如果用这种技术描述其不适于描述的概念,则不仅工作量大而且描述方式也很复杂。因此,应该仔细选择一种适用于当前项目的形式化说明技术。

2. 应该形式化,但不要过分形式化

目前的形式化技术还不适于描述系统的每个方面。带使用之,有助于防止含糊和误解。

3. 应该估算成本

为了使用形式化方法,通常需要事先进行大量的培训。最好预先估算所需的成本并编入预算。

4.应该有形式化方法顾问随时提供咨询

绝大多数软件工程师对形式化方法中使用的数学和逻辑并不很熟悉,而且没受过使用形式化方法的专业训练,因此,需要专家指导和培训。

5.不应该放弃传统的开发方法

把形式化方法和结构化方法或面向对象方法集成起来是可能的,而且由于取长补短往往能获得很好的效果。

6. 应该建立详尽的文档

建议使用自然语言注释形式化的规格说明书,以帮助用户和维护人员理解系统。

  • 不应该放弃质量标准
  • 不应该盲目依赖形式化方法
  • 应该测试、测试再测试
  • 应该重用
      即使采用了形式化方法,软件重用仍然是降低软件成本和提高软件质量的惟一合理的方法。而且用形式化方法说明的软件构件具有清晰定义的功能和接口,使得它们有更好的可重用性。

二、有穷状态机

(一) 概念

有穷状态机可以准确描述一个系统,是表达规格说明的一种形式化方法。

通过一个简单例子介绍有穷状态机的基本概念:
   一个保险箱上装了一个复合锁,锁有三个位置,分别标记为1、2、3,转盘可向左(L)或向右®转动。这样,在任意时刻转盘都有6种可能的运动,即1L、1R、2L、2R、3L和3R。保险箱的组合密码是1L、3R、2L,转盘的任何其他运动都将引起报警。如图描绘了保险箱的状态转换情况。

三、 Petri网

(一) 概念

并发系统中需要解决的主要问题是定时问题:包括同步问题、竞争条件以及死锁问题。
定时问题常常是因不好的设计或有错误的实现引起的,归根到底又是由不好的规格说明造成的.
Petri网技术可用于确定系统中隐含的定时问题。
Petri网技术在计算机领域应用较多,已经证明,用Petri网可以有效地描述并发活动。
Petri网包含4种元素:
一组位置P、一组转换T、输入函数I及输出函数O。
如图举例说明了Petri网的组成:
一组位置P为{P1,P2,P3,P4}:用圆圈代表;
一组转换T为{t1,t2}:图中用短直线表示转换;
两个用于转换的输入函数,用由位置指向转换的箭头表示,它们是:I(t1)={P2,P4}
I(t2)={P2}
两个用于转换的输出函数,用由转换指向位置的箭头表示,它们是:O(t1)={P1}
O(t2)={P3,P3}

Petri网是一个四元组C=(P,T,I,O),其中:
P={P1,P2,…Pn}是一个有穷位置集,n≥0;
T=(t1,…,tm)是一个有穷转换集,m≥0,且T和不相交;
I:T→P∞为输入函数,是由转换到位置无序单位组的映射;
O:T→P∞为输出函数,是由转换到位置无序单位组的映射。

Petri网的标记是在Petri网中权标(token)的分配。如图中有4个权标:一个在P1中,两个在P2中,P3中没有,还有一个在P4中。

上述标记可以用向量(1,2,0,1)表示。
由于P2和P4中有权标,因此t1启动(即被激发)。
通常,当每个输入位置所拥有的权标数大于等于从该位置到转换的线数时,就允许转换。当t1被激发时,P2和P4上各有一个权标被移出,而P1上则增加一个权标(2,1,0,0)。
Petri网中权标总数不是固定的,在这个例子中两个权标被移出,而P1上只能增加一个权标。

如图4.6,P2上有权标,因此t2也可以被激发。当t2被激发时,P2上将移走一个权标,而P3上新增加两个权标(1,1,2,1)。

Petri网具有非确定性,如果数个转换都达到了激发条件,则其中任意一个都可以被激发。图4.6所示Petri网的标记为(1,2,0,1),t1和t2都可以被激发。假设t1被激发了,则结果如图4.7所示,标记为(2,1,0,0)。
此时,只有t2可以被激发。如果t2也被激发了,则权标从P2中移出,两个新权标被放在P3上,结果如图4.8所示,标记为(2,0,2,0)。

带有标记的Petri网成为一个五元组(P,T,I,O,M),其中标记M,是由一组位置P到一组非负整数的映射:

M:P→{0,1,2,…}
对Petri网的一个重要扩充是加入禁止线
禁止线是用一个小圆圈而不是用箭头标记的输入线,如图所示。
通常,当每个输入线上至少有一个权标,而禁止线上没有权标的时候,相应的转换才是允许的。图中P3上有一个权标而P2上没有权标,因此转换t1可以被激发。

[软件工程] 形式化说明技术相关推荐

  1. 软件工程形式化技术简介

    形式化技术在软件工程中有效的提高了开发的效率.改进了软件开发的质量.减少了开发费用.形式化的技术容易在软件的规约上取得一致性,它属于一种非常有效的交流方式. (一)非形式化的缺点 用自然语言书写的系统 ...

  2. [软件工程导论(第六版)]第4章 形式化说明技术(课后习题详解)

    文章目录 1. 举例对比形式化方法和欠形式化方法的优缺点. 2. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 3. 一个浮点二进制数的构成是:一个可选的符号(+或-),后 ...

  3. 形式化说明技术有穷状态机

    形式化说明技术有穷状态机 一.概述 1.1 软件工程方法分类 按照形式化的程度进行划分. 1.2 非形式化方法的缺点 1.3 形式化方法的优点 1.4 应用形式化方法的准则 二.有穷状态机 2.1 保 ...

  4. ChinaSoft 论坛巡礼 | 面向可解释人工智能的软件工程方法与技术论坛

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

  5. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?...

    在开发大型软件系统的过程中应该使用形式化说明技术. 应用形式化方法的准则:(1)应该选用适当的表示方法.(2)应该形式化,但不要过分形式化.(3)应该估算成本.(4)应该有形式化方法顾问随时提供咨询. ...

  6. 软件工程——形式化方法概述

    目录 前言 一.形式化方法定义 二.形式化方法分类 三.形式化方法意义 四.形式化方法作用 五.形式化方法优缺点 1.优点 2.缺点 前言 形式化方法英文的名称是formalmethods,形式化方法 ...

  7. 软件工程课程设计——技术栈【Go+Vue+PGSQL】的人事管理系统

    一.项目架构介绍 项目技术栈:Go+Vue+PGSQL 开发工具:IDEA2021.1 后端开发语言:Go 前端框架:Vue3.0(集成ElementUI组件) 后端框架:Gin.Gorm 数据库:P ...

  8. 鉴源论坛 · 观模丨µC/OS内核的形式化验证技术

    作者 | 郭建 上海控安可信软件创新研究院特聘专家          丁继政 上海控安研发中心研究员 版块 | 鉴源论坛 · 观模 操作系统作为软件系统的核心,其安全性与可靠性是构造高可信软件最为关键 ...

  9. 软件工程-系统需求获取技术、结构化需求建模和系统设计(上)

    目录 一.患者监护系统 二.机票预订系统 三.某商场进销存管理的业务流程图 四.银行计算机储蓄系统 五.复印机工作的状态转换图 六.火车售票系统 七.给出某系统的数据流程图 一.患者监护系统 目前住院 ...

  10. ChinaSoft 论坛巡礼 | 高可信嵌入式软件工程技术论坛

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

最新文章

  1. docker 部署 redis
  2. weka: FCBFSearch
  3. Oracle 临时表解决ORA-22992问题
  4. 151. 翻转字符串里的单词(思路+详解)
  5. Django模板(编写html代码
  6. Win7下安装git
  7. JavaScript操作DropDownList(Set value to dropdownlist with JavaScript)
  8. 模糊搜索cell效果
  9. js的浅拷贝与深拷贝
  10. eplan和西门子plc的对接_基于EPLAN的西门子电路图高效设计
  11. 视频基本知识  AD转换和YUV,cb cr基本知识
  12. 基于ebpf统计docker容器网络流量
  13. BIOS中英文对照表
  14. 教你用python画动态爱心表白
  15. 项目经理需要什么职称 计算机,项目经理要什么职称
  16. 传奇服务器如何修改地图和刷怪,传奇如何将怪物刷在指定地图?
  17. 单片机控制光耦开关继而控制电机转动
  18. 2021-2027全球及中国特种机器人行业研究及十四五规划分析报告
  19. 英伟达3090Ti旗舰显卡,21Gbps速率,450W功耗和新接口
  20. 路由交换技术之代理ARP

热门文章

  1. Windows10设置动态桌面壁纸
  2. dj清风试听云盘地址
  3. android 音效均衡器,App+1 | 不懂均衡器调校也能量身定制,无需折腾的 Android 音效提升工具...
  4. js对象写入键值对_js对象添加键值对
  5. 通达信标记符号_通达信49个图标,高手指教,通达信软件里的股票标记符号,能增加吗...
  6. javascript前端导出Excel简单写法
  7. SpreadJS 15.0.5 SpreadJS Excel在线设计
  8. navicat运行db文件_在 Navicat for MongoDB 使用文档
  9. 用js判断ie版本,ie11被识别为ie7
  10. PuTTY/PuttyGen创建密钥及利用密钥登录服务器