使用UML进行面向对象分析和建模课件.ppt
使用使用使用使用UMLUML进行面向进行面向进行面向进行面向对象分析和建模对象分析和建模对象分析和建模对象分析和建模第第6 6章章Chapter 6Chapter 6OBJECT-ORIENTED ANALYSIS AND MODELING USING THE UML本章内容本章内容6.1 6.1 面向对象建模方法概述面向对象建模方法概述6.2 6.2 面向对象建模的基本概念面向对象建模的基本概念6.3 6.3 统一建模语言统一建模语言UMLUML6.4 6.4 使用用例建模系统需求使用用例建模系统需求6.5 6.5 对象分析建模过程对象分析建模过程6.1 6.1 面向对象建模方法概述面向对象建模方法概述n面向对象方法学面向对象方法学 采用面向对象的概念及其抽象机制建立应用系采用面向对象的概念及其抽象机制建立应用系统模型,将系统开发视为对象模型的转换和不统模型,将系统开发视为对象模型的转换和不断细化过程断细化过程n对象建模对象建模 是一种用于辨识系统环境中的对象和这些对象是一种用于辨识系统环境中的对象和这些对象关系的技术关系的技术面向对象的方法学面向对象的方法学n分析与设计的鸿沟分析与设计的鸿沟 面向对象的方法学面向对象的方法学n问题求解问题求解p面向对象设计方法:实现问题空间和问题求面向对象设计方法:实现问题空间和问题求解空间的近似和直接模拟。解空间的近似和直接模拟。意识部分教室物质部分303教室抽象部分教室类具体部分一个对象:教室实例现实问题空间解空间面向对象的软件开发方法n顺应人类思维习惯,让软件开发人员在解空间中直接模顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为拟问题空间中的对象及其行为n支持增量式开发,支持大型软件开发支持增量式开发,支持大型软件开发n支持软件重用支持软件重用n改善软件结构改善软件结构(模块化与封装模块化与封装),提高软件灵活性,提高软件灵活性s 抽象抽象软件工程的原则软件工程的原则s 可验证性可验证性s 完全性完全性s 一致性一致性s 模块化模块化(高内聚,低耦合高内聚,低耦合)s 信息隐藏信息隐藏 (局部化局部化)面向对象的软件开发方法面向对象建模方法概述n面向对象分析(面向对象分析(Object-Oriented AnalysisObject-Oriented Analysis,OOA)OOA)技术用于技术用于 1.1.研究现有对象,看它们是否能够被复用或者研究现有对象,看它们是否能够被复用或者被调整用于新的用途;被调整用于新的用途;2.2.定义各种新对象和修改后的对象,它们将于定义各种新对象和修改后的对象,它们将于现有对象一起组合成一个有用的企业计算应现有对象一起组合成一个有用的企业计算应用系统用系统n面向对象方法的核心是对象建模技术面向对象方法的核心是对象建模技术面向对象分析设计的基本思路面向对象分析设计的基本思路n识别对象和类识别对象和类n通过一组互相关联的模型详细表示类之间的关系通过一组互相关联的模型详细表示类之间的关系和对象的行为,并最终描述系统的信息、功能和和对象的行为,并最终描述系统的信息、功能和行为行为p静态逻辑模型静态逻辑模型p动态逻辑模型动态逻辑模型把系统的开发工作分为两个部分:微观过程和宏观过程。微观过程宏观过程Booch方法Jocobson方法(OOSE方法)用户标识标识系统的用户和他们的整体责任建造需求模型定义参与者和他们的责任;为每个参与者标识用例;准备系统对象和关系的初步视图;应用用例作为场景去复审模型以确定有效性建造系统模型使用参与者交互的信息来标识界面对象;创建界面对象的结构视图;表示对象行为;分离出每个对象的子系统和模型;使用用例作为场景去复审模型以确定合法性用例(use case)驱动,它建立的所有模型都是以用例模型为基础的。用例用以描述用户和系统间如何交互的场景 Rambaugh方法(OMT方法)对问题范围的陈述建造对象模型标识和问题相关的类;定义属性和关联;定义对象链接;用继承来组织对象类开发动态模型准备场景;定义事件并为每个场景开发一个事件轨迹;构造事件流图;开发状态图;复审行为的一致性和完整性构造系统的功能模型标识输入和输出;使用数据流图表示流变换;为每个功能开发PSPEC;规定约束和优化标准创建三个模型:对象模型(对象类、层次和关系的表示)、动态模型(对象和系统行为的表示)和功能模型(高层的类似DFD的系统信息流的表示)主要分为分析、设计和实现三个阶段。主要分为分析、设计和实现三个阶段。分析阶段:确定分析阶段:确定对象模型、动态模型和功能模型对象模型、动态模型和功能模型设计阶段:设计阶段:系统设计和对象设计系统设计和对象设计实现阶段的细节和具体的实现环境有关实现阶段的细节和具体的实现环境有关OMTOMT方法突出的特点是在分析阶段,它可以较为方法突出的特点是在分析阶段,它可以较为全面地描述系统的静态结构,所以全面地描述系统的静态结构,所以0MT0MT方法适合方法适合于数据密集型的信息系统的开发。于数据密集型的信息系统的开发。Rambaugh方法(OMT方法)统一建模语言(UML)统统 一一 建建 模模 语语 言言(UML)(UML)是是一一套套建建模模规规则则,它它使使用用对对象象说说明明或或描描述述软软件系统件系统UMLUML 并并未未规规定定一一种种系系统统开开发发方方法法,它它只只是是一一种种广广泛泛接接受受的的对对象象建建模模标标准的符号体系。准的符号体系。统统一一建建模模语语言言的的发发展展过过程程本章内容本章内容6.1 6.1 面向对象建模方法概述面向对象建模方法概述6.2 6.2 面向对象建模的基本概念面向对象建模的基本概念6.3 6.3 统一建模语言统一建模语言UMLUML6.4 6.4 使用用例建模系统需求使用用例建模系统需求6.5 6.5 对象分析建模过程对象分析建模过程6.2 6.2 面向对象的基本概念面向对象的基本概念n基本概念与特点基本概念与特点对象对象(Object)(Object)消息消息(Message)(Message)类类(Class)(Class)实例实例(Instance)(Instance)继承继承(Inheritance)(Inheritance)封装封装(Encapsulation)(Encapsulation)多态多态(Polymorphism)(Polymorphism)面向对象的世界观面向对象的世界观n把客观世界从概念上看成是一个由相互配合而把客观世界从概念上看成是一个由相互配合而协作的对象所组成的系统协作的对象所组成的系统n面向对象面向对象=对象对象+分类分类+继承继承+通信通信n一个实例一个实例椅子椅子对象:桌子价格尺寸重量位置颜色类:家具对象:椅子一个面向对象的实例椅子价格尺寸重量位置颜色买卖移动买卖移动买卖移动价格尺寸重量位置颜色对象对象n对象对象(Object)(Object)对象是用来描述客观存在的事物,它是构成系统的对象是用来描述客观存在的事物,它是构成系统的基本单位,是对客观世界中事物的抽象描述。基本单位,是对客观世界中事物的抽象描述。对象对象 行为(功能、方法、服务)行为(功能、方法、服务)属性(数据)属性(数据)属性属性行为行为接口接口对象对象对象对象对象对象6.2面向对象的基本概念n对象是由私有数据(属性)及作用于其上的一组操作对象是由私有数据(属性)及作用于其上的一组操作(行为)所构成的一个封闭整体(行为)所构成的一个封闭整体p由于对象的数据是私有的,所以要想访问其数据的由于对象的数据是私有的,所以要想访问其数据的正确方法是向该对象发送消息,让对象自身选择其正确方法是向该对象发送消息,让对象自身选择其内部相应的操作以完成对该项数据的访问内部相应的操作以完成对该项数据的访问p对象的动作取决于外界给对象的刺激,这就是消息,对象的动作取决于外界给对象的刺激,这就是消息,消息告诉对象所要求它完成的功能。对象具有一定消息告诉对象所要求它完成的功能。对象具有一定的智能功能,即的智能功能,即“知道知道”如何选择相应的操作来处如何选择相应的操作来处理对象所接收的消息理对象所接收的消息n从设计人员的角度看,对象是一个完成特定功能的程从设计人员的角度看,对象是一个完成特定功能的程序块序块n从用户的角度看,对象为他们提供了所希望的行为从用户的角度看,对象为他们提供了所希望的行为6.2 面向对象的基本概念n对象(Object)p对象标识p对象生命周期p对象的分类一般对象主动对象永久对象6.2 面向对象的基本概念n类类(Class)(Class)p一个对象类描述具有相似性质(属性)的一组一个对象类描述具有相似性质(属性)的一组对象,这组对象具有一般行为(操作),一般对象,这组对象具有一般行为(操作),一般的关系(对象之间)及一般语义。的关系(对象之间)及一般语义。p类是对象类的缩写,类中的对象有着相同的属类是对象类的缩写,类中的对象有着相同的属性、行为模式。性、行为模式。将事物进行归纳划分成不同的一些类是人们认识客观世界的基本思维方法。这种方法依据的原则是抽象,它忽略了客观事物非本质特性,将客观事物所具有的共同点,即本质特性划分为一类,形成对事物的本质认识,得出事物的抽象结果。6.2面向对象的基本概念n类(Class)结构化程序设计面向对象的程序设计6.2 6.2 面向对象的基本概念面向对象的基本概念6.2面向对象的基本概念n消息消息(Message)(Message)p对象之间的联系是通过传递消息来实现的。对象之间的联系是通过传递消息来实现的。p是对象之间进行通讯的一种数据结构。是对象之间进行通讯的一种数据结构。p消息统一了消息统一了“数据流数据流”和和“控制流控制流”。数据方法消息到达6.2面向对象的基本概念n消息消息 -消息传送与函数调用的区别消息传送与函数调用的区别函数调用可以带或不带参数,但是消息至少带函数调用可以带或不带参数,但是消息至少带一个参数,它表明接收该消息的对象,消息中一个参数,它表明接收该消息的对象,消息中告诉对象做什么的部分称为消息操作;告诉对象做什么的部分称为消息操作;消息操作名类似于函数名,其本质区别在于:消息操作名类似于函数名,其本质区别在于:函数名代表一段可执行的代码,但消息操作名函数名代表一段可执行的代码,但消息操作名具体功能的选定还取决于接收消息的对象本身具体功能的选定还取决于接收消息的对象本身函数调用是过程式的(如何做),消息传送是函数调用是过程式的(如何做),消息传送是说明式的(做什么),具体如何做,由对象根说明式的(做什么),具体如何做,由对象根据收到的消息自行确定。据收到的消息自行确定。n实例实例(Instance)(Instance)属于某类的具体对象就是该类的实例。一个属于某类的具体对象就是该类的实例。一个类的不同实例必定具有:类的不同实例必定具有:p相同的操作(或行为)的集合相同的操作(或行为)的集合p相同的信息结构或属性定义,但可以有不同相同的信息结构或属性定义,但可以有不同的属性值的属性值p不同的对象标识不同的对象标识6.2面向对象的基本概念6.2面向对象的基本概念n实例(Instance)6.2面向对象的基本概念n继承继承(Inheritance)(Inheritance)p是自动共享类、子类和对象中的方法和数据的机制。是自动共享类、子类和对象中的方法和数据的机制。是实现从可重用成分构造系统的最有效的特性是实现从可重用成分构造系统的最有效的特性n封装封装(Encapsulation)(Encapsulation)p封封装装是是一一种种信信息息隐隐蔽蔽技技术术,就就是是把把对对象象的的属属性性和和行行为为相相结结合合构构成成一一个个独独立立的的基基本本单单位位,用用户户只只能能见见到到对对象象封封装装界界面面上上的的信信息息,对对象象内部对用户是隐蔽的。内部对用户是隐蔽的。p封封装装的的目目的的在在于于将将对对象象的的使使用用者者和和对对象象的的设设计计者者分分开开,使使用用者者不不必必知知道道行行为为实实现现的的细细节节,只需使用设计者提供的消息访问对象只需使用设计者提供的消息访问对象6.2面向对象的基本概念PosPosColorColor 公有公有消息消息私有私有消息消息存储结构存储结构方法方法协协.议议一个对象一个对象6.2 6.2 面向对象的基本概念面向对象的基本概念6.2面向对象的基本概念n多态多态(Polymorphism)(Polymorphism)即一个即一个名字具有多种语义名字具有多种语义。p同一对象接收到不同消息采用不同的行为方式同一对象接收到不同消息采用不同的行为方式p不同对象收到相同消息时产生不同的动作不同对象收到相同消息时产生不同的动作p重载(重载(overloadoverload)p动态绑定动态绑定p类属类属本章内容本章内容6.1 6.1 面向对象建模方法概述面向对象建模方法概述6.2 6.2 面向对象建模的基本概念面向对象建模的基本概念6.3 6.3 统一建模语言统一建模语言UMLUML6.4 6.4 使用用例建模系统需求使用用例建模系统需求6.5 6.5 对象分析建模过程对象分析建模过程p UnifiedModelingLanguage(UML)UnifiedModelingLanguage(UML)是是一套建模一套建模规则规则,它使用,它使用对对象象说说明或描述明或描述软软件系件系统统。p UMLUML并未并未规规定一种系定一种系统统开开发发方法,它只方法,它只是一种广泛接受的是一种广泛接受的对对象建模象建模标标准的符号准的符号体系。体系。pOMGOMG于于19971997年采年采纳为纳为国国际标际标准。准。6.3 统一建模语言UML对象、属性和实例表表示示一一个个对对象象实实例例,对对象象实实例例的的名名称称为为:412209;分分类类为为:Customer。表表示示一一个个对对象象实实例例的的属属性性。对对象象实实例例的的名名称称是是唯唯一一表表示示该该对对象象的属性值。的属性值。对象类表表示示一一个个对对象象类类,主主要要包包含含三三部部分分:对对象象类类的的名名称称、属属性性名名称称、方法名称。方法名称。继承InheritanceInheritance the concept wherein methods and/or attributes defined in an object class can be inherited or reused by another object class.继承(cont.)概化、特化概化概化/特化特化 是一种技术,其中几类对象类的公共属性是一种技术,其中几类对象类的公共属性和行为被组合成类,称为超类,超类的属性和方法可被和行为被组合成类,称为超类,超类的属性和方法可被子类(即上述对象类)继承。子类(即上述对象类)继承。超类超类 是包含一个或多个对象子类的公共属性和行为是包含一个或多个对象子类的公共属性和行为的实体,也称为抽象类或父类。的实体,也称为抽象类或父类。子类子类 是一个对象类,它从一个超类继承属性和行为,是一个对象类,它从一个超类继承属性和行为,并可能包含自身所特有的属性和行为。如果它位于继承并可能包含自身所特有的属性和行为。如果它位于继承层次的最底层,也称为实类层次的最底层,也称为实类.UML Representation of Generalization/Specialization对象对象/类的关联关系类的关联关系 对象对象/类的关联关系类的关联关系 是一种存在于一个或多个对象/类之间的自然业务联系。连连线线表表示示类类之之间间的的关关联联关关系系:places 关联关系是双向的关联关系是双向的 一个客户提交零一个客户提交零个或多个订单个或多个订单 一个订单由一个一个订单由一个且仅有一个客户提且仅有一个客户提交交重数重数:定义重数:定义一个对象一个对象/类类对应相关对对应相关对象类的一个象类的一个实例关联可实例关联可能的最小出能的最小出现次数和最现次数和最大出现次数大出现次数.聚合关系聚合关系聚合关系:是一个较大的聚合关系:是一个较大的“整体整体”类饱含一个或多个较小的类饱含一个或多个较小的“部分部分”类之间的关系。类之间的关系。合成关系合成关系合成关系:是合成关系:是一种特殊的聚一种特殊的聚合关系,其中合关系,其中“整体整体”负责负责其其“部分部分”的的创建和销毁,创建和销毁,如果整体不存如果整体不存在,部分也不在,部分也不存在存在.消息消消息息请请求求:包包括括请请求求行行为为名名称称和和对对象象所所需需属性名称属性名称多态多态:不同对象可多态:不同对象可以以不同的形式响以以不同的形式响应同样的消息应同样的消息.重载:是一种技术,重载:是一种技术,其中子类使用它自其中子类使用它自己的属性或行为,己的属性或行为,而不是从父类继承而不是从父类继承属性或行为。属性或行为。UML Diagramsn用例模型图(用例模型图(Use-Case Model DiagramsUse-Case Model Diagrams)n静态结构图(静态结构图(Static Structure DiagramsStatic Structure Diagrams)p类图(类图(Class diagramsClass diagrams)p对象图(对象图(Object diagramsObject diagrams)n交互图(交互图(Interaction DiagramsInteraction Diagrams)p顺序图(顺序图(Sequence diagramsSequence diagrams)p协作图(协作图(Collaboration diagramsCollaboration diagrams)n状态图(状态图(State DiagramsState Diagrams)p状态图(状态图(StatechartStatechart diagrams diagrams)p活动图(活动图(Activity diagramsActivity diagrams)n实现图(实现图(Implementation DiagramsImplementation Diagrams)p组件图(组件图(Component diagramsComponent diagrams)p部署图(部署图(Deployment diagramsDeployment diagrams)是是一一种种用用于于建建模模需需求求的的技技术术.它它以以图图形形化化的的方方式式描描述述系系统统与与外外部部系系统统和和用用户户的的交交互互。用用例例描描述述也也用用于于以以文文本本化化的的方方式式描描述述每每个个交交互互步步骤骤的的顺序顺序描描述述系系统统的的对对象象结结构构.它它们们显显示示构构成成系系统统的的对对象象类类,以及对象类之间的关系以及对象类之间的关系.建模实际的对象实例建模实际的对象实例描描述述在在一一个个用用例例或或操操作作的的执执行行过过程程中中对对象象如如何何通通过过消消息息互互相相交交互互,说说明明了了消消息息如如何何在在对对象象之之间间被被发发送送和和接接受受以以及及发发送的顺序。送的顺序。类类似似于于顺顺序序图图,但但重重点点不不是是消消息息的的定定时时或或“顺顺序序”,相相反反,它它以以一一种种网网络络格格式式表表现现对对象象之之间间的交互(或协作)的交互(或协作)建模一个特定对象的动态行为,建模一个特定对象的动态行为,说明了一个对象的生命周期说明了一个对象的生命周期对象可以经历的各种状态,对象可以经历的各种状态,以及引起对象从一个状态向另以及引起对象从一个状态向另一个状态转换的事件。一个状态转换的事件。描述活动的序列流描述活动的序列流用用于于描描述述系系统统的的软软件件组组件的组织和依赖关系件的组织和依赖关系描述系统中硬件和软件的描述系统中硬件和软件的物理架构,用以说明构成物理架构,用以说明构成系统架构的运行时软件组系统架构的运行时软件组件、处理器和设备的配置。件、处理器和设备的配置。使用使用使用使用UMLUML进行面向进行面向进行面向进行面向对象分析和建模对象分析和建模对象分析和建模对象分析和建模第第6 6章章Chapter 6Chapter 6OBJECT-ORIENTED ANALYSIS AND MODELING USING THE UML本章内容本章内容6.1 6.1 面向对象建模方法概述面向对象建模方法概述6.2 6.2 面向对象建模的基本概念面向对象建模的基本概念6.3 6.3 统一建模语言统一建模语言UMLUML6.4 6.4 使用用例建模系统需求使用用例建模系统需求6.5 6.5 对象分析建模过程对象分析建模过程6.4 6.4 使用用例建模系统需求使用用例建模系统需求n对于信息系统开发来说,最主要的挑战就是能对于信息系统开发来说,最主要的挑战就是能够从相关人员那里提取出够从相关人员那里提取出正确的确实需要的系正确的确实需要的系统需求统需求,并以这些相关人员可以理解的方式进,并以这些相关人员可以理解的方式进行说明,以便需求可以得到验证和证实。行说明,以便需求可以得到验证和证实。构造一个软件系统最困难的部分是正确地构造一个软件系统最困难的部分是正确地确定要构造什么。确定要构造什么。Fred Brooksn传统抽取需求的方法传统抽取需求的方法.p 数据和过程模型数据和过程模型,原型系统原型系统,需求规范需求规范.p 设计者易于理解,而用户难以明白设计者易于理解,而用户难以明白.p 导致范围蔓延、进度蔓延和费用超支导致范围蔓延、进度蔓延和费用超支.6.4 6.4 使用用例建模系统需求使用用例建模系统需求Standish Group Standish Group 报告的项目成功率报告的项目成功率Source:The Standish Group International,Inc.,“Chaos:A Recipe for Success”canceled before completionOver budget,late,or without needed features以用户为中心的开发和用例建模以用户为中心的开发和用例建模以用户为中心的开发以用户为中心的开发 (User-centered developmentUser-centered development)是一个系统开发过程,该过程基于对是一个系统开发过程,该过程基于对关联人关联人员的需求员的需求以及对以及对开发系统的原因开发系统的原因的充分理解之上的充分理解之上.Davidson,W.H.Beyond re-engineering:The three phases of Davidson,W.H.Beyond re-engineering:The three phases of business transformation.IBM Systems Journal 32(1)1993.business transformation.IBM Systems Journal 32(1)1993.(reprinted in 38(2&3)1999 pp.485-499.)(reprinted in 38(2&3)1999 pp.485-499.)http:/ 以用户为中心的开发和用例建模以用户为中心的开发和用例建模用例建模(用例建模(Use-case modelingUse-case modeling)是使用是使用业务事件、发起业务事件的人、以及系统如何响应业务事件、发起业务事件的人、以及系统如何响应这些事件来建模系统功能的过程这些事件来建模系统功能的过程.p用例建模来源于面向对象建模技术用例建模来源于面向对象建模技术.p由于在与用户沟通方面的优势,使之在非面向对象由于在与用户沟通方面的优势,使之在非面向对象开发环境也广为流行开发环境也广为流行.p弥补了传统系统分析和设计工具的不足,提供了架弥补了传统系统分析和设计工具的不足,提供了架构决策和用户界面设计决策的基础构决策和用户界面设计决策的基础.用例建模的优势用例建模的优势n提供了提供了捕捉功能需求捕捉功能需求的工具的工具n有助于将系统范围分解成更易管理的小块有助于将系统范围分解成更易管理的小块n提供了与用户以及其他关心系统功能的关联人员进行交流提供了与用户以及其他关心系统功能的关联人员进行交流的工具的工具n提供了确定、分配、跟踪、控制和管理系统开发活动的手提供了确定、分配、跟踪、控制和管理系统开发活动的手段段n辅助估计项目范围、投入和进度辅助估计项目范围、投入和进度n为为定义测试计划和测试用例定义测试计划和测试用例提供了一个基准提供了一个基准n为用户帮助系统和手册以及系统开发文档提供了一个基准。为用户帮助系统和手册以及系统开发文档提供了一个基准。n提供了提供了需求跟踪需求跟踪的工具的工具n提供了确定数据对象或实体的起点提供了确定数据对象或实体的起点n提供了设计用户和系统提供了设计用户和系统接口的功能规格说明接口的功能规格说明n提供了定义数据库访问需求的手段提供了定义数据库访问需求的手段n提供了驱动系统开发项目的一个框架提供了驱动系统开发项目的一个框架用例建模的概念用例建模的概念用例用例(Use caseUse case)是一个行为上相关的步骤序是一个行为上相关的步骤序列(一个场景),即可以是自动的也可以是手工的,列(一个场景),即可以是自动的也可以是手工的,其目的是完成一个单一的业务任务其目的是完成一个单一的业务任务.p用例是从外部用户的观点并以他们可以理解的用例是从外部用户的观点并以他们可以理解的方式和词汇描述了系统功能方式和词汇描述了系统功能.用例图用例图(Use-case diagramUse-case diagram)是描述系统与是描述系统与其他外部系统以及用户之间交互的图形。其他外部系统以及用户之间交互的图形。p用例图以图形的方式描述了谁将使用系统,用用例图以图形的方式描述了谁将使用系统,用户希望以什么方式与系统交互户希望以什么方式与系统交互.用例描述用例描述(Use-case narrativeUse-case narrative)是业务事件是业务事件以及用户如何同系统交互以完成任务的文字描述以及用户如何同系统交互以完成任务的文字描述.简单的用例图简单的用例图基本的用例符号用例(用例(Use caseUse case)全部系统功能的子全部系统功能的子集集p一个用例代表了系统的一个单一目标一个用例代表了系统的一个单一目标.参与者(参与者(ActorActor)代表了需要同系统交代表了需要同系统交互以交换信息的任何事物互以交换信息的任何事物.p可以是人、组织、另一个信息系统、一可以是人、组织、另一个信息系统、一个外部设备或是时间个外部设备或是时间.时序事件(时序事件(Temporal eventTemporal event)是由时是由时间触发的系统事件间触发的系统事件.p一个时序事件的参与者是时间一个时序事件的参与者是时间.四种类型的参与者四种类型的参与者n主要业务参与者主要业务参与者 p主要从用例执行中获得好处主要从用例执行中获得好处.pe.g.e.g.用户从支付系统接收工资用户从支付系统接收工资n主要系统参与者主要系统参与者p直接同系统交互发起或触发业务或系统事件的关联人员直接同系统交互发起或触发业务或系统事件的关联人员.pe.g.e.g.银行出纳员处理一个存款事务银行出纳员处理一个存款事务n外部服务参与者外部服务参与者 p响应来自用例的请求的关联人员响应来自用例的请求的关联人员.pe.g.e.g.信用卡部门认证一个信用卡支付信用卡部门认证一个信用卡支付n外部接收参与者外部接收参与者p不是主要参与者但从用例接收某些可度量的或可观察的价值不是主要参与者但从用例接收某些可度量的或可观察的价值.pe.g.e.g.当顾客下了一个订单后,仓库收到一个打包单准备发货。当顾客下了一个订单后,仓库收到一个打包单准备发货。关联关系关联关系(关联关系(AssociationAssociation)是一个参与者与一是一个参与者与一个用例发生交互的关系个用例发生交互的关系.p关联关系是用一条连接参与者和用例之间的实关联关系是用一条连接参与者和用例之间的实线来建模线来建模.p有箭头的关联关系表示参与者发起用例有箭头的关联关系表示参与者发起用例.p无箭头的关联关系表示用例与外部服务者或接无箭头的关联关系表示用例与外部服务者或接受参与者交互受参与者交互.p关联关系可以是单向的,也可以是双向的关联关系可以是单向的,也可以是双向的.关联关系扩展关系扩展用例(扩展用例(Extension use caseExtension use case)是一个由从是一个由从某个更复杂的用例中提取出来的步骤构成的用例,某个更复杂的用例中提取出来的步骤构成的用例,以便简化原始用例并扩展其功能以便简化原始用例并扩展其功能.p扩展用例与原用例之间的关系称作扩展关系扩展用例与原用例之间的关系称作扩展关系.p一个用例可以有多个扩展关系,但一个扩展用例一个用例可以有多个扩展关系,但一个扩展用例只能被它扩展的用例调用只能被它扩展的用例调用.p每一个扩展关系可用一个标记为每一个扩展关系可用一个标记为 “.”.”的有向箭头线来表示。的有向箭头线来表示。扩展关系生成仓库打包订单提交新会员订单计算订单总额和销售税使用关系抽象用例(抽象用例(Abstract use caseAbstract use case)通过组合几通过组合几个用例中公共的步骤降低用例之间的冗余个用例中公共的步骤降低用例之间的冗余.p抽象用例可以被另一个需要使用它的功能用例访抽象用例可以被另一个需要使用它的功能用例访问问.p抽象用例和使用它的用例之间的关系称为使用关抽象用例和使用它的用例之间的关系称为使用关系(包含关系)系(包含关系).p使用关系表示成一个箭头线,起点是原始用例,使用关系表示成一个箭头线,起点是原始用例,箭头指向它使用的用例箭头指向它使用的用例.p每个使用关系标记为每个使用关系标记为“useuse”提交新会员订单使用关系提交通信地址改变修改通信地址依赖关系依赖关系(依赖关系(Depends OnDepends On)用以说明系统的用以说明系统的用例之间的依赖性用例之间的依赖性.p有助于确定用例之间的开发顺序有助于确定用例之间的开发顺序.p用一个标记为用一个标记为“depends ondepends on”的有向箭的有向箭头线表示头线表示依赖关系建立银行帐户取款存款继承关系继承关系(继承关系(InheritanceInheritance)当几个参与者共当几个参与者共享同样的行为时,即发起同样的用例,可将这些享同样的行为时,即发起同样的用例,可将这些公共行为分配给一个新的抽象参与者,以便降低公共行为分配给一个新的抽象参与者,以便降低与系统通信的冗余与系统通信的冗余.p其他参与者可继承抽象参与者的交互行为其他参与者可继承抽象参与者的交互行为.继承关系申请会员查询库存借书申请会员借书查询库存抽象参与者抽象参与者继承关系继承关系需求用例建模过程需求用例建模过程n构造构造p表述用户需要什么表述用户需要什么.p不涉及系统将如何构造和实现的特定细节不涉及系统将如何构造和实现的特定细节.n为了有效地估计和调度项目,模型可能需要包含为了有效地估计和调度项目,模型可能需要包含初始的初始的“系统实现假设系统实现假设”n产生需求用例模型的步骤产生需求用例模型的步骤1.1.确定与业务相关的参与者确定与业务相关的参与者.2.2.确定业务需求用例确定业务需求用例.3.3.构造用例模型图构造用例模型图.4.4.记录业务需求用例描述记录业务需求用例描述.需求用例建模过程需求用例建模过程1)速度是关键;)速度是关键;2)迭代和增量式开发)迭代和增量式开发3)保保证证基基本本的的体体系系结结构正确构正确Step 1:确定与业务相关的参与者n通过如下问题寻找参与者通过如下问题寻找参与者:p谁或什么为系统提供输入谁或什么为系统提供输入?p谁或什么接收系统的输出谁或什么接收系统的输出?p需要与其他系统接口吗需要与其他系统接口吗?p是否存在在预定的时间自动触发的事件是否存在在预定的时间自动触发的事件?p谁将维护系统中的信息谁将维护系统中的信息?重点在于如何使用重点在于如何使用系统,参与者决定系统,参与者决定了系统需求的完整了系统需求的完整性性Sample List of Actors 专业术语 同义语 描述Step 2:确定业务需求用例n在需求分析阶段,仅仅确定和记录在需求分析阶段,仅仅确定和记录最关键最关键、最最复杂复杂和和最重要最重要的用例,这些用例也被称作基本的用例,这些用例也被称作基本用例用例.n通过以下用例确定问题通过以下用例确定问题:p参与者的主要任务是什么参与者的主要任务是什么?p参与者需要系统什么信息参与者需要系统什么信息?p参与者为系统提供什么信息参与者为系统提供什么信息?p系统需要通知参与者发生的变化和事件吗系统需要通知参与者发生的变化和事件吗?p参与者需要通知系统发生的变化和事件吗参与者需要通知系统发生的变化和事件吗?一个上下文图的示例上上下下文文图图是是分分析析参参与与者者和和发发现现潜潜在在用用例的极好来源。例的极好来源。通通过过看看图图可可确确定定系系统统的的主主要要输输入入和和输输出出,以以及及确确定定潜潜在在的用例。的用例。用例字典示例continued1、触触发发组组织织内内的的业业务务事事件件的的主主要要输输入入将将被被确确定定为为用用例例;提提供供这这些些输输入入的的外部各方被认为是参与者;外部各方被认为是参与者;2、用用例例使使用用输输入入的的名名称称前前加加一一个个行行动动词来命名。动动词来命名。用例字典示例(continued)continued用例字典示例(continued)Step 3:Step 3:建造用例模型图建造用例模型图用例被组合成业务用例被组合成业务子系统,子系统表子系统,子系统表示了业务过程的逻示了业务过程的逻辑功能区。辑功能区。Step 4:Step 4:记录业务需求用例描述记录业务需求用例描述n当准备用例描述时,首先在高层记录,以便尽当准备用例描述时,首先在高层记录,以便尽快理解系统的事件和量级快理解系统的事件和量级.n然后,再回到每个用例,扩展它以完全地记录然后,再回到每个用例,扩展它以完全地记录业务需求描述业务需求描述.p包括用例的典型事件序列和异常情况下的事包括用例的典型事件序列和异常情况下的事件序列件序列.下新订单用例描述的高层版本下新订单用例描述的高层版本下新订单用例描述的扩展版本下新订单用例描述的扩展版本continued下新订单用例描述的扩展版本下新订单用例描述的扩展版本(cont)continued下新订单用例描述的扩展版本下新订单用例描述的扩展版本(cont)用例与项目管理用例与项目管理n用例模型可以驱动整个系统开发活动用例模型可以驱动整个系统开发活动.n项目经理或者系统分析员可使用业务需求用例项目经理或者系统分析员可使用业务需求用例计划(估计和安排进度)项目的构建周期计划(估计和安排进度)项目的构建周期.p一个构建周期包括系统分析、设计和构造活一个构建周期包括系统分析、设计和构造活动,主要根据用例的重要性和用例的构造时动,主要根据用例的重要性和用例的构造时间进行框定间进行框定.p一般会在每个构造周期开发几个用例,最初一般会在每个构造周期开发几个用例,最初实现一个简化版本,然后再在以后的周期中实现一个简化版本,然后再在以后的周期中逐步实现完全的版本逐步实现完全的版本用例与项目管理用例与项目管理n为确定用例的重要性为确定用例的重要性:p用例分级和评估矩阵用例分级和评估矩阵p用例依赖图用例依赖图用例分级和评估矩阵用例分级和评估矩阵n在大多数项目中,最重要的用例最早开发在大多数项目中,最重要的用例最早开发.用例分级和评估矩阵(用例分级和评估矩阵(Use-case ranking Use-case ranking and priority matrixand priority matr