软件工程复习题
C. 继承性 D. 共享性
11、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和(C )。
A、详细计划 B、可行性分析
C、运行阶段 D、测试与排错
12、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大( C )。
A、详细设计阶段 B、概要设计阶段
C、需求分析阶段 D、测试和运行阶段
13、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A)。
A、需求分析阶段 B、详细设计阶段
C、概要设计阶段 D、可行性研究阶段
14、软件工程的出现主要是由于(C )。
A.程序设计方法学的影响 B.其它工程科学的影响
C. 软件危机的出现 D.计算机的发展
15、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C )
A、硬件环境 B、软件开发的环境
C、软件开发工具和软件开发的环境 D、开发人员的素质
16、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 (B )
A、相互排斥 B、相互补充
C、独立使用 D、交替使用
17、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C)
A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法
C、基于对象的面向对象的方法 D、基于数据的数据流开发方法
18、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B )
A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法
19、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B )
A、控制流 B、数据流 C、程序流 D、指令流
20、软件开发的结构化生命周期方法将软件生命周期划分成(A )
A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段
C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计
为了反映软件生存周期中各个阶段的工作是如何组织和衔接的,根据软件生产工程化的需要,生存周期的划分也有所不同,从而形成了不同的软件生存周期模型,也叫作软件开发模型。
瀑布模型、快速原型模型、螺旋模型、喷泉模型等。
软件需求分析的任务:给出软件系统的数据流程图与数据结构,构造一个完整的系统逻辑模型;提出详细的功能说明,确定设计限定条件,规定性能要求;密切与用户联系,使用户明确自己的任务,以便实现上述两个目标。
需求分析前一阶段:可行性分析,后一阶段:软件整体设计。
面向过程的思想:由过程、步骤、函数组成,以过程为核心;
面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
(可以根据自己的语言说明,能明白两者意思即可)
黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。测试用例额设计可以与软件实现同时进行。
白盒测试中测试人员必须了解程序的内部结构和过程,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不考虑程序的外在功能。
5、软件维护的目的和主要任务是什么?维护的类型有哪些?
答:软件维护是软件生命周期中最后一个、持续时间最长的阶段。
主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件,目的是提高软件的可靠性、可用性,延长软件的寿命。维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)
6、什么是耦合?模块的耦合包括哪些类型?
答:耦合是对一个软件结构内不同模块之间互连程度的度量。
模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合,标记耦合,无耦合/非直接耦合
7、什么是内聚?模块的内聚包括哪些类型?
答:内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展模块的内聚包括以下几种类型:低内聚偶然内聚,逻辑内聚,时间内聚中内聚过程内聚,通信内聚; 高内聚顺序内聚,功能内聚
8、如何选择程序设计语言的工程特性
答:1.系统用户的要求2.可以使用的编译程序
3.可以得到的软件工具4.工程规模5.程序员的知识
6.软件可移植性的要求7.软件的应用领域
9、什么是编码风格?为什么要强调编码风格?
答:编码风格包括以下内容:程序内部良好的文档(注释)、数据说明、语句构造、输入输出和效率保障等。
因为编码风格对软件的可读性、可维护性、可靠性、可用性很重要,所以要强调编码风格。
三、填空
1.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素表达了系统中各种元素之间的( 信息流动)情况。
2.成本效益分析的目的是从( 经济 )角度评价开发一个项目是否可行。
3.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和( 宽度优先策略 ) 。
4.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条 ( 在其他独立路径中未有过 )的边的路径。
5.汇编语言是面向( 机器 ) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
6.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件 )。
7.详细设计的任务是确定每个模块的内部特性,即模块的算法、( 使用的数据 )。
8.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题 )报告。
9.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向维护的技术;在维护阶段用来提高维护的效率和质量的( 维护支援 )技术。
10.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选择的语言有:FORTRAN语言、PASCAL语言、( C语言 )和PL/1语言。
四、判断
1.软件的开发与运行经常受到硬件的限制和制约。(对)
2.模块内的高内聚往往意味着模块间的松耦合。( 对)
3.Jackson图只能表达程序结构,不能表达数据结构。(错)
4.上述数据流图表示数据A和B同时输入变换成C。( 错)
5.软件的质量好坏主要由验收人员负责,其他开发人员不必关心。(错 )
6.判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。(对)
7.应该尽量使用机器语言编写代码,提高程序运行效率,而减少高级语言的使用。(错)
8.UML只能应用于软件系统模型的建立。(错)
9.容错就是每个程序采用两种不同的算法编写。(错)
10.软件测试的目的是为了无一遗漏的找出所有的错误。(错)
参考答案:
√√X X X√X X X X
五、分析与设计题
解答:没有固定关系,考生能够正确的画出这4种类,给出合理的继承与对应关系即可。
参考:完成学生、教师、部门行政人员、系统管理员 继承一个共同的父类“用户”为最优解。
可酌情给分。
六、系统设计题
情景:假设你报名参加了学校组织创业创新大赛,你的指导老师选定的课题是“星空校园”的创意,设计一个关于大学校园生活的全面领域功能的网站和APP项目。暂定选题学生跳蚤市场、 大学生兼职、 大学生论坛等各项,各个学生独立负责其中某个方向,请挑选其中任何一个子功能(不限于例子这三个),使用我们所学习的软件工程的知识完成该软件项目设计书(包括目录与一些简要的内容描述,1000字内)。
解答:开放性试题,完成一篇长篇软件项目设计书的规格,主要考察学生对整个体系知识的理解程度。最合理的写法是按照分别从可行性分析、需求分析、整体设计、详细设计、系统实现、测试等一连串流程来描述一个项目的设计,先书写目录,在分段简要描述个方面内容,可结合考生书写的规范性以及内容的合理性两方面给分、