当前位置: 首页 > 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题所述图书馆图书流通系统做一个完整的规格说明。

相关文章:

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

文章目录1. 举例对比形式化方法和欠形式化方法的优缺点。2. 在什么情况下应该使用形式化说明技术&#xff1f;使用形式化说明技术时应遵守哪些准则&#xff1f;3. 一个浮点二进制数的构成是&#xff1a;一个可选的符号&#xff08;&#xff0b;或&#xff0d;&#xff09;&…...

Premiere基础操作

一&#xff1a;设置缓存二&#xff1a;ctrI导入素材三&#xff1a;导入图像序列四&#xff1a;打开吸附。打开吸附后素材会对齐。五&#xff1a;按~键可以全屏窗口。六&#xff1a;向前选择轨道工具。在时间线上点击&#xff0c;向前选中时间线上素材。向后选择轨道工具&#x…...

Prometheus监控案例-tomcat、mysql、redis、haproxy、nginx

监控tomcat tomcat自身并不能提供监控指标数据&#xff0c;需要借助第三方exporter实现&#xff1a;https://github.com/nlighten/tomcat_exporter 构建镜像 基于tomcat官方镜像&#xff0c;重新制作一个镜像&#xff0c;将tomcat-exporter和tomcat整合到一起。Ddockerfile如…...

如何寻找SAP中的增强

文章目录0 简介1 寻找一代增强2 寻找二代增强2.2 在包里也可以看到2.3 在出口对象里输入包的名字也可以找到2.4 通过以下函数可以发现已有的增强2.5 也可以在cmod里直接找2.6 总结3 寻找第三代增强0 简介 在SAP中&#xff0c;对原代码的修改最不容易的是找增强&#xff0c;以下…...

算法刷题打卡第95天: 最大平均通过率

最大平均通过率 难度&#xff1a;中等 一所学校里有一些班级&#xff0c;每个班级里有一些学生&#xff0c;现在每个班都会进行一场期末考试。给你一个二维数组 classes &#xff0c;其中 classes[i] [passi, totali] &#xff0c;表示你提前知道了第 i 个班级总共有 totali…...

Springboot扩展点系列之终结篇:Bean的生命周期

前言关于Springboot扩展点系列已经输出了13篇文章&#xff0c;分别梳理出了各个扩展点的功能特性、实现方式和工作原理&#xff0c;为什么要花这么多时间来梳理这些内容&#xff1f;根本原因就是这篇文章&#xff1a;Spring bean的生命周期。你了解Spring bean生命周期&#xf…...

OnGUI Color 控件||Unity 3D GUI 简介||OnGUI TextField 控件

Unity 3D Color 控件与 Background Color 控件类似&#xff0c;都是渲染 GUI 颜色的&#xff0c;但是两者不同的是 Color 不但会渲染 GUI 的背景颜色&#xff0c;同时还会影响 GUI.Text 的颜色。具体使用时&#xff0c;要作如下定义&#xff1a;public static var color:Color;…...

【日刻一诗】

日刻一诗 1&#xff09;LeetCode总结&#xff08;线性表&#xff09;_链表类 2&#xff09;LeetCode总结&#xff08;线性表&#xff09;_栈队列类 3&#xff09;LeetCode总结&#xff08;线性表&#xff09;_滑动窗口 4&#xff09;LeetCode总结&#xff08;线性表&#x…...

设计模式 状态机

前言 本文梳理状态机概念&#xff0c;在实操中状态机和状态模式类似&#xff0c;只是被封装起来&#xff0c;可以很方便的实现状态初始化和状态转换。 概念 有限状态机&#xff08;finite-state machine&#xff09;又称有限状态自动机&#xff08;英语&#xff1a;finite-s…...

React源码分析(二)渲染机制

准备工作 为了方便讲解&#xff0c;假设我们有下面这样一段代码&#xff1a; function App(){const [count, setCount] useState(0)useEffect(() > {setCount(1)}, [])const handleClick () > setCount(count > count)return (<div>勇敢牛牛, <sp…...

Object.defineProperty 和 Proxy 的区别

区别:Object.defineProperty是一个用来定义对象的属性或者修改对象现有的属性的函数&#xff0c;&#xff0c;而 Proxy 是一个用来包装普通对象的对象的对象。Object.defineProperty是vue2响应式的原理, Proxy 是vue3响应式的原理1)参数不同Object.defineProperty参数obj: 要定…...

Python基础4——面向对象

目录 1. 认识对象 2. 成员方法 2.1 成员方法的定义语法 3. 构造方法 4. 其他的一些内置方法 4.1 __str__字符串方法 4.2 __lt__小于符号比较方法 4.3 __le__小于等于符号比较方法 4.4 __eq__等号比较方法 5. 封装特性 6. 继承特性 6.1 单继承 6.2 多继承 6.3 pas…...

Hive 核心知识点灵魂 16 问

本文目录 No1. 请谈一下 Hive 的特点No2. Hive 底层与数据库交互原理&#xff1f;No3. Hive 的 HSQL 转换为 MapReduce 的过程&#xff1f;No4. Hive 的两张表关联&#xff0c;使用 MapReduce 怎么实现&#xff1f;No5. 请说明 hive 中 Sort By&#xff0c;Order By&#xff0…...

聊聊探索式测试与敏捷实践

这是鼎叔的第五十二篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》&#xff0c;大量原创思考文章陆续推出。探索式测试在敏捷测试象限中处于右上角&#xff0c;即面向业务且评价产品&#xff0c;这篇补充一下探索…...

