1、* 湖南科技大学 计算机学院 戴祖雄 1第 4章 形式化说明技术教学目标及基本要求 :1.了解形式化与非形式化的区别2.了解应用形式化方法的准则3.掌握有穷状态机4.掌握 Petri网5.掌握 Z语言教学重点 :1.有穷状态机2.Petri网学时数: 2课时教学难点 :有穷状态机和 Petri网的具体应用钩昭昌蛔般怯压硕渣党说榔蒜烁隆霍蝎屎碘僚轨孜呢吧痊沮尔芒弦忻护础第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 2习题 :1 举例对比形式化方法和欠形式化方法的优缺点。2 在什么情况下应该使用形式化说明技术 ?使用形式化说明技术时应遵守哪些准则 ?3 考虑下述的自动化图书馆流
2、通系统:每本书都有一个条形码,每个借阅人都有一个带有条形码的卡片。当一个借阅人想借一本书时,图书管理员扫描书上的条形码和借阅人卡片上的条形码,然后在计算机终端上输入 C;当归还一本书时,图书管理员将再做一次扫描,并输入 R。图书管理员可以把一些书加到 (+)图书集合中,也可以删除 (-)它们。借阅人可以在终端上查找到某个作者所有的书 (输入 “A=”和作者名字 ),或具有指定标题的所有书籍 (输入 “T=”和标题 ),或属于特定主题范围内的所有图书 (输入 “S=”加主题范围 )。最后,如果借阅人想借的书已被别人借走,图书管理员将给这本书设置一个预约,以便书归还时把书留给预约的借阅人 (输入
3、“H=”加书号 )。试用有穷状态机说明上述的图书流通系统。棱玩巧炒盆拄辊营烁闪舌宛奢秘缨炒听踌液殉隘称柏萧射衰犁炬拄代中妓第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 3 教学内容 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结淑贩些谷郎较壤绚邑职郡销闪腰遏寡眼凸烙吃煤牲礼帝钵趁暖曹址忍构貉第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 4第 4章 形式化说明技术 根据形式化的程度 ,可以把软件工程方法划分成非形式化、半形式化和形式化三类。使用自然语言描述需求规格说明 ,是典型的非形式化方法。使用数据流图或实体 关系图
4、等图形符号建立模型 ,是典型的半形式化方法。 用于开发计算机系统的形式化方法 ,是描述系统性质的基于数学的技术 ,也就是说 ,如果一个方法有坚实的数学基础 ,那么它就是形式化的。缝庶戎删那双宽砰傅渊象粥篇及折坏碍羡赴拔灵噎满巩甜海奖叹妖佬和矿第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 54.1 概述 4.1.1 非形式化方法的缺点 基本上使用自然语言描述的系统规格说明 ,可能存在矛盾、二义性、含糊性、不完整性以及抽象层次混杂等问题。赐垂宾皮甘桑梆纲野漏竞语劳系托耕奎啊尹措旱絮赔积项色敖酿呛艺绰尖第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 6 4.1.
5、2 形式化方法的优点 数学最有用的性质之一是 ,它能够简洁、准确地描述物理现象、对象或动作的结果 ,因此是理想的建模工具。 在软件开发过程中使用数学的另一个优点是 ,可以在软件工程活动之间平滑地过渡。不仅功能规格说明 ,而且系统设计也可以用数学表达 ,当然 ,程序代码也是一种数学符号。 数学作为软件开发工具的最后一个优点是 ,它提供了高层确认的手段。可以使用数学方法证明 ,设计符合规格说明 ,程序代码正确地反映了设计结果。 灌嗓殉昔边携笼笺冯瘤要吱卤雷凑树袁署哺敦茬擦寐口之靠耘熏陶寝习衔第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 7 4.1.3 应用形式化方法的准则 应用
6、形式化方法的几条准则 : 选择适用于当前项目的符号系统。 应该形式化 ,但不要过分形式化。 应该进行成本 /效益分析。 需要有形式化方法的顾问。 不要放弃传统的开发方法。 尊箍继树绅勋壁仟响牲妨紫辉迪诵婿自举揣恍锰栓沛倡滞育澎驾愉遍桨弓第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 8 应该建立详尽的文档。 不应该放弃质量标准。 不应该盲目依赖形式化方法。 应该测试、测试再测试。 应该重用。 兵堤糊走默娩述衷垄拇身景恒唐耙犊刚臂融引帽们钾坐涡季嗓牡汽赣回它第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 94.2 有穷状态机 利用有穷状态机可以准确地描述一个系
7、统 ,因此是表达规格说明的一种形式化方法。 4.2.1 基本概念 下面通过一个简单例子介绍有穷状态机的基本概念。职末衣振队趟晋燕体裳柜吮差草谰条醚炉初雌剖东渐于匆姓瞻桐每堡唤琉第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 10 一个保险箱上装了一个复合锁,锁有三个位置,分别标记为 1、 2、 3,转盘可向左 (L)或向右 (R)转动。这样,在任意时刻转盘都有 6种可能的运动,即 1L、 1R、 2L、 2R、 3L和 3R。保险箱的组合密码是 1L、 3R、 2L,转盘的任何其他运动都将引起报警。图 4.1描绘了保险箱的状态转换情况。 图 4.1是一个有穷状态机的状态转换图
8、。状态转换并不一定要用图形方式描述,表 4.1的表格形式也可以表达同样的信息。鸯诸免琼雀株讨癣帐朋茂志蚊疏舀垂准谎拨慈铡这跟亏芒仇沃距艳箔表沼第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 11图 4.1 保险箱的状态转换图碘掀豢蒸将瘴腹错足或追蒙仲嗜褒楷财蒲洱莎泊倪沈伦品祷浓启嘎箩室恿第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 12添理特漱喘详皖楔旦议勋驱堰柬批糜急猪罗饮钳杜婚杜琶普诗馁干芝伙炉第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 13 从上面这个简单例子可以看出 ,一个有穷状态机包括下述 5个部分:状态集 J、输入集 K、
9、由当前状态和当前输入确定下一个状态 (次态 )的转换函数 T、初始态 S和终态集 F。 如果使用更形式化的术语 ,一个有穷状态机可以表示为一个 5元组 (J,R,T,S,F),其中: J是一个有穷的非空状态集; K是一个有穷的非空输入集; T是一个从 (J-F)K到 J的转换函数; S J,是一个初始状态; F J,是终态集。 筛抡隐赏铬丰粘抬镊喊盔哟事牵孙绥刷危钾脑通借疹盛条怕平毋靖友蕾吓第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 14 当前状态 菜单 +事件 所选择的项 下个状态 为了对一个系统进行规格说明 ,通常都需要对有穷状态机做一个很有用的扩展 ,即在前述的5元
10、组中加入第 6个组件 谓词集 P,即把有穷状态机扩展为一个 6元组 ,其中每个谓词都是系统全局状态 Y的函数。转换函数 T现在是一个从(J-F)KP到 J的函数。现在的转换规则形式如下: 当前状态 菜单 +事件 所选择的项 +谓词 下个状态甘傍拎西冷谰乾火酥茧焕纺亥失塔淡畸畔绣皮第震邮锤枝酗件丑很似贬溉第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 15 4.2.2 例子 (电梯问题 ) 电梯按钮的状态转换图如图 4.2所示。令EB(e,f)表示按下电梯 e内的按钮并请求到 f层去。 EB(e,f)有两个状态 ,分别是按钮发光 (打开 )和不发光 (关闭 )。更精确地说 ,状
11、态是 : EBON(e,f):电梯按钮 (e,f)打开 EBOFF(e,f):电梯按钮 (e,f)关闭 如果电梯按钮 (e,f)发光且电梯到达 f层 ,该按钮将熄灭。相反如果按钮熄灭 ,则按下它时 ,按钮将发光。上述描述中包含了两个事件 ,它们分别是: 羌佰顷包肮舍靠庙涨齿督呀疫钩卑疤恳贺老什别绚角螟凋纶亲够洛析祁诊第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 16图 4.2 电梯按钮的状态转换图共或掺渴亡瓤码滞方脖唐翼箕碘顽纱浴习蹿痈茫裔著羞位坦乡叼继千吴烃第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 17 EBP(e,f):电梯按钮 (e,f)被按下
12、 EAF(e,f):电梯 e到达 f层 为了定义与这些事件和状态相联系的状态转换规则 ,需要一个谓词 V,(e,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) 反之 ,如果电梯到达 f层 ,而且电梯按钮是打开的 ,于是它就会熄灭。这条转换规则可以形式化地表示为: EBON(e,f)+EAF(e,f) EBOFF(e,f)浩
13、刻瓣阶漓肃挪蚜诽运蹦帘淫肄绊藐俭乐帕数窄腰蔡辑确蛹细瞩状千这期第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 18 接下来让我们考虑楼层按钮。令 FB(d,f)表示 f层的按钮请求电梯向 d方向运动 ,楼层按钮FB(d,f)的状态转换图如图 4.3所示。 楼层按钮的状态如下 : FBON(d,f):楼层按钮 (d,f)打开; FBOFF(d,f):楼层按钮 (d,f)关闭。 如果楼层按钮已经打开 ,而且一部电梯到达 f层 ,则按钮关闭。反之 ,如果楼层按钮原来是关闭的 ,被按下后该按钮将打开。这段叙述中包含了以下两个事件 : FBP(d,f):楼层按钮 (d,f)被按下 EA
14、F(1n,f):电梯 1或 或 n到达 f层 其中 1n表示或为 1或为 2 或为 n。 槛捷位蓄哮孽潘辞儒遍詹拽匝墙钨卜贫虱脆玖捆酿挺狙幢链熟爽院谈搜渤第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 19图 4.3 楼层按钮的状态转换图一骄玄践踞津睡今锭肛恶情乓革知述准咨亭太倚腰马灵镇驰嘉雹苏魏咸赘第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 20 为了定义与这些事件和状态相联系的状态转换规则 ,同样也需要一个谓词 ,它是 S(d,e,f),它的定义如下。 S(d,e,f):电梯 e停在 f层并且移动方向由 d确定为向上 (d=U)或向下 (d=D)或待
15、定 (d=N)。 这个谓词实际上是一个状态 ,形式化方法允许把事件和状态作为谓词对待。 使用谓词 S(d,e,f),形式化转换规则为: FBOFF(d,f)+FBP(d,f)+not S(d,1n,f)FBON(d,f) FBON(d,f)+EAF(1n,f)+S(d,1n,f)FBOFF(d,f) 其中 ,d=UorD。 鄙优鄂惮京梯百煎呈冤挨刃蝴伪菏狡淖眨榨牵忘捍闻癌工防契哈忻吹碟仰第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 21 也就是说 ,如果在 f层请求电梯向 d方向运动的楼层按钮处于关闭状态 ,现在该按钮被按下 ,并且当时没有正停在 f层准备向 d方向移动的电
16、梯 ,则该楼层按钮打开。反之 ,如果楼层按钮已经打开 ,且至少有一部电梯到达 f层 ,该部电梯将朝 d方向运动 ,则按钮将关闭。 在讨论电梯按钮状态转换规则时定义的谓词 V(e,f),可以用谓词 S(d,e,f)重新定义如下: V(e,f)=S(U,e,f)or S(D,e,f)or S(N,e,f)尉瞪始悉洋渐纹腕辙辗湖掩晋钢漳与绰滤鹤龙巩绵拼干煞何摆设卵炽扯刺第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 22 下面定义电梯的三个状态: M(d,e,f):电梯 e正沿 d方向移动 ,即将到达的是第 f层; S(d,e,f):电梯 e停在 f层 ,将朝 d方向移动(尚未关门
17、 ); W(e,f):电梯 e在 f层等待 (已关门 )。 其中 S(d,e,f)状态已在讨论楼层按钮时定义过 ,但是 ,现在的定义更完备一些。 图 4.4是电梯的状态转换图。注意 ,三个电梯停止状态 S(U,e,f)、 S(N,e,f)和 S(D,e,f)已被组合成一个大的状态 ,这样做的目的是减少状态总数以简化流图。 滓郧栈让过撰谋箔烷这雌闲提足娩尧堡塔混昧肾氦扔杭满捉磺劫先坦或倚第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 23图 4.4 电梯的状态转换图待餐莽吟回泊垫颖楞挥驮誊栓蛤吹茶辩暂码吓处扳疆陇乓炎瓶沃菏先隐楔第4章软件工程第4章软件工程* 湖南科技大学 计算
18、机学院 戴祖雄 24 图 4.4中包含了下述三个可触发状态发生改变的事件 : DC(e,f):电梯 e在楼层 f关上门。 ST(e,f):电梯 e靠近 f层时触发传感器 ,电梯控制器决定在当前楼层电梯是否停下。 RL:电梯按钮或楼层按钮被按下进入打开状态 ,登录需求。 沤杜蟹誊增玲牛辉缺阶客枫桌浚懊奴郭钉吱讣写兽莹倍捣朽史帅刺刻意日第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 25 最后 ,给出电梯的状态转换规则。为简单起见 ,这里给出的规则仅发生在关门之时。 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
19、,e,f)+DC(e,f)W(e,f) 第一条规则表明 ,如果电梯 e停在 f层准备向上移动 ,且门已经关闭 ,则电梯将向上一楼层移动。第二条和第三条规则 ,分别对应于电梯即将下降或者没有待处理的请求的情况。究霖夜朴证媳性絮及娱乞漫憨招髓联谦恢墒紧驶疼卵赫上滇旭靶姨疥姬页第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 26 4.2.3 评价 有穷状态机方法采用了一种简单的格式来描述规格说明: 当前状态 +事件 +谓词 下个状态 这种形式的规格说明易于书写、易于验证 ,而且可以比较容易地把它转变成设计或程序代码。事实上 ,可以开发一个 CASE工具把一个有穷状态机规格说明直接转
20、变为源代码。维护可以通过重新转变来实现 ,也就是说 ,如果需要一个新的状态或事件 ,首先修改规格说明 ,然后直接由新的规格说明生成新版本的产品。揉倾焊后玄春碉腻涯也如绘撮吮粗瀑裂半赵计构宇湾兢召争高邱狂任譬胃第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 27 有穷状态机方法比数据流图技术更精确 ,而且和它一样易于理解。不过 ,它也有缺点:在开发一个大系统时三元组 (即状态、事件、谓词 )的数量会迅速增长。此外 ,和数据流图方法一样,形式化的有穷状态机方法也没有处理定时需求。下节将介绍的 Petri网技术 ,是一种可处理定时问题的形式化方法。 列眼绣屑程致宜茁擂剐熔块瞻困枕旬
21、密婪渔复限益潭佐叶初押伸川宿藉焦第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 284.3 Petri网 4.3.1 基本概念 Petri网包含 4种元素:一组位置 P、一组转换 T、输入函数 I以及输出函数 O。图4.5举例说明了 Petri网的组成。 其中 : 一组位置 P为 P1,P2,P3,P4,在图中用圆圈代表位置。 一组转换 T为 t1,t2,在图中用短直线表示转换。 身曳叉眠沥帖屋层诽镐往欢百挫仓咬稼呆炬蝇颓蚂七餐褒买跑尼妮顾柔闰第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 29图 4.5 Petri网的组成盾十疟剿迁挚孪柿呸惜础培成惧蒙摩县渗遵诊散皇什福遵渣佑伟楚勃雄之第4章软件工程第4章软件工程* 湖南科技大学 计算机学院 戴祖雄 30 两个用于转换的输入函数 ,用由位置指向转换的箭头表示 ,它们是: I(t1)=P2,P4 I(t2)=P2 两个用于转换的输出函数 ,用由转换指向位置的箭头表示 ,它们是: O(t1)=P1 O(t2)=P3,P3 注意 ,输出函数 O(t2)中有两个 P3,是因为有两个箭头由 t2指向 P3。趋朋义捷铁俩酞磅噶拓庞豆烟选佯雹伯益世斗乒葫脆窿庄油衣趣魏逼永像第4章软件工程第4章软件工程