当前位置:网站首页>软件工程导论——第四章——形式化说明技术
软件工程导论——第四章——形式化说明技术
2022-06-26 22:59:00 【允谦呀】
软件工程导论——第四章——形式化说明技术
1、概述
按照形式化的程度,可以把软件工程使用的方法划分为非形式化、半形式化和形式化三类。用自然描述需求规格说明,是典型的非形式化方法。用数据流图或实体联系图建立模型,是典型的的半形式化方法。所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。
2、非形式化方法的缺点:
- 矛盾:一组相互冲突的陈述。
- 二义性:指读者可以用不同的方式理解的陈述。
- 含糊性:指没有指明任何欧勇信息的笼统的陈述。
- 不完整性:指没有指明具体功能的陈述。
- 抽象层次混乱:指非抽象的陈述中混进了一些关于细节的低层次陈述。
3、形式化方法的优点:
- 能够简洁准确地描述物理现象、对象或动作的结果。准确到几乎没有二义性,而且可以用数学方法来验证,以发现存在的矛盾和不完整性,再这样的规格说明中完全没有含糊性。
- 可以在不同的软件工程活动之间平滑地过度。不仅功能规格说明,而且系统设计也可以用数学表达,当然,程序代码也是一种数学符号。
- 提供了高层确认的手段,可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。
4、应用形式化的准则
- 应该选用适当的表示方法。
- 应该形式化,但不要过分形式化
- 应该估算成本
- 应该有形式化方法顾问随时提供咨询
- 不应该放弃传统的开发方法
- 应该建立详尽的文档
- 不应该放弃质量标准
- 不应该盲目依赖形式化方法
- 应该测试、测试再测试
- 应该重用:即使采用了形式化方法,软件重用仍然是降低软件成本和提高软件质量的唯一合理的方法,而且用形式化方法说明的软件构件具有清晰定义的功能和接口,使得它们有更好的可重用性。
5、有穷状态机
有穷状态机是表达规格说明的一种形式化方法
一个有穷状态机包括下述五个部分:状态集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的函数。
现在的转换规则形式如下:
当前状态[菜单] + 事件[所选择的项] + 谓词 =》下个状态
优点
- 有穷状态机方法次啊哟管理一种简单的格式来描述规格说明:当前状态+事件+谓词=》下个状态。这种形式的规格说明易于书写、易于验证,而且可以比较容易地把它转变成设计或程序代码。
- 有穷状态机方法比数据流图更精确,而且易于理解。
缺点
- 在开发大系统时,三元组(即状态、事件、谓词)的数量会迅速增长。
- 形式化的有穷状态机方法没有处理定时需求。
6、Petri网
(1)功能
并发系统中遇到的一个主要问题是定时问题。定时问题通常是由不好的设计或有错误的实现引起的。而这样的设计或实现又是由不好的规格说明造成的,如果规格说明不恰当,则有导致不完善的设计或实现的危险,Petri网技术一个很大的优点是它可以用于设计中
(2)构成
一般构成:
Petri网包含4种元素:一组位置P、一组转换T、输入函数I、输出函数O。举例如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NkvlFDBM-1656168358803)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625220451552.png)]](/img/d6/99c48ef728550304536210846f44f7.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)]](/img/07/a3a69b9ec78dae26acab4abbe76e50.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDPtLoPl-1656168358804)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221734929.png)]](/img/0c/0d514f9108dbdd8be97684fee7c2e3.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uBgPYylo-1656168358804)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221801564.png)]](/img/15/8ed6c6e0f349648bca5d765626047e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fn6AYYCA-1656168358805)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221813498.png)]](/img/c5/b9ea926ec3448b68aae601fbcfc041.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIumZhWu-1656168358806)(C:\Users\W\AppData\Roaming\Typora\typora-user-images\image-20220625221908283.png)]](/img/37/ecfbda58d7d50be89236c1c7024e57.png)
7、Z语言
用Z语言描述的、最贱的形式化规格说明有下述四个部分:
(1)给定的集合
一个Z规格说明从一系列给定的初始化集合开始,所谓初始化集合就是不需要详细定义的集合,这种集合用带方括号的形式表示。
(2)状态定义
一个Z规格说明由若干个“格”组成,每个格含有一组变量说明和一系列限定变量取值范围的谓词。
(3)初始状态
抽象的初始状态是指系统第一次开启时的状态。
(4)操作:
- 当一个格被用在另一个格中时,要在它的前面加上一个三角形符号作为前缀、问号”?“表示输入变量,而感叹号”!“代表输出变量
- 谓词部分,包含了一组调用操作的前置条件,以及操作完全结束后的后置条件,如果前置条件成立,则操作执行完成后可得到后置条件,但是,如果在前置条件不成立的情况下调用该操作,则不能得到指定的结果。
Z语言获得成功的主要原因为:
- 可以比较容易的发现用Z写的规格说明的错误,特别是在自己审查规格说明,及根据形式化的规格说明来审查设计与代码时,情况更是如此。
- 要求十分精确地使用Z说明符写规格说明。减少了模糊性、不一致性和遗漏。
- Z只是一种形式化语言,在需要时开发者可以严格地验证规格说明的正确性。
- 只用比较短的时间就能够让开发人员学会编写Z规格说明
- 使用Z语言通过减少开发过程所需要的总时间来降低软件开发费用
- 用户可以依据Z规格说明用自然语言重写比直接用自然语言写出的非形式化规格说明更加清楚和准确。
是一种形式化语言,在需要时开发者可以严格地验证规格说明的正确性。
4. 只用比较短的时间就能够让开发人员学会编写Z规格说明
5. 使用Z语言通过减少开发过程所需要的总时间来降低软件开发费用
6. 用户可以依据Z规格说明用自然语言重写比直接用自然语言写出的非形式化规格说明更加清楚和准确。
边栏推荐
- Some ways out for older programmers
- Système de distribution Unity Composants en tissu (y compris les dépendances d'appel dynamique)
- Unity: the referenced script (unknown) on this behavior is missing“
- VB. Net class library to obtain the color under the mouse in the screen (Advanced - 3)
- Unity cloth system_ Cloth component (including dynamic call related)
- Unity method for setting material and shader
- What are the test case design methods?
- 从位图到布隆过滤器,C#实现
- [mixed programming JNI] Part 6: operation of strings and arrays in native
- 【Kotlin】关键词suspend 线程操作的学习和async理解
猜你喜欢

數據清洗工具flashtext,效率直接提昇了幾十倍數

L'outil de nettoyage des données flashtext améliore directement l'efficacité de plusieurs dizaines de fois
![leetcode:6103. Delete the minimum score of the edge from the tree [DFS + connected component + value record of the subgraph]](/img/16/8dc63e6494b3f23e2685e287abc94c.png)
leetcode:6103. Delete the minimum score of the edge from the tree [DFS + connected component + value record of the subgraph]
![[machine learning] - Introduction to vernacular and explanation of terms](/img/4c/e18fe52a71444c2ca08167ead9f28f.jpg)
[machine learning] - Introduction to vernacular and explanation of terms

论文解读(LG2AR)《Learning Graph Augmentations to Learn Graph Representations》

Reading graph augmentations to learn graph representations (lg2ar)

Unityeditor Editor Extension - table function

【界面】pyqt5和Swin Transformer对人脸进行识别

VB. Net class library to obtain the color under the mouse in the screen (Advanced - 3)

Word chess based on heuristic search
随机推荐
尚硅谷DolphinScheduler视频教程发布
[mixed programming JNI] Part 9: JNI summary
Brief analysis of the self inspection contents of the blue team in the attack and defense drill
Unity: 脚本缺失 “The referenced script (Unknown) on this Behaviour is missing!“
Introduction de l'opérateur
[strong foundation program] video of calculus in mathematics and Physics Competition
Briefly describe the model animation function of unity
數據清洗工具flashtext,效率直接提昇了幾十倍數
leetcode:141. Circular linked list [hash table + speed pointer]
浅谈分布式系统开发技术中的CAP定理
Unity3D插件 AnyPortrait 2D骨骼動畫制作
A simple and crude method for exporting R language list to local
【界面】pyqt5和Swin Transformer对人脸进行识别
【老卫搞机】090期:键盘?主机?全功能键盘主机!
[mixed programming JNI] Part 7: JNI command lines
【混合编程jni 】第十一篇之JNA详情
Solution of valuenotifier < list < t > > monitoring problem in fluent
Word chess based on heuristic search
Which platform is the safest for buying stocks and opening accounts? Ask for sharing
[Old Wei makes machines] issue 090: keyboard? host? Full function keyboard host!