软件工程导论(第六版)课后习题答案汇总 下载本文

2)确定对系统得综合要求:1、功能需求;2、性能需求;3、可靠性与可用性需求;4、出错处理需求;5、接口需求;6、约束;7、逆向需求;8、将来可以提出得要求,分析系统得数据要求。 (2)怎样与用户有效地沟通以获取用户得真实需求? 答案 :

与用户沟通获取需求得方法:访谈;面向数据流自顶向下求精;简易得应用规格说明技术;快速建立软件原型

3 银行计算机储蓄系统得工作过程大致如下:储户填写得存款单或取款单由业务员键入系统,如果就是存款则系统记录存款人姓名、住址、身份证号码等存款信息,并打印出存款存单给储户;如果就是取款且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。 答案: 用ER图描绘系统中得数据对象。

住址电话号码姓名身份证号码名称电话号码地址储户M存取款N储蓄所到期日期排除了卡纸故障 数额

类型利率密码(5)分所析习题2中第4题得患者监狱系统。试用实体-联系图描述本系统中得数据对象并用数据流程描绘本系统得功能。

缺纸 do /警告 复印 (6 )复印机得工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定得闲置 工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进do /复印 完成复印命令 入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。 请用状态转换图描绘复印机得行为。 复印命令 卡纸 装满纸 答案: 从问题陈述可知,复印机得状态主要有“闲置”、“复印”、“缺纸”与“卡纸”。引起状态转换得事件主要就是“复do /警告 印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”与“排除了卡纸故障”。

1,举例说明形式化说明技术与欠形式化方法得优缺点。 答: 形式化说明 优点 1,简洁准确得描述物理现象,对象获动作得结果 2,可以在不同软件工程活动之间平滑得过度。 3,它提供了高层确认得手段 非形式化说明 难度低 可能存在矛盾,二义性,含糊性,不完整性级抽象层次混乱等问题 以一个简单得俄罗斯方块游戏系统规格说明为例,用自然语言描述如下:

游戏得每个状态对应一个游戏界面,开始状态下,但变量cd_start=1就是进入正常游戏得状态,cd_start=2时

进入读取游戏状态,

缺点 大多形式化得规格说明主要关注系统得功能与数据,而时序得问题,控制与行为等方面得需求却更难于表示 d_start=3就是进入得分榜界面查瞧。在得分榜界面按任意键返回开始界面,在读取游戏界 面,当游戏数据读取完成后进入正常游戏状态,正常

据储存结束后返回正常游戏状态,在正常游戏状态下,如果变量game_res=0,则游戏

游戏状态下,同时按下左键与右键进入储存游戏界面,数

结束,进入游戏结束画面。 可见,用自然语言书写得系统规格说明书,罗嗦繁杂,并且可能存在矛盾,二义性,含糊性,不完整性及抽象 层次

用有穷状态得描述如下:

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

输入集K:{按键UP,按键DOWN,按键LEFT,按键RIGHT,寄存器变量cd_start ,寄存器变量game_res} 转换函数T:如图4、1所示 初始态S:{开始} 终态集F:{游戏结束} 混乱等问题。

读取游戏 EEPROM读取完成后 可见用形式化语言描述,更加简洁,准确,无歧义。 2,在什么情况下应该使用形式化说明技术?使用形式化说明技术应遵守哪些规则? Cd_start=2 答: 应用形式化方法得准则: A,应该选用适当得表示方法; 得分榜 按任意键 在用非形式化得方式描述时,存在矛盾,二义性,含糊性,不完整性级抽象层次混乱等问题时用形式化说明技术。 Cd_start=3 游戏进行中 Cd_start=1 B,应该形式化,但不要过分形式化;C, 应该估算成本; D, 应该有形式化得方法顾问随时提供咨询; E, 不应该放弃传统得开发方式; F,应该建立详尽得文档; G,不应该放弃质量标准; H,不应该盲目依赖形式化方法; I,应该测试,测试再测试; J,应该重用。

