软件工程导论复习
一、单项选择题
1,造成大型软件开发困难的根本原因是
2,线性顺序模型规定了软件过程的活动主要包括:制定计划、需求分析、软件设计、编码、软件测试、运行与维护、这些活动相互衔接,具有很强的顺序性和相互依赖性,这种模式是–》瀑布模型
3、软件会逐渐退化而不会磨损,其原因是–》不断的变更使组件接口之间引起错误
4、需求分心阶段的任务是确定–》软件系统的功能
5、数据流图DFD图有四种基本元素:外部实体、数据流、处理或加工、数据存储
6、软件设计阶段的输出主要是–》设计规格说明书
7、内聚表示为一个模块–》可以被更加细化的程度
8、单元测试内容包括:模块接口测试,边界条件测试,错误处理测试、重要路径测试、局部数据结构测试
9、确认软件的功能是否与需求规格说明书中所要求的的功能相符的测试属于-》确认测试
10、因计算机和软件环境变化而做出的修改软件的过程称为-》适应性维护
11、统一建模语言-》UML
二、填空题
1、软件是由:数据、程序和文档构成的
2、需求分析最终结果是产生:需求分析报告(软件需求规格说明书)
3、从工程管理方面来分类,软件设计一般分为:总体设计和详细设计,他们之间的关系是全局和局部。
4、在软件结构化设计方法中,指导模块划分的最重要的原则是高内聚和低耦合。
5、产品需求又可以细分为:
6、在需求工程过程中,最重要的的工程活动包括:需求获取,需求分析,需求定义和需求验证
7、在软件结构中,由一个模块直接控制其他模块数量称为:扇出数
8、模块独立性中,使得每个模块只完成一个相对具体的特点子功能,并且与其他模块的关系简单。
9、在测试过程中,需要考虑考察模块间接口和模块之间的联系的测试属于:集成测试
10、软件测试用例主要是由:合法输入和非法输入两部分组成。、
11、软件工程包括三要素:过程、方法和工具
12、软件的生存周期可以分为:软件计划、需求分析、软件设计、编码、测试、维护与运行退役等。
13、软件开发模型有:瀑布模型、快速原型模型、增量模型、螺旋模型和喷泉模型等。
14、软件分析的两个主要任务:分析和建模,描述和表达。
15、软件分析的步骤:调查研究、分析建模、需求描述和需求验证
16、结构化分析方法所建立模型要素:实体-关系图(E-R图)、数据流图(DFD),状态转换图(STD)和数据词典(DD)。
17、实体关系图的主要成分:实体、关系和属性。
18、数据流图的组成元素:数据流、数据处理或加工、数据存储和外部实体。
19、状态转换图组成元素:状态,事件和转换。
20、三种数据:只包含一个数据的数据项(数据元素),由多个相关数据项组成的数据流,数据文件或数据存储。由数据元素组成数据的三种方式:顺序、选择、重复。
21、开发阶段组成:软件设计、编码和软件测试
22、软件设计阶段的任务:(划分模块,确定软件结构)(确定系统的数据结构)(设计用户界面)
23、软件设计可以从活动任务和过程管理两方面分类。
24、从活动方面分类可分为:数据设计、体系结构设计、接口设计、构件设计、部署设计。
25、从工程管理方面分类可分为:总体设计、详细设计
26、根据开发阶段不同(基本过程),可以将其分为:单元测试、集成测试、确认测试、系统测试和验收测试
27、根据测试实施组织方式不同,可将其分为:开发方测试、用户测试、第三方测试
28、根据测试技术不同,可以将其分为:白盒测试、黑盒测试、灰盒测试
29、根据是否需要执行被测程序,可以将其分为:静态测试和动态测试
30、对软件动态测试最常用的方法:白盒测试和黑盒测试
31、白盒测试法包括:逻辑覆盖法和基本路径测试法
32、逻辑覆盖法可分为:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖和条件组合覆盖。
33、黑盒测试包括:等价划分法、边界值分析法、错误推测法等。
34、验收测试两类:Alpga(α测试)测试和Beta(β测试)测试
35、软件调试方法:硬性纠错法(蛮干法)、跟踪法、演绎法、归纳法、试探法、对分查找法
36、软件维护的类型:适应性维护、改正性维护、完善性维护和其他维护
37、面向对象建模的三种模型:对象模型、动态模型和功能模型,相互补充和相互配合
38、UML的主要9种图形:用例图、类图、对象图、状态图、顺序图、活动图、协作图、构件图、部署图
三、名词解释
1、软件危机:泛指在计算机软件开发和维护过程中所遇到的一系列严重问题。
2、软件工程:为了经济的获得可靠的和能在实际机器上面高校运行的软件,而建立和使用的健全的工程规则。
3、软件生命周期:如果客户是满意的,那么久可安装产品,并且开始运行和维护它。如果产品到达了其有用生命的尽头就会退役、报废或停止使用。这一系列过程。
4、耦合性:是对个模块之间互联程度的度量,不同模块之间相互依赖得越紧密则耦合程度越高。
5、黑盒测试法:把被测程序当作一个黑盒, 不考虑程序内部结构和内部特性,测试者只需要知道该程序输入、输出hi间的关系或程序的功能的情况下,检查程序是否符合它的功能。
6、软件维护:就是在软件运行维护阶段,为了改正软件错误,或为了满足用新的要求,而对软件进行改错、变更或进化的过程。
7、瀑布模型:是将软件生存周期的各项活动规定为按固定顺序连接而成的若干工作工作阶段,形如瀑布。制定计划、需求分析、软件设计、程序编写、软件维护、软件测试和运行维护。
8、螺旋模型:采用周期性的方法,来进行开发。原型模型+瀑布模型,包含四个任务区:制定计划、风险评估、实施工程和评估。
9、软件需求:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
10、实体-关系图:用于描述数据对象之间的关系,它代表软件的数据模型。
11、数据流图:描绘系统的逻辑模型,只描绘数据流在系统中流动和处理的情况,是逻辑系统的图像表示。
12、状态转换图:是用于指明状态系统在外部事件作用下将会如何动作,表明了系统的各种状态,以及各种转态间的转换。
13、数据词典:是描述数据的信息集合,是使用的所有数据元素定义的集合。
14、内聚性:是指模块内部各元素之间彼此结合的紧密程度。
15、深度:表示软件结构中从顶层模块到最底层模块的层数
16、宽度:表示控制的总分布
17、扇出数:指一个模块直接控制下属模块个数
18、扇入数:指一个模块的直接上属模块个数
19、结构图的主要构成:模块、调用和数据
20、软件测试:是指利用人工或自动的方法执行和评价软件各个模块的过程。
21、静态测试:是指测试程序,不在机器上测试,而是采用人检测和计算机辅助静态分析的手段,对程序进行检测
22、动态测试:是指在计算机上运行被测程序,通过输入测试用例,对其运行情况进行分析,发现其表现的行为与设计规约或用户需求不一致的地方。
23、白盒测试法:测试者可以看到被测程序源代码和内部结构,并根据内部结构找到合适的测试用例,以检验程序中的每条通路或关键元素是否都按预定要求工作。
24、逻辑覆盖法:是通过对程序逻辑结构的遍历实现程序的覆盖。它是一系列测试过程的总称。
25、基本路径法:是在程序控制流程图的基础是哪个,通过分析控制构造环路的复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
26、单元测试:分别完成每个单元的测试任务,以确保每个模块能正常工作。
27、集成测试:将已经测试过的单元模块,按照一定的顺序组成系统,同时进行测试。主要方式有非渐增式测试和渐增式测试
28、确认测试:完成集成测试以后,要对开发工作初期制定的确认标准进行检验。包括:进行有效性测试与软件配置审查两项工作。
29、系统测试:完成确认测试以后,给出的应该是合格的软件产品,但为检验他是否与系统的其他部分协调工作,需要进行系统测验。
30、验收测验:是检验软件产品质量的最后一道工序。
四、简答题
1、什么是软件危机?产生的原因?具体原因?软件危机的表现?
四、简答题
1、什么是软件危机?软件危机的表现有哪些?软件危机产生的原因?引起软件危机的具体原因?
解:
软件危机:泛指在计算机软件开发和维护过程中所遇到的一系列严重问题。
产生的原因:
- 高级语言的出现
- 操作系统的发展引起了计算机应用方式的变化
- 大量数据处理导致第一代数据库管理系统的诞生
具体原因:
- 用户需求不明确
- 缺乏正确的理论指导
- 软件开发规模越来越大
- 软件开发复杂度越来越高
表现:
- 软件开发进度难以预测
- 软件开发成本难以控制
- 开发额软件产品不能满足客户需求
- 软件产品的质量无法保证
- 软件产品难以维护
- 软件缺少适当的文档资料
2、软件设计与软件需求的差异哪里?
解:
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望,主要任务就是让用户和开发者共同明确将要开发一个什么样的系统。最终生成《需求规格说明书》,而软件设计就是把书中的需求转化为可行的解决方案,并把解决方案反映到设计说明书中。两者面向的对象不一样,前者主要面向客户,后者主要面向设计者,生成的文档不一样,前者是《需求规格说明书》,后者是《设计说明书》
3、说明等价类划分和边界值分析法的内容。
解:
等价类划分就是将输入数据划分为两类,分别是有效等价类和无效等价类,然后为每一个等价类规定外衣编号,设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖过得有效等价类。重复直到所有等价类均被覆盖。设计一个新的测试用例,使其只覆盖一个无效等价类。重复直到所有无效等价类覆盖。
边界分析法就是在边界情况附件的测试用例,可以是程序错误暴露出来,首先确定边界,然后选取测试数据。通常边界值分析法是对等价类划分法的补充。
4、单元测试的内容主要包括?系统测试的主要内容?
解:
单元测试:
- 模块测试
- 局部数据结构测试
- 重要的执行路径测试
- 错误处理测试
- 边界条件测试
系统测试:
- 功能测试
- 性能测试
- 安全测试
- 恢复测试
- 容量测试
- 压力测试
- 文档测试
5、简述软件测试的基本任务,并说明测试与调试有什么区别?
解:
基本任务就是以最小的人力、物力和时间,找出软件中潜在的各种错误与缺陷,通过修正各种错误和缺陷,提高软件质量。
软件调试是确定错误的原因和位置,并改正错误的过程。
测试的目的是找出存在的错误,而调试目的是定位错误并修改程序已修改错误。测试是在软件生命周期的全过程,而调试只在软件生命周期的编码阶段中。测试主要有测试人员进行,而调试主要由开发人员进行。
6、一个好的软件结构形态准则?
解:
顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。
7、选择编程语言时需要考虑的因素?
解:
- 待开发的应用领域,即项目的应用范围
- 用户的要求
- 软件开发人员的喜好
- 系统的可移植性要求
- 算法和数据结构的复杂性
- 平台支持
8、软件测试的目的?软件测试的基本原则?
解:
软件测试的目的在于检验他是否满足规定的需求,或弄清预期结果与实际结果之间的差别。也就是软件测试就是以最少的资源,找出软件中潜在的各种错误与缺陷,同修正各种错误和缺陷,提高软件质量。
基本原则:
- 穷举测试不可行的
- 测试是由风险的
- 软件测试只能证明缺陷的存在
- 软件中存在的错误数与已发现的错误数成正比
- 测试用例应该包括测试输入数据和预期输出,输入包括:合法和不合法输入
- 注意测试中的群集现象
- 妥善保存测试计划、测试用例
- 尽早开始测试工作,并贯穿整个开发过程
五、综合题
1、环形复杂度:
(E:是流图中边的数量,N:流图中的节点数量)
V(G) = E-N+2=控制流图中的区域数量=控制流图中判定节点数+1
根据环形复杂度可以确定独立路径数,即:测试用例数