自考本科教材课件——NO4面向对象UML_第1页
自考本科教材课件——NO4面向对象UML_第2页
自考本科教材课件——NO4面向对象UML_第3页
自考本科教材课件——NO4面向对象UML_第4页
自考本科教材课件——NO4面向对象UML_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象方法UML主讲:段智敏考试大纲本章要求掌握创建系统/产品模型(包括概念模型和软件模型)中用于表达信息的基本术语以及用于表达模型的用例图、类图、顺序图和状态图。识记类、接口、用例、协作等概念关联、泛化、实现、依赖等概念类图、用例图、顺序图、状态以及状态图的构成领会面向对象方法的基本思想UML每一个术语所基于的原理和在建模中的作用类的描述及其语义的表达和在建模中的作用表达关联语义的基本手段状态的种类及其描述顺序图中的操作子正交子状态机与非正交子状态机面向对象方法面向对象方法发展概述面向对象方法是一种以对象、对象关系等来构造软件系统模型的系统化方法。可见,面向对象方法的世界观是:一切系统都是

2、由对象构成的,它们的相互作用、相互影响,构成了各式各样系统。其发展主要经历了:支持编程的面向对象语言1967:Dahl和 Nygaard在挪威开发了第一个面向对象语言:Simula-6720世纪80年代初,Smallsalk语言得到广泛应用;随后出现了Objective C、C+和Eiffel等。 20世纪80年中期以来,面向对象分析和设计方法学得到了快速发展,相继提出了很多有关的方法学,典型的有:1986:G.Booch的OOD; 1990:P.Coad和E.Yourdon的OOA,OOD1991:J.Rumbbaugh的OMT; 1994:Embly的OSA等。面向对象方法在方法学方面形成

3、了两大主流学派:以“方法(method )”驱动的方法学基本思想:在给出符号体系的基础上,明确规定进行的“步骤”,并在每一步中给出“实施策略”。代表:P.Coad的“OOA(1990)”, “ OOD(1991)”优点:容易学习和掌握。缺点:不够灵活,可能对出现的新问题就没有办法处理。以“模型(model )”驱动的方法学基本思想:给出模型化概念,即符号体系以及目标模型;而不明确规定实现目标的“步骤”,但给出一些必要的指导。代表:Rumbaugh 的“OMT(1991)”等优点:比较灵活。缺点:与OOA相比,不易学习和掌握。面向对象方法OMG发布的UML以及USDP(统一软件开发过程)95年,

4、Grade Booch 、Jim Rumbaugh在OOPSA会议上公布了他们的统一方法(0.8版);96年, G.Booch 、J.Rumbaugh以及Ivar Jacobson“三友”,将他们的统一建模语言命名为UML;97年,Rational公司发布了UML文档1.0版,作为OMG的建议方案;98年,在合并不同建议的基础上,OMG以其结果1.1版作为一个正式的标准。1999年,RTF发布了1.3版,2000年9月,发布了1.4版,2003年3月,发布了2.0版。面向对象方法受到业界和学术界广泛关注,特别是UML以及相应的支持工具已在软件开发中得到了广泛的应用。 “在建模语言方面,UML已

5、成为一种绘制面向对象设计图的标准工具,并已传播到非面向对象领域。面向对象以前的主要方法已经消逝.UML登场了,并且稳居宝座。” “统一建模语言UML乃软件设计与需求规约语言。论述语言之优劣,有用户,设计,实现等观点。这些观点既有区别,又有联系。UML问世以来,褒贬不一,但其应用广泛,成绩显著,实为具有代表性之建模语言。” 摘自序,徐家福译 UMLUML概述UML是一种可视化语言,用于:规约系统的制品;构造系统的制品;建立系统制品的文档。UML应用范围UML作为一种一般性的语言,可用于:对象方法和构件方法;所有应用领域(例如,航空航天、财政、通讯等) 不同的实现平台(例如,J2EE、.NET等)

6、运行平台(包括VB、VC、中间件、J2EE、.NET、框架等)问题域祢补两者之间的“距离” -建立不同抽象层次的术语空间和模型表示工具-支持多视角地建立系统模型这意味着:UML是系统分析和设计的工具。UML就软件开发方法学而言,UML给出了方法学中不同抽象层次的术语以及表达模型的工具。表达模型的工具 -USE CASE图需求获取层表达模型的工具 -类图、交互图等需求分析层表达模型的工具 -类图、交互图等设计层表达模型的工具 UMLUML面向对象方法术语/符号为了支持软件开发,面向对象方法主要提供了两类术语:一类是表达结构化事物的术语一类是表达关系的术语除了这两类术语之外,为了控制信息组织的复杂

