第7章 需求的形式化描述

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.6 形式描述语言LOTOS

LOTOS的进程 LOTOS进程的行为由多个基本动作复合 而成,下面介绍这些基本动作: (1)终止动作 (2)前缀 (3)选择 (4)循环 (5)交迭并发 (6)完全同步并发 (7)部分同步 (8)隐藏
2013-9-10
29
7.6 形式描述语言LOTOS

LOTOS规约的实例:订单发货系统 该系统负责处理用户提交的订单,然后根 据库存给用户发货并改变订单的状态。
用户投诉的操作Complain
2013-9-10
24
7.5 形式描述语言Z Notation
HandleComplain
ComplaintStock reply !: ComplaintID
s : stock ( s.status subscribed s.cid reply ! s.type enquire s '.status resolved ) ( s.status subscribed s.type complaint s'.status = pending )
2013-9-10
7
7.3基于公理或推理规则的形式化规格 说明

示例:栈
Function Pop ( S: Stack) return Stack 前置条件: Isempty (S) = false 后置条件: Push (Top(S), Pop (S)) = S
2013-9-10
8
7.3基于公理或推理规则的形式化规格 说明
2013-9-10
31
7.6 形式描述语言LOTOS
我们可以把系统抽象为一个独立运行的进 程,通过三个门:Request, Cancel,Deposit 与用户交互,接受用户的订单请求、取消与入 库等消息,这样可以把整个规约定义如下:
2013-9-10
32
7.6 形式描述语言LOTOS
系统由两个相互通信的并发子进程组成: Order与Stocks,分别负责订单的处理与库存 的管理。
2013-9-10
33
7.6 形式描述语言LOTOS
2013-9-10
34
7.7 B方法

B方法简介 B方法(B Method)是目前国际上较流行、 简单易用、较受重视的实用性软件形式化方法 之一,它是由Z语言发展而来的,20世纪80年 代初期对Z规格说明语言的研究形成了B方法 的背景。B的目的是为了增强Z的模块化能力, 因为Z语言对大型系统的模块化处理能力不足。
26
2013-9-10
7.6 形式描述语言LOTOS

LOTOS的数据描述语言 LOTOS使用抽象数据类型来表示系统中 需要的数据。要定义一个抽象数据类型,必须 定义其数据类型以及该类型上的操作(运算)。
2013-9-10
27
7.6 形式描述语言LOTOS
一个自然数的抽象数据类型
2013-9-10 28
2013-9-10
21
7.5 形式描述语言Z Notation
Complaint
cid : ComplaintID owner : Complainer handler : ComplaintHandler type : ComplaintType status : ComplaintState
投诉的图表
3
7.1形式化规格说明及其方法

1. 2. 3.
形式化规格证明方法分类
基于系统特性的方法; 基于模型的方法; 基于过程代数的方法。
2013-9-10
4
7.2形式化规格证明与软件开发

