您好,欢迎访问三七文档
一、为什么要学习UMLUML是UnifiedModelingLanguage(统一建模语言)的简称。UML是对软件密集型系统中的制品进行可视化、详述、构造和文档化的语言。制品{Artifact}是指软件开发过程中产生的各种各样的产物,如模型、源代码、测试用例等。UML建模可以达到以下目的:使用模型可以更好地理解问题使用模型可以加强人员之间的沟通使用模型可以更早地发现错误或疏漏的地方使用模型可以获得设计结果模型为最后的代码提供依据二、UML的历史1997年,OMG组织(ObjectManagementGroup对象管理组织)发布了统一建模语言(UnifiedModelingLanguage,UML)。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样。2003年,UML已经获得了业界的认同。在所见过的专业人员的简历中,75%都声称具备UML的知识。然而,在同绝大多数求职人员面谈之后,可以明显地看出他们并不真正了解UML。通常地,他们将UML用作一个术语,或对UML一知半解。大家对UML缺乏理解的这种状况,促进我撰写这篇关于UML1.4的快速入门文章。当阅读完本文时,您还不具备足够的知识可以在简历上声称自己掌握了UML,但是您已具有了进一步钻研该语言的良好起点。三、UML的特点UML的主要特点包括:统一的标准面向对象。UML是支持面向对象软件开发的建模语言。可视化、表现能力强独立于过程,UML不依赖于特定的软件开发过程。概念明确,建模表示法简洁,图形结构清晰,容易掌握和使用。四、UML中的视图UML中的视图包括用例视图(UseCaseView)、逻辑视图(LogicalView)、实现视图(ImplementationView)、进程视图(ProcessView)、部署视图(DeploymentView)等,这5个视图被称作”4+1”视图.如下图所示:逻辑视图。逻辑视图关注功能,不仅包括用户可见的功能,还包括为实现用户功能而必须提供的辅助功能模块;它们可能是逻辑层、功能模块等。开发视图。开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件。开发视图和逻辑视图之间可能存在一定的映射关系:比如逻辑层一般会映射到多个程序包等。处理视图。处理视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题。物理视图。物理视图关注目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。五、UML建模工具市面上UML建模工具很多,比较流行的有RationalRose,MicrosoftVisio、EnterpriseArchitect、VisualUML等。《UML建模-面向对象设计》系列文章使用的UML建模工具是EnterpriseArchitect7.0,此工具还是比较好用的。六、UML的应用领域UML具有很广泛的应用领域,其中最常用的是为软件系统建模,主要领域有:企业信息系统、银行金融系统、电信、交通、国防、航空、零售领域、科学计算、分布式的基于Web的服务。UML还可以用来描述其他非软件系统,比如一个机构的组成和机构的工作流程等等。七、UML的构成《UML建模-面向对象设计》系列文章描述了常见的一些UML图,主要包括了用例图(UseCaseDiagram)、类图(ClassDiagram)、活动图(ActivityDiagram)、时序图(SequenceDiagram)、状态图(StatechartMachineDiagram)、部署图(DeploymentDiagram)、业务处理模型(BusinessProcessModel)、数据建模(DataModelingDiagram)等等。1如何书写UseCase什么是UseCase用例描述文档的书写是系统分析人员对用户需求的深刻理解的体现。是后期时序图和实际开发的重要依据。也可以对作为项目估算的依据,以及根据UC复杂度和开发周期来衡量开发人员的工作效率。因此UC的书写规范及其重要,就工作用的一些经验,比如书写格式、书写内容及其注意事项与大家分享。大纲图:一、前期准备对用户的问题要有非常深刻完善的理解确保能够解决用户的所有问题把用户的需求真正地反应到商业模型对以后的设计和开发过程提供说明和框架根据需求生成UI界面二、UseCase内容首先有用例名称:一般是模块名称或者模块中功能点的名称。其次文档变更记录(RevisionHistory),具体内容如下:1、基本描述(BriefDescription)描述用例在系统中的作用。比如此用例的使用者是谁、使用者所要做的操作。2、前置条件(Precodition)描述该用例执行前所要满足的条件。比如用例B执行前,必须先执行A,则用例的前置条件是执行A。3、事后保证(PostCodition)此用例执行完毕后的条件4、主要流程(BasicFlows)用户操作该用例的基本流程,是后期时序图的主要参考5、选择性流程(AlternativeFlows)在操作主要流程过程中,出现的一些分支流程,是后期时序图的主要参考6、特别需求(SpecialRequirement)对一些细微功能点进行描述,比如用户身份验证规则、订单号码产生规则、是否需要SSL加密等等7、使用界面(UserInterface)美工根据需求制作的UI,及其对UI中栏位进行的说明。8、附加资讯(AdditionInformation)一些商务逻辑的描述,可以把系统逻辑试图(LogicView)放到这里三、总结在阅读UC的过程中主要遇到以下问题“基本流程和选择性流程描述的不够清楚或者不够详细”的问题,主要是因为系统分析人员对需求理解的不够透彻,分析的不够彻底。2、设计阶段如何画用例视图(Use-CaseView)一、概述用例试图描概括了用例中角色和系统之间的关系,描述了系统功能需求,角色和系统的交互以及系统的反应。会员具有浏览商品类别、根据关键字产讯商品和选择商品加入购物车的功能。二、术语解释1、Extends用例扩展关系扩展关系一般用来描述一个元素延伸为另外一种行为。UseCase中的扩展表示一个UC有可能扩展到另外一个UC的功能。UseCase中的扩展通常暗示一个选择性流程。2、Include用例包含关系包行关系表示源元素包行目标元素的行为,UC中的包含关系就是一个UC中包行另外一个UC的行为功能。用包行关系可以防止在多个UC中同时定义共同的功能模块,有些像委托delegation3、角色(Actor)系统中的用户根据系统分为多个角色,每个角色都会与系统有交互。一个用户可以具有一个或者多个角色。系统中用到的角色如果细分,可以分为主要角色和辅助角色比如:在电子商务网站中主要角色有供应商、前台会员、系统管理员等等;辅助角色有EmailSender、物流系统、金流系统等等。三、如何画UseCase用例视图Note:设计工具是EA(EnterpriseArchitect7.0)假设目前的功能需求是:A、供应商需要填写Form表单提报商品B、供应商通过导入CSV文档提报商品C、商品开发人员需要对供应商提报的是商品进行审核1、新建工程【File】-【NewProject】-填写工程名称:Example.eap2、新建UseCaseView用例视图右击上面新建的Project-选择【NewView】-弹出对话框,选择【UseCse】如下图单击【OK】,在Model工程下,这样就新建了一个Package。右击Package【商品提报上架】-选择【Add】-选择【AddDiagram】,如下图所示弹出如下对话框:选择【UMLBehavioral】-UseCase,单击【OK】这样,一个空的UseCase新建完成。接下来我们需要向空的UseCase添加内容。3、根据业务需求画UseCase视图Note:从左侧的ToolBox工具栏中选择一些UseCase的元素,直接拖曳左边的Element,到右边的工作区,就可以把Element放到咱们的UseCase试图中。A、拖曳两个Actor元素到工作区,分别命名为“供应商”“商品开发人员”B、拖曳三个UseCase元素到工作区,分别命名为“商品提报”“CSV档导入商品”“商品审核”如下图所示:C、通过关联关系链接角色与系统功能,如下图:至此,商品提报场景的UseCase图已经画完。一个UseCase视图会对应一个或者多个UseCase用例。关于什么是UseCase请参照《需求阶段如何书写UseCase》四、UseCase在实际项目中的组织结构这是一个使用UC描述的系统需求功能目录图,每一个UC描述了Actor使用使系统时,与系统的交互行为。五、总结用例试图描概括了用例中角色和系统之间的关系,描述了系统功能需求,角色和系统的交互以及系统的反应。是客户和开发人员全貌理解项目需求功能比较好的一个方式,也是后续功能迭代的依据和方向。3、类与类之间的关系图(ClassDiagram,UML图)一、简介类是对象的集合,展示了对象的结构以及与系统的交互行为。类主要有属性(Attribute)和方法(Method)构成,属性代表对象的状态,如果属性被保存到数据库,此称之为“持久化”;方法代表对象的操作行为,类具有继承关系,可以继承于父类,也可以与其他的Class进行交互。类图展示了系统的逻辑结构,类和接口的关系。二、类的构成类主要有属性和方法构成。比如商品属性有:名称、价格、高度、宽度等;商品的方法有:计算税率,获得商品的评价等等。如下图三、类之间的关系(Relationship)关联(Association)两个相对独立的对象,当一个对象的实例与另外一个对象的特定实例存在固定关系时,这两个对象之间就存在关联关系。1、单向关联A1-A2:表示A1认识A2,A1知道A2的存在,A1可以调用A2中的方法和属性场景:订单和商品,订单中包括商品,但是商品并不了解订单的存在。类与类之间的单向关联图:C#代码:PublicclassOrder{PublicListProductorder;PublicvoidAddOrder(Productproduct){order.Add(product);}}PublicClassProduct{}代码表现为:Order(A1)中有Product(A2)的变量或者引用2、双向关联B1-B2:表示B1认识B2,B1知道B2的存在,B1可以调用B2中的方法和属性;同样B2也知道B1的存在,B2也可以调用B1的方法和属性。场景:订单和客户,订单属于客户,客户拥有一些特定的订单类与类之间的双向关联图C#代码PublicclassUser{PublicListOrderGetOrder(){}returnnewListOrder();}PublicClassOrder{PublicUserGetUserByOrderID(stringOrderId){ReturnnewUser();}}3、自身关联同一个类对象之间的关联类与类之间自身关联图4、多维关联(N-aryAssociation)多个对象之间存在关联场景:公司雇用员工,同时公司需要支付工资给员工类与类之间的多维关联图:5、泛化(Generalization)类与类的继承关系,类与接口的实现关系。场
本文标题:UML 建模
链接地址:https://www.777doc.com/doc-6132046 .html