软件工程导论第六版 张海藩 牟永敏课后习题答案 下载本文

(6 )复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。

请用状态转换图描绘复印机的行为。

答案: 从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。

排除了卡纸故障 缺纸 do /警告 复印命令 闲置 完成复印命复印 do /复印 卡纸 装满纸 do /警告 1,举例说明形式化说明技术和欠形式化方法的优缺点。 答: 形式化说明 优点 缺点 1,简洁准确的描述大多形式化的规格说明主要物理现象,对象获动作关注系统的功能和数据,而时序的结果 的问题,控制和行为等方面的需求却更难于表示 2,可以在不同软件工程活动之间平滑的过度。 3,它提供了高层确认的手段 非形式化说明 难度低 可能存在矛盾,二义性,含糊性,不完整性级抽象层次混乱等问题 以一个简单的俄罗斯方块游戏系统规格说明为例,用自然语言描述如下:

游戏的每个状态对应一个游戏界面,开始状态下,但变量cd_start=1是进入正常游戏的状态,cd_start=2 进入读取游戏状态,cd_start=3是进入得分榜界面查看。在得分榜界面按任意键返回开始界面,在读取游戏 面,当游戏数据读取完成后进入正常游戏状态,正常游戏状态下,同时按下左键和右键进入储存游戏界面,

据储存结束后返回正常游戏状态,在正常游戏状态下,如果变量game_res=0,则游戏结束,进入游戏结束画。 可见,用自然语言书写的系统规格说明书,罗嗦繁杂,并且可能存在矛盾,二义性,含糊性,不完整性抽象 层次混乱等问题。 用有穷状态的描述如下:

状态机J:{开始,正常游戏(游戏进行中),得分榜,读取游戏,储存游戏,游戏结束}

输入集K:{按键UP,按键DOWN,按键LEFT,按键RIGHT,寄存器变量cd_start ,寄存器变量game_res} 转换函数T:如图4.1所示 初始态S:{开始} 终态集F:{游戏结束} 得分榜 可见用形式化语言描述,更加简洁,准确,无歧义。 Cd_start=EEPROM读2,在什么情况下应该使用形式化说明技术?使用形式化说明技术应遵守哪些规则? 按任意键 读取游戏 Cd_star答: 游戏进行中 LEFT&RIGHT 在用非形式化的方式描述时,存在矛盾,二义性,含糊性,不完整性级抽象层次混乱等问题时用形Cd_start=开始 式化说明技术。 应用形式化方法的准则: A,应该选用适当的表示方法; Game_res=B,应该形式化,但不要过分形式化; 游戏结束 C, 应该估算成本; D, 应该有形式化的方法顾问随时提供咨询; E, 不应该放弃传统的开发方式; F,应该建立详尽的文档; G,不应该放弃质量标准; H,不应该盲目依赖形式化方法; I,应该测试,测试再测试; J,应该重用。

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

110101E-101 -100111E11101 +1E0

更形式化地,浮点二进制数定义如下: 〈floating

point binary〉∷=[〈sign〉]〈bitstring〉E[〈sign〉]〈bitstring〉

EEPROM写储存中 图4.1游戏状态转换

〈sign〉∷=+|-

〈bitstring〉∷=〈bit〉[〈bitstring〉] 〈bit〉∷=0|1

其中,

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

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

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

试用有穷状态机说明上述的图书流通系统

答:图书馆流通系统的有穷状态机描述如下: (一)图书状态的有穷状态机描述

状态机J:{书在图书馆S1,书被借出S2,书被预约S3} 输入集K:{书上条形码,借阅卡条形码,终端输入各种命令} 转换函数T:如图4.4.1所示

初始态S:{书在图书馆S1,书被借出S2} 终态集F:{书被借出S2,书被预约S3} 扫描两个条形书被借出(二)图书馆终端管理员模式的有穷状态机描述 在终端输入书被预约书归还,扫描两书在图书馆状态机J:{管理员设置状态,书入库,书出库(删除),预约} 扫描两个条形输入集K:{终端输入管理员命令,书的各种状态(S1,S2,S3} 转换函数T:如图4.4.2所示 初始态S:{管理员设置状态}

终态集F:{书入库,书出库(删除),预约,} (二)图书馆终端用户模式的有穷状态机描述 终端书状态为S2&状态机J:{读者查询状态,查询结果} 图4.1.1 预约 管理员设置状输入集K:{终端输入用户查询命令,书的各种状态(S1,S2,S3)} 转换函数T:如图4.4.3所示 初始态S:{读者查询状态} 终态集F:{查询结果} 管理员删除 终端输入书出库(删除) 管理员添加 查询结5,试用Petri网说明第四题所述图书馆中一本书的循环过程,在规格说明中应该包括操作H、C及R。

各种查询图4.4.2 答:其中P1表示书在图书馆P2表示书在读者手上,P3书被预约 态 命令 图4.4.3

书入读者查询状 P2 6,试用Z语言对第四题所描述图书馆图书流通系统做一个完整的规格说明。 P1 . . 答:(这题真的不会!) BOOK_STATE Book_in,Book_out,Book_reserve P3 Book_in∩Book_out∩Book_reserve=Φ Book_in∪Book_out∪Book_reserve=BOOK_STATE