形式化方法
形式化方法

15.1 概 述
15.1.1 非形式化方法的缺点 15.1.2 软件开发过程中的数学 15.1.3 应用形式化方法的准则
15.1.3 应用形式化方法的准则
关于形式化方法是有争议的。这种方法 对某些软件工程师很有吸引力,其拥护 者甚至宣称这种方法可以引发软件开发 的革命,另一些人则对把数学引入软件 开发过程持怀疑甚至反对的态度。编者 认为,对形式化方法也应该“一分为二 ”,既不要过分夸大它的优点也不要一 概排斥。
15.1.1 非形式化方法的缺点
假设在系统规格说明中还规定,系统的 某个命令是:
AVERAGE命令的功能是在PC上显示由某 个特定传感器在两个日期之间获取的平 均水深。
15.1.1 非形式化方法的缺点
抽象层次混杂是指在非常抽象的陈述中 混进了一些关于细节的低层次陈述。这 使得系统规格说明的读者很难了解系统 的整体功能结构。
S (D, e, f ) + DC (e, f ) → M (D, e, f−1) S (N, e, f ) + DC (e, f ) → W (e, f )
15.2 有穷状态机
15.2.1 基本概念 15.2.2 电梯问题 15.2.3 评论
15.2.3 评论
有穷状态机方法采用了一种简单的格式 来描述规格说明
15.2.1 基本概念
15.2.1 基本概念
15.2.1 基本概念
从上面这个简单例子可以看出,一个有 穷状态机包括下述5个部分:状态集J、 输入集K、由当前状态和当前输入确定下 一个状态(次态)的转换函数T、初始态 S和终态集F。
15.2.1 基本概念
有穷状态机的概念在计算机系统中应用 得非常广泛,如每个菜单驱动的用户界 面都是一个有穷状态机的实现。一个菜 单的显示和一个状态相对应,键盘输入 或用鼠标选择一个图标是使系统进入其 他状态的一个事件。状态的每个转换都 具有下面的形式
形式化方法在软件测试中的应用

形式化方法在软件测试中的应用形式化方法是一种利用数学工具来验证软件系统的正确性和安全性的方法。
它通过建立模型、规范和推理来检测和排除软件中的错误和缺陷,从而提高软件的可靠性和质量。
形式化方法在软件测试中的应用可以帮助发现潜在的错误,降低测试的漏洞率,并提高测试的效率和准确性。
在软件测试中,形式化方法主要有以下几个方面的应用:1.引理证明:通过数学推理和证明,验证软件系统的正确性。
形式化方法可以帮助设计者证明软件系统的一些特性,如功能正确性、安全性和可靠性等。
通过引理证明,可以更准确地了解软件系统的行为,找出潜在的设计错误,从而提高软件系统的可靠性。
2.静态分析:通过对源代码的静态分析,发现并修复潜在的缺陷。
形式化方法可以通过对源代码的形式化表示和分析,检测代码中的错误和漏洞,从而提高软件的质量。
静态分析可以帮助测试人员找出可能的代码错误,如空指针引用、数组越界等,从而减少测试的次数和成本。
3.模型检测:通过数学建模和模型检测技术,检测系统模型中的错误和缺陷。
形式化方法可以帮助建立系统的形式化模型,并对该模型进行模型检测。
模型检测可以帮助发现系统模型中的一些潜在错误,如死锁、活锁、资源争用等,从而提高系统的可靠性和安全性。
4.可达性分析:通过可达性分析技术,找出系统模型中的不可达状态和死代码。
形式化方法可以通过可达性分析,分析系统模型中的状态转移和事件触发关系,并找出不可达状态和死代码。
通过可达性分析,可以发现潜在的设计错误,提高系统的可靠性和安全性。
综上所述,形式化方法在软件测试中的应用可以帮助发现潜在的错误,降低测试的漏洞率,并提高测试的效率和准确性。
通过形式化方法,在设计和测试过程中进行模型化工具支持,可以更准确地描述和分析软件系统的行为,并找出其中的错误和缺陷,从而提高软件的可靠性和质量。
软件工程的形式化方法

