注意:因为学习平台题目是随机,选择题选项也是随机,一定注意答案对应的选项,同学们在本页按“Ctrl+F”快捷搜索题目中“关键字”就可以快速定位题目,还是不懂的话可以看这个:快速答题技巧
江苏开放大学软件工程期末练习题库简答题(含参考答案)
1、 什么叫软件?
参考答案:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合
2、 什么叫软件危机?软件危机包含哪两点?软件危机产生的原因是什么?
参考答案:软件危机是指在计算机软件开发与维护过程中所遇到的一系列严重问题。包括两点:
(1)如何开发软件,以满足对软件日益增长的需求;
(2)如何维护数量不断膨胀的已有软件。
软件开发和维护过程中存在的许多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。具体表现如下:
(1)软件是逻辑部件而不是物理部件。
(2)软件的规模越来越大,复杂性越来越大。
(3)轻视需求分析的重要性,轻视软件维护的错误观点和方法。
3、 什么叫软件工程?
参考答案:1968 年在第一届 NATO 会议上的早期定义: “建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。1993 年 IEEE 的定义: “①软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②进而研究①实现的途径” 。我们国家最近定义:软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
4、 两种软件工程方法学开发软件时要建立哪些模型?
参考答案:软件工程方法学包括:传统方法学和面向对象方法学。常用的开发模型有:
瀑布模型(需求稳定,而且可以预先指定)
原型模型(需求模糊或者随时间变化)
增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善)
螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析)
喷泉模型(使开发过程具有迭代性和无间隙性)
5、 软件过程模型有哪些?简述它们的特点。
参考答案:过程模型分为五大类:1.管理过程模型。2.瀑布模型(又称为生命周期模型)。3.增量过程模型:包括增量模型,,RAD 模型。4.烟花过程模型:包括原型开发模型,螺旋模型,协同开发模型。5.专用过程模型:包括机遇构建的开发模型,形式化方法模型,面向方面的软件开发模型。
6、 什么是软件生命周期?
参考答案:一个软件从定义,开发,使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长时期称为生命周期
7、 软件生命周期有哪几个阶段和步骤?
参考答案:三个阶段:定义、开发、维护八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护。
8、 计算机软件的开发经过哪三个大阶段?
参考答案:三个阶段:定义、开发、维护
9、 软件开发的各阶段的任务是什么?
参考答案:定义阶段:问题定义–任务:关于规模和目标的报告书;可行性研究–任务:系统的高层逻辑模型:数据流图,成本
效益分析;需求分析–任务:系统的逻辑模型:数据流图,数据字典,算法描述。
开发阶段:总体设计–任务:系统流程图,成本/效益分析,推荐的系统结构:层次图/结构图;详细设计–任务:HIPO
图或 PDL 图;编码和单元测试–任务:源程序清单,单元测试方案和结果;综合测试–任务:综合测试方案,结果集成
测试,验收测试,完整一致的软件配置。维护阶段:软件维护–任务:维护记录以及改正性维护,适应性维护,完整性维护和预防性维护
10、软件设计分哪两个阶段?总体设计的两个阶段分别是什么?
参考答案:分为总体设计和详细设计两个阶段。
总体设计包括系统设计(划分出组成系统的程序、文件、数据库、人工过程和文档等物理元素)和结构设计(确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系,不涉及模块内部
算法流程)
12、软件与硬件的区别是什么?
参考答案:软件是一种逻辑部件,而不是具体的物理部件。软件在开发、生产、使用、维护等方面与硬 件相比有明显差异。软件是开发,硬件是制造 软件是自定的,硬件是组装的 软件不会磨损,硬件存在机械磨损问题
13、软件需求分析的任务是什么?
参考答案:需求分析的任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、 具体的要求。一般说来,需求分析的任务包括下述几方面:
1.确定对系统的综合要求 (主要有: 功能需求、 性能需求、 运行需求、 将来可能提出的需求。 )
2.分析系统的数据要求
3.导出系统的逻辑模型:数据流图、实体-联系图、状态转换图、数据字典、算法流程等
4.修正系统开发计划
14、瀑布模型与原型模型分别适用于开发哪些软件?
参考答案:瀑布模型与原型模型分别适用于开发哪些软件瀑布模型适合于需求稳定,而且可以预先指定的大型系统工程项目。原型模型适合于需求模糊或者随时间变化的中小型项目
15、数据流图的作用是什么?如何画
参考答案:数据流图简称 DFD(Data Flow Diagram)图,它是以特定的图形符号描述系统逻辑模型的工 数据流图 具; 它从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的过程; 它是开发人员与用户之间交流信息的通信工具;它也是系统分析与系统设计的工具。数据流图画法总结
1.先找出数据源点和汇点。它们是外部实体,由它们确定系统与外界的接口。
2.找出外部实体的输出数据流与输入数据流。画出顶层数据流图。
3.从顶层加工出发,逐步细化,画出所需子图。
4.分析系统的主要处理功能,把每一个处理功能作为一个加工,并且确定它们之间的数据流 入、流出关系,画出第一层数据流图。
5. 对流图中的每个加工进行细化,画出所需的子图,直到加工不需再分解为止。
6.按照前面给出原则检查和修改每一层数据流图和子图
16、什么叫数据字典?如何写数据字典?
参考答案:数据字典是描述数据流图中数据的信息的集合(描述内容包括:数据流图、状态转换图、 数据字典 E-R 图中的数据信息(数据流、数据存储、外部实体) 、控制信息(事件)等,不包括处理 )。
如何写?数据元素的组合方式
顺序:即以确定的次序连接两个或多个分量。例:A+B
选择:即从两个或多个可能的元素中选取一个。例:[A|B]
重复:即把指定的分量重复零次或多次。例:1{A}5
可选:即一个分量是可有可无的(重复零次或一次)
17、软件设计的原则有哪些?
参考答案:模块化,抽象化与逐步求精,信息隐藏与局部化,模块独立
18、耦合与内聚分别有哪些?如何定义?如何区分?
参考答案:
耦合衡量不同模块彼此间互相依赖(连接)的紧密程度
内聚衡量一个模块内部各个元素彼此结合的紧密程度
耦合的种类:
数据耦合:如果两个模块间的通讯信息是若干参数,其中每一个参数都是一个数据元素,称 数据耦合 这种耦合为数据耦合。这是模块之间影响最小的耦合关系。
标记耦合:当把整个数据结构作为参数传递而被调用模块只需要使用其中一部分数据元素 标记耦合时,这种情况称为标记耦合。
控制耦合: 那么 A 和 B 之间 控制耦合如果模块 A 向模块 B 所传递的信息控制了模块 B 的内部逻辑,的耦合称为控制耦合。
公共耦合:如果两个或多个模块都和同一个公共数据域有关,则称为公共耦合。 公共耦合 公共耦合是一种不良的耦合关系,它给模块的维护和修改带来困难。 如果两个模块共享的数据很多,都通过参数传递很不方便时,可以利用公
共耦合。
内容耦合:如果一个模块和另一个模块的内部属性(即运行程序和内部数据)有关,则称为 内容耦合。
功能内聚:如果一个模块内部的各组成部分的处理动作全都为执行同一个功能而存在, 并且 功能内聚: 只执行一个功能,则称为功能内聚。判断一个模块是不是功能内聚,只要看这个模块是“做什么” 是完成一个具体的任务,还是完成多任务。
顺序内聚:如果一个模块内部的各个组成部分执行的几个处理动作有这样的特征: 前一个处 顺序内聚:理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序内聚。 顺序内聚维护起来不如功能内聚方便, 要修改模块中的一个功能, 会影响到同一个模块中的 其他功能。
通讯内聚: 如果一个模块内各组成部分的处理动作都使用相同的输入数据或产生相同的输 通讯内聚 出数据,称为通讯内聚。
过程内聚:如果一个模块内部的各个组成部分的处理动作各不相同,彼此也没有联系,但他 们都受同一个控制流支配,决定他们的执行次序,称为过程内聚。
暂时内聚(时间内聚):如果一个模块内的各组成部分的处理动作和时间有关,则称为暂时 : 内聚。暂时内聚模块的处理动作必须在特定的时间内完成。—–指在一个特定的时间范围内 完成,但完成次序不重要。例如:程序设计中的模块的初始化。
逻辑内聚:如果一个模块内部的各组成部分的处理动作在逻辑上相似, 但功能都彼此不同或 逻辑内聚: 无关,则称为逻辑内聚。一个逻辑内聚模块往往包括若干个逻辑相似的动作,使用时可以选 用一个或几个功能。例如:把编辑各种输入数据的功能放在一个模块中。
机械内聚(偶然内聚): 如果一个模块的内部各组成部分的处理动作彼此没有任何联系,则 : 称为机械内聚
19、详细设计阶段用到了哪些图形工具?
参考答案:程序流程图(PFD)
盒图(N-S 图)
问题分析图(PAD)
判定表/判定树 (其他非图形工具有过程设计语言(PDL)
20、软件工程的启发式规则有哪些?
参考答案:A.当模块过大时就应该分解它。 一般按功能分解到成为一个小的功能单一的模块为止。 一般 一个模块内包含的语句在 30-50 条左右较好(指高级语言) 。分解后不应该降低模块的独立 性。
B. 深度、宽度、扇出和扇入都应适当。好的设计结构通常是顶层扇出比较高,中层扇出比 较少,底层扇入到公共的实用模块中去(底层模块有高扇入) 。模块的独立性是贯穿始终的 标准,不能为了追求其它目标而违背独立性标准。
C.对于任何一个内部存在判断调用的模块, 它的判断作用的范围应该是其控制范围的一个子 集。 存在判断调用的模块, 所在层次不要与那些属于判断作用范围的模块所在的层次相隔太 远—-越近越好。
D. 力争降低模块接口的复杂程度。模块接口复杂是软件发生错误的一个主要原因。应该仔 细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来 传递的数据之间没有联系) ,是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。 E.设计单入口单出口的模块: 防止出现内容耦合—多入口 (多种处理功能) 意味着内容耦合。F.模块功能应该可以预测—–模块是黑合子,输入相同则输出相同,其内部数据结构和接口 受到限制。模块的功能应该能够预测,但也要防止模块功能过分局限。过分局限将导致模块 灵活性太差,会出现使用现场的修改。
21、模块的作用域与控制域分别指什么?
参考答案:模块的控制域:本身及其所有下级模块(包括直接和间接下级模块) 。
模块的作用域:受该模块内一个判定影响的所有模块的集合
22、模块的扇入、扇出、深度、宽度分别是什么意思?
参考答案:深度表示软件结构中控制的层数—-粗略的标志一个系统的大小和复杂程度。
宽度是软件结构同一层次上的模块总数的最大值—-宽度越大系统越复杂。
模块的扇出指一个模块拥有的直属下级模块的个数,一般扇出数控制在 7 以内,平均为 3 模块的扇出或 4。模块的扇入是指一个模块的直接上级模块的个数。
23、软件测试的目的是什么?
参考答案:软件测试是为了发现错误而执行程序的过程;测试是程序的执行过程,目的在于发现错误;软件测试中需要数据,即为测试而精心设计的测试用例,利用测试用例去运行程序,帮助发现程序错误;一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。软件测试绝对不是要证明程序的正确性, 也证明不了程序的正确性.
24、单元测试有那些内容?
参考答案:将每一个模块作为一个单独的测试单元,保证每个模块作为一个单元能正确运行。单元测试主要针对模块的以下五个基本特征进行测试:1.模块接口 2.局部数据结构 3.重要的执行路径 4.错误处理 5.边界条件
25、什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?
参考答案:将模块组合起来成为一个完整的系统对其进行测试叫做集成测试。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。渐增式组装模块有自顶向下和自底向上两种组装方式。
26、什么是确认测试?该阶段有那些工作?
参考答案:按照需求规格说明书中的确定指标对系统进行功能与性能的测试。该阶段进行明确测试(对照需求规格说明书用黑盒法进行测试),软件配置测试(文档的完整性,发现遗漏错误及时补充和修改)
27、什么叫流图?如何画出流图?流图的环形复杂度如何计算?
参考答案:流图是抽象化的程序流图,突出表现控制流.符号○为流图的一个结点,表示一个或多个无分支语句。箭头为边,表示控制流的方向。在 分支结构中,分支的汇聚处应有一个汇聚结点. 每一条边必须终止于一个结点。如果判断中 的条件表达式是由一个或多个逻辑运算符 (OR,AND, NAND, NOR) 连接的复合条件 表达式,则需要改为一系列只有单个条件的嵌套的判断。根据程序内单条件分支数或循环个数来度量环形复杂度即程序的复杂度. 环形复杂度即程序的复杂度
根据程序内单条件分支数或循环个数来度量环形复杂度即程序的复杂度
V(G)=流图区域数
V(G)=边数-结点数+2
V(G)=单条件判定数+1
28、白盒测试与黑盒测试分别有哪些测试方法?如何对具体问题测试?
白盒测试对程序模块的所有的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假” 白盒测试的两种情况都至少测试一次;白盒测试也叫逻辑覆盖法包括:语句覆盖,判定覆盖,条件覆盖
黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据, 来检查程序是否都能产生正确的输出。黑盒测试有等价类法和边界值分析法
29、软件测试的步骤有哪些?每个测试阶段的测试依据是什么?分别有谁来测试?
参考答案:步骤 测试内容 时间
单元测试:将每一个模块作为一个单独的测试单元,保证每个模块作为一个单元能正确运行。 (编码测试阶段)
子系测试系统:将经过单元测试的模块放在一起形成一个子系统来测试,以测试模块间的接口正确性作为主要任务。
(集中测试阶段)
系统测试:将经过测试的子系统装配成一个完整的系统来测试,检验系统是否确实能实现需求规格说明书中的功能,以及系统的动态特征是否符合预定要求。 阶段 系统测试是指整个计算机系统(包括软硬件)的测试,可与系统的安装和验收相结合进行。(集中测试阶段)
验收测试:在用户的参与下,把软件系统作为单一的实体进行测试,使软件系统能满足用户的需要。测试内容与系统测
试基本相同。 (验收阶段)
平行测试: 新旧两个系统同时运行进行比较,避免风险的同时给用户对新系统一段熟悉的时间(运行阶段)
30、什么叫维护?维护的类型有哪些?
参考答案:软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 软件维护类型有:
1、改正性维护:对程序使用期间发现的程序错误进行诊断和改正的过程;占维护工作量 17-21%。
2、适应性维护:配合变化了的环境进行修改软件的活动;占维护工作量 18-25%。
3、完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的 改进工作;占维护工作量50-66%。
4、预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作;占维护工作量 4% 左右
31、UML 中活动图、状态图、顺序图都分别描述什么?
活动图强调的是从活动到活动的控制流, 是一种表述过程基理、 业务过程以及工作流的技术。 活动图 它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模
状态机图常用来描述业务或软件系统中的对象在外部事件的作用下, 对象的状态从一种状态 状态机图 到另一种状态的控制流。
顺序图描述的是对象之间的消息发送关系,而不是类之间的关系
32、UML 中的事物有哪些?
结构事物:UML 中的名词,它是模型的静态部分,描述概念或物理元素。
行为事物:UML 中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。
分组事物:UML 中的容器,用来组织模型,使模型更加的结构化。
注释事务:UML 中的解释部分,和代码中的注释语句一样,是用来描述模型的
33、面向对象的基本概念类、对象、封装、继承等定义是什么?
类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
对象(Object)是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组 属性和对这组属性进行操作的一组服务组成,是类的一个实例
封装(Encapsulation)是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
继承性:如果一个类 A 继承自另一个类 B,就把这个 A 称为”B 的子类”,而把 B 称为”A 的 父类”。继承使得相似对象可以共享程序代码和数据结构,大大减少程序中的冗余信息;继 承可以把已有的一般性的类具体化来提高软件的可重用性。
多态性(Polymorphism)是指在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为
34、用例图的作用是什么?
参考答案:用例图是外部参与者所能观察到的系统功能的模型图。 由一组用例、 参与者及它们之间的关 系组成。主要用于对系统、子系统或类的功能行为进行建模。参与者是与系统交互的外部实体,可以是人,也可以是其它系统。用例是从用户的角度描述系统的行为(功能)它将系 统的功能描述成一系列事件,这些事件最终对参与者产生可观察结果
未经授权,禁止转载,发布者:形考达人,出处:https://www.xingkaowang.com/11181.html
本站不对内容的完整性、权威性及其观点立场正确性做任何保证或承诺!内容仅供研究参考,付费前请自行鉴别。
免费答案:形考作业所有题目均出自课程讲义中,可自行学习寻找题目答案,预祝大家上岸成功