7、性,还引入了用于组织特定对象结构的包。同样做一类比,一个包相当一个可管理的“预制块”。为了使建造的系统模型容易理解,引入了术语-注解,用于对模型增加一些辅助性说明。客观事物术语类与对象类与对象类是一组相同属性、操作、关系和语义的对象的描述。对象是类的实例。类的表示通常把类表示为具有三个栏目的矩形,每个栏目分别代表类名、属性和操作。例如:客观事物术语类与对象类名类名使用黑体字,第一个字母通常要大写,并位于第一栏的中央。实践中,类名往往是从正被建模系统的词汇表中提取的简单名词或名词短语。类可以是抽象类,即没有实例的类,类名采用斜体字。例如:WindowWindowsize:Areavisibili

8、ty:Booleandisplay( )hide( )客观事物术语类与对象属性(Attribute)属性是类的一个命名特性,由该类的所有对象所共享,用于表达对象状态的数据。一个属性往往具有所属的类型,用于描述该特性的实例可以取值的范围。类的一个对象对每一个属性应有特定的值。一个类可以有多个属性,也可以没有属性。客观事物术语类与对象操作(Operation)操作是服务的一个实现,由该类的任意对象为其行为所要求的。换言之,一个操作抽象了一个对象所要做的事情,并且该类的其它对象也要做这件事情。 调用一个对象上的操作可能会改变该对象的数据或状态。一个类可以有多个操作,也可以没有操作。Rectangle

9、add( )grow( )move( )isEmpty( )客观事物术语类与对象在实际应用中,操作名往往是描述其所在类的行为的动词或动词短语。在操作名中,除第一个词之外,其他每个词的第一个字母要大写。可以通过给出操作的特征标记进一步描述之,特征标记通常包括参数名、类型和默认值;如果该操作是一个函数,那么其特征标记还包括返回类型。TemperatureSensorreset()setAlarm(t:temperature)value():Temperature客观事物术语类与对象属性和操作的可见性客观事物术语类与对象操作的多态性Rectangleadd( )grow( )move( )isEmp

10、ty( )Rectangleadd( )grow( )move( )算法isEmpty( )Rectangleadd( )grow( )move( )算法isEmpty( )客观事物术语类与对象类的描述及其语义的表达通过类的名字、属性和操作表达类的语意,为了更好的表达类的含义,增强类的语义,可以通过以下几种形式:详细叙述类的职责,详细叙述类的职责是对类进行模型化的基础,在此基础上可进一步定义类的属性和操作通过类的注解、操作的注解,以结构化文本的形式、编程语言,详述注释整个类的语义、各个方法通过类或操作的注解,以结构化文本形式,详述各操作的前、后置条件详述类的状态机详述类的内部结构类与其他类的协

11、作客观事物术语类与对象类在建模中的主要用途模型化问题域中的概念模型化系统中的责任分布为了完成某些行为,标识一组紧密协同工作的类。对以上的每个类,标识它的一组职责。从整体上观察这些类,把其中职责过多的类分解为一些较小抽象,而把责任过于锁碎的类合并为一个较大的类,继之重新分配责任。考虑这些类的相互协作方式,调整它们的责任,使协作中没有哪个类的职责过多或过少。模型化基本类型客观事物术语类与对象类在使用中应注意的问题每个类都应是某个有形的事物或概念的抽象。一个结构良好的类,应符合以下条件:是对问题域或解域中的事物的明确抽象。嵌入了一个小的、明确定义的责任集,并能很好地实现之。清晰地分离了抽象的规约和实

12、现。客观事物术语接口接口(Interface)是操作的一个集合,其中每个操作描述了类或构件的一个服务。用带有分栏和关键字的矩形符号来表示接口。在操作分栏中给出接口支持的操作列表接口的属性分栏总是空的用小圆圈来表示接口圆圈表示由类提供的接口供接口半圆圈表示类需要的接口需接口interfaceIWindowOpen()Close()Display()客观事物术语接口例:该图表明类String支持接口Hashable、Comparable类HashTable使用接口Hashable、Comparable类String实现接口Comparable客观事物术语接口建立系统模型中,使用接口应注意以下问题:

13、接口只描述类(构件或子系统)的外部可见操作,并不描述内部结构。接口仅描述一个特定类的有限行为。接口没有实现,接口也没有属性、状态或者关联,接口只有操作。接口在形式上等价于一个没有属性、没有方法而只有抽象操作的抽象类。接口只可以被其它类目使用,而其本身不能访问其它类目。可以对接口使用泛化关系。客观事物术语协作协作(Collaboration)定义了一个交互,包括交互各方、交互方式以及交互内容,它们的共同工作提供了某种协作性行为。用虚线椭圆表示: 说明:协作具有结构、行为和维度。由于一个给定的类或对象可以参与多个协作,因此协作表现了系统细化的构成模式。客观事物术语用例用况(UseCase)是对一组

14、动作序列的描述,系统执行这些动作应产生对特定的参与者有值的、可观察的结果。用实线椭圆表示:说明用况用于构造模型中的行为。用况是通过协作予以细化的。Place order客观事物术语主动类主动类(Active Class)是一种至少具有一个进程或线程的类,能够启动系统的控制活动。表示:与类图相似,多两条竖线。主要特性:主动类对象的行为通常与其他元素的行为是并发的。客观事物术语构件构件(Component)是系统设计的模块化部件,通过外部接口隐藏了它的内部实现。表示:说明;在一个系统中,共享相同接口的构件可以相互替代,但其中要保持相同的逻辑行为。可以结合连接件来表示构件的实现。构件可以包含更小的构

15、件。客观事物术语制品制品(Artifact)是系统中物理的、可替代的部件,其中包含物理信息(比特).表示:说明在一个系统中,可能会存在不同类型的部署制品,例如源 代码文件、可执行程序和脚本等。制品通常代表对源代码信息或运行时信息的一个物理打包。客观事物术语节点节点(Node)是在运行时存在的物理元素,通常它表示一种具有记忆能力和处理能力的计算机资源。表示:说明:一个构件可以驻留在一个节点中,也可以从一个节点移到另一个节点。表达事物的术语小结模型化概念类、接口、协作、用况、主动类、构件、制品、节点,是可包含在一个UML模型中的基本模型化元素,用于抽象客观世界中的任何实体对象它们存在一些变体,例如

16、:类的变体-参与者、信号、实用程序;主动类的变体-进程和线程;制品的变体-应用、文档、库、页和表等。在UML中,把以上结构化概念统称为类目(Classifier)表达关系的术语在UML中,有以下4种关系:关联(Association)泛化(Generalization)实现(Realization)依赖(Dependency)这4种关系是UML的基本关系构造块,用于表达类目之间的关系,以构造一个结构良好的UML模型。关系术语关联关联(Association)定义:关联是类目之间的结构关系,描述了一组链(links),链是对象之间的连接(connection)。例如:如一个关联只连接两个类目,称

17、为二元关联;如一个关联连接n个类目,称为n元关联。关联表示has-a的关系,类与类之间的联接,它使一个类知道另一个类的属性和方法。关联关系有双向关联和单向关联。关系术语关联关联的语义表达:关联名(name):关联可以有一个名字,用于描述该关联的“涵义”,为了避免该关联涵义上的歧义性,可给出其关联方向。导航:给定一个类目,可以找到与之相关联的另一个类目,用实心箭头指示方向。角色(role):当一个类参与一个关联时,有一个特定角色。在类的一个关联中,可以显式地命名该角色,如下所示:PersonCarOwns0.*CarPersondrives*company cardriverAuthorComp

