软件工程复习题目+答案

一、选择题

1、软件是一种(2)性工业产品。

(1)理论(2)知识(或逻辑)(3)消耗(4)体力

2、需求分析是在(2)进行的。

(1)用户(2)用户和分析人员之间

(3)开发人员内部(4)使用和维护人员之间

3、在软件的可行性研究中经常从不同角度对系统进行可行性研究,其中从功能角度对

系统进行研究属于(2)的研究。

(1)经济可行性(2)技术可行性(3)操作可行性(4)法律可行性

4、在软件工程项目中,不随参与人员的增加而使软件的生产率增加的主要问题是(4)。

(1)工作阶段的等待时间(2)生产原型的复杂性

(3)参与人员所需的工作站数(4)参与人员之间的沟通困难

5、需求分析阶段的研究对象是(1)。

(1)用户需求(2)分析员要求(3)系统需求(4)软硬件需求

6、对某公司进行调查分析,确定是否值得开发一个新系统的工作是进行(4)。

(1)系统设计(2)系统分析(3)系统详细调查(4)系统初步调查

7、系统分析员应当(4)。

(1)善于使用户接受自已的观点(2)善于使自已获得成就

(3)是用户与计算机技术人员的有效协调与组织者(4)满足上述所有条件

8、数据流图的绘制过程,是对新系统的需求进行综合分析和形成新系统(1)的过程。

(1)逻辑模型(2)物理模型(3)总体方案(4)可行性报告

9、系统测试的目的是(4)。

(1)找出编码错误(2)找出数据错误

(3)要证明程序无错(4)发现软件错误

10、一个模块内部各程序段都在同一张表上操作,这个操作的内聚性称为(3)。

(1)时间内聚(2)功能内聚(3)通信内聚(4)顺序内聚

11、对象是面向对象开发的基本成分,每个对象可用它的一组(3)和它可以执行的一组操作来定义。(1)服务(2)参数(3)属性(4)调用

12、最高程度也是最差的耦合是(2)。

(1)公共耦合(2)内容耦合(3)控制耦合(4)数据耦合

13、概要设计阶段产生的文档不包括(4)。

(1)概要设计说明书(2)数据库设计说明书(3)用户手册(4)开发进度报告

14、汽车有一个发动机,汽车和发动机之间的关系是(2)。

(1)一般具体关系(2)整体部分关系(3)分类关系(4)is a 关系

15、覆盖准则最强的是(4)。

(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)路径覆盖

16、下面对数据流图描述不正确的是(4)。

(1)是组织中信息运动的抽象(2)是系统模型的主要形式

(3)它与对系统的物理描述无关(4)所描述的内容是面向管理员的

17、在基本的数据加工中,决策树适合于表达(2)。

(1)决策或判断步骤较多的加工问题

(2)决策或判断条件较多,各条件又相互组合的问题

(3)非结构化决策问题

(4)半结构化决策问题

18、调试应该由(2)完成。

(1)与源程序无关的程序员(2)编制该源程序的程序员

(3)不了解软件设计的机构(4)设计该软件的机构

19、导出模块结构图的基础是(2)

(1)系统结构图(2)数据流图(3)数据结构图(4)控制结构图

20、程序员进行程序设计的主要文档依据是(2)

(1)模块说明书(2)系统流程图(3)控制流程图(4)数据流图

21、面向对象程序设计语言不同于其它语言的最主要特点是(3)。

(1)模块性(2)抽象性(3)继承性(4)共享性

22、软件部件的内部实现与外部可访问性分离,这是指软件的(3)。

(1)继承性(2)共享性(3)封装性(4)抽象性

23、在确定类时,候选的类是所有的(1)。

(1)名词(2)形容词(3)动词(4)代词

24、在面向对象方法中,信息隐蔽的实现是通过对象的(3)。

(1)分类性(2)继承性(3)封装性(4)共享性

25、每个对象可用它自已的一组属性和它可以执行的一组(3)来表示。

(1)行为(2)功能(3)操作(4)数据

26、面向对象的主要特征除对象唯一性、封装、继承外,还有(1)。

(1)多态性(2)完整性(3)可移植性(4)兼容性

27.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)

A.软件工程

B.软件周期

C.软件危机

D.软件产生

28.研究开发所需要的成本和资源是属于可行性研究中的(B)研究的一方面。

A.技术可行性

B.经济可行性

C.社会可行性

D.法律可行性

29.黑盒测试在设计测试用例时,主要需要研究(A)

A.需求规格说明与概要设计说明

B.详细设计说明

C.项目开发计划

