形式化开发方法
形式化方法

两个用于转换的输入函数,用由位置指向转换的 箭头表示,它们是: 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,是终态集。
《软件工程》课后习题答案

1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定该项目是否能够开发。
2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。
3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。
4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。
5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。
6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。
7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。
8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。
重视用户界面的设计,不断的采用新理论和新技术。
软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。
10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。
11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。
13、详细描述处理过程常用三种描述工具:图形、表格和语言。
14、数据流图中,每个加工至少有一个输入流和一个输出流。
15、结构化设计以数据流为基础映射成软件结构。
16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。
17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。
形式化方法

形式化方法
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.
形式化方法Designware、B的比较

方法 用形式化方法开发软件被当今计算机 界誉为克服“ 。 软件 危机 ”提高软件正确性和开发效率的革命性途径 , , 是实现软件
自动化的关键 。
当前 , 比较流行的形式 化方法有 : ei w rI/ D s n ae 5 B方法『/ g 、 6、 . 7
文章编号 :0 2 8 3 ( 07 3 — 0 6 0 文献标识码 : 中图分类号 :P 1 10 — 3 12 0 ) 10 9 — 4 A T31
l { 述 I 舞
形式化方法 ( r a me o ) fm l t d 是建 立在严格 数学基础 上的 o h
造新 的精化 , 完成规约的逐 步求精 。
胡启 敏 , 薛锦云
H im n, X E J -u U Q - i1, U i y n・ 2 n
1 . 江西师范大学 瑶湖校区 计算机信息工程学院 , 昌 3 0 2 南 30 2 2中国科学院 软件研究所 计算机科学重点试验 室 , _ 北京 10 8 00 0
1S h o fC mp trIfr t n a d En ie r g Ja g iNo a iest , n h n 3 0 2 Chn .c o lo o ue nomai n gn e n ,in x r lUnvri Na c a g 3 0 2 , ia o i m y
( 1 :6 9. 3 ) 9 _ 9
Ab t a t De e o i g s f r wi fr a to s s r v l t n r w y o mp o e ot a e e ib l y n ef in yF r l sr c : v l pn ot e wa t o h m l meh d i a e ou i a y a t i rv s f r r l i t a d f c e c . o ma o w a i i
形式化软件开发方法

形式化软件开发方法
“形式化软件开发方法”这句话的意思是,使用形式化方法来进行软件开发的一种方法。
形式化软件开发方法是一种基于严格数学基础的软件开发方法,它使用形式化语言和工具来描述和验证软件系统的属性和行为。
这种方法可以确保软件系统的正确性和可靠性,减少错误和漏洞。
形式化软件开发方法包括多种具体的方法和技术,例如:
1.逻辑程序设计:使用逻辑程序设计语言来描述软件系统的需求和行为,并
使用逻辑推理工具来验证程序的正确性。
2.抽象数据类型和抽象数据结构:使用抽象数据类型和抽象数据结构来描述
软件系统的属性和行为,并使用形式化方法来验证其正确性和可靠性。
3.形式化规格说明语言:使用形式化规格说明语言来描述软件系统的需求和
行为,并使用形式化验证工具来验证程序的正确性。
4.形式化验证工具:使用形式化验证工具来自动检查代码的正确性和一致性,
确保软件系统符合其规格说明。
总结来说,“形式化软件开发方法”是指使用形式化语言和工具来描述和验证软件系统的属性和行为的一种软件开发方法。
这种方法可以确保软件系统的正确性和可靠性,减少错误和漏洞。
软件工程形式化方法 z 语言

软件工程形式化方法 z 语言软件工程是一个复杂而庞大的领域,要确保软件系统的正确性和可靠性,需要采用各种形式化方法。
形式化方法是一种严格、精确的描述和分析系统的方法,其中最著名的是Z语言。
1. 什么是形式化方法形式化方法是一种使用数学符号和形式化规范来描述和分析软件系统的方法。
它能够捕捉系统的各个方面,从而确保系统的正确性和可靠性。
形式化方法可以消除歧义和模糊性,提供严格的语法和语义定义,并进行可靠的推理和验证。
2. Z语言的引入和发展Z语言是一种基于数学集合论和一阶谓词逻辑的形式化规范语言。
它于20世纪70年代由牛津大学的J.R.阿兰·特拉弗斯和J.B.斯托拉兹提出,并继续在软件工程领域的学术界和实践中得到广泛应用。
3. Z语言的特点和优势- 精确性:Z语言使用严格的数学符号和形式化规范,可以精确地描述系统的各个方面,避免了自然语言的歧义和模糊性。
- 可读性:尽管Z语言使用了数学符号,但其符号系统和语法规则都经过严格定义,使得Z规范可以被可靠地解释和理解。
- 可验证性:Z语言规范的严格性使得系统的正确性验证变得可行。
通过形式化推理和模型检测等技术,可以对规范进行自动验证和分析。
- 模块化:Z语言支持模块化规范,可以将系统的不同部分进行独立的规范和验证,从而提高开发过程的灵活性和可重用性。
4. Z语言在软件工程中的应用- 需求分析和规约:Z语言可以用于对软件系统的需求进行精确描述和形式化规约,从而帮助开发人员和用户准确理解和交流需求。
- 设计规约和验证:Z语言可以用于对软件系统的设计进行精确描述和形式化规约,并进行验证和验证。
通过验证,可以发现设计冲突和错误,提高系统的可靠性。
- 系统建模和仿真:Z语言可以用于对软件系统进行形式化的建模和仿真。
通过建立形式化模型,可以进行系统行为的精确分析和评估,从而帮助设计和优化系统。
- 代码生成和自动化工具支持:Z语言可以作为设计工具中的一部分,与代码生成和其他自动化工具集成,从而提高开发效率和系统质量。
自考软件工程历届试题(含答案)

全国2009年1月自考软件工程试题课程代码:02333一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的。
请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.以下不属于软件特点的是()A.软件是一种逻辑产品B.软件产品存在磨损问题C.软件的生产主要是研制D.软件费用不断增加2.以下属于形式化开发方法的是()A.结构化开发方法B.Jackson开发方法C.维也纳开发方法D.面向对象开发方法3.数据字典定义数据流或数据存储组成时所使用的符号(‥‥)表示()A.可选B.与C.或D.重复4.IDEF是IDEF方法的一部分,用于建立系统的()A.功能模型B.信息模型C.动态模型D.关系模型5.软件结构中两个模块之间有调用关系,传递简单数据值,相当于高级语言中的值传递,这两个模块之间的耦合是()A.公共耦合B.控制耦合C.标记耦合D.数据耦合6.把需要同时执行的动作组合在一起形成模块,该模块的内聚性是()A.顺序内聚B.逻辑内聚C.时间内聚D.通信内聚7.以下属于程序流程图缺点的是()A.历史悠久B.使用广泛C.支持程序的三种基本控制结构D.可以随心所欲地画控制流程线的流向1 软件工程自学考试试题8.Jackson结构图的三种基本结构是()A.顺序结构、选择结构、层次结构B.顺序结构、选择结构、重复结构C.层次结构、选择结构、重复结构D.顺序结构、层次结构、重复结构9.以下属于面向对象程序设计语言的是()A.Java语言B.C语言C.Pascal语言D.Prolog语言10.以下四种逻辑覆盖中,发现错误能力最强的是()A.语句覆盖B.条件覆盖C.判定覆盖D.条件组合覆盖11.软件工程领域中,与集成测试有关的软件开发阶段是()A.编码B.详细设计C.概要设计D.需求分析12.软件维护的副作用不包括()A.编码副作用B.数据副作用C.文档副作用D.效率副作用13.原型的优点不包括()A.对设计人员水平及开发环境要求不高B.可及早为用户提供有用的产品C.可及早发现问题,随时纠正错误D.可减少技术、应用的风险14.UML统一了三种面向对象方法的表示方法,这三种面向对象方法是()A.Coad方法、OMT方法、OOSE方法B.Booch方法、OMT方法、OOSE方法C.Booch方法、Coad方法、OOSE方法D.Booch方法、OMT方法、Coad方法15.面向对象的类层次结构中,聚集关系是一种()A.“一般——特殊”关系 B.“整体——部分”关系C.“相互依赖”关系D.“一般——具体”关系16.软件质量特性中,“软件系统按照设计要求,在规定时间和条件下不出故障,持续运行的程度”对应的特性是()A.正确性B.完整性C.可靠性D.可用性2 软件工程自学考试试题17.软件工程标准中,IEEE属于()A.国际标准B.国家标准C.行业标准D.企业规范18.与“项目开发计划”文档有关的人员是()A.管理人员和开发人员B.开发人员和维护人员C.开发人员和用户D.管理人员和用户19.软件工具的三个组成部分不包括()A.工具B.工具接口C.工具用户接口D.编译系统20.软件复杂性度量的参数中,由程序中出现的操作数数目所决定的量表示的参数是()A.规模B.难度C.结构 D.智能度二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格上填上正确答案。
(第三版)软件工程原理、方法与应用_课后答案(史济民_顾春华_郑红_著)_高等教育出版社

绪论
1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 (1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。 采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前 能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工 程,同时这也是工程化生产方法。 3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。 答 :( 1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后 , 往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采 用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。
7.输入三角形的 3 条边长(假定这些边确实能组成一个三角形),用它们来鉴别三角形的性质(等腰、 等边、任意或者直角),并输出结果。试用逐步细化的方法设计这一程序,并用结构化语言(汉语或 英语)写出细化过程中每一步的过程描述。 答:
软件需求分析
1.需求分析的任务是什么?怎样理解分析阶段的任务是决定“做什么”,而不是“怎么做”? 答:需求分析主要有两个任务:第一是通过对问题及其环境的理解、分析和综合建立分析模型;第二 是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出
来。需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是去怎么去实现这个系统。 2.需求分析要经过哪些步骤? 答:需求获取、需求提炼、需求描述、需求验证。 3.有哪两种主要的分析模型,它们有什么联系? 答:面向对象分析模型、结构化分析模型。前者是采用面向对象的思想进行软件需求分析的建模过程 , 而后者模型的核心是 DD,它是设计各种数据对象的总和。他们的模型分别起到了描述数据模型,功能 模型与行为模型的作用。 4.什么是结构化分析?它的“结构化”体现在哪里? 答:是使用 DFD、DD、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的 目标文档。 5.什么是面向对象分析?其主要思想是什么? 答: OOA 面向对象的分析是采用面向对象的思想进行软件需求分析建模的过程.主要思想是采用面向对 象的思想。 6. 需求说明(或需求规格说明书)由哪些部分组成?各部分的主要内容是什么? 答:引言、信息描述、功能描述、行为描述、质量描述、接口描述、其他描述。 引言:主要叙述在文体定义阶段确定的关于软件的目标与范围,简要介绍系统背景、盖帽、软件项目 约束和按考资料等。 信息描述:给出对软件所含信息的详细描述,包括信息的内容、关系、数据流向、控制流向和结构等 。 功能描述:对软件功能要求的说明,包括系统功能划分、每个功能的处理说明、限制和控制描述等。 行为描述:包括对系统状态变化及事件和动作的描述,据此可以检查外部事件和软件内部的控制特征 。 质量描述:阐明在软件交付使用前需要进行的共更能测试和性能测试,并且规定源程序和文档应该遵 守的各种标准。 接口描述:包括系统的用户界面、硬件接口、软件接口和通信接口等的说明。 其他描述:阐述系统设计和实现上的限制,系统的假设和依赖等其他需要说明的内容。 7. 为什么 DFD 要分层?画分层 DFD 要遵循哪些原则? 答:大型复杂的软件系统,其 DFD 可能含有数百乃至数千个加工,不能设想一次就将它们全部画齐。 正确的做法是:从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。原则 : 由顶向下,逐步细化。 8. DFD 和 CFD 有什么区别? 答: 9. 什么是系统的行为模型,如何建立? 答:类对象模型所表示的是面向对象分析模型中的静态部分,而对象行为模型则用于描述系统的动态 行为,即系统如何对应外部事件---系统的行为模型。 建立一个对象行为模型一般要经历一些过程:评估所以的用例来理解系统中的交互序列;找出驱动交 互序列的事件;为每个用例创建事件轨迹;为对象创建状态转换图。 10.选一个系统(例如工资处理系统、飞机订票系统、图书馆管理系统等),分别用 SA 方法和 OOA 方 法对它进行分析,并给出分析模型。 答:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 自动门的有穷状态机
(2)Petri网
用于确定系统中隐含的定时问题的一种有效技术 是Petri网,这种技术的一个很大的优点是它也可以 用于设计中。Petri网在计算机科学中也得到广泛的 应用,例如,在性能评价、操作系统和软件工程等 领域,Petri网应用得都比较广泛。特别是已经证明, 用Petri网可以有效地描述并发活动。
它们是: I(t1)={P2,P4} I(t2)={P2}
两个用于转换的输出函数,用由转换指向位置的箭头表示, 它们是: O(t1)={P1} O(t2)={P3,P3}
注意,输出函数O(t2)中有两个P3,是因为有两个箭头由t2指 向P3。
更形式化的Petri网结构,是一个四元组C=(P,T,I,O)。
面的讨论中并不需要floor_buttons集和elevator_buttons集,把
它们放于图3.21中只是用来说明Z格包含的内容)。
3.初始状态 抽象的初始状态是指系统第一次开启时的状态。 对于电梯问题来说,抽象的初始状态为: Button_Init≙〔Button_State|pushed=Φ〕 上式表示,当系统首次开启时pushed集为空,即 所有按钮都处于关闭状态。
其中, P={P1,…,Pn}是一个有穷位置集,n≥0。 T={t1,…,tm}是一个有穷转换集,m≥0,且T和P不相交。 I:T→P为输入函数,是由转换到位置无序单位组的映射。 O:T→P为输出函数,是由转换到位置无序单位组的映射。
例如,图3.19是红绿灯的petri网。
其中P={Red,Yellow,Green},
操作的谓词部分,包含了一组调用操作的前置条件,以及
操作结束后的后置条件。如果前置条件成立,则操作执行完成
后可得到后置条件。但是,如果在前置条件不成立的情况下调 用该操作,则不能得到指定的结果(因此结果无法预测)。 假设电梯到达了某楼层,如果相应的楼层按钮已经打开, 则此时它会关闭;同样,如果相应的电梯按钮已经打开,则此 时它也会关闭。也就是说,如果“button?”属于pushed集,则 将它移出该集合,如图3.23所示(符号“\”表示集合差运算)。
自动门刚安装好的时候,我们可以认为它是关上
的,所以关闭状态是自动门的初始状态。
在理想情况下,自动门会一直运行,所以它没有
终止状态,终止状态集F是空集。
有穷状态机的形式定义很精确,文字描述比较通俗,而图形
表示则比较直观。通用建模语言(UML)里的状态图是状态机的 常用图形表示方法。 简单的状态图包括一些状态,用圆角方框表示,里面有状态 的名称。状态之间的转换,用箭头表示,上面可以加转换条件。
它有“开”和“关”两种状态,这就是它的状态集,也
就是上面所说的J。
人可以从自动门进来或出去,当人进来或出去的
时候,自动门会自动打开,如果在规定的时间内没有
人进出,自动门会自动关上。人的进来、出去和超时
三个事件是自动门的非空输入集,也就是上面所说的
K。而自动门在当前状态下,对事件的响应,会引起
状态的变化,这就是状态转换函数,也就是上面所说
第5章形式化开发方法
形式化方法 (formal methods)
形式化说明方法
按照形式化的程度,可以把软件工程使用的方法划分成非形
式化、半形式化和形式化3类。
1、用自然语言描述需求规格说明,是典型的非形式化方法。 2、用数据流图或实体-联系图建立模型,是典型的半形式 化方法。 3、所谓形式化方法,是描述系统性质的基于数学的技术, 也就是说,如果一种方法有坚实的数学基础,那么它就 是形式化的。
状态机做一个很有用的扩展,即在前述的5元组中加
入第6个组件——谓词集P,从而把有穷状态机扩展为
一个6元组,其中每个谓词都是系统全局状态Y的函数。
转换函数T现在是一个从(J-F)×K×P到J的函数。
现在的转换规则形式如下:
⇒当前状态〔菜单〕+事件〔所选择的项〕+谓词
下个状态。
自动门是一个典型的有穷状态机:
一个有穷状态机包括下述5个部分:状态集J、输入集K、由
当前状态和当前输入确定下一个状态(次态)的转换函数T、
初始态S和终态集F。如果使用更形式化的术语,一个有 穷状态机可以表示为一个5元组(J,K,T,S,F),其中: J是一个有穷的非空状态集; K是一个有穷的非空输入集;
T是一个从(J-F)×K到J的转换函数; S∈J,是一个初始状态; F⊆J,是终态集。
4.操作 如果一个原来处于关闭状态的按钮被按下,则该 按钮开启,这个按钮就被添加到pushed集中。图3.22 定义了操作Push_Button(按按钮)。Z语言的语法规定,
当一个格被用到另一个格中时,要在它的前面加上三
角形符号作为前缀,问号“?”表示输入变量,叹号“!
”表示输出变量。
图3.22 操作Push_Botton的Z规格说明
图3.20 Z格S的格式
图3.21 Z格Botton_State
在电梯问题中,Button有4个子集,即floor_buttons(楼层按 钮的集合)、elevator_buttons(电梯按钮的集合)、buttons(电梯
问题中所有按钮的集合)以及pushed(所有被按的按钮的集合,
即所有处于打开状态的按钮的集合)。 图3.21描述了格Button_State,其中,符号P表示幂集(即给 定集的所有子集)。约束条件声明,floor_buttons集与 elevator_buttons集不相交,而且它们共同组成buttons集(在下
图3.23
操作Floor_Arrival的Z规格说明
(此处对电梯问题的讨论,没有区分上行和下行楼层按钮。)
有穷状态机的概念在计算机系统中应用得非常广泛。
例如,每个菜单驱动的用户界面都是一个有穷状态机
的实现。一个菜单的显示和一个状态相对应,键盘输
入或用鼠标选择一个图标是使系统进入其他状态的一
个事件。
状态的每个转换都具有下面的形式:
⇒当前状态〔菜单〕+事件〔所选择的项〕
态。
下个状
为了对一个系统进行规格说明,通常都需要对有穷