18、uterUsesc1c2c3c4c5c6c7p1p3p2p4p5拥有关系:, , , 模型化为 1.2 0.1 拥有 多重性(multiplicity):类中对象参与一个关联的数目,称为该关联角色的多重性。例如:关系术语关联可导航多重性关联示例一个保险公司拥有多份保险合同,这些合同与一个或多个客户关联。一个客户拥有多份保险合同(0对多),这些合同与一个保险公司关联。一份保险合同位于一个保险公司和一个或多个客户之间。保险合同同时与一个客户(或多个客户)和一个保险公司相关联。保险合同在一份(0或1)保险契约(一份书面形式的保险合同)里表达。保险契约与保险合同关联。 关系术语关联关系术语关联关联类(

19、Association Class) :可以将类附属到关联上,这种情况下的类称为关联类。一个关联类,可以被看作是一个关联,但还有类的特性;或被看作是一个类,但有关联的特性。companyperson0.1*Jobsalaryemployeremployee* Job 1.*bossmanagesworker关系术语关联限定符(Qualifier):一个限定符是一个关联的属性或属性表,这些属性的值将对该关联相关的对象集做了一个划分。例如:左图的限定符有一个属性account#,表明:在一个银行中,一个帐户对应一个用户,或没有对应人员。右图的限定符有两个属性,它们与Chessboard一起确定了S

20、quare,且 Square是其组成部分。关系术语关联聚合(aggregation):一种特殊形式的关联,表达一种“整体/部分”关系,即“包含”或“由组成”。聚合表示共享聚合组合聚合TeamPerson*Members*WindowTextListboxButtonMenu*关系术语关联组合聚合说明组合聚合拥有它的各个组成部分。部分和整体之间具有很强的“属于”关系,具有一致的生存期。整体方的多重性必须是0或1(0.1),而部分方的多重性可以是任意值。在一个组合中,其部分可以包含一些类和关联;根据需要,也可以把它们规约为关联类。滑翔机机身机尾机翼1111leftWingrightWing关系术语

21、关联组合聚合有三种不同的方式显示WindowTextListboxButtonMenu*WindowTextListboxButtonMenu*WindowTextListboxButtonMenu*Contains关系术语关联可见性+:公共访问-:对关联之外的任何对象不可访问#:只有另一端的超类可以访问:同一包中声明的类可访问约束有序(ordered)无重复(set)有重复(bag)有序集合(order set)列表(list)只读(readonly)关系术语泛化泛化(Generalization)泛化是一种存在于一般元素和特殊元素之间的分类关系。泛化关系(继承关系)中特殊元素和一般元素之间

22、的关系:“is-a”关系 。说明子类可继承父类的属性和操作,并可有更多的属性和操作子类可以替换父类的声明若子类的一个操作的实现覆盖了父类同一个操作的实现,这种情况被成为多态性,但两个操作必须具有相同的名字和参数一个类可以有0个、1个或多个父类。没有父类且最少有一个子类的类被称为根类或基类;没有子类的类称为叶子类。如果一个类只有一个父类,则说它使用了单继承;如果一个类有多个父类,则说它使用了多继承关系术语泛化标准泛化关系 单一继承表示多重继承表示VehicleCarBoatTruckVehicleCarBoatTruck分离表示法 共享表示法PoweredVehicleAirplaneCarTr

23、uckAircraft关系术语泛化继承、多态以及聚合结合使用示例Figureabstractposition: Posdraw () abstractPolygondraw ()Groupdraw ()Linedraw ()Circledraw ()consists of*Canvasconsists ofconsists of*关系术语泛化受约束的泛化关系UML为泛化关系预定义的几种约束:重叠(Overlapping):在继承关系中,那些继承于某个子类的任何更深层次的子类可以继承于该继承关系的多个子类。 互斥(Disjoint):不允许将多个子类特化为一个公共子类。 完全(Complete)

24、:如果某个约束指出一个泛化关系是完全的,就意味着已经指定了该泛化关系中的所有子类,并且不允许再增加子类了。 不完全(Incomplete):如果对一个泛化关系指定不完全约束,这就意味着还没有给出该泛化关系中的所有子类,允许以后再增加子类。 关系术语细化细化(realization)定义:细化是类目之间的一种语义关系,其中一个类目规约了保证另一个类目执行的契约。说明:在以下2个地方会使用实现关系:接口与实现它们的类和构件之间;用况与实现它们的协作之间。表示:举例:分析类设计类关系术语依赖依赖(Dependency)定义;依赖是一种使用关系,用于描述一个事物(如类Window)使用另一事物(如类E

25、vent)的信息和服务。说明:在大多数情况里,使用依赖来描述一个类使用另一个的操作如果被使用的类发生变化,那么另一个类的操作也会受到影响依赖可用于其它事物之间,例如注解之间和包之间表示:一条有向虚线,箭头尾部的元素依赖于箭头头部元素。关系术语依赖为了进一步表达依赖的语义,UML对依赖进行了分类,并给出了相应的标记。绑定(bind):表明源的实例化是使用目标给定的实际参数来达到的。导出(derive):表明可以从目标推导出源。允许(permit):表明目标对源而言是可见的。实例(instanceOf):表明源的对象是目标的一个实例。实例化(instantiate):表明源的实例是由目标创建的。幂

