中南大学软件工程考研题型
选择题型
瀑布模型是以文档为驱动、适合于(
软件需求确定的
)软件项目的开发。需求分析的基本任务是(
确定用户需要软件做什么
)。若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是(
边界值分析法
)。根据程序流程图划分的模块通常是(
过程
)内聚的模块。软件的分类,按其功能可分为:系统软件、(
支撑软件
)和应用软件。UML的定义包括UML语义和(
UML表示法
)两个部分。客观世界中的若干类,通常有两种主要的结构关系:即分类结构和(
整体与部分结构
)。IDEF1X图用来描述系统的(
数据
)模型,主要有实体、联系和(属性
)三种成分,其中实体可分为独立实体和(从属实体
),且一个实体只能在图中出现一次。软件是计算机程序、(
描述计算机程序的文档
)及(数据
)的完整集合,将其统称为软件配置,这些项称为软件配置项。通过正式复审的软件配置项称为(基线
),只有通过正式的变化控制过程才能改变它。通常,将软件生命周期全过程中使用的一整套技术方法的集合称为方法学,包含三个要素,即方法、(
工具
)和(过程
)。传统方法学采用(结构化
)技术来自顶向下顺序地完成软件开发的各项任务,而面向对象方法是一种以(数据
)为主线,把数据和对数据的操作紧密地结合起来的方法,其开发过程是一个多次迭代的演化过程。软件测试的目标是(
暴露程序中的错误
),因而从心理学角度来看,由程序作者对自己编写的程序进行测试是不恰当的。设计测试方案是测试阶段的关键技术问题,测试方案一般包括(测试目的
)、输入的测试数据和(预期的结果
)。模型是为了理解事物而对事物作出的一种抽象,由(
一组图示符号
)和(组织这些符号的规则
)组成。对象模型描述了系统的静态结构,通常使用UML提供的(类图
)来描述。需求分析的基本任务是(
准确地回答系统必须做什么
),在需求分析结束前,系统分析员应该写出(软件需求规格说明书
),以书面的形式准确描述软件需求。面向数据流的设计方法把(
信息流
)映射成软件结构,依据其类型的不同,有两种不同的映射方法,分别是(变化分析
)和(事物分析
)方法。软件设计一般分为(
概要设计
)和(详细设计
)两个阶段。如果一个模块完成多个逻辑上相近或相关的功能,并且每次调用只选择该模块中的一个功能执行,则称此模块为
逻辑内聚
的模块。在数据流图中,每个加工至少有一个
输入数据流
和一个输出数据流
。软件项目计划是计划(
策划
) 阶段的结果产品。但由于是在高层次进行系统分析,未能考虑软件系统开发的细节情节,因此软件项目计划一般在需求分析 阶段完成后才定稿的。在面向对象类层次结构中,子类只继承一个父类的数据结构和方法,则称为
单重继承
。如果子类继承了多个父类的数据结构和方法,则称为多重继承
。在软件测试过程中,α测试是由
一个用户在开发
环境下进行的测试,而β测试是由多个用户在
实际使用环境下进行的测试。统一建模语言UML提供了两种描述整体/部分关系的方法,分别是
聚合
和组合
。瀑布模型是以
文档
驱动的软件生存周期模型,适合需求明确的软件系统开发。IDEF1X方法用来建立系统的
数据
模型。在单元测试期间,应该为被测模块编写相应的测试软件,一般地
驱动
模块接收测试数据,并把数据传给被测模块,而桩
模块则模拟实际模块完成少量数据处理。评估软件企业的质量管理有两种方法,一种是按照
ISO9001
认证,另外一种是按照CMM
认证。软件测试的目的是(
发现错误
)。软件按服务对象可分为项目软件和(
产品软件
)。在常见的软件生存期模型中,(
螺旋
)模型是风险驱动的。UML通过三种扩展机制来扩充UML的建模能力,分别是(
约束
)、构造型和(标记值
)。在软件测试用例的设计方法中,白盒法以(
程序内部数据结构
)为依据设计测试用例,在面向对象设计原则中,(
组装复用
)原则要求在新的对象里尽量使用已有的类对应的对象,并通过(委派
)达到复用已有功能的目的。状态图描述一个类对象所经历的(
各种状态
)以及事件发生时状态的(转移条件
).SOFL软件开发方法学认为,在需求分析和规格说明阶段应该采用(
结构化
)方法,而在设计和实现阶段则应该采用(面向对象
)方法。可行性研究的内容包括(
技术可行性
)、经济可行性和(操作可行性
)。软件按服务对象可分为(
项目软件
)和产品软件在常见的软件生存周期模型中,(
瀑布
)模型是文档驱动的UML采用(
用例
)图描述系统与外部用户的交互行为在软件测试用例的设计方法中,黑盒法以(
外部功能
)为依据设计测试用例定性度量模型独立性的两个标准是(
内聚度
)和(耦合度
)在SA方法的需求描述工具中,(
层次方框图
)描述系统的分解,即描述系统由哪几个部分组成,各部分之间有什么联系等等;(数据词典(和加工说明)
)定义了数据流图中每个图形元素;结构化语言、判定表或判定树则详细描述了数据流图中不能被分解的(基本加工
)IDEFO图主要元素是简单的盒子及箭头,其中盒子代表(
活动
)。而箭头表示系统处理的(数据约束
)
解答题型
什么是软件工程?软件工程和计算机科学有何区别?
答:软件工程是指导软件开发和维护的工程性学科;
计算机科学着重于原理和理论,软件工程与计算机科学不同,软件工程着重于如何建造软件系统,软件是计算机中看不见摸不着的逻辑部分,以程序、数据和文档的形式出现。面向对象方法和结构化方法有何区别与联系?
答:区别:
面向对象方法 从所处理的数据入手,以数据为中心来描述系统,其基本思想是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界的方法与过程,
基本原则为:对象+类+继承+消息通信
结构化方法 首先关心的是功能,强调以模块为中心,其基本思想是自顶向下,逐步求精,单入口,单出口,
基本原则为:抽象与功能的分解
联系:
软件开发过程中,在需求分析和规格说明阶段采用结构化方法,在设计和实现阶段采用面向对象方法。什么是模块的作用域和模块的控制域?为何要求模块的控制域必须在作用域内?
答:模块的作用域是指模块中判定的作用范围,它是指所有受这个判定范围影响的模块;
模块的控制域是指模块本身及其直接或间接调用的模块;
如果模块的作用域不在控制域内,则会增加数据间的传递量,使模块间出现控制耦合什么是设计模式?试举例说明组合设计模式的应用。
答:设计模式是指系统命名,解释和评价某一重要的,可复用的面向对象的设计方案。
组合设计模式:使用迭代器模式来遍历组合结构。什么是依赖倒置原则?它和开闭原则有何联系?
答:依赖倒置是类设计原则的一种,它要求高层不应依赖于底层,抽象不应依赖于细节;
依赖倒置原则的本质其实就是通过抽象(抽象类或接口)使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合,如果没有实现这个原则,则开闭原则也无法实现。软件生存期过程和软件生存期模型有何联系?瀑布模型有何特点?
答:软件生存期过程没有规定一个特定的生存周期模型,各软件开发机构可视其项目的需要选择一种软件生存周期模型,并将软件生存期过程所含过程、活动和任务映射到选定的软件生存周期模型中。
软件生存期模型是软件生存期过程所含过程、活动和任务的映射。
瀑布模型特点:各阶段相互依赖;每阶段都进行评审;强调需求分析和设计。瀑布模型是软件工程中应用最广泛的过程模型,试述采用瀑布模型进行软件开发的基本过程,该过程有何特点?
答:瀑布模型规定了各项软件工程活动,包括需求分析、规格说明、设计、编码、测试和维护,并规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级而下。
瀑布模型的特点是:阶段间具有顺序性和依赖性;清楚区分逻辑设计和物理设计,尽可能推迟程序的物理实现;每个阶段都必须完成规定文档,且每阶段结束前需要对完成的文档进行评审。什么是软件配置管理?软件配置管理和软件维护有何不同?
答:软件配置管理是在软件生命周期内管理变化的一组活动,用来:标识变化、控制变化、确保适当地实现了变化、向相关人员报告变化。
软件配置管理和软件维护的区别是:软件配置管理是一组追踪和控制活动,在软件项目启动时就开始,并一直持续到软件被淘汰后才终止;软件维护是一组软件工程活动,发生于软件交付给用户并投入运行之后。试举例说明聚集关系中共享聚集和组合聚集有何不同。
答:如果在聚集关系中部分对象可同时参与多个整体对象的构成,则该聚集称为共享聚集。
例如,一个课题组包含许多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是一种共享聚集的关系。如果部分对象完全隶属于整体对象,并与整体对象共存,则该聚集称为组合聚集。
例如,在屏幕上一个窗口由文本框、列表框、按钮和菜单等构成,且一旦关闭了窗口,则各组成部分也消失,则窗口和它的组成部分之的关系为组合聚集关系。非渐增式测试与渐增式测试有何区别?
答:非渐增式测试,一般应先经过单元测试,然后再把所有模块一次性组装在一起进行测试,最终得到要求的软件系统;
而渐增式测试则采用逐步加入模块或功能簇的方式进行,在加入过程中边连接边测试,比较容易定位和修正错误,且接口也可以更容易进行彻底地测试试举例说明什么是功能性需求,什么是非功能性需求?为何非功能性需求往往比功能性需求还要重要?
答:功能性需求是说有具体的完成内容的需求。
例如:比如客户登录、邮箱网站的收发邮件、论坛网站的发帖留言等。非功能性需求是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性,包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。
例如:性能要求:要求系统能满足100个人同时使用,页面反应时间不能超过6秒;非功能性需求往往比功能性需求还要重要是因为非功能性需求描述的是软件的质量属性,直接影响着用户体验,因此非功能性需求在决定系统成败的因素中起更重要的作用。
层次图和层次方框图有何区别?
答:不同:
1,层次图描绘软件的层次结构.层次方框图描绘的是数据结构。
2,层次图的方框表示模块或子模块。层次方框图的方框表示数据结构整体或其子集。
3,层次图的连线表示调用关系,层次方框图表示组成关系。快速原型模型有几种?各有何特点?
答:快速原形模型根据原型的不同作用,有三类原型模型:
(1)探索型原型:把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发者对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。
(2)实验型原型:主要用于设计阶段,考核实现方安是否合适,能否实现。对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型的开发来证实设计方案的正确性。
(3)演化型原型:它将原型思想扩展到软件开发的全过程,就是及早向用户提交一个原型系统,在得到用户认可后,将原型系统不断扩充演化为最终的软件系统。什么是模块的作用域?为何设计软件结构时要求模块的作用域必须在控制域之内?
答:所谓模块的作用域是指模块判定的影响范围。
作用域在控制域之内,可使得软件修改时代码局部化。什么是动态测试?为何静态测试方法往往比动态测试方法效率高?
答:动态测试是指经运行程序代码而检查代码是否存在错误。
静态测试往往不是运行代码,而在软件开发的早期进行,而早期错误发现要比错误晚发现付出的成本少,而静态测试往往在发现错误后还可继续进行,但动态测试往往需要停下来改进后才能进一步测试。试简要说明面向对象方法与结构化方法相比有何优越性,至少列出三点。
答:(1)强调从现实世界中客观存在的事物(对象)出发来认识问题域和构造系统,这就使系统开发者大大减少了对问题域的理解难度,从而使系统能更准确地反映问题域。
(2)运用人类日常的思维方法和原则(体现于OO方法的抽象、分类、继承、封装、消息通讯等基本原则)进行系统开发,有益于发挥人类的思维能力,并有效地控制了系统复杂性。
(3) 对象的概念贯穿于开发过程的终,使各个开发阶段的系统成分具良好的对应,从而显著地提高了系统的开发效率与质量,并大大降低系统维护的难度。
(4) 对象概念的一致性,使参与系统开发的各类人员在开发的各所段具有共同语言,有效地改善了人员之间的交流和协作。
(5) 对象的相对稳定性和对易变因素隔离,增强了系统的应变能力。
(6) 对象类之间的继承关系和对象的相对独立性,对软件复用提供了强有力的支持。什么是软件危机?
答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:
(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。什么是软件生存周期?
答:软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件开发模型有几种?它们的开发方法有可特点?
答:软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。 >
它的特点:
(1)各个阶段的顺序性和依赖性;
(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;
(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
渐增型开发方法及特点:
(1)从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。
(2)在渐增型开发下的软件是随软件开发的过程而逐渐形成的。
(3)渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件,一般采用此方法。
变换型开发方法及特点:
(1)从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的程序系统。
(2)该方法必须有严格的数学理论和形式化技术的支持。功能与对象的区别?
答:1、功能比对象容易变化(功能相对不稳定)
2、功能是主观的,对象是可观的。
3、功能是可以调用的,要么全有,要么全无,而对象可以部分的继承使用。软件开发过程可视化的两种方法?
答:文档驱动、小批量发布
风险分析的目的?
答:对风险进行管理。
传递信息的方法?
答:1、参数。
2、全局变量。
3、公共可访问区域。数据建模的作用?
答:1、抓住问题的主要方面—理解问题。
2、便于交流。
3、可以进行分析(性能、可靠性、、、、、、)。
4、可以自动生成代码。描述模型的两种方法?
答:1、结构化方法:结构化方法首先关心的是功能,强调以模块为中心,采用模块化、自顶向下、逐步求精设计过程(分层),适合需求明确的模型。
其不足之处:不太适应规模大及特别复杂的项目,难于解决软件重用问题,难于适应需求变化或模糊的问题,软件维护比较复杂。
2、面向对象方法:面向对象方法则从所处理的数据入手,以数据为中心来描述系统,适合迭代增量式分解(网状)。
其不足之处:类作为复用单元,有时显得太小,类继承会增加类间的耦合度,该方法不够成熟。描述作业之间的关系?
答:1、画PERT图。
2、确定最晚发生时刻与最早发生时刻。
3、计算机动时间,为0 的为关键事件。
4、Gantt图的方法进行描述。用例与功能的区别?
答:1、完成一个用例需要若干功能。
2、用例是从用户使用系统的角度来描述系统的行为的。
3、用例往往是对用户有价值的结果。
4、用例满足用户的业务目标。描述模块独立性的标准?
答:内聚度(内聚度是指模块内部各成分联系紧密的程度,内聚度越高,模块独立性越强)
耦合度(耦合度是指模块之间相互关联的紧密程度。耦合度越低,模块独立性越强)什么是黑盒测试?黑盒测试主要采用的技术有哪些?
答:黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和因果图等技术。什么是白盒测试?白盒测试主要采用的技术有哪些?
答:测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。瀑布模型的优缺点?
答:优点:
1、流水线生产比个人生产效率高,质量好。
2、将逻辑设计与物理实施分开,避免无用功。减少成本,能尽量推迟物理实施。
3、文档驱动使得开发过程可视化,便于管理和控制。
缺点:
1、当需求不明确时,流水线被阻塞。
2、得不到用户的反馈,开发过程得不到修正,导致有可能出现大的失误。
3、最后将产品一次提交给用户,用户感到不适应,成本增加,市场风险加大。软件工程的目的?
答:以期用较少的代价获取高质量的软件。
to be continued…