开始 LEFT&RIGHT Game_res=0 游戏结束 EEPROM写入完成后 储存中 图4、1(+游戏状态转换图 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。

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

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

答:图书馆流通系统得有穷状态机描述如下:

(一)图书状态得有穷状态机描述

状态机J:{书在图书馆S1,书被借出S2,书被预约S3}

输入集K:{书上条形码,借阅卡条形码,终端输入各种命令}

转换函数T:如图4、4、1所示

初始态S:{书在图书馆S1,书被借出S2}

终态集F:{书被借出S2,书被预约S3}

二)图书馆终端管理员模式得有穷状态机描述 状态机J:{管理员设置状态,书入库,书出库(删除),预约} 扫描两个条形码,在终端输入C S1 输入集书在图书馆K:{终端输入管理员命令,书得各种状态(S1,S2,S3} 书被借出S2 在终端输入“H=”加书号 书归还,扫描两个条形码,在终端输入R 预约 书被预约S3 扫描两个条形码,转换函数T:如图4、4、2所示 在终端输入R 初始态S:{管理员设置状态} 图4、1、1 终态集F:{书入库,书出库(删除),预约,} 二)图书馆终端用户模式得有穷状态机描述 书状态为S2&终端输入“H=”加书名 )} 输入集K:{终端输入用户查询命令,书得各种状态(S1,S2,S3管理员设置状态 状态机J:{读者查询状态,查询结果} 转换函数T:如图4、4、3所示 初始态S:{读者查询状态} 管理员删除 各终端输入终态集F:{查询结果} 种查询命令 5,试用Petri网说明第四题所述图书馆中一本书得循环过程,在规格说明中应该包括操作H、C及R。 管理员添加 P2表示书在读者手上,P3书被预约 答:其中读者查询状态P1表示书在图书馆查询结果 书出库(删除) P2 6,试用Z语言对第四题所描述图书馆图书流通系统做一个完整得规格说明。 书入库 P1 答:(这题真得不会!) BOOK_STATE 、 图4、4、2 图4、4、3 、 Book_in,Book_out,Book_reserve Book_in∩Book_out∩Book_reserve=Φ P3 Book_in∪Book_out∪Book_reserve=BOOK_STATE 第五章

5、1为每种类型得模块耦合举一个具体得例子。

答:耦合式对一个软件结构内不同模块之间互联程度得度量。耦合强弱取决于接口得复杂度,进入或访问某一模块得点,以及通过接口得数据。一般模块之间得可能得连接方式有七种,构成耦合得七种类型,它们得关系为:

低 耦合性 高 非直接耦合

强 独立性 弱 下面举例说明以上耦合:

A. 非直接耦合:两个模块没有直接得关系(模块1与模块2),独立性最强 B、数据耦合:即一个模块访问另一个模块得时候,彼此之间就是通过数据参数来交换输入、输出信息得,这种耦合为数据耦合。这种耦合较为松散,模块间独立性较强。 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合 模块1 模块2 模块3 模块4 开发票 金额 单价 数量 交房费 C、特征耦合:即一组模块通过参数传递记录信息,用户情况就是个数据结构,图中模块都与此有关,“计算水费”与“计算电费”本没有关系,由于引用了此数据结构产生了依赖关系 水费 电费 用户情况 计算水电费 用户情况 计算水费费 计算电费 D、控制耦合:即如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块得功能,就就是控制耦合 A模块Flag B F1 F2 … Fn E、外部耦合:一组模块都访问同一全局简单变量而不就是同一全局数据结构,而且不就是通过参数表传递该全局变量得信息,则称之为外部耦合。 F、公共耦合: 若一组模块都访问同一个公共数据环境,则它们之间得耦合就称为公共耦合。

G、内容耦合:如果出现以下情况之一,两个模块就发生了内容耦合 ① 一个模块访问另一个模块得内部数据。

② 一个模块不通过正常入口儿转到另一个模块得内部

③ 两个模块有一部分程序代码重叠(只可能发生在汇编程序中) ④ 一个模块有多个入口(这意味着一个模块有几种功能) Sub AA(…、) …

A模块 B模块 使用 打印机 使用 A模块 B模块 C模块 全局数组