第4章 形式化说明技术ppt课件
软件工程 第4章 形式化说明技术

行为建模
1)
2)
3)
系统的需求规格说明通常是用自然语言来叙 述的,但是用自然语言描述往往会出现二义 性。 为了直观地分析系统的动作,从特定的视点 出发描述系统的行为,需要采用动态分析的 方法。 最常用的动态分析方法
有穷状态机
时序图 Petri网
状态迁移图
状态迁移图是通过描述系统的
状态及引起系统状态转换的事 件来表示系统的行为。
形式化方法
形式化方法是建立在严格数学基础上、具有精确数学语义 的开发方法,即就是用数学语言来描述软件的设计规约。 形式化方法可以分为形式化描述和建立在形式化描述基础之 上的形式化开发 形式化的描述:用形式化的语言(具有严格的语法语义定 义的语言)描述描述软件系统及其行为模式,以更好地刻 画软件系统的性质。 形式化的开发:用形式化的语言来描述软件需求和特征, 并且通过推理验证来保证最终的软件产品是否满足这些需 求和具备这些特征,符合给定的行为模式。
应用形式化方法的准则
应该选用适当的形式化方法:主要包括有限状态机、时 序图、Petri网、Z、VDM等。 应该形式化,但不要过分形式化 应该估算成本 应该有形式化方法顾问随时提供咨询 不应该放弃传统的开发方法 应该建立详尽的文档 不应该放弃质量标准 不应该盲目依赖形式化方法 应该测试、测试再测试 应该重用
半形式化方法
软件工程使用方法可分成:非形式化、半形式化和形式化 半形式化: 结构化分析(SA)方法 利用图形等半形式化的描述方式表达需求:用数据流图、 状态转换图或实体-联系图建立数据、行为和功能模型, 形成需求说明书中的主要部分。 利用结构化语言描述加工逻辑:结构化语言是介于自然 语言和形式语言之间的一种半形式语言。加工逻辑结构 可分成外层和内层两层:外层用来描述控制结构,采用 顺序、选择、重复三种基本结构;内层对于顺序执行和 循环执行的动作,用结构化语言描述。 缺点:可能存在矛盾、二义性、含糊性、不完整性及抽 象层次混乱等问题。
第四章 形式化说明技术

EBON(e,f)
反之,如果电梯到达f层,而且电梯按钮是打 开的,于是它就会熄灭。这条转换规则可以形
EBON(e,f)+EAF(e,f) EBOFF(e,f)
软件学院 软件工程导论
图 楼层按钮的状态转换图
令FB(d,f) 表示f层请求电梯向d方向运动的按钮。 FB(d,f)有两个状态:
图 Petri网的组成 Petri网包含四中元素:一组位置P,一组转换T,输 入函数I(用由位置指向转换的箭头表示)以及输出函 软件学院 软件工程数导论O(用由转换指向位置的箭头表示).
图4.6带标记的Petri网
Petri网的标记是在Petri网中标权(token)的分配。 通常,当每个输入位置所拥有的权标数大于等于从该位置到 转换的线数时,就允许转换。
有穷状态机
当前状态〔菜单〕+事件〔所选择的项 下个状
态 为了对一个系统进行规格说明,通常都需要对有穷
状态机做一个很有用的扩展,即在前述的5元组中 加入第6个组件——谓词集P,即把有穷状态机扩展为 一个6元组,其中每个谓词都是系统全局状态Y的函 数。转换函数T现在是一个从(J-F)×K×P到J的函
水库深度数据,这些数字应该不 完保留6个月。” “AVERAGE命令的功能是,整在PC上显示由某个传感 器在两个日期之间获取的平均性水深。”
如果两个日期在六个月之前,怎么办?
次抽 在非常抽象的陈述中混进混一些象关于细节的低层次描述
乱层
软件学院 软件工程导论
形式化方法的优点
在开发大型软件系统的过程中应用数学,能够 带来如下优点:
• FBON(d,f):楼层按钮(d,f)打开 • FBOFF(d,f):楼层按钮(d,f)关闭
第04章 形式化说明技术

