第4章形式化技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形式化说明技术
人在理解用自然语言描述的规 格说明时,容易产生二义性。为了 克服非形式化方法的缺点,人们把 数学引入软件开发过程,创造了基 于数学的形式化方法。
系统规格说明书是很庞大的文档,因此,
几乎不可避免地会出现含糊性。
抽象层次混乱是指在非常抽象的陈述中 混进了一些关于细节的低层次陈述。这样的规 格说明书使得读者很难了解系统的整体功能结 构。
Petri 网的标记是在 Petri 网中权标 (token) 的分配。例如,在图2 中有 4 个权标, 其中一个在 P1中,两个在 P2中,P3 中没有, 还有一个在 P4中。
由于 P2和 P4 中有权标,因此 t1启动 ( 激发 )。通常,当每个输入位置所拥有的权标 数大于等于从该位置到转换的线数时,就允许 转换。当 t1 被激发时,P2 和 P4上各有一个 权标被移出,而 P1上则增加一个权标。Petri 网中权标总数不是固定的,在这个例子中两个 权标被移出,而 P1上只能增加一个权标。
EBf 被关闭,在位置 Ff 上出现一个新权标,即转
换的激发使电梯由 g 层驶到f层。
2. 楼层按钮
第二个约束条件中描述了楼层按钮的行为。
第二条约束 C2:除了第一层与顶层之外,每个 楼层都有两个按钮,一个要求电梯上行,另一个 要求电梯下行。这些按钮在按下时发亮,当电梯 到达该层并将向指定方向移动时,相应的按钮才 会熄灭。
注意,输出函数O ( t2 )中有两个P3,是因为 有两个箭头由 t2 指向P3。 更形式化的 Petri 网结构,是一个四元组 C=(P,T,I,O)。 其中, P={P1,…,Pn}是一个有穷位置集, n≥0。 T={t1,…,tm}是一个有穷转换集,m≥0, 且T和P不相交。 I:T→P∞为输入函数,是由转换到位置无序 单位组(bags)的映射。 O:T→P∞为输出函数,是由转换到位置无
1. 电梯按钮
电梯问题的第一个约束条件描述了电梯按钮
的行为,现在复述一下这个约束条件。
第一条约束 C1:每部电梯有m个按钮,每层对
应一个按钮。当按下一个按钮时该按钮指示灯亮,
指示电梯移往相应的楼层。当电梯到达指定的楼
层时,按钮将熄灭。
为了用 Petri 网表达电梯按钮的规格说 明,在Petri 网中还必须设置其他的位置。
有穷状态机的概念在计算机系统中应用
得非常广泛。例如,每个菜单驱动的用户界面
都是一个有穷状态机的实现。一个菜单的显示
和一个状态相对应,键盘输入或用鼠标选择一
个图标是使系统进入其他状态的一个事件。状
态的每个转换都具有下面的形式:
当前状态〔菜单〕+事件〔所选择的项〕
下个状态。
为了对一个系统进行规格说明,通常都 需要对有穷状态机做一个很有用的扩展,即在 前述的 5 元组中加入第 6个组件——谓词集P, 从而把有穷状态机扩展为一个 6 元组,其中每 个谓词都是系统全局状态 Y 的函数。转换函数 T 现在是一个从(J-F)×K×P到 J的函数。现 在的转换规则形式如下: 当前状态〔菜单〕+事件〔所选择的项〕+谓 词下个状态。
(1) 应该选择一种适用于当前项目的形式化
说明的技术。
(2) 不要过分形式化。如果用形式化方法仔
细说明系统中易出错的或关键的部分,则只用
适中的工作量就能获得较大回报。
(3) 应该估算成本。
(4) 不应该放弃传统的开发方法。把形式化
方法和结构化方法或面向对象方法集成起来取
长补短。
(5) 不应该盲目依赖形式化方法。
图 6 Petri 网表示的电梯按钮
问题: “电梯按钮只有在第一次被按下时才 会由暗变亮,以后再按它则只会被忽略“。 你能仅使用不带禁止线的Petri网解决上述 问题吗? 注意,下述Petri 网元素是正确的:
C PR
假如 PR 表示“按下按钮”,C 表示“清除令牌”
答案:
C PR
设置 按钮灯亮 复位 按钮灯灭
Petri (PN) 网包含 4 种元素: 一组位置 P 一组转换 T 输入函数 I 以及输出函数O。 下图 1 说明了Petri 网的组成。
图1 Petri 网的组成
一组位置P为{P1,P2,P3,P4},在图中 用圆圈代表位置。 一组转换T为{t1,t2},在图中用短直线表 示转换。 两个用于转换的输入函数,用由位置指向转换 的箭头表示,它们是: I ( t1 ) ={P2,P4} I ( t2 ) ={P2} 两个用于转换的输出函数,用由转换指向位置 的箭头表示,它们是: O ( t1 ) ={P1} O ( t2 ) ={P3,P3}
本书的扩展状态图,包括预约部分。 设: B — 借阅 R — 还书 YY — 预约 YB — 预约借书
预约
YB
B YY
图书馆
借出
·
R
例子4: 使用PN表示“图书馆借书”案例中一
本书的扩展状态图,包括预约和超期罚款
部分。
( 请同学自己画出 )
例子 5 ( 电梯问题实例 )
现在把 Petri 网应用于电梯问题。当用 Petri 网表示电梯系统的规格说明时,每个楼层 用一个位置 Ff 代表(1≤f≤m),在 Petri 网中电梯 是用一个权标代表的。在位置 Ff 上有权标,表示 在楼层 f 上有电梯。
(6) 应该测试。 (7) 应该重用。即使采用了形式化方法,软 件重用仍然是降低软件成本和提高软件质量的 惟一合理的方法
一. 有穷状态机
1 概念
一个有穷状态机可以表示为一个5元组(J, K,T,S,F),其中: J 是一个有穷的非空状态集; K是一个有穷的非空输入集; T是一个从 (J-F)×K到 J 的转换函数; S∈J,是一个初始状态; FJ,是终态集。
最后,考虑第三条约束。
第三条约束 C3:当电梯没有收到请求时,它
将留在当前楼层并关门。
这条约束很容易实现,如图 7 所示,当没有
请求( FBfu 和 FBfd 上无权标)时,任何一个转
换 “电梯在运行”都不能被激发。
小结
1. 形式化方法优点:
基于数学的形式化方法无二义性、描述完 整、易于转换、易于生成代码。 2. 把形式化方法和欠形式化方法有机地结合 起来,使它们取长补短,应该能获得更理想的 效果。
在图2 中P2上有权标,因此 t2 也可以被 激发。当 t2 被激发时,P2上将移走一个权标, 而 P3上新增加两个权标。Petri 网具有非确定 性,也就是说,如果数个转换都达到了激发条 件,则其中任意一个都可以被激发。( 请问:不 确定性应该么? ) t1 和 t2 都可以被激发。假设 t1 被激发 了,则结果如图3 所示。此时,只有 t2 可以 被激发。如果 t2也被激发了,则权标从 P2 中 移出,两个新权标被放在 P3上。
二. Petri网
1 概念
并发系统中遇到的一个主要问题是定时 问题。这个问题可以表现为多种形式,如同步 问题、异步问题竞争条件以及死锁问题。 用于确定系统中隐含的定时问题的一种 有效技术是Petri网,这种技术的一个很大的 优点是它也可以用于设计中。 注意:FSM主要解决同步问题,Petri网解决异步问题
例子2: 使用PN表示“图书馆借书”案例中一
本书的扩展状态图,包括超期罚款部分。
设: B — 借阅 R — 还书 R1 — 超期还书 Q — 付清罚款
B
借出 图书馆
R
超期
·
R1 Q
已请罚款
例2 的下述方法对不对? (设F为超期 )
B
借出 图书馆
·
R
F
罚款
Q
例子3: 使用PN表示“图书馆借书”案例中一
电梯中楼层 f 的按钮,在 Petri 网中用
位置 EBf 表示(1≤f≤m)。在 EBf 上有一个 权标,就表示电梯内楼层f的按钮被按下了。 电梯按钮只有在第一次被按下时才会由 暗变亮,以后再按它则只会被忽略。
图 6 所示的 Petri 网准确地描述了电梯 按钮的行为规律。
首先,假设按钮没有发亮,显然在位置 EBf上没有权标,从而在存在禁止线的情况下, 转换“EBf 被按下”是允许发生的。假设现在 按下按钮,则转换被激发并在 EBf 上放置了 一个权标,如图 6 所示。以后不论再按下多少 次按钮,禁止线与现有权标的组合都决定了转 换“EBf 被按下”不能再被激发了,因此,位 置 EBf 上的权标数不会多于 1。
在 Petri 网中楼层按钮用位置 FBfu 和 FBfd 表示,分别代表 f 楼层请求电梯上行和下
行的按钮。底层的按钮为FB1u,最高层的按
钮为 FBmd,中间每一层有两个按钮 FBfu 和
FBfd (1<f<m)。
图7 Petri网表示楼层按钮
图 7 所示的情况为电梯由 g 层驶向 f 层。根 据电梯乘客的要求,某一个楼层按钮亮或两个楼层 按钮都亮。如果两个按钮都亮了,则只有一个按钮 熄灭。图 7 所示的 Petri 网可以保证,当两个按钮 都亮了的时候,只有一个按钮熄灭。但是要保证按 钮熄灭正确,则需要更复杂的 Petri 网模型。
3. 用PN表示“并发”、“竞争”、“死锁”和“饥 饿”。
饥饿: 当t1, t3, t5无限循环下去, 则右方 的活动受阻, 这时出现饥饿状况。
冲突的解决:当在P3处增加一个令牌时, 冲突解决。(相当于两个CPU分别运行两 个进程,互不干扰,但这样就浪费了资源)
施加了选择策略的PN: ( 解决饥饿问题另一方 案)
一个权标而 P2上没有权标,因此转换 t1 可以
被激发。
例子1: 使用PN表示“图书馆借书”案例中一
本书的状态图。( 设:P1表示“图书馆”; P2表示“借书者”;C表示“借书”转换; R表示“还书”转换)
例子1’ : 使用PN表示“图书馆借书”案例中
一本书的状态图。( 假设只有会员才能借 书)
1. 形式化方法的优点
⑴ 能够简洁准确地描述物理现象、对象或 动作的结果。
⑵ 可以在不同的软件工程活动之间平滑地 过渡。 ⑶ 提供了高层确认的手段。可以使用数学 方法证明,设计符合规格说明,程序代码正确 地实现了设计结果。
2. 应用形式化方法的准则
对形式化方法也应该“一分为二”,既
不要过分夸大它的优点也不要一概排斥。
图2 带标记的 Petri 网
图3 图2的 Petri 网在转换 t1 被激发后的情况
图4 图3 的Petri 网在转换 t2 被激发后的情况
图5 含禁止线的 Petri 网
对Petri 网的一个重要扩充是加入禁止线。 如图5 所示,禁Hale Waihona Puke Baidu线是用一个小圆圈而不是用 箭头标记的输入线。通常,当每个输入线上至 少有一个权标,而禁止线上没有权标的时候, 相应的转换才是允许的。在图 5 中,P3上有
例子:
在一幢 m 层的大厦中需要一套控制 n
部电梯的产品,要求这 n 部电梯按照约束条件
C1,C2和C3在楼层间移动。 (详情参阅《导
论》P69)
C1:每部电梯内有m个按钮,每个按钮代表一 个楼层。当按下一个按钮时该按钮指示灯亮, 同时电梯驶向相应的楼层,到达按钮指定的楼 层时指示灯熄灭。 C2:除了大厦的最低层和最高层之外,每层 楼都有两个按钮分别请求电梯上行和下行。这 两个按钮之一被按下时相应的指示灯亮,当电 梯到达此楼层时灯熄灭,电梯向要求的方向移 动。 C3:当对电梯没有请求时,它关门并停在当 前楼层。
⊙ ⊙ ○ ○ ⊙ ○ ○ ○ ⊙
可能出现“死锁”的PN:
如何解决“死锁”问题?(请同学思考)
三. PN 的发展?
1. 扩展 PN (比如,带有禁止线的 PN) , 增加 PN 的表达能力, 增加自动生成代码的能力;
2. 带有令牌值的 PN; 3. 计时 PN ,丰富调度策略; 4. ……
(可以规定各转换的“请求等待时间”来精确描述问题)
比如:t (设置) = 0;t (C) = 0.001; t (PR) = 0.1
假设电梯由 g 层驶向 f 层,因为电梯在 g 层,如图 6 所示,位置 Fg上有一个权标。由于 每条输入线上各有一个权标,转换“电梯在运行” 被激发,从而 EBf 和 Fg上的权标被移走,按钮
相关文档
最新文档