D.概要设计说明与详细设计说明

30.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是(C)

A.条件覆盖法

B.等价分类法

C.边界值分析法

D.错误推测法

31.下列属于维护阶段的文档是(C)

A.软件规格说明

B.用户操作手册

C.软件问题报告

D.软件测试分析报告

32.快速原型模型的主要特点之一是(D)

A.开发完毕才见到产品

B.及早提供全部完整的软件产品

C.开发完毕后才见到工作软件

D.及早提供工作软件

33.因计算机硬件和软件环境的变化而作出的修改软件的过程称为( B)

A.改正性维护

B.适应性维护

C.完善性维护

D.预防性维护

34.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为(B)

A.可用性

B.可靠性

C.正确性

D.完整性

35.下列文档与维护人员有关的有(C)

A.软件需求说明书

B.项目开发计划

C.概要设计说明书

D.操作手册

36.在结构化方法中全面指导模块划分的最重要的原则是(D)

A.程序模块化

B.模块高内聚

C.模块低耦合

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、面向数据流的设计又称结构化程序设计(SP),它是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构。

18、可行性分析包括技术可行性、经济上的可行性和社会可行性。

19. 纯收入是指在整个生存周期之内的累计经济效益与投资之差。

20. 软件概要设计的主要任务就是软件结构的设计。

21. 在单元测试中,需要为被测模块设计驱动模块和存根模块。驱动模块用来模拟被测模块的上

级调用模块,存根模块用来代替被测模块所调用的模块。

三、名词解释

1、软件测试

软件测试是指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。

2、详细设计

详细设计又称过程设计,“怎样实现”这个软件系统,对系统中的每个模块给出具体的执行过程。详细设

计主要包括代码设计、数据库设计、输入/输出设计、人机对话设计等。

3、数据耦合

如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。

4、模块化

模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

5、信息隐蔽

信息隐蔽是指在设计模块时,应让一个模块内包含的信息(过程和数据)对于其他不需要这些信息的模块来说是不能访问的。

6、耦合

耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

7、功能内聚

如果模块内所处理的元素属于一个整体,完成一个单一的功能,则称为功能内聚。

8、事务流

事务流是指数据流图中输入流被分离成许多数据流,形成许多加工路径,并根据输入值选择其中一条路径来执行。

9、集成测试

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如结构图)组装成为子系统或系统,进行集成测试。模块相互间的协调和通信是这个测试过程中的主要问题,因此,这个步骤着重测试模块的接口。

10、需求分析

需求分析是开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。需求分析的第一步是进一步了解用户当前所处的情况,发现用户所面临的问题和对目标系统的基本需求;接下来应该与用户深入交流,对用户的基本需求反复细化逐步求精,以得出对目标系统的完整、准确和具体的需求。

11、白盒测试

白盒测试指把测试对象看成一个透明的白盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致,又称为结构测试。

12、黑盒测试

黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试。

13、渐增式测试

渐增式测试是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合起来进行测试。

14、非渐增式测试

非渐增式测试是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。

15、软件概要设计

在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能实现,即把软件需求转换为软件表示(只是描述软件总的体系结构)的过程。

16、模块

模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。

17、路径覆盖

路径覆盖是指选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

18、条件覆盖

条件覆盖是指不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。19、判定/条件覆盖

判定/条件覆盖是指选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。

20、条件组合覆盖

条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。

四、简述题

1、软件设计的基本原理包括哪些内容?

软件设计的基本原理: (1)模块化(四个属性:接口、功能、逻辑、状态)(2)抽象(3)信息隐蔽(4)模块独立性(两个定性的度量标准:耦合性与内聚性)

2、需求分析应遵循的原则是什么?

所有这些分析方法都遵守下述准则:(1) 必须理解并描述问题的信息域,根据这条准则应该建立数据模型。

(2) 必须定义软件应完成的功能,这条准则要求建立功能模型。(3) 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。(4) 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。

3、为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?

①软件测试是软件开发中不可缺少的重要一环,原因是:A、测试的工作量约占整个项目开发工作量的40%左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。B、软件测试代表了需求分析、设计、编码的最终复审。②软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。

4、软件测试的目的是什么?为什么把软件测试的目标定义为只是发现错误?

软件测试的目的有:①软件测试是为了发现错误而执行程序的过程。②一个好的测试用例能够发现至今尚未发现的错误。③一个成功的测试是发现了至今尚未发现的错误。

软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。

5、增量开发和原型开发有什么相同和不同的地方?

增量模型和原型模型都是从概要的需求出发进行开发的,但两者有明显的不同。