S(U,e,f)+DC(e,f)=>M(U,e,f+1):
如果电梯 e 停在 f 层准备向上(U)移动,且门已经关闭,则电梯将向上一楼层移动。 如果电梯 e 停在 f 层准备向下(D)移动,且门已经关闭,则电梯将向下一楼层移动。 如果电梯 e 停在 f 层没有移动请求(N),且门已经关闭,则电梯等待移动。
4.1.1非形式化方法的缺点
矛盾性
在需求规格说明书(Reqirement Specifications)中对同一问题前后存 在不同的描述。 需求规格说明书的读者对其中同一问题的描述存在不同的理解。 需求规格说明书中对某一问题的描述不清晰、不可理解、不知如何实现 、不具可操作性。 需求规格说明书中对某一问题的描述不完整。只说明了局部,没有说明 整体;或者只说明了概要,未说明细节。因此不具可操作性。 在不同层次的抽象模型中内容混乱,如在高层模型中混有底层细节,造 成读者不能理解系统的整体功能和下级功能。
有穷状态机可以比较容易地把它转变成设计或程序代码:
可用数学方法证明软件工程各阶段的正确性(可回溯性), 如“设计”符合“规格说明”、“编码实现”符合“设计” 。
形式化方法的适用性问题
形式化方法能较好地解决需求的“二义性”、“含糊性”问 题。但不能解决需求的矛盾性、完整性等问题,这些问题涉 及工程管理。
4.1.3 应用形式化方法的准则
应该选用适当的规格说明表示方法 应该采用形式化,但不要过分形式化 应该估算推行形式化的成本 应该引入形式化方法的顾问与咨询 应该结合传统的、证明有效的开发方法
一个保险箱上装了一个复合锁,锁有三个位臵,分别标记为 1 、 2 、 3 ,转盘可向左 (L) 或向右 (R) 转动。这样,在任 意时刻转盘都有 6 种可能的运动,即 1L 、 1R 、 2L 、 2R 、 3L 和 3R 。保险箱的组合密码是 1L 、 3R 、 2L ,转盘 的任何其他运动都将引起报警。
《形式化语言》PPT课件

4.2有穷状态机
• 4.2.1概念 • 一个有穷状态机包括5部分: • J是一个有穷的非空状态集; • K是一个有穷的非空输入集 • T是一个从(J-F)×K到J的转换函数 • S∈J,是一个初始状态 • F∈J,是终态集
5
图4.1保险箱的状态转换图
6
7
保险箱的有穷状态机
• 状态集J:{保险箱锁定,A,B,保险箱解锁, 报警}
2.开关按键和塑胶按键设计间隙建议 留0.05~0.1mm,以防按键死键。 3.要考虑成型工艺,合理计算累积公 差,以防按键手感不良。
图4.4电梯的状态转换图
16
形式化转换规则
• S(U,e,f)+DC(e,f) → M(U,e,f+1) • S(D,e,f)+DC(e,f) → M(D,e,f-1) • S(N,e,f)+DC(e,f) → W(e,f)
9
电梯按钮的状态转换图
• EB(e,f):表示按下电梯e内的按钮,并请求到f 层去。有两个状态:
--EBON(e,f):电梯按钮(e,f)打开 --EBOFF(e,f):电梯按钮(e,f)关闭 两个事件: --EBP(e,f):电梯按钮(e,f)被按下 -- EAF(e,f):电梯e到达f层
10
形式化转换规则
控制器决定在当前楼层电梯是否停下 • RL:电梯按钮或楼层按钮被按下进入打开状态
14
1.什么是传统机械按键设计?
传统的机械按键设计是需要手动按压按键触动PCBA上的开关按键来实现功 能的一种设计方式。
传统机械按键结构层图:
按键
PCBA
开关键
传统机械按键设计要点:
1.合理的选择按键的类型,尽量选择 平头类的按键,以防按键下陷。
软件工程导论课件之第4章 形式化说明技术(第五版)(张海藩编著)_百度文库

