当前位置: 首页 > news >正文

[软件工程导论(第六版)]第4章 形式化说明技术(课后习题详解)

文章目录

    • 1. 举例对比形式化方法和欠形式化方法的优缺点。
    • 2. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?
    • 3. 一个浮点二进制数的构成是:一个可选的符号(+或-),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或-)及一个或多个二进制位。例如,下列的字符串都是浮点二进制数:
    • 4. 考虑下述的自动化图书馆流通系统:每本书都有一个条形码,每个借阅人都有一个带有条形码的卡片。当一个借阅人想借一本书时,图书管理员扫描书上的条形码和借阅人卡片上的条形码,然后在计算机终端上输入C;当归还一本书时,图书管理员将再做一次扫描,并输入R。图书管理员可以把一些书加到(+)图书集合中,也可以删除(-)它们。借阅人可以在终端上查找到某个作者所有的书(输入“A=”和作者名字),或具有指定标题的所有书籍(输入“T=”和标题),或属于特定主题范围内的所有图书(输入“S=”加主题范围)。最后,如果借阅人想借的书已被别人借走,图书管理员将给这本书设置一个预约,以便书归还时把书留给预约的借阅人(输入“H=”加书号)。试用有穷状态机说明上述的图书流通系统。
    • 5. 试用Petri网说明第4题所述图书馆中一本书的循环过程。在规格说明中应该包括操作H、C及R。
    • 6. 试用Z语言对第4题所述图书馆图书流通系统做一个完整的规格说明。


1. 举例对比形式化方法和欠形式化方法的优缺点。

  • (1)欠形式化方法的缺点
    • ① 存在矛盾。
    • ② 具有二义性。
    • ③ 具有含糊性。
    • ④ 具有不完整性。
    • ⑤ 抽象层次混乱。
  • (2)欠形式化方法的优点学习难度低。
  • (3)形式化方法的优点
    • ① 能保证规格说明中尽可能没有矛盾、二义性、含糊性和不完整性。
    • ② 可以在不同的软件工程活动之间平滑地过渡。
    • ③ 提供了高层确认的手段。
  • (4)形式化方法的缺点
    • ① 难于表示问题的时序、控制和行为等方面的需求。
    • ② 相比欠形式化方法,它更难学习,培训的投资过大。

2. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?

答:

  • (1)人们在理解用自然语言描述的规格说明时,容易产生二义性。为了克服非形式化方法的缺点,人们把数学引入软件工程。创造了基于数学的形式化说明技术。
  • (2)应用形式化方法的准则:
    • ① 应该选用适当的表示方法。
    • ② 应该形式化,但不要过分形式化。
    • ③ 应该估算成本。
    • ④ 应该有形式化方法顾问随时提供咨询。
    • ⑤ 不应该放弃传统的开发方法。
    • ⑥ 应该建立详尽的文档。
    • ⑦ 不应该放弃质量标准。
    • ⑧ 不应该盲目依赖形式化方法。
    • ⑨ 应该测试、测试再测试。
    • ⑩ 应该重用。

3. 一个浮点二进制数的构成是:一个可选的符号(+或-),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或-)及一个或多个二进制位。例如,下列的字符串都是浮点二进制数:

110101E-101
-100111E11101
+1E0
更形式化地,浮点二进制数定义如下:

<floating-point binary>∷=[<sign>]<bitstring>E[<sign>]<bitstring>
<sign>∷=+|-
<bitstring>∷=<bit>[<bitstring>]
<bit>∷=0|1

其中:
符号∷=表示定义为;
符号[…]表示可选项;
符号a|b表示a或b。

假设有这样一个有穷状态机:以一串字符为输入,判断字符串中是否含有合法的浮点二进制数。试对这个有穷状态机进行规格说明。

答:
(1)自然语言描述
该有穷状态机的初态是“等待字符串输入”。在初态若接收到字符“+”、字符“-”、或二进制位,则进入“输入尾数”状态;在初态若接收到其他字符,则进入终态“非浮点二进制数”。在“输入尾数”状态若接收到二进制位,则保持该状态不变;若接收到字符“E”,则进入“等待输入指数”状态;若接收到其他字符,则进入终态“非浮点二进制数”。在“等待输入指数”状态若接收到字符“+”、字符“-”、或二进制位,则进入“输入指数”状态;若接收其他字符,则进入终态“非浮点二进制数”。在“输入指数”状态若接收到二进制位,则保持该状态不变;若输入其他字符,则进入终态“非浮点二进制数”;若输入结束,则进入终态“浮点二进制数”。