软件工程的形式化方法
软件工程的形式化方法是指使用数学语言和工具来描述和分析软件系统的方法。
这种方法主要目的是利用形式化的规范化语言来确保软件系统的正确性、一致性和可靠性。
形式化方法的核心思想是将软件系统的设计、开发和验证过程转化为严格的数学推理和证明。
它通过建立数学模型和推理规则来描述和操作软件系统的各个方面,包括系统的结构、行为和约束条件等。
形式化方法还提供了一些工具和技术,如模型检测、定理证明和计算机辅助验证等,用于对软件系统进行形式化的验证和验证。
形式化方法在软件工程领域具有重要的应用价值。
它可以帮助开发人员提前发现和解决软件系统中的潜在问题,减少测试和调试的工作量,提高软件系统的质量和可靠性。
此外,形式化方法还可以提供软件系统的形式化规范,为系统的维护、重用和扩展提供了基础。
然而,形式化方法也存在一定的限制和挑战。
首先,形式化方法需要开发人员具备深厚的数学和逻辑推理能力,因此对于一般开发人员来说比较难以理解和应用。
其次,形式化方法在建模和验证过程中需要投入大量的时间和精力,导致在软件项目的时间和成本方面存在一定的压力。
此外,形式化方法还可能存在误差和缺陷,因为它们依赖于人工规约和形式化验证过程。
总的来说,形式化方法是软件工程领域一种重要的技术和方法,可以帮助开发人员确保软件系统的正确性和可靠性。
它在一些关键和复杂的软件系统中具有特别的应用价值,并在工业界和研究界得到广泛的关注和应用。
形式化方法 名词解释

形式化方法名词解释摘要:一、形式化方法的定义二、形式化方法的应用领域三、形式化方法的优势与局限性四、我国在形式化方法的研究与发展五、形式化方法在未来的发展趋势正文:一、形式化方法的定义形式化方法,简单来说,是一种通过数学模型和逻辑推理来描述、分析和解决问题的方法。
它借助于符号、公式和逻辑推理,使得问题阐述更加严谨、精确,便于研究者之间的交流与理解。
形式化方法的应用领域十分广泛,包括数学、计算机科学、物理学、经济学、生物学等诸多学科。
二、形式化方法的应用领域在数学领域,形式化方法为数学的公理化、严谨化提供了有力支撑。
如皮亚诺公理体系的建立,为自然数的理论研究奠定了基础。
在计算机科学领域,形式化方法在程序设计、软件开发和系统分析中发挥着重要作用。
如算法复杂度分析、程序正确性证明等都离不开形式化方法。
三、形式化方法的优势与局限性形式化方法的优势在于其严谨性和精确性。
它有助于揭示问题的本质,为理论研究提供严密的框架。
然而,形式化方法也存在一定的局限性。
首先,它要求研究者具备较高的数学素养和逻辑思维能力。
其次,形式化方法在应用过程中,可能会过于复杂,导致不易理解。
最后,形式化方法有时并不能解决实际问题,需要与其他方法相结合。
四、我国在形式化方法的研究与发展我国在形式化方法的研究取得了举世瞩目的成果。
如在数学领域,华罗庚、陈省身等著名数学家为形式化方法的发展作出了巨大贡献。
在计算机科学领域,我国学者在程序设计、软件工程、人工智能等方面取得了丰硕的成果。
五、形式化方法在未来的发展趋势随着科技的不断发展,形式化方法在各个领域的应用将更加广泛。
在未来,形式化方法将继续向以下几个方向发展:1.形式化方法与其他方法的融合,如与实证方法、模拟方法等相结合,以提高解决问题的效率;2.形式化方法在交叉学科中的应用,如数学物理、生物信息学等领域;3.形式化方法在工程技术中的应用,如控制系统、通信系统等;4.形式化方法在人工智能、大数据等领域的创新应用。
形式化方法

