logo资料库

软件工程导论综合复习题.doc

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
一、选择题 1、软件是一种( B )性工业产品。 (1)理论 (2)知识(或逻辑) (3)消耗 (4)体力 2、需求分析是在( B )进行的。 (1)用户 (2)用户和分析人员之间 (3)开发人员内部 (4)使用和维护人员之间 3、在软件的可行性研究中经常从不同角度对系统进行可行性研究,其中从功能角度对 系统进行研究属于( B )的研究。 (1)经济可行性 (2)技术可行性 (3)操作可行性 (4)法律可行性 4、在软件工程项目中,不随参与人员的增加而使软件的生产率增加的主要问题是( D )。 (1)工作阶段的等待时间 (2)生产原型的复杂性 (3)参与人员所需的工作站数 (4)参与人员之间的沟通困难 5、需求分析阶段的研究对象是( A )。 (1)用户需求 (2)分析员要求 (3)系统需求 (4)软硬件需求 6、对某公司进行调查分析,确定是否值得开发一个新系统的工作是进行( D )。 (1)系统设计 (2)系统分析 (3)系统详细调查 (4)系统初步调查 7、系统分析员应当( D )。 (1)善于使用户接受自已的观点 (2)善于使自已获得成就 (3)是用户与计算机技术人员的有效协调与组织者 (4)满足上述所有条件 8、数据流图的绘制过程,是对新系统的需求进行综合分析和形成新系统( A )的过程。 (1)逻辑模型 (2)物理模型 (3)总体方案 (4)可行性报告 9、系统测试的目的是( D )。 (1)找出编码错误 (2)找出数据错误 (3)要证明程序无错 (4)发现软件错误 10、一个模块内部各程序段都在同一张表上操作,这个操作的内聚性称为( B )。 (1)时间内聚 (2)功能内聚 (3)通信内聚 (4)顺序内聚 11、对象是面向对象开发的基本成分,每个对象可用它的一组( )和它可以执行的一组操作来定义。 (1)服务 (2)参数 (3)属性 (4)调用 12、最高程度也是最差的耦合是( )。 (1)公共耦合 (2)内容耦合 (3)控制耦合 (4)数据耦合 13、概要设计阶段产生的文档不包括( )。 (1)概要设计说明书 (2)数据库设计说明书 (3)用户手册 (4)开发进度报告 14、汽车有一个发动机,汽车和发动机之间的关系是( )。 (1)一般具体关系 (2)整体部分关系 (3)分类关系 (4)is a 关系 15、覆盖准则最强的是( )。 (1)语句覆盖 (2)判定覆盖 (3)条件覆盖 (4)路径覆盖 16、下面对数据流图描述不正确的是( )。 (1)是组织中信息运动的抽象 (2)是系统模型的主要形式 (3)它与对系统的物理描述无关 (4)所描述的内容是面向管理员的 17、在基本的数据加工中,决策树适合于表达( )。 (1)决策或判断步骤较多的加工问题 (2)决策或判断条件较多,各条件又相互组合的问题 (3)非结构化决策问题 (4)半结构化决策问题 18、调试应该由( )完成。 (1)与源程序无关的程序员 (2)编制该源程序的程序员 (3)不了解软件设计的机构 (4)设计该软件的机构 19、导出模块结构图的基础是( ) (1)系统结构图 (2)数据流图 (3)数据结构图 (4)控制结构图 20、程序员进行程序设计的主要文档依据是( ) (1)模块说明书 (2)系统流程图 (3)控制流程图 (4)数据流图 1
21、一切软件开发都毫无例外地必须从( )。 ①软件功能出发 ②用户出发 ③软件性能出发 ④需求出发 22、在分析阶段通常包含两个方面的工作:建立一个以类图表示的反映问题域静 态关系的(概念模型);建立一个以用例模型表示的反映(系统行为)的动态模型。 1 用户需求 ②关系模型 ③系统行为 ④概念模型 23、发现类的基本方法不包括( )。 ① 确定客户 ② 跟踪资金流 ③ 事件是潜在的类 ④ 系统是潜在的类 24、继承的基本技巧和技术不包括( )。 ① 寻找相似之处 ② 寻找已有的类 ③ 选择性继承 ④ 遵循单句规则 25、关联的多重性可用来表达一个( )、特定值、无限定的范围或者一组( )。 ① 取值范围 ② 属性 ③ 对象 ④ 离散值 26、当一个类没有足够的( )去完成它的职责时,就要依靠与其它类的协作来完成工作。 ① 信息 ② 操作 ③ 功能 ④ 数据 27、一般情况下,区分主要参与者与次要参与者应该以使用系统时的(② )为依据,或者以一个(④ )是谁发起的作为主要依 据。 ① 重要程度 ② 业务量 ③ 业务过程 ④ 交互过程 28、前置条件描述了( )之前系统必须满足的条件。 ① 系统运行 ② 执行用例 ③ 系统启动 ④ 成功执行 29、用例之所以被广泛采用的主要原因是,用例详细地描述了系统被使用时的( ),使得用户能够明白新系统到底是什么 样的。 ① 执行过程 ② 操作细节 ③ 行为细节 ④ 功能细节 30、面向对象的主要特征除对象唯一性、封装、继承外,还有( )。 (1)多态性 (2)完整性 (3)可移植性 (4)兼容性 31.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( ) A.软件工程 C.软件危机 B.软件周期 D.软件产生 32.研究开发所需要的成本和资源是属于可行性研究中的( )研究的一方面。 A.技术可行性 C.社会可行性 B.经济可行性 D.法律可行性 33.黑盒测试在设计测试用例时,主要需要研究( ) A.需求规格说明与概要设计说明 B.详细设计说明 C.项目开发计划 D.概要设计说明与详细设计说明 34.若有一个计算类型的程序,它的输入量只有一个 X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0,1.0,1.001。设计这组测试用例的方法是( ) A.条件覆盖法 C.边界值分析法 35.下列属于维护阶段的文档是( ) A.软件规格说明 C.软件问题报告 36.快速原型模型的主要特点之一是( ) B.等价分类法 D.错误推测法 B.用户操作手册 D.软件测试分析报告 A.开发完毕才见到产品 B.及早提供全部完整的软件产品 C.开发完毕后才见到工作软件 D.及早提供工作软件 37.因计算机硬件和软件环境的变化而作出的修改软件的过程称为( ) A.改正性维护 C.完善性维护 B.适应性维护 D.预防性维护 38.只有单重继承的类层次结构是( )层次结构。 A.网状型 C.树型 B.星型 D.环型 39.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为( ) A.可用性 C.正确性 B.可靠性 D.完整性 2
40.下列文档与维护人员有关的有( ) A.软件需求说明书 C.概要设计说明书 二、填空题 B.项目开发计划 D.操作手册 1、可行性研究的目的不是去开发一个软件项目,而是研究这个项目是否值得去开发 , 其中的问提能否解决。 2、软件结构的设计是以 模块 为基础的。 3、软件设计阶段,是把软件“ 做什么 ”的逻辑模型变换为“ 怎么做 ”的物理模型。 4、需求分析的关键是必须 准确理解 用户的要求,同时要 满足 用户的要求。最终解决目标系统“做什么”的问题。 5、数据流图一般可分为 变换型 和 事务型 两类。 6、HIPO 图中 H 图用于描述软件总的模块层次结构, IPO 图用于说明模块间的信息传递及模块内部的处理。 7、详细设计也称 过程设计 ,它是软件设计的第二阶段,主要确定每个模块 的具体执行过程。 8、处理过程设计中最典型的方法是 结构化程序设计(SP) 方法,其基本要点是采用的程序设计方法是 自顶向下 、 逐步求精 。 9、测试用例由 输入数据 和预期的 输出数据 两部分组成。 10、白盒法必须考虑程序的 内部结构 和 处理过程 ,以检查 处理过程 的细节为基础,对程序中尽可能 多的逻辑路径进行 测试 。 11、软件测试过程中需要 3 类信息: 软件配置 、 测试配置 和 测试工具 。 12、在详细设计阶段,需要对处理过程的 模块 和数据库的 物理 结构做评审。 13、需求调研是(了解问题),分析是(定义问题),而设计则是(解决问题)。 14、数据流图描述系统的 分解 ,即描述系统由 哪几部分 组成,各部分之间有什么联系等。 15、任何程序都可由 顺序 、 选择 和 重复 3 种基本控制结构构造。这 3 种基本结构的共同点是 单入口 、 单出口 。 16、测试的目的就是 发现 程序中的错误,而不是 调试 程序没有错误。 17、建立概念模型的目的是帮助开发团队理解(问题域)的各种概念、各种名词、以及它们之间的各种关系。而建立用例模型的 目的是帮助开发团队( 理解 )用户对系统的各种功能需求。 18、子类应该从父类继承所有的东西,这种概念叫做(纯粹)继承。如果不这样的话,代码将很难(理解)和维护。 19、面向数据流的设计又称 结构化程序设计(SP) ,它是以需求分析阶段产生的 数据流图 为基础,按一定的步骤映射 成软件结构。 20、可行性分析包括 技术可行性 、经济上的可行性和 社会因素可行性 分析。 21、类的职责是类知道或要完成的(事情)。类所知道的事情是它的(数据),它要完成的事情就是它的(功能)。 22、概念模型是“帮助开发团队了解并在此基础上理解用户所处的环境”,而用例模型则是“帮助开发团队弄清楚用户具体想解 决什么问题”。前者是(静态模型),为后者工作的展开建立了一个总体框架;后者是(动态模型),为实现前者注入了活力。 两者相辅相成,一般情况下,其(工作顺序)不分先后,而是以一种(迭代的)方式向前推进。 23、首先,用例是由一组( 用例实例 )组成的,用例实例也就是常说的“使用场景”,就是用户使用系统的一个特定的、 实际的场景;其次,用例应该给参与者带来(可见)价值,即参与者的参与应该能得到好处;最后,用例是在(系统中)的,而 不是(系统外)的东西。 24、用例是满足需求的(过程),而需求则是过程背后所实现的(价值)。这正是用例建模的(核心思想)。 25、假设描述的是系统在使用用例之前必须满足的状态,这些(条件)并没有经过用例的 检测,(用例)只是假设它们为真。 26、识别用例时的一个常见错误是把用例当成是(单独)的步骤、操作或事务的处理。 27、构建用例模型需要经历三个阶段:确定系统的(参与者)、合并(需求)获得用例、 细化用例描述。 28、用例图显示了系统的( 一组用例 )、用例的参与者以及用例和参与者之间的(关系)。 三、名词解释 1、软件测试 软件测试是指为了发挥软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的 依据。 2、详细设计 系统的详细设计是系统总体设计的深入,对总体设计中的各个具体的任务选择适当的技术手段和处理方法。详细设计主要包括代 码设计,数据库设计,输出设计,输入设计,对话设计,处理流程设计,制定设计规范等。 3
3、数据耦合 如果两个模块之间通过数据交换信息,且每一个参数均为数据,那么这种模块间的耦合称为数据耦合。 4、模块化 模块化就是把程序划分成若干个模块的过程,每个模块完成一个子功能,把这些模块集中起来组成一个整体,从而完成指定的功 能,满足问题的要求。 5、信息隐蔽 信息隐蔽是指在设计模块时,应让一个模块内包含的信息(过程和数据)对于其他不需要这些信息的模块来说是不能访问的。 6、耦合 耦合性是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度。 7、功能内聚 如果模块内所处理的元素属于一个整体,完成一个单一的功能,则称为功能内聚。 8、事务流 在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫 做事务流。事务流的特点是接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。 9、集成测试 集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统, 进行集成测试。模块相互间的协调和通信是这个测试过程中的主要问题,因此,这个步骤着重测试模块的接口。 10、需求分析 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分 析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 11、白盒法 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程 序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。 12、黑盒法 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需 求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。 13、渐增式测试 逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直至 程序组装完毕。 14、非渐增式测试 首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。 15、软件概要设计 进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反应 在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体 系结构,称为软件的概要设计或结构设计。 16、模块 模块在程序重视数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序 等等。 17、路径覆盖 指设计足够的测试用例,覆盖被测程序中所有可能的路径。 18、条件覆盖 是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。满足条件覆盖并不一定满足判定覆盖。 19、判定/条件覆盖 指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至 少出现一次。 20、条件组合覆盖 是指设计足够的测试用例,使的每个判定表达式中条件的各种可能的值的组合都至少出现一次,条件组合覆盖是比较强的覆盖标 准。 四、简述题 1、软件设计的基本原理包括哪些内容? 4
软件设计的基本原理: (1)模块化(四个属性:接口、功能、逻辑、状态);(2)抽象;(3)信息隐蔽; (4)模块独立性(两个定性的度量标准:耦合性与内聚性) 2、需求分析应遵循的原则是什么? 所有这些分析方法都遵守下述准则: (1) 必须理解并描述问题的信息域,根据这条准则应该建立数据模型。 (2) 必须定义软件应完成的功能,这条准则要求建立功能模型。 (3) 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。 (4) 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。 3、为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网? ① 软件测试是软件开发中不可缺少的重要一环,原因是: A、测试的工作量约占整个项目开发工作量的 40%左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要 成倍增加。 B、软件测试代表了需求分析、设计、编码的最终复审。 ② 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。 4、软件测试的目的是什么?为什么把软件测试的目标定义为只是发现错误? 软件测试的目的有: ① 软件测试是为了发现错误而执行程序的过程。 ② 一个好的测试用例能够发现至今尚未发现的错误。 ③ 一个成功的测试是发现了至今尚未发现的错误。 软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开 发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的, 所以软件测试的目标定义为只是发现错误。 5、增量开发和原型开发有什么相同和不同的地方? 增量模型和原型模型都是从概要的需求出发进行开发的,但两者有明显的不同。 增量模型是从一些不完整的系统需求出发开始开发,在开发过程中逐渐发现新的需求规格说明,并进一步充实完善该系统, 使之成为实际可用的系统。 原型开发的目的是为了发现并建立一个完整的经过证实的需求规格说明,并以此作为正式系统的开发基础。因此,原型开发 阶段的输出是需求的规格说明,是为了降低整个软件生成期的费用而拉大需求分析阶段的一种方法,大部分原型是“用完就 扔”的类型。 6、类与对象之间有什么区别? 类是对资源的定义,它所包含的信息主要用来描述某种类型实体的特征以及对该类型实体的使用方法。对象是具体的实体,它遵 守类制定的规则。从软件的角度看,程序通常包含的是类的集合以及类所定义的行为,而实际创建信息和管理信息的是遵守类的 规则的对象。 7、组合与聚合有什么异同? 在聚合关系中,其中一个类是整体,它由一个或者多个部分类组成,当整体类不存在时,部分类仍能存在,但是当它们聚集在一 起时,就用于组成相应的整体类。 组合关系与聚合关系的异同之处在于组成的关联中,整体类同样都是由部分类组成,但是部分类需要整体类才能存在,当整体类 被销毁时,部分类将同时被销毁。 8、建立概念模型有哪些步骤? 1、找出问题域中候选概念。用概念类分类列表和名词短语分别识别的方法找出当前需求中的候选概念类。 2、将概念绘制到概念模型中。在概念模型中描述找出的概念类。 3、在概念之间加入必要的关联来记录概念之间需要保持的联系。在概念类之间添加必要的关联来记录那些需要保存记忆的关系。 4、为概念添加必要的属性,来满足需求信息。 9、什么是参与者? 参与者(actor)是系统外部的一个实体,它以某种方式参与了用例的执行过程。参与者用于表示使用系统的对象,或者说,参 与者由它们参与用例时所担当的角色来代表。 10、简述结构化程序设计方法的基本要点。 1. 采用自顶向下,逐步求精的程序设计方法 在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。 2. 使用三种基本控制结构构造程序 任何程序都可由顺序、选择、重复三种基本控制结构构造。 1)用顺序方式对过程分解,确定各部分的执行顺序。 5
2)用选择方式对过程分解,确定某个部分的执行条件。 3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。 4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。 3. 主程序员组的组织形式 11、简述文档在软件工程中的作用。 文档是影响软件可维护性的决定因素。由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更 重要。 12、简述提高可维护性的方法。 1、使用宏定义取代常数 2、代码设计逻辑简单、容易理解 3、各模块之间耦合性小 4、软件文档:需求分析、概要设计和详细设计要齐全 5、代码编写要符合一定的规范 6、注释至少要占代码行数的 20% 13、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系? 模块的影响范围:受该模块内的一个判定影响的所有模块的集合。 模块的控制范围:模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。 一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。 14、用例有什么特征? (1)用例总是由参与者启动。用例所代表的功能必须由参与者激活,而后才能执行。一般情况下,参与者可能没有意识到启动 了一个用例。换句话说,参与者需要系统完成的功能,其实都是通过用例具体完成的,参与者一定会直接或间接的命令系统执行 用例。 (2)用例为参与者提供结果值。用例必须为参与者提供实在的结果值,虽然这个值并不总是重要的,但是能被参与者识别。 (3)用例具有完整性。用例是一个完整的描述。虽然编程实现时,一个用例可以被分解成几个小用例(函数),每个小用例之 间互相调用执行,一个小用例可以先执行完毕,但是该小用例执行结束并不能说这个用例执行结束。也就是说,不管用例内部的 小用例是如何通信工作的,只有最终产生了返回给参与者的结果值,才能说用例执行完毕。 15、什么是基本事件流?举例说明。 参与者在用例中所遵循的逻辑路径。因为它描述了当各项工作都正常进行时用例的工作方式,所以通常称为基本路径。事件流描 述了用户和执行用例之间交互的每一步。例如,图书馆借出图书用例的基本事件流为: ①管理员输入借书证信息 ②系统要确保借书证信息的有效性 ③检查是否有超期的借阅信息 ④管理员输入要借阅的图书信息 ⑤系统将借阅者的借阅信息添加到数据库中 ⑥系统显示该借阅者的所有借阅信息 16、识别用例和描述用例有什么区别? 识别用例和描述用例并不是一回事。识别是指对系统需要做的事情进行界定、探索和发现。描述用例则是指对用例中的流程和步 骤进行细化。描述用例贯穿了项目的整个生命周期,而识别用例则必须尽可能早地完成。 17、什么是模型?开发软件时为什么要建立模型? 所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。 模型可以帮助我们思考问题、定义术语、在选择术语时作出适当的假设,并且可以帮助我们保持定义和假设的一致性。建模的目 的主要是为了减少复杂性。 五、应用题 1、研究生入学考试的科目为英语、数学、政治,录取规则是: a) 总分 200 分以下(不含 200 分)不录取。 b) 总分 200 分以上(含 200 分)时: i. ii. 英语、数学均为 60 分以上(含 60 分)录取。 数学 55 分以上(含 55 分),英语 70 分以上(含 70 分)需参加复试。 iii. 其它情况不录取。 用决策树表达此项处理逻辑。 6
2、某银行发放贷款原则如下: (1) 对于贷款未超过限额的客户,允许立即贷款; (2) 对于贷款已超过限额的客户,若过去还款记录好且本次贷款额在 2 万元以下,可作出贷款安排,否则拒 绝贷款。 请用结构化语言描述该原则。 答:IF 已超过贷款限额 或者是 IF 客户过去还款纪录差 如果已超过贷款限额 拒绝贷款 则如果客户过去还款记录差 ELSE IF 本次贷款额≥ 则拒绝贷款 2 万 ELSE 允许立即贷款 ENDIF 否则如果本次贷款额≥2 万 拒绝贷款 则拒绝贷款 ELSE 作出贷款安排 ENDIF 否则作出贷款安排 否则允许立即贷款 7
3、银行确定储蓄类型部分数据流图如下: 存款单 确定业 务类型 试作出事务分析结构的控制结构图。 整存整 零存整 活期储 4、高考录取计分子系统有如下功能: (1) 计算标准分根据考生原始分计算,得到标准分,存入考生分数文件; (2) 计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。 试根据要求画出该系统的数据流图。 答:(1) 数据流图: 8
分享到:
收藏