1、一、单项选择题(5*9) UML 中关联的多重度是指 _(1)_。A一个类有多少个方法被另一个类调用B一个类的实例能够与另一个类的多少个实例相关联C一个类的某个方法被另一个类调用的次数D两个类所具有的相同的方法和属性 已知 3 个类 A、B 和 C,其中类 A 由类 B 的一个实例和类 C 的 1 个或多个实例构成。能够正确表示类 A、B 和 C 之间关系的 UML 类图是_(2)A_。 采用 UML 进行软件建模过程中,类图是系统的一种静态视图,用 (3) 可明确表示两类事物之间存在的整体/部分形式的关联关系。A. 依赖关系 B. 聚合关系 C. 泛化关系 D. 实现关系 在 UML 语言中
2、,下图中的 a、b、c 三种图形符号按照顺序分别表示 (5) 。a b cA. 边界对象、实体对象、控制对象 B. 实体对象 、边界对象、控制对象C. 控制对象、实体对象、边界对象 D. 边界对象 、控制对象、实体对象 在下面的用例图中,X1、X2 和 X3 表示 (6) ,已知 UC3 是抽象用例,那么 X1可通过 (7) 用例与系统进行交互。并且,用例 (8) 是 UC4 的可选部分,用例 (9) 是 UC4 的必须部分。(6)A. 人 B. 系统 C. 参与者 D. 外部软件(7)A. UC4、UC1 B. UC5、UC1 C. UC5、UC2 D. UC1、UC2(8)A. UC1 B
3、. UC2 C. UC3 D. UC5(9)A. UC1 B. UC2 C. UC3 D. UC544 A45C 46D 47B32C35B对于右侧的程序流程,当采用语句覆盖法设计测试案例时,至少需要设计 个测试案例。A. 1 B. 2 C. 3 D. 4 输 入 X和 YX 0Y X Y XY 0X 1否 是否 是X 137B下面有关测试的说法正确的是_。A测试人员应该在软件开发结束后开始介入B测试主要是软件开发人员的工作C要根据软件详细设计中设计的各种合理数据设计测试用例D严格按照测试计划进行,避免测试的随意性为验证程序模块 A 是否正确实现了规定的功能,需要进行 (1) ;为验证模块 A
4、 能否与其他模块按照规定方式正确工作,需要进行 (2) 。(1)A. 单元测试 B. 集成测试C. 确认测试 D. 系统测试(2)A. 单元测试 B. 集成测试C. 确认测试 D. 系统测试系统测试是将软件系统与硬件、外设和网络等其他因素结合,对整个软件系统进行测试。_不是系统测试的内容。A路径测试 B可靠性测试C安装测试 D安全测试一个项目为了修正一个错误而进行了变更,但这个错误被修改后,却引起以前可以正确运行的代码出错。 最可能发现这一问题。 A. 单元测试 B. 接受测试C. 安装测试 D. 回归测试二、综合题(5*4+5*4+15 )阅读下列说明以及图 3-1 和图 3-2,回答问题
5、1、问题 2 和问题 3,将解答填入答题纸的对应栏内。说明某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下:1浏览客户信息:任何使用 Internet 的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。2登录:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。3修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。4删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中认定出的类如下表所示
6、: 编号 类名 描述1 InternetClient 网络用户2 CustomerList 客户信息表,记录公司所有客户的信息3 Customer 客户信息,记录单个客户的信息4 CompanyCustomer 公司客户5 InternalClient 公司的管理人员图 3-1 问题 1在需求分析阶段,采用 UML 的用例图(use case diagram)描述系统功能需求,如图 3-1 所示。请指出图中的 A、B、C 和 D 分别是哪个用例? A:浏览客户信息 B:修改个人信息C:登录 D:删除客户信息 问题 2在 UML 中,重复度(Multiplicity)定义了某个类的一个实例可以与
7、另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如图 3-2 中的类 InternetClient 和 CustomerList,InternetClient 端的“0.*”表示:一个 CustoerList 的实例可以与 0 个或多个 InternetClient 的实例相关联;CustomerList 端的“1”表示:一个 InternetClient 的实例只能与一个 CustomerList 的实例相关。请指出图 3-2 中(1)到(4)处的重复度分别为多少?(1)1(2)0.*(3)0.1 (4)0.11)4 种关系的含义: 依赖表示类之间的使用关
8、系。 泛化表示一般类和特殊类之间的关系。 关联和聚集都表示实例之间的结构关系。 (2)组合和聚集的区别: 组合是一种更强形式的关联,代表整体的组合对象有管理它的部分对象的特有责任。聚集是一种特殊的关联,它表示整体部分关系。 练习【说明】某指纹门禁系统结构如图 3-1 所示,其主要部件有:主机(MainFrname)、锁控器(LockController)、指纹采集器(FingerReader)和电控锁(Lock)。1) 系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。2) 在主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级
9、别并且锁处于“已锁住”状态时,才能将锁打开。3) 用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。4) 用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。 图 3-2 是该系统类图的一部分;系统的动态行为采用 UML 序列图表示,图 3-3 是用户成功开锁的序列图。依据上述说明中给出的词语,将图 3-3 中的(1)(5)处补充完整。(1)中断事件 (2)读取用户指纹 (3)读取用户开锁权限
10、(4)读取锁的安全级别 (5)判断用户是否有权限开锁或用户是否可以开锁【问题 1】(6 分)图 3-2 是该系统类图的一部分,依据上述说明中给出的术语,给出类 Look的主要属性。【问题 3】(4 分)组装(Composition)和聚集(Aggregation)是 UML 中两种非常重要的关系。请说明组装和聚集分别表示什么含义?两者的区别是什么?问题 1锁的编号、安全级别、锁的当前状态问题 2(1)中断事件 (2)读取用户指纹 (3)读取用户开锁权限(4)读取锁的安全级别 (5)判断用户是否有权限开锁或用户是否可以开锁问题 3组装和聚集都表示实例之间的整体/部分关系。组装是聚集的一种形式。聚
11、集是概念性的,只是区分整体与部分。组装具有很强的归属关系,而且整体与部分的对象生存周期是一致的。或者回答:如果没有成分对象,组装对象也不存在;在任何时候,每个给定的成分对象只能是组装对象的组成部分。【说明】已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲) 。连接电脑的过程中还可自动完成充电。关于唱片,还有以下描述信息:1每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由 2 名或 2 名以上的歌手所组成的乐队。一名歌手可以不属于任何
12、乐队,也可以属于一个或多个乐队。2每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。3. 每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话) 。根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表 3-1所示的类列表、如图 3-1 所示的初始类图以及如图 3-2 所示的描述播放器行为的 UML 状态图。表 3-1 类列表类 名 说 明Artist 艺术家Song 歌曲Band 乐队Musician 歌手
13、Track 音轨Album 唱片问题 1】 (3 分)根据说明中的描述,使用表 3-1 给出的类的名称,给出图 3-1 中的 AF 所对应的类。【问题 2】 (6 分)根据说明中的描述,给出图 3-1 中(1)(6)处的多重度。【问题 3】 (4 分)图 3-1 中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。类 多重度【问题 4】 (2 分)根据图 3-2 所示的播放器行为 UML 状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的) 。问题 1A:Artist B:Song C:Band D:Musician E:Track F:Album问题 2 (1) 0.* (2) 2.* (3)0.1 (4) 1.* (5) 1.* (6) 1问题 3 类 多重度 Track 或 E 0.1 Track 或 E 0.1 【问题 4】按任意键,选择歌曲 (1) state = CLOSED | state = CLOSING(2) state = OPENING | state = STAYOPEN(3) state = OPEN(4) state.click()(5) state.timeout()(6) plete()(7) door.setState(door.OPENING)