面向对象的系统分析——交互图
一、建立动态模型
1.对静态结构建模
a) 对服务进行了外部观察
b) 不关心对象是怎样提供(进行)这些服务的
2.对行为建模
a) 捕获对象是怎样提供服务的
b) 当对象提供一个特定服务的时候,它负责展现的一系列的活动.
c) 识别必须由其他对象提供的附加服务
3.如何定义行为------定义为操作(方法)
a) 所有的输入
b) 所有的输出
c) 对象是怎样提供服务的(从问题域的视角)
4.行为的分类
a) 静态行为:不被任何外部或内部的事件所影响
b) 动态行为:受外部或内部的事件所影响
5.在捕获行为时,需要提出如下问题
a) 为什么进行它们?
b) 它们是怎样进行的?
c) 它们之间的相互关系是什么?
6.对服务的描述
a) 自然语言
b) 一定结构化的自然语言
c) 程序框图
d) 活动图
7.可利用交互图以及状态图,能够帮助分析服务及服务之间的关系。
二、交互图
1.什么是交互?
a) 交互是实例之间的通讯的集合,包括影响实例的任何方式,包括引发操作、产生或破坏实例等。
b) 交互最明显的方面是消息传递,消息序列对理解交互是重要的。
2.交互图的用途
a) 帮助开发者捕获交互的情况
b) 帮助开发团队建立对交互的共同理解
c) 用于对交互过程的详细设计
3.交互图的种类
a) 顺序图
b) 通讯图
c) 交互概要图
d) 时序图
三、顺序图的概念与表示法
1.什么是顺序图
a) 顺序图(sequence diagram)是一种详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档。
b) 表现了一组相互协作的对象在执行一个(或少量几个)用况时的行为依赖关系,以及服务和消息的时序关系。
c) 顺序图既详细又直观,但通常只能表示少数几个对象之间的交互。
2.用途
a) 帮助分析员对照检查每个用况中描述的用户需求,是否已经落实到一些对象中去实现。提醒分析员去补充遗漏的对象类或服务。
b) 帮助分析员发现哪些对象是主动对象
c) 通过对一个特定的对象群体的动态方面建模,深刻地理解对象之间的交互。
四、消息
1.定义
a) 消息是两个对象间的通讯,这样的通讯用于传输将产生的动作所需要的信息。
2.消息的效果
a) 一个消息会调用另一个对象的操作,调用本对象的操作,向另一个对象发送一个信号,创建或者撤消一个对象(可以自己销毁自己),还可能向调用者返回一个结果。
3.消息的表示
a) 把消息表示为从一个对象生命线到另一个对象生命线的一个水平实线箭头,即从源对象指向目标对象,以触发目标对象中的特定操作。对于对象到自身的消息,箭头就从同一个对象符号开始和结束。
b) 用消息(操作或信号)的名字及其参数值或者参数表达式标示箭头。
4.消息的传递时间
a) 在很多情况下,传递时间是可以忽略的。
b) 可以在图中使用一些标记,用于指示时间间隔,且约束可以附在其上。例如,可以用消息名表示在计时表达式中的发送或接收消息的时间(如“b.receiveTime–a.sendTime<1 sec.”)。
5.消息的分类
a) 同步消息:仅当发送者发送一个消息而且接受者已做好接受这个消息的准备时才能传送的消息
b) 异步消息:发送者不管接受者是否做好接受准备都可以发送的消息
c) 返回消息:同步消息的返回消息.
d) 在控制的过程流中,可以省略返回箭头(暗示激活结束),假设每个调用在任何消息后都有一个配对的返回,并可以把返回值标示在初始的箭头上。
e) 对于非过程控制流(包括并发处理和异步消息),都应当显式地标出返回。
6.顺序系统中的消息
a) 顺序系统中一切操作都是顺序执行的。
b) 其OOA模型中只有一个主动对象,并且这个主动对象中只有一个主动服务。
c) 实现之后的系统在运行时,将只对应一个进程或线程。
d) 消息是向对象发出的服务请求。
e) 消息都是同步的。
f) 接收者执行消息所请求的服务。
g) 发送者等待消息处理完毕再继续执行。
h) 每个消息只有唯一的接收者。
7.并发系统中的消息
a) 并发系统是有多个任务并发执行的系统。
b) 其OOA模型中只有多个主动对象,若有一个主动对象则有多个主动服务。
c) 实现之后的系统在运行时,将只对应多个进程或线程。
d) 控制线程内部同顺序系统 控制线程之间情况复杂得多
e) 消息有多种用途
f) 消息有同步与异步之分
g) 接收者对消息有不同响应方式
h) 发送者对消息处理结果有不同期待方式
i) 消息的接收者可能不唯一
8.信号
a) 对象之间的异步传送的消息的规格说明,该规格说明由一组参数描述。
b) 从一个对象可以向另一个对象或对象的集合发送信号。例如消息广播。
c) 发送者在发送信号时,要实例化其参数。
d) 对于接收者来说,它收到的是一个事件。
e) 在类图中,在类符号上用关键字<
f) 在类的描述模板中,要指定所能接收的信号。
五、建立顺序图
1.设置交互的场景
2.仅包含相关实例
3.从左到右从上到下建立顺序图
4.将主动对象放在左/上,被动对象放在右/下
5.一个单独的顺序图最好只显示一个控制流
6.建议尽量少用迭代和分支
六、复杂顺序图
1.组合片段
a) 组合片段定义了交互片段的表达方式.
b) 组合片段由交互操作符(interaction operator)和交互操作数 (interaction operands)组成.
c) 通过组合片段,用户以一种紧密\简明的方式描述一组交互过程中的事件发生序列.
d) 组合片段通过门相连.门指定了组合片段和交互其他部分之间的接口。
2.交互操作符
3.交互使用
a) 交互使用是一个交互主体内对另一个交互的(带参数的)引用。
4.门
a) 交互中或交互片段中的一个连接点,消息通过门进入或离开交互或交互片段。
七、通讯图
1.通讯图集中于描述以内部结构与相应的消息传递为中心的交互。
八、交互概要图
1.以活动图的变形定义交互,突出控制流的概况。
九、时序图
1.首要目的是考虑时序时,使用时序图.时序图描述单个类的行为或多个类的交互,集中于引起对象状态或条件发生变化的事件的发生时间。