《软件需求分析》第14章.面向对象建模.ppt

上传人:wj 文档编号:30871860 上传时间:2024-09-13 格式:PPT 页数:75 大小:1.89MB
下载 相关 举报
《软件需求分析》第14章.面向对象建模.ppt_第1页
第1页 / 共75页
《软件需求分析》第14章.面向对象建模.ppt_第2页
第2页 / 共75页
《软件需求分析》第14章.面向对象建模.ppt_第3页
第3页 / 共75页
《软件需求分析》第14章.面向对象建模.ppt_第4页
第4页 / 共75页
《软件需求分析》第14章.面向对象建模.ppt_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

《软件需求分析》第14章.面向对象建模.ppt

《《软件需求分析》第14章.面向对象建模.ppt》由会员分享,可在线阅读,更多相关《《软件需求分析》第14章.面向对象建模.ppt(75页珍藏版)》请在冰豆网上搜索。

《软件需求分析》第14章.面向对象建模.ppt

第14章.面向对象建模主要内容1.面向对象分析2.对象模型3.用例模型4.行为模型5.对象约束语言OCL6.面向对象建模1.面向对象分析现实世界的复杂模型n复杂总是简单部分的组合n简单部分又是更简单部分的组合q简单组成复杂的过程存在层次性n每个最小简单部分独立负责完成一系列相关任务n相比较而言,每个组合内部各部分的关系比其内部与外部的关系都更紧密n各个部分通过一致的接口进行组合,即一个部分对其它部分的所知仅仅是接口1.面向对象分析映射现实模型的面向对象思想n任何系统都是能够完成一系列相关目标和任务的对象n对象完成一个任务时会请求一系列其他对象帮助其完成一些子目标n其他对象为了完成其任务又会请求将子目标更细分为子子目标,并请求其他对象帮助完成n子目标的分解和责任分担一直进行直到最后产生的子部分可以映射到计算实体n计算实体:

对象n层次关系:

聚合(组合)、继承、关联n组合接口:

一个对象暴露的接口1.面向对象分析面向对象建模n面向对象建模:

一种用于辨识系统环境中的对象及这些对象之间关系的技术qOMT(JamesRumbaugh)qBooch方法(GradyBooch)UMLqOOSE(IvarJacobson)qCoad-YourdonqShlaer-MellorqFusionJacobsonBoochJacobsonRumbaugh1.面向对象分析UML1.面向对象分析UMLnUMLq对象模型ObjectModel(DomainModel)q用例模型UseCaseModelq行为模型BehaviorModeln状态机模型q对象约束语言OCL主要内容1.面向对象分析2.对象模型1.组成元素2.重要概念3.领域模型3.用例模型4.行为模型5.对象约束语言OCL6.面向对象建模2.1对象模型组成元素对象n对象q对象是指在一个应用当中具有明确角色的独立可确认的实体n每个对象都要包含q标识n唯一的标识自己,引用q状态n对象的特征描述,包括对象的属性和属性的取值q行为n对象在其状态发生改变或者接收到外界消息时所采取的行动2.1对象模型组成元素对象n常见的事物都可以是对象q和系统存在交互的外部实体,例如人、设备、其他的软件系统等;q问题域中存在的事物,例如报表、信息展示、信号等;q在系统的上下文环境中发生的事件,例如一次外部控制行为、一次资源变化等;q人们在与系统的交互之中所扮演的角色,例如系统管理人员、用户管理人员、普通用户等;q和应用相关的组织单位,例如分公司、部门、团队、小组等;q问题域中问题发生的地点,例如车间、办公室等;q事物组合的结构关系,例如部分与整体的关系等。

2.1对象模型组成元素对象n但是也有事物不是对象q无法界定的事物q纯粹的值q纯粹的行为2.1对象模型组成元素对象n一个对象维护其自身的状态需要对外公开一些方法,行使其职能也要对外公开一些方法,这些方法组合起来定义了该对象允许外界访问的方法,或者说限定了外界可以期望的表现,它们是对象需要对外界履行的协议(Protocol)n一个对象的整体协议可能会分为多个内聚的逻辑行为组,划分后的每一个逻辑行为组就描述了对象的一个独立职责,体现了对象的一个独立角色n对象职责q职责是指对象持有、维护特定知识并基于知识行使固定职能的能力n如果一个对象拥有多个行为组,就意味着该对象拥有多个不同的职责,需要扮演多个不同的角色。