增量模型是从一些不完整的系统需求出发开始开发,在开发过程中逐渐发现新的需求规格说明,并进一步充实完善该系统,使之成为实际可用的系统。

原型开发的目的是为了发现并建立一个完整的经过证实的需求规格说明,并以此作为正式系统的开发基础。因此,原型开发阶段的输出是需求的规格说明,是为了降低整个软件生成期的费用而拉大需求分析阶段的一种方法,大部分原型是“用完就扔”的类型。

6、简述结构化程序设计方法的基本要点。

(1)采用自顶向下,逐步求精的程序设计方法。(2)使用三种基本控制结构构造程序,分别是顺序,选择和重复。(3)采用主程序员组的组织形式。(4)采用单入口单出口的模块形式。

7、简述文档在软件工程中的作用。

(1)提高软件开发过程的能见度;(2)提高开发效率;(3)作为开发人员阶段工作成果和结束标志;(4)记录开发过程的有关信息便于使用与维护;(5)提供软件运行、维护和培训有关资料;(6)便于用户了解软件功

能、性能。

8、简述提高可维护性的方法。

(1)建立明确的软件质量目标;(2)利用先进的软件开发技术和工具;(3)建立明确的质量保证工作;(4)选择可维护的程序设计语言;(5)改进程序文档。

9、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系?

模块的影响范围:受该模块内的一个判定影响的所有模块的集合。模块的控制范围:模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。

10、可行性研究的任务是什么?

首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。㈠技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。㈡经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。㈢社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

11、什么是软件详细设计?该阶段的基本任务是什么?

详细设计是软件设计的第二阶段,主要确立每个模块的实现算法、局部数据结构,用适当方法表示算法和数据结构的细节。其基本任务有:为每个模块进行详细的算法设计;为模块内的数据结构进行设计;对数据库进行物理设计,即确定数据库的物理结构;其他设计,根据软件系统类型,还可能要进行代码设计、输入/输出格式设计、人机对话设计;编写详细设计说明书;评审。

12、什么是模型?开发软件时为什么要建立模型?

所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。为了开发出复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型,对于那些因过分复杂而不能直接理解的系统,特别需要建立模型。

模型可以帮助我们思考问题、定义术语、在选择术语时作出适当的假设,并且可以帮助我们保持定义和假设的一致性。建立模型的目的主要是为了降低复杂性。

五、应用题

1、研究生入学考试的科目为英语、数学、政治,录取规则是:

a)总分200分以下(不含200分)不录取。

b)总分200分以上(含200分)时:

i.英语、数学均为60分以上(含60分)录取。

ii.数学55分以上(含55分),英语70分以上(含70分)需参加复试。

iii.其它情况不录取。

用决策树表达此项处理逻辑。

软件工程复习题目+答案

软件工程复习题目+答案

2、某银行发放贷款原则如下:

(1)对于贷款未超过限额的客户,允许立即贷款;

(2)对于贷款已超过限额的客户,若过去还款记录好且本次贷款额在2万元以下,可作出贷款安排,否则拒绝贷款。

请用结构化语言描述该原则。

软件工程复习题目+答案

3、银行确定储蓄类型部分数据流图如下:

存款单

软件工程复习题目+答案

试作出事务分析结构的控制结构图。

4、高考录取计分子系统有如下功能:

(1) 计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;

(2) 计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。 试根据要求画出该系统的数据流图。

软件工程复习题目+答案

5、某旅馆的电话服务如下:

可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455,466,888,552中任意一个号码。分局号是任意长度为4的数字串。

要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。

确定业务类型 整存整取 零存整取 活期储蓄

软件工程复习题目+答案

6、某培训中心要研制一个计算机管理系统。它的业务是:

将学员发来的信件收集分类后,按几种不同的情况处理。

1)如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,

然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。

2)如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,

并给学生注销单。

3)如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。

要求:

1).对以上问题画出数据流程图。

2).画出该培训管理的软件结构图的主图。

软件工程复习题目+答案

软件工程复习题目+答案

7.阅读以下说明和数据流图,回答问题1至问题3。

[说明]

学生住宿服务系统帮助学生在就学的城市内找以所需的住房,系统对出租的房屋信息、房主信息、需要租房的学生信息以及学生和房主的会面住处进行管理和维护。

房主信息包括姓名、地址、电话号码以及系统分配的唯一身份标识(ID)和密码;房屋信息包括房屋地址、类型(单间/套间)、适合住宿的人数、房租、房主的ID以及现在是否可以出租(例如由于装修原因,需等到装修后才可出租或者房屋已被租出)。每当房房屋信息发生变化时,房主须通知系统,系统将更新房到文件以便学生能够获得准确的可租用房屋信息,房主向系统中加入可租用的房屋信息时,需交纳一定的费用,由系统自动给出费用信息。房主可随时更新房屋的各种属性。

