河南城建学院 《统一建模语言UML》复习资料 2013.12
1、简述统一建模语言(UML):
答:统一建模语言(UML)是一种绘制软件蓝图的标准语言。可以用UML对软件密集型系统的制品进行可视化详述和文档化。UML是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。
2、UML中的交互图有两种,分别是顺序图和协作图,请分析一下两者之间的主要差别和各自的优缺点。
答:协作图可视化地表示了对象之间随时间发生的交互,它除了展示对象之间的关联,还显示出对象之间的消息传递。与顺序图一样,协作图也展示对象之间的交互关系。顺序图强调的是交互的时间顺序,而协作图强调的是交互的语境和参与交互的对象的整体组织。顺序图按照时间顺序布图,而协作图按照空间组织布图。
顺序图可以清晰地表示消息之间的顺序和时间关系,但需要较多的水平方向的空间。协作图在增加对象时比较容易,而且分支也比较少,但如果消息比较多时难以表示消息之间的顺序。 3、顺序图和协作图中,消息有哪三种?各自的意义和表示法什么?
答: 消息可以是简单的(simple)、同步的(synchronous)或异步的(asynchronous)。简单消息是从—个对象到另一个对象的控制流的转移。如果一个对象发送了—个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作。而发送异步消息的对象不需要等待对方的应答便可以继续自己的操作。在顺序图中,简单消息是—个简单箭头,同步消息是实心箭头。异步消息是—个半边箭头。
4. 什么是顺序图,顺序图是由那些部分组成?
答案:顺序图是强调消息时间顺序的交互图。是描述系统中类和类之间的交互,它将这些交互建模成消息交换,也就是说,顺序图描述了类相互协作的完成预期行为的动态过程。顺序图是由:类角色、生命线、激活期和消息组成。 5. 什么是协作图,协作图是由那些部分组成?
答案:协作图作为另一种交互图而言,强调的是参加交互的对象的组织。 协作图是由:类角色、关联角色和消息流组成。
6. 在绘制类图时,第一步就是发现类,最常用的方法是什么?请简要说明它的使用方法。
发现类的方法有很多种,其中最广泛应用的莫过于“名词动词法”,其主要规则是从名词与名词短语中提取对象与属性;从动词与动词短语中提取操作与关联;而所有格短短语通常表明名词应该是属性而不是对象。 7、简述如何在实际工作中发现类。
答:在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。 还要注意你听到的动词,因为这些动词可能会构成这些类中的操作。
当得到一组类的核心列表后,应当向客户询问在业务过程中每个类的作用。他们的回答将告诉你这些类的职责。 8、简述怎样发现类之间的继承关系。
答: 作为候选的类有可能和它的父类、子类在谈话中同时被发现。系统分析员意识到某个类的属性和操作也许能被运用到其他多个类当中去。
另一种可能的情况是系统分析员注意到两个或者多个类可能具有相同的属性和操作数。 9. 试比较边界类与实体类的异同。
答案:实体类是对系统中需要存储的信息和其信息的行为建立模型。实体类具有永久的特性,这类似于数据库中的表一样用于保存系统的业务信息。
边界类位于系统与外界的交接处,它在一个或多个角色和系统之间建立相互作用的模型。 10. 什么是动作状态?什么是活动状态?它们有什么区别?
答案:动作状态是活动图中最小单位的构造块,表示原子动作。活动状态表示的是可以分割的动作。可以将对象的活动状态理解为一个组合,它的控制流由其他活动状态或动作状态组成。 11. 请说明对象图的适用场景以及它的优缺点。
对象图适用于论证类模型的设计以及对源代码进行分析和说明。其优点是能够直观理解出系统运行时的实时状态,缺点是比较复杂,工作量大。
12、统一过程中有哪四个阶段,各阶段需要完成的主要工作有哪些?
答:使用RUP过程开发软件系统,软件的生命周期分四个阶段:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)、提交阶段(Transition)。各阶段需要完成的主要工作如下:
11
河南城建学院 《统一建模语言UML》复习资料 2013.12
1)初始阶段:编制简要的愿景文档、 业务案例、 确定范围、 粗略评估成本。]
2)细化阶段:细化愿景文档、 迭代地实现核心构架、 解决高风险的问题、 定义大多数的需求和范围、 进一步评估成本 3)构造阶段:迭代地实现系统的其余部分、 准备部署 4)提交阶段:beta 测试、部署 13. 什么是参与者?如何确定系统的参与者?
答案:参与者(actor ,有些书翻译成“角色”)是一种特殊的类,是系统外部的一个实体,这个实体可以是任何的人或物,它以某种方式参与了用例的执行过程。
在获取用例前首先要确定系统的参与者,可以根据下面的一些问题来寻找系统的参与者:①谁使用系统?②谁安装系统、维护系统?③谁启动系统、关闭系统?④谁从系统中获取信息,谁提供信息给系统?⑤在系统交互中,谁扮演了什么角色?⑥系统会与哪些其他系统相关联?
14. 什么是用例?如何确定系统的用例?
答案:用例是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。 可以根据下面的一些问题来识别用例: ①参与者希望系统提供什么功能; ②系统是否存储和检索信息;
③当系统改变状态时,是否通知参与者;
④是否存在影响系统的外部事件,是哪个参与者通知系统这些外部事件。 15、阐述用例对于系统开发人员来说的价值。
答:是用来从用户的观察角度收集系统需求的一项技术,便于分析员与客户和用户交流,使系统更符合用户的需求。 16. 试论述类与用例的区别。
答案:类是对一组具有相同属性、操作、关系和语义的对象的描述。类是对事物的抽象。而用例是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。 17. 什么是依赖?他与关联有什么区别?
答案:依赖是一种使用关系,它说明了一个事物声明说明的变化可能影响到使用它的另一个事物,但反之未必。也就是说,服务的使用者以某种方式依赖于服务的提供者。而关联是一种结构关系,它详述了一个事物的对象与另一个事物的对象相互联系。 18. 什么是泛化?泛化是否就是类的继承,如果不是请说明理由
答案:泛化是一般事物(称为父类或超类)和较特殊事物(称为子类或孩子类)之间的关系。 泛化不是类的继承,类的继承是泛化的一种。 19. 试论述聚合和组合的异同。
答案: 聚合描述了整体对象拥有部分对象的关系。组合是聚合的一种形式,它具有强的拥有关系,而且整体与部分的生命周期是一致的。
20. 活动图与传统的流程图有什么区别?
答案:流程图一般限于顺序过程,而活动图则可以对付并行过程。
流程图明确指出了每个活动的先后顺序,而活动图仅描述了活动和必要的工作顺序。 21. 什么是对象图,请简述对象的作用?
答案:对象图是描述在某一时刻,一组对象以及它们之间关系的图形。
对象图是描述系统交互的静态图形,它由协作的对象组成,但不包含在对象之间传递的任何消息。 22. 请描述组件图和部署图的关系?
答案:组件图用于描述系统中软件的构成,但没有描述系统中与硬件有关的构成情况。部署图则用于描述系统硬件的物理拓扑结构以及在此结构上运行的软件。 23. 请叙述类,组件和节点的关系?
答案:组件是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现。 节点和组件的关系:
①组件是参与系统执行的事物,而节点是执行组件的事物。简单的说就是组件是被节点执行的事物,如假设节点是一台服务器,则组件就是其上运行的软件。
②组件表示逻辑元素的物理模块,而节点表示组件的物理部署。这表明一个组件是逻辑单元(如类)的物理实现,而一个节
12
河南城建学院 《统一建模语言UML》复习资料 2013.12
点则是组件被部署的地点。一个类可以被一个或多个组件实现,而一个组件也可以部署在一个或多个节点上。 五、综合分析设计题 ?
练习题1:
阅读下面关于“网上选课系统”的陈述: 1、某网上选课系统的需求概述如下:
(1)系统采用B/S模式;
(2)该系统供学期开课前学生网上选课之用;
(3)课程的管理,如“添加课程”、“删除课程”等都由系统管理员来负责; (4)学生可使用该系统完成“选择课程”等功能; (5)任课教师可以使用该系统查看选课的学生。 2、现有关于该系统模型的部分内容:
(1)系统中的参与者(Actor)有4类:管理员(Administrator)、学生(Student)、教师(Teacher)及数据库(Database) (2)为该系统设计的类(class)共有8个:
系统管理员类(Administrator),对现实世界系统管理员的抽象; 学生类(Student),对现实世界中与该系统相关的学生的抽象; 教师类(Teacher),对现实世界中与该系统相关的教师的抽象; People类 ,前3个类的父类
数据库类(Database),提供和数据库相关的功能,对数据库中的相关数据进行操作; 课程类(Course),对现实世界中与该系统相关课程的抽象; 界面对象类(FormObject),用于生成系统的界面对象
控制对象类(ControlObject),负责系统的业务逻辑功能,如判断用户是否合法、添加的课程是否合理等; 3、根据以上的陈述完成以下题目:
(1)、分析该系统应该存在哪些用例?(6分)
参考答案:管理员触发的用例:添加课程(Add Course)、删除课程(Delete Course)、修改课程(Modify Course);学生触发的用例:选择课程(Select Course)、查询课程(Query Course);教师触发的用例:查看选课学生(Query Student)
(2)、画出网上选课系统的用例图。(10分)
Select CourseStudentQuery CourseAdd CourseDataBaseAdministratorModify CouseDelet CourseTeacherQuery Students
(3)、下面是“添加课程”用例的事件流,用活动图为其建模。(10分) (1) 管理员选择进入管理界面,用例开始。 (2) 系统提示输入管理员密码。 (3) 管理员输入密码。 (4) 系统验证密码。 A1:密码错误
(5) 进入管理界面,系统显示目前所建立的全部课程信息。
13
河南城建学院 《统一建模语言UML》复习资料 2013.12
(6) 管理员选择添加课程。 (7) 系统提示输入新课程信息。 (8) 管理员输入信息。
(9) 系统验证是否和已有课程冲突。 A2:有冲突
(10) 系统添加新课程,提示课程添加成功。 (11) 系统重新进入管理主界面,显示所有课程。 (12) 用例结束。 A1:密码错误
(1) 系统提示再次输入。 (2) 用户确认。
(3) 三次错误,拒绝再次访问。 (4) 否则进入添加课程事件流第5步。 A2:有冲突
(1) 系统提示冲突,显示冲突课程信息。 (2) 用户重新输入。 (3) 继续验证直到无冲突。 进入添加课程事件流第10步。
用户界面 业务逻辑 数据库 系统提示输入密码管理员输入密码验证密码生成密码对象系统提示再次输入[ 密码不正确 ]判断正确否在数据库中查询密码[ 密码正确 ]系统提示输入各项信息管理员输入课程信息选择添加课程取得系统管理权限验证课程合法否生成课程对象判断是否合法[ 合法 ]添加到数据库系统提示再次输入[ 不合法 ]在数据库中查询显示添加成功[ 成功 ]判断添加是否成功显示添加失败[ 不成功 ] 4、画出网上选课系统的类图。(10分) 14 河南城建学院 《统一建模语言UML》复习资料 2013.12
Student1People1AdministratorDatabase0..n0..n110..nContorObject11FormObjectCourse0..n
5、针对系统中Course类对象的状态变化,建立Course类对象的状态图。(10分)
创建 课程Created添加 课程Modified修改课程In Database[ 选课人数不超过最大值 ]Deleted[ 选课人数不超过最大值 ]In Schedule[ 选课人数超过最大值 ][ 学期结束 ][ 学期结束 ]Locked
6、画出网上选课系统的“添加课程”用例的顺序图。(14分)
stu : Studentform : FormObjectcourse : Coursectrl : ControlObjectdb : DataBase1: 显示所有课程信息2: 添加课程3: 输入课程信息4: 生成课程对象5: 查询课程是否合法6: 查询课程7: 判断是否合法8: 添加课程9: 显示添加成功
?
练习题2:
15