26、类型(powertype):表明源是目标的幂类型。精化(refine):表明源比目标更精细。使用(use):表明源的公共部分的语义依赖于目标的语义。关系分类UML模型中可以包含的基本关系关联、泛化、细化、依赖概念体系完备性关联、泛化、细化都是一类特定的依赖,可以保证UML能够表达客观世界中的各种各样的关系。在系统建模中,先使用关联、泛化、细化,如果不能模型化关系再使用依赖。使用关联、泛化、细化和依赖,可以模型化各种关系模型化简单依赖模型化单继承模型化结构关系模型化精化关系模型化简单依赖例如,一种常见的依赖关系是:一个类只是使用另一个类作为它的操作参数。对此,可从含有操作的类到被该操作用做参数的

27、类创建一个依赖。即: 注:如果操作add和remove给出了明显的操作标记(c:Course,如上所示),则一般就不需要给出这个依赖;但当省略操作标记时或一个模型还描述了被使用类的其它关系时,就应显示这一依赖。 CourseSchduleadd(c:Course) remove(c:Course) Course模型化单继承第一步:对于给定的一组类,发现2个或2个以上类的共同责任、属性和操作。第二步:把发现的共同责任、属性和操作放到一个一般类中其中要注意,不要引入过多的层次。第三步:画出从每个特殊类到一般类(父类)的泛化关系。注: 斜体字表明是一个抽象类或抽象操作; 子类中给出的操作为非斜体字,

28、表明给出了操作的实现。模型化结构关系第一步:标识关联若对于每一个类,需要导航到另一个类的对象,那么就要在这2个类之间给出一个关联。这是关联的数据驱动观点。例如,一个学校信息系统中的一组类:若对于每一个类的对象需要与另一个类的对象进行交互,并且后一个对象不作为前一个对象的局部变量或操作参数,那么就要在这2个类之间给出一个关联。这是关联的行为驱动观点例如:要了解Student所要参与的课程,因此就应在Student和Course之间给出一个关联,用于描述学生参与的课程第二步:对于标识的每一个关联,添加语义描述例如,就上图而言,给出关联的多重性:每门课程至少有一名教师,而没有一名教师可以教0到多门课

29、程。每门课程是精确地属于一个系的。第三步:标识“整体部分”如果关联中的一个类与另一端的类相比,前者在结构上或组织上是一个整体,而后者是它们的一部分,那么就要把它们标识为聚合,见上图。聚合:一所学校可以有0到多名学生,一个学生可以注册在一所或多所学校学习;一所学校可以有一个或多个系,而每个系只能属于一所学校。要注意:在该例中,Department和Instructor之间有两个关联,其中:一个关联(聚合)说明可以指派一名教师到一个或多个系中工作,而一个系可以有一名或多名教师另一关联表明一个系只能有一名教师作系主任,而某些教师不是系主任。组合信息术语包组织信息的一种通用机制包目的:为了组织类目,控