学生可通过系统查询现有的可租用的房屋,但必须先在系统中注册。学生信息包括姓名、现住址、电话号码、出生日期、性别以及系统分配的唯一身份标识(ID)和密码。若学生希望租用某房屋,则需要发出租房请求,请求中包含房屋的详细信息,系统将安排学生与房主会面的时间和地点,并将会面信息通知学生和房主,会面信息包括会面时间、地点以及会面双方的基本信息,系统将记录会面信息。

学生住宿服务系统的顶层图如图1-1所示;学生住宿服务系统的第0层DFD图如图1-2所示,其中,加工3的细化图如图1-3所示。

[问题1](6分)

(1)数据流图1-1缺少了一条数据流(在图1-2中也未给出该数据流),请给出此数据流的起点和终点,并采用说明中的词汇给出此数据流名。

起点:学生住宿服务系统终点:房主数据流名称:费用信息

(2)数据流图1-2中缺少了与"查询房屋"加工相关的数据流,请指出此数据流的起点和终点。

起点:房屋文件终点:查询房屋(或者4)

[问题2](4分)

"安排会面"加工除需要写入会面文件外,还需要访问哪些文件?房主文件学生文件

[问题3](5分)

请补齐下列数据字典条目:

登录信息=学生ID+密码

注册信息=姓名+现住址+电话号码+出生日期+性别

[数据流图1-1]

软件工程复习题目+答案

[数据流图1-2]

软件工程复习题目+答案

[数据流图1-3]

软件工程复习题目+答案

8. 乘客可以免费携带50kg的行李。超过50kg,国内乘客,坐头等舱,超重部分按每千克8元收费;乘坐经济舱,超重部分按每千克12元收费;对国外乘客,坐头等舱,超重部分按每千克16元收费;坐经济舱,超重部分按每千克24元收费;残疾乘客费用减半。

请用结构化语言、判定树、判定表中的任一种对行李费用计算进行描述。(257页)

软件工程复习题目+答案

9、在一栋m层楼的大厦里,用电梯内的和每个楼层的按钮来控制n部电梯的运动。当按下电梯按钮请求在指定楼层停下时,按钮指示灯亮;当电梯到达指定楼层时,指示灯熄灭。除了大厦的最低层和最高层之外,每层楼都有两个按钮分别指示电梯上行和下行。当这两个按钮之一被按下时相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要求的方向移动。当电梯无升降动作时,关门并停在当前楼层。

(1)请分别写出电梯系统基本事件流和扩展事件流。(提示:起点在中间的某一层)

(2)画出电梯控制类的动态模型(仅考虑一部电梯的情况)。

软件工程复习题目+答案

软件工程复习题目+答案

10、下面是某程序的流程图:

(1)计算独立路径数;

(2)给出一组独立路径。

(1)独立路径数=判断数+1=6+1=7

(2)路径1:1-2-14-20

路径2:1-3-4-15-20

路径3:1-3-5-6-16-20

路径4:1-3-5-7-8-17-20

路径5:1-3-5-7-9-10-18-20

路径6:1-3-5-7-9-11-12-19-20

路径7:1-3-5-7-9-11-13-20

一 选择题

1. 一切软件开发都毫无例外地必须从(4)。

①软件功能出发 ②用户出发 ③软件性能出发 ④需求出发

2. 在分析阶段通常包含两个方面的工作:建立一个以类图表示的反映问题域静

态关系的(4);建立一个以用例模型表示的反映(3)的动态模型。

① 用户需求 ②关系模型 ③系统行为 ④概念模型

3. 发现类的基本方法不包括(4)。

① 确定客户 ② 跟踪资金流 ③ 事件是潜在的类 ④ 系统是潜在的类

4. 继承的基本技巧和技术不包括(3)。

① 寻找相似之处 ② 寻找已有的类 ③ 选择性继承 ④ 遵循单句规则

5. 关联的多重性可用来表达一个(4)、特定值、无限定的范围或者一组(1)。 t=a;a=b;b=t; a>b

a>c

a>d

b>c

b>d

c>d

t=a;a=c;c=t; t=a;a=d;d=t; t=b;b=c;c=t; t=b;b=d;d=t; t=c;c=d;d=t; 排序结果输出 ⑴

T ⑵ F ⑶

T ⑷ F ⑸

