面向对象技术之系统分析:交互图

馋奶兔 提交于 2019-12-06 07:59:27

一、         交互图引言

    1.         建立动态模型

    ²  对静态结构建模

        Ø  对服务进行了外部观察

        Ø  不关心对象是怎样提供(进行)这些服务的

    ²  对行为建模

        Ø  捕获对象是怎样提供服务的

        Ø  当对象提供一个特定服务的时候,它负责展现的一系列的活动

        Ø  识别必须由其他对象提供的附加服务

    ²  如何定义行为——定义为操作(方法)

        Ø  所有的输入

        Ø  所有的输出

        Ø  对象是怎样提供服务的(从问题域的视角)

    ²  行为的分类

        Ø  静态行为:不被任何外部或内部的事件所影响

        Ø  动态行为:受外部或内部的事件多影响

    ²  在捕获行为时,需要提出如下问题:

        Ø  为什么进行它们?

        Ø  它们是怎样进行的?

        Ø  它们之间的相互关系是什么?

    ²  对服务的描述

        Ø  自然语言

        Ø  一定结构话的自然语言

        Ø  程序框图

        Ø  活动图

    ²  可以利用交互图以及状态图,能够帮助分析服务及服务之间的关系

    2.         交互图

    ²  什么是交互?

        Ø  交互是实例之间的通讯的集合,包括影响实例的任何方式,包括引发操作、产生或破坏实例等。

        Ø  交互最明显的方面是消息传递,消息序列对理解交互是重要的。

    ²  交互图的用途

        Ø  帮助开发者捕获交互的情况

        Ø  帮助开发团队建立对交互的共同理解

        Ø  用于对交互过程的详细设计

    ²  交互图的种类

        Ø  UML 1.X

                    顺序图

                    协作图

        Ø  UML 2.0

                    顺序图

                    通讯图

                    交互概要图

                    时序图

二、         简单顺序图、同步消息和异步消息

    1.         顺序图的概念与表示法

    ²  什么是顺序图

        Ø  顺序图(sequence diagram)是一种详细表示对象之间以及对象与系统外部的参与者之间的动态联系的图形文档。

        Ø  表现了一组相互协作的对象在执行一个(或少量几个)用况时的行为依赖关系,以及服务和消息的时序关系。

        Ø  顺序图既详细又直观,但通常只能表示少数几个对象之间的交互。

    ²  用途

        Ø  帮助分析员对照检查每个用况中描述的用户需求,是否已经落实到一些对象中去实现。提醒分析员去补充遗漏的对象类或服务。

        Ø  帮助分析员发现哪些对象是主动对象

        Ø  通过一个特定的对象群体的动态方面建模,深刻地理解对象之间的交互。

    概述

      • 顺序图是一种表达对象间交互的图,由一组对象(参与者)及其间可发送的消息组成,强调消息之间的时间顺序。

      • 由对象、消息、生命线和激活组成。

        消息

    ²  定义

        Ø  消息是两个对象间的通讯,这样的通讯用于传输将产生的动作所需要的信息。

    ²  消息的效果

        Ø  一个消息会调用另一个对象的操作,调用本对象的操作,向另一个对象发送一个信号,创建或者撤销一个对象(可以自己撤销自己),还可能向调用者返回一个结果。

    ²  消息的表示

        Ø  把消息表示为从一个对象生命线到另一个对象生命线的一个水平实现箭头,即从源对象指向目标对象,以触发目标对象中的特定操作。对于对象到自身的消息,箭头就从同一个对象符号开始和结束。

        Ø  用消息(操作或信号)的名字及其参数值或者参数表达式标示箭头。

    ²  消息的传递时间

        Ø  在很多情况下,传递时间是可以忽略的。

        Ø  可以在图中使用一些标记,用于指示时间间隔,且约束可以附在其上。例如,可以用消息名表示在计时表达式中的发送或接受消息的时间(如“b.receive-b.sendTime<1 sec.”)。

    ²  消息的分类:

                            同步消息:仅当发送者发送一个消息而且接受者已做好接受这个消息的准备时才能传送的消息

                           异步消息:发送者不管接受者是否做好准备都可以发送的消息

                               返回消息:同步消息的返回消息。在控制的过程流中,可以省略返回箭头(暗示激活结束),假设每个调用在任何消息后都有一个配对的返回,并可以把返回值标示在初始的箭头上。对于非过程控制流(包括并发处理和异步消息),都应当显式地标出返回。

        现实世界中的不同消息例子

        打电话

                    AB家打电话,B正好出去了(同步消息)

                    AB家打电话,B正好出去了,但B家的电话记录了此次来电记录(异步消息)

                    AB家打电话,B接后,A告诉B请他吃饭(同步消息)

                    AB单位总机打电话……(同步消息)

        打猎

            小白兔正在吃胡萝卜,突然被猎人猎枪击中,小白兔应声倒下(异步消息)

            小白兔正在吃胡萝卜,突然被猎人麻醉枪击中,小白兔吃完胡萝卜后倒下(异步消息)

            猎人将小白兔绑在柱子上进行射击练习,瞄准后击中(同步消息)

        同步消息与异步消息的争议

                    UML规范:未明确定义

                    Martin Fowler : UML Distilled

                异步消息不冻结调用者

                            UML的顺序图将产生歧义

                    UML 参考手册

                如果操作调用是同步的调用者将等待,直至调用的操作回应

                发送邮件后是一直在等待回信还是做其他的事情与消息(发邮件)的类型无关

                    UML用户指南

                同步消息用方法调用实现

                异步消息用信号实现

                属于软件世界(OOD)的定义,现实世界(OOA)如何定义?

                另外,发送信号也能得到与方法调用相同的效果,如RCP

            面向对象的系统分析

                不同的消息类型取决于发送消息时接受者的行为,而不是取决于发送消息后发送者的行为

