软件工程导论第4章 形式化说明技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程导论第4章 形式化说明技术
主要内容
第4章 形式化说明技术
4.1 形式化说明技术
4.2 有穷状态机
4.3 Petri网
4.4 Z语言
教学重点
有穷状态机、 Petri网。
4.1形式化说明技术概述
形式化方法的引入
在传统的软件开发过程中,人们普遍采用各种非 形式化的图形工具和文字符号工具,并按照一定 的设计原则和有序步骤,同时手工或辅助编写有 关设计文档。
软件工程的实践表明,用户需求规格说明的质量 对于后续的软件开发过程是非常重要的。
系统分析人员依据用户需求,为目标软件系统创建了 需求规格说明。
设计和编程人员根据这个需求规格说明进行系统结构 和模块设计及编码。
软件测试及验收人员则根据这个需求规格说明验证目 标系统。
形式化方法的引入
4.1 续
20世纪80年代中期以来,一种专用于需求规格说 明的形式规格说明语言应运而生。
形式规格说明语言克服了自然语言和程序设计语 言的不足,应用形式化、规范化的数学理论,严 格定义软件系统“做什么”的形式语义模型,并 支持自动程序转换系统将需求规格说明的语义模 型转换为可执行代码。由此产生的软件形式开发 方法正日益受到各国软件界的重视。
软件需求规格说明方法分类
4.1 续
非形式化方法
用自然语言进行描述的方式。
半形式化方法
用数据流图、实体-联系图、状态转换图、IPO图等建 立模型的方法。
形式化方法
利用形式化、规范化的数学推演的方式。
非形式化方法的缺点
4.1 续
矛盾
一组相互冲突的陈述。
二义性
读者可以用不同方式理解的陈述。
含糊性
没有给出任何有用信息的笼统的陈述。
不完整性
信息的描述过程中遗留了某个方面。
抽象层次混乱
在非常抽象的陈述中混进了一些关于细节的低层陈述。
形式化方法的主要思想
4.1 续
形式化需求分析方法的主要思想,是利用形式化 规格说明语言严格地定义用户需求,并采用数学 推演的方法证明需求定义的性质。
从某种意义上讲,形式化方法是克服需求分析阶 段中主要困难(不精确性、不一致性和不完全性) 的有效途径。
形式化规格说明语言包括:严格的语法定义、严 格的语义定义以及一系列的数学推演规则。
形式化方法的主要思想
4.1 续
规格说明语言的语法一般基于集合论、数理逻辑 或代数学。
规格说明语言的语义是其所有语法符号的意义的 数学描述。
形式化规格说明语言的推演规则一般与其数学基 础和语义定义方法密切相关。
规则必须在规格说明语言的语义系统中可证。因 此,可以认为规则是派生的语义定义,它们可以 直接应用于软件规格说明的性质证明并简化推演 过程。
形式化方法的分类
4.1 续
形式化方法是应用严格的形式符号和数学方法定义 或描述目标软件系统需求规格说明的一种方法。
根据对需求规格说明的定义方式分类:
⒈面向模型的形式方法。
又称基于状态描述的形式方法。 基本思想:利用域、元组、集合、序列、映射、包等这些已知特性
的数学抽象概念来为目标软件系统的状态特征和行为特征构造形式 语义模型。语义模型就作为目标软件系统需求规格的形式说明。 主要代表:VDM方法(维也纳开发方法)、Z语言方法等。
⒉代数构造形式方法。
目标软件系统的需求规格说明提供一些特殊的构造机制,并以代数 构造方式描述目标系统的结构、功能。
软件形式开发方法
4.1 续
将形式化方法应用于软件开发过程称为软件形式 开发方法。
首先,在需求分析阶段的信息收集和信息分析两 项工作中,采用形式化的规格说明语言构造目标 软件系统严格的形式需求规格说明即形式语义。
然后,以该形式需求规格说明为起点,借助相应 的形式开发支持工具辅助实现目标软件系统。
目前,除了在软件设计、编码阶段采用形式方法 外,还在开展软件系统形式化测试的研究工作。
形式化方法的优点
4.1 续
⒈对系统的需求规格说明描述精确、定义完整。
⒉形式化的需求规格说明有利于系统的设计与实 现。
⒊软件实现的正确性可以形式验证,确保软件质 量。
形式化方法的缺点
4.1 续
⒈形式化的需求规格说明可读性差。
⒉对软件设计人员要求较高,需进行更专业化的 培训。
⒊只适用于能静态定义的软件系统,它无法定义 动态系统行为。
⒋形式化的规格说明(形式语义模型)的正确性 验证费时费力,目前还不能简化或自动化。
⒌形式方法目前还缺乏软件工程环境的支持。
应用形式化方法的准则
4.1 续
⑴应该选用适合当前项目的形式化说明技术。
⑵应该形式化,但不要过分形式化。
⑶应该估算成本。
⑷应该有形式化方法顾问随时提供咨询。
⑸不应该放弃传统的开发方法。
⑹应该建立详尽的文档。
⑺不应该放弃质量标准。
⑻不应该盲目依赖形式化方法。
⑼应该进行严格的审查、验证。
⑽应该重用。
形式化方法近年来的发展
4.1 续
⒈形式化方法与图形语言机制相结合。为图形语言 机制赋予形式化的语法和语义,从而兼具了图形表 示的直观、简洁,以及形式化方法的严谨、精确等 优点。
⒉用CASE工具支持形式化软件开发。CASE工具不 仅可以简化需求分析和需求描述工作,而且还可以 利用自动定理证明技术帮助分析人员验证软件规格 说明的数学性质。
实践证明,这两条技术途径对于克服形式化方法的 主要缺陷是行之有效的。因此,它们仍将在形式化 方法的未来发展中发挥重要作用。
4.2 有穷状态机
定义
一个有穷状态机可以表示为一个5元组(J,K,T,S, F),其中:
J是一个有穷的非空状态集;
K是一个有穷的非空输入集;
T是一个从(J-F)×K到J的转换函数;
S∈J,是一个初始状态;
F J,是终态集。
4.2 续
例1
一个保险箱上装了一个复合锁,锁有三个位置, 分别标记为1、2、3,转盘可向左(L)或向右(R)转 动。这样,在任意时刻转盘都有6种可能的运动, 即1L、1R、2L、2R、3L和3R。保险箱的组合密 码是1L、3R、2L,转盘的任何其他运动都将引 起报警。
例1
保险箱的状态转换情况
4.2 续
例1
保险箱的状态转换表4.1
4.2 续
4.2 续
例1 保险箱例子的有穷状态机描述
状态集J: • {保险箱锁定,A,B,保险箱解锁,报警}。
输入集K: • {1L,1R,2L,2R,3L,3R}。
转换函数T:如表4.1所示。 初始态S: 保险箱锁定。 终态集F: {保险箱解锁,报警}。
扩展定义
4.2 续
一个有穷状态机可以表示为一个5元组(J,K, T,S,F),其中:
J是一个有穷的非空状态集;
K是一个有穷的非空输入集;
P是一个谓词集;
T是一个从(J-F)×K×P到J的转换函数;
S∈J,是一个初始状态;
F J,是终态集。
4.2 续
例2
一个菜单的显示和一个状态相对应,键盘输入或 用鼠标选择一个图标是使系统进入其他状态的一 个事件。
转换规则:
• ⑴当前状态〔菜单〕+事件〔所选择的项 下 个状态。
• ⑵当前状态〔菜单〕+事件〔所选择的项〕+谓词
例3:电梯系统
4.2 续
自然语言描述
在一幢m层的大厦中需要一套控制n部电梯的产品,要求 这n部电梯按照约束条件C1,C2和C3在楼层间移动。
C1:每部电梯内有m个按钮,每个按钮代表一个楼层。 当按下一个按钮时该按钮指示灯亮,同时电梯驶向相应 的楼层,到达按钮指定的楼层时指示灯熄灭。
C2:除了大厦的最低层和最高层之外,每层楼都有两个 按钮分别请求电梯上行和下行。这两个按钮之一被按下 时相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯 向要求的方向移动。
C3:当对电梯没有请求时,它关门并停在当前楼层。
例3:电梯系统
电梯按钮的状态转换图
4.2 续
转换函数: • EB(e,f) :按下电梯e内的按钮并请求去f层。
状态 • 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)
• V (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)
例3:电梯系统
楼层按钮的状态转换图
4.2 续
转换函数: • FB(d,f) :f层请求电梯向d方向运动的按钮。
状态 • FBON(d,f):楼层按钮(d,f)打开 • FBOFF(d,f):楼层按钮(d,f)关闭
例3:电梯系统
事件
4.2 续
• FBP(d,f) :楼层按钮 (d,f) 被按下 • EAF(1…n,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,1…n,f)FBON(d,f)
• FBON(d,f)+EAF(1…n,f)+S(d,1…n,f) FBOFF(d,f) • 其中,d=UorD。
例3:电梯系统
4.2 续
电梯的3个状态:
M(d,e,f):电梯e正沿d方向移动,即将到达的是第f层
S(d,e,f):电梯e停在f层,将朝d方向移动(尚未关门)
W(e,f):电梯e在f层等待(已关门)
例3:电梯系统
4.2 续
电梯3个事件:
DC(e,f):电梯e在楼层f关上门
ST(e,f):电梯e靠近f层时触发传感器,电梯控制器决 定在当前楼层电梯是否停下
RL:电梯按钮或楼层按钮被按下进入打开状态,登 录需求
例3:电梯系统
4.2 续
电梯的状态转换规则(仅发生在关门之时):
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)
例3:电梯系统
电梯的状态转换图
4.2 续
状态 事件 规则
4.2 续
评价
格式:
• 当前状态+事件+
CASE工具
• 把一个有穷状态机描述的规格说明直接转变为源 代码。
Petri网
4.3 Petri网
Petri网的思想是1962年由Carl Adam Petri提出来 的。
最初是一种表达异步系统的控制规则的图形表示 法,现在广泛应用于硬件与软件系统的开发中。
Petri网适用于描述与分析相互独立、协同操作的 处理系统,即并发执行的处理系统。
Petri网基本概念
4.3 续
Petri网简称PNG(Petri Net Graph),是一种有向 图,包含四种元素。
• ⑴位置P:符号为“○”,它用来表示系统的状态。
• ⑵转换T:用短竖线表示,代表系统中的事件。
• ⑶输入函数I:用由位置指向转换的箭头表示。
• ⑷输出函数O:用由转换指向位置的箭头表示。
Petri网的组成
4.3 续
Petri网的组成
位置P:{P1,P2,P3,P4}
转换T:{t1,t2}
输入函数:I(t1)={P2,P4}

I(t2)={P2}
输出函数:O(t1)={P1}

O(t2)={P3,P3}
4.3 续
Petri网形式化定义
4.3 续
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∞为输出函数,是由转换到位置无序单位 组的映射。
带标记的Petri网
4.3 续
Petri网的标记是在Petri网中权标的分配。
标记:表明系统当前处于什么状态的标志。
通常,当每个输入位置所拥有的权标数大于等于 从该位置到转换的线数时,就允许转换。
Petri网中权标总数不固定。
Petri网具有非确定性。
带标记的Petri网
4.3 续
标记:(1,2,0,1)
带标记的Petri网
4.3 续
t1被激发。 标记: (2,1,0,0)
带标记的Petri网
4.3 续
t1,t2 被激发。 标记: (2,0,2,0)
状态迁移
4.3 续
当激发产生的结果有几个时,将随机地选择一个结 果输出,并把作为结果的位置的状态加上权标。
权标在PNG中的游动,称为“状态的迁移”。
Petri网形式化定义
4.3 续
带有标记的Petri网成为一个五元组(P,T,I,O, M)。
相关文档
最新文档