1.举例对比形式化方法和欠形式化方法的优缺点。
答: (1)欠形式化方法的缺点
①矛盾
矛盾是指一组相互冲突的陈述。
②二义性
二义性是指读者可以用不同方式理解的陈述。
③含糊性
例如,人们可能经常在文档中看到类似下面这样的需求:“系统界面应该是对用户友好的。”实际上,这样笼统的陈述并没有给出任何有用的信息。
④不完整性。
如果在规格说明书中对一个命令的功能没有更多的描述,那么,这个命令的细节是严重不完整的。
⑤抽象层次混乱。
抽象层次混乱是指在非常抽象的陈述中混进了一些关于细节的低层次陈述。这样的规格说明书使得读者很难了解系统的整体功能结构。
(2)形式化方法的优点
①能够简洁准确地描述物理现象、对象或动作的结果。
在理想情况下,分析员可以写出系统的数学规格说明,它准确到几乎没有二义性,而且可以用数学方法来验证,以发现存在的矛盾和不完整性,在这样的规格说明中完全没有含糊性。
②可以在不同的软件工程活动之间平滑地过渡。
③提供了高层确认的手段。
可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。
2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?
答: (1)人们在理解用自然语言描述的规格说明时,容易产生二义性。为了克服非形式化方法的缺点,人们把数学引入软件工程。创造了基于数学的形式化说明技术。
(2)应用形式化方法的准则:
①应该选用适当的表示方法。
②应该形式化,但不要过分形式化。
③应该估算成本。
④应该有形式化方法顾问随时提供咨询。
⑤不应该放弃传统的开发方法。
⑥应该建立详尽的文档。
⑦不应该放弃质量标准。
⑧不应该盲目依赖形式化方法。
⑨应该测试、测试再测试。
⑩应该重用。
3.一个浮点二进制数的构成是:一个可选的符号(+或-),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或-)及一个或多个二进制位。例如,下列的字符串都是浮点二进制数:
110101E-101
-100111E11101
+1E0
更形式化地,浮点二进制数定义如下:
其中:
符号∷=表示定义为;
符号 [...] 表示可选项;
符号a | b表示“a或b。
假设有这样一个有穷状态机:以一串字符为输入,判断字符串中是否含有合法的浮点二进制数。试对这个有穷状态机进行规格说明。
答: (1)自然语言描述
改有穷状态机的初态是“等待字符串输入”。在初态若接收到字符“+”、字符“-”、或二进制位,则进入“输入尾数”状态;在初态若接收到其它字符,则进入终态“非浮点二进制数”。在“输入尾数”状态若接收到二进制位,则保持该状态不变;若接收到字符“E”,则进入“等待输入指数”状态;若接收到其它字符,则进入终态“非浮点二进制数”。在“等待输入指数”状态若接收到字符“+”、字符“-”、或二进制位,则进入“输入指数”状态;若接收其它字符,则进入终态“非浮点二进制数”。在“输入指数”状态若接收到二进制位,则保持该状态不变;若输入其他字符,则进入终态“非浮点二进制数”;若输入结束,则进入终态“浮点二进制数”。
(2)形式化图,如图4-8所示。
图4-8 有穷机形式化图
4.考虑下述的自动化图书馆流通系统:每本书都有一个条形码,每个借阅人都有一个带有条形码的卡片。当一个借阅人想借一本书时,图书管理员扫描书上的条形码和借阅人卡片上的条形码,然后在计算机终端上输入C;当归还一本书时,图书管理员将再做一次扫描,并输入R。图书管理员可以把一些书加到(+)图书集合中,也可以删除(-)它们。借阅人可以在终端上查找到某个作者所有的书(输入“A=”和作者名字),或具有指定标题的所有书籍(输入“T=”和标题),或属于特定主题范围内的所有图书(输入“S=”加主题范围)。最后,如果借阅人想借的书已被别人借走,图书管理员将给这本书设置一个预约,以便书归还时把书留给预约的借阅人(输入“H=”加书号)。
试用有穷状态机说明上述的图书流通系统。
答: 图书馆流通系统的有穷状态机描述如下:
(1)图书状态的有穷状态机描述
状态机J:{书在图书馆S1,书被借出S2,书被预约S3}
输入集K:{书上条形码,借阅卡条形码,终端输入各种命令}
转换函数T:如图4-9所示。
初始态S:{书在图书馆S1,书被借出S2}
终态集F:{书被借出S2,书被预约S3}
图4-9 图书状态转换函数
(2)图书馆终端管理员模式的有穷状态机描述。
状态机J:{管理员设置状态,书入库,书出库(删除),预约}
输入集K:{终端输入管理员命令,书的各种状态(S1,S2,S3)}
转换函数T:如图4-10所示。
初始态S:{管理员设置状态}
终态集F:{书入库,书出库(删除),预约,}
图4-10 图书馆终端管理员模式转换函数
(3)图书馆终端用户模式的有穷状态机描述
状态机J:{读者查询状态,查询结果}
输入集K:{终端输入用户查询命令,书的各种状态(S1,S2,S3)}
转换函数T:如图4-11所示
初始态S:{读者查询状态}
终态集F:{查询结果}
图4-11 图书馆终端用户模式转换函数
5.试用Petri网说明第4题所述图书馆中一本书的循环过程。在规格说明中应该包括操作H、C及R。
答: 图书馆流通系统中一本书的巡回过程的Petri图如图4-12所示。其中P1表示书在图书馆,P2表示书在读者手上,P3书被预约。
图4-12 图书馆流通系统Petri网
6.试用Z语言对第4题所述图书馆图书流通系统做一个完整的规格说明。
答: 略。