第4章 形式化说明技术
前言 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
4.1 概述
4.1.1 非形式化方法的缺点
用自然语言(典型的非形式化方法)书写的系统规 格说明书,可能存在矛盾、二义性、含糊性、不完 整性及抽象层次混乱等问题。
矛盾是指一组相互冲突的陈述。
矛盾是指一组相互冲突的陈述。(不同系统分析员定义范围不同) 二义性是指读者可以用不同方式理解的陈述。 含糊性,例如:这样的需求:“系统界面应该是对 用户友好的。”实际上,这样笼统的陈述并没有给 出任何有用的信息。 不完整性可能是在系统规格说明中最常遇到的问题 之一。(如规格中没有考虑登录失败的转向的页面,即考虑问题不全面) 抽象层次混乱是指在非常抽象的陈述中混进了一些 关于细节的低层次陈述。(总体设计中混入了详细设计,分不清他们)
第4章 形式化说明技术
前言 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
形式化说明技术=形式化方法,概念等同。
软件生命周期包括哪几个阶段?
可行性研究
需求分析 总体设计 详细设计
编码和单元测试 描述“系统规格说明书 ”的方法,有哪些? 需求规格说明书
总体设计规格说明书
状态
事件/输入
图4.1 保险箱的状态转换图
图4.1是一个有穷状态机的状态转换图。状态转换 并不一定要用图形方式描述,表4.1的表格形式也 可以表达同样的信息。
转换函数:当前状态+事件/输入下个状态
从上面这个简单例子可以看出,一个有穷状态机包 括下述5个部分:状态集J、输入集K、由当前状态 和当前输入确定下一个状态(次态)的转换函数T、 初始态S和终态集F。对于保险箱的例子,相应的 有穷状态机的各部分如下。 状态集J:{保险箱锁定,A,B,保险箱解锁,报 警}。 输入集K:{1L,1R,2L,2R,3L,3R}。 转换函数T:如表4.1所示。(当前状态+事件/输入下个状态) 初始态S:保险箱锁定。 终态集F:{保险箱解锁,报警}。
04章形式化说明技术

04章形式化说明技术形式化说明技术(Formal Specification Techniques)是一种系统性、精确地描述和定义软件系统执行行为、功能和性质的技术方法。
它通过使用数学语言和形式规约的方法,将软件系统的设计和实现过程从自然语言的模糊性和歧义性中解放出来,从而改善了软件开发和维护的效率和质量。
形式化说明技术的核心思想是将软件系统描述为一个数学模型,通过形式化的推理和证明,确保系统满足设计要求并具备所需的性质。
形式化说明技术不仅能够精确地描述系统的行为和功能,还可以检查系统的正确性、一致性、完备性、可靠性和安全性等方面的属性,提前发现和解决潜在的问题。
形式化说明技术的应用范围广泛,包括需求分析、系统设计、编码验证、软件测试、系统仿真和代码生成等方面。
下面将介绍几种常见的形式化说明技术。
1. 判定性有穷状态自动机(Deterministic Finite State Automaton,DFSA):DFSA 是一种常用的形式化说明技术,用于描述系统的状态和状态转移。
它可以形式化地描述系统的行为,通过状态转移图来表示系统的状态变化,从而帮助开发人员更好地理解和设计系统。
2. 时序逻辑(Temporal Logic):时序逻辑是一种扩展的命题逻辑,用于描述系统的时序性质。
通过形式化的规约、语义和推理,可以验证系统是否满足时序性质,如安全性、活性、不变性等。
时序逻辑广泛应用于软硬件系统的验证和验证。
3. Petri 网(Petri Nets):Petri 网是一种用于建模和分析并发系统的图形化形式化说明技术。
Petri 网通过描述系统的状态、变迁和资源,揭示系统的并发行为和资源竞争情况,从而帮助开发人员理解和设计并发系统。
4. Z 规范(Z Specification):Z 规范是一种基于集合论和一阶谓词逻辑的形式化说明技术,用于描述系统的状态、操作和约束等。
Z 规范通过形式化地定义系统的状态集合、操作集合和约束条件,帮助开发人员更好地理解和设计系统。
形式化说明技术