(2)形式化图,如图所示。
在这里插入图片描述

4. 考虑下述的自动化图书馆流通系统:每本书都有一个条形码,每个借阅人都有一个带有条形码的卡片。当一个借阅人想借一本书时,图书管理员扫描书上的条形码和借阅人卡片上的条形码,然后在计算机终端上输入C;当归还一本书时,图书管理员将再做一次扫描,并输入R。图书管理员可以把一些书加到(+)图书集合中,也可以删除(-)它们。借阅人可以在终端上查找到某个作者所有的书(输入“A=”和作者名字),或具有指定标题的所有书籍(输入“T=”和标题),或属于特定主题范围内的所有图书(输入“S=”加主题范围)。最后,如果借阅人想借的书已被别人借走,图书管理员将给这本书设置一个预约,以便书归还时把书留给预约的借阅人(输入“H=”加书号)。试用有穷状态机说明上述的图书流通系统。

答:
图书馆流通系统的有穷状态机描述如下:
(1)图书状态的有穷状态机描述
状态机J:{书在图书馆S1,书被借出S2,书被预约S3}
输入集K:{书上条形码,借阅卡条形码,终端输入各种命令}
转换函数T:如图示。
在这里插入图片描述
初始态S:{书在图书馆S1,书被借出S2}
终态集F:{书被借出S2,书被预约S3}

(2)图书馆终端管理员模式的有穷状态机描述。
状态机J:{管理员设置状态,书入库,书出库(删除),预约}
输入集K:{终端输入管理员命令,书的各种状态(S1,S2,S3)}
转换函数T:如图所示。
在这里插入图片描述
初始态S:{管理员设置状态}
终态集F:{书入库,书出库(删除),预约}

(3)图书馆终端用户模式的有穷状态机描述
状态机J:{读者查询状态,查询结果}
输入集K:{终端输入用户查询命令,书的各种状态(S1,S2,S3)}
转换函数T:如图所示
在这里插入图片描述
初始态S:{读者查询状态}
终态集F:{查询结果}

5. 试用Petri网说明第4题所述图书馆中一本书的循环过程。在规格说明中应该包括操作H、C及R。

答:图书馆流通系统中一本书的循环过程的Petri网如图所示。其中
P1表示书在图书馆,P2表示书在读者手上,P3表示书被预约。
在这里插入图片描述

6. 试用Z语言对第4题所述图书馆图书流通系统做一个完整的规格说明。

http://www.lryc.cn/news/13347.html

相关文章:

  • Premiere基础操作
  • Prometheus监控案例-tomcat、mysql、redis、haproxy、nginx
  • 如何寻找SAP中的增强
  • 算法刷题打卡第95天: 最大平均通过率
  • Springboot扩展点系列之终结篇:Bean的生命周期
  • OnGUI Color 控件||Unity 3D GUI 简介||OnGUI TextField 控件
  • 【日刻一诗】
  • 设计模式 状态机
  • React源码分析(二)渲染机制
  • Object.defineProperty 和 Proxy 的区别
  • Python基础4——面向对象
  • Hive 核心知识点灵魂 16 问
  • 聊聊探索式测试与敏捷实践
  • 社区宠物诊所管理系统
  • Vue项目创建首页发送axios请求
  • Nginx
  • 2049. 统计最高分的节点数目
  • Docker 架构简介
  • 玄子Share-BCSP助学手册-JAVA开发
  • 利用React实现多个场景下的鼠标跟随框提示框
  • 【安全知识】——如何绕过cdn获取真实ip
  • JavaScript内存泄露和垃圾回收机制
  • Kubernetes02:知识图谱
  • nginx-服务器banner泄漏风险
  • GCC 同名符号冲突解决办法
  • 下一代视频编码技术2023
  • 最新最全中小微企业研究数据:海量创业公司信息与获取投资信息(1985-2021年)
  • springboot数据源浅析
  • 2022黑马Redis跟学笔记.实战篇(七)
  • QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等