2018 年山东省中国海洋大学软件工程考研真题
一、填空题(共 12 空,每空 2 分,共 24 分)
1、软件生命周期可以分为___________,________,需求分析,_________,_________,编码和
单元测试,________,软件维护八个阶段。
2、_________是进行软件结构设计的常用途径,但是如果已经有了详细的数据流图,也可以
使用________的设计方法。
3、数据流图中的箭头表示__________,圆或圆角矩形表示________,矩形表示。
4、软件实现包括___________和__________两个阶段。
二、判断题(共 10 题,每题 2 分,共 20 分。正确的打 T,错误的打 F)
1、模块化、信息隐藏、抽象和逐步求精的软件设计原则有助于得到高内聚、低耦合的软件
产品。
2、面向对象方法简化了软件的开发与维护,提高了软件的可重用性。
3、在没有数据流图的情况下,数据字典能够较好地描绘系统的逻辑模型。
4、总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务。
5、McCabe 方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称
为程序的环形复杂度。
6、测试和调试是软件测试阶段中的两个关系非常密切的过程,它们往往交替进行。
7、编程语言应该在软件总体设计时选择。
8、使用面向对象的方法开发软件,通常要建立三种形式的模型:对象模型、系统模型和功
能模型。
9、由于维护资源有限,目前预防性维护仅在全部维护活动中占很小的比例。
10、在进行总体设计时应该加强模块间的联系。
三、单项选择题(共 10 题,每题 2 分,共 20 分)
1、以下说法错误的是( )。
A 程序流程图是使用最广泛的描述过程设计的方法
B 盒图没有箭头,不允许随意转移控制
C PAD 图是一种由右往左展开的二维型结构
D 过程设计语言是用正文形式表示数据和处理过程的设计工具
2、黑盒测试是从( )观点出发的测试,白盒测试是从( )观点出发的测试。
A 开发人员、管理人员
B 用户、管理人员
C 用户、开发人员
D 开发人员、用户
3、软件测试可能发现软件中的( ),但不能证明软件( )。
A 所有错误、没有错误
B 错误、没有错误
C 逻辑错误、没有错误
D 设计错误、没有错误
4、软件测试是软件开发过程中重要和不可缺少的阶段,测试过程的多种环节最基础的是( )。
A 集成测试
B 单元测试
C 系统测试
D 验收测试
5、对象实现了数据和操作的结合,使数据和操作( )于对象的统一体中。
A 结合
B 隐藏
C 封装
D 抽象
6、软件危机的主要原因有( )。
①软件本身的特点
②用户使用不当
③软件产品质量靠不住
④软件不可维护
⑤软件开发的方法不正确
A③④
B①②④
C①⑤
D①③
7、软件生命周期模型有多种,下列选项中,( )不是软件生命周期模型。
A 螺旋模型
B 增量模型
C 功能模型
D 瀑布模型
8、瀑布模型的最主要缺点是( )。
A 用户参与开发
B 由文档驱动,用户难以正确认识软件产品
C 开发过程呈线性
D 用户下开发者难沟通
9、可行性研究实质上要进行一次( )的系统分析和设计的过程。
A 详细的
B 全面的
C 压缩简化的
D 彻底的
10、软件需求规格说明书的内容不应包括对( )的描述。
A 主要功能
B 算法的详细过程
C 用户界面及运行环境
D 软件的性能
四、简答(共 3 题,共 30 分)
1、决定软件可维护性的因素有哪些?(10 分)
2、一个程序能既正确又不可靠吗?解释自己的答案。(10 分)
3、为什么要进行需求分析?通常对软件系统有哪些需求?(10 分)
五、画出下面伪代码的 PAD 图和盒图(18 分)
六、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字
处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。
你打算采用哪种软件生命周期模型?为什么?(10 分)
七、银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系
统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款
日期、到期日期、利率及密码(可选)等信息,并印出存款存单给储户;如果是取款而且存款
时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并
印出利息清单给储户。
请用数据流图描绘本系统的功能。(12 分)
八、应用题(16 分)
为开发一个铁路自动售票系统,请完成以下面的数据流图和数据字典,即从供选择的答案中
选出 A、B、C、D 和 E 的内容,并给出 F、G 和 H 的内容。(每项 2 分,共 16 分)
(1)数据流图:
供选择的答案为车次表、接受、售票记录、购票请求、拒绝。
(2)数据字典:
购票请求= F
乘车日期= G
到站= 4{字母}20
字母=["A"··"Z"|"a"··"z"]
车次=”001”··”999"
拒绝=[无车次|无票]
无车次="no train"
无票="no ticket"
接受="to sale"
已收款="yes"
车次表={起站+止站+车次}
起站=止站=到站
售票记录={乘车日期十起站+止站+车次+座号}
座号=车厢号+座位号
车厢号=“01”….”20”
座位号= H
注:
①“01”··"20”表示数字范围从 01 到 20;
②乘车日期应给出年、月、日,例如,2017/06/21;
③假设每个车厢有 100 个座位