10. 请简要解释主动类的概念,并说明它建模的意义,并通过1-2个实例来说明,主动类可以用来表示哪些设计元素。
主动类的实例称为主动对象,一个主动对象拥有一个控制线程并且能够发起控制活动;它不在别的线程、堆栈或状态机内运行,具有独立的控制期。从某种意义上说,它就是一个线程。
例如Socket服务器的监听线程就可以表示为主动类。 11. 以使用OCL语言来表示以下含义: ?
在类examinee(考生)中,字段result(成绩)的值大于零,小于75分(满分)。
examinee:result>0 and result<75 ?
在类Order中,其包含的支付信息是用其它类来表示,要么是表示货到付款的类AfterBill,要么是网上转账的类BeforeBill。 AfterBill xor BeforBill
12. 请简要说明类图的应用领域,并重点说明在软件系统建模应用时的三种模型的关键点及区别。
类图主要可以应用于业务性模型、软件系统模型和数据库逻辑模型。类图应用于软件系统模型时,主要是用来构建领域模型、分析模型和设计模型:
?
领域模型是从面向对象的视角看待现实世界的结果,也就是通过类图来描述现实世界中各种事物的关系。因此在构建这个模型时,最主要的工作是找出相关的类,然后明明类之间的关联关系,必要时加入一些多重性描述和业务规则约束。 ?
分析模型和领域模型是很相近的,甚至可以说领域模型是一种全局的业务分析模型。而在RUP中,分析模型主要是针对软件系统的分析,领域模型则更多是偏重对业务领域的分析。 ?
设计模型则是在分析模型的基础上添加设计元素的结果。与分析模型相比,设计模型中的类的属性集更趋完善;更重要的是,它将加入模板类、参数类、抽象类/接口等设计元素,以及框架类的使用、设计模式的使用等。总的来说,设计模型是一种详细设计模型,将能够直接对编程予以指导。
13. 图3-34是小张绘制的一张关于网上商城用户管理的领域类图,但其中存在一些问题,请指出错误并说明理由。
LoginManagerArrayListUserAccountUserPreferencesAccountInfoUserPreferencesInfoSystem.Data.Oracleclient
图3-34 网上商城用户管理领域类图局部
作为领域类图不应该涉及到实现类,因此不应该引入诸如System.Data.Oracleclient和ArrayList之类与程序实现直接相关的类。
14. 在绘制类图时,第一步就是发现类,最常用的方法是什么?请简要说明它的使用方法。 发现类的方法有很多种,其中最广泛应用的莫过于“名词动词法”,其主要规则是从名词与名词短语中提取对象与属性;从动词与动词短语中提取操作与关联;而所有格短短语通常表明名词应该是属性而不是对象。
15. 复合结构图主要包括哪两个部件?如图3-35所示的部件,其各部分表示什么?含义是什么?
(3)light:Control(1)(2)1
图3-35 复合结构图图例
(1)角色名 (2)类型 (3)多重性
16. 根据以下系统描述,绘制出最初的类模型。
该系统为指纹门禁系统,它包括四个主要部件:主机、锁控器、指纹采集器和电控锁。系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且处于“已锁住”状态时,才能将锁打开。 用户的指纹信息、开锁权限以及锁的安全级别都保存在主机的数据库中。用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。
第4章 对象图
1. 对象特性的三要素是什么,请通过一个实际的例子来说明三要素的内容。 对象特性的三要素是状态、行为和标识。
2. “书”、“购物车”、“我的UML参考手册(第二版)”、“银行卡”、“号码为13600000000的手机卡”中,哪些是对象,哪些是类。光从这些名字是否一定可以确定为是对象?
“我的UML参考手册(第二版)”、“号码为13600000000的手机卡”应该是对象。 3. 在图4-5中最上面的对象的名称是什么?该图表示的意思是什么?请绘制出与其相应的类图。
China:CountryfuJian:ProvincesiChuan:Province
图4-5 对象图实例
China。该图的意思是福建、四川等省份组成中国。
CountryProvince
4. 请说明对象图的适用场景以及它的优缺点。
对象图适用于论证类模型的设计以及对源代码进行分析和说明。其优点是能够直观理解出系统运行时的实时状态,缺点是比较复杂,工作量大。
5. 请你找一段源程序,并绘制出与其相应的对象图。
第5章 对象图
1. 包在UML中属于哪一类的构造块?它的主要作用是什么?
属于分组事物构造块。通过“包”就可以把类、用例、构件等元素聚集在一起,构成更高层的单位。这样就可以将它们作为一个成组的元素来进行可视化。
2. 包之间的依赖关系主要包括哪几种,请分别举个例子说明。 ? ? ? ?
《use》:DAO程序使用System.Data.SqlClient包完成对SQL服务器的访问 《import》:页面与被引用的用户控件之间的关系 《access》:两个相互之间可以访问的包 《trace》:不同版本的包
3. 包之间的各种依赖关系中,客户包将把提供者包并入自己的命名空间的是哪个? 《import》关系
4. 假设有一个温度监控系统,用户在MonitorGUI(监控界面)上输入查询指令,然后QueryState包的程序将与温感探头连接,获取当前的状态信息,并存入数据库,再返回给用户界面。根据这一描述,小张绘制了如图5-9所示的包图。你认为其中存在什么问题,请试着修改?
MonitorGUIQueryState
图5-9 温度监控系统包图的局部
在包图中应该避免出现这种循环依赖的情况。可以修改为:
MonitorGUIDataBaseQueryState
5. 请解释体系结构建模和对成组元素建模有什么区别,并试着给一个你开发过的系统绘制表示其体系结构的包图。
对体系结构建模关键在于描述出系统采用的体系结构模式;而对成组元素建模,主要是将建模元素组织成能作为一个集合进行命名和处理的分组。
第6章 用例图
1. 请列举出两种以上现代需求分析技术,并简要地说明它们的特点。 ?
用例:描绘一个系统外在可见的需求情况,是代表系统中各个项目相关人员(风险承担人,Stakeholder)之间就系统的行为所达成的契约 ?
用户故事:由客户参与编写,说明他们需要系统为他们做什么,一般用客户的术语编写,其长度约为三句话左右 ?
特性:就是一个小的,具有客户价值的功能
2. 在用例图中参与者是什么,它属于系统范围之内吗?
参与者是为了完成一个事件而与系统交互的实体,它不属于系统范围之内。 3. 用例和使用场景之间是什么关系?与协作又是什么关系?
用例是由一组用例实例组成的,用例实例也就是常说的“使用场景”,而协作是用例的实现。
4. 用例之间的扩展、泛化、包含三种关系有什么异同,请分别举例说明。 ?
扩展关系:基用例是可以独立于扩展用例存在的,只是在特定的条件下,它的行为可以被另一个用例的行为所扩展 ?
包含关系:被包含的用例(此例中的检查座位详情)不是孤立存在的,它仅作为某些包含它的更大的基用例(此例中的预订座位、安排座位)的一部分出现 ?
泛化关系:用来表示参与者与参与者之间,用例与用例之间的特殊/一般化关系
5. 一个用例的描述,最基本的部分有哪些。
用户描述、用例名称、用例概述、主参与者、基本事件流
6. 对于一个电子商务网站而言,以下哪些不是合适的用例,指出并说明理由。 输入支付信息 将商品放入购物车 结账 预订商品 用户登录 邮寄商品 查看商品详情 输入支付信息:太小 邮件商品:系统功能之外 查看商品详情:太小
7. 用例分析技术和结构化分析相比,最大的区别是什么?请简要地说明它们之间的关系。 用例分析技术最大的特点是从用户的角度来分析、组织需求。而结构化分析更多是从系统的结构上进行分析。
8. 为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理系统。主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。该公司小王,通过多次的与潜在客户的交流与沟通,完成了最初的用例模型的开发,图6-14是一个用例模型的局部:
打开房源信息页面<
图6-14 物业管理系统用例模型局部
(1)但小李认为该模型不符合“用例建模”的思想,存在明显的错误。请用200字以内说明错误所在,并说明应该如何修改。
1)主要错误:用例的分解太细,并没有遵从每个用例为用户传递一个有价值的结果的原则。在原设计中“打开房源信息页面”、“录入房源信息”、“确认提交信息”都只是一个操作步骤,因此不适合作为用例。
2)修改方法:将“打开房源信息页面”、“录入房源信息”、“确认提交信息”合并为“新增房源信息”。
(2)在上图中构造型“《include》”表示的是什么意思,它与“《extent》”之间的区别是什么?
在用例模型中,构造型“《include》”是用来表示包含关系。它通常用来表示被包含用例是被多包含用例使用的一个可复用模块,而《extent》且通常用来表示对用例的扩展。
9. 请为图6-4中的用例“预订座位”(以及它包含的用例“检查座位信息”和扩展用例“处理等候队列”)编写用例描述,
10. 说明用例模型是如何转变成设计模型的,试着结合自己的开发实践来说明。