形式化说明

合集下载

形式化开发方法

形式化开发方法

T={RtoG,GtoY,YtoR},
I(RtoG)={Red}, I(GtoY)={Green}, I(YtoR)={Yellow}, O(RtoG)={Green}, O(GtoY)={Yellow}, O(YtoR)={Red}
图3.19 红绿灯的petri网
(3)Z语言
以电梯问题为例,简要介绍Z语言。 用自然语言书写的系统规格说明书,可能存在
矛盾、二义性、含糊性、不完整性及抽象层次 混乱等问题。为了克服非形式化方法的缺点, 人们把数学引入软件开发过程,创造了基于数 学的形式化方法。
常见的形式化方法工具
(1)有穷状态机
(2)Petri网
(3)Z语言
(1)有穷状态机
Petri网包含4种元素:一组位置P、一组转换T、
输入函数I以及输出函数O。下图举例说明了
Petri网的组成。
图3.18 Petri网的组成
一组位置P为{P1,P2,P3,P4},在图中用圆圈代表位置。 一组转换T为{t1,t2},在图中用短直线表示转换。
两个用于转换的输入函数,用由位置指向转换的箭头表示,
最简单的形式化规格说明含有下述4个部分:
1.给定的集合
一个Z规格说明从一系列给定的初始化集合开始。
所谓初始化集合就是不需要详细定义的集合,这
种集合用带方括号的形式表示。对于电梯问题,
给定的初始化集合称为Button,即所有按钮的集
合,因此,Z规格说明开始于:〔Button〕
2.状态定义 一个Z规格说明由若干个“格(schema)”组成,每个 格含有一组变量说明和一系列限定变量取值范围的 谓词。例如,格S的格式如图3.20所示
自动门的状态机可以用图3.17表示:
图3.17 自动门的有穷状态机

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

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

行为建模
1)
2)
3)
系统的需求规格说明通常是用自然语言来叙 述的,但是用自然语言描述往往会出现二义 性。 为了直观地分析系统的动作,从特定的视点 出发描述系统的行为,需要采用动态分析的 方法。 最常用的动态分析方法

有穷状态机

时序图 Petri网
状态迁移图
状态迁移图是通过描述系统的
状态及引起系统状态转换的事 件来表示系统的行为。
形式化方法
形式化方法是建立在严格数学基础上、具有精确数学语义 的开发方法,即就是用数学语言来描述软件的设计规约。 形式化方法可以分为形式化描述和建立在形式化描述基础之 上的形式化开发 形式化的描述:用形式化的语言(具有严格的语法语义定 义的语言)描述描述软件系统及其行为模式,以更好地刻 画软件系统的性质。 形式化的开发:用形式化的语言来描述软件需求和特征, 并且通过推理验证来保证最终的软件产品是否满足这些需 求和具备这些特征,符合给定的行为模式。
应用形式化方法的准则





应该选用适当的形式化方法:主要包括有限状态机、时 序图、Petri网、Z、VDM等。 应该形式化,但不要过分形式化 应该估算成本 应该有形式化方法顾问随时提供咨询 不应该放弃传统的开发方法 应该建立详尽的文档 不应该放弃质量标准 不应该盲目依赖形式化方法 应该测试、测试再测试 应该重用
半形式化方法
软件工程使用方法可分成:非形式化、半形式化和形式化 半形式化: 结构化分析(SA)方法 利用图形等半形式化的描述方式表达需求:用数据流图、 状态转换图或实体-联系图建立数据、行为和功能模型, 形成需求说明书中的主要部分。 利用结构化语言描述加工逻辑:结构化语言是介于自然 语言和形式语言之间的一种半形式语言。加工逻辑结构 可分成外层和内层两层:外层用来描述控制结构,采用 顺序、选择、重复三种基本结构;内层对于顺序执行和 循环执行的动作,用结构化语言描述。 缺点:可能存在矛盾、二义性、含糊性、不完整性及抽 象层次混乱等问题。

4 形式化说明技术

4 形式化说明技术

