版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章形式化说明技术,什么是形式化说明技术,从广义上讲,形式化方法是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动。 狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述、模型推理和验证的方法。 就形式化建模而言,形式化表示必须包含一组定义其语法语义的形式化规则。这些规则可用于分析给定的表达式是否符合语法规定,或证明该表达式具有某种性质,形式化说明技术,用自然语言描述需求规格说明,是典型的非形式化方法。用数据流图或ER图建立模型,是典型的半形式化方法。所谓形式化方法,就是基于数学的技术来描述系统的性质的方法。 非形式化方法的缺点 形式化方法的
2、优点,应用形式化方法的准则,1) 应该选用适当的表示方法。 (2) 应该形式化,但不要过分形式化。 (3) 应该估算成本。 (4) 应该有形式化方法顾问随时提供咨询。 (5) 不应该放弃传统的开发方法。把形式化方法和结构化方法或面向对象方法集成起来是可能的,而且由于 取长补短往往能获得很好的效果。 (6) 应该建立详尽的文档。建议使用自然语言注释形式化的规格说明书,以帮助用户和维护人员理解系统。 (9) 应该测试、测试再测试。 (10) 应该重用。即使采用了形式化方法,软件重用仍然是降低软件成本和提高软件质量的惟一合理的方法。而且用形式化方法说明的软件构件具有清晰定义的功能和接口,使得它们有更
3、好的可重用性,有穷状态机,例子:保险箱的复合锁,锁有三个位置,分别标记为1,2,3,转盘可向左(L)或向右(R)转动。 任意时刻的6种可能的运动:1R,1L,2R,2L,3R,3L 假设组合密码为:1L,3R,2L,除了这个次序的任意转动都将导致报警,保险箱 锁定,A,B,保险箱 解锁,报警,1L,转盘的 任何其 他移动,3R,2L,转盘的 任何其 他移动,转盘的 任何其 他移动,初始态,终态,终态,状态集J:保险箱锁定,A,B,保险箱解锁,报警。 输入集:1L,1R,2L,2R,3L,3R 转换函数:T 初始态S:保险箱锁定。 终态集:保险箱解锁,报警,一个有穷状态机可以表示为一个5元组J,
4、K,T,S,F J是一个有穷的非空状态集 K是一个有穷的非空输入集 T是一个从(J-F)*K到J的转换函数 SJ,是一个初始状态 F J,是终态集 例如:菜单 一个菜单的显示和一个状态相对应 键盘输入或鼠标点击对应于一个事件 当前状态菜单+事件所选择的项+谓词=下个状态,电梯的例子,电梯的约束条件: C1:每部电梯有m个按钮,每个按钮代表一个楼层。当按下一个按钮时该按钮指示灯亮,同时电梯驶向相应的楼层,到达按钮指定的楼层时指示灯灭。 C2:除了楼的最低层和最高层外,每层楼有两个按钮分别指示是上楼还是下楼。这两个按钮之一被按下时相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要求的方向移动。 C
5、3:当对电梯没有请求时,它关门并停在当前楼层,电梯按钮,EB(e,f) :表示按下电梯e内的按钮并请求到f层去 EBP(e,f):电梯按钮(e,f)被按下 EAF(e,f):电梯e到达f层 谓词:V(e,f):电梯停在f层 如果电梯按钮(e,f)处于关闭状态当前状态,而且电梯(e,f)被按下事件,而且电梯e不在f层谓词,则该电梯按钮打开发光下个状态。状态转换规则的形式化描述如下: EBOFF(e,f)+EBP(e,f)+not V(e,f)=EBON(e,f) EBON(e,f)+EAF(e,f)=EBOFF(e,f,EBOFF(e,f,EBON(e,f,EBP(e,f,EAF(e,f,楼层按
6、钮,FB(d,f)表示f层请求电梯向d方向运动的按钮 FBON(d,f):楼层按钮(d,f)打开 FBOFF(d,f):楼层按钮(d,f)关闭 FBP(d,f):楼层按钮(d,f)被按下 EAF(1n,f):电梯1或或n到达f层 S(d,e,f):电梯e停在f层并且移动方向由d确定为向上(d=U)或向下(d=D)或待定(d=N) 状态转换规则: 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,FBOFF(d,f,FBON(d,f,FBP(d,f,EAF(1n,f,V(e,f)
7、=S(U,e,f) or S(D,e,f) or S(N,e,f) 电梯的三个状态: M(d,e,f):电梯e正沿d方向移动,即将到达的是第f层 S(d,e,f):电梯e停在f层,将朝d方向移动(尚未关门) W(e,f):电梯e在f层等待(已关门) 可触发状态发生改变的事件 DC(e,f):电梯e在楼层f关上门 ST(e,f):电梯e靠近f层时触发传感器,电梯控制器决定在当前楼层电梯是否停下 RL:电梯按钮或楼层按钮被按下进入打开状态,登录需求 电梯的状态转换规则 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)+
8、DC(e,f)=W(e,f,S(U,e,f,S(N,e,f,M(U,e,f+1,S(D,e,f,M(D,e,f,M(U,e,f,M(D,e,f-1,W(e,f,DC(e,f,RL,RL,ST(e,f,RL,RL,RL,DC(e,f,DC(e,f,ST(e,f,Petri网,Petri网是用于形式化说明定时问题的一种技术 一组位置 P 为 P1 , P2 , P3 , P4 ,在图中用圆圈代表位置。 一组转换 T 为 t1 , t2 ,在图中用短直线表示转换。 两个用于转换的输入函数,用由位置指向转换的箭头表示,它们是: I(t1)= P2 , P4 I(t2)= P2 两个用于转换的输出函数,
9、用由转换指向位置的箭头表示,它们是: O(t1)= P1 O(t2)= P3 , P3,Petri网包含4种元素:一组位置P、一组转换T、输入函数I以及输出函数O。 Petri网结构,是一个四元组C=(P,T,I,O) P=P1,Pn是一个有穷位置集 T=t1,tm是一个有穷转换集 I:T-P 为输入函数,是由转换到位置组的映射 O: T-P 为输出函数,是由转换到位置组的映射,标记:(1,2,0,1,标记:(2,1,0,0,标记:(2,0,2,0,权标,Petri网的标记M,是由一组位置P到一组非负整数的映射: M:P-0,1,2 所以,Petri网成为一个五元组(P,T,I,O,M,对Pe
10、tri网的扩充:加入禁止线。禁止线是用一个圆圈而不是用箭头标记的输入线。 通常。当每个输入线上至少有一个权标,而禁止线上没有权标的时候,相应的转 换才是允许的,C1:每部电梯有m个按钮,每层对应一个按钮。当按下一个按钮时该按钮指示灯亮,指示电梯移往相应的楼层。当电梯到达指定的楼层时,按钮熄灭。 电梯中楼层f的按钮,在Petri网中用位置EBf表示。(1fm)。在EBf上有一个权标,表示电梯内楼层f的按钮被按下了,Fg,电梯按钮只有在第一次被按下时才会由暗变亮,以后再按它会被忽略。 假设按钮没有亮,在位置Ebf上没有权标,那么在存在禁止线的情况下,转换“EBf”是允许发生的。按下按钮之后,则转换
11、被激发并在EBf上放置了一个权标,以后无论再按下多少次按钮,禁止线与现有权标的组合都决定了转换“EBf被按下”不能再被激发了,因此,位置EBf上的权标数不会多于1,图4.11 Petri网表示楼层按钮,4 Z语言简介,用Z语言描述的、最简单的形式化规格说明含有下述4个部分: 给定的集合、数据类型及常数。 状态定义。 初始状态。 操作,1. 给定的集合 一个Z规格说明从一系列给定的初始化集合开始。所谓初始化集合就是不需要详细定义的集合,这种集合用带方括号的形式表示。对于电梯问题,给定的初始化集合称为Button,即所有按钮的集合,因此,Z规格说明开始于:Button 2. 状态定义 一个Z规格说
12、明由若干个“格(schema)”组成,每个格含有一组变量说明和一系列限定变量取值范围的谓词。例如,Z格S的格式如图4.12所示,在电梯问题中,Button有4个子集, floor_buttons(楼层按钮的集合) elevator_buttons(电梯按钮的集合) buttons(电梯问题中所有按钮的集合) pushed(所有被按的按钮的集合,即所有处于打开状态的按钮的集合,3. 初始状态 抽象的初始状态是指系统第一次开启时的状态。对于电梯问题来说,抽象的初始状态为: Button_Init Button_Statepushed= 上式表示,当系统首次开启时pushed集为空,即所有按钮都处于
13、关闭状态。 4. 操作 如果一个原来处于关闭状态的按钮被按下,则该按钮开启,这个按钮就被添加到pushed集中,Button_State button?: button,button? buttons) (button? pushed) (pushed= pushedbutton?) (button? pushed) (pushed= pushed,Button_State button?: button,button? buttons) (button? pushed) (pushed= pushedbutton?) (button? pushed) (pushed= pushed,Push
14、_button,Floor_Arrival,Z 语言实例:停车场管理系统,基本数据类型定义 “停车提示”是一个基本数据类型的名字 “停好”和“停车场满”是该类型的数据可能的取值 停车提示= 停好| 停车场满 全局变量声明 在Z 语言中,N 和Z 属于基本数据集合,分别表示正整数集合和整数集合。 停车场容量: Z/*变量声明*/ 停车场容量0/*变量约束*,状态定义 每个系统有唯一的状态定义,可以为状态命名。本例中为系统状态命名为“停车场状态”。状态定义中首先声明一或多个表示系统状态的变量,这里的变量名为“停车数量”,类型为整数。该变量的约束条件为取值大于等于0,小于等于最大停车数量。 停车场状
15、态 停车数量: Z/*状态变量声明*/ 停车数量0 停车数量停车场容量,初始化 定义系统状态变量的初始值。系统的初始化定义是唯一的,操作定义 每个系统可以定义若干个操作。 Z 语言中操作的定义是基于状态的,而不是基于过程的。 该操作如何改变了系统的状态变量的值? 该操作有哪些输入变量? 有哪些输出变量? 当一个操作改变了某个系统状态变量x时,在操作定义的第一行写出状态变化声明x。 当一个操作未改变任何系统状态变量时,即可以在操作定义第一行写出以下状态声明状态变量(可省略,操作定义(续,操作定义也可以采用以下形式 进入停车场正常停车停车场满 表示: 操作“进入停车场”分为“正常停车”和“停车场满”两种可能情况,具体执行时选择哪种情况,由环境满足哪种操作的约束条件来决定,评价,Z语言优势: (1) 可以比较容易地发现用Z写的规格说明的错误,特别是在自己审查规格说明,及根据形式化的规格说明来审查设计与代码时,情况更是如此。 (2) 用Z写规格说明时,要求作者十分精确地使用Z说明符。由于对精确性的要求很高,从而和非形式化规格说明相比,减少了模糊性、不一致性和遗漏。 (3) Z是一种形式化语言,在需要时开发者可以严格地验证规格说明的正确性。 (4) 虽然完全学会Z语言相当困难,但是,经验表明,只学过中学数学的软件开发人员仍然可以只用比较短的时间就学会编写Z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿井环保聚氨酯保温施工协议
- 租赁合同范本:建筑设施
- 医疗资产捐赠分配指南
- 农民工防暑降温措施
- 航空航天项目招投标方案范本
- 粮食加工厂火灾风险控制
- 广告公司车位租赁协议范本
- 皮革厂防火门招标资料
- 影视基地转让合同范例
- 空气净化器生产经理招聘书
- 四级翻译完整版本
- 2024年酒店转让居间协议
- 2024年大巴车租赁合同参考样本(二篇)
- 小学生安全教育与自我保护能力培养研究课题研究方案
- 第六单元 (单元测试)-2024-2025学年语文四年级上册单元速记·巧练系列(统编版)
- 2024年福建省公务员录用考试《行测》答案及解析
- 美丽农村路建设指南DB41-T 1935-2020
- 2024年大学试题(计算机科学)-网络工程设计与系统集成考试近5年真题集锦(频考类试题)带答案
- 第四单元测试卷(五)(单元测试)-2024-2025学四年级语文上册统编版
- 《田螺姑娘》儿童故事ppt课件(图文演讲)
- 【楼屋面裂缝原因及防治措施研究(论文)】
评论
0/150
提交评论