UML及其建模工具的使用.ppt_第1页
UML及其建模工具的使用.ppt_第2页
UML及其建模工具的使用.ppt_第3页
UML及其建模工具的使用.ppt_第4页
UML及其建模工具的使用.ppt_第5页
已阅读5页,还剩212页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UML及其建模工具的使用,2,内容提要,一、软件工程方法学二、UML的基本概念静态建模动态建模物理架构建模步骤三、Rose的使用四、三个实例五、Java代码生成六、Rational统一过程,1.瀑布模型(线形顺序模型),可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义阶段,开发阶段,维护阶段,一.软件工程方法学,按照传统瀑布模型开发软件的特点,1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。,2.原型模型(快速原型法),建造/修改原型,用户测试运行原型,听取用户意见,原型范型,采用原型模型的软件生存周期,分析定义系统需求,生成原型,系统设计,程序设计,编码,测试,运行和维护,原型化,含原型化的软件生存期,7,技术发展背景1,面向对象的含义面向对象技术回顾UML的产生,8,技术发展背景2面向对象的含义,面向对象中有几个非常重要的概念:封装(encapsulation)信息/实现的隐藏(information/implementationhiding)状态保持(stateretention)对象标识(objectidentity)消息(message)类(class)继承(inheritance)多态性(polymorphism)一般性(generality),9,技术发展背景3面向对象的含义,封装,将属性和操作包装成一个单元,使得对状态的访问和修改只能通过封装提供的接口进行。信息/实现的隐藏,将某些属性或方法限制在封装内部使用,限制外部的可见性。状态保持,对象能够保持状态,可以用于后续的处理。对象标识,每个对象可以作为软件实体被标识和处理,每个对象都有一个对象标识符(objectidentifierOID)。消息,对象间发送请求的载体。,10,技术发展背景4面向对象的含义,类,类是对象的类型(模版),对象是类的实例。继承,子类隐式使用超类(或父类)的属性和操作。多态性,子类覆盖(overriding)父类的方法,它和重载(overloading)的区别在于重载是在同一个类中定义,利用参数的不同来进行动态绑定(dynamicbinding)。一般性,类的定义是参数化的或模版化的,提高了定义的通用性。,11,技术发展背景5面向对象技术回顾,面向对象技术是许多人历经多年研究积累的产物。类的概念,是面向对象的重要组成部分。Smalltalk,提出许多面向对象技术的核心概念,如:消息和继承。Dijkstra的软件正确性理念,提出了用抽象层构造软件的观点。ADT抽象数据类型,奠定面向对象的基础,支持信息的隐藏。Ada语言,提出了一般性和包两个概念。C+语言,最广泛使用的面向对象的语言。Eiffel语言,融合了许多最佳的计算机科学思想和面向对象思想。,12,为什么对面向对象方法感兴趣?,面向对象方法的主要优点:自然性追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。软件复用可复用性(可重用性)reusebility可扩展性可管理性,13,可复用性(可重用性)面向对象技术允许复用的不仅仅是代码,通过面向对象技术,我们可以复用需求、分析、设计、测试计划、用户界面以及体系结构等等,事实上,软件工程生存期中的每个部分都可以复用。,14,传统系统分析:面向功能,把系统看成一组功能OOA:把问题当作一组相互作用的实体,并确定实体间关系,15,面向对象技术是一个有全新概念的开发模式,其特点是:(1)方法是对软件开发过程所有阶段进行综合考虑而得到的;(2)从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性;(3)将OOA(分析)、OOD(设计)、OOP(实现)集成到生存期的相应阶段.,16,开发方法的组合,17,OO方法的开发过程,OO方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的“部件”都是类,在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。,18,对象模型对象模型表示静态的、结构的系统数据的性质。对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。OO方法强调围绕对象而不是功能来构造系统。,19,对象(object),现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。对象具有的含义:在现实世界中:是客观世界中的一个实体在面向对象程序中:表达成计算机可理解、可操纵、具有一定属性和行为的对象在计算机世界中:是一个可标识的存储区域,20,面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。,面向对象=对象+类+继承+消息通信,面向对象的主要特征:封装性(Encapsulation)继承性(Inheritance)多态性(Polymorphism),21,类(class),具有共同属性和行为的对象的抽象类与对象的关系类是对象的抽象对象是类的实例,类,对象,22,对象、实体与类,对象,实体,类,抽象数据类,计算机世界,现实世界,计算机逻辑的实现,影射,抽象,实例化,抽象,概念世界,23,封装,封装是软件开发方法的重要原则,有两个涵义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。尽可能隐蔽对象的内部细节(信息隐蔽),24,传统方法数据与过程是分离的,过程1,输入,输出,过程2,过程3,数据实体,属于该对象的数据,对象,处理数据的方法,消息,消息,对象把数据和处理数据的方法封状成一个单元,25,传统方法和面向对象方法的比较,传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出,面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息,26,继承(继承性inheritance),继承性是父类和子类之间共享数据和方法的机制继承性具有传递性继承性包括单继承和多重继承,子类,继承部分,增加部分,父类,共性部分,27,继承性作用,使软件系统具有开放性更好地进行抽象与分类增强代码的重用率,28,多态(多态性),不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态多态的效果用户发送一个通用的消息,而实现的细节则由接收对象自行决定实现机制:重载(override),29,多态性的作用,增强了操作的透明性,可理解性和可扩展性增强了软件的灵活性和重用性,30,消息(message),消息对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明消息内容通常包含接收方及请求接收方完成的功能信息发送方发出消息,请求接收方响应接收方收到消息后,经过解释,激活方法,予以响应,31,面向对象的软件工程对传统软件工程的改进:1、快速原型法(试用反馈修改,多次反复)2、面向对象的软件工程:面向对象的方法(基本概念:对象、类、消息、继承、多态性、封装)优点:思维一致、稳定性好、可重用性好、可维护性好,32,两种技术的比较1、这两种途径并不是相互排斥的,相反,它们是相互促进相互补充的。工作要素:确定“做什么”、确定“怎样做”,“实现”,“测试”2、传统的生命周期方法学强调:需求分析的重要性、强调软件文档的重要性,适用于需求模糊或者需求不稳定的系统。3、面向对象方法学:工作重点在分析和设计阶段,阶段的划分是十分模糊的,通常在分析、设计和实现等阶段多次迭代。既适用于线性的瀑布开发模型,也适用于快速原型法。,33,软件系统的建模及建模原则,计算机软件是“产品”,因为它具有产品特征:1)软件产品为用户提供功能;2)开发者和使用者是脱离的;3)软件产品具有质量的概念;4)软件产品具备完备的用户手册技术文档;5)软件产品的生产过程具有工业化生产的特点;6)开发团队协同工作,软件产品需要使用工具,技术可重用,质量必须稳定,不应在不同版本的软件之间产生质量不稳定。,34,在解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象。,35,软件建模基本目的有四点:规范(specifying)、可视化(visualizing)、建造(constructing)和建档(documentation)。(1)规范。在分析和设计阶段为软件系统的各个组成部分规定其功能、结构和对外接口。(2)可视化。有助于软件规范的表达和交流。,36,(3)建造(生成源代码)。完整定义的软件规范可以实现通过模型向源代码的映射,支持软件系统的建造。(4)建档。完整定义的软件模型是反映软件系统的结构和实现的重要技术资料,可以作为技术档案保存,以便后续产品或相关产品能有效地重用其中的成熟技术。,37,2.建模的原则(1)准确的原则模型必须准确地反映软件系统的真实情况。模型必须准确,意味着在软件开发的整个周期内模型必须和产品始终保持一致。(2)分层的原则在建模的过程中,必须有不同的模型,以不同的抽象程度,反映系统的不同侧面。在软件构筑的不同阶段,不同的开发人员如:投资者、管理者、设计者、程序员、测试者和使用者看待软件的侧重面有所不同。因此,软件系统的建模需要不同的模型以反映系统的不同侧面。如,一类模型描绘系统的外部边界和行为,另一类模型描绘系统的内部逻辑关系。,38,(3)分治的原则不可能单独用一个模型来反映整个系统的任何侧面。软件系统是复杂的,对于软件模型的任意一个侧面不可能用一个模型来反映所有内容,需要把问题分解为不同的子模型,分别处理这些模型,相对独立但又互相联系,综合起来构成了此侧面的一个完整的模型。(4)标准的原则模型必须在某种程度上是通用的。建模的基本目的是交流,一个开发队伍内部的交流,同一软件的不同时期的版本的开发队伍的交流,不同软件的开发队伍之间的交流,以实现最大程度的软件复用。交流需要语言,语言是通用的、标准的。,39,二、统一的建模语言方法由Rumbaugh、Booch、Jacobson提出的统一建模语言(UnifyModeingLanguage简称UML),UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。,40,UML的产生,1988年到1992年是面向对象方法学蓬勃发展的时期,人们从各自的经历和软件开发的经验提出了各种面向对象的开发方法,代表的有:SallyShlaer和SteveMellor以信息模型化方法作为基础,并为目标系统增设了状态模型和过程模型;PeterCoad和EdYourdon则在信息模型化、面向对象的程序设计语言和基于知识的系统的基础上,建立了他们的OOA和OOD,主要工具是类与对象图、对象状态图和服务图;HP公司的Fusion开发方法。,41,UML的产生,Wirfs-Brock的职责驱动设计(Responsibility-DrivenDesign),也称类-职责-协作Class-Responsibility-Collaboration(CRC)cards,用类所承担的责任来描述系统,利用责任把封装的概念带到分析与设计活动中去;GradyBooch在Rational软件公司开发Ada系统作了许多构件(Component),并以此由底向上构筑大型软件系统,即OOD方法;JimRumbaugh在通用电子(GeneralElectric)领导一个研究小组,提出了对象建模技术(OMT)方法,通过面向对象的三种模型:对象模型、动态模型和功能模型,从不同角度对系统进行描述;,42,UML的产生,IvarJacobson和他的Objectory公司开发了OOSE(ObjectOrientedSoftwareEngineering)面向对象的软件工程,利用UseCases来表达系统要求。1994年任职于Rational公司的GradyBooch首先联合JimRumbaugh加盟Rational软件公司开始了统一OO方法学和工具的历程。以融合Booch和OMT方法的UML开发开始。1995年10月UML0.8发布。1995年秋,IvarJacobson和他的Objectory公司加盟Rational,UML中加入了OOSE方法,使其有可能最集中地包容当今最适用的各种OO方法。1996年,UML0.9版本发布,1997年1月,UML1.0被提交给OMG组织,作为软件建模语言的候选,1997年11月7日,UML1.1正式被OMG组织采纳为业界标准。UML经历了1.2,1.3,1.4,目前UML2.0版本正在制定。,43,Rational三剑客,JimRumbaugh,GradyBooch,IvarJacobson,44,UML的基本概念1,UML简介UML的目标UML概念范围,45,UML的基本概念2UML简介,UML(UnifiedModelingLanguage)是一种构建软件系统和文档的通用可视化建模语言。UML能与所有的开发方法一同使用,可用于软件开发的整个生命周期。UML能表达系统的静态结构和动态信息,并能管理复杂的系统模型,便于软件团队之间的合作开发。UML不是编程语言,但支持UML语言的工具可以提供从UML到各种编程语言的代码生成,也可以提供从现有程序逆向构建UML模型。,46,UML的基本概念3UML简介,UML并不是万能的,它是一种离散的建模语言,对于特定的领域,比如:GUI、VLSI电路设计或基于规则的人工智能,用特定的语言和工具可能更合适。,47,UML的基本概念4UML的目标,最重要目标:UML是所有建模人员可以使用的通用建模语言。它包含主流建模方法的概念,从而可以替代现有的软件分析和设计方法,比如:OMT,Booch,OOSE等。UML不是完整的开发方法,它不包括逐步的开发流程,但它提供所有必要的概念,具备足够的表达能力。UML的另一个目标是:能尽量简洁地表达系统的模型。,48,UML的目标是:1易于使用,表达能力强,进行可视化建模;2与具体的软件开发过程无关,可应用于任何软件开发的过程;3简单、可扩展。扩展无需对核心概念进行修改;4为面向对象的设计和开发过程中涌现出的高级概念(例如协作、框架、组件)提供支持;5吸收当代最好的软件工程实践经验;6可升级,具有广阔的适用性和可用性;7有利于面向对象工具的市场成长。,49,UML语言包含三方面内容:,1UML基本图素:它是构成UML模型图的基本元素。2UML模型图:它由UML基本图素按照UML建模规则构成。3UML建模规则:UML模型图必须按特定的规则有机地组合而成,从而构成一个有机的、完整的UML模型图(well-formedUMLdiagram)。,50,一、基本图素分为四类:,结构模型图素、行为模型图素、成组模型图素、其他模型图素、公用机制。,51,UML的基本概念5UML概念范围,UML概念可以划分为以下范围:系统需求静态结构动态行为交互行为物理实现各种图之间的关系模型组织扩展机制,52,UML的基本概念6UML概念范围,系统需求用例视图(UseCasesView)从外部用户的角度来描述系统的行为,它将系统功能划分为对用户有意义的事务,这些事务被称为用例,用户被称为执行者,用例视图也就是描述活动者在各个用例中的参与情况,它指导所有的行为视图。,53,UML的基本概念7UML概念范围,静态结构:静态视图(StaticView),一个模型必须首先定义各种事物的内部特征和相互之间的关系,应用概念建模成类,类描述事物的属性和以及在这些属性上的操作。类之间可以存在不同的关系,比如泛化(继承)、关联和依赖等,静态视图表示成类图,静态视图在某一时刻的快照称为对象图。,54,UML的基本概念8UML概念范围,动态行为:状态机视图(StateMachineView),通过对每个类的对象的生命周期进行建模,描述了对象时间上的动态行为。状态机是由状态和迁移组成的图,状态机通常附属于类,描述类实例对接受事件的响应。活动视图(ActivityView)是利用状态机对运算和工作流进行建模的特殊形式。活动图的状态代表了运算执行的状态,而非一般对象的状态,活动图和流程图很相似,不过它支持并发。,55,UML的基本概念9UML概念范围,交互行为:交互视图(InteractionView),对象通过交互来实现行为,交互视图通过协作来进行建模,协作具有结构和行为两个方面,结构包含为行为方面而定义的一系列角色和关系,行为方面是绑定于角色的对象间的一系列交换的消息,这些消息在协作中称为交互,消息序列可用两种图来表示:顺序图(重点在消息的时间顺序)和协作图(重点在交换消息的对象间的关系)。,56,UML的基本概念10UML概念范围,物理实现:物理视图(PhysicalView),许多系统模型独立于最终的实现,在实现方面,必须充分考虑系统的重用性和性能。UML有两种视图来表示系统的实现:实现视图和部署视图,实现视图将可重用的系统片段打包成组件,部署视图描述系统运行时资源的物理分布,这些资源称为结点。,57,UML的基本概念11UML概念范围,各种图之间的关系静态视图(类图,对象图),物理视图(实现视图,部署视图)是描述系统的静态结构。用例图是描述系统的外部视图。活动图描述系统的外部/内部视图。交互视图(顺序图,协作图)描述系统的内部视图。状态图描述单个类的动态行为。,58,UML的基本概念12UML概念范围,模型组织模型管理视图(ModelManagementView),任何大系统必须划分为较小的单元,以使人们能在某一时刻只接触有限的信息,不影响团队间的并行工作。模型是利用包(Package)和包的依赖来进行管理的。包是UML模型中通用的层次组织结构,包上的依赖总结了包内容的依赖关系。,59,UML的基本概念13UML概念范围,扩展机制扩展机制(ExtensionMechanisms),UML能满足绝大部分系统建模的需要,但任何语言都不是万能的,它必须考虑一定的扩展机制,UML的扩展机制包括约束、标签值和原型。这些扩展机制可以用来为特定领域剪裁UML的配置,这样带来一些好处:根据自身需要来使用建模语言。,60,基本图素,一个模型必须首先定义各种事物的内部特征和相互之间的关系,下面介绍一些基本的模型元素:,分类:共12个类(Class)接口(Interface)包(Package)角色(Actor)用例(UseCases)组件(Component)结点(Node)状态(state),关系:关联(Association)泛化(Generalization)依赖(Dependency)实现(Realization)约束(Constraint),61,基本图素1角色,角色是与系统、子系统或类交互的外部人员,进程或事务。在运行时,具体人员会充当系统的多个执行者,不同用户可能会成为一个执行者。,根据上下文的不同而具有不同的含义,62,基本图素2用例,用例是系统提供的外部可感知的功能单元,用例的目的是定义清晰的系统行为,但不解释系统的内部结构。用例可以与角色关联,也可以参与其他的多种关系,比如扩展、泛化和包含等。用户的动态部分用交互视图来描述,比如顺序图、协作图。用例用椭圆来表示,用例名标在椭圆下方,用实线与同自身通信的用户相连。,63,基本图素3系统,系统也叫做系统边界,用于界定系统功能范围。它用一个矩形框表示。描述该系统功能的用例都置于其中,而描述的与系统交互的角色都置于其外。系统(边界)常常省略不画。,64,基本图素4类,类是具有相同属性、操作和关系的对象集合的总称。通常在UML中类被画成矩形,包括三个部分:名称、属性和操作。下面是可选的。名称:每个类都必须有一个名字,用来区分其它的类。类名是一个字符串,称为简单名字。路径名字是在类名前加包含类的包名为前缀。例如Wall、java:awt:Wall都是合法的类名。属性:类可以有任意多个属性,也可以没有属性。在类图中属性只要写上名字就可以了,也可以在属性名后跟上类型甚至缺省取值。操作:操作是类的任意一个实例对象都可以调用的,并可能影响该对象行为的实现。,65,基本图素4类,类名,属性,操作,66,基本图素5对象,1、对象是类的实例。2、对象图素中对象名的下面加下划线,对象图素所使用的符号与类图素基本相同。二者的区别在于对象图素展示的是类的实例,而不是类本身。3、对象图素除第一格外,其他格是可选的。对象常常出现在活动图、序列图和协作图中。,67,68,基本图素6接口,接口是未给出实现的对象行为的描述,接口包含操作,但没有属性,一个或多个类可以实现接口,每个类实现接口的操作。思考:为什么会有接口?,String,isEqual(String):BooleanHash():Integer,Hashable,Comparable,接口标记,69,基本图素7协作,协作实质代表一组模型元素协同完成对应用例的功能。协作与对应的用例存在着一种所谓的实现关系。协作与对应的用例分离带来的好处是为描述一个用例可以用不同的协作实现提供了可能。,70,求一元二次方程根,求一元二次方程根,71,基本图素8组件,组件是可重用的系统片段,具有良好定义接口的物理实现单元。每个组件包含了系统设计中某些类的实现。组件设计的原则:良好的组件不直接依赖于其它组件,而是依赖于其它组件所支持的接口。这样的好处是系统中的组件可以被支持相同接口的组件所取代。一个组件可能是源代码、可执行程序或动态库。,72,基本图素9结点,结点代表系统运行时的物理对象,结点通常拥有运算能力,它可以容纳对象和组件实例。,73,基本图素10包,任何大系统都必须划分为较小的单元,以便人们在某一时刻可以和有限的信息工作,使团队的工作不相互影响。包可以包含各种模型元素和其它的包,包之间还可能存在一定的依赖。,Finances,Credits,Accounts,BankInterface,74,基本图素10包,具有独立的说明和实现部分的包,它代表了与系统其它部分具有清晰接口的清晰单元,它通常代表了系统在功能或实现范围上的划分。,75,基本图素消息,消息代表软件系统内两个对象中一个对象向另一个对象发出的执行某种操作的请求。序列图中的消息有简单、异步、同步之分1、简单消息是一个对象到另一个对象的转移。2、如一个对象发送了同步消息,必须等待对方的回答后才继续自己的操作。3、相反,如一个对象发送了异步消息,不必等待对方的回答就继续自己的操作。,76,77,基本图素11关系关联,关联描述了系统中对象和其它实例之间的离散的连接,关联是有序的,它允许重复,关联的实例是链。关联至对象的连接点称为关联端点,很多信息被附在关联端点上,它拥有角色名、重数(多少个类的实例可以关联于另一个类的实例),可见性等。关联有自己的名称,可以拥有自己的属性,这时关联本身也是类,称为关联类。,78,基本图素11关系关联,Manages,Job,boss,worker,employee,employer,1.*,*,*,0.1,Company,Person,角色名,重数,关联名称,关联类,二元关联,自关联,79,基本图素11关系关联,聚集(Aggregation)用来表达整体部分关系的关联。组合(Composition)是一种聚集,是关联更强的形式。,Polygon,Point,1,3.*,points,Contains,Polygon,Window,Slider,1,2,Scrollbar,Header,1,Title,1,1,Panel,1,Body,聚集,组合,80,基本图素11关系泛化,泛化是一般化和具体化之间的一种关系。继承就是一种泛化关系,更一般化的描述称为双亲,双亲的双亲称为祖先,更具体化的描述称为孩子,在类的范畴,双亲对应超类,孩子对应子类。,Tree,Oak,Elm,Birch,孩子,双亲,Person,Student,Graduate,祖先,81,基本图素11关系泛化,多重继承:一个孩子可以从多个双亲继承属性和方法。多重继承可能存在冲突,因为被继承的双亲可能存在相同的类声明,这时,最好显式解决冲突问题。,Assistant,Teacher,Student,82,基本图素11关系依赖,依赖指明两个或两个以上模型元素之间的关系。依赖有很多种类,比如:实现(realize)、使用、(usage)、实例化(instantiate)、调用(call),派生(derive)、访问(access)、引入(import)、友元(friend)等等。,ApplicationServer,DataBase,依赖类型,83,基本图素11关系实现,实现是依赖的一种,但由于它具有特殊意义,所以将它独立讲述。实现是连接说明和实现之间的关系。,String,isEqual(String):BooleanHash():Integer,Comparable,Comparable,isEqual(String):BooleanHash():Integer,实现,特殊的实现标记,84,基本图素11关系约束,约束用来表示各种限制,如关联路径上的限制,和属性特征检测(存在、所有)。,Person,Committee,Member-of,约束,Chair-of,subset,85,模型图,静态视图:类图对象图部署图组件图,86,静态建模1类图,静态视图是UML的基础,静态视图表示为类图,主要是描述类和类之间的关系。,继承,关联,Person,House,residence,0.*,关联类,ordered,87,静态建模2对象图,对象图是系统在某一时刻的快照。,链,88,静态建模3组件图,组件图描述可重用的系统组件以及组件之间的依赖。,Course,User,BillingSystem,89,静态建模3部署图,部署图描述系统资源在运行时的物理分布,系统资源成为结点。,90,动态建模1,用例图:从外界对系统的感知状态图:对象自身的活动活动图序列图:对象之间的关系协作图,91,动态建模1用例图,用例图描述执行者在各个用例中的参与情况。,92,动态建模1用例图,用例图描述各个执行者在各个用例中的参与情况,描述系统为用户所感知的外部视图。用例图的功能:捕获系统用户需求描述系统边界指明系统外部行为指导系统开发者的功能开发系统建模的起点,指导所有的类图和交互图的设计产生测试用例,用户文档估计项目大小和进度。,93,动态建模1用例图,用例可以参与多种关系:关联、扩展、泛化和包含。,Customer,Salesman,Supplier,Supervisor,Sale,Management,Supply,执行者,用例,系统边界,94,动态建模2状态机图,状态机图是对单个类的对象的生命周期进行建模,描述了对象时间上的动态行为,每个对象被认为是事件驱动的孤立实体。事件表达对象间的调用、显式信号、值的改变或时间的推移。调用事件、变更事件、信号事件、时间事件状态描述对象生命周期的一段时间,可以是等待其它事件时所处的时间,或是执行某一活动时所处的时间,状态分为简单状态和复合状态。,95,动态建模2状态机图,状态机图是由状态和跃迁组成的图,通常状态机附属于类,描述类实例对接受事件的响应。跃迁定义对象对某一事件发生的反应,通常,迁移具有触发事件、跃迁条件、动作和目标状态。跃迁的种类有外部跃迁和内部跃迁。外部跃迁是最普通的跃迁,会发生状态改变;内部跃迁不发生状态改变。跃迁有两个隐式动作:进入动作和退出动作。无论何时进入和退出时都要执行,这方便进入时进行初始化工作,退出时进行资源的释放工作。,96,它强调对象行为的事件顺序,强调对象对外部事件的响应及相应的状态变迁。通过状态图可以了解一个对象所能到达的所有状态以及对象涉及的事件(消息、超时、错误、条件满足)对对象状态的影响。,97,动态建模2状态机图,初始状态,结束状态,状态机,状态,触发事件,动作表达式,跃迁,98,动态建模3活动图,活动图是用状态机对工作流进行建模的特殊形式,它和流程图很类似,不过它支持并发控制。活动图一般不描述所有的运算细节,它显示活动的流,但不显示执行活动的对象。活动图处于系统的外部和内部视图之间,所以它可以作为设计的起点,为了完成设计,每个活动必须扩展成一个和多个操作,每个操作被指派给特定的对象来实现。带有生命线的活动图和无生命线的活动图。,99,动态建模3活动图,Customer,Sales,Stockroom,RequestService,Pay,TakeOrder,FillOrder,DeliverOrder,CollectOrder,泳道,100,动态建模3带有对象流的活动图,Customer,Sales,Stockroom,RequestService,Pay,TakeOrder,FillOrder,DeliverOrder,CollectOrder,泳道,OrderPlaced,OrderEntered,OrderFilled,OrderDelivered,对象,101,动态建模4序列图,对象行为是通过交互来实现的,交互是对象间为完成某一目的而进行的一系列消息交换。消息是对象间的单向通信,从发送者到接受者的携带信息的控制流。消息可能带有值参。消息序列可用两种图表示:序列图(重点在消息的时间顺序)和协作图(重点在交换消息的对象间的关系)。对协作图来说,时间顺序可以从顺序号获得。,102,动态建模4序列图,序列图用二维表来表示交互,纵向是时间轴,横向是参与的角色以及它们交换的消息。角色的生命周期表现为生命线,一条垂直的线,在激活的时间段里是双线,在状态保持的时间里是虚线。消息表示为从一条生命线出发到另一条生命线的有向线,从上而下,表示消息的时间顺序。,103,动态建模12序列图,Caller,Operator,Callee,时间轴,顺序图,生命线,激活,状态保持,角色,104,动态建模5协作图,协作图包含分类角色和关联角色,当它实例化时,对象被绑定到分类角色,链被绑定到关联角色.关联角色还可能被各种暂时性的链来充当,如过程参数和局部过程变量,链可以指定暂时性的原型:、或自身调用。协作图对实现协作的对象和链进行建模,而忽略其他对象。,105,动态建模5协作图,Student,RegistrationForm,RegistrationManager,math,106,动态建模5协作图,通常在一个协作图中每个对象分配一个符号,然而有时不同状态的对象需要显式指出,流将同一个对象的不同状态版本关系在一起,使用原型。流的原型不太常用。,:Controller,:Directoryclosed,:Directoryopen,1:expand(),2:sort(),1.1,流,107,公用机制,注释规范说明修饰扩充机制公共划分,108,公用机制1注释,注释用于解释设计的思路,便于理解。一个好的模型应该有详尽的注释。,Representsanincorporatedentity,Company,注释,109,规范说明,软件模型必须是完整的,以便于软件系统的建造。也就是说,此模型必须具备足够的详细信息以供软件建造使用。这些构成完整模型的详细信息就是模型的规范说明(简称规范)。所有UML模型成员都有规范说明。不同的模型成分规范说明的内容不同,这些规范说明的内容一般用属性名和属性值的形式来表达。UML中有许多预定义的属性,比如:文档(documentation)、持续性(persistence)和并发性(Concurrency)等。属性一般作为模型成分附加说明,比如,用一些文字逐条列举类的功能,这种规范说明方式是非形式化的。,110,修饰,UML模型图中的图素通常都有一个基本的结构,它描述模型成分最主要的特征。为了表达和建造系统的需要,基本图素表达时,UML提供了有选择地公开相关细节的方式。表示的类的属性和方法的可见性图示出了。UML模型中类的成分带“-”表示私有的(Private),带“+”表示公开的(Public),其他类可以访问,带“#”表示受保护的(Protected)。,111,扩充机制,当使用UML的基本图素难以有效地表达复杂事物时,就需要对UML进行某种形式的扩充,正如同人类的语言需要不断地扩充语汇,以描述各种新出现的事物一样。UML提供了这种扩充机制(extensibilitymechanisms)。,112,建模规则,UML的模型图不是UML基本图素的简单堆砌,它必须按特定的规则有机地组合而成,从而构成一个完整的UML模型图。UML建模规则包括:(1)命名:任何一个UML基本图素和模型图(统称UML成员)都必须命名。(2)作用域:UML成员所定义的内容起作用的上下文环境,如类名受所属包的约束。(3)可见性:UML成员能被其它成员引用的方式。(4)完整性:UML成员之间互相关联的合法性和一致性。(5)运行属性:UML成员在运行时的特性,如进程、线程、同步等。,113,UML建模,五个视图:用例视图设计视图进程视图组件视图部署视图,逻辑视图,114,用例视图,用例视图用于描述系统应该具有的功能集。它是从系统的外部用户角度出发,对系统行为的抽象表示。它所描述的系统为用户或另一个系统提供服务。用例视图主要为用户、系统分析人员、系统开发人员和测试人员服务,这些人员利用用例视图交流,以达到各自的目的。用户和系统分析人员通过用例视图达到系统功能上的共识,系统开发人员通过用例视图完成系统逻辑模型的建立,测试人员通过用例视图测试系统是否满足用户要求。,115,逻辑视图,用例视图只考虑系统应提供什么功能,对这些功能的内部运作情况不予考虑,为了揭示系统内部的设计和协作状况,要使用逻辑视图描述系统。逻辑视图用来显示系统内部的功能是怎样设计的。逻辑视图通过类图、对象图描述系统类、对象和它们之间的关系。逻辑视图也称为结构模型视图或静态视图或系统结构建模。原则上软件系统逻辑视图在与软件系统的实现平台无关。逻辑视图包含的模型图有:类图、对象图、交互图。类图是构成逻辑视图的核心,通常用对象描述客观世界中某个具体的实体。建立类模型时,应尽量与应用领域的概念保持一致,使模型更符合客观实际、易修改、易理解和易交流。对象图、交互图描述系统的动态行为。,116,组件视图,当系统的逻辑视图被定义之后,需要定义逻辑结构的物理实现。这包括:逻辑结构对应的源代码文件、物理文件之间的关系、存放路径等。组件视图主要描述系统部件的配置。通常情况下,组件图看起来似乎是系统物理组件图标的集合。,117,部署视图,提供给开发者、部署、集成者和测试者。在网络开发环境中,部署视图是系统模型必不可少的一部分。部署视图用来描述软件产品在计算机硬件系统和网络上的安装、分发和分布。,118,UML建模UML将软件的体系结构分解为四个不同的层次,分别是:用例视图、逻辑视图、组件视图、部署视图。其中每个视图分别关注软件开发的一个层次。视图由一种或多种模型图构成。用例视图关注系统需求,逻辑视图关注系统的逻辑结构,组件视图关注系统定义逻辑结构的物理实现,部署视图关注系统中软件和硬件之间的物理关系。,119,建模步骤1,UML是一种建模语言而不是方法,这是因为UML中没有过程的概念,而过程正是方法的一个重要组成部分。UML本身独立于过程,这意味着用户在使用UML进行建模时,可以选用任何适合的过程。一般采用的建模过程有:瀑布开发模型、迭代递增开发模型。,120,建模步骤2瀑布开发模型,瀑布开发模型,需求,分析与设计,编码,测试,产品,维护,121,建模步骤3迭代递增开发模型,迭代递增开发模型,最初需求与分析,设计,编码,测试,产品,维护请求,更多需求与分析,122,建模步骤4UML建模过程,基于UML的系统开发采取增量迭代开发模型。1需求最初需求规格说明应当由代表系统最终用户的人员提供,内容包括系统基本功能需求和对计算机系统的要求。2分析分析的任务是找出系统的所有需求并加以描述,同时建立模型,以定义系统中的关键领域类,应由系统用户和开发人员合作完成。分析的第一步是定义用例,以描述所开发系统的外部功能需求。用例分析包括阅读和分析需求说明,此时需要与系统的潜在用户进行讨论。,123,建模步骤5UML建模过程,3设计设计阶段的任务是通过综合考虑所有的技术限制,以扩展和细化分析阶段的模型。设计阶段可以分为两个部分:结构设计是高层设计,其任务是定义包(子系统),包括包间的依赖性和主要通信机制。我们希望得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽可能的减少双向的依赖关系。第二部分是详细设计,细化包的内容,使编程人员得到所有类的一个足够清晰的描述。,124,建模步骤6UML建模过程,结构设计一个设计良好的系统结构是系统可扩充和可变更的基础。包实际上是一些类的集合。类图中包括有助于用户从技术逻辑中分离出应用逻辑(领域类),从而减少它们之间的依赖性。详细设计详细设计的目的是通过创建新的类图、状态图和动态图(顺序图、协作图和活动图),描述新的技术类,并扩展和细化分析阶段的对象类。,125,建模步骤7UML建模过程,4实现构造或实现阶段是对类进行编程的过程。可以选择某种面向对象对象编程语言(如Java)作为实现系统的软件环境。Java很容易实现从逻辑视图到代码部件的映射,因为类到Java代码文件之间是一一映射关系。在实现阶段中,可以选取各种图的说明来辅助编程,比如:类图,状态图和动态图等。,126,建模步骤8UML建模过程,5测试和配置完成系统编码后,需要对系统进行测试,它通常包括:单元测试、集成测试、系统测试和验收测试。在单元测试中使用类图和类的规格说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和合作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求。系统的配置是实际地交付系统,包括文档和组成模型等。,127,实例:饮料自动售货机系统设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。,128,步骤:(1)找出对象及其关联(2)赋予类及关联的属性数据(3)组织类的结构,对象图,129,找出饮料自动售货机系统中的对象设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。,130,饮料自动售货机系统对象图,贩卖机,饮料号码价格,投币-接受饮料掉出金额显示按纽退币杆售完显示,存量计算器,饮料号码存量,递减售完显示重置,选择钮,选择钮状态,灯亮灯熄售完灯亮按钮,顾客,姓名硬币,投币-置入拿取饮料,退币杆,退币杆状态,拉动,金额计算器,金额,累加找零重置,购买,选取,被拉动,属于,属于,属于,属于,131,建立数据字典为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作,132,动态模型用来描述系统与时间相关的动态行为即系统的控制逻辑,表现对象彼此间经过相互作用后,随时间改变的不同运算顺序。动态模型以“事件”(Events)和“状态”(States)为其模型的主要概念。动态模型以状态图形式呈现。,133,事件:瞬时发生的行为;引起对象状态转换的控制信息。事件类和属性举例:飞机起飞(航线、航班号、城市)按动鼠标按钮(按钮、位置).,134,通话(只包括影响电话线的事件),17.打电话者挂断电话,16.电话切断,15.接电话者挂断电话,14.通电话,12.接电话者电话停止振铃,13.铃声在打电话者电话中消失,11.接电话者回答,10.铃声在打电话者电话传出,9.接电话者的电话开始振铃,8.打电话者拨数字(3),7.打电话者拨数字(7),6.打电话者拨数字(3),5.打电话者拨数字(2),4.电话忙音结束,3.打电话者拨数字(8),2.电话忙音开始,1.打电话者拿起听筒,135,状态:对象属性和对象关联的抽象形式状态的特征表示方法举例:状态:闹铃响描述:闹铃响表示预定时间到产生本状态的事件序列:设置闹钟(预定时间)不包括清除闹铃的任何后续操作当前时间=预定时间表征本状态的条件:闹铃=开,从预定时间起没有按键的情况下,目标时间当前时间目标时间=20秒本状态接受的各种时间:事件动作下一个状态当前时间=目标时间+20重新设置闹钟正常按下按钮(任意按钮)重新设置闹钟正常,136,动态模型表示方法,状态图状态和事件的网络,侧重描述每一类对象的动态行为。,137,状态图例:,状态1,Do:活动1,状态2,.,事件1条件1/动作1,结束事件,初始事件,空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论