第4章形式化说明技术.ppt
《第4章形式化说明技术.ppt》由会员分享,可在线阅读,更多相关《第4章形式化说明技术.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 形式化说明技术形式化说明技术4.1 概述概述4.2 有穷状态机有穷状态机4.3 Petri网网4.4 Z语言语言4.5 小结小结习题习题 软件工程使用的方法划分成:软件工程使用的方法划分成:非形式化、半形式化和形式化非形式化、半形式化和形式化3类。类。非形式化方法:用自然语言描述需求规格说明。非形式化方法:用自然语言描述需求规格说明。半形式化方法:用数据流图或实体半形式化方法:用数据流图或实体-联系图建立模联系图建立模型。型。形式化方法:基于数学的技术来描述系统性质。形式化方法:基于数学的技术来描述系统性质。1 形式化方法的发展形式化方法的发展 形式化方法(形式化方法(formal
2、 methods)的研究高潮始于的研究高潮始于 2020世纪世纪6060年代后期,针对当时所谓年代后期,针对当时所谓“软件危机软件危机”,人人们提出种种解决方法们提出种种解决方法,归纳起来有两类:归纳起来有两类:一是采用工程方法来组织、管理软件的开发程;一是采用工程方法来组织、管理软件的开发程;二是深入探讨程二是深入探讨程 序和程序开发过程的规律,建立序和程序开发过程的规律,建立严密的理论,以其用来指导软件开发实践。严密的理论,以其用来指导软件开发实践。前者导致前者导致“软件工程软件工程”的出现和发展,后者则推动的出现和发展,后者则推动了形式化方法的深入研究。了形式化方法的深入研究。2 形式化
3、方法的定义形式化方法的定义 用于开发计算机系统的形式化方法是描述用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术,这样的形式系统性质的基于数学的技术,这样的形式化方法提供了一个框架,可以在框架中以化方法提供了一个框架,可以在框架中以系统的而不是特别的方式刻划、开发和验系统的而不是特别的方式刻划、开发和验 证系统。证系统。如果一个方法有良好的数学基础,如果一个方法有良好的数学基础,那么它就是形式化的,典型地以形式化规那么它就是形式化的,典型地以形式化规约语言给出。约语言给出。3 形式化方法的研究内容形式化方法的研究内容 形式化方法的一个重要研究内容是形式形式化方法的一个重要研究内容是
4、形式规约规约(Formal Specification,(Formal Specification,也称形式规也称形式规范或形式化描述范或形式化描述),),它是对程序它是对程序“做什么做什么”(what to do)(what to do)的数学描述的数学描述,是用具有精确是用具有精确语义的形式语言书写的程序功能描述语义的形式语言书写的程序功能描述,它是它是设计和编制程序的出发点设计和编制程序的出发点,也是验证程序是也是验证程序是否正确的依据。否正确的依据。4 形式化方法的分类形式化方法的分类 根据说明目标软件系统的方式,形式化方法可以根据说明目标软件系统的方式,形式化方法可以分为两类:分为两
5、类:1)面向模型的形式化方法。面向模型的方法通)面向模型的形式化方法。面向模型的方法通过构造一个数学模型来说明系统的行为。过构造一个数学模型来说明系统的行为。2)面向属性的形式化方法。面向属性的方法通)面向属性的形式化方法。面向属性的方法通过描述目标软件系统的各种属性来间接定义系统过描述目标软件系统的各种属性来间接定义系统行为。行为。根据表达能力,形式化方法可以分为五类:根据表达能力,形式化方法可以分为五类:1.基于模型的方法:通过明确定义状态和操作来建基于模型的方法:通过明确定义状态和操作来建立一个系统模型。立一个系统模型。2.基于逻辑的方法:用逻辑描述系统预期的性能,基于逻辑的方法:用逻辑
6、描述系统预期的性能,包括底层规约、时序和可能性行为。包括底层规约、时序和可能性行为。3.代数方法:通过将未定义状态下不同的操作行为代数方法:通过将未定义状态下不同的操作行为相联系,给出操作的显式定义。相联系,给出操作的显式定义。4.过程代数方法:通过限制所有容许的可观察的过过程代数方法:通过限制所有容许的可观察的过程间通信来表示系统行为。程间通信来表示系统行为。5.基于网络的方法:由于图形化表示法易于理解,基于网络的方法:由于图形化表示法易于理解,而且非专业人员能够使用,因此是一种通用的系而且非专业人员能够使用,因此是一种通用的系统确定表示法。统确定表示法。用自然语言书写的系统规格说明书:存在
7、矛盾、二义用自然语言书写的系统规格说明书:存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。性、含糊性、不完整性及抽象层次混乱等问题。矛盾:指一组相互冲突的陈述。矛盾:指一组相互冲突的陈述。二义性:指读者可以用不同方式理解的陈述。二义性:指读者可以用不同方式理解的陈述。含糊性:系统规格说明书庞大,易出现含糊性。含糊性:系统规格说明书庞大,易出现含糊性。不完整性:遗漏了客户的一些需求。不完整性:遗漏了客户的一些需求。抽象层次混乱:是指在非常抽象的陈述中混进了一些抽象层次混乱:是指在非常抽象的陈述中混进了一些关于细节的低层次陈述。关于细节的低层次陈述。4.1 概述概述 4.1.1 非形式化方
8、法的缺点非形式化方法的缺点 数学特别适合于表示状态,也就是表示数学特别适合于表示状态,也就是表示“做什么做什么”。需求规格说明书主要描述应用系统在运行前和运行需求规格说明书主要描述应用系统在运行前和运行后的状态,因此,数学更适于描述详细的需求。后的状态,因此,数学更适于描述详细的需求。没有二义性,容易发现矛盾和不完整性,没有含糊没有二义性,容易发现矛盾和不完整性,没有含糊性。性。可以在不同的软件工程活动之间平滑地过渡。可以在不同的软件工程活动之间平滑地过渡。功能规格说明与系统设计都用数学表达,易于过渡。功能规格说明与系统设计都用数学表达,易于过渡。它提供了高层确认的手段。它提供了高层确认的手段
9、。可以使用数学方法证明可以使用数学方法证明:设计符合规格说明,程序代设计符合规格说明,程序代码正确地实现了设计结果。码正确地实现了设计结果。4.1.2 形式化方法的优点形式化方法的优点 软件系统的复杂性,仅用少数几个数学公式来描述软件系统的复杂性,仅用少数几个数学公式来描述它很困难。它很困难。即使应用了形式化方法,完整性也是难于保证的。即使应用了形式化方法,完整性也是难于保证的。(遗漏的一些需求)(遗漏的一些需求)4.1.2 形式化方法问题形式化方法问题(1)应该选用适当的表示方法。应该选用适当的表示方法。如果用这种技术描述其不适于描述的概念,则不仅工如果用这种技术描述其不适于描述的概念,则不
10、仅工作量大而且描述方式也很复杂。作量大而且描述方式也很复杂。(2)应该形式化,但不要过分形式化。应该形式化,但不要过分形式化。形式化技术还不适于描述系统的每个方面,形式化技术还不适于描述系统的每个方面,形式化规格说明技术有助于防止含糊和误解,适于说形式化规格说明技术有助于防止含糊和误解,适于说明系统中易出错的或关键的部分。明系统中易出错的或关键的部分。(3)应该估算成本。应该估算成本。为了使用形式化方法,通常需要事先进行大量的培训。为了使用形式化方法,通常需要事先进行大量的培训。最好预先估算所需的成本并编入预算。最好预先估算所需的成本并编入预算。4.1.3 应用形式化方法的准则应用形式化方法的
11、准则(4)应该有形式化方法顾问随时提供咨询。应该有形式化方法顾问随时提供咨询。绝大多数软件工程师对形式化方法中使用的数学和逻绝大多数软件工程师对形式化方法中使用的数学和逻辑并不很熟悉。辑并不很熟悉。(5)不应放弃传统的开发方法。(取长补短效果好)不应放弃传统的开发方法。(取长补短效果好)(6)应该建立详尽的文档。应该建立详尽的文档。使用自然语言注释形式化的规格说明书,以帮助用户使用自然语言注释形式化的规格说明书,以帮助用户和维护人员理解系统。和维护人员理解系统。(7)不应该放弃质量标准。不应该放弃质量标准。形式化方法并不能保证软件的正确性,在开发过程中形式化方法并不能保证软件的正确性,在开发过
12、程中仍需实施其他质量保证活动。仍需实施其他质量保证活动。(8)不应该盲目依赖形式化方法。不应该盲目依赖形式化方法。形式化方法并不能保证开发出的软件绝对正确。形式化方法并不能保证开发出的软件绝对正确。(9)应该测试、测试再测试。应该测试、测试再测试。形式化方法不能证明系统性能或其他质量指标是否形式化方法不能证明系统性能或其他质量指标是否符合需要,因此,软件测试的重要性并没有降低。符合需要,因此,软件测试的重要性并没有降低。(10)应该重用。应该重用。用形式化方法说明的软件构件具有清晰定义的功用形式化方法说明的软件构件具有清晰定义的功能和接口,使得它们有更好的可重用性。能和接口,使得它们有更好的可
13、重用性。下面通过一个简单例子介绍有穷状态机的基本概念。下面通过一个简单例子介绍有穷状态机的基本概念。一个保险箱上装了一个复合锁,锁有三个位置,分别一个保险箱上装了一个复合锁,锁有三个位置,分别标记为标记为1、2、3,转盘可向左,转盘可向左(L)或向右或向右(R)转动。这转动。这样,在任意时刻转盘都有样,在任意时刻转盘都有6种可能的运动,即种可能的运动,即1L、1R、2L、2R、3L和和3R。保险箱的组合密码是。保险箱的组合密码是1L、3R、2L,转盘的任何其他运动都将引起报警。图,转盘的任何其他运动都将引起报警。图4.1描绘描绘了保险箱的状态转换情况。了保险箱的状态转换情况。4.2 有穷状态机
14、有穷状态机 4.2.1 概念概念图图4.1 保险箱的状态转换图保险箱的状态转换图图图4.1是一个有穷状态机的状态转换图。状态转换并是一个有穷状态机的状态转换图。状态转换并不一定要用图形方式描述,表不一定要用图形方式描述,表4.1(见书(见书68页)的表页)的表格形式也可以表达同样的信息。格形式也可以表达同样的信息。从上面这个简单例子可以看出,一个有穷状态机包括从上面这个简单例子可以看出,一个有穷状态机包括下述下述5个部分:状态集个部分:状态集J、输入集、输入集K、由当前状态和当、由当前状态和当前输入确定下一个状态前输入确定下一个状态(次态次态)的转换函数的转换函数T、初始态、初始态S和终态集和
15、终态集F。对于保险箱的例子,相应的有穷状态机。对于保险箱的例子,相应的有穷状态机的各部分如下。的各部分如下。状态集状态集J:保险箱锁定,:保险箱锁定,A,B,保险箱解锁,报警,保险箱解锁,报警。输入集输入集K:1L,1R,2L,2R,3L,3R。转换函数转换函数T:如表:如表4.1所示。所示。初始态初始态S:保险箱锁定。:保险箱锁定。终态集终态集F:保险箱解锁,报警。:保险箱解锁,报警。如果使用更形式化的术语,一个有穷状态机可以表示如果使用更形式化的术语,一个有穷状态机可以表示为一个为一个5元组元组(J,K,T,S,F),其中:,其中:J是一个有穷的非空状态集;是一个有穷的非空状态集;K是一个
16、有穷的非空输入集;是一个有穷的非空输入集;T是一个从是一个从(J-F)K到到J的转换函数;的转换函数;SJ,是一个初始状态;,是一个初始状态;FJ,是终态集。,是终态集。有穷状态机的概念在计算机系统中应用得非常广泛。有穷状态机的概念在计算机系统中应用得非常广泛。例如,每个菜单驱动的用户界面都是一个有穷状态机例如,每个菜单驱动的用户界面都是一个有穷状态机的实现。一个菜单的显示和一个状态相对应,键盘输的实现。一个菜单的显示和一个状态相对应,键盘输入或用鼠标选择一个图标是使系统进入其他状态的一入或用鼠标选择一个图标是使系统进入其他状态的一个事件。状态的每个转换都具有下面的形式:个事件。状态的每个转换
17、都具有下面的形式:当前状态当前状态菜单菜单+事件事件所选择的项所选择的项下个状态。下个状态。为了对一个系统进行规格说明,通常都需要对有穷状为了对一个系统进行规格说明,通常都需要对有穷状态机做一个很有用的扩展,即在前述的态机做一个很有用的扩展,即在前述的5元组中加入元组中加入第第6个组件个组件谓词集谓词集P,从而把有穷状态机扩展为,从而把有穷状态机扩展为一个一个6元组,其中每个谓词都是系统全局状态元组,其中每个谓词都是系统全局状态Y的函的函数。转换函数数。转换函数T现在是一个从现在是一个从(J-F)KP到到J的函数。的函数。现在的转换规则形式如下:现在的转换规则形式如下:当前状态当前状态菜单菜单
18、+事件事件所选择的项所选择的项+谓词谓词下下个状态。个状态。4.2.24.2.2例题例题:一个浮点二进制数的构成是:一个可选的:一个浮点二进制数的构成是:一个可选的符号符号(+(+或或-)-),后跟一个或多个二进制位,再跟上一个字,后跟一个或多个二进制位,再跟上一个字符符E E,再加上另一个可选符号,再加上另一个可选符号(+(+或或-)-)及一个或多个二进及一个或多个二进制位。例如,下列的字符串都是浮点二进制数:制位。例如,下列的字符串都是浮点二进制数:110101E-101110101E-101-100111E11101-100111E11101+1E0+1E0更形式化地,浮点二进制数定义如
19、下:更形式化地,浮点二进制数定义如下:floatingfloatingpointpoint binarybinary=signsignbitstringbitstringE Esignsignbitstringbitstringsignsign=+=+-bitstringbitstring=bitbitbitstringbitstringbitbit=0=01 1其中,其中,符号符号=表示定义为;表示定义为;符号符号.表示可选项;表示可选项;符号符号a ab b表示表示a a或或b b。假设有这样一个有穷状态机:以一串字符为输入,判假设有这样一个有穷状态机:以一串字符为输入,判断字符串中是否含
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式化 说明 技术
限制150内