30、制信息组织和文档组织的复杂性。语义:包是模型元素的一个分组。一个包本身可以被嵌套在其它包中,并且可以含有子包和其它种类的模型元素。包元素的可见性,可以通过在该元素名字前加上可见性符号(+:公共的,-:私有的,#:受保护的)来指示。表示在大矩形中描述包的内容,而把该包的名字放在左上角的小矩形中。可以把所包含的元素画在包的外面,通过符号,将这些元素与该包相连。这时可把该包的名字放在大矩形中。UML模型表达格式模型表达工具UML提供了6种可对系统静态部分建模的图形工具:类图构件图组合结构图对象图部署图制品图。UML提供了7种可对系统动态部分建模的图形工具:用况图状态图活动图顺序图通信图交互概观图定时

31、图静态模型表达工具-类图定义:类图是给出一组类、接口、协作以及它们之间关系的图。作用:可用于可视化地表达系统的静态模型。是构件图和部署图的基础。类图的内容:通常包含:类;接口;依赖、泛化和关联关系。还可以包含注解和约束,以及或子系统,甚至,可包含一个实例,以便使其可视化。 注:这些成分,确定了所表达系统的各种形态。静态模型表达工具-类图类图的一般用法类图主要用于对系统的静态设计视图(投影)进行建模,支持表达系统的功能需求,既系统提供给最终用户的服务。一般以三种方式使用类图:对系统中的词汇建模当要决策:使用哪些类目和UML关系,作为系统的组成部分;哪些类目类目和UML关系,处于系统之外。此时可使

32、用类图来描述这些抽象和它们的责任。对简单协作建模当需要用一组类来表达系统中的某一事物语义时,可使用类图详细描述这组类以及它们之间的关系。对逻辑数据库模式建模 当需要给出数据库概念设计的指导,可对要在数据库中存储的信息,采用类图对相应的数据库模式进行建模。静态模型表达工具-类图系统行为(功能)的建模工具用例图USE CASE图的内容:包含6个抽象,确定了所表达的系统的各种形态。主题(Subject)用况(Use cases)参与者(Actor)泛化关系:依赖、泛化、关联定义:USE CASE图是一种表达动态模型的图形化工具,其中显示了一组Use cases、Actors以及它们之间的关系。USE

33、 CASE图还可以包含包,形成一些更大的功能块。有时为了对一个特定的执行系统进行可视化,也把用况的实例放到用例图中。注:为使以USE CASE图表达的系统更易理解,包含注解和约束。系统行为(功能)的建模工具用例图主题由一组用况所描述的一个类,该类通常是一个系统或子系统。其中的这些用况描述了该主题的完整行为,而参与者则表示与该主题进行交互的另一种类。用例包含两个视角:使用视角,例如: “做一次拼写检查”; “对文档建立索引”系统设计视角:一个use case规约了系统可以执行的一个动作(action)序列,包括一些可能的变体,并对特定的操作者( actor)产生可见的、有值的结果。它是类、对象、

34、操作的源,是系统分析和设计阶段的输入之一。是分析和设计,制定开发计划、测试计划,设计测试用例的依据之一。可以划分系统与外部实体的界限,是系统开发的起点。系统行为(功能)的建模工具用例图参与者定义:参与者表达了一组高内聚的角色,当用户与用例交互时,该用户扮演了这些角色。说明:通常,一个参与者表达了与系统交互的那些人的角色、硬件的角色或其它系统的角色。参与者实际上不是软件应用的一部分,而是在应用的环境之中,其实例代表以某种特定方式与系统进行交互。 一个客体对象可以扮演多个参与者,例如一个人既可以是参与者A,又是参与者B。一个参与者代表客体在一个方面的角色。表示:系统行为(功能)的建模工具用例图关系

35、:可以定义参与者之间的泛化关系,例如:关联:参与关系,即操作者参与一个用例。例如,操作者的实例与用例实例相互通讯。关联是操作者和用例之间的唯一关系。扩展:用例A到用例B的一个扩展关系,指出了B的一个实例可以由A说明的行为予以扩展(根据该扩展所说明的特定条件),并依据该扩展点定义的位置,A说明的行为被插入到B中。包含:用例A到用例B的一个包含,指出A的一个实例将包含B说明的行为,即这一行为将包含在A定义的那部分中。 泛化:用例A到用例B的泛化,指出A是B的特殊情况。注:扩展和包含是依赖的变体。1 * the salesperson asks for the catalog Place Order

36、extension pointsadditional requests:after creation of the order SupplyCustomer Data Order Produck Arrange Payment Request Catalogsalesperson 例:USE CASE关系 Actor关系Supervisor Establish Credit 1 *系统行为(功能)的建模工具用例图用况图的使用对系统语境建模给定一个系统,均有其内部的事物和外部的事物。例如:在一个信用卡系统中,其内部事物有:帐户、事务处理和欺诈行为检测代理;其外部事务有:信用卡顾客和零售机构。其内

37、部事物的责任是完成其外部事物所期望由系统提供的行为。与系统交互的外部事物构成了该系统的语境,该语境定义了系统存在的环境。第一点:采用UML用况图对系统语境进行建模,应关注存在于系统周围的参与者,确定什么作为系统的参与者,什么不作为系统的参与者,使该图只包含那些在其生命周期内所必须的参与者。系统行为(功能)的建模工具用例图零售机构(顾客通过该机构刷卡,购买商品或服务财务结算机构(负责信用卡帐户的结算服务)第二点:对系统语境建模,应遵循以下策略:决定哪些行为是系统的一部分,那些行为是由外部实体执行的,以此标识系统边界,同时定义主题。在标识系统的参与者时,应考虑以下问题:谁需要得到系统的帮助,以完成

38、其任务;谁执行系统的功能;系统与哪些硬件设备或其他系统交互;谁执行一些辅助功能进行系统的管理和维护。将一些相似的参与者组织为一般/特殊结构。在需要加深理解的地方,为每个参与者提供一个衍型。最后,将这些参与者放入用况图中,并建立它们与系统用况之间的关联-通信路径。系统行为(功能)的建模工具用例图系统行为(功能)的建模工具用例图对需求建模需求可以用各种形式予以表达,但大多数的系统功能都可以表示成用况。对系统的需求建模,应遵循以下策略:首先,通过标识参与者来建立系统的语境。其次,对于每个参与者考虑他所期望或需要系统提供的行为。并把它们作为用况。第三,通过分解用况所表达的行为,形成必要的泛化结构和扩展

39、、包含结构。第四,模型化用况图中各种关系。最后,通过注解和约束给出这些用况的非功能需求。例如:系统行为(功能)的建模工具用例图系统行为(生存周期)的建模工具状态图定义:状态图是显示一个状态机的图,其中强调了从一个状态到另一状态的控制流。一个状态机是一种行为,规约了一个对象在其生存期间因响应事件并作出响应而经历的状态。Onfirst floorMovingupMovingdownMoving tofirst floorIdlearrivedarrivedarrivedgo upgo upgo downtime-out电梯对象的状态图 状态1或/和条件Action状态2或/和条件Action状态3

40、状态4或/和条件Action状态6状态5状态7或/和条件Action状态8条件条件系统行为(生存周期)的建模工具状态图状态图的内容状态(State) 事件(Event)状态转换(State Transition) 状态图可以描述一个对象在其生命周期中拥有哪些状态,该对象在这些状态下的行为,以及什么样的事件会导致状态发生改变。 系统行为(生存周期)的建模工具状态图未付款已付款删除货物对象付款创建货物对象状态定义:一个状态是类目的一个实例(以后简称对象)在其生存期间的一种条件(condition)或情况(situation),该期间该对象满足这一条件,执行某一活动或等待某一消息。一个对象的状态是该

41、对象在此之前所执行的所有活动的结果,通常是由对象的属性值所决定的,并且会链接到其他对象。表示:对象状态举例:物(对象)已经付款(状态)小轿车(对象)静止不动(状态)机器的引擎(对象)在运转(状态)Jim(对象)担任销售员的角色(状态)Kate(对象)结婚了(状态)系统行为(生存周期)的建模工具状态图状态名状态变量活动状态分类:UML把状态分为初态、终态和正常状态。初态(Initial State) :表达状态机默认的开始位置,用实心圆来表示终态(Final State) :表达状态机的执行已经完成,用内含一个实心圆的圆来表示正常状态:既不是初态又不是终态的状态,称为正常状态注:在没有特别说明的

42、情况下所说的状态指的是正常状态。实际上,初态和终态都是伪状态,即只有名字。从初态转移到正常状态可以给出一些特征,例如监护条件和动作。系统行为(生存周期)的建模工具状态图状态的规约:状态的由状态名、状态变量和活动三个部分组成状态名:是一个标识状态的文本串,也可以有匿名状态(无状态名)动作,即进入/退出之效应(effect):进入或退出该状态时所执行的动作。为了表达进入/退出之效应,UML给出2个专用的动作标号:Entry:该标号标识在进入该状态时所要执行的、由相应动作表达式所规定的动作,简称进入动作。Exit:该标号标识在退出该状态时所要执行的、由相应动作表达式所规定的动作,简称退出动作。活动:

43、为了表达状态内转换中的动作或活动,UML给出了一个专用的动作标号:do,该标号标识正在进行由其相应动作表达式所规定的活动。系统行为(生存周期)的建模工具状态图LoginLogin time = Current timeentry/type“login”exit/login(user name, password)do/get user namedo/get passwordhelp/display help举例:一个名为login的状态 表达动作的一般格式为:动作标号/ 动作表达式动作(action)和活动(activity)一个活动是指状态机中一种可中断的计算,中断处理后仍可继续;一个动作是

44、指不可中断的原子计算,它可导致状态的改变或导致一个值的返回。可见,一个活动往往是有多个动作组成的。系统行为(生存周期)的建模工具状态图子状态(Substate)如果在一个状态机中引入另一个状态机,那么被引入的状态机称为子状态机。子状态是被嵌套在另一状态中的状态。把没有子状态的状态称为简单状态;而把含子状态的状态称为组合状态。子状态可以是与子状态(And-substate),也可以是或子状态(Or-substate)。 系统行为(生存周期)的建模工具状态图ForwardBackwardRunning或子状态 ForwardBackwardHigh speedLow speedRunning与子状

45、态 事件一个事件是对一个有意义的发生的规约,该发生有其自己的时空。在状态机的语境下,一个事件是一个激励(stimulus),可引发状态的转换。事件的种类:内部事件:是在系统内对象之间传送的事件。例如,溢出异常。外部事件:是在系统和它的参与者之间传送的事件。例如:按下一个按钮,一个来自传感器的中断。系统行为(生存周期)的建模工具状态图模型化事件:在UML中有以下四种类型的事件: 信号事件:接收到一个显式的来自其他对象的信号,在图形上显示为状态转换上的一个event-signature。调用事件:对象调用了另一个对象中的操作。在图形上显示为状态转换上的一个event-signature。变化事件:

46、这种事件在图形上显示为一个状态转换上的guard-condition条件。时间事件:指定的一段时间的消耗:在图形上显示为状态转换上的一个时间表达式。 系统行为(生存周期)的建模工具状态图信号(signal)信号是消息的一个类目,是消息类型。像类一样,信号有属性和操作,信号之间可以有泛化。在UML中,可将信号模型化为信号类,使用signal来构造。用依赖衍型来表示一个操作发送了一个特定的信号。系统行为(生存周期)的建模工具状态图调用(call)一个调用事件表示对象接受到一个操作调用的请求。可以使用在类的定义中的操作定义来规约调用事件。该事件或触发状态机中的一个状态转换,或调用目标对象的一个方法。

47、“信号”是一种异步事件,而“调用”一般是同步事件,但可以把“调用”规约为异步调用。信号通常由状态机处理,而调用事件由一个方法来处理。系统行为(生存周期)的建模工具状态图时间事件是表示推移一段时间的事件。时间表达式可以是复杂的,也可以是简单的,例如:after 2 seconds,at(1 jan 2012,12.00).变化事件是表示一个条件得到满足或表示状态的一个变化。系统行为(生存周期)的建模工具状态图状态转换定义:状态转换是两个状态间的一种关系,指明在第一个状态中的一个对象将执行一些确定的动作,当规约的事件发生并规约的条件满足时,进入第二个状态。描述一个状态转换,包括:源状态转移触发器:

48、源状态中由对象识别的事件监护条件:一个布尔表达式效应:一种可执行的行为目标状态:标记格式为:事件触发器“监护条件”/动作表达式系统行为(生存周期)的建模工具状态图状态图的作用建立一个系统动态方面的模型,这些动态方面包括任意种类对象、任意系统结构(类、接口、构件和节点)视觉下以事件定序的行为。建立一个场景的模型,其主要途径是针对use case给出相应的状态图。其中,不论动态模型还是场景模型,通常都是对反应型对象(reactive object)的行为进行建模。系统行为(生存周期)的建模工具状态图反应型对象,或称为事件驱动的对象,其行为特征是响应其外部语境中所出现的事件,并作出相应的反应。系统行为(交互)的建模工具顺序图定义:顺序图是一种交互图,即由一组对象以及这些对象之间的关系组成,其中还包含这些对象之间被发送的消息。例如:顺序图示例 系统行为(交互)的建模工具顺序图包含的内容:交互各方:角色或对象交互方式:通讯或链交互内容:消息像其它图形一样,可以包含注解和约束。这些成分确定了交互的各种形态。从应用的角度来看,交互图是一个交互中各元素(各方、方式和内容)的投影。其中把这些元素的语义应用到交互图中。系统行为(交互)的建模工具顺序图说明:顺序图包含了一些由时间定序的消息。消息被表示为一条箭头线,从一条生命线到另一条生命线。其中

温馨提示

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

评论

0/150

提交评论