当前位置: 首页 > 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…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...