软件开发和运行维护基础知识
发布时间:2020-04-26 10:51:27
发布时间:2020-04-26 10:51:27
单选题
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。渐增模型是在快速开发一个 (1) 的基础上,逐步演化成最终的软件。螺旋模型综合了 (2) 的优点,并增加了 (3) 。喷泉模型描述的是面向 (4) 的开发过程,反映了该开发过程的 (5) 特征。
第1题:
A.简单模块
B.执行环境
C.原型
D.程序界面
参考答案:C
第2题:
A.瀑布模型和喷泉模型
B.瀑布模型和演化模型
C.演化模型和喷泉模型
D.原型和喷泉模型
参考答案:B
第3题:
A.风险分析
B.进度控制
C.版本控制
D.质量控制
参考答案:A
第4题:
A.数据流
B.数据结构
C.对象
D.构件(Component)
参考答案:C
第5题:
A.迭代和有间隙
B.无迭代和无间隙
C.无迭代和有间隙
D.迭代和无间隙
参考答案:D
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。典型的开发模型有:①瀑布模型(waterfall model);②渐增模型/演化/迭代(incremental model);③原型模型(prototype model);④螺旋模型(spiral model);⑤喷泉模型(fountain model);⑥智能模型(intelligent model);⑦混合模型(hybrid model)。 演化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。螺旋模型基本的做法是在“瀑布模型”的每一个开发阶段之前,引入非常严格的风险识别、风险分析和风险控制。直到采取了消除风险的措施之后,才开始计划下一阶段的开发工作。喷泉模型(fountain model,(面向对象的生存期模型,OO模型))与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
第6题:
下列关于对象消息的观点,不正确的是 (6) 。
A.键盘、鼠标等设备有变化时,就会产生消息
B.应用程序对象能向操作系统发送消息
C.应用程序对象之间不可以相互发送消息
D.发送与接收消息的对象通信机制与传统的子程序调用机制不同
参考答案:C
发送、接收消息是对象间通信的手段,对象之间可以互相发送消息。
JACKSON方法是在软件开发过程中常用的方法,使用JACKSON方法时可以得到 (7) ,使用JACKSON方法时可以实现 (8) 。
第7题:
A.程序流程图
B.具体的语言程序
C.模块结构图及模块的功能说明书
D.分层数据流图
参考答案:A
第8题:
A.从数据结构导出程序结构
B.从数据流图导出初始结构图
C.从模块结构导出数据结构
D.从模块结构导出程序结构
参考答案:A
Jackson方法由M.Jackson提出的,Jackson方法的基本思想和SD方法是一致的,但它不是面向数据流,而是面向数据结构的,在数据结构基础上建立程序结构。该方法特别使用于设计企事业管理一类的规模适中的数据处理系统。应用该方法的基本步骤依次是建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构中适应的模块。
黑盒测试中常用的等价类划分方法是先把程序的 (9) 域划分成若干区间,然后从每个区间中选取少数代表性数据当作测试用例。在使用等价类划分方法时,通常会涉及到两种等价类: (10) 。因果图方法是根据 (11) 之间的因果关系来设计测试用例的。在实际应用中,对修改后的程序重新测试称为 (12) 。
第9题:
A.判断条件
B.输出
C.结构
D.输入
参考答案:D
第10题:
A.有效等价类和无效等价类
B.输入等价类和输出等价类
C.判断等价类和测试等价类
D.数据等价类和结构等价类
参考答案:A
第11题:
A.主程序与子程序
B.设计与实现
C.条件与结果
D.输入与输出
参考答案:D
第12题:
A.强度测试
B.验收测试
C.回归测试
D.系统测试
参考答案:C
黑盒测试中常用的等价类划分方法是先把程序的输入域划分成若干区间,然后从每个区间中选取少数代表性数据当作测试用例(由于数量太大,穷举测试一般情况下不可能实现)。在使用等价类划分方法时,通常会涉及到两种等价类:有效等价类和无效等价类。顾名思义,有效等价类就是对程序的规格说明是有意义的合理的输入数据集;无效等价类就是对程序规格说明书不合理或无效的输入数据集。我们在设计测试用例时,要兼顾这两种情况。同时要注意一个测试用例只能覆盖一个无效等价类。这样便于错误定位,防止一个错误表征掩盖了另一个错误。因果图方法含义:仅仅将值输入,是不断验证单个数据的情况。有时候,我们需要将各个数据联系在一起考虑,从而引申出多种组合,这时候有些单个数据完好的功能就可能出现错误。回归测试是指对修改后的程序重新测试。
一个良好的程序不仅要正确和可靠,而且通常更注重源程序的 (13) 。此外,还应养成良好的编程风格,例如,选择标识符的名字时应考虑 (14) ;在书写语句时应考虑 (15) ;在书写功能性注解时应考虑 (16) 。源程序中应包含一些内部文档,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注解和 (17) 。
第13题:
A.易理解性、易测试性和易修改性
B.易使用性、易维护性和易移植性
C.易使用性、易维护性和效率
D.易理解性、安全性和效率
参考答案:B
第14题:
A.多个变量共用一个名字,以减少变量名的数目
B.名字长度越短越好,以减少源程序的输入量
C.选择含义明确的名字,以正确提示所代表的实体
D.尽量用关键字作名字,以使名字标准化
参考答案:C
第15题:
A.尽量消除表达式中的括号,以简化表达式
B.尽量使用标准文本以外的有特殊功效的语句,以提高程序的功效
C.把多个短的语句写在同一行中,以减少源程序的行数
D.避免使用测试条件“非”,以提高程序的可读性
参考答案:D
第16题:
A.仅为整个程序作注释
B.仅为每个模块作注释
C.为程序段作注释
D.为每个语句作注释
参考答案:C
第17题:
A.程序的视觉组织
B.设计良好的输出报表
C.检查输入数据的有效性
D.尽量不用或少用GOTO语句
参考答案:A
编制一个好的程序首先要确保它的正确性和可靠性,通常更注重源程序的易使用性、易维护性和易移植性。良好的编程风格包括:选择标识符的名字时应考虑选择含义明确的名字,以正确提示所代表的实体;在书写语句时应考虑避免使用测试条件“非”,以提高程序的可读性;在书写功能性注解时应考虑为程序段作注解。源程序的内部文档包括合适的标识符、注解和程序的视觉组织。
进行软件测试是为了 (18) ,通常可分为白盒测试和黑盒测试。白盒测试是根据程序的内部逻辑来设计测试用例,黑盒测试是根据软件的 (19) 来设计测试用例。常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中, (20) 经常与其它方法结合起来使用。软件测试的步骤主要有单元测试、集成测试和确认测试。如果一个软件作为产品被许多客户使用的话,在确认测试时通常要经过。测试和β测试的过程。其中,β测试是 (21) 进行的一种测试。在软件设计和编码时,采取 (22) 等措施都有利于提高软件的可测试性。
第18题:
A.发现程序中的所有错误
B.尽可能多地发现程序中的错误
C.证明程序是正确的
D.证明程序做了应做的事
参考答案:B
第19题:
A.编码
B.性能
C.规格说明
D.内部数据
参考答案:C
第20题:
A.边值分析
B.因果图
C.错误猜测
D.等价类划分
参考答案:A
第21题:
A.在开发者现场由开发方的非本项目开发人员
B.在开发者现场由用户使用
C.在用户现场由开发方的非本项目开发人员
D.在用户现场由用户使用
参考答案:D
第22题:
A.不使用标准文本以外的语句,书写详细正确的文档
B.不使用标准文本以外的语句,采用良好的程序结构
C.书写详细正确的文档,信息隐蔽
D.书写详细正确的文档,采用良好的程序结构
参考答案:D
软件测试的目的是尽可能多地发现程序中的错误,可分为白盒测试和黑盒测试。白盒测试是根据程序的内部逻辑来设计测试用例,黑盒测试是根据软件的规格说明来设计测试用例。常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中,边值分析经常与其它方法结合起来使用。α测试是在开发者现场由开发方的非本项目开发人员进行的一种测试;β测试是在用户现场由用户使用进行的一种测试。在软件设计和编码时,采取书写详细正确的文档,采用良好的程序结构等措施都有利于提高软件的可测试性。
面向对象程序设计语言不同于其它语言的主要特点是 (23) 。衡量一个面向对象程序设计语言成熟与否的一个重要标志是是否建立了丰富的 (24) 。一种在类及子类之间自动地共享数据和方法的机制是 (25) 。
第23题:
参考答案:
多态性 D.消息传递 C.继承性 D.静态联编
详细解答:
第24题:
A.函数库
B.类库
C.类型库
D.方法库
参考答案:B
第25题:
A.调用
B.引用
C.消息传递
D.继承
参考答案:D
面向对象程序设计语言相对于面向过程的程序设计语言有了很大的改进,它的主要特点是继承性、封装性、多态性,但继承性最具有特色,也是与传统方法最不同的一个,继承实际上是存在于面向对象程序中两个类之间的一种关系。当一个类拥有另一个类的所有数据和操作,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的类成为子类。是否建立了丰富的类库是衡量一个面向对象程序设计语言成熟与否的一个重要标志。
当程序中存在 (26) 时,程序运行容易陷于死循环。C语言规定,函数定义及函数调用应该遵循的原则是 (27) 。求解同一个问题,采用递归方式编写的程序相对于递推方式的程序执行效率较低的原因是 (28) 。
第26题:
A.语法错误
B.静态的语义错误
C.词法错误
D.动态的语义错误
参考答案:D
第27题:
A.不可以进行函数的嵌套定义,可以进行函数的嵌套调用
B.可以进行函数的嵌套定义,不可以进行函数的嵌套调用
C.既可以进行函数的嵌套定义,也可以进行函数的嵌套调用
D.既不能进行函数的嵌套定义,也不能进行函数的嵌套调用
参考答案:A
第28题:
A.递归程序经编译后形成较长目标代码,所以需要较多的运行时间
B.递归程序执行时多次复制同一段目标代码占用了较多的时间
C.递归程序执行时一系列的函数调用及返回占用了较多的时间
D.递归程序执行过程中重复存取相同的数据占用了较多的时间
参考答案:C
编译分析过程能够分析出语法错误和词法错误。一般情况下静态的语义错误不会造成死循环,造成程序的死循环通常是动态的语义错误。C语言允许嵌套调用,即允许在一个函数中调用另一个函数,而且允许在第二个函数中进一步调用其他函数;但是它不允许不允许嵌套定义,即在一个函数定义中定义其他函数。递归程序因为在执行过程中引起一系列的函数调用和返回,需要较多的时间开销以及空间开销,因此与实现同功能的非递归函数相比具有较低的执行效率。
第29题:
测试一般可分为白盒测试和黑盒测试,其中白盒测试方法一般适合用于 (29) 测试。
A.确认
B.系统
C.集成
D.单元
参考答案:D
黑盒测试(Black-box Testing),软件测试的主要方法之一,也可以称为功能测试、数据驱动测试或基于规格说明的测试。测试者不了解程序的内部情况,只知道程序的输入、输出和系统的功能,这是从用户的角度对程序进行的测试。白盒测试中,源程序对测试人员开放,允许测试人员根据程序的结构设计和选择相应的测试用例,以达到遍历程序的所有逻辑路径的目的,所以白盒测试一般适合用于单元测试。
第30题:
瀑布模型(Waterfall Model)各阶段间具有顺序性和依赖性,它能清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,但它突出的缺点是不适应 (30) 的变动。
A.算法
B.平台
C.程序语言
D.用户需求
参考答案:D
按照传统的生命周期方法学开发软件,各阶段的工作自顶向下从抽象到具体顺序进行,就好像奔流不息的瀑布,一泻千里,总是从高处依次流到低处。因此,传统的生命周期方法学可以用瀑布模型(Waterfallmodel)来模拟。瀑布模型规定各阶段按顺序完成,上一阶段完成后才能进入下一阶段。于是需求的变动在开发完成时才能体现,所以不适应用户需求的变动是它突出的缺点。 数据流图中有四种基本图形元素,其中→表示 (31) 。□表示 (32) 。
第31题:
A.加工
B.外部实体
C.数据流
D.存储
参考答案:C
第32题:
A.加工
B.源/宿
C.数据流
D.存储
参考答案:B
数据流图中四种基本图形元素的含义是:圆圈表示加工,箭头表示数据流,方框表示源/宿,双横线加进入/离开箭头表示数据存储。
第33题:
结构化分析方法(SA)是结构化程序设计理论在软件需求分析阶段的运用,它的一个重要指导思想是 (33) 。
A.自顶向下,逐步分解
B.自底向上,逐步抽象
C.自顶向下,逐步抽象
D.自底向上,逐步分解
参考答案:A
结构化分析方法(Structured Method,结构化方法)是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。
软件使不同的系统约束条件和用户需求得到满足的容易程度是指软件 (34) 。
在不合法的输入下,软件仍然能继续正常工作的能力称为 (35) 。
第34题:
A.兼容性
B.可移植性
C.可转换性
D.可接近性
参考答案:A
第35题:
A.可使用性
B.可接近性
C.可靠性
D.稳定性
参考答案:D
兼容性的含义是软件使不同的系统约束条件和用户需求得到满足的容易程度。可移植性指软件从一个系统转换到另一个系统的难易程度。可转换性,指其可以很容易从一个平台转到另一个平台上。可使用性指软件在需要它投入使用时能实现其指定的功能的概率。可靠性指在规定条件下和规定时间内,实现所指定的功能的概率。
第36题:
英国的M.Jackson提出的Jackson设计方法是一种面向 (36) 的软件设计方法。
A.控制结构
B.数据流
C.数据结构
D.对象
参考答案:C
Jackson方法把问题分解为可由三种基本结构形式(顺序,选择和重复)表示的各部分的层次结构。三种数据结构可以进行组合,形成复杂的结构体系。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。Jackson方法是最典型的面向数据结构的软件开发方法。
第37题:
对象间为请求服务而发送的消息通常包括 (37) 。
A.发送消息的对象的标识、调用的发送方的操作名和必要的参数
B.接收消息的对象的标识、调用的接收方的操作名和必要的参数
C.发送消息的类名和接收消息的类名
D.接收消息的类名
参考答案:B
对象间传递的消息内需要声明要调用的方法调用相应的方法。它通常包括接收消息的对象的标识、调用的接收方的操作名和必要的参数。
第38题:
面向对象技术相对于其他开发技术的优势是 (38) 。
A.系统重用性更强
B.系统运行速度更快
C.系统占用存储量小
D.系统维护更复杂
参考答案:A
面向对象程序设计语言的主要特性是继承性、封装性、多态性,而继承性最具特色,继承实际上是存在子面向对象程序中两个类之间的一种关系。当一个类拥有另一个类的所有数据和操作,就称这两个类之间具有继承关系。正是这些特性使得面向对象技术开发的软件具有更强的重用性,更容易维护。
第39题:
下列关于动态链接文件的说法正确的是 (39) 。
A.可以自由地插入到其他的源程序中使用
B.本身不能独立运行,但可以供其他程序在运行时调用
C.本身可以独立运行,也可以供其他程序在运行时调用
D.本身是一个数据文件,可以与其他程序动态地链接使用
参考答案:B
动态链接文件主要由共享的代码构成,可以供其他程序在运行时调用,但本身不能独立运行。
根据模块的设计原则 (40) ,对于模块的控制范围和模块的作用范围,理想的情况是 (41) 。
第40题:
A.模块的内聚性高,模块之间的耦合度高
B.模块的内聚性低,模块之间的耦合度低
C.模块的内聚性低,模块之间的耦合度高
D.模块的内聚性高,模块之间的耦合度低
参考答案:D
第41题:
A.模块的作用范围应在控制范围之内
B.模块的控制范围应在作用范围之内
C.模块的作用范围与控制范围交叉
D.模块的作用范围与控制范围分离
参考答案:A
模块设计的原则之一是使模块的内聚性高,模块间的耦合度低。模块的控制范围包括它本身及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影Q向的所有模块都属于这个判定的作用范围。若模块的作用范围完全在控制范围之内,即该模块与其他模块之间是松耦合,则该设计中模块的内聚性高,耦合度低。
第42题:
软件的用户界面设计中最重要的也是最基本的目标是 (42) 。
A.灵活性
B.风格多样性
C.美观性
D.易操作性
参考答案:D
软件的用户界面作为人机接口起着越来越重要的作用,用户界面应当追求整体美观大方,交互方式灵活多样,各界面的风格应当一致,这样做的目的都是为了达到友好的操作界面,所以易操作性是用户界面设计中最重要的也是最基本的目标。
进行软件测试是为了 (43) 。 (44) 方法常用于单元测试
第43题:
A.证明软件的正确性
B.证明软件系统中存在错误
C.找出软件系统中存在的所有错误
D.尽可能多地发现软件系统中的错误和缺陷
参考答案:D
第44题:
A.采用黑盒测试,辅之以白盒测试
B.采用白盒测试,辅之以黑盒测试
C.只使用白盒测试
D.只使用黑盒测试
参考答案:B
任何软件系统都存在或多或少的bus,但是不可能找出一个软件系统的所有错误。软件测试的目的是尽可能多地发现软件系统中的错误或缺陷。单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行单元测试。
第45题:
原型化方法是一种动态定义需求的方法,原型化方法的特征是 (45) 。
A.精确项目管理
B.建立详尽的需求
C.加强用户参与和决策
D.提供严格定义的文档
参考答案:C
原型化方法是一种动态定义需求的方法,它要求尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在某方面存在缺陷。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等,然后根据用户的反馈,逐步增加系统的功能,得到最终产品。
面向对象程序设计的基本逻辑构件是 (46) ,用 (47) 来描述具有共同特征的一组对象;以 (48) 为共享机制,共享类中的方法和数据。
第46题:
A.模块
B.对象
C.结构
D.类
参考答案:B
第47题:
A.对象
B.类型
C.类
D.数组
参考答案:C
第48题:
A.成员函数
B.数据成员
C.引用
D.继承
参考答案:D
面向对象程序设计中,可以一组具有共同特征的事物抽象为类,基本的逻辑构件就是这些类的实例,即对象。当一个类拥有另一个类的所有数据和操作,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的类成为子类。
第49题:
递归函数f(n)的功能是计算1+2+…+n,且n≥1,则f(n)的代码段是 (49) 。
A.if n>1 then return 1 else return n+f(n-1)
B.if n>1 then return 1 else return n+f(n+1)
C.if n>1 then return 0 else return n+f(n+1)
D.if n<1 then return 0 else return n+f(n-1)
参考答案:D
根据题意,当n<1时结束递归,函数返回0,否则返回n+f(n-1)进行递归运算。
第50题:
在下面的流程图中,如果标记为a的运算执行了n次(n>1),那么标记为b的运算的执行次数为 (50) 。
A.1
B.n-1
C.n
D.n+1
参考答案:D
若a的计算结果为“N”,此时(16)不再执行,至此它比a多执行了一次,即n+1次。
第51题:
软件的复杂性与许多因素有关。但 (51) 不会影响软件的复杂性。
A.程序中注释的多少
B.程序的结构
C.算法的难易程度
D.源程序的代码行数
参考答案:A
注释只是供人阅读的,它不会对软件的复杂性造成影响,因为编译系统在编译程序时,会忽略所有的注释,注释不会对编译结果造成影响。
第52题:
在结构化分析与设计方法中,做到 (52) ,就会在需求改变时对软件的影响比较小。
A.程序结构与用户界面相对应
B.程序结构与问题结构相独立
C.程序结构与问题结构相对应
D.程序结构与用户界面相独立
参考答案:C
Jackson方法的设计原则是将程序结构和数据结构相对应,该方法特别适用于设计企事业信息管理一类的规模适中的数据处理系统。这些系统处理的数据大多具有层次结构,如文件由记录组成,记录又由数据项组成,所以可以以数据结构为基础,相应地建立模块的层次结构,如处理文件的模块调用处理记录的模块,处理记录的模块又调用处理数据项的模块。
第53题:
(53) 维护的含义是系统的硬件环境、软件环境和数据环境发生变化时需要对系统进行的维护。
A.校正性维护
B.适应性维护
C.完善性维护
D.预防性维护
参考答案:B
校正性维护是诊断和修正系统中遗留的错误。适应性维护是为了使系统适应环境的变化而进行的维护工作。完善性维护是指为了扩充原有系统的功能,提高其性能而进行的系统维护工作。预防性维护是指系统维护工作应进行主动的预防性维护,即选择那些还有较长使用寿命,目前尚能正常运行,但可能将要发生变化或调整的系统进行维护。