三、         顺序系统和并发系统与同步消息和异步消息的关系

    1.         顺序系统中的消息

    ²  顺序系统中的一切操作都是顺序执行的

    ²  OOA某些中只有一个主动对象,并且这个主动对象中只有一个主动服务。

    ²  实现之后的系统在运行时,将只对应一个进程或线程。

消息是向对象发出的服务请求

消息都是同步的

接受者执行消息所请求的服务

发送者等待消息处理完毕再继续执行

每个消息只有唯一的接受者

    2.    并发系统中的消息

    ²  并发系统是具有多个任务并发执行的系统

    ²  OOA某些中有对个主动对象,若有一个主动对象则有多个主动服务

    ²  实现之后的系统在运行时,将对应对多个进程或线程

控制线程内部顺序系统比控制线程之间情况复杂得多

消息有多种用途

消息有同步与异步之分

接受者对消息有不同响应方式

发送者对消息处理结果有不同期待方式

消息的接受者可能不唯一

                并发系统中几种典型的消息传递情况

        • 同步传送,等待返回

        • 同步传送,不等待返回

        • 异步传送,等待返回

        • 异步传送,不等待返回

 

同步动作与异步动作

         同步动作是一个请求,发送请求的对象停下来等待响应

         异步动作不要求发送对象暂停以等待结果

             不同的消息举例

          

             对象的创建与销毁

        

             举例:打电话

        

             建立顺序图

    • 设置交互的场景

    • 仅包含相关实例

    • 从左到右从上到下建立顺序图

    • 将主动对象放在左/上,被动对象放在右/

    • 一个单独的顺序图最好只显示一个控制流

    • 建议尽量少用迭代和分支

      四、        其他交互图

      通讯图

        通讯图集中于描述以内部结构与相应的消息传递为中心的交互。

            

        交互概要图

        以活动图的变形定义交互,突出控制流的概况。

            

        时序图

        首要目的是考虑时序时,使用时序图,时序图描述单个类的行为或多个类的交互,集中与引起对象状态或条件发生变化的事件的发生时间。

            

            

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!