(3) 应该估算成本。为了使用形式化方法,通常需 要事先进行大量的培训。最好预先估算所需的成本 并编入预算。 (4) 应该有形式化方法顾问随时提供咨询。绝大多 数软件工程师对形式化方法中使用的数学和逻辑并 不很熟悉,而且没受过使用形式化方法的专业训练, 因此,需要专家指导和培训。 (5) 不应该放弃传统的开发方法。把形式化方法和 结构化方法或面向对象方法集成起来是可能的,而 且由于取长补短往往能获得很好的效果。 (6) 应该建立详尽的文档。建议使用自然语言注释 形式化的规格说明书,以帮助用户和维护人员理解 系统。
图4.5 Petri网的组成
一组位置P为{P1,P2,P3,P4},在图中用圆圈 代表位置。 一组转换T为{t1,t2},在图中用短直线表示转 换。 两个用于转换的输入函数,用由位置指向转换的箭 头表示,它们是: I(t1)={P2,P4} I(t2)={P2} 两个用于转换的输出函数,用由转换指向位置的箭 头表示,它们是: O(t1)={P1} O(t2)={P3,P3}
第一条约束C1:每部电梯有m个按钮,每层对应一 个按钮。当按下一个按钮时该按钮指示灯亮,指示 电梯移往相应的楼层。当电梯到达指定的楼层时, 按钮将熄灭。 为了用Petri网表达电梯按钮的规格说明,在Petri 网中还必须设置其他的位置。电梯中楼层f的按钮, 在Petri网中用位置EBf表示(1≤f≤m)。在EBf上有一 个权标,就表示电梯内楼层f的按钮被按下了。
所谓形式化方法,是描述系统性质的基 于数学的技术,也就是说,如果一种方法有 坚实的数学基础,那么它就是形式化的。
4.1 概述
4.1.1 非形式化方法的缺点
用自然语言书写的系统规格说明书,可 能存在矛盾、二义性、含糊性、不完整性及 抽象层次混乱等问题。 所谓矛盾是指一组相互冲突的陈述。 二义性是指读者可以用不同方式理解的 陈述。
形式化说明技术

半形式化方法(语法和语义都不太严谨) :系统流程图、数据流图、数 据字典、ER图、数据库范式、状态转换图、层次方框图、Warnier图、IPO 图、IPO表………
4.1.1非形式化方法的缺点
矛盾性
在需求规格说明书(Reqirement Specifications)中对同一问题前后存在不 同的描述。
见“状态转换表”
初始态 S :
保险箱锁定
终态集 F :
{保险箱解锁,报警}
有穷状态机——形式化表示
一个有穷状态机可以表示为一个 5 元组 (J ,K,T,S,F) ,其中:
J 是一个有穷的非空状态集; K 是一个有穷的非空输入集; T 是一个从 (J-F) × K 到 J 的转换函数; S ∈ J ,是一个初始状态; F ∪ J ,是终态集。
4.2 有穷状态机
有穷状态机概念 有穷状态机例子 有穷状态机方法评价
4.2.1 有穷状态机概念
通过简单例子引入有穷状态机的基本概念:
一个保险箱上装了一个复合锁,锁有三个位置,分别标记为 1 、 2 、 3 ,转盘可向左 (L) 或向右 (R) 转动。这样,在任意 时刻转盘都有 6 种可能的运动,即 1L 、 1R 、 2L 、 2R 、 3L 和 3R 。保险箱的组合密码是 1L 、 3R 、 2L ,转盘的任何其 他运动都将引起报警。
第4章 形式化说明技术
4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
4.1 概述
4.1.1非形式化方法的缺点
非形式化是指用自然语言描述软件需求(如系统规格说明书)。因此, 可能存在矛盾性、二义性、含糊性、不完整性、抽象层次混乱等问题。
软件工程第四章形式化说明技术

N
姓名 学号
性别 系
学生
N
M
学
年级 成绩
课程号
课程
课名
学时
学分
图3.2 某校教学管理ER图
3.5 数据规范化
通常用范式定义消除数据冗余的程度。第一范式(1 NF)数据冗余度 最大,第五范式(5 NF)数据冗余度最小。但范式级别越高,(1)存 储同样多数据需要分解成更多张表,“存储自身”的过程越复杂;(2) 数据存储结构与基于问题域的结构间的匹配程度也随之下降,需求变 化时数据稳定性下降;(3)需要访问的表增多,性能下降。(第三范式) 第一范式:每个属性都是原子值 第二范式:满足第一范式条件,每个关键字属性都仅有关键字决定 第三范式:符合第二范式条件,每个非关键字属性都仅有关键字决 定,并且一个非关键字属性值不依赖于另一个非关键字属性值
用户和开发人员共同组成联合小组
加强联系 促进交流 增进合作
3.2.2 面向数据流自顶向下求精
借助数据流图、数据字典、IPO图等,细化、完善详 细的数据流图,等到各处理环节对应的功能。
需要分解
有补充修正
分析追踪数据 流图
用户复查
无补充修 正
细化 数据流图
不需分解
图3.1 需求分析基本过程
3.2.3 简易的应用规格说明技术
3.7.3 IPO图
在需求分析阶段可以使用IPO图简略地描述数据流图中各个处理 的基本算法(着重说明处理功能而不是具体实现功能的算法)。 当然,在需求分析阶段,IPO表中的许多附加信息暂时还不具备。 但是,在软件设计阶段可以进一步补充、修正这些表,继续作为 设计阶段的文档。这正是在需求分析阶段用IPO表作为描述基本算 法的工具的重要优点。
(1)选择合适的形式化方法;适用于当前项目 (2)需要形式化,但不能过渡形式化,不能放弃传统的需求 表达方法; (3)应该估算成本; (4)应该有形式化方法的专家提供指导; (5)不应该放弃传统的开发方法;
软件工程导论 第4章 形式化说明技术1

