识别目标语言的规则。 限定UML的特定用法,例如多继承,Java/Smalltalk不支持类的多继承 用标记值{language=Java}说明目标语言。 使用工具。
逆向工程Reverse Engineering 代码到模型的过程,从编程语言到UML的过程。大量细节多余,不完整。 识别编程语言到UML映射规则。 可用辅助工具完成。 建议例子:
? 商品销售管理系统 ? 电子商务:网上书店 ? 图书馆管理系统 ? 大学教务管理系统
4 基本行为建模:交互和交互图
激励stimuli是什么?
一个实例对另一个实例传递某些信息,如发出某信号或调用某操作。 接受到一个信号通常认为发生了一个事件。
一个激励涉及两方对象:发送者sender和接收者receiver。
什么是信号signal?
实例间进行通信的一种异步的激励的规范。
信号可带有参量。异常exception是一种常见的信号。
什么是消息message?
一个实例发送给另一个实例的信息的规范,期望某种活动相继发生。
什么是动作action?
一个可执行语句的规范,形成一个计算过程的抽象。
典型地,一个动作会导致系统状态改变,可通过给某对象发送消息、或修改某个链、或某个属性值来实现。
主要有哪些动作?
创建动作create action
撤销动作destroy action 调用动作call action 返回动作return action 发送动作send action
终止动作terminate action 一个实例自己停止生存而消亡。
赋值动作assignment action 把一个实例赋予一个属性或一个链。
动作在瞬间发生,无时间延续性,有原子性,不能被中断。
什么是活动activity?
一系列动作的规范,有时间延续,无原子性,可被中断。
4.1 交互
原理:对象不是单独存在,相互之间需要传递消息以达到特定目的。
什么是交互interaction?
在特定语境中,一组对象为完成特定任务,而相互发送消息的规范。
一个消息可以是发出一个信号或调用某个操作。
4.2 交互图
什么是交互图interaction diagram?
表示实例间交互的模式。有两种形式:序列图和协作图,可表示相同内容。 内容:对象、链、消息、循环迭代与条件选择、注解和约束 对控制流建模。
什么是序列图sequence diagram?
按时间次序表示交互。水平和垂直方向;生命线和控制焦点。
如何理解协作collaboration?
行为的实现是一组对象为完成特定任务而交换激励。
一种协作定义了与特定目的相关的一组参与者(participant)及关系。 这些参与者定义了交互时对象所扮演的角色。
一种协作是一个操作或类元classifer(如一个用例)是如何由一组类元及其间关联来实现的规范;在一个协作中所涉及的各类元以特定方式扮演特定角色。一种协作涉及多个类且一个类可参与多种协作。协作定义了由实例和链所扮演的一组角色,以及一组交互,定义了当实例扮演其角色时相互间的通信。
什么是协作图collaboration diagram?
按对象结构组织表示交互。平面组织;链路径和消息顺序号。
两种抽象级别的协作图:
? 规范级:表示类元角色,关联角色和消息;在协作中的各种角色及结构。 ? 实例级:表示对象,链和激励;在协作中与角色相符合的实例。
如何对交互建模?
1、按时间顺序对控制流建模
? 确定交互语境:系统、子系统、操作、类、用例。 ? 识别对象扮演的角色,设置交互场景。 ? 设置对象生命线。
? 从引发交互开始、自上而下展开消息。 ? 控制焦点作为修饰,消息嵌套,计算过程。 ? 定时标记作为约束。
? 前置和后置条件。 2、按对象组织对控制流建模
? 确定交互语境:系统、子系统、操作、类、用例。 ? 识别对象扮演的角色,设置交互场景。
? 设置对象初始特征。<
? 首先安排关联的链,表示结构连接。
? 然后安排其它链,增加修饰。<
提示
什么是结构良好的交互图?
? 仅关注于动态特征的某个方面。
? 只包含对于理解此方面必不可少的元素。 ? 提供与抽象层次相一致的细节和修饰。 ? 避免过于简化或抽象,以免误解。
绘制交互图策略:
? 给出一个表示交互目的的名称 ? 选择序列图还是协作图。 ? 减少线交叉
? 注解和颜色突出表示。
? 尽可能少用条件选择,协作图表示复杂条件。
5 高级行为建模:状态图和活动图
5.1 状态图
什么是状态state?
一个对象生命期中的某个条件或状况,对象满足某些条件、或正执行某些活动或正等待某些事件。
什么是事件event?
1. 一类可观察的所发生事情的规范,发生在瞬间,无时间延续性。
2. 在特定时间和地点所发生的重要事情的规范。在状态图中,一个事件能触发状态转换。事件可带参数。
有哪些常见的事件?
? 调用事件CallEvent,表示接纳一个请求以同步调用一个特定操作。调用事件实例
区别于调用动作,调用动作会导致一个调用事件。两种特例是对象创建事件和对象消亡事件。
? 信号事件SignalEvent,表示接收到某一特定异步信号。区别于发出信号的动作。 ? 时间事件TimeEvent, 表示从进入当前状态后逝去的时间。
? 改变事件ChangeEvent。当一个显式布尔表达式的值变为true时,该事件发生,这
是一个或多个属性或关联值的改变所导致的结果。改变事件是隐式引发的,且不是一些显式改变事件动作的结果。
什么是状态机state machine?
一种行为,描述一种对象或一种交互在其生命期中,响应各种事件而经历的状态变化序列,以及对象的响应和动作。
什么是状态图statechart diagram?
描述状态机的一种图。除了类,还可描述其它模型实体的行为,如用例、作用者、子系统、操作和方法。
入口动作entry action
在状态机中进入某个状态所执行的动作,不涉及到达该状态的转换。
出口动作exit action
在状态机中退出某个状态所执行的动作,不涉及退出该状态的转换。
终态final state
一种特殊状态,表示封闭的复合状态结束,若是顶层状态,则整个状态机结束。终态不会有外出的转换。
激发fire
执行某个状态转换。
转换transition
某对象的两个状态之间的一种关系,当对象处于第一个状态,当某个确定事件发生且满足确定条件时,对象在执行特定动作后进入第二个状态。对于这样一个状态改变,转换被称作“激发”fire。在一个源状态顶点和一个目标状态顶点之间的一种直接的关系。一个转换可以是某个混合(compound) 转换的一部分,该混合转换将状态机从一个状态配置转到另一个,以表示该状态机对某个事件实例的完整响应。
顶点vertex
在状态机中某个转换的源或目标。一个顶点可以是一个状态或伪状态。元模型中有如下子类:State状态,Pseododstate伪状态,Synchstate同步状态和Stubstate桩状态。
内部转换internal transition
一种特殊转换,表示处于某状态的对象对某事件做出反应而未改变其状态。
守护条件guard condition
为激发某个相关的状态转换而必须满足的条件。
守护guard
连接在一个转换上的一个布尔表达式,以细粒度控制转换。在事件发生以后,守护条件开始计算是否为真,若为真则转换,否则不转换。该表达式不应有副作用。
5.2 活动图
什么是活动图activity diagram (graph)?
一种特殊的状态机,其中状态表示动作或子活动的执行,且状态转换是由动作或子活动的结束来触发的。
活动图与状态图有何区别?
活动图表示一个过程自身的状态机;关注由内部处理过程所驱动的控制流,而不是外部事件驱动。
若所有或大多事件表示内部产生动作(即过程控制流)完成,应使用活动图(本质上是从活动到活动的控制流,即流程图)。
若表示异步事件如何发生的情形,则应使用状态图。 活动图定义一个计算过程,从组成动作间的控制流和对象流的角度来定义。涉及一个或多个类元的活动或过程process的状态。与状态图一样,若一个流出转换没有显式被某事件触发,则由所包含的动作执行完毕来触发的。
子活动subactivity状态表示一个嵌套的、具有延续性的活动,内部包括一组动作或更多子活动。
汇合junction,分叉fork,结合join和同步synch用于描述判断和并发活动。
分区partition根据不同标准组织状态,如现实世界中的各自履行其相应职责的组织机构。
活动图可用于机构建模,业务处理流程建模,即工作流建模。在此语境中事件可从系统内部产生,如完成某件任务,也可从系统外部产生,如客户的请求。
6 体系结构建模:构件图和部署图
实现图implementation diagram: 表示一个系统如何实现,包括源代码结构和运行期run-time实现结构,两种形式:构件图和部署图。
6.1 构件图
构件图是什么?
构件图component diagram:描述代码自身的结构;表示软构件之间的依赖关系,包括源代码、二进制代码和可执行代码。可存在于编译期、连接期和运行期。 构件是什么?
一个系统中物理的、可替换的部分,不能单独存在,可复用;遵循一组接口并提供实现。 《document》、《file》、《library》、《executable》、《table》
构件和类之间有何关系? 共同点:有名称;可实现接口;可有依赖、泛化和关联关系;可嵌套;可有实例;可参与交互。