软件工程复习
- 一.名词解释与问答
- 1.软件产品的特点是什么?
- 2.阐述软件工程的定义和目标,试说明软件工程是如何克服软件危机的。
- 3.什么是软件生存周期?软件生成周期把软件产品的分成哪几个阶段?各阶段的任务什是么?
- 4.什么是软件工程过程模型?瀑布、增量、原型和螺旋模型各自有什么特点?
- 5.什么是软件生命周期?它有哪几项活动?
- 6.可行性分析的任务、步骤和目的
- 7.需求分析目的和主要任务是什么?
- 8.什么是数据字典 ?数据字典与数据流图的关系
- 9.概要设计的基本任务是什么?
- 10.什么是模块?模块有那些基本属性?
- 11.模块设计的原理是什么?
- 12.软件结构优化原则有那些?
- 13.什么是耦合?模块的耦合包括哪些类型?
- 14.什么是内聚?模块的内聚包括哪些类型?
- 15.什么是详细设计?该阶段的基本任务是什么?
- 16.什么是结构化程序设计?简述结构化程序设计的基本要点。
- 17.人机界面设计的基本原则
- 18.什么是编码风格?应在哪些方面培养良好的编码风格?
- 19.编码风格的重要性
- 20.测试的相关概念
- 21.软件测试的目的与类型、测试过程。
- 22.单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?
- 23.什么是黑盒测试和白盒测试?它们都适应哪些测试?
- 24.简述软件测试和软件调试有什么区别?
- 25.维护目的和主要任务?维护的类型有哪些?
- 26.决定软件可维护性的因素有哪些?它们是怎样影响软件的可维护性?
- 二.填空题
- 三.判断题
- 四.选择题
一.名词解释与问答
1.软件产品的特点是什么?
- 软件是一种逻辑产品,无形态,具有抽象性。
- 软件是开发而形成的,无明显的制造过程。与硬件相比,软件开发更依赖于开发人员的业务素质、智力以及人员的组织、合作和管理。软件成本集中在开发上,主要反映在人力成本上,而且开发成本难以估计。
- 软件不会“磨损”和老化,但存在退化问题。
- 大多数软件是定做的,不是通过已有构件组装而成。
- 主要靠脑力劳动生产。
- 开发和维护成本高。
2.阐述软件工程的定义和目标,试说明软件工程是如何克服软件危机的。
- 定义:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来
- 目标:在给定成本、进度的前提下,开发出满足用户需求的高质量的、易于维护的软件产品。
- 克服危机的方法:软件工程是从技术和管理两方面利用一套科学的技术和管理方法进行软件的开发,从而提高软件质量和生产率。
3.什么是软件生存周期?软件生成周期把软件产品的分成哪几个阶段?各阶段的任务什是么?
- 软件生存周期(SDLC,软件生命周期)是软件的产生直到报废的生命周期
- 软件生存周期由8个阶段组成:
- (1)问题定义:确定要求解决的问题是什么?
- (2)可行性研究:确定在时间和资源的约束条件下,能否完成指定的任务?包括:技术可行性、经济可行性、应用可行性(法律可行性、社会可行性、操作可行性)。若可行,则制定项目所需费用、资源、时间的开发计划。
- (3)需求分析:准确地确定“软件系统必须做什么”,即明确目标系统必须具备的功能和对系统的约束。
- (4)概要设计:确定在总体上应该怎样实现目标系统,包括:系统结构设计、软件结构设计、接口设计和数据结构设计。
- (5)详细设计:对软件结构中的模块进行精确描述—算法设计。
- (6)编码及模块测试:把模块算法转换成特定程序设计语言的正确的、容易理解、容易维护的程序模块。
- (7)综合测试:发现和纠正程序中的错误,保证软件功能和性能符合需求规格说明书规定的要求。包括集成测试、确认测试和系统测试。
- (8)软件维护:软件投入使用后继续对软件的查错、纠错和改进。使系统持久地满足用户的需要。包括:改正性维护、适应性维护、完善性维护、预防性维护。
4.什么是软件工程过程模型?瀑布、增量、原型和螺旋模型各自有什么特点?
- 软件过程模型也叫软件生存期模型、软件工程范型,是软件过程的一种抽象表示。
- 瀑布模型:严格按照软件生存期的阶段划分顺序和各阶段的目标、任务、文档的要求来进行开发。该模型以文档为驱动。每一活动结束后,通过严格的阶段复审和确认,得到一致、完整、准确的良好文档,以“冻结”这些文档为该阶段结束的标志,并作为下一阶段活动的唯一基础;以每一步的正确性和完整性来保证最终系统的质量。
- 增量模型:先按瀑布模型开发一个满足基本要求的系统,然后根据用户在使用中提出的新需求在进一步完善形成新的版本,这个过程不断重复,直到最终的完善产品。
- 原型模型:先根据用户对需求的描述,通过软件工具构造一个软件系统的原型来描述目标系统的主要功能,让用户进行评价,并根据用户意见进行改进。随着不断实验、评价和修改,最后使得在功能上完全满足用户需求。一般情况下,软件系统原型不是最终的目标系统,它只是在功能上描述了用户需求,忽略了对软件质量特性的要求,避开了管理对质量的控制。
- 螺旋模型:螺旋模型是一个风险驱动模型,将开发过程分为几个螺旋周期,每个螺旋周期大致与瀑布模型相同。每个螺旋周期可分为四个工作步骤:(1)制定计划:确定软件目标,选定实施方案,明确开发限制条件;(2)风险分析:分析所选方案,识别风险和消除风险;(3)开发实施:实施软件开发;(4)用户评估:评价开发工作,提出修改意见。
5.什么是软件生命周期?它有哪几项活动?
- 又称为软件生存周期,是指软件从产生直到报废或停止使用的生命周期。
- 软件生命周期内的活动包括:问题定义、可行性分析、需求分析、概要设计、详细设计、编码及模块测试、综合测试、软件维护。
6.可行性分析的任务、步骤和目的
- 可行性研究任务:可行性研究最根本的任务是对以后的行动方针提出建议。
- 主要任务是从下面几方面研究每种解法的可行性:技术可行性、经济可行性、应用可行性(法律可行性、社会可行性、操作可行性)
- 可行性研究步骤:
- (1)复查系统规模和目标;
- (2)研究目前正在使用的系统;
- (3)导出新系统的高层逻辑模型;
- (4)进一步定义问题;
- (5)导出和评价供选择的解法;
- (6)推荐行动方针;
- (7)草拟开发计划;
- (8)书写文档提交审查;
- 可行性研究目的:可行性研究的目的不是解决问题,而是确定问题是否值得去解决;
7.需求分析目的和主要任务是什么?
- 需求分析目的:不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。并在需求分析阶段结束之前,由系统分析员写出软件需求规格说明书,以书面形式准确地描述软件需求。
- 需求分析的主要任务:描述系统的功能需求、性能需求、数据需求、可靠性/可用性需求、出错处理需求、接口需求、约束条件、其他需求。
8.什么是数据字典 ?数据字典与数据流图的关系
- 数据字典是关于数据信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具。
- 数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用
- 数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
9.概要设计的基本任务是什么?
- 系统结构设计:确定物理系统的具体实现方案。概括地说,系统应该怎样做:划分出组成系统的物理元素:程序、文件、数据库、人工过程和文档。
- 软件结构设计:确定系统中每个程序组成的模块、模块之间的联系(结构)。
- 数据结构或数据库设计:确定系统需要的数据及数据间的相互关系。
- 系统接口设计:模块接口设计、外部接口设计和人机界面设计。
10.什么是模块?模块有那些基本属性?
- 模块:是可以单独命名和编译的程序基本单位。
- 模块基本属性:
- (1)接口:模块的输入与输出
- (2)功能:模块做什么;
- (3)逻辑:描述模块内部怎么做;
- (4)状态:模块使用时的环境和条件。
- 其中,功能、接口和状态反映模块的外部特性,逻辑反映模块的内部特性。
11.模块设计的原理是什么?
- 模块设计的原理:是尽量做到模块的高内聚低耦合,以提高模块的独立性。
- 软件设计的基本原则包含那些内容?
- 模块化:以模块作为程序设计的基本单位,把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来,并通过模块间的调用关系把它们组成一个完整的整体,完成指定的功能。
- 抽象:解决复杂问题的唯一有效的方法就是运用抽象的思维方式,首先用一些高级的抽象概念构造和理解它;这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直到最低层次的具体元素。
- 信息隐蔽:模块内部的信息(处理过程和数据),应对不需要了解这些信息的模块隐蔽起来,使它们不能访问。
- 模块独立:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块。衡量模块独立程度的两个定性度量标准–内聚和耦合。
12.软件结构优化原则有那些?
- 改进软件结构提高模块独立性
- 模块规模应该适中
- 深度、宽度、扇出和扇入应适当
- 模块的作用域应在控制域之内
- 尽量降低模块接口的复杂程度
- 设计单入口出口的模块
- 模块功能应该可以预测
13.什么是耦合?模块的耦合包括哪些类型?
- 耦合是对一个软件结构内不同模块之间互连程度的度量。
- 模块的耦合包括以下几种类型:
- 数据耦合
- 控制耦合
- 公共耦合
- 内容耦合。
14.什么是内聚?模块的内聚包括哪些类型?
- 内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。
- 模块的内聚包括以下几种类型
- 低内聚:偶然内聚、逻辑内聚、时间内聚
- 中内聚:过程内聚、通信内聚
- 高内聚:顺序内聚、功能内聚
15.什么是详细设计?该阶段的基本任务是什么?
- 详细设计是软件设计的第二个阶段,确定每个模块的具体执行过程,也称过程设计。
- 根本任务:
- (1)为软件结构中的每个模块选择算法,并用选定的某种表达工具给出清晰的描述。
- (2)块内数据结构设计
- (3)数据库物理设计
- 详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
16.什么是结构化程序设计?简述结构化程序设计的基本要点。
- 结构化程序设计是按照一组能提高程序的可读性和易维护性的规则而进行的程序设计方法,目的是为了使程序具有一种合理的结构,以使程序易理解和维护,便于保证和验证程序的正确性。
- 基本要点:
- 自顶向下、逐步求精的设计方法
- 使用顺序、选择、循环三种基本控制结构
- 在三种基本控制结构中保持单入口、单出口
17.人机界面设计的基本原则
- 用户界面适合于软件的功能;
- 容易理解、简洁明确;
- 风格统一,保持一致性;
- 及时反馈信息;
- 出错处理;
- 适应各类客户、良好的兼容性;
- 个性化、体现特色;
- 合理布局;和谐色彩
18.什么是编码风格?应在哪些方面培养良好的编码风格?
- 编码风格:所谓编码风格是指书写源程序的习惯、程序代码的逻辑结构与习惯的编程技术。从软件工程要求出发,编码风格应包括以下要素:程序文档化、数据说明、语句构造、输入输出。
- 应在那些方面注意培养良好的编码风格:
- (1)程序内部的文档;
- (2)数据说明;
- (3)语句构造;
- (4)输入输出;
- (5)效率;
19.编码风格的重要性
- 阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供人阅读的文章,应当在编写程序时讲究程序的风格,这将大量地减少人们读程序的时间
- 良好的编码风格有助于编写出可靠而又容易维护的程序
- 编码的风格在很大程度上决定着程序的质量。
20.测试的相关概念
- 编码:编程就为是用编程(程序)语言把软件表达翻译为计算机可以理解的形式—用某种程序设计语言书写的程序。
- 软件测试:是软件投入运行之前,对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。
- 黑盒测试:不考虑程序内部结构和处理过程,只依据软件的需求规格说明书,检查程序的功能是否符合它的功能说明。因此,黑盒测试又称功能测试或数据驱动测试。
- 白盒测试:按照程序内部逻辑测试程序。检查程序中的每条通路是否都能按照预定要求正常工作。这种测试完全了解程序的结构和处理过程。因此,白盒测试又称为结构测试或逻辑驱动测试。
单元测试:是检查程序模块是否正确实现了规定的功能,目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。 - 集成测试:把模块按设计要求组装成子系统或系统的过程中的测试。
- 确认测试:以需求规格说明为基准,验证软件的有效性的测试,分为:Alpha测试(由用户在开发者的场所进行),Beta测试(由软件的最终用户们在一个或多个客户场所进行)。
系统测试:将经过确认测试的软件,与计算机硬件、外设、支持软件等一起,在实际运行环境下测试。 - 渐增式测试:在集成测试中,的模块一个一个地加入进行测试。当一个模块加入测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增式测试。
- 非渐增式测试:是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。这种方法称为非渐增式测试方法。
- 回归测试: 指重新执行已经做过的测试。每当改正软件错误的时候,可能导致软件配置的某些成分的改变,这些改变可能引进新的错误。回归测试就是保证由于调试或其它原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。
- 调试: 根据测试所暴露的错误,诊断和改正其错误的过程。
21.软件测试的目的与类型、测试过程。
- 软件测试是一个为了寻找软件错误而运行程序的过程。
- 目的就是为了发现软件中的错误,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例,一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
- 软件测试主要分为白盒测试和黑盒测试两大类。
- 白盒测试技术:逻辑覆盖和基本路径覆盖。
- 黑盒测试技术:等价类划分、边界测试、错误推测、因果图。
- 测试过程:
- 单元测试
- 集成测试
- 确认测试
- 系统测试
22.单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?
- 单元测试:检查程序模块是否正确实现了规定的功能,发现模块在编码或算法中的错误,目的是保证每个模块作为一个单元能正确运行。
- 集成测试:主要目标是检查与设计相关的模块间与接口有关的问题。
- 确认测试:主要目标是验证软件的有效性,确保软件有效实现了软件需求规格说明书的要求,需求规格说明书是确认测试的依据。
- 它们之间的不同有:
- 测试内容不同
- 测试方法不同:单元测适用用白盒法,集成测试使用渐增式或非渐增式测试;确认测试使用黑盒法。
- 发现的错误不同:单元测试发现的错误是编码阶段产生的错误;集成测试发现的是设计阶段引入的错误;确认测试发现的错误主要上需求分析阶段产生的错误。
- 涉及的文档不同:单元测试涉及详细设计和编码文档;集成测试涉及概要设计和详细设计文档;确认测试涉及需求分析阶段产生的文档。
- 相互间的关系:单元测试、集成测试、确认测试是顺序进行的。
23.什么是黑盒测试和白盒测试?它们都适应哪些测试?
- 黑盒测试:不考虑程序内部结构和处理过程,只依据软件的需求规格说明书,检查程序的功能是否符合它的功能说明。
- 白盒测试:按照程序内部逻辑测试程序。检查程序中的每条通路是否都能按照预定要求正常工作。这种测试完全了解程序的结构和处理过程
- 白盒测试适应单元测试,包括逻辑测试和基本路径测试。测试数据对程序的逻辑覆盖的程度决定了测试完全性的程度。
- 黑盒测试适合确认测试。测试的方法包括等价类划分、边界值分析、错误推断等。
24.简述软件测试和软件调试有什么区别?
- 目的不同:测试是为了发现错误,调试是定位和改正测试发现的错误。因而各自使用的技术也不同。
- 进行的方式不同:测试是有计划的,而调试不受时间约束的。
25.维护目的和主要任务?维护的类型有哪些?
- 软件维护是软件生命周期中最后一个、持续时间最长的阶段。
- 主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件,目的是提高软件的可靠性、可用性,延长软件的寿命。
- 维护的类型有:
- 改正性维护:因为软件测试不可能暴露出一个大型软件系统中所有潜藏的错误,在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员。把诊断和改正错误的过程称为改正性维护
- 适应性维护:为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。
- 完善性维护:在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。为了满足这类要求,需要进行完善性维护。这项维护活动通常占软件维护工作的大部分。
- 预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件,这项维护活动通常称为预防性维护,目前这项维护活动相对比较少。
26.决定软件可维护性的因素有哪些?它们是怎样影响软件的可维护性?
- 可理解性:软件可理解性表现为外来读者理解软件的结构、接口、功能和内部过程的难易程度。
- 可测试性:诊断和测试的难易程度主要取决于软件容易理解的程度。良好的文档对诊断和测试是至关重要的。
- 可修改性:软件容易修改的程度设计原理和规则直接有关。耦合、内聚、局部化,控制域与作用域的关系等等,都影响软件的可修改性。
- 可移植性:一个程序被移植到一个新的计算环境的可能性的大小,或表明程序可以容易地、有效地在各种各样的计算环境中运行的程度。
- 可重用性:重用指同一事物不作修改或稍加改动就在不同环境中多次重复使用。大量使用可重用的软件构件来开发软件,可以明显提高软件可维护性。
二.填空题
- 结构化方法是一种面向数据流的开发方法,分为结构化分析和结构化程序设计。
- 为了减少软件开发费用,缩短软件开发周期、减少软件内部潜在的错误,可以减少程序的复杂性,以提高软件的简单性和可理解性。
- 结构化程序设计方法是使用三种基本控制结构构造程序。
- 与编码风格有关的因素有数据说明、语句构造、输入输出、效率等,其中还有一个重要的因素是源程序文档化.
- 结构化程序设计方法是提倡开发人员的组织形式是主程序员组
- 增量模型在开发过程中以一系列增量方式开发系统,忽略某些阶段的细节,从而尽早产生工作软件
- 数据流图仅反映系统必须完成的逻辑功能,所以它是一种功能模型
- 可行性研究实质上是一次简化,压缩了的 需求分析和设计
- 可行性研究的三个方面是技术可行性、经济可行性、应用可行性
- 数据流图 和 数据字典_共同构成系统的逻辑模型。
- 需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能 需求
- 在软件概要设计阶段,建立软件结构后,还应该为每个模块写一份处理说明和 (接口说明)
- 两个模块都使用同一张数据表,模块的这种耦合称为(公共耦合)
- 一个模块内部各程序段都在同一张表上操作,这个模块的内聚性称为( 通信内聚 )
- 软件结构是以( 模块 )为基础而组成的一种控制层次结构
- 反映软件结构的基本形态特征是( 深度、宽度、扇入、扇出 )
- 一个模块把数值作为参数传送给另一个模块,这种耦合方式称为( 数据耦合 )
- 两个模块通过全程变量相互作用,这种耦合方式称为( 公共耦合 )
- 一个模块的作用范围指( 受该模块内一个判定影响的所有模块 )的集合
- 一个模块的控制范围指( 模块本身以及其所有从属模块 )的集合
- 结构化设计以( 数据流图 )为基础映射成软件结构
- 为了防止软件概要设计的错误传播到开发后续阶段,在概要设计文档完成以后,要进行( 软件评审 )
- 结构化程序设计方法的要点是使用( 三种基本控制结构 ), 自顶向下、逐步求精地构造算法或程序
- 结构化分析的基本思想是采用(自顶向下逐步分解)方法,能有效的控制系统的复杂性
- 当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时, 其加工逻辑用(判定表或判定树)描述较好.
- 数据流图中有四种符号元素,它们是(数据流,加工,数据存储,数据源点和终点)
- 在详细设计阶段,一种历史悠久,使用最广泛的描述程序逻辑结构的工具是( 程序流程图 )
- 结构化程序设计技术指导人们用良好的思想方法开发(容易理解, 容易验证)的程序
- 详细描述处理过程常用的三种工具是图形,语言和( 表格 )
- 软件工程方法学三要素: 方法 、 工具 、过程
- 详细设计的目标不仅是逻辑上正确的实现每个模块的功能, 还应该使设计出的处理过程 ( 清晰易读 )
- 在详细设计阶段,除了对模块内的算法进行设计,还应该对模块内的(数据结构)进行设计
- 为了提高程序的易读性,同时减少错误,提高软件开发效率,编码时注意养成良好的 ( 编码风格 )
- 软件测试程序不在机器上运行, 而是采用人工检测和计算机辅助分析检测的手段称( 静态 )测试.
- 运行被测试程序的方法称为( 动态 )测试。
- 动态测试中, 主要测试软件功能的方法称为( 黑盒 )法。
- 用等价类划分法设计一个测试用例时,使其覆盖( 尽可能多的)尚未被覆盖的合理等价类。
- 用等价类划分法设计一个测试用例时,使其覆盖( 一个 )不合理等价类。
- 在单元测试时,需要为被测试模块设计( 驱动模块与桩模块 )
- 在集成测试时有两种测试方法,它们是( 渐增式和非渐增式 )
- 软件测试是为了( 发现错误 )而执行程序的过程
- 经典的结构程序设计只允许使用 顺序 、 循环 和 选择 这三种基本控制结构;
- 用户界面的 可使用性 是用户界面设计最重要的也是最基本的目标。
- 为了识别和纠正软件在运行中的错误而进行的维护称为 校正性 维护。
- 运行测试用例,使得被测试程序中每个判定分支至少执行一次,这种逻辑覆盖标准称为( 判定覆盖 )
- 需求分析过程应该建立三种模型:数据模型、功能模型、行为模型。
- 结构化设计以 数据流 为基础映射成软件结构。
- 在软件维护中,因修改软件而导致出现的错误或其它情况称为( 维护的副作用 )
- 维护阶段是软件生存周期中时间最长的阶段,也是花费精力和费用( 最多 )的阶段
- 在软件交付使用后,由于在软件开发过程中产生的错误没有完全彻底在开发阶段发现,必然有一部分隐含错误带到( 维护 )阶段
- 采用手工方法开发软件只有程序而无文挡,这是一种( 非结构化 )维护
- 所有的软件维护申请报告要按规定方式提出,该报告也称( 软件问题 )报告
- 常见的软件概要设计方法有三大类:以数据流图为基础构造模块结构的 结构化设计方法 ,以数据结构为基础构造模块的 Jackson 方法 ,以对象、类、继承和通信为基础的 面向对象设计方法 。
- 成功项目管理的三要素 时间 、 质量 、 成本 。
三.判断题
- 在进行总体设计时应加强模块间的联系。(N)
- 系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结构图当作系统流程图使用。(N)
- 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(N)
- 在程序调试时,找出错误的位置和性质比改正该错误更难。(Y)
- 以对象、类、继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计方法之一。(Y)
- 如果通过软件测试没有发现错误,则说明软件是正确的。(N)
- 快速原型模型可以有效地适应用户需求的动态变化。(Y)
- 模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。(Y)
- 集成测试主要由用户来完成。(N)
- 软件危机完全是由于硬件问题引起的。(N)
- 为了加快软件维护作业的进度,应尽可能增加维护人员的数目.( N)
- 当验收测试通过,软件开发就完成了.( N)
- 完成测试作业后,为了缩短源程序的长度应删除程序中的注解.( N)
四.选择题
- 技术可行性要研究的问题之一是( D )
A:存在侵权否 B:成本效益问题
C:运行方式可行否 D:技术风险问题 - 研究硬件资源的有效性是进行( A )研究的一方面
A:技术可行性 B:经济可行性
C:社会可行性 D:操作可行性 - 数据字典中,一般不出现的条件是( D )
A数据流 B数据存储
C加工 D源点与终点 - 需求分析阶段不适用于描述加工逻辑的工具是( D )
A结构化语言 B判定表
C判定树 D流程图 - 结构化程序设计主要强调的是( C )
A程序的效率 B程序的执行速度
C程序的易读性 D程序的规模 - 详细设计的任务是确定每个模块的( A )
A算法 B功能
C调用关系 D输入输出数据 - 结构化程序设计的一种基本方法是( D )
A筛选法 B 递归法
C迭代法 D逐步求精法 - 程序的三种基本控制结构是( B )
A 过程,子程序和分程序 B 顺序,选择和重复
C 递归,堆栈和队列 D 调用,返回和转移 - 程序的三种基本控制结构的共同特点是( D )
A 不能嵌套使用 B只能用来写简单程序
C 已经用硬件实现 D只有一个入口和一个出口 - 结构化设计方法是一种面向( A )的设计方法
A数据流 B数据结构
C数据库 D程序 - 下面不属于软件工程的基本原则的是( D )。
A 模块化 B 抽象
C 局部化 D 自顶向上 - 黑盒法是根据程序的( C ) 来设计测试用例的
A应用范围 B内部逻辑
C功能 D 输入数据 - 为了提高软件测试的效率, 应该( D ).
A 随机地选取测试数据
B 取一切可能的输入数据作为测试数据
C 在完成编码以后制定软件的测试计划
D 选择发现错误可能性大的数据作为测试用例 - 下列几种逻辑覆盖标准中, 查错能力最强的是( D )
A 语句覆盖 B判定覆盖
C 条件覆盖 D条件组合覆盖 - 在黑盒测试中, 着重检查输入条件组合的方法是( D )
A等价类划分法 B边界值分析法
C错误推测法 D因果图法 - 软件测试过程中的集成测试主要是为了发现( B )阶段的错误
A需求分析 B概要设计
C详细设计 D编码 - 不属于白盒测试的技术是( D )
A路径覆盖 B判定覆盖
C循环覆盖 D边界值分析 - 下列哪个阶段不属于软件生存周期的三大阶段©。
A 计划阶段 B 开发阶段
C 编码阶段 D 维护阶段 - 确认测试以( A )文挡作为测试的基础
A 需求规格说明书 B 设计说明书
C 源程序 D 开发计划 - 需求分析是(A)。
A、 软件开发工作的基础 B、 软件生存周期的开始
C、 由系统分析员单独完成的 D、 由用户自己单独完成的 - 与选择编程语言无关的因素是( C )
A软件开发的方法 B软件执行的环境
C程序设计风格 D软件开发人员的知识 - 源程序文档化要求在每个模块之前加序言性注释,该注释内容不应该有(B)
A模块的功能 B语句的功能
C模块的接口 D开发历史 - 在结构化程序设计思想提出之前,程序设计中曾强调程序的效率,现在人们更重视程序的( D )
A技巧性 B保密性
C一致性 D可理解性 - 提高程序效率的根本途径并非在于( D )
A选择良好的设计方法 B选择良好的数据结构
C选择良好的算法 D对程序语句作调整 - 为了提高易读性,源程序内部应该加功能性注释,用于说明( B )
A模块总的功能 B程序段或语句的功能
C模块参数的用途 D数据的用途 - 软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归测试过程称为(A) 。
A改正性维护 B适应性维护
C完善性维护 D预防性维护 - 为了增加软件功能和性能而进行的软件修改维护过程是( C )
A校正性维护 B适应性维护
C完善性维护 D 预防性维护 - 维护中, 因修改全局或公共数据而引起的错误是( B )
A文档副作用 B数据副作用
C编码副作用 D设计副作用 - 在软件生存周期中,时间长,困难大的阶段是( D )
A需求分析 B编码
C测试 D维护 - 在用面向对象观点建立起的3种模型中,( B )是最基本、最重要、最核心的。
A 动态模型 B 对象模型
C 功能模型 D 状态模型 - 软件维护困难的主要原因是( C )
A 费用低 B人员少
C开发方法的缺陷 D维护难 - 产生软件维护的副作用, 是指( C )
A开发时的错误 B隐含的错误
C因修改软件而造成的错误D运行时误操作 - 为了提高模块的独立性,模块内部最好是( C )
A逻辑内聚 B时间内聚
C功能内聚 D通信内聚 - 为了提高模块的独立性, 模块之间最好是( D )
A公共耦合 B控制耦合
C内容耦合 D 数据耦合 - 结构化设计方法在软件开发中,用于( B )
A测试用例设计 B软件概要设计
C程序设计 D软件详细设计 - 划分模块时,一个模块的( A )
A作用范围应该在其控制范围之内 B控制范围应该在其作用范围之内
C作用范围与控制范围互相不包含 D作用范围与控制范围不受任何限制 - 原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要( D )。
A 明确的需求定义 B 完整的生命周期
C 较长的开发时间 D 熟练的开发人员 - 软件测试中, 白盒法是通过分析程序的( B )来设计测试用例的
A 应用范围 B 内部逻辑
C 功能 D 输入数据