社区宠物诊所管理系统

目录第一章概述 PAGEREF _Toc4474 \h 21.1引言 PAGEREF _Toc29664 \h 31.2开发背景 PAGEREF _Toc3873 \h 3第二章系统总体结构及开发 PAGEREF _Toc19895 \h 32.1系统的总体设计 PAGEREF _Toc6615 \h 32.2开发运行环境 PAGEREF _Toc13054 \h 3第三章数据库设计 PAGEREF _Toc2852…...

Vue项目创建首页发送axios请求

这是个全新的Vue项目,引入了ElementUI 将App.vue里的内容干掉,剩如下 然后下面的三个文件也可以删掉了 在views文件下新建Login.vue组件 到router目录下的index.js 那么现在的流程大概是这样子的 启动 写登陆页面 <template><div><el-form :ref"form"…...

Nginx

NginxNginxNginx可以从事的用途Nginx安装Nginx自带常用命令Nginx启动Nginx停止Nginx重启Nginx配置概要第一部分&#xff1a;全局块第二部分&#xff1a;events 块&#xff1a;第三部分&#xff1a;http块&#xff1a;Nginx Nginx是一个高性能的http和反向代理服务器&#xff0…...

2049. 统计最高分的节点数目

2049. 统计最高分的节点数目题目算法设计&#xff1a;深度优先搜索题目 传送门&#xff1a;https://leetcode.cn/problems/count-nodes-with-the-highest-score/ 算法设计&#xff1a;深度优先搜索 这题的核心是计算分数。 一个节点的分数 左子树节点数 右子树节点数 除自…...

Docker 架构简介

Docker 架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&am…...

玄子Share-BCSP助学手册-JAVA开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言&#xff1a; 此文为玄子&#xff0c;复习BCSP一二期后整理的文章&#x…...

Retinaface+CurricularFace模型部署实战:Windows11环境配置全攻略

RetinafaceCurricularFace模型部署实战&#xff1a;Windows11环境配置全攻略 想在Windows11上快速搭建人脸识别系统却苦于环境配置&#xff1f;本文手把手带你避开所有坑&#xff0c;30分钟完成RetinafaceCurricularFace的完整部署。 1. 环境准备&#xff1a;搞定CUDA和cuDNN …...

基于DSP28335的三电平PCS系统代码功能说明

一、系统概述 本文档所分析的代码基于TI DSP28335处理器&#xff0c;实现了三电平储能变流器&#xff08;PCS&#xff09;的完整控制逻辑。该系统支持并网/离网双模式运行&#xff0c;具备多目标控制策略&#xff08;有功、无功、谐波治理、不平衡补偿等&#xff09;、完善的故…...

ddsad

sdsfdjsufhfsuh...

OpenClaw资源监控:Qwen3-14b_int4_awq任务执行性能分析

OpenClaw资源监控&#xff1a;Qwen3-14b_int4_awq任务执行性能分析 1. 为什么需要关注OpenClaw资源监控 上周我在本地部署了Qwen3-14b_int4_awq模型&#xff0c;准备用OpenClaw实现自动化内容处理工作流。刚开始运行几个简单任务时一切正常&#xff0c;直到尝试处理一个包含2…...

C语言自学必看:最经典C语言书推荐

最经典的C语言书都在这了。 1、C Primer Plus 第6版 中文版C语言是鉴于满足程序员需求而被设计出来的&#xff0c;程序员借助C能够去访问硬件&#xff0c;能够操控内存里的位。C语言存有丰富的运算符&#xff0c;可使程序员得以简洁地表述自身意图。C语言不像Pascal那般严谨&am…...

Simulink仿真避坑指南:三相异步电机调压调速,你的转速波形为什么震荡不稳?

Simulink三相异步电机调压调速实战&#xff1a;从波形异常到稳定输出的深度调优 当你在Simulink中搭建完三相异步电机调压调速模型&#xff0c;满心期待地点击"运行"按钮&#xff0c;却发现转速波形像过山车一样上下震荡——这种挫败感我深有体会。作为一名经历过无数…...

从父子到祖孙:用Protege玩转OWL属性链推理的3个典型场景

从父子到祖孙&#xff1a;用Protege玩转OWL属性链推理的3个典型场景 家族族谱中"曾祖父"的自动推导、企业架构里"间接上级"的智能识别、生物遗传学里"隔代基因传递"的规律验证——这些看似不相关的场景&#xff0c;其实都藏着同一个知识图谱建模…...

PTQ量化实战:如何用Python一步步将VGG-16模型压缩到INT8(附完整代码)

PTQ量化实战&#xff1a;如何用Python一步步将VGG-16模型压缩到INT8&#xff08;附完整代码&#xff09; 当你在移动设备上使用人脸识别功能时&#xff0c;有没有想过这些复杂的神经网络是如何在有限的计算资源上运行的&#xff1f;答案往往藏在模型量化这个关键技术里。今天我…...

二十载面香溢加州:鲁味居(101 Noodle Express)的北美餐饮进阶启示录

近日&#xff0c;南加州知名中餐地标品牌“鲁味居&#xff08;101 Noodle Express&#xff09;”正式迎来创立二十周年。在竞争激烈的北美餐饮市场&#xff0c;该品牌凭借对中国纯正传统面食与非遗卤味技艺的坚守&#xff0c;不仅确立了其在海外华人圈层的核心地位&#xff0c;…...

针对波动计算复杂性的吸收边界条件(PML 用于一般波动方程)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…...