您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程习题及解答3
第三章习题一、选择题1.软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及()。供选择的答案:A.总结B.阶段性报告C.需求分析评审D.以上答案都不正确2.各种需求方法都有它们共同适用的()。供选择的答案:A.说明方法B.描述方式C.准则D.基本原则3.软件需求分析的任务不应包括(A)。进行需求分析可使用多种工具,但(B)是不适用的。在需求分析中,分析员要从用户那里解决的最重要的问题是(C)。需求规格说明书的内容不应当包括(D)。该文档在软件开发中具有重要的作用,但其作用不应当包括(E)。供选择的答案:A.①问题分析②信息域分析③结构化程序设计④确定逻辑模型B.①数据流图②判定表③PAD图④数据词典C.①要让软件做什么②要给该软件提供哪些信息③要求软件工作效率如何④要让软件具有什么样的结构D.①对重要功能的描述②对算法的详细过程性描述③软件确认准则④软件的性能E.①软件设计的依据②用户和开发人员对软件要“做什么”的共同理解③软件验收的依据④软件可行性分析的依据4.原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A)系统。它从用户界面的开发入手,首先形成(B),用户(C),并就(D)提出意见,它是一种(E)型的设计过程。供选择的答案:A.①需求不确定性高的②需求确定的③管理信息④决策支持B.①用户界面使用手册②用户界面需求分析说明书③系统界面原型④完善的用户界面C.①改进用户界面的设计②阅读文档资料③模拟用户界面的运行④运行用户界面原型D.①同意什么和不同意什么②使用和不使用哪一种编程语言③程序的结构④执行速度是否满足要求E.①自外向内②自顶向下③自内向外④自底向上二、简答题1.用逐步求精方法解决下述的更新顺序主文件的问题。美国某杂志社需要一个软件,以更新存有该杂志订户姓名、地址等数据的顺序主文件。共有插入、修改和删除等3种类型的事务,分别对应于事务代码1、2和3。也就是说,事务类型如下:类型1:INSERT(插入一个新订户到主文件中)类型2:MODIFY(修改一个已有的订户记录)类型3:DELETE(删除一个已有的订户记录)事务是按订户名字的字母顺序排序的。如果对一个订户既有修改事务又有删除事务,则已对那个订户的事务排好次序了,以便使修改发生在删除之前。2.分析图3.1所示的层次图,确定每个模块的内聚类型。图3.1计算多地点日平均温度的程序3.分析图3.2,确定模块之间的耦合类型。图3.2一个程序的模块互连图在图3.2中已经给模块之间的接口编了号码,表3.1描述了模块间的接口。表3.1模块接口描述4.用面向数据流方法设计本书第2章第11题所述的工资支付系统的软件结构。5.用3种方法计算图3.3所示流图的环形复杂度。图3.3一个程序的流图6.下面列出的代码用重复执行的加法来计算两个正整数X和Y的乘积,请用Halstead方法预测程序的长度,并把预测出的长度与实际长度相比较。Z=0;WhileX0Z=Z+Y;X=X-1;End_while;Print(Z);7.图3.4是用程序流程图描述的程序算法,请把它改画为等价的盒图。图3.4程序流程图8.某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。要求:(1)用判定表表示手续费的计算方法;(2)用判定树表示手续费的计算方法;9.画出下列伪码程序的程序流程图和盒图。STARTIFPTHENWHILEqDOFENDDOELSEBLOCKgnENDBLOCKENDIFSTOP图3.5一个非结构化程序10.图3.5给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个与它等价的结构化程序。(3)在(2)题的设计中你使用附加的标志变量flag了吗?若没用,请再设计一个使用flag的程序;若用了,请再设计一个不用flag的程序。11.研究下面给出的伪码程序,要求:(1)画出它的程序流程图;(2)它是结构化的还是非结构化的?说明你的理由;(3)若是非结构化的,则(a)把它改造成仅用三种控制结构的结构化程序;(b)写出这个结构化设计的伪码;(c)用盒图表示这个结构化程序。(4)找出并改正程序逻辑中的错误。COMMENT:PROGRAMSEARCHESFORFIRSTNREFERENCESTOATOPICINANINFORMATIONRETRIEVALSYSTEMWITHTTOTALENTRIESINTPUTNI=OMATCH=0DOWHILEI≤TI=I+1IFWORD=KEYWORDTHENMATCH=MATCH+1STOREINBUFFERENDIFMATCH=NTHENGOTOOUTPUTENDENDIFN=0THENPRINT“NOMATCH”OUTPUT:ELSECALLSUBROUTINETOPRINTBUFFERINFORMATIONEND12.研究图3.6给出的程序流程图,要求:(1)写出它的伪码表示;(2)设计一个等价的结构化程序;(3)用另一种方法重做第(2)题。图3.6一个非结构化设计13.从伪码转变为程序流程图或从程序流程图转变为伪码是否是唯一的?请说明理由。14.用Ashcroft_Manna技术可以将非结构化的程序转换为结构化程序,图3.7是一个转换的例子。(1)你能否从这个例子总结出Ashcroft_Manna技术的一些基本方法?(2)进一步简化图3.7(b)给出的结构化设计。(a)非结构化设计(b)转化成的等价的结构化设计图3.7用Ashcroft_Manna技术的例子15.用Jackson图描绘下述的一列火车的构成:一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电气机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在车内所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。第三章习题解答一、选择题1.答案:C.分析:作为需求分析阶段工作的复查手段,在需求分析的最后一步,应该对功能的正确性、完整性和清晰性,以及其它需求给予评价。一般,评审的结果都包括了一些修改意见,待修改完成后再经评审通过,才可进入设计阶段。2.答案:D.分析:虽然各种分析方法都有独特的描述方法,但所有的分析方法还是有它们共同适用的基本原则。这些基本原则包括:§需要能够表达和理解问题的信息域和功能域;§要能以层次化的方式对问题进行分解和不断细化;§要分别给出系统的逻辑视图和物理视图。3.答案:A.③,B.③,C.①,D.②,E.④分析:软件需求分析的任务是通过与用户的合作,了解用户对待开发系统的要求;根据对用户要求的系统所在的信息域的调查、分析,确定系统的逻辑模型;并对求解的问题做适当的分解,使之适合于计算机求解。需求分析的结果是软件需求规格说明书。结构化程序设计是在详细设计和编码阶段所采用的技术,而不是需求分析阶段要采用的技术。在需求分析阶段,分析人员可以用数据流图描述系统的数据流的变换和流向,用数据词典定义在数据流图中出现的数据流、数据文件、加工或处理,用判定表表示复杂条件和动作组合的情况。但PAD图是在详细设计阶段使用的描述加工逻辑的工具,不适用于需求分析。此外,软件需求分析阶段只确定软件系统要“做什么”,完成对重要功能、性能、确认准则的描述,至于“怎么做”由后续的设计阶段完成,对算法的详细过程性描述也是在设计阶段给出。软件可行性分析应在需求分析之前,所以需求分析规格说明不能成为可行性分析的依据。4.答案:A.①B.③C.④D.①E.①分析:通常,原型是指模拟某种产品的原始模型。在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。使用原型的原型化方法特别适用于需求不确定性较高的软件系统的开发。它的基本思想是根据用户给出的基本需求,通过快速实现构造出一个小型的可执行的模型,满足用户的基本要求,这就是系统界面原型。让用户计算机上实际运行这个用户界面原型,在试用的过程中得到亲身感受和受到启发,做出反应和评价,提出同意什么和不同意什么。然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。它是一种自外向内型的设计过程。二、简答题1.答:解决任何问题之前都必须首先理解问题,对问题理解得越深入,解决起来也就越容易。为了获得对顺序主文件更新问题的直观、具体的认识,首先设想一个典型的主文件(称为旧的主文件)、一个事务文件和更新后得到的新的主文件及异常情况报告,如图3.8所示。图3.8典型地顺序主文件更新问题为了简单起见,在图3.8中忽略了主文件和事务文件中所包含的订户地址信息。从图3.8可以看出,更新顺序主文件系统有下述2个输入文件:1)旧的主文件(由包含订户姓名、地址信息的记录组成);2)事务文件。系统还有3个输出文件:1)新的主文件;2)异常报告;3)摘要和工作结束信息。图3.9描绘了设想的顺序主文件更新系统的概貌。图3.9顺序主文件更新系统概貌然后用逐步求精方法设计图3.9中关键的黑盒子“更新主文件”的实现算法。逐步求精方法实质上是“自顶向下”的设计方法,它通过不断分层细化解决问题的算法来设计软件。它不像“各个击破”技术那样把整个问题分解为若干个重要程序相同的子问题。在用逐步求精方法设计软件的过程中,软件的某个特定方面的重要性在一次又一次的求精中是变化的。最初,某个问题可能无关紧要,但后来同样的问题会变得相当重要。换句话说,可以把逐步求精方法看作是建立某个阶段内需要解决的各种问题的优先级的一种技术。它能确保每个问题都在恰当的时间得到解决,而且在任何时候都不需要同时解决7个以上问题。使用逐步求精方法设计软件的难点在于,在当前的求精步骤中确定哪些是必须处理的重要事项,哪些事项应该推迟到后面的求精步骤中去处理。作为对“更新主文件”的第一步求精,我们把它分解为3个处理框,分别称为“输入”、“处理”和“输出”,如图3.10所示。图3.10第一步求精在这个设计步骤中假设,当“处理”需要一个记录时,我们能够在那个时候输入正确的记录。同样,我们也能够在当时把正确的记录写入到正确的文件中。也就是说,在把逐步求精方法运用到解决更新主文件这个问题时,我们是把输入和输出这两方面的问题暂时分离出来,集中精力设计“处理”的算法。为了搞清楚怎样按照事务文件的指示,更新旧的主文件产生新的主文件,也就是说,为了设计出处理的算法,让我们再一次研究图3.8所示的例子。把第一个事务记录(Brown)的关键字与第一个旧的主文件记录(Abel)的关键字相比较。因为Brown按字母顺序排在Abel的后面,把Abel记录不加更改地写入新的主文件后,读取下一个旧的主文件记录(Brown)。现在,事务记录的关键字与旧的主文件记录的关键字相同,又因为事务的类型是3(删除),所以必须删除Brown记录,这可通过不把Brown记录复制到新的主文件中来实现。接下来读取下一个事务记录(Harris)和下一个旧的主文件记录(James),分别在各自的缓冲
本文标题:软件工程习题及解答3
链接地址:https://www.777doc.com/doc-4964098 .html