软件工程

软件工程
chenlei基本概念题(共10分,每小题2分)
第一章
什么是软件?
答:是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。软件 = 程序 + 数据 + 文档
什么是软件危机?
答: 软件危机是指在软件开发、维护过程中所存在的一系列严重、或致命的问题。目前,几乎所有软件都不同程度地存在这类问题。什么是软件工程?
答:
① 软件工程是开发、运行、维护和修复软件的系统方法,是一门工程学科,即采用工程的概念、原理、技术和方法来开发和维护软件。
② 软件工程是把系统的、 有序的、 可量化的方法应用到软件的开发、 运营、和维护上的过程。什么是软件生命周期?
答:软件生命周期又称作软件生存周期、系统开发生命周期,是指从提出开发软件产品开始,直到软件报废为止的全过程。2、主要包括软件定义、开发和运行三个阶段,每个阶段又可进—步划分成若干个子阶段。
3、划分方法:
定义阶段:是对软件进行一个初步的分析,确定软件要完成的总目标、制定软件开发计划、完成软件的可行性分析,并确切回答系统要解决的问题是什么?
开发阶段:设计和实现在前一个时期定义的软件,主要体现为系统设计(总体设计、详细设计)和系统实现。
运行阶段:测试校验、交付与维护阶段的主要任务是使开发出的软件持久地满足用户的需要,直到寿命终止。
通常,一个阶段的工作要在前一个阶段工作完成并审查通过之后,才能够开始进行。而这一阶段的工作也恰恰是为了能够延续并具体实现前一个阶段所提出的方案。面向对象技术的四要素是什么?
答:见教材第1章1.4节、或第7章7.1节PPT。
类 + 对象 + 继承 + 用消息通信什么是软件重用?
答:重用也叫再用或复用,是指同一事务不做修改或稍加修改就多次重复使用。
第三章
- 什么是模块化?
答:见学习通第3章第2题第1问答案。
①模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,既相对独立,又相互联系,把这些模块集成起来构成一个整体,可以完成软件系统所要求的功能。
模块化是解决软件复杂问题的一种手段。对于一个复杂的大型软件系统,应该将它适当分解,即把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。分而治之。
第四章
- 什么是详细设计?
- 答:见学习通第4章第1题答案的第1句话。
软件详细设计的目标是对目标系统做出精确的设计描述,其主要任务包括:
l 模块的程序算法设计。
l 模块内的数据结构设计。
l 模块接口设计。
l 模块测试用例设计。
l 编写详细设计说明书。
l 详细设计评审。
- 答:见学习通第4章第1题答案的第1句话。
第五章
程序内部文档主要包括哪三部分?
答:见学习通第5章作业第1题答案。
程序内部的文档包括恰当的标识符、适当的注释和程序的视觉组织等等。什么是软件测试?
答:见学习通第5章作业第2题第1问答案。
软件测试是为了寻找错误而运行程序的过程。软件测试应该是对软件开发过程中形成的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试。什么是黑盒测试?
答:见学习通第5章作业第3题第1问答案。
黑盒法:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。只关心软件的功能是否正确。不看代码。什么是白盒测试?
答:见学习通第5章作业第3题第2问答案。
白盒法:也叫玻璃盒测试(Glass Box Testing)。对软件的过程性细节(内部逻辑)做细致的检查。这一方法是把测试对象 看作一个打开的盒子,它允许测试人员利用程序内部的逻辑 结构及有关信息,来设计或选择测试用例,对程序所有逻辑路径进行测试。必须看代码什么是测试用例?
答:从测试用例本身构成的角度来看,测试用例是测试执行的最小实体,是为特定的目的而设计的一组测试输入、执行条件和预期结果。什么是软件调试?
答:见学习通第5章第8题第1问答案。
①调试是在测试发现错误之后排除错误的过程。什么是集成测试?
答:集成测试也称组装测试或联合测试。是指在单元测试的基础上,将所有模块按照设计要求组装成一完整的系统进行的测试。组装模块的方式有两种:渐增式测试和非渐增式测试。什么是回归测试?
答:是指重新执行已经做过测试的某个程序,以保证所做的程序变化没有带来非预期的副作用。
第六章
- 什么是软件维护?
答:见教材或PPT第6章6.1节。
在软件交付使用后,为了改正错误或满足新的需要修改软件的过程。房屋维护
第七章
什么是面向对象?
答:见学习通第7章第1题第1问答案。或PPT中7.1节的最后一页的定义。
面向对象(object-oriented,OO):是一种具体的软件开发技术与策略;也是一整套关于如何看待软件系统与现实世界的关系,用什么观点来发现问题并进行求解,如何进行软件系统构造的软件方法学。什么是统一过程?
答:见学习通第7章第2题第1问答案。
统一过程是一个软件开发过程——是一个将用户需求转化为软件系统所需的活动的集合。
第八章
- UML的中文含义和英文全称
答:中文含义:统一建模语言;英文全称:Unified Modeling Language。
第九章
- 什么是类?
答:类是对象的模板(对象类),是一组具有相同属性和相同操作的所有对象的集合。
第十章
什么是软件构架?
答:见学习通第10章第1题的第1句话答案。
构架(Architecture)是一个系统的组织结构,包括:系统分解的各个组成部分、各部分相互之间的连接性、交互机制、以及指导系统设计的相关规则。‘交通系统
什么是设计模式?
答:见学习通第11章作业第3题第1问答案。
设计模式是对软件设计中普遍出现的一类问题的解决方案,这种解决方案定义明确、文档充分,经历时间考验。武术
什么是多态性?
答:是面向对象技术的最根本特征,表明类在同一外表(接口)下表现出的多种行为的能力。通过统一接口表现不同行为的能力。智能家电
CASE的英文全称是?中文含义是?
答:英文全称是:Computer Aided Software Engineering。中文含义是:计算机辅助软件工程。什么是需求分析?
答:见第2章PPT的2.13节中的“需求分析”的答案。
需求分析是 发现、求精、建模、规格说明和复审的过程。单一职责原则
答:一个类只完成一个功能,或只有一个职责。
简答题(共18分,每小题3分)
第一章
如何消除软件危机?
答:消除途径主要有:
1、理解软件的概念:软件是程序、数据及相关文档的完整集合。
2、应该推广使用在实践中总结出来的开发软件的成功的技术和方法
3、应该开发和使用更好的软件工具。
4、软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。
所以要解决软件危机中的问题,既要有技术措施(方法和工具),又要有必要的组织管理措施,必须用工程化的方法管理软件开发过程,用先进的软件开发技术进行软件开发,从管理和技术两方面保证软件开发的质量。(认知+技术+工具+管理)
软件工程师除了具备最基本的编码能力和团队作战能力之外,还应必须具备哪4项技能?请详细解释其含义。
答:第1章第1题
l 抽象——业务、功能的抽象
l 分类——归纳、演绎
l 分解——复杂系统的分解
l 复用——提高分析、设计、开发效率
软件开发有哪3项基本策略。
答:第1章第4题第1问只需给出名称即可,不必解释其含义。- 软件复用:把复用的思想用于软件开发,称为软件复用。采用复用思想可简化软件开发过程,提高软件质量,并降低总的开发工作量与维护代价。
- 分而治之:俗语“分而治之、各个击破”,降低系统的复杂性
- 软件优化与折中:不断改进软件中的算法、数据结构和程序组织,实现整体质量的最优。
为了让软件跑的快起来,提高开发速度,提高软件质量必须对开发好的软件系统进行优化。
软件生命周期主要包括哪些阶段?
答:见学习通第1章第5题第2问答案。
主要包括软件定义、开发和运行三个阶段,每个阶段又可进—步划分成若干个子阶段。
划分方法:
定义阶段:是对软件进行一个初步的分析,确定软件要完成的总目标、制定软件开发计划、完成软件的可行性分析,并确切回答系统要解决的问题是什么?
开发阶段:设计和实现在前一个时期定义的软件,主要体现为系统设计(总体设计、详细设计)和系统实现。
运行阶段:测试校验、交付与维护阶段的主要任务是使开发出的软件持久地满足用户的需要,直到寿命终止。
通常,一个阶段的工作要在前一个阶段工作完成并审查通过之后,才能够开始进行。而这一阶段的工作也恰恰是为了能够延续并具体实现前一个阶段所提出的方案。常用的软件开发过程模型有哪5个?
答:见学习通第1章第6题第1问答案。
常见的软件工程模型有:瀑布模型、快速原型模型、演化模型、螺旋模型、喷泉模型等。
第二章
系统流程图与程序流程图有什么区别?
答:系统流程图表达的是信息在系统中各个部件之间流动的情况;程序流程图表达的是对信息进行加工处理的控制过程。E-R图中的“联系”主要有哪几种方式?请分别针对每一种方式进行举例说明。
答:主要有如下三种方式:
(1)一对一联系:如:班主任和班级理]。
(2)一对多联系:如:教师与课程理]。
(3)多对多联系:如:学生与课程理软件可行性分析的目的和任务分别是什么?
答:见第2章第2.2节PPT。
目的:不是解决软件问题,而是确定在当前条件和环境 下软件问题是否能解决?
任务:用最小的代价成本、在尽可能短的时间内确定软 件问题是否能够解决?需求分析的基本任务是什么?
答:见学习通第2章第1题第1问答案。
1)问题的背景、开发系统的现状。弄清楚准备开发的软件使用背景,开发系统现处于什么状态,为什么要开发它。
2)开发的理由和条件、开发系统的问题要求。
3)总体要求、问题的性质、类型范围。
4)要实现的目标、功能规模、实现目标的方案。
5)开发的条件、环境要求等。
第三章
系统设计包括哪两个阶段?
答:见学习通第3章第1题第1问答案。
①为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:
l 结构设计:确定程序由哪些模块组成,以及这些模块之间的关系;
l 过程设计:确定每个模块的处理过程。
其中,结构设计是总体设计阶段的任务,过程设计是详细设计阶段(通过对结构设计内容进行细化,得到软件的详细的数据结构和算法)的任务。总体设计的主要任务是什么?
答:见学习通第3章第1题第2问答案。
②总体设计的主要任务是:设计软件的结构——也即确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系(如何组成?如何调用?)。衡量模块独立性的两个标准是什么?
答:见第3章第3题第1问答案。
模块的独立性一般采用耦合和内聚这两个定性的技术指标进行度量。模块独立性追求的设计目标?
答:见第3章3.2节所讲,教材或PPT都有答案。
力争做到低耦合、高内聚
第四章
人机界面设计主要有哪3项黄金规则?
答:见学习通第4章第2题,教材或PPT都有答案。只需给出名称即可,不必解释其含义。
置用户操作于控制之下:不要强迫用户进入不必要的、或不希望的动作,并提供灵活的交互;允许用户交互,可以被中断和撤消。
减少用户的记忆负担:减少对短期记忆的要求;建立有意义的缺省值;定义直觉性的捷径;界面的视觉布局应该基于真实世界。
保持界面一致:允许用户将当前任务放入有意义的环境中;保持应用系统界面的一致性;如果用户已经习惯了某种交互模式,除非有不得已的理由,否则不要改变,以免导致混淆。
这些黄金规则实际构成了一系列用户界面设计原则的基础,这些原则可以指导软件设计的重要方面。详细设计工具也称程序算法设计工具,它主要分为哪3类?
答:见学习通第4章第3题,教材或PPT都有答案。只需给出名称即可,不必解释其含义。
表达过程规格说明的工具叫做详细设计工具,也称程序算法设计工具。它可以分为三类:图形工具(如程序流程图),表格工具(如判定表),语言工具(如PDL过程设计语言)。
第五章
- 软件测试的目的与基本任务是什么?
答:见学习通第5章第2题第2问答案,教材或PPT都有答案。
测试目的:设计一系列的测试方案,发现程序中的错误,是为了证明程序有错, 而不是证明程序无错。
基本任务:是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,评估是否能满足软件设计要求的过程 - 软件调试的目的是什么?
答:见学习通第5章第8题第2问答案。
软件测试的目的是尽可能多地发现软件中的缺陷,但这并不是最终目的,在进行了成功的测试之后必须进行调试工作。而调试的目的是确定错误的原因和位置,并进行程序修改、排除错误,因此调试也称为纠错。
第六章
- 软件的维护一般分为哪几类?
答:见学习通第6章第2题答案。微信例子
按软件维护的性质不同,可以把软件维护分为改正性维护、适应性维护、完善性维护、预防性维护四种类型。 - 什么是软件维护的副作用?
答:见教材或PPT第6章6.6节。
软件维护副作用的定义:是指由于修改程序,而导致新的错误、或新增加一些不必要的活动。 - 简述文档的重要性?
答:见学习通第6章第4题第1问答案。
文档是影响软件可维护性的决定性因素。所以维护期间的文档比程序代码更重要。 - 软件工程的目的是什么?
答:见学习通第6章第5题答案。盖房子
提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。
第七章
什么是用例图?用例与用例之间的关系有哪三种?
答:
第1问:用例图是由参与者,用例以及它们之间的关系构成的用于描述系统功能的图。
第2问:扩展、包含、泛化用例图主要起什么作用?
答:见学习通第7章作业第4题第2问答案的最后一条答案。侦探
(1)用例图:需求捕获 测试验证依据——此图是获取软件需求和验证软件正确性主要来源
第八章
- 业务模型主要体现为哪两类模型?
答:见学习通第8章作业第2题。做什么、怎么做业务模型是理解一个组织中业务过程的技术。业务模型(business model)对应用领域的业务过程进行描述,例如,银行的业务过程包括存款、贷款以及投资等。
业务模型主要通过业务用例模型和业务对象模型来体现,业务模型提供对客户业务的整体了解。
第十章
- 为什么需要构架?
答:见学习通第10章作业第2题。
需要构架的原因主要有以下四个:理解系统、组织开发、鼓励重用、演化系统。
具体描述为:
1)理解系统的构成及关系
2)便于组织开发,协调分工
3)为提高质量和开发效率鼓励重用
4)进一步演化系统,适应新的变更,并通过接口与外部系统进行交互。 - 如何描述构架?
答:见学习通第10章作业第5题的第1段话的答案。
构架描述是建立系统各种模型的视图,即用例、分析、设计、实施(部署)和实现等5个模型的视图——如,RUP中采用的“4+1”视图。构架描述中不包括测试模型视图——因它对描述构架不起作用,只是用来验证软件的构架基线。
采用面向数据流建模时,对DFD的精化要精化到什么程度才停止精化工作?
答:对DFD的精化可以精化到每个加工处理过程只执行一个单一功能为止。什么是结构化程序设计?
答:是指只用3种基本控制结构(顺序、选择和循环)就能实现任何单入口/单出口的程序。另外,为了方便实际编程,还经常使用DO-UNTIL和DO-CASE两种控制结构理]。月收入<=800元者免税,现用输入数800元和801元测试程序,请问这是采用黑盒测试法中的哪种方法?请解释其理由?
答:
第1问:是边界值分析方法。
第2问:题目中输入的800元是采用的刚好等于边界的数据,而801选择的是大于边界的数据,因此采用的测试方法是黑盒测试法中的边界值分析方法。现有一个计算类型的程序,它的输入只有一个Y,其范围是-50≤Y≤50。现从输入的角度考虑设计了一组测试用例:-100,100,0。请问设计这组测试用例的方法是黑盒测试法中的什么方法?并解释其理由。
答:
第1问:是等价类划分方法理。
第2问:在给定的一组测试用例-100、100、0中,数据-100因为小于Y的最小值-50,故是无效数据;数据100因为大于Y的最大值,故也是无效数据;数据0应为介于-50到50之间,故数据0则是有效数据。因此该方法是黑盒测试法中的等价类划分方法。软件测试时应该追求的目标是什么?软件测试有哪5种测试策略?
答:
第1问:以最少的测试数据、时间和人力,最大可能的发现更多的错误。
第2问:答案见第5章5.2节PPT。
单元测试、集成测试、确认测试、系统测试、验收测试UML中类与类之间的关系主要包含哪6种关系?请标出下列每个图示是哪种关系:
答:分别是:依赖、泛化、关联、实现、聚合、组合。RUP的核心思想是什么?RUP“4+1”视图指的是哪些视图?
答:
第1问:用例(use case)驱动、以构架为中心、迭代(iteration)和增量的开发过程。
第2问:“4+1”视图的“4”指的是逻辑视图、进程视图、实现视图和部署视图,“1”指的是“用例视图”。在进行包的设计中,有一条原则是“避免循环依赖”,如果设计时出现循环依赖,会有什么现象发生?
答:见学习通第9章第4题答案。
若出现循环依赖则使得任何一个包都不能独立的重用,修改任何一个包都会引起所有包的变化。实体类建模主要做什么工作?对实体类建模可采用UML建模语言的什么图来表示?并给出该图的图形符号表示?
答:
第1问:确定实体类、属性、实体类之间的联系和交互行为,并画出类图来表示这些信息。理]。
第2问:对实体类建模可采用UML类图来表示。
第3问:[图形符号未提供]。用例实现指的是什么?
答:用例实现即用交互图(顺序图、通信图)来实现参与某用例的对象间的交互和协作建模即每个用例的每个事件流(场景)都需要建立一个顺序图,每个用例都需要建立一个与之对应的类图。衡量软件结构好坏(复杂程度)的指标有哪几种?
答:衡量软件结构好坏的指标有:深度,宽度,扇出数,扇入数。什么是设计元素?设计元素主要包含哪5个?
答:
第1问:设计元素(Design Elements)是指能够直接用于实现(编码)的模型要素。理]。
第2问:主要包括为:Package、Design Classes、Subsystem、Interface、Active Class。或:主要包括:包、设计类、子系统、接口、主动类。包的设计原则是什么?
答:避免循环依赖。避免分支依赖。如何确定边界类?如何确定控制类?
答:
边界类:在用例模型中,每一对“参与者/用例”之间可定义一个边界类;理]。
控制类:在用例模型中,通常,每个用例至少定义一个控制类,业务复杂的可能要分解为多个控制类。调试和测试有何区别?
答:见第5章PPT的5.11节。使用基本路径测试法进行软件测试时主要包括哪三个关键步骤?
答:
第1步:根据程序代码、或程序流程图、或PDL伪代码,画出相应的程序图(流图)。
第2步:计算流图的环形复杂度V(G)=路径数目?
第3步:确定只包含独立路径的基本路径集合。请给出类、包、子系统、接口、活动、状态、参与者、用例、用例间3种关系等的UML图形符号。
答:见第7、8、9、10、11章PPT讲解内容。什么是实体类、边界类和控制类?请分别给出这三个类的UML图符表示?
答:见学习通第9章作业第2题标准答案。
实体类(entity class)用来对持久信息进行建模。
边界类(boundary class)用来对软件产品和参与者之间的交互进行建模。
控制类(control class)用来对复杂的计算和算法进行建模。在银行软件产品中,计算利息的算法就是一个控制类。
叙述分析题(共24分,每小题4分)
以下两种设计方案,哪一种方案使得子系统 Client Support 可以提高系统的稳定性?请解释其原因。
答:见第11章11.2节PPT所讲内容。根据任意给出的顺序图(如下图),完成以下3个分析工作:
- 指出下图中的参与者是哪个?
- 哪些是对象?
- Server类调用了 CreditService 类中的什么操作?
答:见老师所讲的第11章11.2节所讲的“设计用例”内容。
- Server类调用了 CreditService 类中的什么操作?
请根据下图,来描述界面对象之间的关联的语义联系。
答:一个工具条包含多个按钮,而每个按钮对应一个对话框。在一个宾馆中,每个客房部经理(HouseKeeper)都有一个主管(Manager)负责,有的 Manager 可能负责多个 HouseKeeper,有的 Manager 可能一个 HouseKeeper 都没有,请画出适合描述类 HouseKeeper 和类 Manager 的关系的类图?
答:[类图未提供]。某教学设备销售部门制定一项销售优惠政策,一次购买100台或100台以上者按八五折优惠,若购买者是教师、学生按九折优惠。设C1表示购买的台数,C2为1、2、0分别表示教师、学生和其他人员,请分别列出符合九折、八五折优惠的判定条件?
答:
九折:(C1<100) and NOT(C2=0) 或 (C1<100) and (C2≠0)。
八五折:(C1≥100) and (C2≥0)。请根据下图回答问题: ①列出用例模型中的参与者与用例, ②哪些用例之间存在扩展关系?
答: 解答原理见学习通第 8 章作业第 7 题的方式请理解下图(图中有学生、书、课程、教师4个类)业务,请用文字语言描述该实体类图所反映的业务的语义联系。注意对关系重数的理解。
答:一个学生可以选修多门课程,也可能没有任何课程;一门课程可以被多个学生选修;一个老师可以教多门课程或者不教课;每门课程至少有一个老师,也可以有多个老师任教;每门课程可以有0或1本教材,每本教材只能用于一门课程。[注:作弊按0分处理]。普通聚集和共享聚集有什么区别?QQ群和微信群应该是哪一种聚集关系?请画出微信群对应的类图表示。
答:
第1问:如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。普通聚集部分方对象和整体方对象是一对多的关系。[注:作弊按0分处理]。
第2问:QQ群和微信群属于共享聚集,因为部分方的对象(群成员)可同时参与多个处于整体方对象(群)的构成。[注:作弊按0分处理]。
第3问:[类图未提供]。[注:作弊按0分处理]。用例扩展、包含关系的利用。业务描述:旅行但汽车的油不足以应付全部路程。那么为汽车加油的动作在旅行的每个场景(事件流)中必然都会出现,不加油就不会完成旅行。吃饭则可以由司机决定是否进行,不吃饭不会影响旅行的完成。请给出与此业务描述对应的用例图。
答:见学习通第8章第6题答案。在顺序图中,如何描述对象间的交互?
答:首先,需要通过从一个参与者实例向一个边界对象发送一个消息来引入用例,然后再引入用例控制类。最后再引入用例的实体类,即以A-B-C-E备选架构方式来描述交互。请根据下列用过程设计语言(Procedure Design Language, PDL)描述的业务,画出判定树。
if 发货单金额超过$1000 then
if 欠款超过了50天 then
在偿还欠款前不予批准
else (欠款未超期)
发批准书,发货单
else (发货单金额未超过$1000)
if 欠款超过50天 then
发批准书,发货单及赊欠报告
else (欠款未超期)
发批准书,发货单
答:[判定树未提供]。[注:作弊按0分处理]。如下图所示的程序流程图,请问:此图是连锁型还是嵌套型分支结构?请给出其环形复杂度V(G)=?(需给出计算过程)。根据计算得到的V(G),罗列出该程序流程图的单独路径集合。
答:
第1问:见第5章PPT的5.7节补充讲解的内容。
第2问:环形复杂度:V(G)=?
第3问:根据所得的V(G)的个数列出所有的单独执行路径。假设有一个某高校的学生管理系统中有3个实体:班级、学生、教师。1个班级有多名学生组成,每名教师管理1个班级,每名学生可以学多名教师的课程,每名教师可以教多名学生。其中:班级由班号、班级名称、专业等信息组成,学生由学号、姓名、性别、所在班级等信息组成,教师由教工号、姓名、所在院系、联系方式等信息组成。请根据业务描述画出班级、学生和教师的实体-联系(E-R)图。
答:见学习通第2章作业第5题标准答案。在分析模型中,用例是通过什么来实现的?用例的实现是用什么方式来表示的?
答:
第1问:用例是通过分析类和对象实现的。[注:作弊按0分处理]。
第2问:用例的实现是由分析模型中的各种协作交互来表示的。[注:作弊按0分处理]。已知三个类A、B和C。其中类A分别由一个类B和1到多个类C构成。请用UML工具画出能够正确表示类A、B和C之间关系的UML类图。
答:[类图未提供]。[注:作弊按0分处理]。欲开发一个图书馆图书管理系统,功能需求描述如下:
- 读者可以查询图书信息以及查询借阅信息;
- 读者可以通过系统预约所需的图书;
- 图书馆工作人员利用该系统完成读者的借书、还书业务。其中还书时还可以进行续借和罚款等业务处理;
- 图书馆工作人员可以对图书信息、读者信息等进行维护;
- 对于到期的图书,系统会自动向读者发送催还信息;
- 管理员会定期进行读者管理、图书管理、系统备份等系统维护工作。
请根据上述功能需求描述,请利用“层次图”手工画出“图书管理系统”的软件总体功能结构图。
答:见学习通第3章作业第5题标准答案。
继承具有传递性。子类可以继承父类拥有的所有属性、方法和关系。请根据给出的类图,回答类“ToolBooks”从类“Books”中都继承到了什么内容?提示:继承了基类中全部的具有public和protected可见性的属性和方法,同时也继承了基类中的关系。
答:见老师第7章7.3节所讲的“继承性”实例。聚合(聚集)关系有聚合和共享聚合关系,请根据给定的业务描述画出此业务的类图。业务描述:一个团队(Team)包含有多个成员(Member)、一个成员(Member)可以参加多个团队(Team)。
答:参考第10题的做法可实现。下述类图是一个学生考勤管理系统的类图的局部,但设计出错了。正确业务描述:一个考勤表(AttendanceSheet)包含有1到多个考勤记录(TimeCard),每个考勤记录(TimeCard)对应一名学生(Student)。请根据正确业务描述对下图的设计进行改正,重新绘制出修改后的类图。提示:理解正确业务描述后就知道错误在哪了,就可以画出正确的类图了,注意“关系、重数”的正确性。
答:[类图未提供]。请分别解释下列用例图包含的交互过程的设计思想(课堂上老师重点讲过此设计意图)。
答:[答案未提供]。UML中类的关系包括关联、聚合、组合、泛化、实现、依赖等6种类型,请用合适的关系来回答在下列描述的()中应该是什么关系。提示:须掌握每种关系的含义,否则换个描述就不会了。
- 用手去开门,开门与开抽屉、窗户、冰箱门等之间是(实现)关系。
- 普通的学生与本科生、研究生之间是(泛化)关系。
- 班级与班级成员之间是(聚合)关系。
- 图书馆的罚款与读者类型之间是(依赖)关系。
- 某大学某学院中,一名导师可以指导多名研究生,一名研究生只能由一名导师指导,那么导师和研究生之间是(关联)关系。
- 文档(document)和页面(page)之间是(组合)关系。
下图中用例的扩展关系是错误用法,业务提示:在现实购物系统的操作中登录、购物和修改会员资料分别是系统给会员提供的三个单独的用例,即不存在“功能扩展”。请根据提示给出修改后的用例图。
答:见第8章PPT的8.11节中所讲实例。
四、综合设计、作图、计算题(共 48 分)
求出若干个整数中的最大值,输入“-1”时结束并打印出求出的最大值。请根据此描述画出程序流程图。
答:见第4章PPT或教材图4-6答案。请用判定树表示“行李费算法”的计算方式。假设某航空公司规定,国内乘客可以免费托运重量不超过20kg的行李。当行李重量超过20kg时,收费规则如下:头等舱的国内乘客超重部分每公斤收费4元;其他舱的国内乘客超重部分每公斤收费6元;任何舱的残疾乘客超重部分每公斤收费比正常乘客少一半。
答:见第4章PPT或教材的答案。教材P235图示的图8.25或第8章PPT的97页中(如下图所示)所述的考勤系统中的“登录”用例活动图中没有登录次数的限制,现在需要对登录重试的次数限制为3次(只能登陆3次,超过3次就退出系统),请修正该模型并依据原来的活动图画出新的“登录”用例的活动图,以满足需求的变更。
答:见学习通第8章第5题答案。请用判定树分别描述下述业务的加工逻辑。某厂对部分职工重新分配工作的政策是:年龄有20岁以下者,初中文化程度脱产学习,高中文化程度当电工;年龄有20岁至40之间者,中学文化程度男性当钳工,女性当车工,大学文化程度者当技术员;年龄有40岁以上者,中学文化程度当材料员,大学文化程度当技术员。
答:判定树的画法详见第4章。根据下述业务的功能需求描述,请利用“层次图”设计软件功能结构总体框图。功能描述:某“销售管理系统”主要有“订货处理”、“进货处理”、“销售统计”和“缺货处理”四个功能。其中“订货处理”有“输入并检验订单”、“读库存记录”和“确定能否供货”3个子功能,“进货处理”有“输入进货单”、“增加库存量”和“缺货订单处理”3个子功能,“销售统计”有“读订单记录”和“分类统计”2个子功能,“缺货处理”有“读缺货记录”“统计各项缺货单”和“打印缺货单”3个子功能。
答:“层次图”的做法见第3章“§3.3.1层次图”。某旅行社根据旅游淡季、旺季及是否团体订票,确定旅游票价的折扣率。具体规定是:人数在20人以上的属于团体,20人以下的为散客。每年4月到5月、7月到8月、10月为旅游旺季,其余为旅游淡季。旅游旺季团体票优惠5%,散客不优惠。旅游淡季团体票优惠30%,散客优惠20%。用判定树表示旅游订票的优惠规定。
答:见学习通第4章第4题标准答案。请根据下列业务描述设计该业务的用例图。业务描述:某图书馆管理系统的业务描述是一个基于Web的计算机应用系统,读者可以查询图书信息以及查询借阅信息,读者可以通过系统预约所需的图书,图书馆工作人员利用该系统完成读者的借书、还书业务,图书馆工作人员可以对图书信息、读者信息等进行维护,对于到期的图书,系统会自动向读者发送催还信息,管理员会定期进行系统维护。
答:[注:作弊按0分处理]。甘肃电信公司有一客户服务系统,该系统主要有客户咨询管理、派工管理、客户管理3个子系统。其中:客户咨询管理子系统主要有:业务咨询、客户投诉、业务报修、满意度评价4个功能模块;派工管理子系统主要有:维护安排、回访安排2个功能模块;客户管理子系统主要有:客户信息维护、业务推介2个功能模块。①请根据该功能需求描述画出该客户服务系统的分析包包图。②请利用结构化的“层次图”画出该系统的软件功能框图。
答:第1问:做法见学习通第9章第7题或第8题答案的画法。第2问:参考第3章所讲层次图的画法。请用判定树分别描述下述业务的加工逻辑。某教学设备销售部门制定一项销售优惠政策,一次购买100台或100台以上者按八五折优惠;购买小于100台时,若购买者是教师、学生按九折优惠,否则就不优惠。
答:[注:作弊按0分处理]。假设有如下C语言程序,请用基本路径分析的方法进行测试,要求画出控制流图、求出程序环形复杂度、列出独立路径,并设计测试用例,填入下表中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
191 main()
2 {
3 int num1=0, num2=0, score=100;
4 int i;
5 char str;
6 scanf("%d,%c\n",&i,&str);
7 while(i<5)
8 {
9 if(str='T')
10 num1++;
11 else if(str='F')
12 {
13 score=score-10;
14 num2++;
15 }
16 i++;
17 }
18 printf("num1=%d, num2=%d, score=%d\n", num1, num2, score);
19 }测试用例 输入 输入 期望输出 期望输出 期望输出 执行路径 测试用例 i str num1 num2 score 执行路径 测试用例1 测试用例2 答:见学习通第5章作业第4题标准答案。 需要从1000以内将能够被7整除的数查询出来,并计算出这些数的和。请使用程序流程图设计该程序问题的算法。然后使用McCabe方法(流图)对所设计的算法的复杂度进行估算。
答:见学习通第4章作业第5题标准答案。业务描述:中国的省级行政区划设置为:23个省、5个自治区、4个直辖市、2个特别行政区。请结合此描述设计一个类图来反映中国和省级行政区的关系?(提示:中国是一个不可分裂的国家,可利用组合关系实现,重数必须标注)。
答:见老师课堂第9章课堂讲解、或第11章的组合关系讲解。根据给定的用例图,①请确定该用例模型中有几个控制类?有几个边界类?有几个实体类(提示:实体类需要从业务中抽象出来)?②请给出你确定的边界类、控制类和实体类的名称及图形符号表示。
答:有2个边界类、2个控制类、4个实体类。[注:作弊按0分处理]。业务描述:一个班级由1到多名学生组成,一个宿舍可以住宿1到多名学生,每名学生可以选修0到多门课程、每门课程可由0到多名学生选修、学生选修课程后产生一个关联实体:成绩单。回答以下两个问题:①请根据业务描述画出E-R图。②依据上述业务描述画出能够反映此业务描述的类图。提示:关联实体可以用“关联类”表示。提示:属性可省略,画E-R图时关系(1:1、1:n、m:n)必须标注正确;画类图时关系重数必须标注正确。
答:第1问:E-R图画法见第2章第2.8节的PPT或学习通第2章第5题的画法。第2问:类图画法见第9、11章作业。根据下面的陈述画出该业务陈述的设计类类图:
- 学生包括本科生、研究生两类;
- 0到多名研究生可以利用业余时间担任0到多个助教;
- 教师包括讲师和教授两类;
- 一个助教可以为一个讲师或一个教授担任助教,其中:一个讲师只能有一个助教,一个教授可以有1到5个助教。
答:[注:作弊按0分处理]。
客户服务系统的部署图包括:客户端PC、应用服务器和数据库服务器,其中的客户端分别由管理员、部门领导、客服人员、维护人员在不同的PC端上登录,整个系统部署在企业的局域网中(即所有设备是通过局域网通信协议进行链接的)。请根据给定的网络拓扑结构手工画出描述创建客户服务系统的部署图。
答:见学习通第10章作业第6题。图书馆系统中有3个业务包:借阅管理、读者管理、图书管理。请根据系统开展的业务,利用包的依赖关系来描述这3个包之间的关系,并绘制包图来反映这3个包的依赖关系。
答:见老师课堂黑板上所讲案例。业务描述:网络购物系统中,客户的用例“下订单”必须包含用例“提供客户信息”才能够完成下订单的处理工作,另外,在“支付订单”处理时,可选择“支付宝支付”、或“微信支付”、或“银行转账”等任意一种支付方式均可。请画出该业务描述的用例图。
答:[注:作弊按0分处理]。按根据下面的叙述,绘制一幅关于顾客从自动售货机中购买商品的顺序图:顾客(User)先向自动售货机的前端(Front)投币;售货机的识别器(Recognizer)识别钱币;售货机前端(Front)根据识别器(Recognizer)返回的识别结果产生商品列表;顾客通过前端(Front)选择商品;前端(Front)向识别器(Recognizer)发出选择商品操作;识别器(Recognizer)通知出货器(Dispenser)将所选商品进行出货,并反馈给顾客。请在给定的参与者和匿名对象的基础上补充业务中所有对象按时间先后顺序的交互操作步骤,并标注操作的消息编号,注意控制焦点也要标出来。
答:见学习通第11章作业第8题标准答案。一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于需要再次订货的零件应该列出编号、名称、数量、价格、主要供应商等内容。零件的出入库称为事务,通过放在库房的CRT终端把事务报告给订货系统。当某种零件的库存量少于库存临界值时就应该再次订货。请画出系统的数据流图。提示:须掌握“数据流图DFD”的画法。
答:[数据流图未提供]。鸟是一种动物,大雁、鸭子、企鹅各是一种鸟类,动物需要氧气和水,每个鸟有2支翅膀,雁群由2到多个大雁构成,①找出上述描述中的实体类;②分析其中类与类之间的关系后,画出相应类图,并在图中标出关系的重数。
答:
第1问:鸟、动物、氧气、水、翅膀、雁群、大雁、鸭子、企鹅。[注:作弊按0分处理]。
第2问:[类图未提供]。[注:作弊按0分处理]。一般情况下,每个参与者与用例之间可以定义一个边界类,每个用例可以至少定义一个控制类,那么,请根据下述的用例模型需要设计几个边界类、几个控制类、几个实体类?并给出设计的边界类、控制类和实体类的名称和符号。提示:须掌握实体类的抽取原理(抽象),否则换个业务就不会了。
答:可以定义2个边界类、1个控制类、2个实体类。[注:作弊按0分处理]。根据下表列举的参与者和用例的信息,建立“手机系统”的系统用例模型。
参与者 用例 手机用户 呼叫某人 手机用户 接听电话 手机用户 发送短消息 手机用户 记录电话号码 答:提示:建立用例模型就是画出用例图。 请阅读下图,阐述一下此图揭示了一个什么意图?
答:见第1章第1.2节的PPT。根据下述“铁路售票系统”的业务描述,画出该系统的用例模型,注意“包含<<include>>”的利用。
- 系统管理员负责进行“站点信息维护”、对“车次信息维护”;
- 普通网民可以完成“网上订票(包含填写预定信息)”;
- 售票员“输入订票码”开始售票,售票前必须包含提取网民的预定信息,然后“收款”“发票”。
答:[用例图未提供]。
请根据下述网上售书系统的功能描述来回答问题:功能描述如下:
- 顾客可注册个人信息和申请个人账号。
- 顾客可浏览书籍信息,可按作者和书名分别进行搜索。
- 顾客可进行管理购物车,如,把书籍加入购物车,也可删除购物车中书籍。购物车物品确认后顾客可提交购物信息(下订单),进行在线支付(可采用银行卡支付、财付通支付),并可在订单物品被发出之前取消或再编辑订单。
- 顾客可查看历史订单。
- 网站设有管理员和工作人员。其中网站管理员负责管理客户信息,网站的系统维护,以及网站的货品维护。工作人员负责处理客户订单,并通知发货单位(可能是网站仓库,也可能是其他供应商)发送货物。
- 销售货品都需进行记录,管理员可查询所有订单。
- 客户可选择打印电子收据。
- 所有参与者都是用户,且所有用户必须要登录到系统中才能完成相应的工作,且所有用户在第一次登录时必须修改密码。
1) 该系统中参与者有哪几个?
2) 根据找出的参与者,画出该系统的系统用例图。
答:答案见第11章所讲的“网上售书系统”的用例图案例。
成绩统计业务描述:要对某课程成绩进行统计。连续输入学生成绩,最后以负分结束。规定成绩在60分以下的为不及格、60分以上为及格、80分以上为优秀。该程序统计并输出不及格(S1)、及格(S2)、优秀(S3)的人数及总人数(S)。根据题意得出如下程序流程图。请你根据此流程图回答如下问题。
- 先映射成流图,再用McCabe方法计算环行复杂度V(G)=?;
- 根据得到的V(G)确定包含独立路径的基本路径集合;
- 针对确定的基本路径集数目设计测试用例。
测试用例 X 执行路径 Path1
| | | … |
| | | …. |
答:见教材或PPT中5.7.2节实例讲解。业务描述:某旅游业务申请系统由“User Interface”、“Tour application services”、“Tour datas”三个包组成,同时该系统的“Tour application services”包通过外部子系统“Finance system”提供的“External interfaces”接口进行财务数据的导出。请根据题意设计该系统的软件架构包图。提示:画法可参考第10章10.6节所讲“考勤系统”案例,具体实现细节不用给出,只展示各个包之间的依赖关系即可,注意外部接口、外部子系统的画法和关系。
答:[包图未提供]。业务描述:在图书馆的图书管理系统中,读者可以浏览书籍信息(必须经过验证用户信息后才能浏览),浏览书籍信息时可按作者浏览、也可按书名浏览。请根据业务描述画出用例图。用例图如何画?
答:见老师第8章课堂所讲案例。提示:业务描述中描述的用例间既有扩展关系又有包含关系。请根据“三、叙述分析题”中第22题改正的用例图,补充两个新的业务“在登录时,若是第一次登录,用户必须修改密码”、“在购物的过程中,既可以利用“微信支付”,又可以利用“支付宝支付””,请画出反映新业务的用例图。
答:提示:可利用用例的扩展关系、包含关系来实现。研究下面用程序流程图表示的程序,完成以下问题:
① 把程序流程图映射成流图。
② 用McCabe方法计算环行复杂度。
③ 利用基本路径测试法列出所有的单独执行路径。
答:[答案未提供]。根据类的6种关系,按给定的业务描述画出类图表示。如业务描述举例:一个订单(Order)包含有0到多个订单项(OrderItem)。再如:学院的一名硕士生导师可以指导1到5名硕士生。一个班级包含1到65名班级成员,1本教材包含了14个章节,等等。
答:[类图未提供]。业务描述:在一个银行系统的项目设计中,有很多用例,其中储户可以利用系统提供的“取款”用例完成取款工作,但必须进行“密码校验”后才能进行取款。请画出符合此业务描述需求的系统用例图。
答:[用例图未提供]。用例的复用,请根据描述画出对应的用例图表示。业务描述:用例“管理参加人”和用例“完成支付”都要用到用例“查询申请信息”。
答:[用例图未提供]。业务描述:每名学生可以参加1到2项科技竞赛、每项科技竞赛可以由1到多名学生参加;每项科技竞赛由1到2名教师进行指导,每名教师可以指导1到2项科技竞赛。请根据业务描述设计与之对应的静态结构类图。
答:见第9章9.7节所讲实例。在图书馆管理系统中,“预定图书”用例的处理步骤为:①读者(Reader)通过预定界面(Reserve Screen)对象进行“预定图书”处理,②通过图书(Book)对象来“查找图书”,③查找到后向预定界面对象“返回图书信息”,④通过预定界面对象向预定信息(Reservation Info)对象“添加预定图书”,⑤添加完后向预定界面对象“返回是否预定成功消息”,⑥通过预定界面对象向读者对象返回“显示是否预定成功的消息”。请根据上述处理步骤,在下图给出的对象的基础上画出该“预定图书”用例的顺序图。画图时注意控制焦点、消息的线型、消息编号和消息名称的正确性。
答:[顺序图未提供]。根据下述“才管理系统”的业务描述,画出系统的用例模型:
- 该系统用户分为“个人、企业、管理员”,其中:
- 个人用户注册后可以发布个人简历、搜索企业招聘信息;
- 企业用户注册后可以发布岗位招聘信息;
- 管理员注册后可以审核企业信息,审核通过后该企业可以在本系统中搜索人才信息。
答:[用例图未提供]。
- 该系统用户分为“个人、企业、管理员”,其中:
“客户(Customer)”在网络购物中可以采用“现金支付(CashPay)”,见下述类图。另外还有“微信支付(WeChatPay)、支付宝支付(AliPay)、银行转账(BankTransfer)”等多种方式。当增加一种新的支付方式时,为了避免修改已写好的源程序,可利用OCP原则对其进行设计,使其满足耦合度低、易扩展、易修改等特性。有一人的设计方案是“在下述类图的基础上对所有支付方式定义一个支付接口(PaymentInterface),客户通过该接口可以实现多种支付方式”,请根据此设计方案画出对应的满足OCP原则的类图。同时,除了满足上述4种支付方式外,还要依据此设计方案再实现Paypal支付。
答:见第11章课堂老师所讲OCP原则的实例。在图书馆管理系统中,“预定图书”用例的处理步骤为:①读者(Reader)通过预定界面(Reserve Screen)对象进行“预定图书”处理,②通过图书(Book)对象来“查找图书”,③查找到后向预定界面对象“返回图书信息”,④通过预定界面对象向预定信息(Reservation Info)对象“添加预定图书”,⑤添加完后向预定界面对象“返回是否预定成功消息”,⑥通过预定界面对象向读者对象返回“显示是否预定成功的消息”。请根据上述处理步骤,在下图给出的对象的基础上画出该“预定图书”用例的顺序图。画图时注意控制焦点、消息的线型、消息编号和消息名称的正确性。
答:[顺序图未提供]。