T ⑹ F ⑺

T ⑻ F ⑼

T ⑽ F ⑾

T ⑿ F ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆

①取值范围②属性③对象④离散值

6. 当一个类没有足够的(1)去完成它的职责时,就要依靠与其它类的协作来完成工作。

①信息②操作③功能④数据

7. 一般情况下,区分主要参与者与次要参与者应该以使用系统时的(2)为依据,或者以一个(4)是谁发起的作为主要依据。

①重要程度②业务量③业务过程④交互过程

8. 前置条件描述了(2)之前系统必须满足的条件。

①系统运行②执行用例③系统启动④成功执行

9. 用例之所以被广泛采用的主要原因是,用例详细地描述了系统被使用时的(3),使得用户能够明白新系统到底是什么样的。

①执行过程②操作细节③行为细节④功能细节

10. 顺序图描述了对象之间传递消息的(2),它用来表示用例中的(4)。

①执行顺序②时间顺序③操作顺序④行为顺序

11. RUP是重型方法论的典型代表,它的核心理念是:“(2)、以架构为中心、迭代和增量的软件开发过程。”

①测试驱动②用例驱动③模型驱动④功能驱动

12. 如果说用例图显示(2)应该做什么,活动图则指明了(2)将如何实现它的目标。

①对象②系统③用例④参与者

13.基本事件流是参与者在用例中所遵循的(3)。

①基本原则②执行路径③逻辑路径④执行步骤

二填空题

1. 需求调研是(了解问题),分析是(定义问题),而设计则是(解决问题)。

2. 建立概念模型的目的是帮助开发团队理解(问题域)的各种概念、各种名词、以及它们之间的各种关系。而建立用例模型的目的是帮助开发团队(理解)用户对系统的各种功能需求。

3.类图包含(类名)、(属性)和操作等信息。

4. 子类应该从父类继承所有的东西,这种概念叫做(纯粹)继承。如果不这样的话,代码将很难(理解)和维护。

5. 关联通过组合属性和方法来实现。属性(存储)维护关系的信息,方法(保证)信息是当前可用的。

6. 类的职责是类知道或要完成的(事情)。类所知道的事情是它的(数据),它要完成的事情就是它的(功能)。

7.概念模型是“帮助开发团队了解并在此基础上理解用户所处的环境”,而用例模型则是“帮助开发团队弄清楚用户具体想解决什么问题”。前者是(静态模型),为后者工作的展开建立了一个总体框架;后者是(动态模型),为实现前者注入了活力。两者相辅相成,一般情况下,其(工作顺序)不分先后,而是以一种(迭代的)方式向前推进。

8. 首先,用例是由一组(用例实例)组成的,用例实例也就是常说的“使用场景”,就是用户使用系统的一个特定的、实际的场景;其次,用例应该给参与者带来(可见)价值,即参与者的参与应该能得到好处;最后,用例是在(系统中)的,而不是(系统外)的东西。

9. 用例是满足需求的(过程),而需求则是过程背后所实现的(价值)。这正是用例建模的(核心思想)。

10. 假设描述的是系统在使用用例之前必须满足的状态,这些(条件)并没有经过用例的检测,(用例)只是假设它们为真。

11. 识别用例时的一个常见错误是把用例当成是(单独)的步骤、操作或事务的处理。

12. 构建用例模型需要经历三个阶段:确定系统的(参与者)、合并(需求)获得用例、细化用例描述。

13. 用例图显示了系统的(一组用例)、用例的参与者以及用例和参与者之间的(关系)。

14. 顺序图主要有4个标记符:对象、(生命线)、消息和(激活)。

15. 状态图用来描述一个(特定)对象的所有可能状态及其引起状态(转移)的事件。

16. 活动图是用来对不同区域的工作如何(彼此交互)进行建模,而状态图用来表示单个对象,以及对象

的行为如何(改变)其状态。

17. 框架和类库最重要的区别是:框架是一个(半成品)的应用程序,而类库只包含一系列可被应用程序(调用的类)。

18. 我们可以说,类库是(死的),而框架是(活的)。应用程序通过调用类库来完成特定的功能,而框架则通过调用应用程序来实现整个操作流程。

19. 依赖倒置原则对我们的启发是:依赖于抽象。因此,要针对(接口)编程,不针对(实现)编程。

20. 通常来说,“接口”就是(一种特殊的抽象类)。针对接口编程的组件不需要知道(对象)的具体类型和实现,只需要知道抽象类定义了哪些接口,这减少了实现上的(依赖关系)。

三问答题

1.分析工作的主要内容及结果是什么?

