13.湖北工业大学在职研究生《高级软件工程试题及部分答案》 下载本文

《高级软件工程》试题

(2014级工程硕士用)

一、单项选择题:请将正确答案的字母写在题号前面的括号内。(每小题3分,共30分)

( A )1、确定待开发软件的功能要求、性能要求和运行环境约束的阶段

是 。

A.需求分析 B.总体设计 C.详细设计 D.测试

( B )2、在结构化分析方法中,数据字典定义了数据流图中的各个元素

的具体含义。下列选项中,不需要在数据字典中定义的是 。 A、数据流分量 B、数据流 C、处理 D、源点和终点

( D )3、软件总体设计后可以得到 。

A、软件结构图 B、程序图 C、系统流程图 D、数据流图

( A )4、软件结构图中,模块框之间若有直线连接,表示它们之间存在

A、调用关系 B、组成关系 C、继承关系 D、嵌套关系

( C)5、下列工具中用于详细设计的是 。

A. 数据流图 B. 判定表 C. PAD图 D. 数据字典 ( B )6、程序的三种基本控制结构是

A、过程、子程序和分程序 B、顺序、选择和重复 C、递归、迭代和回溯 D、调用、返回和转移

( B )7、如果一个模块内部的各个组成部分执行的几个处理动作有这样

的特征:前一个处理动作所产生的输出数据是后一个处理动作的输入数据,称为 。

A、功能内聚 B、顺序内聚 C、通信内聚 D、过程内聚

( C )8、在软件测试中,下列说法正确的是

A、每个程序员最好测试自己编写的程序 B、测试用例只需选用合理的输入数据

C、测试用例应由输入数据和预期的输出数据两部分组成 D、测试时只需检查程序是否做了它应该做的事

( C )9、下列测试技术中,属白盒测试的是 。

A、边界值分析 B、等价类划分 C、逻辑覆盖 D、错误推测

( C )10、下面关于软件维护的说法,错误的是 。

A、软件维护是软件生命周期中占用时间最长的一个阶段 B、软件维护不只是修改软件中的错误 C、软件维护对于开发商来说是无利可图的

D、在编码过程中添加适当的注释,可以降低软件维护的难度

二、问答题:(每小题5分,共25分)

1、什么叫做软件工程?为什么要采用软件工程方法开发大型软件? 软件工程包括两方面内容:软件开发技术和软件项目管理。 软件开发技术包括软件开发方法学、软件工具和软件工程环境。

软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。

软件工程是六十年代末为了解决软件危机而出现的一门学科,一般来讲它包含开发技术与管理技术。而软件过程是随作软件工程的开展,特别是近年来系ISO900系列与CMM方法的实践而逐渐时髦的一个概念。它基于质量是做出来的,而非检查出来的现代质量理论。在规范化的软件生产中,离开了软件过程是不可思议的。

区别在于“工程”和“过程”的不同,软件工程是指将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件过程。工程着重应用,软件工程一定是软件过程的一个“产出”,一个个性化的实例!工程也是由过程组成的。

硬件的一些功能一目了然,形象化,就在那儿,更容易理解,比如盖房子的砖,赛车的轮子,数字电路中的接口电路,以某种方式连结在一块就好了

软件工程的结构开发思想,是在你对语言又很深理解的基础上,实现一些功能模块,使这些模块的使用者以某种方式把它们放在一块就安全高效的实现了所要求的功能

补充: 随着企业信息化的深入,对软件项目的需求日益复杂,并会产生频繁的变更, 传统的个人英雄主义的开发方式已经越来越不能适应发展的需要。从软件企业的发展战略来说,如何在技术日新月异和人员流动频繁的情况下,建立本公司的知识库及经验库,把企业中分散的隐性的财富,即个人的知识及经验,转变为企业的知识和经验,以便提高工作效率,缩短产品周期,加强企业的竞争力,具有至关重要的作用。采用科学的管理思想,辅之以先进的管理工具,已经成为企业未来发展必不可少的手段。 如果软件开发机构不能有效地控制和使用软件资源,则在面对风险时就可能导致软件开发活动出现各种问题。由于不能很好地管理软件过程,会使得一些好的开发方法和技术没有起到预期的作用。项目的成功往往是通过工作组的杰出努力来达到的,这种仅仅建立在依赖特定高素质开发人员基础上的成功,不能保证全组织的持续稳定的软件生产和质量的长期提高。因此,要降低软件开发过程的风险、保证软件产品质量,就必须加强管理,而 软件工程方法开发大型软件是企业过程改善和能力提升的基础。 梵谷的左耳 的感言: 谢谢你帮了我大忙!

2、简述瀑布模型各阶段的基本任务? 1)系统规划:确定系统的目标

2)系统分析:对问题域进行分析和理解

3)系统设计:概要设计,详细设计、数据库设计、编码实现 4)系统实施:软硬件的安装,用户培训,试行

5)系统维护:对系统故障维护、完善性,预防性维护。

3、简述软件测试的基本原则。

软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。

测试原则就是从用户和开发者的角度出发进行软件产品测试的,通过我们的测试,可以为用户提供放心的产品,并对优秀的产品进行认证。 为了达到上述的原则,那么需要注意以下几点:

1.应当把“尽早和不断的测试”作为开发者的座右铭 2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。 3.设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。 4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。

5.对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。 6.制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。 7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。

8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。

4、面向对象分析中的三种主要模型是什么?它们之间有什么关系? 三种主要模型是对象模型、功能模型、动态模型。他们有三个不同但又密切相关的角度模拟目标系统。对象模型是最基本、最核心、最重要的3个模型之间具有下述关系。

(1)与功能模型的关系:对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序。

(2)与对象模型的关系:功能模型展示了类上的操作和每个操作的变量,因此它也表示了类之间的“供应者一客户\关系;动态模型展示了每个对象的状态以及 它接收事件和改变状态时所执行的操作。

(3)与动态模型的关系: 功能模型展示了动态模型中未定义的不可分解

的动作和活动的定义,对象模型展示了是谁改变了状态和承受了操作。 5、什么是UML建模语言?它有哪些图形工具? 有用例图,类图,序列图,活动图,状态图,通信图,组合结构图,部署图等,

UML框图没有固定的顺序,一般分不同阶段用到不同的框图!

三、阅读伪码程序,(1)画出该伪码程序的程序流程图和程序图;(2)计算它的环形复杂度; START

WHILE 条件P DO 语句a

WHILE 条件Q DO 语句b

IF 条件R THEN

语句c ENDIF

ENDDO

ENDDO

语句e

STOP

(本题10分)

四、银行计算机储蓄系统工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印利息清单给储户。画出系统的数据流图,并用实体-联系图描绘系统中的数据对象。(本题15分)