- 填空题
1、总体设计通常由___系统设计____和___结构设计____ 两个阶段组成
2、在信息处理和计算机领域内,一般认为软件是 程序___、_ 文档____ 和_ 数据____ 。
3、数据流图和数据字典共同构成了系统的 _逻辑 ____模型,是需求规格说明书的主要组成部分。
4、软件工程中,指根据程序的功能说明而不关系程序内部的逻辑结构的测试方法,称为_____ 黑盒 ___测试
5、划分模块时尽量做到__ 高内聚、低耦合______,保持模块的独立性,尽量使用公共模块。
类的实例化是______对象 _______。
6、人们常用硬件可靠性的定量度量方法来度量软件的可靠性和可用性,常用的度量软件可
靠性的两个指标是_成功地运行的概率 ______和 平均故障时间 _______。
7、将待开发的软件细化,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,
将得到软件的总开发量。这种成本估算方法称为_ 自底向上 _______。
8、软件的风险分析可包括风险识别、风险预测 和风险驾驭(或风险管理)等3项活动。
9、软件工程管理的主要内容有:项目经费管理, 软件质量管理,项目进度管理和 人员管理。
10、面向对象分析的目的是对客观世界的系统进行 ___建模 ___ 。
11、软件维护工作的生产性活动包括分析评价、修改设计和 ___编写程序代码 _______ 等。
12、软件生存周期是指一个软件从提出开发要求开始直到____软件废弃____为止的整个时期。
13、在单元测试时,需要为被测模块设计___测试用例 _______。
14、请举出几种典型的软件过程模型:瀑布模型、 螺旋模型_ 、喷泉模型_
15、在结构化设计中,HIPO 图应用在__总体设计___阶段,有 IPO图和__,层次图__两部分组成。
16、软件测试分为__白盒测试___和__黑盒测试___。
17、软件设计包括__概要设计___和___详细设计__。
18、软件定义的基本任务是确定软件系统的工程___ 需求分析__ __也就是要搞清"做什么"。
19、软件的生存周期一般可以划分为:定制计划,需求分析和定义,设计_,编码,测试,运行和维护。
20、在项目管理中,甘特图是一种常用的工具,用来可视化项目进度和时间线,它以___水平条形图___形式展现任务列表及其持续时间
21、在软件开发中,原型模型是一种以快速原型制作和迭代为中心的开发方法,旨在提高___用户体验和需求获取___
22、在软件开发生命周期中,需求获取是__需求分析____阶段的主要活动之一
23、___用例图___是一种用于描述系统功能需求的图形化工具。
24、敏捷开发中的___计划___会议通常在每个迭代或冲刺的开始时举行。
25、在UML中,类之间的关系可以用___关联___、___扩展___和__泛化____来表示
26、设计模式如单例模式(Singleton)主要用于实现__高内聚____设计原则
27、在软件架构中,___业务层___负责处理特定领域的业务逻辑
28、___软件测试___是一种常用的软件质量保证活动,旨在发现并修复缺陷。
29、在项目管理中,___项目___三角描述了时间、成本和范围之间的关系和相互影响。
30、___结构化分析与设计___是一种面向数据流的设计方法,用于结构化系统分析和设计
31、在UML中,序列图主要用于描述对象之间的___动态___交互
32、___统一建模语言___是一种用于表达对象行为和状态变化的建模语言
33、在软件工程中,___实体关系___图用于展示数据对象的结构及其属性和关系
34、在UML中,活动图用于建模工作流和___操作___流程
35、____用例__是一种用于识别和记录功能需求的技术,通常用于帮助理解复杂的业务过程。
36、在软件设计中,模块化是指将系统划分为多个___模块___的过程
37、____风险评估__是一种用于评估潜在风险影响和发生概率的技术。
38、在软件测试中,___功能___测试是一种黑盒测试技术,关注于程序的功能而不是内部结构。
39、___序列图___是一种用于描述系统行为的图表,强调对象之间的消息传递顺序。
40、在软件开发中,___调试___是一种用于识别和纠正错误的过程,通常发生在编码之后
41、在UML中,用于描述系统的功能以及用户如何与系统交互的图是用例图,而描述系统中类及其相互关系则使用___类___图
42、在软件开发生命周期(SDLC)中,需求分析阶段的主要目的是确定用户需要什么,而___设计___阶段将这些需求转化为设计规格
43、在面向对象编程中,一个类可以声明另一个类作为其成员变量,这种关系称为__聚合___
44、软件工程中的___模块化___是一种将大型复杂软件系统进行分解的方法,以便更容易地管理和开发。
45、一个完善的类操作一般会包含4个方面的功能:实现功能,__ 访问功能__,管理功能,辅助功能。
46、在软件设计中,___ UML __图是一种用于描述软件结构的图形化表示方法
47、继承会___加强类之间耦合度____,会降低系统的可维护性,因此不要滥用继承。
48、____组件图___用于描述软件的各个组件和他们之间的依赖关系的。
- 活动图与顺序图和协作图相比,其主要优点是__可以对平行行为进行建模____
50、数据库规范化是一种设计过程,它通过消除数据冗余来改善数据库结构,第一范式(1NF)要求数据库表的每一列都是___不可分割的原子项___。
- 依赖注入(DI)是一种设计模式,用于实现控制反转(IoC),其目的是降低代码间的___耦合度___。
53、在软件架构中,MVC模式代表Model-View-Controller,其中___Model___负责处理数据逻辑。
54、在软件开发中,文档化是记录项目相关信息的过程,包括需求文档、设计文档和___技术规格说明书___等。
55、在面向对象编程中,一个类可以声明另一个类作为其成员变量,这种关系称为__聚合___
二、选择题
1.软件开发瀑布模型中的软件定义时期各个阶段依次是:( B)
A) 可行性研究,问题定义,需求分析。
B) 问题定义,可行性研究,需求分析。
C) 可行性研究,需求分析,问题定义。
D) 以上顺序都不对。
(软件开发时期:概要设计、详细设计、软件实现、软件测试)
2.可行性研究主要从以下几个方面进行研究: ( A)
A) 技术可行性,经济可行性,操作可行性。
B) 技术可行性,经济可行性,系统可行性。
C) 经济可行性,系统可行性,操作可行性。
D) 经济可行性,系统可行性,时间可行性。
3.在用例建模中,"扩展"(Extend)和"包括"(Include)有何不同(A)
A) "扩展"是在特定条件下才执行的附加行为,而"包括"总是执行。
B) "包括"是在特定条件下才执行的附加行为,而"扩展"总是执行。
C) "扩展"和"包括"都表示用例间的相同关系,只是名称不同。
D) "包括"可以跨越多个用例,而"扩展"只能在同一用例内使用。
5.按照软件工程的原则,模块的作用域和模块的控制域之间的关系是: ( A)
A)模块的作用域应在模块的控制域之内。
B)模块的控制域应在模块的作用域之内。
C)模块的控制域与模块的作用域互相独立。
D)以上说法都不对。
6.在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是 (A )
A.概要设计 B.详细设计 C.需求分析 D.可行性分析
7.下面不是软件工程的3个要素的是( C)
A过程 B.方法 C.环境 D.工具
软件工程的三个要素:方法、工具、过程
8.下面不属于软件的组成的是(B )
A程序 B.记录 C.文档 D.数据
软件=程序+数据+文档+服务
9.在瀑布模型中,将软件分为若干个时期,软件项目的可行性研究一般归属于( C)
A.维护时期 B.运行时期 C.定义时期 D.开发时期
10.在瀑布模型中,下面(C )是其突出的缺点。
A.不适应平台的变动
B.不适应算法的变动
C.不适应用户需求的变动
D.不适应程序语言的变动
11下面不属于软件的特点的是( D)。
A软件是一种软件产品
B软件产品不会用坏,不存在磨损、消耗问题
C软件产品的生产主要是研制
D软件产品非常便宜
12 软件开发工具是协助开发人员进行软件开发活动所使用的软件或环境。下面不是软件开发工具的是。A
A.维护工具 B.编码工具 C.测试工具 D.需求分析工具
13.下列叙述中不属于软件生命周期模型的是(D )。
A.原型模型 B.瀑布模型 C.螺旋模型 D.快速组装模型
14.软件设计中,用抽象和分解的目的是(B )。
A.提高易读性B.降低复杂性 C.增加内聚性 D.降低耦合性
15软件生命周期中所花费用最多的阶段是(D )。
A.详细设计 B.软件编码 C.概要设计 D.软件测试和维护
16.开发软件时对提高开发人员工作效率至关重要的是(B )。
A.操作系统的资源管理功能
B.先进的软件开发工具和环境
C.程序人员的数量
D.计算机的并行处理能力
17.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( B)。
A.软件投机 B.软件危机 C.软件工程 D软件产生
18软件开发的结构化生命周期方法将软件生命周期划分成(A)
A.定义、开发、运行维护
B.设计阶段、编程阶段、测试阶段
C.总体设计、详细设计、编程调试
D.需求分析、功能定义、系统设计
19.软件工程的理论和技术性研究的内容主要包括软件开发技术和(B )。
A.消除软件危机
B.软件工程管理
C.程序设计自动化
D.实现软件可重用
20软件工程的出现是由于( C)。
A.程序设计方法学的影响
B.软件产业化的需要
C.软件危机的出现
D.计算机的发展
21.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D )。
A.概要设计
B.详细设计
C.问题定义
D.需求分析
- 开发大型软件时,产生困难的根本原因是(A )。
A.大系统的复杂性 B.人员知识不足
C.客观世界千变万化 D.时间紧、任务重
- 文档是软件开发人员、软件管理人员、维护人员、用户以及计算机之间的( B),软件开发人员在各个阶段以文档作为前段工作成果的体现和后段工作的基础。
A.接口B.桥梁C.科学D.继续
24软件工程学的目的是以 较低的成本,研制(A )质量的软件。
A较高B较低C.可靠D.优秀
25软件从一个计算机系统或环境转换到另一个计算机和环境的容易程度称为(D )。
A.可用性B.兼容性C.可靠性D.可移植性
26.软件生存周期是指( D)阶段。
A.软件开始使用到用户要求修改为止
B.软件开始使用到被淘汰为止
C.从开始编写程序到不能再使用为止
D.从立项制定计划,进行需求分析到不能再使用为止
27.在ER模型中,如果两个实体集间的联系是多对多的,那么在转化为关系模型时通常需要如何处理(B)
A.删除其中一个实体集
B.增加一个关系表来表示这种多对多的联系
C.将两个实体集合并为一个实体集
D.选择一个实体集作为主实体集,另一个作为弱实体集
28.在UML中,表示一个类是另一个类的专有属性的关联是(A)
A.组合
B.聚合
C.关联
D.泛化
- 软件详细设计主要采用的方法是( A )
A、结构化程序设计 B、模型设计 C、结构化设计 D、流程图设计
- 需求分析阶段的任务是确定( C)。
A.软件开发方法
B.软件开发费用
C.软件系统功能
D.软件开发工具
31(D )的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
A需求分析 B概要设计 C总体设计 D可行性研究
32.下列选项中( D)不是软件需求规格目标。
A.便于用户、分析员和软件设计人员进行理解及交流
B.控制系统的实施过程
C.作为软件测试和验收以及维护的依据
D.便于软件的维护
- 软件工程的出现是由于(C )。
A、程序设计方法学的影响
B、软件产业化的需要
C、软件危机的出现
D、计算机的发展
- 软件设计包括(B )两个阶段。
A.接口设计和结构设计B.概要设计和详细设计
C.数据设计和概要设计D.结构设计和过程设计
- 在软件开发中,下面任务不属于设计阶段的是(D )。
A.数据结构设计 B给出系统模块结构
C定义模块算法 D定义需求并建立系统模型
48.对建立良好的程序设计风格,下面描述正确的是( A)。
A程序应简单、清晰、可读性好 B符号名的命名要符合语法
C充分考虑程序的执行效率 D程序的注释可有可无
49.下面不属于软件设计原则的是(C )。
A抽象B模块化C自底向上D信息隐蔽
51软件测试按照功能划分可以分为(B )。
A黑盒测试和单元测试 B白盒测试和黑盒测试
C集成测试和单元测试 D白盒测试和静态测试
52在软件测试过程的4个步骤中,测试依据是需求规格说明的是( C)
A单元测试B集成测试C确认测试D系统测试
53黑盒测试法属于( C)。
A集成测试B系统测试C动态测试D静态测试
54下列叙述中错误的是( C)。
A测试是为了寻找错误而运行程序的过程
B一个成功的测试是揭示了迄今为止尚未发现的错误的测试
C测试的目的是为了证明程序是正确的
D一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试
55软件测试过程是软件开发过程的逆过程,其最基础性的测试应是( B)
A集成测试B单元测试C有效性测试D系统测试
55.有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准___________。( B )
A. 语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖
56.关于白盒测试与黑盒测试的最主要区别,正确的是__。( A )
A.白盒测试侧重于程序结构,黑盒测试侧重于功能
B.白盒测试可以使用测试工具,黑盒测试不能使用工具
C.白盒测试需要程序参与,黑盒测试不需要
D.黑盒测试比白盒测试应用更广泛
- 在E-R模型中,包含以下基本成分( C)。
A) 数据、对象、实体
B) 控制、联系、对象
C) 实体、联系、属性
59.软件测试的目标是(B )。
A. 证明软件是正确的
B. 发现错误、降低错误带来的风险
C. 排除软件中所有的错误
D. 与软件调试相同
60.软件生命周期中所花费用最多的阶段是( D)
A.详细设计 B.软件编码 C.软件测试 D.软件维护
62.瀑布模型(Waterfall Model)突出的缺点是不适应 ( D)的变动。
A、算法 B、平台 C、程序语言 D、用户需求
65.软件危机具有下列表现( D )
I、对软件开发成本估计不准确
II、软件产品的质量往往不可靠
III、软件常常不可维护
IV、软件成本逐年上升
A.I、II和III B.I、III和IV
C.II、III和IV D.以上都正确
- 产生软件危机的原因可能有( D )
I、用户需求描述不精确、不准确
II、对大型软件项目的开发缺乏有力的组织与管理
III、缺乏有力的方法学和工具的支持
IV、软件产品的特殊性和人类智力的局限性
A.I和II B.I、II和IV
C.II、III和IV D.以上都正确
- ( A )分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。
A.增量模型 (分批) B.喷泉模型(重叠) C.原型模型 D.螺旋模型(迭代,风险分析)
70.具有风险分析的软件生存周期模型是( C )
A.瀑布模型 B.喷泉模型
C.螺旋模型 D.增量模型
71.瀑布模型的关键不足在于( B )
A.过于简单 B.不能适应需求的动态变更
C.过于灵活 D.各个阶段需要进行评审
72.软件工程的目标有( B )。
A.易于维护 B.低的开发成本 C.高性能 D.短的开发期
73.软件工程学的目的和意义是( D )。
A.应用科学的方法和工程化的规范管理来指导软件开发
B.克服软件危机
C.做好软件开发的培训工作
D.以较低的成本开发出高质量的软件
74.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( C)
A. 软件工程 B. 软件周期 C. 软件危机 D. 软件产生
75.快速原型模型的主要特点之一是 (D )
A. 开发完毕才见到产品 B. 及早提供全部完整的软件产品
C. 开发完毕后才见到工作软件 D. 及早提供工作软件
76.瀑布模型的存在问题是( B )
A.用户容易参与开发 B.缺乏灵活性
C.用户与开发者易沟通 D.适用可变需求
77.软件生存周期模型不包括:( B )
A.瀑布模型 B.对象模型 C.增量模型 D.喷泉模型
78.下列哪个不属于软件工程的内涵之一( C )
A.应用完善的科学与工程原理 B.经济地开发软件
C.高薪聘请软件高手 D.开发既可靠又能有效运行的软件
79.在瀑布模型中,将软件划分为若干个时期,软件项目的可行性研究一般归属于( B )。
A.维护时期 B.计划时期 C.运行时期 D.开发时期
82.下列哪个不属于瀑布模型与传统的程序设计的不同之处( D )。
A.传统的程序设计开发人员只开发程序,不写文档.
B.传统的程序设计重点在问题求解和算法,并只有自己才能读懂.
C.瀑布模型的各阶段要第三方介入审察
D.传统的程序设计规定各阶段必须写文档.
83.下面哪个模式不属于软件工程的开发模式( C )
A.基于瀑布模型的开发模式 B.基于原型模型的开发模式
C.基于人机对话的开发模式 D.基于关系数据库的开发模式
88.为高质量地开发软件项目,在软件结构设计时,必须遵循 ( A ) 原则。
A .信息隐蔽 B .质量控制 C .程序优化 D .数据共享
89.需求规格说明书的作用不包括( C )
A .软件验收的依据 B .用户与开发人员对软件要做什么的共同理解
C .软件可行性研究的依据 D .软件设计的依据
- 需求分析阶段最重要的技术文档之一是:( C )
A.项目开发计划 B.设计说明书
C.需求规格说明书 D.可行性分析报告
94.需求工程的主要目的是( C )
A.系统开发的具体方案 B. 进一步确定用户的需求
C.解决系统是"做什么的问题" D. 解决系统是"如何做的问题"
- 模块( C),则说明模块的独立性越强。
A. 耦合越强 B. 扇入数越高 C. 耦合越弱 D. 扇入数越低
99.软件结构图中,模块框之间若有直线连接,表示它们之间存在( A )
A.调用关系 B.组成关系 C.链接关系 D.顺序执行关系
100.概要设计最终结果是产生(C)
A.项目开发计划 B.需求规格说明书
C.软件结构设计说明书 D.可行性分析报告
101.在有集成(组装)测试的叙述中,A__ 是正确的。
A测试底层模块时不需要桩模块
B驱动模块的作用是模拟被调模块
C自顶向下测试方法易于设计测试结果
D自底向上测试方法有有利于提前预计测试结果
104.在考察系统的一些涉及时序和改变的状态时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是( D )。
A.状态图 B.数据流图 C.系统结构图 D.时序图
- 面向对象分析是对系统进行( A )的一种方法。
A.需求建模 B.程序设计 C.设计评审 D.测试验收
- ( C )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A.多态性 B.继承 C.封装 D.消息
- 面向对象的分析方法主要是建立三类模型,即( D )
A.系统模型,ER模型,应用模型 B.对象模型,动态模型,实现(应用)模型
C.ER模型,对象模型,功能模型 D.对象模型,动态模型,功能模型
109.面向对象程序设计的基本机制( A )
A.继承 B.消息 C.方法 D.结构
- 下列属于面向对象的要素有( C )
A.分类性 B.抽象 C.对象 D.封装
对象三要素:对象、属性、服务
111.在进行面向对象分析时,所采用的模型有( )。
A.对象模型 B.动态模型 C.静态模型 D.功能模型
112.状态是对象属性的值的一种抽象,它的性质有( )。
A.时间性 B.持续性 C.有序性 D.有穷性
113.建立继承关系时所采用的方式有( )。
A.自顶向下 B.从内到外 C.自底向上 D.从复杂到简单
114.对象是人们要研究的任何事物,主要的对象类型有( )。
A.有形实体 B.作用 C.事件 D.性能说明
- 类库这种机制是 ( D ) 级别的信息共享。
A. 同一类 B. 不同类 C. 同一应用 D. 不同应用
- 状态是对象 ( D ) 的抽象。
A属性值 B. 方法 C. 功能 D. 行为
- 动态模型的描述工具是 ( D ) 。
A. 对象图 B. 结构图 C. 流程图 D. 状态图
118.在确定对象的属性中,所有 ( A ) 是候选的对象。
A. 名词 B. 动词 C. 词组 D. 修饰性名词词组
119.对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。
A.结合 B.隐藏 C.封装 D.抽象
120.OOA是( D )
A. 结构化分析 B.面向对象程序设计
C. 面向对象程序分析 D. 面向对象分析
- 面向对象的特征不包括( C )
A.继承性。 B.多态性。 C.互换性 D. .封装性
- 在面向对象软件开发方法中,类与类之间主要有以下结构关系(D)
A继承和聚集 B继承和一般 C聚集和消息传递 D继承和方法调用
- 以下哪一项不是面向对象的特征(D )
A多态性 B继承性 C封装性 D过程调用
124.对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。
A.结合 B.隐藏 C.封装 D.抽象
- 在面向对象软件开发方法中,类与类之间主要有以下结构关系( A )
A继承和聚集 B继承和一般 C聚集和消息传递 D继承和方法调用
- 以下哪一项不是面向对象的特征( D)
A多态性 B继承性 C封装性 D过程调用
127.下面所列的性质中,( D )不属于面向对象程序设计的特性。
A.继承性 B.重用性 C.封装性 D.可视化
128.下列是面向对象设计方法中有关对象的叙述,其中( B )是正确的。
A.对象在内存中没有它的存储区
B.对象的属性集合是它的特征表示
C.对象的定义与程序中类型概念相当
D.对象之间不能相互通信
129.在面向对象软件方法中,"类"是( D )。
A.具有同类数据的对象的集合 B.具有相同操作的对象的集合
C.具有同类数据的对象的定义 D.具有同类数据和相同操作的对象的定义
130.面向对象分析时,所标识的对象为__D____是错误的。
A.与目标系统有关的物理实体
B.与目标系统发生作用和人或组织的角色
C.目标系统运行中需记忆的事件
D.目标系统中环境场所的状态
131.面向对象设计OOD模型的主要部件中,通常不包括__A___。
A通信部件 B.人机交互部件 C.任务管理 D.数据管理
132.面向对象设计时,对象信息的隐藏主要是通过__A____实现的。
A.对象的封装性 B.子类的继承性
C.系统模块化 D.模块的可重用
133.作为面向对象分析的基础、由问题领域中的对象所组成、用ER图来描述是_A___。
A、消息模型 B.处理模型 C.状态模型 D.瀑布模块
134.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( C )。
A.软件工程 B.软件周期 C.软件危机 D.软件产生
135.下面不属于软件工程3要素的是( D )
A)工具 B)过程 C)方法 D)环境
136.检查软件产品是否符合需求定义的过程称为( A )
A)确认测试 B)集成测试 C)验证测试 D)验收测试
137.数据存储和数据流都是( D ),仅仅是所处的状态不同。
A)分析结果 B)事件 C)动作 D)数据
140.结构化分析方法就是面向( B )的自顶向下逐步求精进行需求分析的方法。
A)目标 B)数据流 C)功能 D)对象
141.下面不属于软件工程设计基本原理的是( C )
A)抽象 B)模块化 C)自底向上 D)信息隐蔽
142.( D )是数据说明、可执行语句等程序对象的集合,它是单独命名的而且可以通过名字来访问。
A)模块化 B)抽象 C)精化 D)模块
145.在进行软件结构设计时应该遵循的最主要的原理是( C )
A)抽象 B)模块化 C)模块独立 D)信息隐蔽
146.在测试中,下列说法错误的是( B )
A)测试是为了发现程序中的错误而执行程序的过程
B)测试是为了表明程序的正确性
C)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
D)成功的测试是发现了至今为止尚未发现的错误的测试
148.软件调试的目的是( B )
A)发现错误 B)改正错误 C)改善软件的性能 D)挖掘软件的潜能
149.软件详细设计主要采用的方法是( A )。
A)结构化程序设计 B)模型设计 C)结构化设计 D)流程图设计
157.软件开发的可行性研究,一般涉及经济、技术和操作的可能性,而进行可行性研究的基本依据则是用户提出的软件( B )。
A)系统质量 B)系统目标 C)系统功能 D)系统性能
158.结构化方法将软件生命周期分为计划、开发和运行3个时期,下列任务中( B )属于计划时期的任务。
A)需求分析 B)问题定义 C)总体设计 D)编码
161.软件管理中,需要对软件进行配置,各阶段文档的管理属于( D )。
A)组织管理 B)资源管理 C)计划管理 D)版本管理
163.软件开发过程中,软件结构设计是描述( B )。
A)数据存储结构 B)软件模块体系 C)软件结构测试 D)软件控制过程
164.( B )是对象的静态特征。
A.方法 B.属性 C.关系 D.操作
165.对象的(D )是对象的动态特征。
A.特征 B.属性 C.关系 D.操作
166.属于某个类的一个具体对象称为该类的( A )
A.实例 B.虚拟 C.继承 D.多态
167.UML是( A )。
A) 一种可视化的建模语言
B) 是一种可视化的程序设计语言
C)是一种过程
D) 是一种方法
168.下列的( C )不属于面向对象分析模型。
A. 用例图 B. 类图 C. 实体关系图 D. 顺序图
169.程序的三种基本控制结构是( B )。
A.过程、子程序和分程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和转移
170.结构化程序设计主要强调的是( D )。
A.程序的规模B.程序的效率 C.程序设计语言的先进性 D.程序易读性
171.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。
A.程序内部逻辑 B.程序复杂结构 C.使用说明书 D.程序的功能
172.确认测试主要涉及的文档是( A )。
A)需求规格说明书B)概要设计说明书 C)详细设计说明书D)源程序
173.测试的关键问题是( D )。
A.如何组织对软件的评审
B.如何验证程序的正确性
C.如何采用综合策略
D.如何选择测试用例
174.下面哪个测试属于黑盒测试( B )。
A)路径测试B)等价类划分 C)条件判断覆盖测试 D)循环测试
175.软件测试方法中,黑盒、白盒测试法是常用的方法,其中白盒测试主要用于测试( D )。
A) 结构合理性B)软件外部功能C)程序正确性D)程序内部逻辑
176.为了适应软硬件环境变化而修改软件的过程是( C )。
A)校正性维护 B)完善性维护 C)适应性维护D)预防性维护
178.瀑布模型的存在问题是( B )
A.用户容易参与开发 B.缺乏灵活性 C.用户与开发者易沟通 D.适用可变需求
179.软件生命周期中所花费用最多的阶段是( D )
A.详细设计 B.软件编码 C.软件测试 D.软件维护
180.程序的三种基本控制结构的共同特点是 ( D )
A.不能嵌套使用 B.只能用来写简单程序 C.已经用硬件实现 D.只有一个入口和一个出口
184.软件需求分析阶段的工作,可以分为4个方面:需求获取,需求分析,编写需求规格说明书以及( B ) 。
A)用户B)需求审评C)总结D)都不正确
185.以下分析模型的结构成员中,属于行为模型的是( C )。
A) 数据流图 B) 实体-关系图 C) 状态转换图 D) 数据字典
186.在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。
A) 语句 B) 条件 C) 判定 D) 条件组合
187.模块化中的信息隐藏原则是指( B )。
A) 使信息对用户隐藏 B) 使信息对其它模块隐藏
C) 使信息对软件隐藏 D) 使信息对操作系统隐藏
189.以下软件生命周期模型中,( A )是用户驱动的模型。
A)快速原型模型 B)螺旋模型 C)喷泉模型 D)瀑布模型
192.软件生存周期是指( D )。
A)开发软件的全部时间
B)使用软件的全部时间
C)开发和使用软件的全部时间
D)从软件计划起直到软件废弃所经历的全部时间
193.测试用例是指( C )。
A)被测对象 B)测试的输入数据
C)测试数据+预期结果 D)测试的预期结果
197.下列( B )属于不良的编程习惯。
A.尽量不使用GOTO语句 B.从来不使用注释
C.每行只写一条语句 D.变量命名尽量直观
198.瀑布模型中各阶段按时间先后顺序是( B )。
A.计划→需求分析→编码→设计→测试→维护
B.计划→需求分析→设计→编码→测试→维护
C.计划→设计→需求分析→编码→测试→维护
D.计划→需求分析→设计→测试→编码→维护
199.目前最流行的面向对象建模语言是( C )。
A)HTML B)XML C)UML D)VML
200.以下哪个不属于优秀软件具备的特征(D)
A)完整性 B)正确性 C)可验证性 D)二义性
201.在软件工程中,当前用于保证软件质量的主要技术手段还是(C )
A、正确性证明 B、测试
C、自动程序设计 D、符号证明
202、瀑布模型存在的问题是(B)。
A、 用户容易参与开发 B、缺乏灵活性
C、 用户与开发者易沟通 D、适用可变需求
204.效率是一个性能要求,因此应当在以下哪个阶段规定(C)?
A、 可行性分析 B、概要设计
C、 需求分析 D、详细设计
206、在软件设计阶段,划分模块的原则是,一个模块的(A)。
A、作用范围应该在其控制范围之内
B、控制范围应该在作用范围之内
C、作用范围与控制范围互不包含
D、作用范围与控制范围不受任何限制
208、结构化方法是一种基于(D)的方法。
A、 数据结构 B、数据流
C、 算法 D、程序结构
209、以下哪个选项不是软件的特点:(B)
A、软件是一种逻辑实体。
B、软件维护与硬件的维修有着本质的差别。
C、软件的开发至今完全摆脱手工艺的开发方式,使软件的开发效率有了很大的提高。
D、软件的成本非常高昂。
210、可行性研究的目的是(D)
A、 确定系统建设的方案 B、 分析开发系统的必要性
C、 确定是否值得开发系统 D、 分析系统风险
- 在软件设计中应该保持模块的独立性原则,(C)反映模块独立性。
A、 耦合和内聚 B、数据和模块
C、 模块内部的凝聚力 D、模块之间的耦合
212、以下说法正确的是(A)
A、 逻辑模型是描述重要的业务功能,负责系统是如何实施的。
B、 逻辑模型是描述新系统的主要业务功能和用户新的需求,负责系统应如何实施。
C、 物理模型是描述现实系统是如何在物理上实现的
D、 逻辑模型是描述新系统是如何实施的(包括技术)
四、简答题
2 、软件工程方法学开发软件时要建立哪些模型?
软件工程方法学包括:传统方法学和面向对象方法学。常用的开发模型有:
瀑布模型(需求稳定,而且可以预先指定)
原型模型(需求模糊或者随时间变化)
增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善)
螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析)
喷泉模型(使开发过程具有迭代性和无间隙性)
5、阐述在软件开发生命周期(SDLC)中需求分析阶段的重要性,并提供两个常用的需求获取技术
在软件开发生命周期(SDLC)中,需求分析阶段是整个开发过程的基石。它决定了软件项目成功与否的关键因素。需求分析的重要性在于它能够帮助开发团队理解用户的具体需求和期望,从而确保最终产品能够满足这些需求并在实际使用中发挥作用。这一阶段的输出通常包括详细的需求文档,为后续的设计、编码、测试等阶段提供了明确的指导和依据。
常用的需求获取技术包括:
(1)访谈:与利益相关者进行一对一或小组讨论,以深入了解他们的具体需求和期望。这种方法有助于收集详细的信息,并允许进一步澄清可能存在的疑问。
(2)问卷调查:通过设计问卷来收集大量用户的意见和需求。这种方式适用于需要从广泛的用户群体中快速收集数据的情况
6 、软件开发的各阶段的任务是什么?
定义阶段:问题定义--任务:关于规模和目标的报告书;可行性研究--任务:系统的高层逻辑模型:数据流图,成本/效益分析;需求分析--任务:系统的逻辑模型:数据流图,数据字典,算法描述。
开发阶段:总体设计--任务:系统流程图,成本/效益分析,推荐的系统结构:层次图/结构图;详细设计--任务:HIPO图或PDL图;编码和单元测试--任务:源程序清单,单元测试方案和结果;综合测试--任务:综合测试方案,结果集成测试,验收测试,完整一致的软件配置。
维护阶段:软件维护--任务:维护记录以及改正性维护,适应性维护,完整性维护和预防性维护
7、解释单元测试的目的,并说明为什么它是开发过程中不可获取的一环
单元测试的目的是保证代码的质量和正确性,同时提高代码的可维护性和可靠性
原因如下:
一、保障代码质量:通过单元测试,可以检测和修复代码中的错误和缺陷,确保每个模块按照预期工作。这有助于提升整个软件产品的质量。
二、支持代码重构:在软件开发过程中,代码重构是常见的操作。单元测试为重构提供了安全网,确保在修改代码后不会引入新的错误。
三、减少调试时间:当出现问题时,单元测试可以帮助开发者快速定位问题所在,从而减少调试的时间和成本。
四、改善设计:编写单元测试迫使开发者考虑如何设计代码以便于测试,这通常导致更好的设计和更高级的编程技巧。
五、节约时间:如果单元测试做得好,那么在后续的集成测试、系统测试等阶段就能节省大量时间,因为这些测试级别不会遇到那些本应在单元测试中发现的问题。
六、提升测试绩效:单元测试是测试阶段的基础,它使得后续的测试更加容易,并且在单元测试过程中能够发现一些在系统测试中难以发现的深层次问题。
七、防止后期bug过多:单元测试是第一个环节,也是最重要的一个环节,在开发的早期就进行单元测试可以有效防止后期因bug过多而导致的开发延期
8 、软件需求分析的任务是什么?
需求分析的任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、 具体的要求。一般说来,需求分析的任务包括下述几方面:
1.确定对系统的综合要求 (主要有: 功能需求、 性能需求、 运行需求、 将来可能提出的需求。 )
2.分析系统的数据要求
3.导出系统的逻辑模型:数据流图、实体-联系图、状态转换图、数据字典、算法流程等
4.修正系统开发计划
9 、瀑布模型与原型模型分别适用于开发哪些软件?
瀑布模型与原型模型分别适用于开发哪些软件瀑布模型适合于需求稳定,而且可以预先指定的大型系统工程项目。
原型模型适合于需求模糊或者随时间变化的中小型项目
10、概述统一建模语言(UML)的基本用途,并解释类图和序列图分别用于表示什么
UML的基本用途是提供一个标准方法来可视化软件系统的结构和行为。
类图是UML中的核心静态结构图之一,它主要用于显示系统中的类和接口以及它们之间的关系。这包括类的继承、关联、依赖和实现等关系
序列图则属于UML中的行为图类别,专注于描绘对象之间的交互以及这些交互发生的顺序
11 、软件测试的目的是什么?
软件测试是为了发现错误而执行程序的过程;
测试是程序的执行过程,目的在于发现错误;
软件测试中需要数据,即为测试而精心设计的测试用例,利用测试用例去运行程序,帮助发现程序错误;
一个好的测试用例在于能发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试。
软件测试绝对不是要证明程序的正确性, 也证明不了程序的正确性.
12 、单元测试有那些内容?
将每一个模块作为一个单独的测试单元,保证每个模块作为一个单元能正确运行。
单元测试主要针对模块的以下五个基本特征进行测试:1.模块接口2.局部数据结构3.重要的执行路径4.错误处理5.边界条件
13 、什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?
将模块组合起来成为一个完整的系统对其进行测试叫做集成测试。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。
非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。
渐增式组装模块有自顶向下和自底向上两种组装方式。
14 、什么是确认测试?该阶段有那些工作?
按照需求规格说明书中的确定指标对系统进行功能与性能的测试。该阶段进行明确测试(对照需求规格说明书用黑盒法进行测试),软件配置测试(文档的完整性,发现遗漏错误及时补充和修改)
15、什么是软件测试中的黑盒测试和白盒测试
黑盒测试是一种测试方法,测试者不了解内部逻辑,只关注输入与输出之间的关系。白盒测试则涉及对内部逻辑的了解,测试者可以访问代码并基于代码结构设计测试案例
17 、软件测试的步骤有哪些?每个测试阶段的测试依据是什么?分别有谁来测试?
步骤 测试内容 时间
单元测试:将每一个模块作为一个单独的测试单元,保证每个模块作为一个单元能正确运行。 (编码测试阶段)
子系测试系统:将经过单元测试的模块放在一起形成一个子系统来测试,以测试模块间的接口正确性作为主要任务。 (集中测试阶段)
系统测试:将经过测试的子系统装配成一个完整的系统来测试,检验系统是否确实能实现需求规格说明书中的功能,以及系统的动态特征是否符合预定要求。 阶段 系统测试是指整个计算机系统(包括软硬件)的测试,可与系统的安装和验收相结合进行。(集中测试阶段)
验收测试:在用户的参与下,把软件系统作为单一的实体进行测试,使软件系统能满足用户的需要。测试内容与系统测试基本相同。 (验收阶段)
平行测试: 新旧两个系统同时运行进行比较,避免风险的同时给用户对新系统一段熟悉的时间(运行阶段)
18、敏捷软件开发与传统瀑布模型有何不同
敏捷软件开发是一种迭代的开发方法,强调适应性和灵活性,允许项目在开发过程中调整需求和范围。而传统的瀑布模型是一种线性顺序的开发方法,每个阶段必须按顺序完成,不允许返回到前一个阶段
19 、UML中活动图、状态图、顺序图都分别描述什么?
活动图强调的是从活动到活动的控制流, 是一种表述过程基理、 业务过程以及工作流的技术。 活动图 它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模
状态机图常用来描述业务或软件系统中的对象在外部事件的作用下, 对象的状态从一种状态 状态机图 到另一种状态的控制流。
顺序图描述的是对象之间的消息发送关系,而不是类之间的关系
20、面向对象的基本概念类、对象、封装、继承等定义是什么?
类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
对象(Object)是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组 属性和对这组属性进行操作的一组服务组成,是类的一个实例
封装(Encapsulation)是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
继承性:如果一个类 A 继承自另一个类 B,就把这个 A 称为"B 的子类",而把 B 称为"A 的 父类"。继承使得相似对象可以共享程序代码和数据结构,大大减少程序中的冗余信息;继 承可以把已有的一般性的类具体化来提高软件的可重用性。
多态性(Polymorphism)是指在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为
21、用例图的作用是什么?
用例图是外部参与者所能观察到的系统功能的模型图。 由一组用例、 参与者及它们之间的关 系组成。主要用于对系统、子系统或类的功能行为进行建模。参与者是与系统交互的外部实体,可以是人,也可以是其它系统。用例是从用户的角度描述系统的行为(功能)它将系 统的功能描述成一系列事件,这些事件最终对参与者产生可观察结果
23、列出UML的动态建模机制及特点
答:
状态图(State Diagram):态图描述了一个对象在其生命周期内可能经历的状态变化,以及触发这 些状态变化的事件
顺序图(Sequence Diagram):序列图用于展示对象之间在特定场景下的交互顺序,即消息传递的时间顺序
协作图(Collaboration Diagram):协作图也是一种交互图,它强调的是对象之间的结构关系,即对象间的网络连接,以及它们如何协同工作来实现某个功能
活动图(Activity Diagram):活动图用于描述业务流程或工作流,它以类似流程图的方式展示操作的流转,适用于描述系统的动态视图,特别是那些涉及并行处理的情况
24、软件的可维护性是软件设计师最关注的性能,谈谈为了获得软件良好的可维护性,在设计时应该 注意哪些问题?
答:为获得软件的良好可维护性,在设计阶段应该做一些变更实验,检查系统的可维护性、灵活性和可移植性,设计时应该将今后可能变更的内容与其他部分分离开来,并且遵循高内聚、低偶合的原则。
25、 什么是软件生存周期?把生存周期划分为阶段的目的是什么?
答:一个软件从开始计划起,到废弃不用止,成为软件的生存周期。把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,
增长而大大增加了的软件复杂性变得较易控制和管理。
2 6、 什么是黑盒测试?黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:等价分类法、边界值分析法、错误推测法和因果图等技术。
2 7、 什么是白盒测试?白盒测试主要采用的技术有哪些?
白盒测试是测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。
28、请简述软件工程的主要目标
软件工程的主要目标是确保软件的质量、提高软件开发的效率、降低软件开发和维护的成本,并满足用户的需求。它强调使用工程化的原则和方法来指导软件的开发和维护过程
29、请说明什么是系统架构设计,它包含那些部分别完成什么任务
对于软件系统来说,描述系统架构一般涉及到两个方面的内容:业务架构和软件架构。这两方面内容分别针对于人们对业务领域的理解和对系统领域的理解。这两者是需要和谐统一的,前者从业务需求的角度出发,理清物理结构图和逻辑结构图,划分出每个子模块。确定为什么要这么划分,各个子模块之间如何交互,每个子模块具有哪些接口;后者从解决技术上讨论,着重讨论采用什么样的技术,如何分层,采用哪些好的技术特性,采用这些技术特性会为我们的工作带来哪些好处,为什么要这么做等
30、 为什么说软件的维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。
31、请简述软件测试的目的和主要类型
软件测试的目的是发现软件中的错误和缺陷,确保软件的质量和可靠性。
软件测试的主要类型包括:单元测试(针对软件的最小可测试单元进行测试)、集成测试(测试软件各组件之间的集成情况)、系统测试(测试整个软件系统的功能和性能)以及验收测试(验证软件是否满足用户需求)
32、在软件开发生命周期模型中,螺旋模型具有哪些优点,哪些缺点
螺旋模型的优点:
设计上的灵活性,可以保证在项目的各个阶段进行变更。
以小的分段来构建大型系统,使资源、成本和进度的估计变得更加简单容易
用户始终参与到每个阶段的开发中,保证了项目的正确性与可控性。
螺旋模型的缺点:
采用螺旋模型需要具有丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能及时识别出潜在的风险,或者消除风险的能力不足,都会造成极其重大的损失。
过多的迭代次数会增加软件开发成本,延迟交付使用的时间
3 3、 软件测试包括哪些步骤?同时说明这些步骤的测试目的是什么?
答:(1)单元测试,目的是代码达到模块说明书的要求(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的完整的程序(3)确认测试,目的是确认程序系统是否满足软件需求规格说明书的要求(4)系统测试,目的是检查能否与系统的其余部分协调运行,并且完成SRS对他的要求。
34、用例之间都有哪些关系?分别是什么?都有什么特点?
用例之间主要存在三种关系:包含关系、扩展关系和泛化关系
(1)、包含关系:表示一个用例(基本用例)在特定条件下需要执行另一个用例(被包含用例)的行为。被包含的用例通常是多个用例之间共享的公共步骤或功能
(2)、扩展关系:表示在特定条件或情况下,一个用例(扩展用例)可以增加或修改另一个用例(基本用例)的行为。扩展关系中的额外功能是可选的,不是必须的。
(3)、泛化关系:表示用例之间的继承关系,类似于面向对象编程中的类继承。子用例(特殊用例)继承了父用例(一般用例)的所有特性,并可能在此基础上添加新的特性或者覆盖某些特性。
35、什么是软件质量?如何保证软件质量
软件质量是指软件满足明确或隐含需求的能力的特性和特征的总和。为了保证软件质量,需要在软件开发过程中采用严格的质量管理方法和工具,如代码审查、测试、持续集成和自动化部署等。同时,还需要建立有效的质量保证体系,包括制定质量标准、进行质量评估和改进质量过程等。