形式化说明技术按照形式化的程度,可以把软件工程使用的方法划分成非形式化,半形式化和形式化3类。
用自然语言描述需求规格说明,是典型的非形式化方法。
用数据流图或实体—联系图建立模型,是典型的半形式化方法。
所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。
4.1 概述4.1.1 非形式化方法的缺点用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。
所谓矛盾是指一组相互冲突的陈述。
例如,规格说明书的某一部分可能规定系统必须监控化学反应容器中的温度,而另一部分(可能由另一位系统分析员撰写)却规定只监控在一定范围内的温度。
如果这两个相互矛盾的规定写在同一页纸上,自然很容易查出,不幸的是,它们往往出现在相距几十页甚至数百页的两页纸中。
二义性是指读者可以用不同方式理解的陈述。
例如,下面的陈述就是具有二义性:“操作员标识由操作员姓名和密码组成,密码由6位数字构成。
当操作员登录进系统时它被存放在注册文件中。
”在上面这段陈述中,“它”到底代表“密码”还是“操作员标识”,不同的人往往有不同的理解。
系统规格说明书是很庞大的文档,因此,几乎不可避免地会出现含糊性。
例如,我们可能经常在文档中看到类似下面这样的需求:“系统界面应该是对用户友好的。
”实际上,这样笼统的陈述并没有给出任何有用的信息。
不完整性可能是在系统规格说明中最常遇到的问题之一。
例如,考虑下述的系统功能需求:“系统每小时从安放在水库中的深度传感器获取一次水库深度数据,这些数值应该保留6个月。
”假设在系统规格说明书中还规定了某个命令的功能:“AVERAGE命令的功能是,在PC机上显示由某个传感器在两个日期之间获取的平均水深。
”如果在规格说明书中对这个命令的功能没有更多的描述,那么,该命令的细节是严重不完整的,例如,对该命令的描述没有告诉我们,如果用户给定的日期是在当前日期的6个月之前,那么系统应该做什么。
第4章形式化说明技术-PPT精品

