统一建模语言UML实验报告.docx
《统一建模语言UML实验报告.docx》由会员分享,可在线阅读,更多相关《统一建模语言UML实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
统一建模语言UML实验报告
学生实验报告
实验一UML建模基础及用例图
[实验目的和要求]
1、熟悉UML建模工具RationalRose的基本菜单及操作。
2、掌握UML的可见性规则和构造型的作用。
3、掌握用例的概念;掌握UML用例图的组成及作用。
4、掌握用例与用例之间的各种关系。
[实验内容和步骤]
1、练习使用建模工具建立各种UML图形,并对图形进行相应编辑和修改。
2、认识各种UML关系及可见性符号,并用工具表示出来。
UML关系
表示方法
关联关系
依赖关系
泛化关系
实现关系
聚合关系
可见性
表示方法
公有(Public)
““+”
私有(Private)
“-”
受保护(Protected)
“#”
包内公有(Package)
“~”
。
3什么是用例,什么是场景?
用例和场景之间的关系是怎样的?
答:
用例是外部可见的系统功能单元,这些功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。
事件触发时的情景便形成了场景
4用例图中有哪些组成元素?
在UML中是如何表示的?
答:
用例图包含6个元素,分别是:
参与者、用例、关联关系、包含关系、扩展关系以及泛化关系。
参与者用人形图标表示,用例图用椭圆形符号表示,连线表示它们之间的关系。
5用例与用例之间的包含关系、扩展关系和泛化关系各代表什么含义?
它们之间有何区别?
对以上三种关系各举一例,画出用例图,并进行说明。
答:
包含关系:
一个用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。
扩展关系:
一个用例也可以被定义为基础用例的增量扩展,这称作扩展关系,扩展关系是把新的行为插入到已有用例中的方法。
泛化关系:
一个用例可以被特别列举为一个或多个子用例。
包含关系把几个用例的公共步骤分离成一个单独的被包含用例。
被包含用例称作提供者用例,包含用例称作客户用例,提供者用例提供功能给客户使用。
用例间的包含关系允许包含提供者用例的行为到客户用例的事件中。
包含关系使一个用例的功能可以在另一个用例中使用。
(1)如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中。
其他用例也可以和这个用例建立包含关系。
(2)一个用例的功能太多时,可以用包含关系建模两个小用例。
用例间的包含关系示例图
基础用例的执行不会涉及到扩展用例,只有特定的条件发生,扩展用例才被执行。
用例间的扩展关系示例
用例泛化当父用例能够被使用时,任何子用例也可以被使用。
子用例从父用例处继承行为和属性,还可以添加、覆盖或改变继承的行为。
如果一个系统中一个或多个用例是某个一般用例的特殊化时,就需要使用用例的泛化关系。
用例间的泛化关系示例
6为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理系统。
主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。
该公司小王,通过多次的与潜在客户的交流与沟通,完成了最初的用例模型的开发,下是一个用例模型的局部:
小李认为该模型不符合“用例建模”的思想,存在明显的错误。
请用200字以内说明错误所在,并说明应该如何修改。
答:
用例是系统参与者与系统在交互过程中所需要完成的事务。
确定参与者是房产经济人,还要分析系统所涉及的问题领域和系统运行的主要任务。
根据系统的需求分析可确定:
作为一个物业信息管理系统,要实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。
参与者有房产经纪人,对于房产经纪人来说,系统维护操作主要包括:
录入,修改房源信息而登录和确认信息是包含在登入和修改中的,包含关系的图标按钮应用虚线箭头。
修改后应该是:
7.阅读下面的用例图,说明该图所表达的信息。
答:
客户可以启动“预定座位”功能。
如果预定人数多,将执行扩展用例“处理等候队列”。
总台服务员可以启动“安排座位”“办理结账”功能。
客户预定座位、服务员安排座位需要先“检查座位信息”。
服务员“办理结账”时需要“收款”,收款时可以现金支付也可以使用银行卡,银行卡必须是银联POS系统。
8、下图是一个描述保险商务系统的简单用例图。
根据该用例图回答问题。
a)“签订保险单”用例可能涉及到哪几个实体类?
答:
客户、保险员、保险单。
b)现实生活中签订保单的基本流程如下:
客户提出购买需求,保险员根据客户需求选择相应的保险服务,客户阅读保险条款,同意后打印保单样据,客户签字并支付保金,保单开始生效,保险员做相关系统纪录。
如需要根据以上信息,请列举这个用例描述中可能存在扩展事件流。
答:
当客户不同意保险条款时,将执行扩展用例“退出签订保单”。
c)保单管理用例在实际开发过程中可以泛化出若干小用例,列出可能存在的子用例,并且说明这些用例和“保单管理”用例之间应该是什么关系?
答:
保单查询、保单保存。
泛化关系。
7、在一个TelephoneSystem(电话系统)中,用户可以使用电话卡或对方付款两种办法来打电话。
1)请画出表示该场景的用例图。
2)在前图的基础上,继续画出可能存在的包含用例和扩展用例。
[分析与讨论]
1、总结UML在软件工程中的作用以及使用UML建模的必要性。
答:
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。
它溶入了软件工程领域的新思想、新方法和新技术。
它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
使用UML可以对已有的用各种方法建立的模型进行描述,并比原来的方法描述得更好。
在软件开发的生命期方面,UML对于开发的要求具有无缝性。
开发过程的不同阶段可以采用相同的一套概念和表示法,在同一个模型中它们可以混合使用。
在开发的不同阶段,不必转换概念和表示。
这种无缝性对迭代式的、增量式软件开发是至关重要的。
在应用领域方面,UML适用于各种应用领域的建模,包括大型的、复杂的、实时的、分布式的、集中式数据或计算的。
2、总结用例图的重要作用,讨论并指出哪些场合下可以使用用例图。
答:
用例图显示多个外部参与者以及他们与系统提供的用例之间的连接。
通过用例建模可以对外部的角色以及他们所需要的系统功能建模。
用例图用于系统分析阶段。
3、讨论用例分析技术和结构化分析之间的关系和区别。
?
答:
区别:
用例分析是面向对象(ObjectOriented)的开发方法。
结构化系统开发方法是指把整个系统开发过程分成若干阶段,每个阶段进行若干活动,每项活动应用系统标准、规范、方法和技术,完成一个或多个任务,形成符合给定规范的软件产品。
联系:
它们都可以是软件的开发更容易
4、在使用用例图的时候应该如何划分用例,应注意哪些问题?
答:
如何确定用例:
a参与者需要从系统中获取哪种功能?
及参与者要系统做什么?
b参与者是否需要读取、产生、删除、修改或存储系统中的某种信息?
c系统的状态改变是是否通知参与者?
d是否存在影响系统的外部事件?
e系统需要什么样的输入、输出信息?
需要注意的是:
一定不要再用例图中使用两种命名方法。
即在椭圆之外和椭圆之内。
实验二对象图及交互图
[实验目的和要求]
1、掌握对象的概念,对象的表示方法,掌握类与对象的关系。
2、掌握时序图(顺序图)与协作图(通信图)这两种交互图的概念及作用。
3、掌握UML中静态图形和动态图形的区别和联系。
4、掌握UML时序图与协作图的基本图形,了解它们各自的组成元素、特定作用和适用场合。
5、重点掌握时序图的画法以及其中元素所代表的意义。
[实验内容和步骤]
1、什么是对象,对象的三大特征是什么?
UML中对象的表示方法有哪些?
答:
对象代表一个单独的,可确认的物体、单元或实体,它可以是具体的也可以是抽象的,在问题领域里有确切定义的角色。
换句话说,对象是边界非常清楚的任何事物。
对象的三大特征是封装、继承和多态。
UML中对象的表示方法有:
对象名和属性。
2、在下图中最上面的对象的名称是什么?
该图表示的意思是什么?
请绘制出与其相应的类图。
答;china:
country.该图表示福建省和四川省都包含在中国中。
相应的类图:
3、说明对象图的适用场景以及它的优缺点。
答:
对系统的设计视图建模时,可以使用一组类图完整地描述抽象的语义以及它们之间的关系。
但是使用对象图不能完整地描述系统的对象结构。
4、UML中的时序图与协作图之间各有什么区别和联系?
答:
两者都是表示交互的方式,但时序图描述时间交互的各种信息,协作图描述的是和对象结构相关的信息。
5、在顺序图和协作图中,应如何表示“循环”,“判断”等结构?
答:
整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序
6、什么是消息?
消息在交互中扮演什么角色?
答:
对象之间某种形式的通信,可以激发某个操作、唤起信号或导致目标对象的创建或撤销。
两个对象之间的单路通信。
7、交互图中有哪几种消息?
它们之间具体有何分别?
应如何表示?
答:
简单消息:
简单控制流;
同步:
嵌套控制流
异步:
异步控制流。
可以讲一个简单消息和一个同步消息合并成一个消息。
对于消息的这几种控制流不知道怎么具体区分,比如一个老师让一个学生发言属于什么消息?
简单控制流?
简单消息:
做完一件事再做另外一件事。
买票是同步;异步是不等结果的返回就去做另外一件事,比如洗衣服,洗衣机洗衣服的时候可以去做饭。
乙方发送了一个消息后不必等待甲方回应。
而同步必须是等到回应后才能做另外一件事。
8、假设有一系统得协作图局部如图所示,print方法的功能是将传入的参数的值打印在屏幕上,fact方法是计算阶乘,如果test的初值为1,那么最终将打印出什么?
(写出计算过程)
[分析与讨论]
1、思考类与对象之间的关系是怎样的?
各举几个实例,说明哪些是类,哪些是对象。
答:
类有3个分栏:
名称属性和操作。
对象只有两个分栏:
名称和属性。
类的名称分栏中只有类名。
对象的名称形式为“对象名:
类名”,匿名对象的名称形式为“:
类名”。
类的属性分栏定义了所有属性的特征。
对象图中不包含操作,因为对于属于同一个类的对象而言,其操作是相同的。
类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。
类代表的是对对象的分类,所以必须说明可以参与关联的对象的数目。
对象使用链连接,链拥有名称、角色,都是没有多重性。
对象代表的是单独的实体,所有的类都是一对一的,因此不涉及到多重性。
Country、Province是类,而china、fujian和sichuan分别是这两个类中的对象
2、思考在具体场景中应该如何区分类与对象。
答:
从定义和图形表示发区分。
对象就是类的实例,所以如果是抽像的不存在的就是类,而具体的存在的就是对象。
3、讨论并总结在建模过程中运用交互图的重要作用及意义。
答:
交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系。
类元是对在系统内交互关系中起特定作用的一个对象的描述,这使它区别于同类的其他对象。
交互视图显示了跨越多个对象的系统控制流程。
交互视图可用两种图来表示:
顺序图和协作图,它们各有不同的侧重点顺序图的一个用途是用来表示用例中的行为顺序。
当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。
协作图的一个用途是表示一个类操作的实现。
协作图可以说明类操作中用到的参数和局部变量以及操作中的永久链。
当实现一个行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。
实验三UML类图
[实验目的和要求]
1、掌握类的定义,类的3要素,UML中类的表示方法。
2、掌握类与类之间的各种关系代表的含义及表示方法。
3、实体类,边界类,控制类,关联类的概念和表示方法。
4、接口和抽象类的概念和表示方法。
类的多重性关系。
5、对一个类图进行相关的描述。
[实验内容和步骤]
1、简述类的定义,以及类的三要素
答:
类是对一组具有相同属性、操作、关系和语义事物的描述。
类的三要素是:
类的名称、属性、操作。
2、类的属性和方法的可见性有哪些?
UML中如何表示?
答:
类的属性和方法的可见性有:
公有public(符号“+”)、私有private(符号“-”)和受保护protected(符号“#”),
3、已知三个类A.B和C.其中类A由类B的一个实类和类C的1个或多个实类构成.请画出能够正确表示类A,B和C之间关系的UML类图.
4、根据以下描述画出类图,并注明多重性关系:
一个学生可以选
修多门课程,也可能没有任何课程;一门课程可以被多个学生选修;
一个老师可以教多门课程或者不教课;每门课程至少有一个老师,也可以有多个老师任教;每门课程可以有0或1本教材,每本教材只能用于一门课程。
5、现有一系统需要对商品进行管理,包括添加,删除商品,修改商品信息三项功能,画出系统类图。
(商品信息包括商品编号,商品名称,价格,生产厂商等)
6、如果现在系统需求发生变化,需要能够对损坏商品进行打折,以及可以按照商品的颜色和外形进行查询,则系统类图应该如何修改?
7、根据下面的代码画出Invoice类的类图,要求标明各属性的类型和可见性以及类方法。
publicclassInvoice
{
publicdoubleamount;
publicDatedate=newDate();
publicstringcustomer;
publicstringspecification;
publicstringadministrator=“unspecified”;
staticprivateintnumber_of_invoices()=0;
publicinvoice();
{
number_of_invoices++;
}
publicvoidprint()
{
System.out.println("Thenumberofinvoicesis”+intnumber_of_invoices);
}
}
8、下图是一个仓库管理系统的类模型局部,其中IncomeOrder是指入库单,OrderItem是指入库中的每一项,Product则是产品信息。
请指出模型中的错误,说明原因并改正类图。
答:
Orderltem与IncomeOrder的关系并不是泛化关系,而应该是包含关系。
改正的类图:
[分析与讨论]
1、讨论类图在建模过程中的重要作用。
答:
类图描述系统中类的静态结构,它不仅定义系统中的类,描述类之间的联系,还包括类的内部结构。
类图描述的是一种静态关系,在系统的整个生命周期中都是有效的。
通过分析用例和问题域,就可以得到相关的类,然后再把逻辑上相关的类封装成包,这样可以很好的体现系统的分层结构,是得系统层次关系一目了然。
2、总结在设计绘制类图的过程中应注意哪些问题。
答:
UML类图(ClassDiagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。
UML类图是定义其他图的基础,在UML类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。
实验四包图
[实验目的和要求]
1、掌握UML包的概念和作用。
2、掌握包与包之间的各种依赖关系的区别。
3、掌握建立包与包之间依赖关系的方法。
4、掌握建立包图过程中需遵循的原则。
[实验内容和步骤]
1、包属于UML中的何种事物?
有何作用?
答:
包是将多个元素组织为语义相关的组的通用机制。
对于复杂系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这时就有必要将这些元素进行分类,即把语义相近并倾向于同一变化的元素组织起来加入同一个包中,以方便理解和处理整个模型。
2、UML中包的表示方法有哪几种?
答:
包的绘制用一个小矩形和一个大矩形表示。
3、包与包之间存在哪几种关系?
答:
(1)引入和访问依赖,用于在一个包中引入另一个包输出的元素。
(2)泛化,用于说明包的家族。
4、包与包之间的依赖关系有何特点?
答:
访问依赖,用于在一个包中引入另一个包输入的元素。
5、如何避免包与包之间出现循环依赖关系?
各举一例。
例如:
A.dll中的类A引用到了B.dll中的类B,B.dll中的类B又引用到了程序A.dll中的类A。
如果存在这种情况,除非两个程序集(.net中dll就是一个程序集)均编译通过,否则一个程序集出现错误就会导致另一个程序集也编译不通过,于是让这个编译错误就会循环传递,使得编译器告诉我们:
两个程序集不能编译通过。
(如图1)
图1AssemblyA与AssemblyB之间的依赖关系
下面是解决方案来解除这种循环依赖关系:
1.将产生依赖的类型分离出来,放到另一个新的程序集AssemblyC中去。
2.使用接口来解除循环依赖:
这种方式的具体做法(如图2):
2.1.从被依赖的类中,提取出一个接口放到新的程序集中(接口中的成员是依赖类中所依赖的,当然被依赖的类是实现了该接口的)。
2.2依赖类去引用2.1中新建的程序集中的新接口。
图2使用接口解除两个程序集的循环依赖关系
6、建立包图应注意哪些问题?
答:
1.包的命名要简单、具有描述性。
2.应用包是为了简化3.包应该连贯。
4.在包上用版型注明架构层。
5.避免包间的循环依赖。
6.包依赖应该反映内部关系
7、根据下图判断下面哪句话正确的说明了包之间的依赖关系。
A)对Package1包中的元素做了修改后,需检查Package2包中的元素和Package3包中的元素是否要做相应修改。
B)对Package1包中的元素做了修改后,需检查Package2包中的元素是否需要做相应修改,如果是,则需继续检查是否Package3包中元素也要做相应修改。
C)对Package3包中的元素做了修改后,需检查Package2包中的元素是否需要做相应修改,如果是,则需继续检查是否Package1包中元素也要做相应修改。
D)对Package3包中的元素做了修改后,需检查Package2包中的元素和Package1包中的元素是否要做相应修改。
答:
C
8、下面包图设计中是否存在问题?
应如何改进。
A)
B
答:
存在问题,出现了循环依赖关系,A图中B不能即依赖C同时还依赖E。
B修改后:
[分析与讨论]
1、结合一个具体例子,分析UML建模过程中包图所起的作用。
;
答:
作用:
1)对语义上相关的元素进行分组;
2)定义模型中的“语义边界”;
3)提供配置管理单元;
4)在设计时,提供并行工作的单元;
5)提供封装的命名空间,其中所有名称必须惟一
实验五状态图
[实验目的和要求]
1、掌握状态的定义和组成部分。
2、掌握UML中状态的表示方法。
3、掌握转换的定义及转换的5要素。
4、了解触发事件、监护条件、动作的定义。
5、掌握阅读和绘制状态图的方法。
[实验内容和步骤]
1、什么叫做状态?
状态由哪五个部分组成?
答:
描述系统里静态事物的动态变化。
状态机由状态、转换、事件、活动和动作5部分组成。
状态图图标分3部分:
名称、内部转换和嵌套状态图。
2、什么是转换?
UML中转换的5要素是什么?
答:
转换表示当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成特定的动作后将发生状态转变,转向另一个目标状态的状态。
5要素:
源状态、目标状态、触发事件、监护条件、动作。
3、触发事件是什么?
可以具体分为哪些事件?
答:
能够引起状态装换的事件。
信号、调用和时间段。
4、改变事件和监护条件有何异同?
答:
改变事件能引起动作的执行及状态的改变,改变监护条件能触发转换。
5、什么叫做转换?
转换可以分为哪几种?
答:
:
转换表示当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成特定的动作后将发生状态转变,转向另一个目标状态的状态。
转换分为:
外部转换、内部转换、完成转换、复合转换。
6、状态和对象的关系是怎样的?
下面描述中哪些是对象,哪些是状态?
支票已付
汽车停在那儿
小王正在工作
答:
支票是对象,已付是状态;汽车是对象,停在那儿是状态;小王是对象,正在工作是状态。
7、说出下面状态的状态名和各种转换、事件。
Lighting
entry/turnOn
do/blinkFiveTimes
eventPowerOff/powerSupplySelf
exit/turnoff
eventSelfTest/defer
状态名:
Lighting
转换:
eventSelfTest/defer
事件:
入口动作entry/turnOn
do/blinkFiveTimes
eventPowerOff/powerSupplySelf
出口动作exit/turnoff
8、说出下面状态图所表达的信息。
答:
状态开始,状态1:
关闭,事件1没水,打开放水,事件2烧水,状态2打开,事件3水开了关闭,回到状态1.分支1烧水时烧坏了,状态结束。
9、说出下面状态图所表达的信息,并指出蓝色部分代表的含义。
答;状态开始,状态1注册课程,状态2课程评价,嵌套状态图1:
开始,状态实验1,进入实验室,事件1完成实验,实验2,完成实验。
嵌套状态2:
实验室团队项目,事件项目完成,结束。
嵌套状态3:
开始,状态考试,事件1考试及格,事件2考试不及格,课程不通过,补考。
3个嵌套状态后,课程通过。
10、根据下面状态图回答问题。
上图是一个表示电梯系统的状态图,该系统中Controller类和Motor类的详细定义如下图所示:
根据类图,完成上面状态图中A,B,C,D,E,F处的内容。
答:
A是0,B是timeout,C是goToFloor<2,D是Motor.moveDown(),E是Motor.moveUp(),F是Motor.stop()
11、某销售POS机工作流程如下:
当客户到收银台后,收银员逐一输入用户购买的商品,然后计算总金额,等待用户付款,确定支付成功之后,完成收银,等待下一个用户。
请为其画出对应的状态图。
[分析与讨论]
1、讨论思考状态图在UML建模中可以起到什么样的作用。
答;状态图一般用于对系统中的某些对象,比如类,用例和系统的行为建模。
它通过建立类对象的生存周期模型来描述对象随时间变化的动态行为。
2、思考什么样的情况下适合引入状态图进行建模。
答:
系统分析人员在对系统进行建模时,最先考虑的是基于状态之间的控制流,因为系统对象中的状态变化最易发现和理解。
这样的情况下引入状态图进行建模比较好。
实验六活动图
[实验目的和要求]
1、掌握活动的概念以及表示方法。
2、掌握活动图中个元素表示的意义和表示方法。
3、掌握分支、监护条件、分岔、汇合和泳道的概念。
4、掌握阅读和绘制活动图的方法。
[实验内容和步骤]
1、什么是活动?