形式化方法
By 周帝
目录
1.形式化方法 形式化方法 2.软件中的形式化方法 软件中的形式化方法 2.1非形式化方法的缺点 非形式化方法的缺点 2.2形式化方法的优点 形式化方法的优点 3.形式化方法的举例 形式化方法的举例 4.形式化方法语言 形式化方法语言
形式化方法
By 周帝
非形式化的缺点
用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整 性及抽象层次混乱等问题。 矛盾:指一组相互冲突的陈述。监控化学反应容器中的温度,监控在一定范围 内的温度 二义性:指读者可以用不同方式理解的陈述。操作员标识由操作员姓名和密码 组成,密码由6位数字构成。当操作员登陆进系统时它被放在注册文件里 含糊性:系统规格说明书庞大,易出现含糊性。 不完整性:遗漏了客户的一些需求。例如,AVERAGE命令的功能是显示某个 传感器在两个日期内获得的平均水深(每个数据保留6个月) 抽象层次混乱:是指在非常抽象的陈述中混进了一些关于细节的低层次陈述。
形式化方法
By 周帝
形式化方法的定义
用于开发计算机系统的形式化方法是描述系统 性质的基于数学的技术,这样的形式化方法提供了 一个框架,可以在框架中以系统的而不是特别的方 式刻划、开发和验 证系统。 如果一个方法有良好 的数学基础,那么它就是形式化的,典型地以形式 化规约语言给出。这个基础提供一系列精确定义的 概念,如:一致性和完整性,以及定义规范 的实 现和正确性。 形式化方法的本质是基于数学的方 法来描述目标软件系统属性的一种技术。
形式化方法
By 周帝
事例
在一幢M层楼的大厦里,用电梯内的和每个楼层的按 钮来控制N部电梯的运动。当按下电梯按钮请求电梯 在指定楼层停下时,按钮指示灯亮;当电梯到达指定 楼层时,指示灯灭。除了大厦的最底层和最高层外, 每层楼都有两个按钮分别指示电梯上行和下行。当这 两个按钮之一被按下时相应的指示灯亮,当电梯到达 此楼层时灯熄灭,电梯向要求的方向移动。当电梯无 升降动作时,关门并停在当前楼层。
形式化方法

形式化方法
By 周帝
形式化方法的定义
用于开发计算机系统的形式化方法是描述系统 性质的基于数学的技术,这样的形式化方法提供了 一个框架,可以在框架中以系统的而不是特别的方 式刻划、开发和验 证系统。 如果一个方法有良好 的数学基础,那么它就是形式化的,典型地以形式 化规约语言给出。这个基础提供一系列精确定义的 概念,如:一致性和完整性,以及定义规范 的实 现和正确性。 形式化方法的本质是基于数学的方 法来描述目标软件系统属性的一种技术。
形式化方法
By 周帝
目录
1.形式化方法 形式化方法 2.软件中的形式化方法 软件中的形式化方法 2.1非形式化方法的缺点 非形式化方法的缺点 2.2形式化方法的优点 形式化方法的优点 3.形式化方法的举例 形式化方法的举例 4.形式化方法语言 形式化方法语言
形式化方法
By 周帝
形式化转换例子
相信通过对比非形式化, 相信通过对比非形式化,我们能对形式化 方法有一定的了解 下面就想魏老师上课跟我们讲述事物用例 那样一步一步的分析, 那样一步一步的分析,如何讲一个日常的 事情用形式化方法装换
形式化方法
By 周帝
形式化方法的分类
根据说明目标软件系统的方式,形式化方法可 以分为两类: 1)面向模型的形式化方法。面向模型的方法 通过构造一个数学模型来说明系统的行为。 2)面向属性的形式化方法。面向属性的方法 通过描述目标软件系统的各种属性来间接定义 系统行为。
形式化方法
By 周帝
形式化方法的分类
形式化方法
By 周帝
个人认为,这样下的定义太过于抽象,并且不好理解。 举个易懂的例子,如果一个人长的与周帝相同,且内心 想法与周帝一样那么他就是周帝;反之,他就不是周帝。 那么我们就能写成为,如果a, 且b,那么,则ZD;如果非a, 或非b,则非ZD。 我们不难看出这是一个逻辑式,if a and b, then c; if not a or not b, then not c.
软件工程第十章形式化方法优秀课件

所谓集合,乃是有某些可以相互区分的如何对象, 如数、变量、函数、字母、数字、图、语言、程序、 事件等,或者没有任何对象,汇集在一起所组成的 整体。
➢ 例10--2:一个包含4个元素的自然数集合: {1,3,5,7}
➢ 例10--3:包含五种程序设计语言的名字的集合: {C ,C++, Pascal, Basic, FORTRAN }
形式化规约语言的语法域通常基于从标准集合 论符号和谓词演算导出的语法。
10.2有限状态机(FSM)
很多实时系统,特别是实时控制系统,其整个 分析机制与系统的状态有相当大的关系。有限 状态机由有限的状态和相互之间的转移构成, 在任何时候只能处于给定数目的状态中的一个。
当接收到一个输入事件时,状态机产生一个输 出,同时也可能伴随着状态的转移。主要有两 种方法来建立有限状态机,一种是"状态转移 图",另一种是"状态转移表",分别用图形方式 和表格方式建立有限状态机。
软件工程第十章形式化 方法
第十章 形式化方法
形式化方法提供了规约环境的基础,它使得所 生成的分析模型比用传统的或面向对象的方法 生成的模型更完整、一致和无二义性。集合论 和逻辑符号的描述设施使得我们可以创建清晰 的关于事实的陈述。
支配形式化方法的基本概念是:数据不变式、 状态、离散数学、序列相关联的符号体系、形 式化规约语言。
4.没有队列元素包含相同的块号。 5.已用块和未用块的集合将是组成文件的块的 总集。
6.在已用块集合中没有重复的块号。
10.1.4 形式化规约语言 形式化规约语言通常由三个主要的成分构成:
(1)语法,定义用于表示规约的特定符号; (2)语义,帮助定义用于描述系统的“对象的全 域(universe of objects)”; (3)一组关系,定义确定出哪个对象真正满足规 约的规则。
形式化方法的缺点