分析工作的主要内容是研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系。分析的结果是确定描述问题域与系统责任所需的对象,定义对象的属性、服务以及它们之间的关系。

2.类与对象之间有什么区别?

类是对资源的定义,它所包含的信息主要用来描述某种类型实体的特征以及对该类型实体的使用方法。对象是具体的实体,它遵守类制定的规则。从软件的角度看,程序通常包含的是类的集合以及类所定义的行为,而实际创建信息和管理信息的是遵守类的规则的对象。

3.组合与聚合有什么异同?

同:两者都可表示类之间整体和部分的关系,整体类都是由部分类组成。

异:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。

4.建立概念模型有哪些步骤?

1、找出问题域中候选概念。用概念类分类列表和名词短语分别识别的方法找出当前需求中的候选概念类。

2、将概念绘制到概念模型中。在概念模型中描述找出的概念类。

3、在概念之间加入必要的关联来记录概念之间需要保持的联系。在概念类之间添加必要的关联来记录那些需要保存记忆的关系。

4、为概念添加必要的属性,来满足需求信息。

5.什么是参与者?

参与者(actor)是系统外部的一个实体,它以某种方式参与了用例的执行过程。参与者用于表示使用系统的对象,或者说,参与者由它们参与用例时所担当的角色来代表。

6.用例有什么特征?

(1)用例总是由参与者启动。用例所代表的功能必须由参与者激活,而后才能执行。一般情况下,参与者可能没有意识到启动了一个用例。换句话,参与者需要系统完成的功能,其实都是通过用例具体完成的,参与者一定会直接或间接的命令系统执行用例。

(2)用例为参与者提供结果值。用例必须为参与者提供实在的结果值,虽然这个值并不总是重要的,但是能被参与者识别。

(3)用例具有完整性。用例是一个完整的描述。虽然编程实现时,一个用例可以被分解成几个小用例(函数),每个小用例之间互相调用执行,一个小用例可以先执行完毕,但是该小用例执行结束并不能说这个用例执行结束。也就是说,不管用例内部的小用例是如何通信工作的,只有最终产生了返回给参与者的结果值,才能说用例执行完毕。

7.什么是基本事件流?举例说明。

参与者在用例中所遵循的逻辑路径。因为它描述了当各项工作都正常进行时用例的工作方式,所以通常称为基本路径。事件流描述了用户和执行用例之间交互的每一步。例如,图书馆借出图书用例的基本事件流:

①管理员输入借书证信息②系统要确保借书证信息的有效性③检查是否有超期的借阅信息④管理员输入要借阅的图书信息⑤系统将借阅者的借阅信息添加到数据库中⑥系统显示该借阅者的所有借阅信息

8.什么是边界类?什么是实体类?什么是控制类?

边界类:用于建立系统与其参与者之间交互的模型。这种交互通常包括接收来自用户和外部系统的信息与请求以及将信息与请求提交到用户和外部系统。

实体类:实体类通常用于对持久的信息建模,即主要对诸如个体、实际对象或实际事件的某些现象或概念的信息及相关行为建模。

控制类:代表协调、排序、事务处理以及其他对象的控制,经常用于封装与某个具体用例有空的控制。9.顺序图有什么作用?

顺序图的主要用途之一是为用例构建逻辑模型,任何用例都可以使用顺序图进行进一步的阐明和实现,即把用例所表达的需求,转化为进一步的、更加正式层次的精细表达。

10.请对顺序图和通信图进行比较。

顺序图主要描述特定用例时系统各组成部分之间交互的次序,强调的是交互的时间顺序,而通信图则从另一个角度描述系统对象之间的链接,强调的是交互的情况和参与交互的对象的整体组织。

11.什么是过程?为什么需要过程?

一个过程定义了为达到某个确定的目标,需要什么人在什么时间以何种方式做何种工作。

一个有效的过程为有效地开发高质量的软件提供准则,它获取并提出当前技术条件下可行的最佳实践方案。因此,它可降低风险并增强预见性。

12.统一软件开发过程分为哪几个阶段?各个阶段主要完成哪些工作?

分四个阶段:初始(先启)、精化、构建、交付(产品化)。

先启阶段:明确项目目标和范围,其主要任务是理解与分析需求,生成用例模型框架,对优先级较高的用例进行细化。

精化阶段:确立系统架构和技术方向,完成部分优先级最高的用例开发,并完善所有的用例模型。

构建阶段:大规模并行实施设计、开发、单元测试,即经多次迭代,逐渐完成不同优先级的用例开发。