形式化需求规格说明应用于软件开发工作中 的形式
1.
规格说明变换
2.
规格说明执行
2013-9-10
5
7.3基于公理或推理规则的形式化规格 说明
lid ' 0
操作Init
2013-9-10
23
7.5 形式描述语言Z Notation
Complain
ComplaintStock
owner? : Complainer type ? : ComplaintType handler ? : ComplaintHandler
stock ' stock (lid , owner , handler , type, subscribed ) lid ' succ(lid )
2013-9-10
22
7.5 形式描述语言Z Notation
ComplaintStock
stock : Complaint
s1 , s2 : stock ( s1.cid s2 .cid s1 s2 )
投诉信息的存储
Init
ComplaintStock' lid ' : ComplaintID stock '
20
7.5 形式描述语言Z Notation
定义以下一些类型:
ComplaintID == Nat;我们使用自然数来标识不同的投诉。 Complainer == Nat;同样,自然数也可以用来标识投诉人。 ComplaintHandler == Nat;接线员。 ComplaintType == { enquire, complaint };根据投诉的内容,可以分 为咨询与投诉两类。 ComplaintState == { subscribed, pending, resolved };一个投诉可以 处于三个状态:提交、处理中、已处理。
投诉处理的过程
ComplaintStock reply !: ComplaintID flowref ? : ComplaintID
ComplaintReply
s : stock ( s.status pending s.cid reply ! flowref ? reply ! s '.status resolved )
2
7.1形式化规格说明及其方法


1. 2.
形式化规格说明 由严格的数学符号及由符号组成的规则形 成的规格说明。 形式化规格说明的优点
通过形式化能减少规格说明完成后的错误; 利用数学的方法进行分析,可以证明规格说明的 正确性,或判断多个规格说明间的等价性; 形式化规格说明可用计算机处理。
3.
2013-9-10
2013-9-10
30
7.6 形式描述语言LOTOS
订单定义抽象类型Order如下:
为了表达更清楚,我们为订单的引用、货 物代码与产品数量定义了不同的类型如下:
type Reference renames Nat endtype (* 订单的引用 *) type Product renames Nat endtype (* 货物代码 *) type Amount renames Nat endtype (* 货物数量 *)
15
2013-9-10
7.5 形式描述语言Z Notation

1.
Z Notation的数学符号
常用的集合 ● 自然数集合。 ● 整数集合。 ● 实数集合。 代换
2.
3.
幂集 幂集符号PA表示集合A的幂集。
2013-9-10
16
7.5 形式描述语言Z Notation
4.
常用的关系符号
来自百度文库5.
复合关系
2013-9-10
10
7.4基于代数的形式化规格说明
基于代数模型形式化描述系统的功能、结 构或特性的规格说明称为代数规格说明 (Algebraic specification)。
2013-9-10
11
7.4基于代数的形式化规格说明
示例:栈的代数规格证明 Object stack is Sort stack Op create : → stack Op push : Element,stack → stack Op pop : stack → stack Op top: stack → Element Op Isempty : stack → Boolean

Z Notation规约的实例:投诉处理的软件需求 在这个投诉处理的系统中,用户会通过电 话不断提出各种类型的投诉信息,接线员根据 投诉的类型与内容决定处理方式,如果不能够 立刻处理,则需要启动一个复杂的处理流程, 由多方协助处理。当投诉信息处理完毕后,需 要向投诉人反馈处理结果。
2013-9-10

简介 Z Notation是Oxford提出的一种基于集合 论与一阶谓词逻辑的形式化规格说明语言,也 称Z语言。 Z Notation的表示符号主要为数学符号与 图表(Schema)符号。 在Z Notation所描述的系统中,系统的状态 由一些抽象的变量所刻画,这些变量取值的变 化表示系统状态的变迁,而这样的变化则是由 那些对系统施加的操作所造成的。
7.4基于代数的形式化规格说明

1.
抽象数据类型的规格说明的过程
确定所需的全部操作。在这些操作中有生成或更 改类的实体操作等; 根据各种操作的组合导出公理; 补充一些对错误处理的特殊操作,以及追加一些 非形式化的说明,以增强代数规格说明的可理解 性。
2. 3.
2013-9-10
14
7.5 形式描述语言Z Notation
第7章 需求的形式化描述
1
第7章 需求的形式化描述
7.1 形式化规格说明及其方法 7.2 形式化规格证明与软件开发 7.3 基于公理或推理规则的形式化规格说明 7.4 基于代数的形式化规格说明 7.5 形式描述语言Z Notation 7.6 形式描述语言LOTOS 7.7 B方法
2013-9-10

2013-9-10 12
7.4基于代数的形式化规格说明
Var Var Eq Eq Eq Endo E: Element S: Stack pop ( push ( E,S) ) = S top (push( E,S)) = E isempty( create ) = true
2013-9-10
13
2013-9-10
17
7.5 形式描述语言Z Notation
6.
常用函数符号 lambda记号
7.
2013-9-10
18
7.5 形式描述语言Z Notation

Z Notation中的图表 一个Z Notation的图表由两部分组成:变量 声明部分与谓词部分。
2013-9-10
19
7.5 形式描述语言Z Notation
2013-9-10
35
7.7 B方法

1. 2. 3. 4. 5. 6.
B方法中的数学符号
常用的集合 集合上的操作 常用的二元关系符号 常用的集合上的函数符号 逻辑符号 广义代换
2013-9-10
36
7.7 B方法

B方法中的抽象机 B形式化规约是有若干相互关联的抽象机构 成的,抽象机是B方法中的一种基本的封装机 制,它类似于类、抽象数据类型、模块、包等 概念。B抽象机符号语言沿用了某些面向对象 的规格说明机制。
操作ComplaintReply的定义
2013-9-10 25
7.6 形式描述语言LOTOS

LOTOS简介 LOTOS (Language of Temporal Ordering Specification)是一种标准的形式化描 述方法(Formal Description Technique),主要 应用于通信系统以及分布式系统的规约。 在LOTOS的模型中,一个系统被看作是一 些相互通信的进程的集合。这些进程可以相互 通信,也可以与所处的环境通信。进程的通信 端口被称为门(Gate)。

Hoare逻辑 把P {S} Q称为Hoare公式,其中P,Q为 前置和后置条件,S为规格说明(或程序)。 此公式的含意是:当P成立时,执行S后结果 (执行停止后的结果),导致Q也应成立。
2013-9-10
9
7.3基于公理或推理规则的形式化规格 说明

示例:求最小值方法的Hoare逻辑表示 True { if x < y then x < y { z:= x} z := min(x , y) else x > y { z:= y} z := min(x , y) endif }
形式化规格说明的最简单形式是将一个系 统视为由许多功能组成的集合,然后给各个 功能附加前置和后置条件。
2013-9-10
6
7.3基于公理或推理规则的形式化规格 说明

利用前置和后置条件描述功能规格说明,需注 意如下几点:
1.
2.
3.
确定功能能正确执行的输入参数的范围,把输入参 数的约束条件规定为谓词 ; 在功能正确执行时,把输出数据应满足的条件表示 成谓词 ; 应考虑在函数的输入参数中是否发生值变化的情况, 如果有的话,则应规定在其中放入前置和后置条件。
相关文档
最新文档