10
图4.1 保险箱的状态转换图 状态集J:{保险箱锁定, , ,保险箱解锁,报警}。 状态集 :{保险箱锁定,A,B,保险箱解锁,报警}。 :{保险箱锁定 输入集K:{ :{1L, , , , , }。 输入集 :{ ,1R,2L,2R,3L,3R}。 转换函数T: 所示。 转换函数 :如Page78 表4.1所示。 所示 初始态S:保险箱锁定。 初始态 :保险箱锁定。 终态集F:{保险箱解锁,报警}。 :{保险箱解锁 终态集 :{保险箱解锁,报警}。
8
应用形式化方法的准则
(1) 应该选用适当的表示方法。 (2) 应该形式化,但避免过分形式化。 (3) 应该估算成本。 (4) 应该有形式化方法顾问随时提供咨询。 (5) 不应该放弃传统的开发方法。 (6) 应该建立详尽的文档。 (7) 不应该放弃质量标准。 (8) 不应该盲目依赖形式化方法。
9
4.2 有穷状态机
4
非形式化方法的缺点
自然语言描述需求规格说明: 矛盾:指一组相互冲突的陈述。 二义性:读者可以用不同方式理解的陈述。 不完整性:缺乏对细节的描述 含糊性。笼统的陈述,没有给出有用的信息。 抽象层次混乱:在非常抽象的陈述中混进了一些关于细节 的低层次陈述。 使得读者很难了解系统的整体功能结构。
5
6
14
4.4 Z语言
含有下述4个部分: 给定的集合、数据类型及常数。 状态定义。 初始状态。 操作。
15
4.5 小结
基于数学的形式化规格说明技术,目前还没有 在软件产业界广泛应用。 与欠形式化的方法比较起来,它有实质性的优 点:
形式化的规格说明可以用数学方法研究、验证(例如, 一个正确的程序可以被证明满足其规格说明,两个规格说明 可以被证明是等价的,规格说明中存在的某些形式的不完整 性和不一致性可以被自动地检测出来)。 此外,形式化的规格说明消除了二义性,而且它鼓励软 件开发者,在软件工程过程的早期阶段使用更严格的方法, 从而可以减少差错。

形式化说明技术是软件工程常用的说明方法

形式化说明技术是软件工程常用的说明方法

形式化说明技术是软件工程常用的说明方法
形式化说明技术是软件工程中常用的说明方法,它基于数理逻辑、集合论和形式语言等数学基础,通过形式化的符号和规则描述软件系统的行为和性质,从而对软件进行精确、严谨和可检验的描述。

形式化说明技术包括以下几个方面:
1.数学符号:形式化说明技术使用代数符号、逻辑符号和其他数学符号对软件进行建模和描述。

这些符号具有严格的定义和规则,可以消除不同认知和语言带来的歧义和难以理解的问题。

2.形式规范:形式化说明技术还提供了一系列形式规范用于描述软件系统的行为和性质,如状态机、Petri网、Z规范等。

这些规范提供了一种形式化的表达方式,可以清晰地描述系统的结构和行为。

3.模型检验:形式化说明技术可以使用模型检验工具来对建模和规范进行验证。

这些工具可以从数学上证明软件是否满足其规范,从而帮助开发者发现软件中潜在的错误和缺陷,并提供相应的改进方案。

4.可重复性:形式化说明技术提供了一种可重复的方法,可以对软件进行精确且可检验的描述。

这些描述可以被其他人复用和修改,使软件的开发和维护变得更加高效和便捷。

总之,形式化说明技术是一种高度精细、严密和可靠的软件描述方法,广泛应用于软件工程领域,有助于提高软件质量和可靠性。

形式方法规格化说明语言-Z期末复习

形式方法规格化说明语言-Z期末复习

形式方法规格化说明语言—Z考前复习3.集合和类型是什么关系?(类型是集合,但集合不一定是类型,最大集合才是类型)4.对象声明(有了类型就可以声明对象了。

)5.扩充表示法(谓词的扩充表示法p37,集合的扩充表示法p38){Decls|Pred Expr }(集合的扩充表示法,何时能省略表达式部分一定要清楚)3。

2 中的例3.8(代表性的例题)6.公理定义(用来定义全程变量)7.通用式定义(包括,,的通用式定义)(留意书上的例题)有关习题 3.9、3。

14、3。

20、3。

21(这些题会做了,就表示掌握了)第4章1.关系(一部分序偶)笛卡尔积(所有的序偶)的子集2.源集和目标集(不一定关系关联到的)、定义域和值域(关系关联到的,定义域是源集的子集,值域是目标集的子集)3.关系运算,特别是复合、逆、定义域限定(减)、值域限定(减)、映像。

(形式定义)(都有形式定义)4.函数(特殊的关系):部分函数、全函数、入射函数、满射函数(形式定义)5.二元关系和一个自变量的函数有什么区别?(二元关系是多对多的关系,函数对应到一个值域)6.函数迭加操作(要求掌握)7.表示法(要求掌握)8.书中的例题和习题 4.6、4.17、4。

22、4。

34—4.36第5 章1.模式的用途2.状态模式、、和初始状态模式(标准方式)3.模式包含(在何时使用)4.模式运算(包括连接词连接、复合等)5.操作模式、前置条件模式、前置条件模式的计算过程6.熟悉“电话号码数据库”的例子和“班级管理"的例子第6章1.什么是序列?序列与通常的集合有什么区别?(序列有次序,可以多次)2.序列的连接、逆置(包括通用式)(一定要清楚定义)3.head、tail、front和last操作(包括通用式)(序列的常用操作)4.压缩函数、序列抽取、序列过滤的操作(包括通用式)(都要求掌握,包括通用式)5.什么是包?包与通常的集合有什么区别?(集合的元素出现一次,包可以多次)6.包的表示7.包的操作函数的通用式定义In、子包、包并、包差等其他 1模式例子(如果能把这几个掌握了就很好了)1.PhoneDB2.Class3.SM(存储管理程序)4.自动售货机(该例子介绍包的运算,确实很精彩!)其他 21.序列归纳法的证明方法2.序列连接的结合律3.序列逆置考试题型1.选择题(A,B,C,D四选一)2.填空题(比如给了一个关系的定义域的限定解,给了一个入射函数的定义域,缺一个谓词和表达式的部分,要求把形式定义补完整。

一种结构化形式化说明的方法

一种结构化形式化说明的方法

J n 0 2 u e2 0
一Leabharlann 种 结 构 化 形 式化 说 明 的方 法
邓 勇 丁 峰 沈钧 毅
‘ 安 交 通 大 学 软 件 所 , 西 西安 7 04 ) 西 陕 1 0 9

要 : 式 化 方 法使 用 教 学 井 号 采描 速 系统 的性 质 , 形 它具 有 精 确 性 、 二 义 性 和 一 致 性 等 优 点 . 些 优 点 使 形 式 化 方 无 这
中圈 分 类 号 : P 】 T 3l 文献标识码 : A
1 前

有条理的方式 来表达形式化说 明. 这就改 善了可读性.
z定 义 了一 个 数 学 工 具 包 ( te al [ o l i . 其 Mah m t a T o— t 在 e k) 中 引 人 了许 多数 学 符 号 . 对 这 些 数 学 符 号的 语 义 作 了 形 式 并
的组件之 间存在着 一种关系 , 这种关系可 以把某些 系统状态 的变化与可索引 的组 件 的状态相关 联. 了用一 种结 构化的 为
方 式 来 描 述 这 种 关 系 . 要 一 种方 法 把 全 局 操 作分 解 为 局 部 需 操 作 和 混舍 操 作 ( 示 局 部 状 态 和 全 局 状 态 问 的 关 系 ) 这 种 表 . 方 法称 为框 架 , 它在 形 式 化 说 明 中放 人 一 框 架 , 只有 在 框 架 内 的 事 物可 以改 变 , 框架 外 的事 物 则 不 受 影 响 . 而 使 用框 架 , 可 把 复 杂 的 全 局 操 作 分 解 为 两 个 相 对 简单
的. 了改善形式化说明的可读性 . 为 需要一种结构化形式化说 明的方法. 种方法能 把复杂的形式 化说明分解为若干 个较 这

用z语言描述的最简单的形式化规格说明

用z语言描述的最简单的形式化规格说明

用z语言描述的最简单的形式化规格说明最简单的形式化规格说明是通过使用Z语言来定义和描述系统的行为和特性。

Z语言是一种形式化规范语言,它用于描述软件系统、硬件系统或任何其他系统的规范。

Z语言使用数学符号和形式化的术语,以一种精确而准确的方式来定义系统的规范。

它可以描述系统的状态、操作、约束和性质,并提供一种清晰和可验证的方法来确定系统是否满足规范。

例如,假设我们要描述一个简单的计算器系统。

我们可以使用Z语言来说明该系统的规范。

以下是一个简单的示例:基本规范:- 系统具有一个输入口和一个输出口。

- 输入口接收用户输入的数字和操作符。

- 输出口显示计算结果。

状态规范:- 系统具有一个变量x,表示当前的结果。

- 系统具有一个变量input,表示用户的输入。

操作规范:- 用户输入的每个数字将更新变量x的值。

- 用户输入的操作符将触发相应的操作,如加法、减法、乘法或除法。

约束规范:- 变量x的值必须在合理的范围内,否则应显示错误。

- 用户输入的操作符必须是有效的操作符之一,否则应显示错误。

性质规范:- 当用户输入正确的数字和操作符时,系统应按预期进行计算,并正确显示结果。

- 当用户输入无效的数字或操作符时,系统应显示错误信息,以指示输入错误。

通过使用Z语言,我们能够明确地定义系统的规范,包括输入、状态、操作和性质。

这种形式化的规范能够帮助开发人员、测试人员和项目相关人员共享和理解系统的期望行为,从而提高系统的可靠性和正确性。

需要注意的是,以上只是一个简化的示例,实际的形式化规格说明可能会更加复杂和详细。

但使用Z语言作为规范语言可以帮助我们准确地描述系统的要求和行为,以便开发出高质量的软件系统。

形式化说明技术

形式化说明技术

详细描述
定理证明采用数学逻辑和公理系统,对系统 行为进行严格的证明或反证,以验证系统是 否满足预期的行为和性质。这种方法在计算 机科学和数学领域广泛应用。
模拟与实验验证
总结词
模拟与实验验证是通过模拟或实际实验来验 证系统行为正确性的方法。
详细描述
模拟与实验验证通过模拟系统的运行环境或 进行实际实验,观察系统的行为表现,并与 预期行为进行比较,以验证系统是否满足预 期的行为和性质。这种方法在系统开发过程
现状
目前,形式化说明技术已经得到了广泛的应用和发展,成为软件和 系统开发领域的重要分支之一。
02
形式化说明的表示方法
逻辑表示法
总结词
逻辑表示法是一种基于逻辑推理规则的表示方法,用于描述系统的性质和行为。
详细描述
逻辑表示法使用逻辑公式和推理规则来描述系统的输入、输出和状态转换。它 能够精确地表达条件、关系和推理规则,适用于描述具有复杂逻辑关系的系统。
验证成本
形式化说明技术的验证过程往往需要 大量的人力和时间,增加了开发成本。
形式化说明技术的未来发展方向
智能化
标准化
利用机器学习、人工智能等技术,提高形 式化说明技术的自动化程度,降低人工干 预。
制定统一的形式化说明技术标准,提高不 同工具和平台之间的互操作性。
可视化
跨领域应用
利用图形、动画等可视化技术,提高形式 化说明技术的可读性和易用性。
硬件描述语言
使用形式化说明技术可以创建精 确的硬件模型,例如使用Verilog 或VHDL等硬件描述语言。
硬件逻辑验证
通过形式化说明技术,可以对硬 件设计的逻辑正确性进行验证, 确保硬件在所有可能的情况下都 能正常工作。
硬件优化

特征 形式化描述

特征 形式化描述

特征形式化描述特征是指某物品或某个事物的性质、特点或特殊的标志。

在对一些对象进行研究、描述和表述的时候,往往需要给出这些对象的特征。

而这些特征通常会提供一些关键的信息,使得人们更好地理解和识别这些对象。

本文将探讨特征的形式化描述,以及如何有效地表达和描述特征。

一、描述特征的基本方法在特征的描述过程中,人们通常采用特定的词语,来说明这些特征的性质、外形、数量、大小等等。

而这些词语可以是定性的,也可以是定量的。

1.定性描述定性描述是指利用一些形容词、副词等描述词语进行的特征描述,例如“红色、大、圆形、软的”等等。

这些描述词语通常是主观的,因此需要谨慎使用,避免过于主观或夸张。

2.定量描述定量描述是指通过具体的数量或数值来描述特征属性。

例如,“重量为5公斤、长度为10米、速度为60公里/小时”等,这些数值是客观的,可以有效地传达对象的特征。

二、形式化描述特征的重要性特征的形式化描述能够更加精确地表达特征的属性和特性,使得人们可以更加清晰地理解和识别这些对象。

在科学研究中,形式化描述还可以帮助研究者进行数据分析、模型构建和推理。

特征的形式化描述可以用数学公式来表示。

例如,对于圆形,可以使用半径 r 和圆心坐标 (x, y)来表示圆的特征。

或者对于一个物品的颜色、重量和大小,可以使用 RGB 值、重量和尺寸等数据来表示。

三、如何有效地形式化描述特征1.准确选择描述词语在进行定性描述时,需要选择最准确的形容词、副词等描述词语,例如“红色”、“大”、“圆形”等。

同时,需要避免使用含糊或夸张的词语,以免引起歧义或造成不必要的误解。

2.使用精确的单位在进行定量描述时,需要选择最准确的单位,例如公斤、米、小时等。

同时,需要确保使用的单位与对象或特征相对应,例如对于质量较小的物品,可以使用克或毫克等较小单位进行描述。

3.使用数学符号和公式在科学研究中,可以使用数学符号和公式来描述特征的属性和特性。

例如,对于圆形,可以使用数学公式ω = 2πr 来描述周长,使用πr² 来描述面积等。

软件工程形式化说明技术

软件工程形式化说明技术

软件工程形式化说明技术在当今数字化时代,软件工程的重要性日益凸显。

为了确保软件的质量、可靠性和可维护性,各种技术和方法不断涌现,其中形式化说明技术是一个关键的领域。

那么,什么是软件工程形式化说明技术呢?简单来说,它是一种用于精确描述软件系统的需求、设计和行为的技术手段。

与我们日常中较为随意和模糊的描述不同,形式化说明技术采用严格的数学和逻辑符号,以一种无歧义、精确且可验证的方式来表达软件的各种特性。

想象一下,我们要建造一座高楼大厦。

在开始施工之前,建筑师会绘制详细的蓝图,标注出每一个尺寸、每一种材料、每一个结构的细节。

软件工程中的形式化说明就类似于这样的蓝图,但它更加精确和严格。

形式化说明技术的一个重要优点是能够减少软件系统中的不确定性和模糊性。

在传统的软件开发过程中,需求和设计往往通过自然语言来描述,这可能导致不同的人对同一份文档有不同的理解。

而形式化说明则消除了这种模糊性,因为它的定义是精确且无二义的。

比如说,一个关于用户登录功能的需求描述,如果用自然语言可能会说:“用户输入用户名和密码,如果用户名和密码正确,就允许登录。

”但这可能会引起一些疑问,比如:用户名和密码的正确匹配规则是什么?是否区分大小写?是否有次数限制?而通过形式化说明,可以明确地定义这些细节,避免误解和错误。

形式化说明技术还可以帮助我们在软件开发的早期阶段发现错误。

由于其精确性,我们可以使用数学方法对形式化的描述进行推理和验证。

这就像是在数学考试中检查答案一样,如果我们的描述存在逻辑上的不一致或错误,通过这种验证就能够及早发现,从而避免在后期开发中付出高昂的代价来修复。

在实际应用中,有多种形式化说明技术可供选择。

例如,状态机模型可以用来描述系统在不同状态之间的转换和行为;时序逻辑可以用于表达时间相关的性质;还有形式化的语法和语义定义等。

以状态机模型为例,它将系统定义为一系列有限的状态,以及在不同条件下从一个状态转换到另一个状态的规则。

04章形式化说明技术

04章形式化说明技术

04章形式化说明技术形式化说明技术(Formal Specification Techniques)是一种系统性、精确地描述和定义软件系统执行行为、功能和性质的技术方法。

它通过使用数学语言和形式规约的方法,将软件系统的设计和实现过程从自然语言的模糊性和歧义性中解放出来,从而改善了软件开发和维护的效率和质量。

形式化说明技术的核心思想是将软件系统描述为一个数学模型,通过形式化的推理和证明,确保系统满足设计要求并具备所需的性质。

形式化说明技术不仅能够精确地描述系统的行为和功能,还可以检查系统的正确性、一致性、完备性、可靠性和安全性等方面的属性,提前发现和解决潜在的问题。

形式化说明技术的应用范围广泛,包括需求分析、系统设计、编码验证、软件测试、系统仿真和代码生成等方面。

下面将介绍几种常见的形式化说明技术。

1. 判定性有穷状态自动机(Deterministic Finite State Automaton,DFSA):DFSA 是一种常用的形式化说明技术,用于描述系统的状态和状态转移。

它可以形式化地描述系统的行为,通过状态转移图来表示系统的状态变化,从而帮助开发人员更好地理解和设计系统。

2. 时序逻辑(Temporal Logic):时序逻辑是一种扩展的命题逻辑,用于描述系统的时序性质。

通过形式化的规约、语义和推理,可以验证系统是否满足时序性质,如安全性、活性、不变性等。

时序逻辑广泛应用于软硬件系统的验证和验证。

3. Petri 网(Petri Nets):Petri 网是一种用于建模和分析并发系统的图形化形式化说明技术。

Petri 网通过描述系统的状态、变迁和资源,揭示系统的并发行为和资源竞争情况,从而帮助开发人员理解和设计并发系统。

4. Z 规范(Z Specification):Z 规范是一种基于集合论和一阶谓词逻辑的形式化说明技术,用于描述系统的状态、操作和约束等。

Z 规范通过形式化地定义系统的状态集合、操作集合和约束条件,帮助开发人员更好地理解和设计系统。

形式化说明技术

形式化说明技术
较严格的形式化方法(语法和语义都严谨):有穷状态机、Petri网、Z语 言………
半形式化方法(语法和语义都不太严谨) :系统流程图、数据流图、数 据字典、ER图、数据库范式、状态转换图、层次方框图、Warnier图、IPO 图、IPO表………
4.1.1非形式化方法的缺点
矛盾性
在需求规格说明书(Reqirement Specifications)中对同一问题前后存在不 同的描述。
见“状态转换表”
初始态 S :
保险箱锁定
终态集 F :
{保险箱解锁,报警}
有穷状态机——形式化表示
一个有穷状态机可以表示为一个 5 元组 (J ,K,T,S,F) ,其中:
J 是一个有穷的非空状态集; K 是一个有穷的非空输入集; T 是一个从 (J-F) × K 到 J 的转换函数; S ∈ J ,是一个初始状态; F ∪ J ,是终态集。
4.2 有穷状态机
有穷状态机概念 有穷状态机例子 有穷状态机方法评价

4.2.1 有穷状态机概念
通过简单例子引入有穷状态机的基本概念:
一个保险箱上装了一个复合锁,锁有三个位置,分别标记为 1 、 2 、 3 ,转盘可向左 (L) 或向右 (R) 转动。这样,在任意 时刻转盘都有 6 种可能的运动,即 1L 、 1R 、 2L 、 2R 、 3L 和 3R 。保险箱的组合密码是 1L 、 3R 、 2L ,转盘的任何其 他运动都将引起报警。
第4章 形式化说明技术
4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
4.1 概述
4.1.1非形式化方法的缺点
非形式化是指用自然语言描述软件需求(如系统规格说明书)。因此, 可能存在矛盾性、二义性、含糊性、不完整性、抽象层次混乱等问题。

张海藩《软件工程导论》(第6版)(课后习题 第4章 形式化说明技术)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第4章 形式化说明技术)【圣才出品】

第4章形式化说明技术1.举例对比形式化方法和欠形式化方法的优缺点。

答:(1)欠形式化方法的缺点①矛盾矛盾是指一组相互冲突的陈述。

②二义性二义性是指读者可以用不同方式理解的陈述。

③含糊性例如,人们可能经常在文档中看到类似下面这样的需求:“系统界面应该是对用户友好的。

”实际上,这样笼统的陈述并没有给出任何有用的信息。

④不完整性。

如果在规格说明书中对一个命令的功能没有更多的描述,那么,这个命令的细节是严重不完整的。

⑤抽象层次混乱。

抽象层次混乱是指在非常抽象的陈述中混进了一些关于细节的低层次陈述。

这样的规格说明书使得读者很难了解系统的整体功能结构。

(2)形式化方法的优点①能够简洁准确地描述物理现象、对象或动作的结果。

在理想情况下,分析员可以写出系统的数学规格说明,它准确到几乎没有二义性,而且可以用数学方法来验证,以发现存在的矛盾和不完整性,在这样的规格说明中完全没有含糊性。

②可以在不同的软件工程活动之间平滑地过渡。

③提供了高层确认的手段。

可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。

2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?答:(1)人们在理解用自然语言描述的规格说明时,容易产生二义性。

为了克服非形式化方法的缺点,人们把数学引入软件工程。

创造了基于数学的形式化说明技术。

(2)应用形式化方法的准则:①应该选用适当的表示方法。

②应该形式化,但不要过分形式化。

③应该估算成本。

④应该有形式化方法顾问随时提供咨询。

⑤不应该放弃传统的开发方法。

⑥应该建立详尽的文档。

⑦不应该放弃质量标准。

⑧不应该盲目依赖形式化方法。

⑨应该测试、测试再测试。

⑩应该重用。

3.一个浮点二进制数的构成是:一个可选的符号(+或-),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或-)及一个或多个二进制位。

例如,下列的字符串都是浮点二进制数:110101E-101-100111E11101+1E0更形式化地,浮点二进制数定义如下:其中:符号∷=表示定义为;符号[...]表示可选项;符号a|b表示“a或b。

软件工程第四章形式化说明技术

软件工程第四章形式化说明技术

N
姓名 学号
性别 系
学生
N
M

年级 成绩
课程号
课程
课名
学时
学分
图3.2 某校教学管理ER图
3.5 数据规范化
通常用范式定义消除数据冗余的程度。第一范式(1 NF)数据冗余度 最大,第五范式(5 NF)数据冗余度最小。但范式级别越高,(1)存 储同样多数据需要分解成更多张表,“存储自身”的过程越复杂;(2) 数据存储结构与基于问题域的结构间的匹配程度也随之下降,需求变 化时数据稳定性下降;(3)需要访问的表增多,性能下降。(第三范式) 第一范式:每个属性都是原子值 第二范式:满足第一范式条件,每个关键字属性都仅有关键字决定 第三范式:符合第二范式条件,每个非关键字属性都仅有关键字决 定,并且一个非关键字属性值不依赖于另一个非关键字属性值
用户和开发人员共同组成联合小组
加强联系 促进交流 增进合作
3.2.2 面向数据流自顶向下求精
借助数据流图、数据字典、IPO图等,细化、完善详 细的数据流图,等到各处理环节对应的功能。
需要分解
有补充修正
分析追踪数据 流图
用户复查
无补充修 正
细化 数据流图
不需分解
图3.1 需求分析基本过程
3.2.3 简易的应用规格说明技术
3.7.3 IPO图
在需求分析阶段可以使用IPO图简略地描述数据流图中各个处理 的基本算法(着重说明处理功能而不是具体实现功能的算法)。 当然,在需求分析阶段,IPO表中的许多附加信息暂时还不具备。 但是,在软件设计阶段可以进一步补充、修正这些表,继续作为 设计阶段的文档。这正是在需求分析阶段用IPO表作为描述基本算 法的工具的重要优点。
(1)选择合适的形式化方法;适用于当前项目 (2)需要形式化,但不能过渡形式化,不能放弃传统的需求 表达方法; (3)应该估算成本; (4)应该有形式化方法的专家提供指导; (5)不应该放弃传统的开发方法;

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

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

形式化说明技术按照形式化的程度,可以把软件工程使用的方法划分成非形式化,半形式化和形式化3类。

用自然语言描述需求规格说明,是典型的非形式化方法。

用数据流图或实体—联系图建立模型,是典型的半形式化方法。

所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。

4.1 概述4.1.1 非形式化方法的缺点用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。

所谓矛盾是指一组相互冲突的陈述。

例如,规格说明书的某一部分可能规定系统必须监控化学反应容器中的温度,而另一部分(可能由另一位系统分析员撰写)却规定只监控在一定范围内的温度。

如果这两个相互矛盾的规定写在同一页纸上,自然很容易查出,不幸的是,它们往往出现在相距几十页甚至数百页的两页纸中。

二义性是指读者可以用不同方式理解的陈述。

例如,下面的陈述就是具有二义性:“操作员标识由操作员姓名和密码组成,密码由6位数字构成。

当操作员登录进系统时它被存放在注册文件中。

”在上面这段陈述中,“它”到底代表“密码”还是“操作员标识”,不同的人往往有不同的理解。

系统规格说明书是很庞大的文档,因此,几乎不可避免地会出现含糊性。

例如,我们可能经常在文档中看到类似下面这样的需求:“系统界面应该是对用户友好的。

”实际上,这样笼统的陈述并没有给出任何有用的信息。

不完整性可能是在系统规格说明中最常遇到的问题之一。

例如,考虑下述的系统功能需求:“系统每小时从安放在水库中的深度传感器获取一次水库深度数据,这些数值应该保留6个月。

”假设在系统规格说明书中还规定了某个命令的功能:“AVERAGE命令的功能是,在PC机上显示由某个传感器在两个日期之间获取的平均水深。

”如果在规格说明书中对这个命令的功能没有更多的描述,那么,该命令的细节是严重不完整的,例如,对该命令的描述没有告诉我们,如果用户给定的日期是在当前日期的6个月之前,那么系统应该做什么。

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

(3) 应该估算成本。为了使用形式化方法,通常需 要事先进行大量的培训。最好预先估算所需的成本 并编入预算。 (4) 应该有形式化方法顾问随时提供咨询。绝大多 数软件工程师对形式化方法中使用的数学和逻辑并 不很熟悉,而且没受过使用形式化方法的专业训练, 因此,需要专家指导和培训。 (5) 不应该放弃传统的开发方法。把形式化方法和 结构化方法或面向对象方法集成起来是可能的,而 且由于取长补短往往能获得很好的效果。 (6) 应该建立详尽的文档。建议使用自然语言注释 形式化的规格说明书,以帮助用户和维护人员理解 系统。
(7) 不应该放弃质量标准。形式化方法并不能保证 软件的正确性,它们只不过是有助于开发出高质量 软件的一种手段。除了使用形式化说明技术外,在 系统开发过程中仍然必须一如既往地实施其他质量 保证活动。 (8) 不应该盲目依赖形式化方法。这种方法不是包 治百病的灵丹妙药,它们只不过是众多工具中的一 种。形式化方法并不能保证开发出的软件绝对正确, 例如,无法用形式化方法证明从非形式化需求到形 式化规格说明的转换是正确的,因此,必须用其他 方法(例如,评审、测试)来验证软件正确性。
使用谓词S(d,e,f),形式化转换规则为: 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。 也就是说,如果在f层请求电梯向d方向运动的楼层 按钮处于关闭状态,现在该按钮被按下,并且当时 没有正停在f层准备向d方向移动的电梯,则该楼层 按钮打开。反之,如果楼层按钮已经打开,且至少 有一部电梯到达f层,该部电梯将朝d方向运动,则 按钮将关闭。
接下来考虑楼层按钮。令FB(d,f)表示f层请求电梯 向d方向运动的按钮,楼层按钮FB(d,f)的状态转换 图如图4.3所示。 楼层按钮的状态如下: FBON(d,f):楼层按钮(d,f)打开 FBOFF(d,f):楼层按钮(d,f)关闭 如果楼层按钮已经打开,而且一部电梯到达f层, 则按钮关闭。反之,如果楼层按钮原来是关闭的, 被按下后该按钮将打开。这段叙述中包含了以下两 个事件。
电梯按钮的状态转换图如图4.2所示。令EB(e,f)表 示按下电梯e内的按钮并请求到f层去。EB(e,f)有两 个状态,分别是按钮发光(打开)和不发光(关闭)。 更精确地说,状态是: EBON(e,f):电梯按钮(e,f)打开 EBOFF(e,f):电梯按钮(e,f)关闭 如果电梯按钮(e,f)发光且电梯到达f层,该按钮将熄 灭。相反如果按钮熄灭,则按下它时,按钮将发光。 上述描述中包含了两个事件,它们分别是: EBP(e,f):电梯按钮(e,f)被按下 EAF(e,f):电梯e到达f层
在讨论电梯按钮状态转换规则时定义的谓词 V(e,f), 可以用谓词S(d,e,f)重新定义如下: V(e,f)=S(U,e,f)or S(D,e,f)or S(N,e,f) 定义电梯按钮和楼层按钮的状态都是很简单、直观 的事情。现在转向讨论电梯的状态及其转换规则, 就会出现一些复杂的情况。一个电梯状态实质上包 含许多子状态。 下面定义电梯的3个状态: M(d,e,f):电梯e正沿d方向移动,即将到达的是第f 层 S(d,e,f):电梯e停在f层,将朝d方向移动(尚未关门) W(e,f):电梯e在f层等待(已关门)
(1) 应该选用适当的表示方法。通常,一种规格说 明技术只能用自然的方式说明某一类概念,如果用 这种技术描述其不适于描述的概念,则不仅工作量 大而且描述方式也很复杂。因此,应该仔细选择一 种适用于当前项目的形式化说明技术。 (2) 应该形式化,但不要过分形式化。目前的形式 化技术还不适于描述系统的每个方面。但是,也不 能因此就认为完全没必要采用形式化方法。形式化 规格说明技术要求我们非常准确地描述事物,因此 有助于防止含糊和误解。事实上,如果用形式化方 法仔细说明系统中易出错的或关键的部分,则只用 适中的工作量就能获得较大回报。
在软件开发过程中使用数学的另一个优点是,可以 在不同的软件工程活动之间平滑地过渡。不仅功能 规格说明,而且系统设计也可以用数学表达,当然, 程序代码也是一种数学符号(虽然是一种相当繁琐、 冗长的数学符号)。 数学作为软件开发工具的最后一个优点是,它提供 了高层确认的手段。可以使用数学方法证明,设计 符合规格说明,程序代码正确地实现了设计结果。
图4.2 电梯按钮的状态转换图
图4.3楼层按钮的状态转换图
为了定义与这些事件和状态相联系的状态转换规则, 需要一个谓词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)
图4.1 保险箱的状态转换图
图4.1是一个有穷状态机的状态转换图。状态转换 并不一定要用图形方式描述,表4.1(见书68页) 的表格形式也可以表达同样的信息。 从上面这个简单例子可以看出,一个有穷状态机包 括下述5个部分:状态集J、输入集K、由当前状态 和当前输入确定下一个状态(次态)的转换函数T、 初始态S和终态集F。对于保险箱的例子,相应的 有穷状态机的各部分如下。 状态集J:{保险箱锁定,A,B,保险箱解锁,报 警}。 输入集K:{1L,1R,2L,2R,3L,3R}。
4.1 概述
4.1.1 非形式化方法的缺点
用自然语言书写的系统规格说明书,可能存在矛盾、 二义性、含糊性、不完整性及抽象层次混乱等问题。 所谓矛盾是指一组相互冲突的陈述。 二义性是指读,因此,几乎不可 避免地会出现含糊性。实际上,这样笼统的陈述并 没有给出任何有用的信息。 不完整性可能是在系统规格说明中最常遇到的问题 之一。 抽象层次混乱是指在非常抽象的陈述中混进了一些 关于细节的低层次陈述。这样的规格说明书使得读 者很难了解系统的整体功能结构。
4.1.2 形式化方法的优点
人在理解用自然语言描述的规格说明时,容易产生 二义性。为了克服非形式化方法的缺点,人们把数 学引入软件开发过程,创造了基于数学的形式化方 法。 在开发大型软件系统的过程中应用数学,能够带来 下述的几个优点: 数学最有用的一个性质是,它能够简洁准确地描述 物理现象、对象或动作的结果,因此是理想的建模 工具。数学特别适合于表示状态,也就是表示“做 什么”。
FBP(d,f):楼层按钮(d,f)被按下 EAF(1…n,f):电梯1或…或n到达f层 其中1…n表示或为1或为2…或为n。 为了定义与这些事件和状态相联系的状态转换规则, 同样也需要一个谓词,它是S(d,e,f),它的定义如下。 S(d,e,f):电梯e停在f层并且移动方向由d确定为向 上(d=U)或向下(d=D)或待定(d=N)。 这个谓词实际上是一个状态,形式化方法允许把事 件和状态作为谓词对待。
第4章 形式化说明技术
4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结 习题
按照形式化的程度,可以把软件工程使用的方法划 分成非形式化、半形式化和形式化3类。用自然语 言描述需求规格说明,是典型的非形式化方法。用 数据流图或实体-联系图建立模型,是典型的半形 式化方法。 所谓形式化方法,是描述系统性质的基于数学的技 术,也就是说,如果一种方法有坚实的数学基础, 那么它就是形式化的。
(9) 应该测试、测试再测试。形式化方法不仅不能 保证软件系统绝对正确,也不能证明系统性能或其 他质量指标符合需要,因此,软件测试的重要性并 没有降低。 (10) 应该重用。即使采用了形式化方法,软件重用 仍然是降低软件成本和提高软件质量的惟一合理的 方法。而且用形式化方法说明的软件构件具有清晰 定义的功能和接口,使得它们有更好的可重用性。
4.2 有穷状态机
4.2.1 概念
下面通过一个简单例子介绍有穷状态机的基本概念。 一个保险箱上装了一个复合锁,锁有三个位置,分 别标记为1、2、3,转盘可向左(L)或向右(R)转动。 这样,在任意时刻转盘都有6种可能的运动,即1L、 1R、2L、2R、3L和3R。保险箱的组合密码是1L、 3R、2L,转盘的任何其他运动都将引起报警。图 4.1描绘了保险箱的状态转换情况。
转换函数T:如表4.1所示。 初始态S:保险箱锁定。 终态集F:{保险箱解锁,报警}。 如果使用更形式化的术语,一个有穷状态机可以表 示为一个5元组(J,K,T,S,F),其中: J是一个有穷的非空状态集; K是一个有穷的非空输入集; T是一个从(J-F)×K到J的转换函数; S∈J,是一个初始状态; F J,是终态集。
C2:除了大厦的最低层和最高层之外,每层楼都 有两个按钮分别请求电梯上行和下行。这两个按钮 之一被按下时相应的指示灯亮,当电梯到达此楼层 时灯熄灭,电梯向要求的方向移动。 C3:当对电梯没有请求时,它关门并停在当前楼 层。 现在使用一个扩展的有穷状态机对本产品进行规格 说明。这个问题中有两个按钮集。n部电梯中的每 一部都有m个按钮,一个按钮对应一个楼层。因为 这m×n个按钮都在电梯中,所以称它们为电梯按 钮。此外,每层楼有两个按钮,一个请求向上,另 一个请求向下,这些按钮称为楼层按钮。
4.2.2 例子
为了具体说明怎样用有穷状态机技术表达系统的规 格说明,现在用这种技术给出大家熟悉的电梯系统 的规格说明。首先给出用自然语言描述的对电梯系 统的需求: 在一幢m层的大厦中需要一套控制n部电梯的产品, 要求这n部电梯按照约束条件C1,C2和C3在楼层 间移动。 C1:每部电梯内有m个按钮,每个按钮代表一个楼 层。当按下一个按钮时该按钮指示灯亮,同时电梯 驶向相应的楼层,到达按钮指定的楼层时指示灯熄 灭。
相关文档
最新文档