按照形式化的程度,可以把软件工程使用的方法划分为非形式化、半形式化和形式化三类。用自然描述需求规格说明,是典型的非形式化方法。用数据流图或实体联系图建立模型,是典型的的半形式化方法。所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。
有穷状态机是表达规格说明的一种形式化方法
一个有穷状态机包括下述五个部分:状态集J,输入集K,由当前状态和当前输入确定下一个状态(次态)的转换函数T,初始状态S和终态集F。一个有穷状态机可以表示为一个5元组(J、K、T、S、F)
举例:
上述例子中:
状态集J:{保险箱锁定,A,B,保险箱解锁,报警}
输入集K:{1L,1R,2L,2R,3L,3R}
转换函数T:
初始态S:保险箱锁定。
终态集F:{保险箱解锁,报警}
其中:J是一个有穷的非空状态集,K是一个有穷的非空输入集;T是一个从(J-F)* K到J的转换函数;S∈J,是一个初始状态,F包含于J,是终态集。
状态的每个转换都具有下面的形式:
当前状态[菜单] + 时间[所选择 的项] =》下个状态
对有穷状态机做一个扩展,即在前述的5元组中加入第6个组件——谓词集P,从而把有穷状态机扩展为一个6元组,其中每个谓词都是全局状态Y的函数,转换函数T现在是一个从(J-F)* K * P到J的函数。
现在的转换规则形式如下:
当前状态[菜单] + 事件[所选择的项] + 谓词 =》下个状态
(1)功能
并发系统中遇到的一个主要问题是定时问题。定时问题通常是由不好的设计或有错误的实现引起的。而这样的设计或实现又是由不好的规格说明造成的,如果规格说明不恰当,则有导致不完善的设计或实现的危险,Petri网技术一个很大的优点是它可以用于设计中
(2)构成
一般构成:
Petri网包含4种元素:一组位置P、一组转换T、输入函数I、输出函数O。举例如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NkvlFDBM-1656168358803)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625220451552.png)]](https://1000bd.com/contentImg/2022/06/27/151109462.png)
一组位置P为{P1,p2,p3,p4},在图中用圆圈代表位置。
一组转换T为{T1,T2}在图中用短直线表示转换
两个用于转换的输入函数,用由为主席指向转换的箭头表示,他们是I(t1) = {P2, P4}
I(t2) = {P2}
两个用于转换的输出函数,用由转换指向位置灯箭头表示,他们是:O(t1) = {P1}
O(t2) = {P3, P4}
其中,P = {P1,……Pn}是一个有穷位置集
T = {t1,……,tm}是一个有穷转换集,m>=0
(3)分配权标
①带标记的Petri网
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gamheAgT-1656168358803)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221707658.png)]](https://1000bd.com/contentImg/2022/06/27/151109770.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDPtLoPl-1656168358804)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221734929.png)]](https://1000bd.com/contentImg/2022/06/27/151110108.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uBgPYylo-1656168358804)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221801564.png)]](https://1000bd.com/contentImg/2022/06/27/151110343.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fn6AYYCA-1656168358805)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221813498.png)]](https://1000bd.com/contentImg/2022/06/27/151110687.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIumZhWu-1656168358806)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221908283.png)]](https://1000bd.com/contentImg/2022/06/27/151110939.png)
用Z语言描述的、最贱的形式化规格说明有下述四个部分:
(1)给定的集合
一个Z规格说明从一系列给定的初始化集合开始,所谓初始化集合就是不需要详细定义的集合,这种集合用带方括号的形式表示。
(2)状态定义
一个Z规格说明由若干个“格”组成,每个格含有一组变量说明和一系列限定变量取值范围的谓词。
(3)初始状态
抽象的初始状态是指系统第一次开启时的状态。
(4)操作:
Z语言获得成功的主要原因为:
是一种形式化语言,在需要时开发者可以严格地验证规格说明的正确性。
4. 只用比较短的时间就能够让开发人员学会编写Z规格说明
5. 使用Z语言通过减少开发过程所需要的总时间来降低软件开发费用
6. 用户可以依据Z规格说明用自然语言重写比直接用自然语言写出的非形式化规格说明更加清楚和准确。