第4章形式化技术
软件工程 第4章 形式化说明技术
![软件工程 第4章 形式化说明技术](https://img.taocdn.com/s3/m/192f587d561252d380eb6edb.png)
行为建模
1)
2)
3)
系统的需求规格说明通常是用自然语言来叙 述的,但是用自然语言描述往往会出现二义 性。 为了直观地分析系统的动作,从特定的视点 出发描述系统的行为,需要采用动态分析的 方法。 最常用的动态分析方法
有穷状态机
时序图 Petri网
状态迁移图
状态迁移图是通过描述系统的
状态及引起系统状态转换的事 件来表示系统的行为。
形式化方法
形式化方法是建立在严格数学基础上、具有精确数学语义 的开发方法,即就是用数学语言来描述软件的设计规约。 形式化方法可以分为形式化描述和建立在形式化描述基础之 上的形式化开发 形式化的描述:用形式化的语言(具有严格的语法语义定 义的语言)描述描述软件系统及其行为模式,以更好地刻 画软件系统的性质。 形式化的开发:用形式化的语言来描述软件需求和特征, 并且通过推理验证来保证最终的软件产品是否满足这些需 求和具备这些特征,符合给定的行为模式。
应用形式化方法的准则
应该选用适当的形式化方法:主要包括有限状态机、时 序图、Petri网、Z、VDM等。 应该形式化,但不要过分形式化 应该估算成本 应该有形式化方法顾问随时提供咨询 不应该放弃传统的开发方法 应该建立详尽的文档 不应该放弃质量标准 不应该盲目依赖形式化方法 应该测试、测试再测试 应该重用
半形式化方法
软件工程使用方法可分成:非形式化、半形式化和形式化 半形式化: 结构化分析(SA)方法 利用图形等半形式化的描述方式表达需求:用数据流图、 状态转换图或实体-联系图建立数据、行为和功能模型, 形成需求说明书中的主要部分。 利用结构化语言描述加工逻辑:结构化语言是介于自然 语言和形式语言之间的一种半形式语言。加工逻辑结构 可分成外层和内层两层:外层用来描述控制结构,采用 顺序、选择、重复三种基本结构;内层对于顺序执行和 循环执行的动作,用结构化语言描述。 缺点:可能存在矛盾、二义性、含糊性、不完整性及抽 象层次混乱等问题。
4 形式化说明技术
![4 形式化说明技术](https://img.taocdn.com/s3/m/15ad23a4f524ccbff12184b2.png)
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-6章
![软件工程-张海藩 编著 复习提纲1-6章](https://img.taocdn.com/s3/m/e09b22da76a20029bd642d27.png)
第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。
)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。
5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。
6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。
3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有的对象都划分成类(class)。
(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。
第04章 形式化说明技术
![第04章 形式化说明技术](https://img.taocdn.com/s3/m/61811f00eff9aef8941e06b9.png)
S(U,e,f)+DC(e,f)=>M(U,e,f+1):
如果电梯 e 停在 f 层准备向上(U)移动,且门已经关闭,则电梯将向上一楼层移动。 如果电梯 e 停在 f 层准备向下(D)移动,且门已经关闭,则电梯将向下一楼层移动。 如果电梯 e 停在 f 层没有移动请求(N),且门已经关闭,则电梯等待移动。
4.1.1非形式化方法的缺点
矛盾性
在需求规格说明书(Reqirement Specifications)中对同一问题前后存 在不同的描述。 需求规格说明书的读者对其中同一问题的描述存在不同的理解。 需求规格说明书中对某一问题的描述不清晰、不可理解、不知如何实现 、不具可操作性。 需求规格说明书中对某一问题的描述不完整。只说明了局部,没有说明 整体;或者只说明了概要,未说明细节。因此不具可操作性。 在不同层次的抽象模型中内容混乱,如在高层模型中混有底层细节,造 成读者不能理解系统的整体功能和下级功能。
有穷状态机可以比较容易地把它转变成设计或程序代码:
可用数学方法证明软件工程各阶段的正确性(可回溯性), 如“设计”符合“规格说明”、“编码实现”符合“设计” 。
形式化方法的适用性问题
形式化方法能较好地解决需求的“二义性”、“含糊性”问 题。但不能解决需求的矛盾性、完整性等问题,这些问题涉 及工程管理。
4.1.3 应用形式化方法的准则
应该选用适当的规格说明表示方法 应该采用形式化,但不要过分形式化 应该估算推行形式化的成本 应该引入形式化方法的顾问与咨询 应该结合传统的、证明有效的开发方法
一个保险箱上装了一个复合锁,锁有三个位臵,分别标记为 1 、 2 、 3 ,转盘可向左 (L) 或向右 (R) 转动。这样,在任 意时刻转盘都有 6 种可能的运动,即 1L 、 1R 、 2L 、 2R 、 3L 和 3R 。保险箱的组合密码是 1L 、 3R 、 2L ,转盘 的任何其他运动都将引起报警。
软件工程_张海蕃
![软件工程_张海蕃](https://img.taocdn.com/s3/m/79cfaa5777232f60ddcca1a9.png)
应该推广使用在实践中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的 一些错误概念和做法。 应该开发和使用更好的软件工具。正如机械工具可 以“放大”人类的体力一样,软件工具可以“放大” 人类的智力。在软件开发的每个阶段都有许多繁琐 重复的工作需要做,在适当的软件工具辅助下,开 发人员可以把这类工作做得既快又好。如果把各个 阶段使用的软件工具有机地集合成一个整体,支持 软件开发的全过程,则称为软件工程支撑环境。
与软件开发和维护有关的许多错误认识和作法的形 成,可以归因于在计算机系统发展的早期阶段软件 开发的个体化特点。错误的认识和作法主要表现为 忽视软件需求分析的重要性,认为软件开发就是写 程序并设法使之运行,轻视软件维护等。
事实上,对用户要求没有完整准确的认识就匆忙着 手编写程序是许多软件开发工程失败的主要原因之 一。只有用户才真正了解他们自己的需要,但是许 多用户在开始时并不能准确具体地叙述他们的需要, 软件开发人员需要做大量深入细致的调查研究工作, 反复多次地和用户交流信息,才能真正全面、准确、 具体地了解用户的要求。对问题和目标的正确认识 是解决任何问题的前提和出发点,软件开发同样也 不例外。急于求成,仓促上阵,对用户要求没有正 确认识就匆忙着手编写程序,这就如同不打好地基 就盖高楼一样,最终必然垮台。事实上,越早开始 写程序,完成它所需要用的时间往往越长。
另一方面还必须认识到程序只是完整的软件产品的 一个组成部分,在上述软件生命周期的每个阶段都 要得出最终产品的一个或几个组成部分(这些组成 部分通常以文档资料的形式存在)。也就是说,一 个软件产品必须由一个完整的配置组成,软件配置 主要包括程序、文档和数据等成分。必须清除只重 视程序而忽视软件配置其余成分的糊涂观念。 作好软件定义时期的工作,是降低软件成本提高软 件质量的关键。如果软件开发人员在定义时期没有 正确全面地理解用户需求,直到测试阶段或软件交 付使用后才发现“已完成的”软件不完全符合用户 的需要,这时再修改就为时已晚了。
第四章 程序语言的性质
![第四章 程序语言的性质](https://img.taocdn.com/s3/m/803d0ddb2cc58bd63186bd77.png)
1型文法—上下文有关文法
产生式的形式为: , 其中任意非终结符 串, 是终结符和非终结符的任意序列,但 中的符号个数应不多于的符号个数
从开始符开始导出的串的长度是递增的 在生成串时,需要使用固定数量的存储空间,例如 识别上下文无关文法无法识别的串ancnbn 上下文有关文法太复杂,很难用于程序设计语言 人们对上下文有关文法的很多特征还不太清楚
这是综合属性,包含程序中声明的名字集合。该属性 可以沿树向下传递,成为继承属性,用于正确地生成 数据的代码。
28
属性文法的使用
首先创建语法分析树。属性文法假设你已经知道表达 式是如何推导出来的,它并不关心是如何分析推导出 来的。 定义属性的函数可以是任意给定的,因此定义属性的 过程完全是手工完成的。 如果只有综合属性,并且文法是 LR(k),那么,属性 文法可以用来在语法分析时自动产程中间代码。 这就是 YACC 如何工作的,它利用属性文法来计算所 有非终结符的值。
25
属性文法
例:考虑算术表达式的简单文法。
E→T|E+T T→P|T×P P→I|(E)
其语义通过文法中非终结符间的关系集合定义。如: 下面函数生成该文法生成的任意表达式的值:
产生式 E→E+T E→ T T→T×P T→P P→ I P→(E) 属性 Value(E1)=V(E2)+V(T) V(E)=V(T) V(T1)=V(T2)×V(P) V(T)=V(P) V(P)=数I的值 V(P)=V(E)
如Hoare的公理语义。
22
语义建模(5)—规约模型
描述实现程序的各个函数的关系,只要 我们可以证明一个实现符合了所有的函 数间的关系,则称实现相对于规约是正 确的。 代数数据类型是形式规约的一种形式。
第一课有穷状态机
![第一课有穷状态机](https://img.taocdn.com/s3/m/a74d1753192e45361066f5d9.png)
a
U
a
a,b
b S
a Q
b
V
b
第4章 形式化说明技术
上海海洋大学爱恩学院
DFA 的矩阵表示
f(S,a)=U f(S,b)=V f(U,a)=Q f(U,b)=V
f(V,a)=U f(v,b)=Q f(Q,a)=Q f(Q,b)=Q
状态
字符
a
b
S
U
V
U
Q
V
V
U
Q
Q
Q
Q
第4章 形式化说明技术
上海海洋大学爱恩学院
第4章 形式化说明技术
上海海洋大学爱恩学院
图4.1 保险箱的状态转换图
第4章 形式化说明技术
上海海洋大学爱恩学院
图4.1是一个有穷状态机的状态转换图。
从上面这个简单例子可以看出,一个有穷状 态机包括下述5个部分:状态集J、输入集K、 由当前状态和当前输入确定下一个状态(次态) 的转换函数T、初始态S和终态集F。对于保 险箱的例子,相应的有穷状态机的各部分如 下。
K是一个有穷的非空输入集;
T是一个从(J-F)×K到J的转换函数;?
S∈J,是一个初始状态;
F J,是终态集。
第4章 形式化说明技术
思考题
上海海洋大学爱恩学院
一个保险箱上装了一个复合锁,锁有三个位 置,分别标记为1、2、3,转盘可向左(L)或 向右(R)转动。这样,在任意时刻转盘都有6 种可能的运动,即1L、1R、2L、2R、3L和 3R。保险箱的组合密码是1L、3R、2L,转
盘的任何其他运动都将引起报警,请画出相 应状态转换图。
第4章 形式化说明技术
上海海洋大学爱恩学院
4.2.3 评价
《形式化语言》课件
![《形式化语言》课件](https://img.taocdn.com/s3/m/afbc7f0a2f3f5727a5e9856a561252d380eb2081.png)
硬件设计:用于描述和验证硬 件设计的正确性和安全性
数学证明:用于描述和验证数 学定理的正确性和安全性
形式化语言的语法规则
语法规则的概述
形式化语言 的语法规则 是描述语言 结构的规则
语法规则包 括词法、句 法和语义规
则
词法规则描 述词的构成 和组合规则
句法规则描 述句子的构 成和组合规
则
语义规则描 述词的含义 和句子的含
语言实现的步骤与过程
确定语言目 标:明确语 言要实现的 功能和特性
设计语法和 语义:定义 语言的语法 规则和语义 解释
编写编译器: 实现语言的 语法分析和 语义分析
测试与调试: 对编译器进 行测试和调 试,确保其 正确性和稳 定性
发布与维护: 发布语言并 持续进行维 护和更新, 以满足用户 需求
形式化语言的实例分析
之一。
语义解释的方法
语法解释:通过 语法规则来解释 语义
语义解释:通过 语义规则来解释 语义
逻辑解释:通过 逻辑推理来解释 语义
模型解释:通过 建立模型来解释 语义
语义解释的过程
形式化语言的定义:一种用于描 述和验证计算机系统的数学语言
语义解释的方法:使用数学逻辑 和形式化方法进行描述和验证
添加标题
义
语法规则是 形式化语言 的基础,用 于描述语言 的结构和含
义
语法规则的构成要素
符号:用于表示语言中的各种元素,如字母、数字、运算符等 语法结构:描述符号的组合规则,如词法、句法等 语义:描述符号组合的意义,如表达式、语句等 语法分析:用于验证符号组合是否符合语法规则,如词法分析、句法分析等
语言特性的选择与确定
语言特性的选择:根据应用领域和需求选择合适的语言特性 语言特性的确定:根据语言特性的选择,确定语言的语法、语义和语用特性 语言特性的实现:根据语言特性的确定,实现语言的编译器、解释器或虚拟机 语言特性的验证:通过测试和验证,确保语言特性的实现符合预期
软件工程导论第1章(第4版)
![软件工程导论第1章(第4版)](https://img.taocdn.com/s3/m/b347bf120812a21614791711cc7931b765ce7b1e.png)
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程导论课件之第4章 形式化说明技术(第五版)(张海藩编著)_百度文库
![软件工程导论课件之第4章 形式化说明技术(第五版)(张海藩编著)_百度文库](https://img.taocdn.com/s3/m/d0a40a3643323968011c925f.png)
第4章 形式化说明技术
前言 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
4.1 概述
4.1.1 非形式化方法的缺点
用自然语言(典型的非形式化方法)书写的系统规 格说明书,可能存在矛盾、二义性、含糊性、不完 整性及抽象层次混乱等问题。
矛盾是指一组相互冲突的陈述。
矛盾是指一组相互冲突的陈述。(不同系统分析员定义范围不同) 二义性是指读者可以用不同方式理解的陈述。 含糊性,例如:这样的需求:“系统界面应该是对 用户友好的。”实际上,这样笼统的陈述并没有给 出任何有用的信息。 不完整性可能是在系统规格说明中最常遇到的问题 之一。(如规格中没有考虑登录失败的转向的页面,即考虑问题不全面) 抽象层次混乱是指在非常抽象的陈述中混进了一些 关于细节的低层次陈述。(总体设计中混入了详细设计,分不清他们)
第4章 形式化说明技术
前言 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
形式化说明技术=形式化方法,概念等同。
软件生命周期包括哪几个阶段?
可行性研究
需求分析 总体设计 详细设计
编码和单元测试 描述“系统规格说明书 ”的方法,有哪些? 需求规格说明书
总体设计规格说明书
状态
事件/输入
图4.1 保险箱的状态转换图
图4.1是一个有穷状态机的状态转换图。状态转换 并不一定要用图形方式描述,表4.1的表格形式也 可以表达同样的信息。
转换函数:当前状态+事件/输入下个状态
从上面这个简单例子可以看出,一个有穷状态机包 括下述5个部分:状态集J、输入集K、由当前状态 和当前输入确定下一个状态(次态)的转换函数T、 初始态S和终态集F。对于保险箱的例子,相应的 有穷状态机的各部分如下。 状态集J:{保险箱锁定,A,B,保险箱解锁,报 警}。 输入集K:{1L,1R,2L,2R,3L,3R}。 转换函数T:如表4.1所示。(当前状态+事件/输入下个状态) 初始态S:保险箱锁定。 终态集F:{保险箱解锁,报警}。
形式化说明技术
![形式化说明技术](https://img.taocdn.com/s3/m/8787c452a8114431b90dd8d1.png)
半形式化方法(语法和语义都不太严谨) :系统流程图、数据流图、数 据字典、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版)笔记和课后习题详解
![张海藩《软件工程导论》(第6版)笔记和课后习题详解](https://img.taocdn.com/s3/m/77b19ced336c1eb91b375d74.png)
第 3 章 需求分析 ......................................................................................................................................... 28 3.1 复习笔记 ........................................................................................................................................ 28 3.2 课后习题详解 ................................................................................................................................. 32
张海藩《软件工程导论》(第6版)(课后习题 第4章 形式化说明技术)【圣才出品】
![张海藩《软件工程导论》(第6版)(课后习题 第4章 形式化说明技术)【圣才出品】](https://img.taocdn.com/s3/m/9d0f6075b14e852459fb577b.png)
第4章形式化说明技术1.举例对比形式化方法和欠形式化方法的优缺点。
答:(1)欠形式化方法的缺点①矛盾矛盾是指一组相互冲突的陈述。
②二义性二义性是指读者可以用不同方式理解的陈述。
③含糊性例如,人们可能经常在文档中看到类似下面这样的需求:“系统界面应该是对用户友好的。
”实际上,这样笼统的陈述并没有给出任何有用的信息。
④不完整性。
如果在规格说明书中对一个命令的功能没有更多的描述,那么,这个命令的细节是严重不完整的。
⑤抽象层次混乱。
抽象层次混乱是指在非常抽象的陈述中混进了一些关于细节的低层次陈述。
这样的规格说明书使得读者很难了解系统的整体功能结构。
(2)形式化方法的优点①能够简洁准确地描述物理现象、对象或动作的结果。
在理想情况下,分析员可以写出系统的数学规格说明,它准确到几乎没有二义性,而且可以用数学方法来验证,以发现存在的矛盾和不完整性,在这样的规格说明中完全没有含糊性。
②可以在不同的软件工程活动之间平滑地过渡。
③提供了高层确认的手段。
可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。
2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?答:(1)人们在理解用自然语言描述的规格说明时,容易产生二义性。
为了克服非形式化方法的缺点,人们把数学引入软件工程。
创造了基于数学的形式化说明技术。
(2)应用形式化方法的准则:①应该选用适当的表示方法。
②应该形式化,但不要过分形式化。
③应该估算成本。
④应该有形式化方法顾问随时提供咨询。
⑤不应该放弃传统的开发方法。
⑥应该建立详尽的文档。
⑦不应该放弃质量标准。
⑧不应该盲目依赖形式化方法。
⑨应该测试、测试再测试。
⑩应该重用。
3.一个浮点二进制数的构成是:一个可选的符号(+或-),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或-)及一个或多个二进制位。
例如,下列的字符串都是浮点二进制数:110101E-101-100111E11101+1E0更形式化地,浮点二进制数定义如下:其中:符号∷=表示定义为;符号[...]表示可选项;符号a|b表示“a或b。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可能出现“死锁”的PN:
如何解决“死锁”问题?(请同学思考)
三. PN 的发展?
1. 扩展 PN (比如,带有禁止线的 PN) , 增加 PN 的表达能力, 增加自动生成代码的能力;
2. 带有令牌值的 PN; 3. 计时 PN ,丰富调度策略; 4. ……
注意,输出函数O ( t2 )中有两个P3,是因为 有两个箭头由 t2 指向P3。 更形式化的 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∞为输出函数,是由转换到位置无
(可以规定各转换的“请求等待时间”来精确描述问题)
比如:t (设置) = 0;t (C) = 0.001; t (PR) = 0.1
假设电梯由 g 层驶向 f 层,因为电梯在 g 层,如图 6 所示,位置 Fg上有一个权标。由于 每条输入线上各有一个权标,转换“电梯在运行” 被激发,从而 EBf 和 Fg上的权标被移走,按钮
在图2 中P2上有权标,因此 t2 也可以被 激发。当 t2 被激发时,P2上将移走一个权标, 而 P3上新增加两个权标。Petri 网具有非确定 性,也就是说,如果数个转换都达到了激发条 件,则其中任意一个都可以被激发。( 请问:不 确定性应该么? ) t1 和 t2 都可以被激发。假设 t1 被激发 了,则结果如图3 所示。此时,只有 t2 可以 被激发。如果 t2也被激发了,则权标从 P2 中 移出,两个新权标被放在 P3上。
有穷状态机的概念在计算机系统中应用
得非常广泛。例如,每个菜单驱动的用户界面
都是一个有穷状态机的实现。一个菜单的显示
和一个状态相对应,键盘输入或用鼠标选择一
个图标是使系统进入其他状态的一个事件。状
态的每个转换都具有下面的形式:
当前状态〔菜单〕+事件〔所选择的项〕
下个状态。
为了对一个系统进行规格说明,通常都 需要对有穷状态机做一个很有用的扩展,即在 前述的 5 元组中加入第 6个组件——谓词集P, 从而把有穷状态机扩展为一个 6 元组,其中每 个谓词都是系统全局状态 Y 的函数。转换函数 T 现在是一个从(J-F)×K×P到 J的函数。现 在的转换规则形式如下: 当前状态〔菜单〕+事件〔所选择的项〕+谓 词下个状态。
电梯中楼层 f 的按钮,在 Petri 网中用
位置 EBf 表示(1≤f≤m)。在 EBf 上有一个 权标,就表示电梯内楼层f的按钮被按下了。 电梯按钮只有在第一次被按下时才会由 暗变亮,以后再按它则只会被忽略。
图 6 所示的 Petri 网准确地描述了电梯 按钮的行为规律。
首先,假设按钮没有发亮,显然在位置 EBf上没有权标,从而在存在禁止线的情况下, 转换“EBf 被按下”是允许发生的。假设现在 按下按钮,则转换被激发并在 EBf 上放置了 一个权标,如图 6 所示。以后不论再按下多少 次按钮,禁止线与现有权标的组合都决定了转 换“EBf 被按下”不能再被激发了,因此,位 置 EBf 上的权标数不会多于 1。
在 Petri 网中楼层按钮用位置 FBfu 和 FBfd 表示,分别代表 f 楼层请求电梯上行和下
行的按钮。底层的按钮为FB1u,最高层的按
钮为 FBmd,中间每一层有两个按钮 FBfu 和
FBfd (1<f<m)。
图7 Petri网表示楼层按钮
图 7 所示的情况为电梯由 g 层驶向 f 层。根 据电梯乘客的要求,某一个楼层按钮亮或两个楼层 按钮都亮。如果两个按钮都亮了,则只有一个按钮 熄灭。图 7 所示的 Petri 网可以保证,当两个按钮 都亮了的时候,只有一个按钮熄灭。但是要保证按 钮熄灭正确,则需要更复杂的 Petri 网模型。
例子2: 使用PN表示“图书馆借书”案例中一
本书的扩展状态图,包括超期罚款部分。
设: B — 借阅 R — 还书 R1 — 超期还书 Q — 付清罚款
B
借出 图书馆
R
超期
·
R1 Q
已请罚款
例2 的下述方法对不对? (设F为超期 )
B
借出 图书馆
·
R
F
罚款
Q
例子3: 使用PN表示“图书馆借书”案例中一
二. Petri网
1 概念
并发系统中遇到的一个主要问题是定时 问题。这个问题可以表现为多种形式,如同步 问题、异步问题竞争条件以及死锁问题。 用于确定系统中隐含的定时问题的一种 有效技术是Petri网,这种技术的一个很大的 优点是它也可以用于设计中。 注意:FSM主要解决同步问题,Petri网解决异步问题
EBf 被关闭,在位置 Ff 上出现一个新权标,即转
换的激发使电梯由 g 层驶到f层。
2. 楼层按钮
第二个约束条件中描述了楼层按钮的行为。
第二条约束 C2:除了第一层与顶层之外,每个 楼层都有两个按钮,一个要求电梯上行,另一个 要求电梯下行。这些按钮在按下时发亮,当电梯 到达该层并将向指定方向移动时,相应的按钮才 会熄灭。
本书的扩展状态图,包括预约部分。 设: B — 借阅 R — 还书 YY — 预约 YB — 预约借书
预约
YB
B YY
图书馆
借出
·
R
例子4: 使用PN表示“图书馆借书”案例中一
本书的扩展状态图,包括预约和超期罚款
部分。
( 请同学自己画出 )
例子 5 ( 电梯问题实例 )
现在把 Petri 网应用于电梯问题。当用 Petri 网表示电梯系统的规格说明时,每个楼层 用一个位置 Ff 代表(1≤f≤m),在 Petri 网中电梯 是用一个权标代表的。在位置 Ff 上有权标,表示 在楼层 f 上有电梯。
图 6 Petri 网表示的电梯按钮
问题: “电梯按钮只有在第一次被按下时才 会由暗变亮,以后再按它则只会被忽略“。 你能仅使用不带禁止线的Petri网解决上述 问题吗? 注意,下述Petri 网元素是正确的:
C PR
假如 PR 表示“按下按钮”,C 表示“清除令牌”
答案:
C PR
设置 按钮灯亮 复位 按钮灯灭
Petri 网的标记是在 Petri 网中权标 (token) 的分配。例如,在图2 中有 4 个权标, 其中一个在 P1中,两个在 P2中,P3 中没有, 还有一个在 P4中。
由于 P2和 P4 中有权标,因此 t1启动 ( 激发 )。通常,当每个输入位置所拥有的权标 数大于等于从该位置到转换的线数时,就允许 转换。当 t1 被激发时,P2 和 P4上各有一个 权标被移出,而 P1上则增加一个权标。Petri 网中权标总数不是固定的,在这个例子中两个 权标被移出,而 P1上只能增加一个权标。
例子:
在一幢 m 层的大厦中需要一套控制 n
部电梯的产品,要求这 n 部电梯按照约束条件
C1,C2和C3在楼层间移动。 (详情参阅《导
论》P69)
C1:每部电梯内有m个按钮,每个按钮代表一 个楼层。当按下一个按钮时该按钮指示灯亮, 同时电梯驶向相应的楼层,到达按钮指定的楼 层时指示灯熄灭。 C2:除了大厦的最低层和最高层之外,每层 楼都有两个按钮分别请求电梯上行和下行。这 两个按钮之一被按下时相应的指示灯亮,当电 梯到达此楼层时灯熄灭,电梯向要求的方向移 动。 C3:当对电梯没有请求时,它关门并停在当 前楼层。
形式化说明技术
人在理解用自然语言描述的规 格说明时,容易产生二义性。为了 克服非形式化方法的缺点,人们把 数学引入软件开发过程,创造了基 于数学的形式化方法。
系统规格说明书是很庞大的文档,因此,
几乎不可避免地会出现含糊性。
抽象层次混乱是指在非常抽象的陈述中 混进了一些关于细节的低层次陈述。这样的规 格说明书使得读者很难了解系统的整体功能结 构。
一个权标而 P2上没有权标,因此转换 t1 可以
被激发。
例子1: 使用PN表示“图书馆借书”案例中一
本书的状态图。( 设:P1表示“图书馆”; P2表示“借书者”;C表示“借书”转换; R表示“还书”转换)
例子1’ : 使用PN表示“图书馆借书”案例中
一本书的状态图。( 假设只有会员才能借 书)
(6) 应该测试。 (7) 应该重用。即使采用了形式化方法,软 件重用仍然是降低软件成本和提高软件质量的 惟一合理的方法
一. 有穷状态机
1 概念
一个有穷状态机可以表示为一个5元组(J, K,T,S,F),其中: J 是一个有穷的非空状态集; K是一个有穷的非空输入集; T是一个从 (J-F)×K到 J 的转换函数; S∈J,是一个初始状态; FJ,是终态集。
最后,考虑第三条约束。
第三条约束 C3:当电梯没有收到请求时,它
将留在当前楼层并关门。
这条约束很容易实现,如图 7 所示,当没有
请求( FBfu 和 FBfd 上无权标)时,任何一个转
换 “电梯在运行”都不能被激发。
小结
1. 形式化方法优点:
基于数学的形式化方法无二义性、描述完 整、易于转换、易于生成代码。 2. 把形式化方法和欠形式化方法有机地结合 起来,使它们取长补短,应该能获得更理想的 效果。
(1) 应该选择一种适用于当前项目的形式化
说明的技术。
(2) 不要过分形式化。如果用形式化方法仔
细说明系统中易出错的或关键的部分,则只用
适中的工作量就能获得较大回报。
(3) 应该估算成本。
(4) 不应该放弃传统的开发方法。把形式化
方法和结构化方法或面向对象方法集成起来取
长补短。
(5) 不应该盲目依赖形式化方法。
1. 电梯按钮
电梯问题的第一个约束条件描述了电梯按钮