形式化方法的缺点形式化方法是一种以数学符号和逻辑结构来描述和分析系统的方法,它在许多工程和科学领域都有广泛的应用。
然而,形式化方法也存在一些缺点,下面我将详细讨论这些缺点,包括可信度问题、可行性问题和应用范围的限制。
首先,形式化方法的一个主要缺点是可信度问题。
虽然形式化方法以严密的数学逻辑为基础,但这并不意味着它得出的结论一定是正确的。
在形式化过程中,由于人为因素、模型假设的不准确性或系统复杂性等原因,可能会出现错误或遗漏。
尤其在应用于实际系统时,实际系统往往比理论模型更加复杂和动态,难以完全符合形式化方法的假设和要求。
如果在形式化过程中的错误没有被发现,就可能导致产生错误的结论和预测。
因此,对形式化方法的使用者而言,根据实际情况和需求对结果进行适当的解释和验证是非常重要的。
其次,形式化方法的可行性问题也是一个重要的缺点。
形式化方法通常需要使用复杂的数学工具和技术,这要求使用者具有高深的数学背景和专业知识。
这使得形式化方法在应用于一些实际问题时变得非常困难和耗时。
此外,形式化方法往往需要进行大量的计算和推导,这也增加了其使用的计算资源和时间成本。
因此,在某些情况下,形式化方法可能不适用于资源受限或时间紧迫的情况。
对于一些复杂系统,形式化方法可能无法提供有效的解决方案。
再次,形式化方法的应用范围存在一定的限制。
虽然形式化方法在一些领域的应用非常成功,如硬件验证、软件验证等,但在其他领域的应用相对较少。
对于一些非形式化或半形式化的问题,形式化方法可能不适用或不具备实用性。
例如,对于一些涉及人类行为或社会系统的问题,形式化方法可能无法很好地描述和分析,因为这些问题往往具有一定的不确定性和复杂性。
在这种情况下,需要采用其他方法或结合形式化方法与其他方法进行综合分析。
此外,形式化方法的可理解性也是一个缺点。
由于形式化方法使用符号和逻辑结构进行描述和分析,对于普通用户来说,理解和使用这些方法和结果可能会很困难。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
两个用于转换的输入函数,用由位置指向转换的 箭头表示,它们是: I(t1)={P2,P4} I(t2)={P2} 两个用于转换的输出函数,用由转换指向位置的
箭头表示,它们是:
O(t1)={P1} O(t2)={P3,P3} 注意,输出函数O(t2)中有两个P3,是因为有两个 箭头由t2指向P3。
5.3.1 基本概念 Petri网包含4种元素:一组位置P、一组转换T、 输入函数I以及输出函数O。图5.5举例说明了Petri网 的组成。 其中, 一组位置P为{P1,P2,P3,P4},在图中用圆圈 代表位置。 一组转换T为{t1,t2},在图中用短直线表示转 换。
图5.5 Petri网的组成
数学作为软件开发工具的最后一个优点是,它提 供了高层确认的手段。可以使用数学方法证明,设计 符合规格说明,程序代码正确地反映了设计结果。
5.1.3
应用形式化方法的准则
为了更好地发挥这种方法的长处,下面给出应用 形式化方法的几条准则,供读者在实际工作中使用。 · 选择适用于当前项目的符号系统。 · 应该形式化,但不要过分形式化。通常没有必 要对系统的每个方面都使用形式化方法。 · 应该进行成本/效益分析。 · 需要有形式化方法的顾问。
6元组,其中每个谓词都是系统全局状态Y的函数。转
换函数T现在是一个从(J-F)×K×P到J的函数。现在的 转换规则形式如下: 当前状态〔菜单〕+事件〔所选择的项〕+谓词 下个状态。
5.2.2
电梯问题
为了说明在实际工作中怎样使用形式化的方法, 现在我们用有穷状态机技术给出电梯问题的规格说明。
果t2也被激发了,则令牌从P2中移出,两个新令牌被
J是一个有穷的非空状态集;
K是一个有穷的非空输入集; T是一个从(J-F)×K到J的转换函数; S∈J,是一个初始状态; FJ,是终态集。
当前状态〔菜单〕+事件〔所选择的项〕下个状 态 为了对一个系统进行规格说明,通常都需要对有 穷状态机做一个很有用的扩展,即在前述的5元组中加 入第6个组件——谓词集P,即把有穷状态机扩展为一个
S(U,e,f)+DC(e,f)[JX*9]M(U,e,f+1)
S(D,e,f)+DC(e,f)[JX*9]M(D,e,f-1) S(N,e,f)+DC(e,f)[JX*9]W(e,f) 第一条规则表明,如果电梯e停在f层准备向上 移动,且门已经关闭,则电梯将向上一楼层移动。第 二条和第三条规则,分别对应于电梯即将下降或者没 有待处理的请求的情况。
A 报警 报警 报警 报警 报警 B
B 报警 报警 保险箱解锁 报警 报警 报警
从上面这个简单例子可以看出,一个有穷状态机 包括下述5个部分:状态集J、输入集K、由当前状态 和当前输入确定下一个状态(次态)的转换函数T、初始 态S和终态集F。
如果使用更形式化的术语,一个有穷状态机可以 表示为一个5元组(J,R,T,S,F),其中:
也就是说,如果在f层请求电梯向d方向运动的楼 层按钮处于关闭状态,现在该按钮被按下,并且当时 没有正停在f层准备向d方向移动的电梯,则该楼层按 钮打开。反之,如果楼层按钮已经打开,且至少有一 部电梯到达f层,该部电梯将朝d方向运动,则按钮将 关闭。
在讨论电梯按钮状态转换规则时定义的谓词 V(e,f),可以用谓词S(d,e,f)重新定义如下: V(e,f)=S(U,e,f)o单、直观 的事情。现在转向讨论电梯的状态及其转换规则,就 会出现一些复杂的情况。一个电梯状态实质上包含许 多子状态(例如,电梯减速、停止、开门、在一段时间 后自动关门)。
5.2.3 格说明:
评论
有穷状态机方法采用了一种简单的格式来描述规 当前状态+事件+谓词[JX*9]下个状态 这种形式的规格说明易于书写、易于验证,而且可以 比较容易地把它转变成设计或程序代码。事实上,可 以开发一个CASE工具把一个有穷状态机规格说明直接 转变为源代码。维护可以通过重新转变来实现,也就 是说,如果需要一个新的状态或事件,首先修改规格 说明,然后直接由新的规格说明生成新版本的产品。
图5.4 电梯的状态转换图
图5.4中包含了下述三个可触发状态发生改变的事
件 DC(e,f):电梯e在楼层f关上门。 ST(e,f):电梯e靠近f层时触发传感器,电梯控制 器决定在当前楼层电梯是否停下。 RL:电梯按钮或楼层按钮被按下进入打开状态, 登录需求。
最后,给出电梯的状态转换规则。为简单起见, 这里给出的规则仅发生在关门之时。
下面定义电梯的三个状态:
M(d,e,f):电梯e正沿d方向移动,即将到达的是第 f层; S(d,e,f):电梯e停在f层,将朝d方向移动(尚未关 门); W(e,f):电梯e在f层等待(已关门)。 其中S(d,e,f)状态已在讨论楼层按钮时定义过,但 是,现在的定义更完备一些。
图5.4是电梯的状态转换图。注意,三个电梯停止 状态S(U,e,f)、S(N,e,f)和S(D,e,f)已被组合成一个大 的状态,这样做的目的是减少状态总数以简化流图。
电梯按钮的状态转换图如图5.2所示。令EB(e,f) 表示按下电梯e内的按钮并请求到f层去。EB(e,f)有两 个状态,分别是按钮发光(打开)和不发光(关闭)。更 精确地说,状态是,
EBON(e,f):电梯按钮(e,f)打开 EBOFF(e,f):电梯按钮(e,f)关闭
如果电梯按钮(e,f)发光且电梯到达f层,该按钮 将熄灭。相反如果按钮熄灭,则按下它时,按钮将发 光。上述描述中包含了两个事件,它们分别是:
更形式化的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∞为输出函数,是由转换到位置无序单位 组的映射。 一个无序单位组或多重组是允许一个元素有多个 实例的广义集。
5.1 概述
5.2 有穷状态机
5.3 Petri网 5.4 Z语言
5.5 小结
5.1 概述
5.1.1 非形式化方法的缺点 基本上使用自然语言描述的系统规格说明,可能 存在矛盾、二义性、含糊性、不完整性以及抽象层次 混杂等问题。
5.1.2 软件开发过程中的数学 数学最有用的性质之一是,它能够简洁、准确地 描述物理现象、对象或动作的结果,因此是理想的建 模工具。 在软件开发过程中使用数学的另一个优点是,可 以在软件工程活动之间平滑地过渡。不仅功能规格说 明,而且系统设计也可以用数学表达,当然,程序代 码也是一种数学符号(虽然是一种相当繁琐、冗长的数 学符号)。
图5.3 楼层按钮的状态转换图
为了定义与这些事件和状态相联系的状态转换规 则,同样也需要一个谓词,它是S(d,e,f),它的定义 如下。 S(d,e,f):电梯e停在f层并且移动方向由d确定为 向上(d=U)或向下(d=D)或待定(d=N)。 这个谓词实际上是一个状态,形式化方法允许把 事件和状态作为谓词对待。 使用谓词S(d,e,f),形式化转换规则为: FBOFF(d,f)+FBP(d,f)+not S(d,1··n,f) [JX*9]FBON(d,f) FBON(d,f)+EAF(1··n,f)+S(d,1··n,f) [JX*9]FBOFF(d,f) 其中,d=UorD。
接下来让我们考虑楼层按钮。令FB(d,f)表示f层 的按钮请求电梯向d方向运动,楼层按钮FB(d,f)的状 态转换图如图5.3所示。 楼层按钮的状态如下。 FBON(d,f):楼层按钮(d,f)打开; FBOFF(d,f):楼层按钮(d,f)关闭。 如果楼层按钮已经打开,而且一部电梯到达f层, 则按钮关闭。反之,如果楼层按钮原来是关闭的,被 按下后该按钮将打开。这段叙述中包含了以下两个事 件。 FBP(d,f):楼层按钮(d,f)被按下 EAF(1··n,f):电梯1或…或n到达f层 其中1··n表示或为1或为2…或为n。
Petri网的标记是在Petri网中令牌(token)的分配。 例如,在图5.6中有4个令牌,其中一个在P1中,两个
在P2中,P3中没有,还有一个在P4中。上述标记可以用
向量(1,2,0,1)表示。由于P2和P4中有令牌,因此t1 启动(即被激发)。通常,当每个输入位置所拥有的令 牌数等于从该位置到转换的线数时,就允许转换。当 t1被激发时,P2和P4上各有一个令牌被移出,而P1上则
第5章 软件工程中的 形式化方法
根据形式化的程度,可以把软件工程方法划分成
非形式化、半形式化和形式化三类。使用自然语言描 述需求规格说明,是典型的非形式化方法。使用数据 流图或实体—关系图等图形符号建立模型,是典型的半 形式化方法。
用于开发计算机系统的形式化方法,是描述系统
性质的基于数学的技术,也就是说,如果一个方法有 坚实的数学基础,那么它就是形式化的。
增加一个令牌。Petri网中令牌总数不是固定的,在这
个例子中两个令牌被移出,而P1上只能增加一个令牌。
在图5.6中P2上有令牌,因此t2也可以被激发。当 t2被激发时,P2上将移走一个令牌,而P3上新增加两个
令牌。Petri网具有非确定性,也就是说,如果数个转
换都达到了激发条件,则其中任意一个都可以被激发。 图5.6所示Petri网的标记为(1,2,0,1),t1和t2都 可以被激发。假设t1被激发了,则结果如图5.7所示, 标记为(2,1,0,0)。此时,只有t2可以被激发。如
· 不要放弃传统的开发方法。把形式化方法和结 构化方法或面向对象方法集成起来是可能的,而且由 于取长补短往往能获得很好的效果。
· 应该建立详尽的文档。建议使用自然语言注释 来配合形式化的规格说明,以帮助读者理解系统。 · 不应该放弃质量标准。在系统开发过程中必须 一如既往地实施其他SQA活动。 · 不应该盲目依赖形式化方法,这种方法并不能 保证系统绝对正确。 · 应该测试、测试再测试。由于形式化方法不能 保证系统绝对正确,因此,软件测试的重要性并没有 降低。 · 应该重用。即使使用了形式化方法,软件重用 仍然是降低软件成本和提高软件质量的唯一合理的方 法。