一、名词解释
- 过程:软件开发活动中产生某种期望结果的一系列有序任务,涉及活动、约束和资源
- 抽象:基于某种归纳水平的问题描述,他是我们将注意力集中在问题的的关键方面而非细节。
- 需求:对期望的行为的表达。(来自用户的)
- 功能性需求:描述系统内部功能或系统与外部环境的交互作用。涉及系统输入应对,实体状态变化,输出结果,设计约束与过程约束等。
- 迭代式开发:在需求中,系统初次提交时是一个完整的系统功能框架,后续版本是对原先版本功能的改变或增强。
- 增量式开发:系统需求按照功能分成若干子系统,开始建造的版本是规模小的、部分功能的系统,后续版本添加包含新功能的子系统,最后版本是包含全部功能的完整系统。
- 分阶段开发模型:系统被设计成部分提交,每次用户只能得到部分功能,而其他部分处于开发过程中
- 开发模式:软件开发全部过程、活动和任务的结构框架,能直观表达软件开发全过程,明确规定需要完成的重要活动,任务和开发策略,是软件开发方法的策略或哲学。
- 项目进度定义:通过列举项目的各个阶段,把每个阶段分解成离散的任务或活动,来描述特定的软件开发周期(项目进度是对特定项目的软件开发周期的刻画。包括对项目阶段、步骤、活动的分解对各个任务的交互关系的描述,以及对各活动完成时间的初步估算等。)
- 项目活动(Project Activity):项目的一部分,一般占用项目进度计划中的一段时间
- 里程碑(Milestone):指特定的时间点,标志着活动的结束,通常伴随着提交物。(如一般性文档,功能模块的说明,子系统的说明和展示,精确度的说明和展示,可靠性,安全性,性能说明或展示文档)
- 项目成本定义:为项目开发而购买软件、硬件的成本,用于支持需求分析、设计、编码、测试、处理需求变更等活动,涉及到工作量开支
- 原型:一种部分开发的产品,用来让用户和开发者共同研究,提出意见,为最终产品定型。
- 抛弃型原型:仅用于了解问题、探索可行性,并不打算用来作为将来实际提交系统的一部分,而是用完扔掉。
- 演化型原型:该原型的开发是用于了解问题,并作为将来准备提交的系统的一部分。
- 耦合:软件模块之间的相互依赖性。
- 公共耦合:不用模块访问公共数据。
- 用例:通过建立用户、外部项、其他实体的对话模型,而对系统将要完成的功能进行描述或刻画。
- RUP(Rational Unified Process):统一软件开发过程,是一个面向对象且基于网络的程序开发方法论,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。
- 软件过程:一组有序的开发任务,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。
- 软件生命周期:软件开发过程描述了软件产品从概念到实现、交付、使用和维护的整个过程,因此,有时把软件开发过程称为软件生命周期。
- 软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科,是将工程化应用于软件的一种计算机技术。
- 设计模式 design pattern:一种针对单个软件模块或少量模块而给出的一般性解决方案,它提供较低层次的设计决策。它是一个共同的设计结构的关键方面,包括对象和实例,角色和协作,责任分配。(设计模式(design paterns)代表了最佳的实践,通常被有经验的面向对象开发人员所用,是软件开发过程中面临的一般问题的解决方案。)
- 设计公约 Design Convention:一系列设计决策和建议的集合,采取这些建议可以提高系统某方面的设计质量。当一种设计公约发展成熟时,将会被封装成设计模式或体系结构风格,最后可能被内嵌为一种程序语言结构
- 创新设计 innovation design:由脑海中闪现的灵感驱动,这种无规律的突发式进展正是创新性设计的特征
- 设计原则 design principle:是把系统功能和行为分解成模块的指导方针,描述一些良好设计的特征(优秀设计的可描述的特点)【好的设计所具有的可以描述的特征】
- 测试用例:测试用例是为执行软件系统测试而设计和编写出的一组文档,主要由测试输入、执行条件、预期结果等内容组成。测试用例是执行测试的重要依据,具有有效、可重复、易组织、清晰洁、可维护等特征。
- 螺旋模型:螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。最大特点是引入了其它模型不具备的风险分析,使软件在无法排除重大风险时停止以减少损失。
类似于迭代模型,将风险控制(risk control)结合起来,以控制最小化风险。
四个象限的任务:计划;确定目标、可选方案及约束;评估风险;开发与测试
四次迭代(四重循环):操作概念、软件需求、软件设计、开发与测试。
- 基线:基线是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变。
- 驱动模块:驱动模块就是集成测试里面自顶向下测试时的主模块
- 重用:重复采用以前开发的软件系统中具有共性的部件,用到新的开发项目中去。
- 组合:当一个类是另一个类的部分时,二者关系为组合。
- 关联:两个类之间的连线称为关联,表示类的实体之间的关系,
- 文档缺陷:对文档的静态检查过程中发现的缺陷,通过测试需求分析、文档审査对被分析或被审查的文档发现的缺陷。
- 能力缺陷:当系统的活动达到设定的极限(例如设备数量)时,系统性能变得不可接受。
- 过载缺陷(overload fault):软件内部设定的数据结构被填充后溢出,系统不再能完成各种功能。
- α测试:α测试是由一个开发者用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。
- β测试:β测试是由软件的多个客户用户在实际使用环境下进行的测试,属于试用性质的非正式的验收测试。
- 容量测试:验证系统处理巨量数据的能力(检验数据结构是否足够大,以能够处理各种情况)
- 强度测试(stress tests):系统在短时间内加载极限负荷,以验证系统性能。(例如:系统在最大设备数量的情况下进行性能测试)
- 配置测试:对系统软硬件的各种配置(最小到最大)进行测试。
- 路径覆盖测试:借助于程序图设计测试用例的一种白盒方法,测试用例基于流程图来设计,选取足够多的测试数据,使程序的每条可能路径都至少执行一次。
- 由底向上测试:集成测试时从模块结构图的最低层开始,由下而上按调用关系逐步添加新模块,组成子系统并分别测试,直到全部模块组装完毕为止。
- 软件可靠性:软件系统在给定的时间间隔和给定条件下运行成功的概率。
- 软件可维护性:是指在给定的使用条件(预定的时间间隔、维护程序、维护资源之下进行维护)下,维护活动能被执行的概率。
- 极限编程(XP):极限编程(XP)是一种轻量级的软件开发方法论,属于敏捷开发方法。XP的主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。(XP承诺降低软件项目风险,改善业务变化的反应能力,提高开发期间的生产力,为软件开发过程增加乐趣等等。)
- 派对编程/结对编程:结对编程也属于主要的敏捷开发方法,其方式为两个程序员共同开发,且分工明确,一个负责编写程序,另一个负责复审与测试,最重要的是两人定期交换角色。
- 秉承敏捷宣言,体现如下思想:拥抱变化、自我组织、简单至上、有效沟通、精益求精(ppt有一页)
- 面向对象:是一种软件开发方法,它将问题和方法组织成一系列独立的不连续的对象,数据结构和动作都被包括在内。
- 统一过程:统一过程是一个面向对象且基于网络的程序开发方法论。
- 模块化:在模块化的设计中,构件清晰地定义了输入和输出,设计目标明确,功能独立,可以做独立测试。
- 抽象:对细节的隐藏称为抽象,是基于某种归纳水平的问题描述,是我们集中于问题的关系。
- 分解:把大的系统分解成为更小的部分使问题变得更易于处理,是一种自顶向下的方法;另一种自底向上的方法是将小的模块以及小的构件打包成一个更大的整体,被认为其设计出来的系统更加易于维护。
二、判断
- (√)原型化可以改善对需求和设计的理解,因此选择原型化过程可以降低项目风险。
- (√)模型是对现实的简化,建模是为了更好地理解所开发的系统。
- (√)软件过载缺陷就是当运行程序时,软件内部定长的数据结构被溢出,系统任务无法完成。
- (×)结构化程序设计方法能改善程序结构,提高程序的运行效率。(应为提高易读性)
- (√)桩模块的编写比驱动模块更困难。
- (√)原型开发方法中的原型可以不抛弃,而逐步进化为最终的系统。
- (V)软件测试只能证明程序有错误,不能证明程序没有错误
- (√)在划分模块时,模块的内聚性越高越好,而模块的耦合度越低越好
- (√)系统设计是程序设计的先导和前提条件。
- (x)由于功能测试是一次测试系统的一个功能,有时若需要,功能测试可以早于整个系统的集成来进行。
- (x)代码走査(code walkthrough)类似于代码检査(code inspection),但是前者实施时更正式
- (x)类的行为可以基于用例图进行测试。(应为状态图)
- (x)开发初始原型的目的是为了确定用户的基本需求。
- (x)一般来说,模块的内聚程度越高,他们之间的耦合程度也就越高。
- (x)信息隐蔽原则禁止在模块外使用在模块接口说明的关于该模块的信息。(应为没有说明的)
- (x)面向对象方法更适合于软件重用的根本原因在于它是软部件唯一的合成技术。
- (x)如果测试数据满足条件覆盖,则必然满足判定覆盖。
- (x)尽可能推迟程序的逻辑实现是按照瀑布模型开发软件的一条重要的指导思想。
- (x)UML语言支持面向对象的主要概念,并与具体的开发过程相关。(应为无关)
- (x)RUP(Rational Unified Process: 统一软件过程)本质上是轻量级的软件过程规范。
- (x)每一个故障(缺陷)都会对应于一个失效(失败)。
- (x)需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。
- (x)开发人员和客户对软件质量因素的认可是完全一致的。
- (x)软件运行正确,可见软件中没有缺陷(fault)
- (x)在软件开发的各个阶段进行过程中,增加人员肯定会对整个项目提前完成有好处。
- (x)在程序调试时,改正该错误比找出错误的位置和性质更难、
- (x)因为详细设计已经把模块的内部逻辑描述的相当清晰,所以编程时不必再采用统一的标准和约定。
- (x)软件生存周期是从软件开始开发到开发结束的整个时期。
- (x)当前管理信息系统建设的主要问题是技术问题。
- (x)有时为了测试的方便,而可以局部地修改软件系统。
- (x)设计成功的系统不需维护,维护意味着系统存在问题。
- (√)软件定义时期的最后一个工作阶段是需求分析阶段。
- (x)传统的软件生存期模型是增量模型。(应为瀑布模型)
- (√)软件定义时期分为可行性研究与计划和需求分析两个阶段.
- (x)在软件的开发过程中,工作量最大的一个阶段就是编写程序。(应为测试阶段)
- (√)实体--关系图中的数据对象之间的关系也可能有属性。
- (√)独立编译的机制对于大型软件的编码工作极为重要。
- (x)每一个类都是其相应对象的一个实例。(每一个对象都是其相应类的一个实例)
- (√)判定表适用于表示多重嵌套的条件选择,
- (√)信息流的类型主要包括交换流和事务流。
- (x)HTML语言是面向对象建模的标准语言。(HTML改成 统一建语言 UML)
- (√)静态多变量模型是常用的估算模型。
- (√)域分析与需求分析类似,但具有比需求分析更为广阔的视角。
- (x)面向对象方法更适合软件重用的根本原因在于它是软件唯一的合成技术。( 它是软件唯一的合成技术 改成 它所具有的封装和集成的特征)。
- (x)集成化 CASE 环境的集成就是工具集成。(CASE 环境的集成包括工具集成,界面集成和方法集成)
- (√)程序流程图中的箭头表示控制流。
- (√)需求分析阶段最重要的技术文档是需求规格说明书。
- (√)在结构化分析中,通常不需要建立关联模型。
- (x)需求分析阶段的研究对象是系统要求。(系统要求改成用户要求)
- (x)在人机界面的设计过程中,不需要考虑用户帮助问题。(用户帮助改为输入输出数据)
- (√)耦合度最高的是内容耦合。
- (√)内聚程度较低的是偶然内聚。
- (x)选择程序设计语言的关键因素是软件执行环境。(软件执行环境 改成 算法和数据结构)
- (√)我们通常采用的调试途径不包括分析法。
- (x)软件测试是软件质量保证的重要手段,结构测试是软件测试的最基础环节。(结构测试 改成 单元测试)
- (√)从原理上来说,实现面向对象概念可以使用任何一种语言。
- (x)软件复审时,其主要的复审对象是程序。(程序改为文档)
- (x)在分析模型中,处理规格说明用来描绘数据对象之间的关系。(处理规格说明 改为 实体关系图)
- (√)自然分类法不属于软部件库组织方法。
- (√)CASE 工具的作用是提高软件生产率和软件质量。
- (√)Gantt 是历史悠久、应用广泛的工程进度计划工具。
- (x)为了估算项目的工作量和完成期限,首先需要进行需求分析。(进行需求分析 改成 度量软件的规模)
- (x)简单地说,设计结果是面向对象软件设计的经验总结。(设计结果改成设计模式)
- (√)处理风险的策略主要有三方面内容,风险缓解,风险监控和风险管理及意外事件计划。
- (√)框架是指在特定领域中一组相互协作的类。
- (x)所谓软件工程的里程碑,通常指一定的时间间隔。(一定的时间 改为 基线)
- (x)当软件系统的效率与可维护性产生抵触时,应强调效率。
- (x)开发软件时可随便选择一种语言进行开发。
- (x)抽象是面向对象的开发方法中独有的策略,在传统的开发方法中不需使用。
- (x)开发初始原型的目的是为了确定用户的基本需求。
- (x)在程序调试时,改正该错误比找出错误的位置和性质更难。
- (x)测试人员发现错误,并且好改,自己能改,就可以直接改。
- (x)白盒测试无须考虑模块内部的执行过程和程序结构,只需了解模块的功能即可。
白盒测试需要考虑模块内部的执行过程和程序结构,以便设计测试用例和覆盖代码路径。
- (√)软件测试只能证明程序有错误,不能证明程序没有错误。
- (√)面向对象设计方法和面向对象分析方法产生结果类似,比如都可以用UML图表示。
- (√)白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。
- (√)单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。
- (x)在等价分类法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。(每个测试用例应该只覆盖一个等价类,以确保每个等价类都得到适当的测试)
- (x)软件工具的作用是为了延长软件产品的寿命。
- (x)软件就是程序,编写软件就是编写程序。
- (x)软件危机的主要表现是软件需求增加,软件价格上升
- (x)瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
- (x)螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(迭代模型)
- (x)软件工程过程应该以软件设计为中心,关键是编写程序。
- (x)极限编程属于增量模型。
- (√)白盒测试法是一种动态测试方法,通过执行代码路径来检查程序的正确性。
- (√)功能测试是系统测试的主要内容,检查系统的功能和性能是否与需求规格说明相同。
- (√)软件工程学科出现的主要原因是软件危机的出现。
- (√)非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
- (√)用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。
- (√)在一张状态图中只能有一个初态,而终态则可以没有,也可以有多个。
- (√)信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。
- (√)顺序图用于描述对象是如何交互的,并且将重点放在消息序列上。
- (√)用例之间有扩展、使用和组合等几种关系。
- (√)活动图用于显示动作及其结果,着重描述操作实现中所完成的工作,以及用例实例或类中的活动。
- (√)软件设计中设计复审和设计本身一样重要,其主要作用是避免后期付出高代价。
- (√)面向对象分析和设计活动是一个多次反复选代的过程。
- (√)在面向对象的设计中,应遵循的设计准则除了模块化、抽象、低耦合和高内聚外,还有信息隐藏。
- (√)项目的应用领域是选择程序设计语言的关键因素。
- (√)软件测试的目的是尽可能多地发现软件中存在的错误,将它作为纠错的依据。
- (√)测试用例由输入数据和预期的输出结果两部分组成。
- (x)需求分析阶段的成果主要是需求规格说明书,但该成果与软件设计、编码、测试直至维护关系不大。
- (x)需求规格说明书描述了系统每个功能的具体实现。
- (x)需求分析的主要目的是解决软件开发的具体方案。
- (x)需求分析是开发方的工作,用户的参与度不大。
- (x)在需求分析阶段主要采用图形工具来描述的原因是图形的信息量大,便于描述规模大的软件系统。(图形工具的使用是为了更清晰地表示系统的结构和行为,但并非唯一原因)
- (x)分层的DFD图可以用于可行性研究阶段,描述系统的物理结构。
- (x)类图用来表示系统中的类和类与类之间的关系,它是对系统动态结构的描述。(类图是对系统的静态结构进行描述,而不是动态结构)
- (x)继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系。
- (x)UML是一种建模语言,是一种标准的表示,是一种方法。
- (x)多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的重用性和可扩充性。
- (x)UML语言支持面向对象的主要概念,并与具体的开发过程相关
- (x)类封装比对象封装更具体、更细致。
- (x)划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。(划分模块的目的是将系统分解为相对独立的功能单元,但模块划分过细可能导致模块之间的通信和管理复杂化,增加开发和维护的工作量。)
- (x)软件设计说明书是软件概要设计的主要成果。(软件设计说明书是软件详细设计的主要成果。软件概要设计阶段的主要成果是概要设计文档,其中包含了系统的整体结构、模块划分和接口设计等信息)
- (x)关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。(虽然关系数据库可以存储和管理数据,但关系数据库模型与面向对象模型有一定差异。面向对象设计中的类和对象并不直接对应关系数据库中的表,需要进行对象关系映射(Object-Relational Mapping,ORM)来将对象模型映射到关系数据库中的表结构)
- (x)良好的设计风格就是高的编程技巧。(还包括代码的可读性、可维护性、可扩展性等方面的因素)
- (x)软件测试的目的是证明软件是正确的。
- (x)软件测试是对软件规格说明、软件设计和编码的最全面也是最后的审查。(软件测试是一个独立的活动,旨在评估软件的质量和发现潜在的问题,而不仅仅是对规格说明、设计和编码的审查)
- (√)瀑布模型采用结构化设计,将物理实现和逻辑实现分离
三、选择
- 下列选项不属于瀑布模型的优点的是( D)。
A.可迫使开发人员采用规范的方法
B.严格的规定了每个阶段必须提交的文档
C.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证
D.支持后期的变动
2.软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。
A.运行和维护阶段 B. 设计阶段
C.代码实现阶段 D. 测试阶段
- 一个项目为了修正一个错误而进行了变更,但这个错误被修改后,却引起以前可以正确运行的代码错误。___D_____最可能发现这一问题。
A.单元测试 B.接受测试 C.安装测试 D.回归测试
- 软件是计算机系统中与硬件相互依存的部分,它是包括(A)、(B)及(C)的完整集合。其中,(A)是按事先设计的功能和性能要求执行的指令序列,(B)是使程序能够正确操纵信息的数据结构,(C)是与程序开发、维护和使用有关的图文资料。
A,B,C:① 软件 ② 程序 ③ 代码 ④ 硬件
⑤ 文档 ⑥ 外设 ⑦ 数据 ⑧ 图表
填入答案(A:② B: ⑦ C: ⑤ )
- 源程序中应包含一些内部文档字符,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注释和____A_____。
A:程序的视觉组织。 B:尽量不用或少用GOTO语句。
C:检查输入数据的有效性。 D:设计良好的输出报表。
- 软件的复杂性是___A___,它引起人员通信困难、开发费用超支和开发时间超量等问题。
A.固有的 B.人为的 C.可消除的 D.不可降低的
- 在一个“图书管理系统”中,借书处理和还书处理都需要先通过身份验证。那么,用例“借书处理”“还书处理与用例“身份验证”之间是( C )关系
A.特化 B.泛化 C.包含 D.扩展
- 如果客户并不确切知道到底想要一个什么样的系统,并且需求定义的很模糊,下面哪种开发模型比较合适这种情景下的开发?(A)
开发一个新系统的项目团队在该领域很有经验。虽然这个新项目相当大,但预计它不会与该团队过去开发的应用程序有太大差异。哪个流程模型将适合于这种类型的开发?(B) (因为没有强调风险,所以选择瀑布模型比较合适。)
A.原型化模型 B.瀑布模型 C.V模型 D.螺旋模型
- 极限编程是一种轻量(敏捷).高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方,以下不属于它所倡导的十二个最佳实践的是 A
A.受控的需求文档 B.计划游戏 C.现场客户 D.隐喻
- 极限编程是一种轻量(敏捷).高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。其中( C )是通过预防性、及时性的措施来提高系统的质量的重要实践活动,现在已涌现出了JUnit、NUnit、DUnit等一系列相应的工具来提供支持。
A.集体代码所有制 B.持续集成 C.测试先行 D.重构
- 以下关于数据流图的说法错误的是( C )
A.数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储
B.数据流图是用结构化分析建模的一种工具
C.传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成
D.数据流图的绘制采用自上而下、逐层分解的方法
- 需求分析阶段的研究对象是( B )
A.系统分析员要求 B.用户要求 C.软硬件要求 D.系统要求
- 采用UML分析用户需求时,用例UC1可以出现在用例UC2出现的任何位置,那么UC1和UC2的关系是( C )。
A:include; B:extends; C:generalize; D:call。
- 传统的软件生命周期不包含( B )。
A.问题定义 B. 性能优化 C. 测试 D. 实现
- 系统技术可行性研究涉及的技术应该是( D )技术。
A.现在已提出的 B. 现在在研究的
C.不一定可以获得的 D. 一定可以获得的
- 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础的环节。
A.功能测试 B.单元测试 C.结构测试 D.确认测试
- 软件测试方法中,黑盒测试法主要是用于测试( B ) A.结构合理性 B.软件的外部功能 C.程序的正确性 D.程序的内部逻辑
- 软件测试的目的是A[ 2 ]。为了提高测试的效率,应该B[ 4 ]。使用白盒测试方法时,测试数据应该根据C[ 1 ]和指定的覆盖标准。一般来说,与设计测试数据无关的文档是D[ 4 ],软件测试工作最好由E[ 4 ]来承担,以提高集成测试的效果。
A: (1)评价软件的质量 (2)发现软件的错误
(3)找出软件中的所有错误 (4)证明软件是正确的
B:(1)随机的选取测试数据
(2)取一切可能的输入数据作为测试数据
(3)在完成编码以后制订测试计划
(4)选择发现错误的可能性大的数据作为测试数据
C:(1)程序的内部逻辑 (2)程序的复杂程度
(3)使用说明书 (4)程序的功能
D:(1)需求规格说明书 (2)总体设计说明书
(3)源程序 (4)项目开发计划
E:(1)该软件的设计人员 (2)该软件开发组的负责人
(3)该软件的编程人员 (4)不属该软件开发组的软件设计人员
- 复审目的是为了什么(C)
B:降低风险 C:提高质量
- 需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求,细化软件要处理的数据域。需求可以分为功能需求、非功能需求、设计约束三大类,其中_____B_____属于设计约束。
供选择的答案:
A:系统必须完成自动统计功能。 B:系统要采用国有自主知识产权的中间件系统。
C:每笔查询都必须在10秒内响应。 D:系统必须能够自动记录用户的操作过程。
- 某软件在应用初期运行在Windows XP环境中,现因某种原因,该软件需要在UNIX环境中运行,而且必须完成相同的功能。为适应这个要求,软件本身需要进行修改,而所需修改的工作量取决于该软件的_____D______。
供选择的答案:
A:可扩充性。 B:可靠性。 C:复用性。 D:可移植性。
- 两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是____C____个。25*30/15
供选择的答案:
A.25 B。30 C。50 D。60
- 系统测试是将软件系统与硬件、外设和网络等其他因素结合,对整个软件系统进行测试。_____A_____不是系统测试的内容。
供选择的答案:
A:路径测试。 B:可靠性测试。 C:安装测试。 D:安全测试。
- 内聚是一种指标,表示一个模块_____B_____。
供选择的答案:
A:代码优化的程度。 B:代码功能的集中程度。
C:完成任务的及时程度。 D:为了与其他模块连接所要完成的工作量。
- 下列叙述中,与提高软件可移植性相关的是_____D______。
供选择的答案:
A:选择时间效率高的算法。
B:尽可能减少注释。
C:选择空间效率高的算法。
D:尽量用高级语言编写系统中对效率要求不高的部分。
- 在UML提供的图中,可以采用____D____对逻辑数据库模式建模;____C____用于接口、类和协作的行为建模,并强调对象行为的时间顺序;____C____用于系统的功能建模,并强调对象的控制流。
供选择的答案:
① A.用例图 B.构件图 C.活动图 D.类图
② A.协作图 B.状态图 C.序列图 D.对象图
③ A.状态图 B.用例图 C.活动图 D.类图
填入答案( (1): (2): (3): )
强调行为的时间顺序应该选序列图C,状态图是对象的状态变化不是协作行为。
- 假定一个图书管理系统即将被开发,判断开发过程中出现的以下问题是属于哪种类型的bug,请做出选择:A.错误(errors)B.缺陷(faults) C.失败(failures)
(1)在计算超期罚款的代码中,final_total变量未被初始化。 ( A )
(2)当管理员试图向库存中增加一本新书时,系统崩溃了。 ( C )
(3)需求分析人员不知道读者在还书的时候不需要出示借书卡。 ( A )
(4)在需求文档中,超期罚款为每天0.25元,但最高不超过15元。在计算超期罚款的代码中并没有检查这个最大值。 ( A )
(5)每天晚上11点,系统需要备份当天的交易,但是这个星期二晚上没有备份。( B )
- 下列关于风险的叙述不正确的是:风险是指( B )。
A:可能发生的事件。
B:一定会发生的事件。
C:会带来损失的事件。
D:可能对其进行干预,以减少损失的事件,
- 关于过程改进,以下叙述中不正确的是( D)。
A.软件质量依赖于软件开发过程的质量,其中包括个人因素。
B.要使过程改进有效,需要制定过程改进目标。
C.要使过程改进有效,需要进行培训。
D.CMMI成熟度模型是一种过程改进模型,仅支持阶段性过程改进而不支持连续性过程改进
- 模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型是( D)。
A:数据耦合 B:标记耦合C:公共耦合 D:内容耦合。
- 以下关于封装在软件复用中所充当的角色的叙述,正确的是(A)。
A.封装使得其他软件开发人员不需要知道一个软件组件内部如何工作。
B.封装使得软件组件更有效工作。
C.封装使得软件开发人员不简要编制开发文档。
D.封装使得软件组件开发更加容易,
- 针对应用在运行期的数据的特点,修改其排序算法使其更高效,属于(B)维护
A:正确性 B:完善性 C:适应性 D:预防性
- 在下列说法中,( ②⑤⑥ )是造成软件危机的主要原因。 ① 用户使用不当 ②软件本身特点 ③ 硬件不可靠 ④ 对软件的错误认识 ⑤缺乏好的开发方法和手段 ⑥开发效率低
- 软件维护工程越来越受到重视。因为它的花费常常要占软件生命周期全部花费的( C )
A.10%~20% B.20%~40% C.60%~80% D.90%以上
- 耦合度最高的是( B )耦合。
A.环境 B.内容 C.控制 D.数据
- 以下是某个项目的活动图:
(1) 以下哪一个是从里程碑A到J的一条关键路径? d.
a.ACFHJ b. ACFIHJ c. ABEGHJ d. ADFHJ
(2) 从里程碑C开始的活动的空闲时间是 b.
a. 7 b. 8 c. 15 d. 20
(3) 开始于里程碑E的活动的最晚开始时间是 d.
a.10 b. 18 c. 25 d. 40
关键路径(即最长路径)是47 从J到G的最长路径是7 47 - 7 = 40
- 软件危机的主要原因是(D)。
A.软件工具落后
B.软件生产能力不足
C.对软件的认识不够
D.软件本身的特点及开发方法
- 软件工程的三要素是( C)。
A.技术、方法和工具
B.方法、对象和类
C.方法、工具和过程
D.过程、模型、方法
- 软件需求规格说明书的内容不应该包括(B)。
A.对重要功能的描述
B.对算法的详细过程描述
C.对数据的要求
D.软件的性能
- 在需求分析之前有必要进行( B)工作。
A.程序设计
B.可行性研究
C.系统设计
D.系统测试
- 需求分析是一个(D),它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。
A.概念 B.工具 C.方法 D.过程
- 软件生命周期模型不包括( B)。
A.瀑布模型 B.用例模型 C.增量模型 D.螺旋模型
- 软件工程中描述生命周期的瀑布模型一般包括计划、需求分析、设计、编码、( D)和维护等几个阶段。
A.产品发布 B.版本更新 C.可行性分析 D.测试
- 在E-R图中,包含以下基本成分(D)。
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.共享性
- 下列是面向对象设计方法中有关对象的叙述,其中(B)是正确的。
A.对象在内存中没有它的存储区
B.对象的属性集合是它的特征表示
C.对象的定义与程序中类型的概念相当
D.对象之间不能相互通信
- 成功的测试是指运行测试用例后(A)。
A.发现了程序错误
B.未发现程序错误
C.证明程序正确
D.改正了程序错误
- 软件测试的目的是(B)。
A.证明软件是正确的 B.发现软件的错误
C.找出软件中的所有错误 D.评价软件的质量
- 在软件测试中,逻辑覆盖标准主要用于(A).
A.白盒测试方法 B.黑盒测试方法 C.灰盒测试方法 D.回归测试方法
- 黑盒测试方法根据(B)设计测试用例。
A.程序的调用规则 B.软件要完成的功能
C.模块间的逻辑关系 D.程序的数据结构
- 在软件维护阶段,为软件的运行增加监控设施属于(C)维护。
A.改正性 B.适应性 C.完善性 D.预防性
- 顺序图反映对象之间发送消息的时间顺序,它与(D)是同构的。
A.用例图 B.类图 C.活动图 D.协作图
- UML的软件为用例驱动中心,以基本体系架构为框架进行开发,显示了一种(C)的特性
A.数据驱动 B.集成 C.迭代
四、简述
- 传统"瀑布模型"的主要缺陷是什么?试说明造成缺陷的主要原因。
(1)除了一些理解非常充分的问题之外,实际上软件是通过大量的迭代进行开发的。
(2)软件是一个创造的过程, 不是一个制造的过程。软件变动时, 该模型无法处理实际过程中的重复开发问题。
(3)文档转换有困难。它说明了每一个活动的产品(例如,需求、设计或代码),但没有揭示一个活动如何把一种制品转化为另外一种制品(例如,从需求文档转化为设计文档)。
- 试简单论述OO测试的基本特点及困难之处。
(1)测试用例的充分性:对过程语言而言,当系统改变时,我们可以针对改变测试是否正确,并使用原有的测试用例来验证剩余的功能是否同原来一致。但是面向对象的测试中,我们可能需要编写不同的测试用例。
(2)面向对象趋向于小粒度,并且平常存在于构件内的复杂性常常转移到构件之间的接口上。这意味着,其单元测试较为容易,但是集成测试涉及面变得更加广泛。
(3)传统测试和面向对象的测试主要集中在:需求分析和验证、测试用例生成、源码分析和覆盖。
困难:
A: 需求验证缺乏工具支持。(很多时候依赖人工)
B: 测试工具生成的测试用例,处理OO模型中的对象和方法时,其针对性不强。(某些OO关系是测试工具本身搞不清楚其内在逻辑关系的)
C: 传统的测试方法(如环路复杂度等)在评价OO系统的规模和复杂性时,还不是很有效。
D: 对象的交互是OO系统复杂性的根源,传统的测试方法和根据作用有限。
- 在项目团队组织结构上,主程序员组式的小组结构由什么优点?
由一个主程序员负责系统设计和开发,其他的成员向其汇报,主程序员对每一个决定有绝对决策权。
优势:分工明确,有领导核心,有专职管理岗位,减少通信,提高效率,使交流最小化迅速做出决定。
- 试述设计用户界面应考虑的问题
(1)设计界面要注意解决的要素:
①隐喻:可识别和学习的基本术语、图像和概念等
②思维模型:数据、功能、任务的组织与表示
③模型的导航规则:怎样在数据、功能、活动和角色中移动及切换
④外观:系统向用户传输信息的外观特征
⑤感觉:向用户提供有吸引力的体验的交互技术
(2) 文化问题:需要考虑使用系统的用户的信仰、价值观、道德规范、传统、风俗和传说。两种解决方法:①使用国际设计/无偏见设计,排除特定的文化参考或偏见②采用定制界面,使不同用户看到额界面
(3) 用户偏爱:为具有不同偏好的人选择备选界面
- 影响现代软件工程开发实践的关键要素是什么?
(1)商用产品投入市场时间的紧迫性
(2)计算技术在经济中的转变:更低的硬件成本,更高的开发、维护成本
(3)功能强大的桌面计算的可用性
(4)广泛的局域网和广域网
(5)面向对象技术的采用及其有效性
(6)使用窗口、图标、菜单和指示器的图形用户界面
(7)软件开发瀑布模型的不可预测性
- 列出你所知道的模块间的各种内聚关系。
(1) 偶然内聚 coincidental:模块各部分不相关,只为方便或偶然性原因放入同一模块。比如强行放入一个类中没有任何关系的方法
(2) 逻辑内聚 logical:模块中各部分只通过代码的逻辑结构相关联, 会共享程序状态和代码结构,但相对于数据、功能和目标的内聚比较弱。比如因为有相同的某一个计算步骤而放在 一起的两个没有关系的计算。
(3) 时间内聚 temporal:部件各部分要求在同一时间完成或被同一任务使用而形成联系。比如初始化模块中需要完成变量赋值、打开某文件等工作。
(4) 过程内聚 procedurally:要求必须按照某个确定的顺序执行一系列功能,模块内功能组合在一起只是为了确保这个顺序。其与时间性内聚相比优点在于其功能总是涉及相关 活动和针对相关目标,如写数据->检查数据->操作数据这一过程
(5) 通讯内聚 communicational:各部分访问和操作同一数据集,如将来自于同一传感器的所有不相干数据取出这一模块
(6) 顺序内聚 sequential:各部分有输入输出关系,操作统一数据集,并且操作有顺序
(7) 功能内聚 functional:理想情况,各部分组成单一功能,且每个处理元素对功能都是必须的,每个元素执行且只执行设计功能,如一个简单的输出程序
(8) 信息内聚 information:功能内聚的基础上调整为数据抽象化和基于对象的设计
- 说明系统测试过程的主要步骤及含义。
(1)功能测试——系统功能需求。根据SRS测试系统功能。
(2)性能测试——其他软件需求。根据SRS测试系统性能。
(3)验收测试——客户需求规格说明书。根据客户的需求定义,由客户和用户一起测试。
(4)安装测试——用户环境。在用户环境下进行测试。
……(详见完整版期末复习重点笔记
- 依赖和关联的含义 区别
依赖是一个类的方法的参数是另一个类,用虚线加箭头表示
关联是指一个类的对象是另一个类的成员变量,用实线加箭头表示
- 给出一个使用原型开发但没有节省大量时间的例子,并分析最适合原型设计的系统的特征。
答:原型处理密集型应用程序不会节省大量的开发时间。如果不首先完全实现必要的操作和流程,就不可能为这样的系统创建一个原型。如数学方程求解的应用程序为例,如果没有方程解析和求解算法,原型将只用于描述用户界面,并且不会节省大量开发时间。
适合原型化设计的系统的特征:
①具有高用户交互性的系统。
②具有复杂协议或事务的系统。
- 字处理系统、工资单系统、自动银行连线柜员系统、水质监控系统、核电站控制系统分别需要哪种类型的性能测试?
压力测试/强度测试(短时间内加载极限负荷,验证系统能力)
容量测试/巨量数据测试(验证系统处理巨量数据的能力)
配置测试(构建测试用例对系统软硬件的各种配置(最小到最大)进行测试)
兼容性测试(测试接口等。如果它与其他系统交互时)
回归测试(如果这个系统要替代一个现有系统时需要进行此测试)
安全性测试:确保安全性需求得到满足。
计时测试:评估涉及对用户的响应时间和一个功能的执行时间的相关需求。
环境测试:考察系统在安装场所的执行能力。
质量测试:评估系统的可靠性、可维护性和可用性。
恢复测试:强调的是系统对出现故障或丢失数据、电源、设备或服务时的反应。
维护测试:为了帮助人们发现问题的根源提供诊断工具和过程的需要。
文档测试:确保已经编写了必需的文档。
人为因素测试:检查设计系统用户界面的需求。
字处理系统:压力测试,容量测试。
工资单系统:压力测试,安全性测试,计时测试,恢复测试。
自动银行连线柜员系统:压力测试,安全性测试,计时测试,恢复测试。
水质监测系统:环境测试。
核电站控制系统:环境测试。
- 用例模型的组成元素以及相关的用例建模步骤
用例图(Use Case Diagram)的元素:参与者、用例、关系
①确定参与者
②确定用例
③确定用例之间的关系
④画出用例图
- 进化式迭代开发(Iterative development) 是统一开发过程(RUP)的关键实践。开发被组织成一系列固定的短期小项目。每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试。随着时间和一次次迭代,系统增量式完善。
五、综合应用
1.(12分)阅读下列说明及图示,回答问题[1]至[3],将解答填入纸卷的对应栏内。
【说明】 某网上购物平台的主要功能如下:
(1)创建订单。顾客( Customer)在线创建订单(Order),主要操作是向订单中添加项目、从订单中删除项目。订单中应列出所订购的商品(Product)及其数量(quantities)。
(2)提交订单。订单通过网络来提交。在提交订单时,顾客需要提供其姓名(name)、收货地址(address)、以及付款方式(form. of payment)(预付卡、信用卡或者现金)。为了制定送货计划以及安排送货车辆,系统必须确定订单量(volume)。除此之外,还必须记录每种商品的名称(Name)、造价(cost price)、售价(sale price)以及单件商品的包装体积(cubic volume)。
(3)处理订单。订单处理人员接收来自系统的订单;根据订单内容,安排配货,制定送货计划。在送货计划中不仅要指明发货日期(delivery date),还要记录每个订单的限时发送要求(Delivery Time Window)。
(4)派单。订单处理人员将己配好货的订单转交给派送人员。
(5)送货/收货。派送人员将货物送到顾客指定的收货地址。当顾客收货时,需要在运货单(delivery slip)上签收。签收后的运货单最终需交还给订单处理人员。
(6)收货确认。当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认。
现采用面向对象方法开发上述系统,得到下面的用例图和类图。
【问题1】(6分) 根据说明中的描述,给出用例图中A1~A3所对应的参与者名称和U1~U2处所对应的用例名称。
A1:顾客 A2:订单处理人员. A3:派送人员 U1:收货 U2:派单
【问题2】(3分) 根据说明中的描述,给出类图中C1~C3所对应的类名。
C1: Custorner C2: Order C3: Product
【问题3】(3分) 根据说明中的描述,将类C2和C3的属性补充完整(属性名使用说明中给出的英文词汇)。
C2: volume、 delivery date、 form of payment C3: cost price、 sale price、 cubic volume
【问题1】
在UML用例图中,参与者表示要与本系统发生交互的一个角色单元。与系统交互的外部人员、角色、其他的计算机系统、物理实体等通常都可以看作是参与者。由题干给出的“(1)创建订单。顾客(Customer)在线创建…”、“ (5)送货/收货。……当顾客收货时,需要在运货单(delivery slip).上签.……”、“(6)收货确认。当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认”等关键信息,结合图3-1中A1参与的用例“创建订单”、“收货确认” 等,可知参与者A1的名称是“顾客”
同理,基于题干给出的关键信息“(3)处理订单。订单处理人员接收来自系统的……”、“(6)收货确认。当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认”等,结合图3-1中A2参与的用例“处理订单”、“收货确认” 等,可知参与者A2的名称是“订单处理人员”。
根据题干给出的“(5)送货/收货。派送人员将货物送到顾客指定的收货地……”等关键信息,结合图3-1中A3参与的用例“送货”等,可知参与者A3的名称是“派送人员”
依题意,该“网上购物平台”的用例图中共有3个参与者、7个用例。图3-1中已给出了其中的5个用例“创建订单”、“提交订单” 、“收货确认” 、“处理订单”、“送货” 。由题干给出的说明信息,可知需要补充的两个用例名称分别为“派单”、“收货”。 由题干给出的“(4)派单。订单处理人员将已配好货的订单转交给派送人员”等关键信息,图2-12中 也显示出了A2(订单处理人员)与A3(派送人员)都参与了用例U2,因此U2的名称是“派单”。
同理,基于题干给出的关键信息“(5)送货/收货。派送人员将货物送到顾客指定的收货地址。当顾客收货时,需要在运货单(delivery slip). 上签收。签收后的运货单最终需交还给订单处理人员”等,结合图3-1中A1 (顾客)、A2(订单处理人员)与A3 (派送人员)共同参与了用例U1,因此U1的名称是“收货”。
【问题2】
在图3-2所示的类图中,类C1的关键属性都已经给出了。由题干给出的说明信息可知,属性address表示的是“收货地址”。而收货地址的最初始来源是顾客,因此C1的类名是Customer(顾客)。
在UML类图中,“” 表示其相联的两个类之间存在聚合关系。它代表两个类之间的整体/局部关系,其显著的特点是不能包含循环的联系(即局部中不能包含整体)。在图3-2中,类C2和类C3之间存在着一个聚合关系,C3是构成C2的部分对象;并且两者之间存在着一个关联类0rder Product; 结合题干给出的关键信息“订单中应列出所订购的商品及其数量”等,可知C2的类名是0rder(订单),C3的类名是Product (商品)。
结合常识,一名顾客可以在线创建多个订单,但是一个订单只能由一名顾客来创建。因此类C1 (顾客)和类C2(订单)之间是一种一对多联系, 图2-13中(1)空缺处所对应的多重度应填入1,(2) 空缺处应填入0… *。
一个订单中至少应包含一件商品,也可以包含多件商品;而一件商品可以出现在一个或多个订单中,也可能没有任何顾客订购某种商品。因此类C2(订单)和类C3(商品)之间是一种多对多联系。在图2-13中,采用了关联类的方法来表示多对多联系。(3) 空缺处应填入0… * (此处下限0表示没有顾客订购某种商品),(4) 空缺处应填入1… * (此处下限1表示一个订单中至少应包含一件商品)。
【问题3】
仔细题干给出的说明信息,结合问题1和问题2的分析结果,类C2 (订单)的属性至少应包括volume(订单量)、deliver),date(发货日期)、form of payment(付款方式)等;类C3(商品)需要补充的属性至少应包括cost price (造价)、sale price(售价)、cubic volume (包装体积)等。
在图2-13所示的类图中,类C1的关键属性都已经给出了。由题干给出的说明信息可知,属性address表示的是“收货地址”。而收货地址的最初始来源是顾客,因此C1的类名是Customer(顾客)。
2.(8分)组件Boolean isTriangle(int a, int b, int c)用来判断边长分别为a,b,c的图形是否
为三角形。
(1)使用黑盒测试法划分等价类,然后选择测试用例。
(2)以下为此组件的逻辑结构:
假设程序中变量均为整型,请设计测试用例,满足“路径覆盖(Path Testing)”的要求。
3.(8分)根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。
"一个程序读入3个整数,它们分别代表一个三角形的3个边长。该程序判断所输入的整数是否构成一个三角形,以及该三角形是一般的、等腰的或等边的,并将结果打印出来。" 。假定三角形的3条边分别为A、B、C。
(1) 列出等价类表,格式如下:
输入条件 | 有效等价类 | 无效等价类 |
(注意:将等价类编号) | (注意:将等价类编号) |
(2) 设计测试用例,格式如下:
用例n:输入【A,B,C】覆盖等价类……(列出等价类序号),输出结果为……。
4. 电话号码黑盒测试用例的设计
5.活动图计算-1
6.活动计算图-2
7.活动计算图-3
下图是一个软件开发项目的活动图。其中各个节点表示活动的里程碑,各条边所标数字表示各项活动所需要的天数。对每项活动,列出其最早、最迟开始时间。然后,指出本活动图的关键路径。
注意:使用(<最早开始时间>, <最迟开始时间>)的形式直接标在图上。
关键路径是:( ABDIJL和ACFGJL )
8.宠物商店PetStore是一个集客户购物、订单处理、销售统计等功能于一体的电子商务网站。以下是简要的功能需求:
客户分为匿名客户和注册客户,对于注册客户以会员方式管理,登记并管理其个人信息,根据其消费积分分为金牌会员、银牌会员、普通会员,以享受不同程度的优惠。
通过浏览器,匿名客户可以查询宠物;创建账户并登陆后才能够使用购物车、创建订单、提交订单、通过信用卡支付等购物活动。每个客户可以同时拥有多个订单,但只能有一个购物车,订单基于购物车内的商品创建。
宠物商店的工作人员能够接受或拒绝客户提交的订单、处理订单、发订单给供应商、接受供应商返回的配送结果;还能够统计销售情况。
注册客户可以随时查询其订单状态,当订单尚未处理时,可以取消订单;订单一旦开始处理,不允许客户取消。
(1)使用UML用例图表达以上需求。
(2)使用UML类图描述此系统的对象模型。
9.设计测试用例
路径 | 测试用例 |
Y | I=20 |
NNNY | I=10,X=3,Y=3 |
NNYY | I=10,X=2,Y=-1 |
NYNY | I=10,X=1,Y=1 |
NYYY | (不存在测试用例) |
10.画UML类图
11.按照年月份的规定输入,黑色测试。划分等价类并给出测试用例。
12.阅读下列说明及图示,回答问题[1]和[2],将解答填入本题后面的对应栏内。
[说明]某公司的主要业务是出租图书和唱碟。由于业务需求,该公司委托软件开发公司A开发一套信息管理系统,该系统将记录所有的图书信息、唱碟信息、用户信息、用户租借信息等。A公司决定采用面向对象的分析和设计方法开发此系统。图[1]所示为某类图书或唱碟被借阅时应记录的信息,图[2]描述了系统定义的两个类Book和CD,分别表示图书和唱碟的信息。
[问题1]经过进一步分析,设计人员决定定义一个类Items_on_loan, 以表示类Book和CD的共有属性和方法。请采用图[2]中属性和方法的名称给出类Items_on_loan应该具有的属性和方法。(注意:不同名称的属性和方法表示不同的含义,如CD中的composer与Book中的auther无任何关系。)
答案:
属性: title
方法: Reference Title
[问题2]为了记录每种图书或唱碟的历史记录,引入类CirculationHistory,类中存储的信息是图[1]中所表示的内容。请采用UML表示法将下列4个类间的关系表示出来。