《可视化建模与UML》实验15指导教案要点资料.docx
《《可视化建模与UML》实验15指导教案要点资料.docx》由会员分享,可在线阅读,更多相关《《可视化建模与UML》实验15指导教案要点资料.docx(14页珍藏版)》请在冰豆网上搜索。
《可视化建模与UML》实验15指导教案要点资料
可视化建模与UML
实
验
指
导
井大电信学院
2015.03
实验一常用建模软件的使用
【实验目的】
1.熟悉常用UML建模工具。
2.熟练掌握RationalRose的基本操作
3.掌握UML规则和相关机制。
4.掌握UML的可见性规则和构造型的作用。
【实验性质】
验证性实验
【实验环境要求】
PentiumII以上微机,Windows2000以上操作系统,RationalRose2003,MicrosoftVisio,网络。
【实验内容和步骤】
一、安装RationalRose2003或其它任意一种UML建模工具。
本项内容实验者根据情况选择并在实验课外完成。
二、练习使用建模工具建立各种UML图形,并对图形进行相应编辑和修改。
认识各种UML关系及可见性符号,并用工具表示出来。
【分析与讨论】
1.总结UML在软件工程中的作用以及使用UML建模的必要性。
2.比较不同建模工具。
【实验导读】
关于RationalRose2003的安装。
RationalRose的安装比较麻烦,通过安装RationalRose2003,并在安装过程中,发现一些问题,解决和理解它。
RationalRose的建模环境:
Rose是个菜单驱动应用程序,用工具栏帮助使用常用特性。
Rose支持九种不同类型的UML图:
UserCase图,CLASS图,Activity图,Sequence图,Collaboration图,Class图,Statechart图.Component图和Deployment图。
Rose界面的五大部分是浏览器.文档窗口.工具栏.框图窗口和日志,如图1-1所示。
浏览器:
用于在模型中迅速漫游;
文档窗口:
用于查看或更新模型元素的文档;
工具栏:
用于迅速访问常用命令;
框图窗口:
用于显示和编辑一个或多个UML框图;
日志:
用于查看错误消息和报告各个命令的结果。
若要了解更详细的知识,请看教材。
Rose模型的四个视图
Rose模型的四个视图是:
UseCase视图.Logical视图.Component视图和Deployment视图。
各个视图的具体功能请参见教材。
图1-1RationalRose界面
实验二需求定义与陈述
【实验目的】
1.了解软件工程的开发过程
2.掌握需求和需求分析的概念
3.掌握需求分析的过程和常用方法
4.掌握需求分析的要点和误区
5.学习如何做需求陈述
【实验性质】
探索型实验
【实验环境要求】
PentiumII以上微机,Windows2000以上操作系统,MicrosoftVisio,Microsoftoffice2003以上,网络。
【实验内容和步骤】
1.软件工程的开发过程分为哪几部分?
2.什么是需求?
需求包括哪几个方面?
3.什么是需求分析?
需求分析有何重要意义?
需求分析可以分为哪几个步骤?
4.进行需求分析的时候要注意哪些要点和误区?
5.在对现行系统的业务流程建模的基础上,确定目标系统的需求,并按照分层的逻辑陈述。
【分析与讨论】
各小组协作讨论修改选定系统的需求陈述。
实验三用例建模
【实验目的】
1.掌握用例与场景的概念。
2.掌握UML用例图的组成.作用以及使用场合。
3.掌握用例与用例之间的各种关系。
4.学习针对具体场景使用用例图进行分析说明的方法。
5.掌握用例描述的概念和基本结构,以及用例描述的作用。
【实验性质】
设计型实验
【实验环境要求】
PentiumII以上微机,Windows2000以上操作系统,RationalRose,MicrosoftVisio,Microsoftoffice2003以上,网络。
【实验内容和步骤】
一.想一想
1.为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理系统。
主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。
该公司小王,通过多次的与潜在客户的交流与沟通,完成了最初的用例模型的开发,下图是一个用例模型的局部:
图3-1物业管理信息系统用例图
小李认为该模型不符合“用例建模”的思想,存在明显的错误。
用200字以内说明错误所在,并说明应该如何修改。
2.图3-2是一个描述保险商务系统的简单用例图。
根据该用例图回答问题。
a)“签订保险单”用例可能涉及到哪几个实体类?
b)现实生活中签订保单的基本流程如下:
客户提出购买需求,保险员根据客户需求选择相应的保险服务,客户阅读保险条款,同意后打印保单样据,客户签字并支付保金,保单开始生效,保险员做相关系统纪录。
如需要根据以上信息,请列举这个用例描述中可能存在扩展事件流。
c)保单管理用例在实际开发过程中可以泛化出若干小用例,列出可能存在的子用例,并且说明这些用例和“保单管理”用例之间关系。
图3-2保险商务系统用例分析图
二.练一练
3.在一个TelephoneSystem(电话系统)中,用户可以使用电话卡或对方付款两种办法来打电话。
1)请画出表示该场景的用例图。
2)在前图的基础上,继续画出可能存在的包含用例和扩展用例。
4.为目标系统建立用例模型。
【分析与讨论】
1.总结用例图的重要作用,讨论并指出哪些场合下可以使用用例图。
2.讨论用例分析技术和结构化分析之间的关系和区别。
3.在使用用例图的时候应该如何划分用例,应注意哪些问题?
4.用例图能表达的信息依然是有限的,如何对每个用例做简单描述?
【扩展导读】
用例图和用例描述共同构成用例模型,以下是有关用例描述的材料阅读,通过阅读学会为选定系统做用例描述。
用例的描述格式(参考模板)
描述项
说明
用例名称
表明用户的意图或用例的用途,如“预订图书”
标识符[可选]
惟一标识符,如“UC1701”,在文档其他地方可用标识符来引用这个用例
用例描述
概述用例的几句话
参与者
与此用例相关的参与者列表
优先级
一个有序的排列,1代表优先级最高
状态[可选]
用例的状态,通常为以下几种之一:
进行中.等待审查.通过审查或未通过审查
前置条件
访问用例前必须满足的条件列表
后置条件
用例完成以后得到满足的条件列表
基本操作流程
描述用例中各项工作都正常进行时用例的工作方式
可选操作流程
描述变更工作方式.出现异常或发生错误的情况下所遵循的路径
被泛化的用例
此用例所泛化的用例列表
被包含的用例
此用例所包含的用例列表
被扩展的用例
此用例所扩展的用例列表
修改历史记录[可选]
关于用例的修改时间.修改原因和修改人的详细信息
问题[可选]
与此用例的开发相关的问题列表
决策[可选]
关键决策的列表,将这些决策记录下来以便维护时使用
频率[可选]
参与者访问此用例的频率,如用户是每日访问一次还是每月访问一次
如:
用例“添加图书”的描述
用例名称
添加图书
标识符
UC0001
用例描述
图书管理员在收到新采购的图书后对之进行入库。
参与者
图书管理员
优先级
1
状态
通过审查
前置条件
图书管理员登录进入系统
后置条件
在库图书数目增加
基本操作流程
1.图书管理员录入图书书目;
2.系统检查图书书目是否已存在;
3.系统为这本图书生成唯一书号(条形码);
4.系统添加新的图书书号。
可选操作流程
系统检查图书书目不存在,系统添加新的图书书目;
被泛化的用例
无
被包含的用例
无
被扩展的用例
无
修改历史记录
张三,定义基本操作流程,2009年3月20日
张三,定义可选操作流程,2009年3月20日
实验四类图和对象图建模
【实验目的】
1.掌握类的定义,类的3要素,UML中类的表示方法。
2.掌握类与类之间的各种关系代表的含义及表示方法。
3.实体类,边界类,控制类,关联类的概念和表示方法。
4.了解对象图。
5.学会对一个系统建立类和对象图并进行相关的描述。
6.掌握类和包图的关系并学会用包来对类分组。
【实验性质】
设计型实验
【实验环境要求】
PentiumII以上微机,Windows2000以上操作系统,RationalRose,MicrosoftVisio,Microsoftoffice2003以上,网络。
【实验内容和步骤】
一、想一想:
1.简述类的属性和方法的可见性有哪些?
UML中如何表示?
2.分析类模型和设计类模型的区别和联系?
二、练一练:
3.已知三个类A.B和C.其中类A由类B的一个实类和类C的1个或多个实类构成.请画出能够正确表示类A,B和C之间关系的UML类图.
4.根据以下描述画出类图,并注明多重性关系:
一个学生可以选修多门课程,也可能没有任何课程;一门课程可以被多个学生选修;一个老师可以教多门课程或者不教课;每门课程至少有一个老师,也可以有多个老师任教;每门课程可以有0或1本教材,每本教材只能用于一门课程。
5.现有一系统需要对商品进行管理,包括添加,删除商品,修改商品信息三项功能,画出系统类图。
(商品信息包括商品编号,商品名称,价格,生产厂商等)
1)如果现在系统需求发生变化,需要能够对损坏商品进行打折,以及可以按照商品的颜色和外形进行查询,则系统类图应该如何修改?
2)根据下面的代码画出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);
}
}
6.下图4-1是一个仓库管理系统的类模型局部,其中IncomeOrder是指入库单,OrderItem是指入库中的每一项,Product则是产品信息。
请指出模型中的错误,说明原因并改正类图。
图4-1仓库管理系统的局部类模型
【分析与讨论】
1.讨论类图在建模过程中的重要作用。
2.总结在设计绘制类图的过程中应注意哪些问题。
3.在下图4-2中最上面的对象的名称是什么?
该图表示的意思是什么?
请绘制出与其相应的类图。
图4-2示例图
4.说明对象图的适用场景以及它的优缺点
【实验导读】
1.注意:
在逻辑视图中创建类,创建的类须指定相应的类的版型,即是边界类.实体类或控制类;类的取名一定要简洁.明了,当类的名字由多个单词构成时,可以由每个单词的首字母构成类名。
2.在分析类模型中要定义类的职责,那么,如何定义类的职责?
例:
已定义的类PersonalPlannerForm有三个职责:
//maintainprofile//prompttocreatenewprofile//submitprofileinformation
具体操作步骤:
1)双击PersonalPlannerForm类,打开Specification窗口;
2)选择Operation标签,在空白窗口中,鼠标右键点击,选择Insert,输入该类的第一个职责,得到图4-3;
3)重复步骤2,为该类添加完所有的操作;
4)重复1-3直到所有类的操作均添加完毕。
图4-3输入类的属性
3.如何创建包,并将类组成包?
◆创建包的具体操作:
A.右键单击浏览器中的Logical视图;
B.选择New/Package;
C.新包取名如Entities;
D.重复前述步骤A~D,创建Boundaries和Control包。
在大学生对DIY手工艺品价位调查中,发现有46%的女生认为在十元以下的价位是可以接受;48%的认为在10-15元;6%的则认为50-100元能接受。
如图1-2所示◆将类组成包
PS:
消费者分析A.在浏览器中,将边界类如PersonalPlannerForm类拖动到Boundaries包;
2003年,上海市人均GDP按户籍人口计算就达到46700元,是1995年的2.5倍;居民家庭人均月可支配收入为14867元,是1995年的2.1倍。
收入不断增加的同时,居民的消费支出也在增加。
2003年上海居民人均消费支出为11040元,其中服务性消费支出为3369元,是1995年的3.6倍。
B.重复上述步骤,把已定义的实体类和控制类分别拖入所属包。
新材料手工艺品。
目前,国际上传统的金银、仿金银制成饰品的销售在逐步下降,与此形成鲜明对比的是,数年以前兴起的崇尚然风格、追求个性的自制饰品--即根据自己的创意将各种材质的饰珠,用皮、布、金属等线材串出的品,正在各国的女性中大行其道。
(一)对“漂亮女生”饰品店的分析
4.WWW。
google。
com。
cn。
大学生政策2004年3月23日
朋友推荐□宣传广告□逛街时发现的□上网□
(2)文化优势
民族性手工艺品。
在饰品店里,墙上挂满了各式各样的小饰品,有最普通的玉制项链、珍珠手链,也有特别一点如景泰蓝的手机挂坠、中国结的耳坠,甚至还有具有浓郁的异域风情的藏族饰品。
300元以下□300~400元□400~500□500元以上□
实验五UML静态模型分析(含包图)
【实验目的】
1.完善系统静态模型,在分析类中增加属性和操作。
2.进一步掌握类和包图的关系并学会用包来对类分组。
【实验性质】
设计型实验
【实验环境要求】
PentiumII以上微机,Windows2000以上操作系统,RationalRose,MicrosoftVisio,Microsoftoffice2003以上,网络。
【实验内容和步骤】
1.根据下图判断下面哪句话正确的说明了包之间的依赖关系。
A)对Package1包中的元素做了修改后,需检查Package2包中的元素和Package3包中的元素是否要做相应修改。
B)对Package1包中的元素做了修改后,需检查Package2包中的元素是否需要做相应修改,如果是,则需继续检查是否Package3包中元素也要做相应修改。
C)对Package3包中的元素做了修改后,需检查Package2包中的元素是否需要做相应修改,如果是,则需继续检查是否Package1包中元素是否也要做相应修改。
D)对Package3包中的元素做了修改后,需检查Package2包中的元素和Package1包中的元素是否要做相应修改。
2.下面包图设计中是否存在问题?
应如何改进。
A)
B)
【实验导读】
任务1:
创建一个新的RationalRose模型。
任务2:
设置
选择Tools/Options——Diagram标签——选择ShowStereotypes复选框——选择ShowAllAttributes和ShowAllOperations复选框——取消SuppressAttributes和SuppressOperations复选框。
任务3:
创建包
右键单击浏览器中的Logical视图——选择New/Package——新包取名如“Entities”——重复前面步骤,创建Boundaries和Control包。
任务4:
创建MainClass框图
双击浏览器中Logical视图内的MainClass框图——将Entities包从浏览器中拖到框图上——将Boundaries和Control包从浏览器中拖到框图上。
任务5:
创建class图,“AddItemtoShoppingCart”使用案例中所有类的Class框图
Logical视图——New/ClassDiagram——取名如“AddItemtoShoppingCart”——双击打开“AddItemtoShoppingCart”Class图——选择类工具栏按钮,并将每个类加到类图中。
任务6:
将版型加进类中
右键单击类图中的一个类——选择OpenSpecification——在版型(Stereotype)字段中选择或输入Boundary——OK右键单击框图中的CartMgr类——重复前面步骤,可将所有类指定版型分别为Control、Entity版型。
任务7:
将类组成包
在浏览器中,将所有版型为Boundary的类拖动到Boundaries包;将所有版型为Control的类拖动到Control包;将实体类均拖动到Entities包。
任务8:
将Class图加进每个包
在浏览器中,右键单击Boundaries(Control,Entities)包——New/ClassDiagram——取名如Main——双击打开新类图——将边界类(控制类、实体类)从浏览器拖到框图中——关闭类图
下面的实验是要求掌握如何寻找类属性和操作,再增加类属性和操作的细节,接着要在Class框图中显示属性和操作。
最后要求在Interaction框图中将操作映射到消息。
属性
属性是与类相关联的信息。
例如Company类可能有属性Name、Address和NumberofEmployees。
Rose中可以对模型中的每个类加进一个或几个属性。
寻找属性
属性的来源有许多。
首先可以查阅使用案例文档,寻找事件流中的名词。
有些名词是对象或类;有些是角色;有些则是属性。
例如,从下列事件流:
“Theuserenterstheemployee’sname,address,socialsecuritynumber,andphonenumber”可以看出,Employee类有属性Name、Address、SSN、Phone。
另一个来源是查看需求文档。
需求中可能会介绍系统要收集哪些信息。
收集的信息就是类的属性。
最后,可以检查数据库结构。
增加属性
每个属性有三条主要信息:
属性名、数据类型和初始值。
增加属性的方法有三种,可以直接将属性加进Class框图,用浏览器增加属性或用类规范窗口增加属性。
删除属性
Rose中删除属性的最简单方法是通过浏览器,但也可以用Class框图删除。
任务9:
设置
1.复选ShowVisibility框、ShowStereotypes框、ShowOperationSignatures框、ShowAllAttributes和ShowAllOperations框;
2.确保SuppressAttributes和SuppressOperations框没有被选中;
3.选择Notations标签,确保取消VisibilityasIcons框;
任务10:
增加操作
1.在浏览器中找到AddItemtoShoppingCart类框图。
2.对CartInterface类,增加新操作:
AddItem(ItemNo:
Long):
Boollean
3.重复第2步,将下列操作加进相应类中:
•在CartMgr中增加AddItem(ItemNo:
Long):
Boollean
•在ProductMgr中增加GetProduct(ItemNo:
Long):
Product
•在CartCollection中增加AddItem(NewItem:
Product):
Boolean
•在ProductCollection(FindProduct)中增加FindProduct(ItemNo:
Long):
Product
任务11:
增加属性
对Product类输入新属性:
productID:
Long、productDescription:
string、productUnitPrice:
Double。
任务12:
保存结果