n理想的单一职责对象应该仅仅扮演一个角色2.1对象模型组成元素链接n链接q对象之间的物理或业务联系n链接通常是单向的,当然也有双向的链接存在n如果一个对象a存在指向b的链接,那就意味着a拥有对b的假设,关于b的行为和行为效果的假设。

也就是说,b需要满足a的某些行为期望2.1对象模型组成元素链接n导航和可见性q由a指向b的链接除了包含假设和期望因素之外,还意味着a能够在链接的指引下,正确的找到并将消息发送给b,即a可以导航到bq由a指向b的链接使得b对a可见,或者说a拥有b的可见性(Visibility)na获取b的可见性的途径有以下几种:

qb是全局对象,它对系统内的所有其他对象都是可见的;qb是a的一部分;qb是被a创建的;qb的引用被作为消息的一部分传递给了a2.1对象模型组成元素类n类q类是共享相同属性和行为的对象的集合,它为属于该类的所有对象提供统一的抽象描述和生成模板n抽象描述称为接口(Interface),定义了类所含对象对外的(其他类和对象)的统一协议n生成模板称为实现(Implementation),说明了类所含对象的生成机制和行为模式2.1对象模型组成元素类n类的分类q类产生的关键是进行正确的分类q人们认识和处理具体事物时总会有意识或无意识的对它们进行归类n数据驱动(Data-Driven)q将具有相同属性的对象归为一类q产生自哲学上传统的经典分类理论(ClassicalCategorizationTheory)n所有具有一个给定特性或共同特性集的实体组成一个类n职责驱动(Responsibility-Driven)q会依据事物的相似性而不是完全的相同性来进行事物的分类q产生自哲学上的概念聚类(ConceptualClustering)n使用概念描述而不是指定的特征来描述类别和事物,在进行事物分类时它会考虑概念之间的相似性,并将事物归入和其概念最为相似的类别2.1对象模型组成元素类n抽象q抽象是指在事物的众多特征当中只注意那些和目标密切相关的特征,同时忽略那些不相关的特征,进而找出事物的本质和共性q抽象是人们在理解事物时常用的手段n对象就是对现实世界事物的抽象结果,它表达了系统所需要的现实世界事物特征,抛弃了那些系统不需要的特征。

n类则是对象集的抽象结果,它忽略了具体某个对象在特定时间和空间的细节状态,从对象集的全局出发,在一个更高的逻辑层次上,描述了对象集的共性2.1对象模型组成元素类n封装q封装是指尽可能隐藏构造单位内部的实现细节,只通过有限的对外接口保持对外联系的一种软件构造策略n绝不是简单的将属性和行为放置在一起2.1对象模型组成元素关联n关联q指出了类之间的某种语义联系q关联是类对其对象实例之间的无数潜在关系的描述2.1对象模型组成元素关联2.2对象模型重要概念继承n如果一个类A继承了对象B,那么A就自然具有B的全部属性和服务,同时A也会拥有一些自己特有的属性和服务,这些特有部分是B所不具备的n结构继承和语义继承2.2对象模型重要概念继承2.2对象模型重要概念多态n广义多态q一个对象在相似情景下表现出多个不同形态,或者多个对象在同一情景中表现出相同形态的现象n一个对象在相似情景下表现出不同的形态q重载(Overloading)依据参数或返回值的不同为协议定义不同的版本,每一个版本都可以表现出自己独特的行为q泛型(Generality)使用同一个通用的实现处理不同的数据类型,然后根据数据类型的不同表现出不同的行为q狭义多态n多个对象在同一情景中表现出相同形态的现象2.3领域模型n类大多是概念类(ConceptClass),是一个能够代表现实世界事物的概念n概念类之间存在指明语义联系的关联,这些关联通常不标记方向,也不标记关联端的可见性n概念类会显式的描述自己的一些重要属性,但不是全部的详细属性,而且概念类的属性通常没有类型的约束n概念类不显式的标记类的行为,即概念类不包含明确的方法2.3领域模型SalesLineItemquantitySaledatetimeStoreaddressnameItemPaymentamountRegisterContained-inStocked-inRecords-sale-ofPaid-byHosuesCaptured-on1.*10.1111*111conceptordomainobjectassociationattributes11主要内容1.面向对象分析2.对象模型3.用例模型4.行为模型5.对象约束语言OCL6.面向对象建模3.用例模型n用例模型就是以用例为基本单位建立的一个系统功能展示模型,它是系统所有用例的集合,以统一、图形化方式展示系统的功能和行为特性n用例是获取和组织用户需求的手段n基本元素q用例(UseCase)q参与者(Actor)q关系(Relationship)q系统边界(SystemBoundary)3.用例模型SpecialActorSpecialActorActorBaseUseCaseExtendingUseCaseSpecializedUseCaseGeneralUseCaseBaseUseCaseIncludedUseCaseCommunication3.用例模型主要内容1.面向对象分析2.对象模型3.用例模型4.行为模型5.对象约束语言OCL6.面向对象建模4.行为模型n行为模型q交互图(InteractionDiagram)n顺序图(SequenceDiagram)n通信图(CommunicationDiagram)n交互概述图(InteractionOverviewDiagram)n时间图(TimingDiagram)q活动图(ActivityDiagram)q状态图(StateDiagram)4.行为模型交互图n交互图q以一组对象为中心的交互描述技术q描述在特定上下文环境中一组对象的交互行为q互图通常描述的是单个用例的典型场景q交互图中的每一个交互都描述了环境中的对象为了实现某个目标而执行的一系列消息交换q顺序图和通信图是最常用的交互图q交互图中出现的对象应该在领域模型中有相应的对象存在4.行为模型交互图n顺序图4.行为模型交互图n通信图q消息sequence-expression:

messagenmessageattribute=name(argument):

return-valuensequence-expressionlabeliteration-expressionqiteration-expression*iteration-clause|condition-clause4.行为模型交互图n系统顺序图q将整个系统看作一个黑箱的对象,强调外部参与者和系统的交互行为,重点展示系统级事件4.行为模型活动图n活动图q借鉴了多种BPM后建立的行为图q以“流”(控制流和数据流)处理为侧重点描述系统的行为q通常以组织的整体业务流程为描述对象的4.行为模型活动图n示例4.行为模型状态图n状态图q以状态机理论为基础建立的对系统行为的描述手段n状态机是以“状态”概念为基础解释系统行为的一种技术n有限状态机FSM(FiniteStateMachine)是用于建模的最简单的状态机n在FSM技术基础之上,发展出了多种分支技术,UML的状态图SD(StateDiagram)也是其中之一。

q主要用于描述重要而且复杂的对象的所有行为n这个对象的行为通常要涉及很多(甚至大部分)的用例4.行为模型状态图n状态机理论q状态机理论认为,系统总是处于一定的状态之中。

而且,在某一时刻,系统只能处于一种状态之中。

q系统在任何一个状态中都是稳定的,如果没有外部事件触发,系统会一直持续维持该状态。

q如果发生有效的触发事件,系统将会响应事件,从一种状态转移到唯一的另一种状态。

n如果能够罗列出系统所有可能的状态,并发现所有有效的外部事件,那么就能够从状态转移的角度完整的表达系统的所有行为4.行为模型状态图n简单示例ReadyReadystop/ctr:

=0Stopnormal状态状态状态状态触发触发触发触发行为行为行为行为开始状态开始状态开始状态开始状态转换转换转换转换结束状态结束状态结束状态结束状态DoneDone监护条件监护条件监护条件监护条件事件事件主要内容1.面向对象分析2.对象模型3.用例模型4.行为模型5.对象约束语言OCL6.面向对象建模5.对象约束语言OCLnOCL并不是UML中单独的一个模型,而是被应用在其他的模型当中,丰富其他模型的语义nOCL是一种无副作用的规约语言q以表达式的方式定义对其他模型元素的约束q约束和限制其他模型元素的行为和状态变化q不会修改任何其他模型元素的表述nOCL不是一种编程语言。

qOCL的首要定位是建模语言,因此它在保证一定表达能力的前提下,注重于语言的简洁性和抽象性q它无法被用来描述程序的控制逻辑和工作流程,它的表达式定义也无法在程序中得到直接的执行435.对象约束语言OCLn示例FlightAirplaneCargoFlightPassengerFlightPassengerPlaneCargoPlane110.*0.*110.*0.*0.*0.*11flights445.对象约束语言OCLn示例contextFlightinv:

type=#cargoimpliesairplane.type=#cargoinv:

type=#passengerimpliesairplane.type=#passenger10.*FlightAirplanetype:

enumofcargo,passengertype:

enumofcargo,passengerflights5.对象约束语言OCLn构成q类型q表达式q保留关键字5.对象约束语言OCLn主要应用q不变量不变量n不变量是可以对UML类元施加的约束q类元需要保持它的表达式取值在指定的时间范围内或者指定的条件下始终为“真”q最常见的是用来约束类的属性或者类的方法4.对象约束语言OCLn前置条件和后置条件前置条件和后置条件q前置条件要求类元在执行操作之前必须保证前置条件的表达式为真q后置条件要求类元在操作执行完成之后必须保证后置条件的表达式为真LoyaltyAccountpoints:

Integerearn(i:

Integer)burn(i:

Integer)isEmpty():

Booleanpoints=0points=pointspre-iclassinvariantpostconditionforburnoperationresult=(points=0)points=iandi=0preconditionforburnoperationpoints=pointspre+ii=05.对象约束语言OCLn监护条件监护条件q监护条件是对状态机模型中状态转移施加的约束n在状态机到达转移点时,监护条件的表达式需要根据实际状态进行评估,并只有在表达式实际取值为“真”的情况下才进行转移主要内容1.面向对象分析2.对象模型3.用例模型4.行为模型5.对象约束语言OCL6.面向对象建模1.技术路线2.领域模型建模3.行为模型建模4.CRC方法6.1面向对象建模技术路线n

(1)从用例描述中识别出对象和类;n

(2)分析用例的描述信息,添加类的属性和类之间的关联;n(3)从用例描述中识别系统行为;n(4)将系统行为分配给类;n(5)综合考虑类的属性与行为,细化类的职责,建立完全的对象模型。

6.1面向对象建模技术路线n面向对象分析的结果:

q建立领域模型q建立行为模型6.2领域模型建模n建立领域模型q发现对象和类n概念类分类列表概念类分类列表n名词分析名词分析n行为分析行为分析q建立类之间的关联q添加类的重要属性6.2领域模型建模发现对象和类n如果候选对象既维持一定的状态,又依据状态表现一定的行为,那么它就应该是一个独立存在的对象n如果候选对象只有状态没有行为,那么就要分析它的状态是否是系统需要的数据。

q如果系统需要它的状态数据,那么该候选对象就应该作为其他对象的属性出现在最终的领域模型当中。

q否则,该候选对象应该被摈弃n如果候选对象只有行为没有状态,那么往往意味着需求信息的遗漏n需要注意实体关系建模思想带来的误区6.2领域模型建模发现对象和类n概念类分类列表概念类分类列表q这种方法事先给出一个概这种方法事先给出一个概念类的分类列表,从中发念类的分类列表,从中发现对象现对象方式来源Shlaer-MellorShIaer1988RossRoss1987Coad-YourdonCoad1990分类列表有形的事物角色事件交互功能人地点事物组织:

集合体概念事件:

需要被记录结构其他系统设备事件:

需要被记录角色地点组织单位6.2领域模型建模发现对象和类n概念类分类列表示例概念类分类列表示例6.2领域模型建模发现对象和类n名词分析名词分析q从文本描述中识别出有关的名词和名词短语,然后从中发现对象6.2领域模型建模发现对象和类n行为分析q从需求描述中搜寻动词,识别出系统行为,然后从中发现对象用例描述行为候选对象确定对象概念类主动对象被动对象1.用户在第i层按下向上的楼层按钮按下用户第i层向上楼层按钮保留对象:

第i层的向上楼层按钮第i层的向上楼层按钮灯电梯电梯门计时器到第j层的电梯按钮到第j层的电梯按钮灯楼层按钮电梯按钮按钮灯电梯电梯门计时器1.第i层的向上按钮灯亮亮第i层的向上楼层按钮灯1.电梯到达第i层;到达电梯第i层1.第i层的向上楼层按钮灯灭灭第i层的向上楼层按钮灯1.电梯门开启开启电梯门1.计时器开始计时计时计时器1.用户进入电梯无1.用户按下到j层的电梯按钮按下用户到第j层的电梯按钮1.到第j层的电梯按钮灯亮亮到第j层的电梯按钮灯1.计时时间到,电梯门关闭到时计时器摈弃对象:

用户:

系统外对象,既没有状态也没有行为;第i层、第j层:

只有状态没有行为关闭电梯门1.电梯到达第j层到达1.到达j层的电梯按钮灯灭灭到第j层的电梯按钮灯1.电梯门开启开启电梯门1.计时器开始计时计时计时器1.用户走出电梯门无1.计时时间到,电梯门关闭到时电梯门关闭计时器6.2领域模型建模建立类之间的关联n保证类之间协作所必需的可见性n适当使用问题域内的关联,增强领域模型的可理解性q要适可而止n不要在关联的识别上花费太多的时间q识别概念类比识别关联更加重要n避免显示冗余和导出的关联6.2领域模型建模建立类之间的关联n示例6.2领域模型建模添加类的重要属性n实现类协作时必要的信息,是协作的条件、输入、结果或者过程记录n使用用户的描述方式,不进行类型和约束的严格定义6.3行为模型建模n建立行为模型q建立系统顺序图q在需要时n建立详细的交互图n建立用例的状态图或者重要类的状态图n建立活动图q为系统行为添加契约说明6.3行为模型建模建立交互图1.确定交互图的上下文环境q上下文环境的前置条件和后置条件应该被分配给交互图中的相应行为2.找出参与交互的对象q交互图中的参与对象(和对象之间的关联)应该和领域模型中的知识保持一致。