保险箱的状态转换图
2020/5/28
tj5m
有穷状态机的组成包括5个部分:状态集J、输入集 K、由当前状态和当前输入确定下一个状态(次态) 的转换函数T、初始态S和终态集F。
保险箱的有穷状态机的各部分如下:
状态集J:{保险箱锁定,A,B,保险箱解锁,报 警}。
输入集K:{1L,1R,2L,2R,3L,3R}。
2020/5/28
tj8m
Petri网的组成示例:
2020/5/28
tj9m
一组位置P为{P1,P2,P3,P4 一组转换T为{t1,t2} 两个用于转换的输入函数: I(t1)={P2,P4} I(t2)={P2} 两个用于转换的输出函数: O(t1)={P1} O(t2)={P3,P3}
2020/5/28
2020/5/28
t1j7m
1. 给定的集合
一个Z规格说明从一系列给定的初始化集合(不需 要详细定义的集合)开始。
这种集合用带方括号的形式表示。
例:对于电梯问题,给定的初始化集合称为 Button,即所有按钮的集合:
〔Button〕
2020/5/28
t1j8m
2. 状态定义 一个Z规格说明由若干个“格(schema)”组成, 每个格含有一组变量说明和一系列限定变量取值 范围的谓词。
例:
2020/5/28
t1j9m
3. 初始状态
指系统第一次开启时的状态。
例:对于电梯问题来说:
Button_Init ˆ Button_State|pushed=Φ〕
上式表示,当系统首次开启时pushed集为空,即 所有按钮都处于关闭状态。
2020/5/28
t2j0m
4. 操作
软件工程导论第4章 形式化说明技术

形式化方法的分类
4.1 续
形式化方法是应用严格的形式符号和数学方法定义 或描述目标软件系统需求规格说明的一种方法。
根据对需求规格说明的定义方式分类:
⒈面向模型的形式方法。
又称基于状态描述的形式方法。 基本思想:利用域、元组、集合、序列、映射、包等这些已知特性
的数学抽象概念来为目标软件系统的状态特征和行为特征构造形式 语义模型。语义模型就作为目标软件系统需求规格的形式说明。 主要代表:VDM方法(维也纳开发方法)、Z语言方法等。
⒉代数构造形式方法。
目标软件系统的需求规格说明提供一些特殊的构造机制,并以代数 构造方式描述目标系统的结构、功能。
软件形式开发方法
4.1 续
将形式化方法应用于软件开发过程称为软件形式 开发方法。
首先,在需求分析阶段的信息收集和信息分析两 项工作中,采用形式化的规格说明语言构造目标 软件系统严格的形式需求规格说明即形式语义。
状态 • EBON(e,f):电梯按钮(e,f)打开 • EBOFF(e,f):电梯按钮(e,f)关闭
例3:电梯系统
事件
4.2 续
• EBP(e,f) :电梯按钮(e,f)被按下。
• EAF (e,f) :电梯e到达f层。
谓词
V(e,f)=S(U,e,f)or S(D,e,f)or S(N,e,f)
信息的描述过程中遗留了某个方面。
抽象层次混乱
在非常抽象的陈述中混进了一些关于细节的低层陈述。
形式化方法的主要思想
4.1 续
形式化需求分析方法的主要思想,是利用形式化 规格说明语言严格地定义用户需求,并采用数学 推演的方法证明需求定义的性质。
从某种意义上讲,形式化方法是克服需求分析阶 段中主要困难(不精确性、不一致性和不完全性) 的有效途径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 谓词:
为了对一个系统进行规格说明,通常都需要对有穷
状态机进行很有用的扩展,即在前述的5元组中加
入第 6 个组件——谓词集P,
从而把有穷状态机扩展为一个 6 元组,
其中每个谓词都是系统全局状态 Y的函数。
转换函数T现在是一个从(J-F)×K× P到 J 的函数。
现在的转换规则形式如下:
当前状态 + 事件 +
4.1概述
4.1.1非形式化方法的缺点
用自然语言书写的系统规格说明书,可能存 在矛盾、二义性、含糊性、不完整性及抽象层次 混乱等问题。
4.1 概述
4.1.1 形式化方法的优点
1)能够简洁准确地描述物理现象、对象或动作的 结果,因此是理想的建模工具。
2)在软件开发的过程中使用数学可以在不同的软 件工程活动之间平滑地过渡。不仅功能规格说 明,而且系统设计也可以用数学表达。
▼ FBOFF(d,f)+FBP(d,f)+not S(d,1…n,f)FBON(d,f),
反之,
▼ FBON(d,f)+EAF(1…n,f)+S(d,1…n,f)FBOFF(d,f),
其中,d= U or D。
◆ V(e,f):讨论电梯按钮状态转换规则时定义的谓 词,可以用谓词 S(d,e,f)重新定义如下:
按钮分别请求电梯上行和下行; 4)C3:当对电梯没有请求时,它关门并停在当前楼层。 2. 现在使用一个扩展的有穷状态机对本产品进行规格说明: 1)两个按钮集:电梯按钮
楼层按钮
2)电梯按钮的状态转换图:
◆ EB(e,f):表示按下电梯 e内的按钮,并请求到 f层去; ◆ EBON(e,f):电梯按钮(e,f)打开; ◆ EBOFF(e,f):电梯按钮(e,f)关闭; ◆ EBP(e,f):电梯按钮(e,f)被按下; ◆ EAF(e,f):电梯 e到达 f 层; ◆ V(e,f):为了定义与这些事件和状态相联系的状态转换规则
◆ 电梯的状态转换规则: (为简单起见,这里给出的规则仅发生在关门之时) ▲ S(U,e,f)+DC(e,f) M(U,e,f+1) ▲ S(D,e,f)+DC(e,f) M(D,e,f-1) ▲ S(N,e,f)+DC(e,f) W(e,f)
其中1…n表示或为1或为2…或为n。 ◆ S(d,e,f):是一个谓词,含义是:电梯e停在 f 层并且移动方
向由 d 确定; d=U:向上 ,d=D:向下, d=N:待定
◆ 楼层按钮的形式化转换规则为: 如果当前状态是:在 f 层请求电梯向 d 方向运动的 楼层按钮处于关闭状态, 事 件是:该楼层按钮被按下, 谓 词是:当时没有正停在 f 层准备向 d方 向移动的电梯, 下个状态是: 则该楼层按钮打开。 状态转换规则的形式化描述如下:
下个状态。
4.2.2 实例
现在用有穷状态机技术给出电梯系统的规格说明: 1.首先给出用自然语言描述的对电梯系统的需求:
1)在一幢m层的大厦中需要一套控制n部电梯的产品,要求 这n部电梯按照约束条件C1,C2和C3在楼层间移动;
2)C1:每部电梯内有m个按钮,每个按钮代表一个楼层; 3)C2:除了大厦的最低层和最高层之外,每层楼都有两个
反之,
▲ EBON(e,f)+EAF(e,f) EBOFF(e,f)
3)楼层按钮的状态转换图
◆ FB(d,f):表示 f 层请求电梯向 d方向运动的按钮; ◆ FBON(d,f):楼层按钮(d,f)打开; ◆ FBOFF(d,f):楼层按钮(d,f)关闭; ◆ FBP(d,f):楼层按钮(d,f)被按下; ◆ EAF(1…n,f):电梯1或…或n到达 f 层;
需要一个谓词V(e,f),它的含义是:电梯 e停在f层。
◆ 电梯按钮的状态转换规则: 如果当前状态是:电梯按钮(e,f)处于关闭状态; 事 件是:电梯按钮(e,f)被按下; 谓 词是:电梯 e不在 f 层; 下个状态是: 则该电梯按钮打开发光。 状态转换规则的形式化描述如下:
▲ EBOFF(e,f)+EBP(e,f)+not V(e,f) EBON(e,f)
•
2. 可以使用更形式化的术语来描述有穷状态机: 一个有穷状态机可以表示为: 一个5元组(J,K,T,S,F), 其中: J 是一个有穷的非空状态集; K是一个有穷的非空输入集; T 是一个从(J-F)×K到J的转换函数; S∈J,是一个初始状态;
F J,是终态集。
3. 状态转换的形式:
当前状态 + 事件 下个状态
V(e,f) =S (U,e,f) or S (D,e,f) or S (N,e,f)
4)定义电梯的3个状态: ▲ M(d,e,f):电梯 e正沿 d方向移动,即将到达的
是第 f 层; ▲ S(d,e,f): 电梯 e 停在 f 层,将朝 d方向移动 (尚
未关门); ▲ W(e,f): 电梯 e 在 f 层等待 (已关门)。
4.2 有穷状态机
4.2.1 概念
1. 通过 “保险箱开锁” 这个例子介绍有穷状态机的 基本概念。 一个保险箱上装了一个复合锁,锁有三个位置, 分别标记为1、2、3,转盘可向左(L)或向右(R) 转动。这样,在任意时刻转盘都有6种可能的运 动,即1L、1R、2L、2R、3L和3R。保险箱的 组合密码是:1L、3R、2L,转盘的任何其他运 动都将引起报警。 状态转换情况如表所示:
5)电梯 的状态 转换图
◆ S (d,e,f) :由 S (U,e,f)、S (N,e,f) 和 S (D,e,f) 组合; ◆ DC(e,f): 电梯 e 在楼层 f 关上门; ◆ ST(e,f): 电梯 e 靠近 f 层时触发传感器,电梯控制器决定在当
前楼层电梯是否停下; ◆ RL: 电梯按钮或楼层按钮被按下进入打开状态,登录需求。
3)数学作为软件开发工具的最后一个优点是它提 供了高层确认的手段。可以使用数学方法证明, 设计符合规格说明,程序代码正确地实现了设 计结果。
4.1.2 应用形式化方法的准则
(1) 应该选用适当的表示方法; (2) 应该形式化,但不要过分形式化; (3) 应该估算成本; (4) 应该有形式化方法顾问随时提供咨询; (5) 不应该放弃传统的开发方法; (6) 应该建立详尽的文档; (7) 不应该放弃质量标准; (8) 不应该盲目依赖形式化方法; (9) 应该测试、测试再测试; (10)应该重用。