软件工程第三章习题ok讲述.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程第三章习题ok讲述

第三章习题 1.用逐步求精方法解决下述的更新顺序主文件的问题。 美国某杂志社需要一个软件,以更新存有该杂志订户姓名、地址等数据的顺序主文件。共有插入、修改和删除等3种类型的事务,分别对应于事务代码1、2和3。也就是说,事务类型如下: 类型1:INSERT(插入一个新订户到主文件中) 类型2:MODIFY(修改一个已有的订户记录) 类型3:DELETE(删除一个已有的订户记录) 事务是按订户名字的字母顺序排序的。如果对一个订户既有修改事务又有删除事务,则已对那个订户的事务排好次序了,以便使修改发生在删除之前。 答:解决任何问题之前都必须首先理解问题,对问题理解得越深入,解决起来也就越容易。为了获得对顺序主文件更新问题的直观、具体的认识,首先设想一个典型的主文件(称为旧的主文件)、一个事务文件和更新后得到的新的主文件及异常情况报告,如图3.8所示。 为了简单起见,在图3.8中忽略了主文件和事务文件中所包含的订户地址信息。 从图3.8可以看出,更新顺序主文件系统有下述2个输入文件: ① 旧的主文件(由包含订户姓名、地址信息的记录组成); ② 事务文件。 系统还有3个输出文件: ① 新的主文件; ② 异常报告; ③ 摘要和工作结束信息。 图3.9描绘了设想的顺序主文件更新系统的概貌。 然后用逐步求精方法设计图3.9中关键的黑盒子“更新主文件”的实现算法。逐步求精方法实质上是“自顶向下”的设计方法,它通过不断分层细化解决问题的算法来设计软件。它不像“各个击破”技术那样把整个问题分解为若干个重要程序相同的子问题。 在用逐步求精方法设计软件的过程中,软件的某个特定方面的重要性在一次又一次的求精中是变化的。最初,某个问题可能无关紧要,但后来同样的问题会变得相当重要。换句话说,可以把逐步求精方法看作是建立某个阶段内需要解决的各种问题的优先级的一种技术。它能确保每个问题都在恰当的时间得到解决,而且在任何时刻都不需要同时解决7个以上问题。使用逐步求精方法设计软件的难点在于,在当前的求精步骤中确定哪些是必须处理的重要事项,哪些事项应该推迟到后面的求精步骤中去处理。 作为对“更新主文件”的第一步求精,我们把它分解为3个处理框,分别称为“输入”、“处理”和“输出”,如图3.10所示。 在这个设计步骤中假设,当“处理”需要一个记录时,我们能够在那个时候输入正确的记录。同样,我们也能够在当时把正确的记录写入到正确的文件中。也就是说,在把逐步求精方法法运用到解决更新主文件这个问题时,我们是把输入和输出这两方面的问题暂时分离出去,集中精力设计“处理”的算法。 为了搞清楚怎样按照事务文件的指示,更新旧的主文件产生新的主文件,也就是说,为了设计出处理的算法,让我们再一次研究图3.8所示的例子。把第一个事务记录(Brown)的关键字与第一个旧的主文件记录(Abel)的关键字相比较。因为Brown按字母顺序排在Abel的后面,把Abel记录不加更改地写入新的主文件后,读取下一个旧的主文件记录(Brown)。现在,事务记录的关键字与旧的主文件记录的关键字相同,又因为事务的类型是3(删除),所以必须删除Brown记录,这可通过不把Brown记录复制到新的主文件中来实现。接下来读取下一个事务记录(Haris)和下一个旧的主文件记录(James),分别在各自的缓冲区里覆盖Brown记录,因为Haris在James之前,而且事务类型为1(插入),所以把Haris记录写到新的主文件中以实现插入。读取下一个事务记录(Jones),因为Jones在James之后,把James记录复制到新的主文件中,然后读取下一个旧的主文件记录,在旧文件记录缓冲区中得到Jones记录。现在事务记录关键字与旧的主文件记录关键字相同,正如从事务文件中看到的那样,先修改旧的主文件记录(Jones记录),然后把它删除,以便读取下一个事务记录(Smith)和下一个旧的主文件记录(也是Smith)。遗憾的是,事务类型是1(插入),但是在旧的主文件中已经有Smith记录了,因此,在输入数据中有错误,将Smith记录写入异常报告中。更确切地说,将Smith事务记录写入异常报告,而把Smith旧的主文件记录写入新的主文件。 总结上述例子中揭示出的处理过程,得到表3.2所示的处理规则。 根据表3.2所示的处理规则,可以对图3.10中的“处理”框求精,得图3.11所示的第2步求精结果。为减少连线(特别是为了减少交叉线),在这张流程图中用标有相同字母(例如,字母A)的圆代表应该连在一起的点。图中连到“输入”和“输出”方框的虚线表示把如何处理输入和输出的设计决定推迟到较晚的求精步骤中再做出,该图其余部分是实现“处理”的流程图,或者说是对处理事务的算法的初步求精结果

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档