3.根据发现的对象(和关联)建立交互图框架4.添加消息,描述交互行为q考虑和系统相关的(系统内的、系统与外部对象之间的)交互行为,忽略那些与系统无关的(外部对象之间的)交互行为。

如果建立的是系统顺序图,那么系统内的行为也可以被忽略。

5.进行消息标识、特化图示等详细信息的描述,将交互图的信息补充完整。

6.3行为模型建模建立交互图6.3行为模型建模建立状态图1.确定上下文环境q搞清楚状态的主体常见的状态主体有:

类、用例、多个用例和整个系统2.识别状态,标记初始状态和结束状态q可能会不存在确定的初始状态和结束状态3.建立状态转换4.补充详细信息,完善状态图6.3行为模型建模建立状态图授权空闲销售开始商品信息显示错误提示列表显示销售结束授权YY空闲YYYY销售开始Y商品信息显示YY错误提示Y列表显示Y销售结束Y6.3行为模型建模建立活动图1.确定活动图的上下文环境q界定业务流程的处理界限2.分析业务流程中的主要处理步骤3.分析业务流程中的主要数据流4.进行职责分配,将业务流程的处理步骤划分到不同的泳道,并将处理步骤和数据流的传递组织起来,建立活动图5.添加活动图的详细信息,完善活动图描述6.3行为模型建模建立活动图6.3行为模型建模添加契约说明n不需要为所有的系统行为都定义操作契约,可以有选择的为其中的一部分系统行为定义操作契约q涉及到很多状态变化的复杂行为q因果关系比较微妙的模糊行为n可以从下面几个角度进行约束的发现工作:

q不变量:

系统行为中所涉及的敏感状态,这些状态的改变往往会产生广泛的连锁反应n不可改变的属性、不可改变的关联关系q前置条件:

行为发生和顺利完成所需要的系统的状态条件n合法的参数n有效的状态q对象的存在状态、对象的属性取值、有效的关联关系q后置条件:

行为顺利完成之后引起的系统状态改变n有效状态的改变q对象的存在状态、对象的属性取值n关联关系的改变6.3行为模型建模添加契约说明n示例Contract:

enterItem(itemID:

ItemID,quantity:

integer)CrossReferences:

ProcessSalePrecondition:

ThereisasaleunderwayPost-condition:

ASalesLineIteminstancessliwascreatedsliwasassociatedwiththecurrentSalesli.quantitybecomequantitysliwasassociatedwithaProductSpecification,basedonitemIDmatch6.4CRC方法nCRC是Candidates、Responsibilities和Collaborators三者的缩写n基于CRC可以建立一种索引卡片,被称为CRC卡,每个卡片代表了一个被发现的候选对象n形式可能是多种多样的,卡片、纸张、黑板等等都可以作为CRC卡的介质载体nCRC卡简洁方便,可以随时被移动、修改或者丢弃,所以它特别适合于在复杂的系统当中进行对象的发现和设计思想的挖掘,即进行复杂情况下的面向对象分析与设计6.4CRC方法CRC卡示例6.4CRC方法技术路线6.4CRC方法职责分配的注意事项n集中信息与行为。

n维持对象的角色。

n保持对象责任的相关性。

n保持对象的粒度。

n不要重复责任。

n必要的时候调整候选对象。

思考题n在需求获取阶段,需求工程师收集了大量的样本,包括文档、表格和报告,解释这些样本对面向对象建模有哪些用处n分析你所在学校使用的选课系统,给出它的详细和完备的面向对象分析模型描述。

本章小结n面向对象分析是90年代之后的主流分析方法,它以UML为基础,综合使用了多种不同的分析技术,主要有:

q对象模型ObjectModel(DomainModel)q用例模型UseCaseModelq行为模型BehaviorModeln状态机模型q对象约束语言OCLn面向对象分析任务的成功执行,除了要掌握多种面向对象分析技术之外,还需要掌握利用这些技术的建模方法nCRC方法是面向对象分析在处理复杂问题时的手段,但是它需要了解很多的建模知识才足以进行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1