产品化阶段:产品验收、部署、发布,即进行各种功能、性能测试,对其进行产品化、部署,完成整个系统的开发工作。

13.简述面向对象各种模型的演化过程。

(1)从需求出发,创建问题域一静一动两个模型:概念模型和用例模型。首先利用“名词动词法”从需求描述中提取相应的类来建立概念模型,并添加主要属性及识别它们之间的关联关系;对于较复杂的应用系统,则必须首先进行业务分析,建立业务模型后再建立概念模型。其次根据用户需求编写用例描述、绘制用例图,建立包括用例描述和用例图在内的用例模型,此时可以进行用户界面原型的创建,从中发现用户的使用场景,建立开发人员与用户之间进行沟通的共同基础。用户界面模型的创建既可以使用可视化语言,也可以简单地使用绘制草图的方式来实现。

(2)在用例模型的基础上,进行健壮性分析,目的是发现实体类、控制类和边界类,并绘制健壮性分析图,从而较平滑地从分析阶段向设计阶段过渡。如果用例较复杂,则我们在描述事件流时,可以借助活动图来表示。

14.识别用例和描述用例有什么区别?

识别用例和描述用例并不是一回事。识别是指对系统需要做的事情进行界定、探索和发现。描述用例则是指对用例中的流程和步骤进行细化。描述用例贯穿了项目的整个生命周期,而识别用例则必须尽可能早地完成。

15.组件与类有什么异同?

共同点:两者都具有自己的名称、都可以实现一组接口、都可以具有依赖关系、都可以被嵌套、都可以参与交互,并都可以拥有自己的实例。

不同点:组件描述了软件设计的物理实现,即代表了系统设计中特定类的实现;而类则描述了软件设计的逻辑组织和意图。另外,每个组件可能包含很多的类,并实现很多的接口。

16.什么是开闭原则?如何理解?

开闭原则是指一个软件实体应当对扩展开放,对修改关闭,也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。

17.什么是接口隔离原则?如何理解?

接口隔离原则是指使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。使用接口隔离原则拆分接口时,首先必须满足单一职责原则,将一组相关的操作定义在一个接口中,且在满足高内聚的前提下,接口中的方法越少越好。可以在进行系统设计时采用定制服务的方式,即为不同的客户端提供宽窄不同的接口,只提供用户需要的行为,而隐藏用户不需要的行为。

18.为什么说要为人写代码,而不是为机器写代码?

现代软件工程理论更强调人在项目中的作用,因为开发的程序首先是给人看的,而不是给机器看的。开发程序时应尽可能的提高可读性,才有利于提高可维护性和可扩展性,而程序的可读性,不仅仅是注释的规范,更多的还有规范的标识符命名方式、清晰的的代码格式和简洁的算法等,也是为了让开发人员更好地理解以便往后更深入的开发,所以说要为人写代码,而不是为机器写代码。

19.什么是里氏替换原则?如何理解?

里氏代换原则是指所有引用基类(父类)的地方必须能透明地使用其子类的对象。在软件中如果能够使用基类对象,那么一定能够使用其子类对象。把基类都替换成它的子类,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类的话,那么它不一定能够使用基类。里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

20.对分析和设计模型进行测试有什么优点?

(1)测试用例可在过程中更早的确定,甚至在需求确定之前。

(2)漏洞可在开发过程的早期检测出来,从而节省了时间、金钱和精力。

(3)可以在项目的早期检查测试用例的正确性。

四应用题

1. 考虑以下对习题管理系统的需求,识别候选类并说明理由:

该系统的需求陈述为:在一个公共习题库的支持下,使各科教师可以在系统中编写习题及其标准答案,并将编写的习题及答案加入题库;或者从题库中选取一组习题,组成一份向学生布置的作业,并在适当的时候公布答案。学生可以在系统中完成教师布置的作业,也可以在题库中选择更多的习题作练习。教师可以通过系统检查学生的作业,学生也可以在教师公布答案后对自己的练习进行核对。系统维持对题库的管理,并对教师及学生的权限进行检查:只有本课程的教师可以提交或修改习题,并指定哪些习题的答案可以向学生公开。

候选类:教师、学生、班级、习题、习题板、考试题板、练习本、答案、题库服务器

2.超市销售管理系统的需求描述如下,请识别候选类并说明理由:

该系统是超市业务管理系统的一个子系统。为了简化问题,我们对它的功能作了适当的限制:只负责前台的销售管理,而且不处理信用卡付款或会员优惠等业务。其功能需求是:

(1)为顾客选购的商品计价、收费、打印清单;

(2)记录每一种商品的编号、单价及现有数量;

