1、第 1 页 共 8 页南昌大学 _学年第二学期期末考试试卷 试卷编号: ( )卷课程编号: H61030012 课程名称: 软件工程 考试形式: 闭卷 适用班级: _ 姓名: 学号: 班级: 学院: 信息工程学院 专业: 计算机科学与技术 考试日期: _年 月 日 题号 一 二 三 四 五 六 七 八 九 十 总分题分 20 20 20 20 20 100累分人 签名得分考生注意事项:1、本试卷共 7 页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。一、 单项选择题(每小题 2 分,共 20 分) 得分 评阅人1、产生软件危机
2、的原因主要与两个方面的问题有关: ( A )A) 软件产品本身的特点,而且在软件的开发和维护过程中用的方法不正确。B) 软件在计算机中很难识别,存在磁盘中也看不到。C) 软件设计对人的智商要求很高,也要求很高的资金投入。D) 软件很难理解,硬件也很复杂。2、在设计测试用例时, ( A )是用得最多的一种黑盒测试方法。A) 等价类划分 B) 边界值分析 C) 因果图 D) 判定表3、通常发现系统需求说明书中的错误的测试步骤是 ( C )A) 模块测试 B) 子系统测试C) 验收测试第 2 页 共 8 页D) 平行运行 第 3 页 共 8 页4、通过( B )可以完成数据流图的细化。A) 结构分解
3、 B) 功能分解 C) 数据分解 D) 系统分解5、面向数据结构的设计方法(Jackson 方法)是进行( B )的形式化的方法。A) 系统设计 B) 详细设计 C) 软件设计 D) 编码6、模块( C ) ,则说明模块的独立性越强。A) 耦合越强 B) 扇入数越高 C) 耦合越弱 D) 扇入数越低7、在整个软件维护阶段所花费的全部工作中, ( C )所占比例最大。A) 改正性维护 B) 适应性维护 C)完善性维护 D)预防性维护8、下列工具中,在软件详细设计过程中不建议采用的是 ( D )A) 判定表B) IPO 图C) NS 图D) DFD 图9、指出 PDL 是下列哪种语言( A ) 。
4、A) 伪码B) 高级程序设计语言 C) 中级程序设计语言 D) 低级程序设计语言10、ER 模型中的基本成分不包含 ( D )A) 实体B) 联系C) 属性D) 处理 第 4 页 共 8 页二、 填空题(每空 1 分,共 20 分)得分 评阅人1、结构化设计方法是面向( 数据流 )的设计。2、内聚性有七种类型,最强的是( 功能内聚 ) ,最弱的是( 偶然内聚 ) 。3、 (可行性研究 )的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。4、总体设计的第二项任务是设计软件的结构,即确定(模块以及模块之间的关系 ) 。5、数据流图有四种成分:( 数据流 ) 、 (
5、 数据源点或终点 ) 、( 数据存储 ) 、 ( 处理或加工 ) 。6、程序的三种基本控制结构是( 顺序 ) 、 ( 选择 ) 、 ( 循环 ) 。7、模块独立性可以由(内聚度 ) 、 ( 耦合度 )两个定性标准度量。8、对于变换型的数据流图,按照软件设计思想,要将一个大型复杂的软件进行分解,要确定数据流图的 ( 中心加工 ) 、逻辑输入、逻辑输出。9、用面向对象方法开发软件,通常需要建立三种形式的模型,它们分别是(对象模型 ) 、 ( 动态模型 ) 、 ( 功能模型 ) 。10、在对象模型中,类与类之间的关系有四种:( 关联 ) 、泛化(继承) 、 ( 依赖 )和细化。三、简答题(每题 5
6、分,共 20 分)得分 评阅人1、什么是软件工程?回答要点:软件工程是指导计算机软件开发和维护的工程学科。(1)它采用工程的概念、原理、技术和方法来开发和维护软件;(2)它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起来;(3)它强调使用生存周期方法学和结构分析和结构技术;经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术到管理两个方面做了大量的努力,逐渐形成了”软件工程学”这一新的学科。第 5 页 共 8 页2、系统流程图与数据流图有什么区别?回答要点:系统流程图描述系统物理模型的工具,数据流图描述系统逻辑模型的工具。系统流程图从系统功能的角度抽象的描述系统的各个部
7、分及其相互之间信息流动的情况。数据流图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。3、什么是模块?模块具有哪几个特征?总体设计主要考虑什么特征?回答要点:模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。概要设计主要考虑输入、输出(参数传递)和功能两个特性。4、详细设计的主要任务?回答要点:编写软件的“详细设计说明书”.软件人员要完成的工作:(1)为每一个模块确定采用的算法, 选择某种适当的工具表达算法的过程,写出模块的详细过程描述。(2)确定每一模块使用的数
8、据结构。(3)确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节。(4)为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试。5、说明软件测试在软件开发阶段的地位和作用。比较测试和调试的异同点。回答要点:1、保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审。2、测试是为了发现错误、调试是为了改正错误。第 6 页 共 8 页四、程序设计题(每小题 10 分,共 20 分)得分 评阅人1、将如下的多出口循环结构改为单出口程序结构。参考答案:exit1:=false; exit2:
9、=false;WHILE C1 AND (NOT exit1) AND (NOT exit2) DOBEGINIF C2 THEN exit1:=true; IF C3 THEN exit2:=true; END ;IF (exit1) THEN GOTO 20;IF (exit2) THEN GOTO 30;20:code for C2 exitGOTO 40;30:code for C3 exit40:第 7 页 共 8 页2、请用判定表画出以下问题的行为逻辑。人们往往根据天气情况决定出门时的行装;天气可能下雨,也可能不下雨;天气可能变冷,也可能不变冷。如果天气要下雨,出门时带上雨伞;如果
10、天气变冷,出门时要穿上大衣。参考答案:五、应用题(每小题 10 分,共 20 分)得分 评阅人1、用 SA 方法画出下列问题的顶层和 0 层数据流图。(10 分)某运动会管理系统接受来自运动员的报名单、裁判的比赛项目及项目成绩,产生运动员号码单发送给运动员,项目参加者发送给裁判,单项名次、团体名次发送给发布台。该系统有两部分功能:(1)登记报名单:接受报名单、比赛项目,产生运动员号码单、项目参加者,形成运动员名单及团体成绩表两种数据存储。 (2)统计成绩:接受项目成绩,查询运动员名单,产生单项名次,填写团体成绩,最后产生团体。参考答案:第 8 页 共 8 页2、如图显示某程序的逻辑结构。试为它
11、设计足够的测试用例,分别实现对程序的判定覆盖、条件覆盖和条件组合覆盖。T F参考答案:设计测试方案覆盖种类 需满足的条件 测试数据 期望结果A1,B=0 A=2,B=0 执行 S1判定覆盖 A1,B0 或A1,B=0 或A1,B0A=2,B=1 或A=1,B=0 或A=1,B=1执行 S2以下四种情况各出现一次A1 B=0 A=2,B=0 执行 S1条件覆盖A1 B0 A=1,B=1 执行 S2A1,B=0 A=2,B=0 执行 S1A1,B0 A=2,B=1 执行 S2A1,B=0 A=1,B=0 执行 S2条件组合覆盖A1,B0 A=1,B=1 执行 S24、请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?A0 and B=0S1 S2