第6章统一建模语言UML与RationalRose工具--面向对象的实用拐杖内容概览统一建模语言UML概述RationalRose基本应用用例图静态视图动态图活动图时序图协作图基于UML的图书管理信息系统设计RUP模型统一软件开发过程模型---新型软件生命周期模型统一开发过程(RationalUnifiedProcess,RUP)是一套面向对象的软件工程方法。统一软件开发过程模型,集成了许多软件开发模型的优点,是一种综合了瀑布模型,增量模型,演化模型,快速原型模型优点的混合模型。具有很好的可操作性和实用性,是目前最有效的软件开发过程模型。RUP的二维开发模型传统的瀑布开发模型是一个一维的模型,开发过程被划分为多个连续的阶段。在RUP中,软件开发生命周期根据时间和RUP的核心工作流划分为二维空间。横轴表示项目的时间维,纵轴以内容来组织为自然的逻辑活动。RUP的二维开发模型6.1统一建模语言UML概述统一建模语言UML是绘制软件蓝图的标准语言,可以对软件系统产品进行可视化、详述、构造和文档化。UML在实际软件项目开发中,可以用于构造各种类型系统的业务模型和软件模型。UML简介UML的全名:UnifiedModelingLanguage统一建模语言UML是Booch,Rumbaugh和Jacobson三位著名的研究面向对象方法的计算机专家的研究成果UML已被OMG(ObjectManagementGroup)采纳,作为国际标准。UML是一种用于对软件系统进行建模的语言,独立于软件开发过程,不是一门程序设计语言UML发展历程6.1.1UML的内涵UML是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统工件的文档。它记录了与被构建系统有关的决策和理解,可用于对系统的理解、设计、浏览、配置、维护及控制系统的信息。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域及各种工具,旨在统一以往建模技术,吸收当今软件开发的最佳方案从而形成一种标准的方法。需要说明的是,UML是一种建模语言,而不是一种方法。从原理上讲,任何方法都应由建模语言和建模过程两部分构成。其中建模语言提供了这种方法中用于表示设计的符号(通常是图形符号);建模过程则描述进行设计所需要的步骤。6.1.2UML的组成及应用1.UML的模型元素UML定义了两类模型元素:一类是用于表示模型中的某个概念,如类、对象、构件、用例、节点、接口、包和注释等;另一类是用于表示模型元素之间相互连接的关系,其中主要有:关联、泛化、依赖和聚集等。类属性操作属性操作对象状态用例节点接口包组件依赖关联泛化聚集6.1.2UML的组成及应用2.UML的模型图UML是用来描述模型的,即描述系统的结构或静态特征,以及行为或动态特征。为了能支持从不同角度来考察系统,UML定义了五类共9种模型图。第一类是用例图,它从用户角度描述系统的功能,并指出各功能的操作者。第二类是静态图,包括类图、对象图和包图。第三类是行为图,描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图。第四类是交互图,描述对象间的交互关系,包括顺序图和协作图。第五类是实现图,包括构件图和配置图。6.2RationalRose基本应用6.2.1RationalRose简介RationalRose是由美国的Rational公司开发的、面向对象的可视化建模工具。利用Rose工具,可以建立用UML描述的软件系统模型,它支持UML中的用例框图、活动框图、序列框图、协作框图、状态框图、组建框图和布局框图等。而且通过其正向和逆向转出工程代码的特性,可以支持C++、Java、VisualBasic和XMLDTD的代码生成和逆向转出工程代码。我们以Rose2003为基础,掌握其进行UML建模的基本操作。13RationalRose的作用整个开发团队可以使用用况图,来获得一个系统高层次的视图,并且可以协商项目的范畴;项目经理可以使用用况图和文档,把项目分解成便于管理的多个模块;系统分析员和客户在看到用况规格描述文档的时候,就可以明白系统将会提供什么样的功能;技术编写者在看到用况规格描述文档时,就可以着手编写用户手册和培训计划;系统分析员和软件开发者在看到时序图和协作图时,就可以明白整个系统的逻辑流程、对象以及对象之间的消息;14RationalRose的作用质量检测员可以使用用况文档、时序图、协作图获得测试脚本所需要的信息;软件开发人员使用类图和状态图,可以获得系统模块的详细视图以及模块之间的关系;部署人员在使用组件图和部署图时,就可以明白哪些是可执行文件或DLL文件,以及其他的一些组件是如何创建的,这些组件该部署在网络中哪些地方;整个团队使用Rose模型,就可以确定从需求到编码的整个过程,并且从编码到需求这个逆过程也是可以追踪的。Rose建模环境Rose提供了一套十分友好的界面让用户对系统进行建模。安装完Rose之后,单击“开始”→“程序”→“RationalSoftware”→“RationalRoseEnterpriseEdition”命令选项,则会出现如图所示的界面,选择Rose新模型的应用架构(Framework)界面。开发人员可以选择J2EE,J2SE1.2,J2SE1.3,jfc-11等应用框架进行系统分析和设计。6.2.3RationalRose基本操作启动RationalRose2003•CreateNewModel窗体中给出了许多开发语言的模型向导,开发者可以根据自己所采用的语言来进行选择•如果不需要特定的语言环境,单击Cancel就可以直接进入主界面菜单:集成了系统中几乎所有的操作浏览器:用于在Rose模型中迅速漫游文档窗口:用于查看或更新模型元素的文档工具栏:用于迅速访问常用命令图窗口:用于显示和编辑一个或几个UML图日志窗口:用于查看错误和报告各个命令的结果主菜单和工具栏Rose2003主要菜单任务2Rose2003视图Rose2003主要菜单6.3用例图6.3.1用例图简介用例图是表示用例模型,其基本组成部件是用例、参与者和用例关系。1.参与者参与者是系统、子系统或类发生与外部用户、进程或其他系统的交互。2.用例在系统模型,用例表示主体(功能单元)对外部用户可见的行为。关系功能符号关联参与者与其执行的用例之间的通信路径扩展在基用例上插入附加的行为,基用例并不知道《extend》包含在基用例上插入附加的行为,并显示地描述了该插入《include》用例泛化一般用例和特殊用例之间的关系,其中特殊用例继承了一般用例的特征并增加新特征用例图的内容用例图的内容:参与者用例泛化、扩展和包含关系主角1extends登录参与者用例描述了系统的功能和所提供的服务。面对一个大系统,要列出所有用例的清单常常比较困难,比较简单的方法是先找出系统的参与者,分析每个参与者是怎样使用系统的。使用以下问题有助于发现系统的参与者①谁使用系统?②谁安装系统、维护系统?③谁启动系统、关闭系统?④谁从系统中获取信息,谁提供信息给系统?⑤在系统交互中,谁扮演了什么角色?⑥系统会与哪些其他系统相关联?识别参与者订货系统:客户给销售员发来传真订货,销售员下班前将当日订货单汇总输入系统。谁是系统的Actor?答案:销售员识别参与者寻呼台系统。用户如果预定了天气预报,系统每天定时给他发天气消息;如果当天气温高于35度,还要提醒用户注意防暑。这个叙述里,谁是寻呼台系统的Actor?用户?气温?时间?答案:用户,气温,时间都是Actor识别参与者商品销售系统。顾客通过网络下单之后,系统计算出总计金额,税金,运费,并将数目传递给一个外挂的会计系统,该系统是另外购买的。有几个Actor?答案:顾客(商品销售系统),商品销售系统(会计系统)用例(UseCase)用例是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。参与者和用例分别描述了“谁来做?”和“做什么?”这两个问题。用例用实线的椭圆表示图书管理系统用例识别用例的最好办法就是从分析系统的参与者开始,考虑每个参与者是怎样使用系统。根据下面的一些问题来识别用例:①参与者希望系统提供什么功能;②系统是否存储和检索信息;③当系统改变状态时,是否通知参与者;④是否存在影响系统的外部事件,是哪个参与者通知系统这些外部事件。识别用例Email客户端(如:outlookexpress):A在北京发邮件给深圳的B,系统提醒B”你有新邮件”,B收邮件。参与者:用户(A、B)、时间识别用例论坛的应用:用户可以提问,别人来回答,如果有自己问题被解答的话,就给发问者发一份邮件通知。注意:发邮件这个用例可以是单独的用例,也可以是由回答用例扩展出来的用例用例之间的关系泛化关系包含关系扩展关系泛化(generalization)当多个用例共同拥有一种类似的结构和行为的时候我们可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。泛化举例(一):泛化(generalization)泛化举例(二):包含(include)包含是指基本用例(baseusecase)会用到包含用例(inclusion),具体地讲,就是将包含用例的事件流插入到基础用例的事件流中。包含用例是可重用的用例──多个用例的公共用例。扩展(extend)将扩展用例的事件流在一定的条件下按照相应的扩展点插入到基础用例中。基础用例不必知道扩展用例的任何细节,它仅为其提供扩展点。扩展用例的行为是否被执行要取决于主事件流中的判定点。包含用例与扩展用例的区别①相对于基础用例,扩展用例是可选的,而包含用例则不是。②如果缺少扩展用例,基础用例还是完整的,而缺少包含用例,则基础用例就不完整了。③扩展用例的执行需要满足某种条件,而包含用例不需要。④扩展用例的执行会改变基础用例的行为,而包含用例不会。37用例建模1.创建用例图(1)选定浏览器窗口中的【UseCaseView】;(2)单击鼠标右键,在弹出的快捷菜单中选择【New】;(3)在菜单【New】产生的下级菜单中选择要新建的图——【UseCaseDiagram】。以上步骤如图2-19所示,生成的用况图,如图6-7所示。38用例图用例图的建模符号选择一项添加文本框添加注释将图中的元素与注释相连包参与者用例关联关系依赖和实例化(包括扩展、使用关系等)泛化关系实验1:任务解决ATM终端系统完成以下任务:(1)客户可以通过ATM完成登录、取款、存款、通过信用系统付款、查询余额、修改密码、打印凭证等业务。(2)银行官员登录、修改密码、为ATM添加现金、维护ATM硬件。(3)信用系统启动来自客户的付款创建系统用例模型创建系统用例的第一步是确定系统的参与者。ATM自动取款机系统的参与者包含以下三种:(1)客户(2)银行职员(3)信用系统创建系统用例模型1.客户用例图客户在本系统中可以进行取款、存款、转账、查询余额、修改密码和还款的相关操作。创建系统用例模型2.银行职员用例图银行职员在本系统中能够进行硬件维护、修改密码和添加现金的相关操作。实验1:绘制ATM自动柜员机系统总的用例图ATM自动柜员机系统总的用例图取款存款转账查询余额客户修改密码硬件维护银行官员添加现金信用系统还款实验2:“学生成绩管理信息系统”功能模块如下,分析教师登记成绩业务过程,并建立教师登记成绩用例图6.4静态视图静态视图是UML的基础,是展现系统的静态结构组成及特征,包括类图、对象图和包图。其中,类图描述系统中类的结构,不仅定义系统中的类,表示类之间的关系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。类图和对象图的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某个时间段存在。包图是由包或类组成,用于描述系统的分层结构。1、类图及对象