(3)帮助供货员发现哪些商品将要脱销,以便及时补充货源;

(4)随时按上级系统的要求报告当前的款货数量、增减商品种类或修改商品价格;

(5)交接班时结算货款数目,报告上级系统。

对这个系统而言,与系统进行交互的活动者有收款员、供货员和它的上级系统。由此我们会发现如下一些对象:

收款机:该对象直接与收款员进行交互,模拟收款员的登录、售货和结算等行为。

供货员:此类对象用来与实际的供货员进行交互(提醒他们及时补充货物)并模拟他们的行为(在增加货物时修改) (系统中货物的数量)。

上级系统接口:用来处理与上级系统的交互。

考虑到该系统问题域内部的事物和系统责任可以发现如下对象:

商品:这是系统中最显著的对象,每一个对象的实例表示一种具体的商品,记录该商品的名称、价格、数量等信息,并通过相应的服务动态地保持这些信息的准确性。

销售事件:顾客购买商品时,只要通过一次计价收款就能完成所有的购买,每一次这样的事件都需要在系统中保存一段时间,以便在汇成账目时进行必要的复查,因此要建立“销售事件对象”。

账册:记录一个收款员在一个班次内经手的所有销售事件的款、货账目,负责向上级系统报账,并在交接班时进行账目交接。它的一个对象实例只针对一个收款员的一个班次,不是总账(总账在上级系统中)。

按照常识,我们可能会觉得超级市场的管理人员,例如“经理”和“保安人员”也是系统的对象,但是我们会发现这两个对象对本系统来说是不需要的,因此我们可以删除这些对系统来说无用的对象。

3.写出图书馆中借阅图书的用例描述。

用例名称:图书借阅

用例描述:图书馆工作人员输入借阅证编号和图书编号来完成图书借阅

参与者:图书馆工作人员

前置条件:图书馆工作人员点击“图书借阅”

主事件流:

1、输入借阅证编号

2、输入图书编号

3、点击“借阅”

4、显示当前借阅信息(书名,ISBN,借阅时间,应归还时间)

备选事件流:

1、点击“重填”实现借阅证和图书编号重新填写

4.写出图书馆中归还图书的用例描述。

用例名称:图书归还

用例描述:图书馆工作人员输入图书编号进行图书归还

参与者:图书馆工作人员

前置条件:图书馆工作人员点击“图书归还”

主事件流:

1、输入图书编号

2、点击“查询”

3、显示该书借阅信息(书名ISBN,借阅时间,应归还时间)

4、点击“归还”

5、提示“归还成功”

备选事件流:

1、点击重新填写,实现图书编号重新填写

5. 音像商店的问题陈述如下:

一个新的音像商店准备向比较广泛的人群销售录像带和光碟。该商店的管理决定在计算机系统的支持

下来运作。对这种管理方式已经有许多小规模业务软件包,适合于用户化和进一步开发。为了帮助对软件包的选择,该商店雇用了一个业务分析员,他的任务就是确定和表示这个需求。

该音像商店一开始将存有大约1000盘录像带和500张光碟,这些库存已经向一个供应商订购,但在未来的订购中将接触更多的供应商。所有的录像带和光碟都具有一个条形码,以便可以集成一个条形码扫描仪来支持销售和返还。客户会员卡也同时条形码化。

现存的客户能够预定录像带和光碟并指定某天来取。系统必须拥有灵活的搜索机制来回答客户的询问,包括这个音像商店还没有进货的电影(但可以是已经请求订购了的)。

客户最多可租借8盒带子(光碟),如果有拖欠记录,则需为每盒带子(光碟)交纳相当于其成本的押金,否则,不能租借。

请建立该音像商店的用例模型(含用例图和租借音像制品用例的用例描述)。

软件工程复习题目+答案

用例名称:租借音像制品

用例描述:店员扫描输入会员卡信息和音像制品信息进行音像制品租借

参与者:店员

前置条件:成功登录,进入系统界面

后置条件:存储租借音像制品记录,所借音像制品状态为不可借

主事件流:

1、店员用扫描仪扫描输入会员的会员卡信息并提交给系统

2、系统验证会员身份

3、店员用扫描仪扫描输入会员所要租借音像制品信息并提交给系统

4、系统获取并显示音像制品的详细信息

5、系统记录租借的音像制品信息,并且修改音像制品的状态

6、系统显示该音像制品的租借记录

备选事件流:

1、点击重新输入,实现会员卡信息和音像制品信息重新扫描输入

6. 建模“借阅图书”的顺序图。

相关推荐
相关主题
热门推荐