第十章:面向对象分析(此章完结)

2023-05-16

10.4.4建立活动图

活动具体表现为由一系列动作组成的执行过程,将各种活动及不同活动之间的转换,用图形进行表示就构成了活动图,作用是对系统的行为建模

1、活动图与流程图

活动图描述系统使用的活动,判定点和分支、活动图本质是一种流程图借鉴了工作流建模,Petri网等领域的相关概念,其表达能力比流程图更强、应用范围也更宽。

活动图与流程图的区别:不能将两个概念混淆,首先流程图着重描述处理过程,它的主要控制结构是顺序、选择和循环各个处理过程之间有严格的顺序和时间关系,活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为而非系统处理过程。活动图能够表示并发活动的情形,而流程图不能。活动图是面向对象的、而流程图是面向过程的。

2、活动图与状态图

活动图和状态图都是状态机的表现形式,两者有本质区别:活动图着重表现从一个活动到另一个活动的流程,主要由外部事件的参与。

3、活动图的组成及UML图形表示

活动图的UML图形表示中,如果一个活动引发下一个活动两个活动的图标之间带箭头的直线连接,有起点和终点,还包括分支与合并,分叉与汇合等模型元素,分支与合并的图标和状态图中判定的图标相同,分叉和汇合则用一条加粗的线段表示,活动图的示例描述参见图10.19

UML的活动图中包含的图形元素有:动作状态、活动状态、动作流分支与合并,分叉与汇合、分区和对象流等。

动作状态:是指执行原子的,不可中断的动作,并在此动作完成后通过玩转换向另一个状态,在UML中动作状态使用平滑的圆角矩形表示,所表示的动作写在圆角矩形内部、动作状态有如下特点。

(1)是原子的,它是构造活动图的最小单位,无法分解更小的部分

(2)是不可中断的 一直运行到结束

(3)是瞬时的行为,所占用的处理时间极短。

(4)可以由转换,如转换即可以是动作流,也可以是对象流,动作状态至少有一条出转换这条转换可以内部动作的完成为起点,与外部事件无关。

(5)和状态图中的状态不同,它不能有入口动作、出口动作更不能有内部转移。

(6)在一张活动图中,动作状态允许多出出现。

活动状态:用于表达状态机中的非原子的运行图标识平滑的圆角矩形(和动作、状态图标一样)活动状态可以在图标中给出入口动作信息。

活动状态的特点如下:

(1)可以分解成其他于活动或动作状态,由于它是一组不可中断的动作或操作的组合,所以可以被中断

(2)活动状态的内部活动可以用另外一个活动图表示

(3)可以由入出口动作,也可以由内部转移。

(4)动作状态是活动状态的一个特例,如果某个活动状态值包括一个动作,那么它就是一个动作的状态。

动作流:所有动作状态之间的转换称之为动作流。

分支与合并:条件行为用分支和合并表达,一般用于表示对象类所具有的条件行为,活动图中的分支与合并示例参见图10.20

分叉与汇合:分叉和汇合都使用加粗的水平线端表示,分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支以达到共同完成一项事物的目的,分叉可以用来描述并发线程,每个分叉可以由一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流,汇合代表两个或多个并发控制流徒步发生,当所有的控制流都达到汇合点后控制才能继续往下进行,活动图的分叉与汇合参见示例图10.21

分区:区分将活动图中的活动划分为若干组,把每一组指定给负责这组活动的业务组织,即对象分区标识负责活动的对象范围,明确表示那些活动是由那些对象进行的,在包含区分的活动图中每个活动只能明确属于一个分区,分区可以用垂直或水平实线绘出活动图中。分区示例图参见10.22

对象流:是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响,在活动图中对象流用带有箭头的虚线表示,如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响,施加的影响包括创建、修改和撤销扥,如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象,活动图中对象流示例图参见图10.23

 对象流中对象的特点

(1)一个对象可以由多个动作操作

(2)一个动作输出的对象,可以作为另个动作输入的对象

(3)在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存周期的不同时间点。

4、活动的分解

一个活动可以分为若干个动作或子活动,这些动作和子活动本身又可以组成一个活动图,不含内在嵌活动或动作的活动称为简单活动,嵌套了若干活动或动作的活动称之为组合活动,组合活动有自己的名字和相应的子动图,示例图参见图10.24

5、活动图建模技术与步骤如下

(1) 识别要对工作流描述的类或对象,找出负责工作流实现的业务对象,目的是为每一个重要的业务对象建立分区(泳道)

(2)确定工作流的初始状态和终止状态,明确工作流的边界。

(3)对工作状态或活动状态建模

(4)对动作流建模,建模时可以首先处理顺序动作,接着处理分支与合并等条件行为,然后处理分叉与汇合等并发行为。

(5)对对象流建模:找出与工作流相关的主要对象,并将其连接到相应的动作状态和活动状态。

(6)对建立的模型进行精化和细化

10.5建立物理实现模型

构架图:用来建模系统的各个构件及其关系,这些构件通过功能或者文件组织在一起,使用构架图可以帮助读者了解某个功能位于软件包的哪一位置,以及包含那些功能等。

部署图:用来帮助读者了解软件中的各个构件驻留在什么硬件位置,以及这些硬件之间的交互关系。

构架图和部署图统称为:实现图,是面向对象系统的物理方面建模的图。

10.5.1建立构件图

1、构件:是一个相对独立的可以装配的物理块,一般作为一个独立的文件存在,具有接口、构件互相之间可以调用,构件之间存在依赖关系,构件定义了一个系统的功能,一个构件是一个或多个类的实现。

构件和类非常相似,都有名称、都可以实现一组接口,都可以参与依赖关系,都可以被嵌套,都有实例,都可以额参与交互。但两者又有所不同,类是逻辑抽象,构件是物理抽象,即构件可以位于结点上,构件是对其他逻辑元素,如类、协作的物理实现,构件是软件系统的一个物理单元,通常只有操作,而是这些操作只能通过构件的接口才能使用。在UML中构件通过左部带有两个小矩形的大矩形来表示,如图10.25所示

2、构件的接口

构件定义的操作的访问只能通过构件的接口进行,也就是说一个构件可以访问另一个构件所提供的服务,这样提供服务的构件呈现一个提供服务的接口,访问服务的构件使用所需的接口。

接口和构件之间的关系分为两种:实现关系和依赖关系,如10.26所示

简略图中:接口和构件之间用实线连接表示实现关系;而接口和构件之间用虚线箭头连接则表示依赖关系 ,箭头从依赖的对象指向被依赖的对象。

4、构架图

是描述构件及其相互关系的图,构件之间是依赖关系,构件图包含3种元素:构件、接口和依赖关系,每个构件实现一些接口并使用另一些接口。

(1)源代码文件建模(构件图)

有助于可视化源代码文件之间的编译依赖关系

策略

①识别出感兴趣的相关源代码文件集合,把它们表示成(file)的

②对于较大的系统,利用包对源代码文件进行分组。

③如有必要,可以为构件添加相应的标记值

④用依赖关系对这些文件之间的编译依赖关系建模

(2)可执行文件和库建模

对构成系统的实现构件建模,如果系统由若干个可执行程序和相关对象库构成,最后文档化,图10.28所示的是可执行文件和构件库建模示意图

10.29所示的是一个C程序的组成构件图示例如下

策略

①识别所有建模的构件集合,一般是一个结点行的部分或全部构件

②为构件选择合适的构造型

③对每一个构件考虑与相领构件之间的关系,通常涉及接口

(3) 表、文件和文档建模

对系统中附属实现构件,如数据文件、帮助文件、脚本、日志文件等进行建模,图10.30所示是关于表、文件和文档建模的构件图

①识别出作为系统的物理实现部分的附属构件

②将这些事物建模为构件

③对这些附属构件与其他可执行程序、库及接口之间的关系建模

10.5.2建立部署图

部署图也称配置图,实施图、用例描述系统中计算结点的拓扑结构和通信路径与结点上运行的软件构件等,部署图由结点和结点的类关联组成,描述运行软件的系统中硬件和软件的物理结构,一般一个系统仅用一个部署图。

1、部署图的要素

(1) 结点(Node)表示独立计算资源的物理设备,通常拥有一些内存,并具有一定的处理能力,可以分为处理机和设备两类,处理机是能够执行软件,具有计算能力的结点,包括主机、服务器、客户机等,设备是没有计算能力的结点,通常情况下是通过其接口为外部提供某种服务(如打印机、传感器、终端等)在UML中结点用立方体来表示。

结点与构件相比:两者都有名称、关系、实例、可以被嵌套、参与交互,不同点是:构件是参与系统执行的事物,而结点是执行构件的事物;构件表示逻辑的物理包等,而结点表示构件的物理配置。

(2)连接

表示两个结点之间的物理连接关系,用直线表示,在连接上可以加多重性、角色、约束等。代表一种交流的机制,可以是物理媒介或软件协议,部署图可以是显示结点及它们之间的必要连接。

2、如何开发部署模型

部署模型通常与构件模型并行开发,为了开发部署模型可以迭代使用以下步骤。

(1)确定模型范围

(2)确定分布结构

(3)确定结点和它们的连接

(4)把构件分布到结点

(5)为了不同构件之间的依赖建模

3、几种部署图建模方法

(1)构件的分布建模

①将系统中的每个有意义的构件部署到一个给定的结点上。

②如有必要,可以将同一个构件同时放在多个不同的结点上。

③构件在结点上的部署,可以参考(例10.2)

(2)嵌入式系统建模

①识别嵌入式系统中的设备和结点

②使用构造型结点对处理器和设备建模

③在部署图中对处理器和设备间的关系进行建模

④必要时,可以把身边展开,用更详细的部署图对它的结构进行建模,参考图10.26所例。

(3) 客户机/服务器建模

①识别代表客户机和服务器的结点

②标识出于系统行为有密切关系的设备

③利用构造型为处理器和设备提供可视化表示

④在部署图中为这些结点的拓扑结构建模

本章小结

面向对象的分析就是抽取和整理用户需求,并建立问题领域精确模型的过程。分析工作主要包括3项内容:理解、表达和验证。与传统的面向数据流的结构化方法以功能为导向的分析不同,免息对象的分析以对象类作为分析的基础,借助于面向对象方法进行需求分析,构建的是面向类的模型。一般地,可以通过对象模型、用例(功能)模型、动态(行为)模型和物理实现模型来表达分析结果。本章以面向对象的概念为基础,介绍了4种模型(对象、用例、动态行为、物理实现模型)为基础进行建模的基本方法和注意事项,为面向对象软件的分析过程提供指导。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十章:面向对象分析(此章完结) 的相关文章

  • HystrixCommand注解含义

    public interface HystrixCommand HystrixCommand 命令所属的组的名称 xff1a 默认注解方法类的名称 String groupKey default 34 34 HystrixCommand 命
  • Java8新特性(一)-Lambda表达式

    什么是Lambda 我们知道 xff0c 对于一个Java变量 xff0c 我们可以赋给其一个 值 如果你想把 一块代码 赋给一个Java变量 xff0c 应该怎么做呢 xff1f 比如 xff0c 我想把右边那块代码 xff0c 赋给一个
  • SpringCloud入门(十二):网关Gateway 获取Post请求体(Greenwich.SR2)

    前言 在学习gateway的时候 xff0c 使用全局过滤器GlobalFilter xff0c 来拦截请求的时候 xff0c 网上的例子基本都是使用Get来完成的 xff0c 很少使用Post来测试 xff0c 导致在使用Post的时候
  • Xmanager Power Suite 6

    本文破解的是商业标准注册版 xff0c 商业标准注册版 xff0c 商业标准注册版 xff0c 不是评估版 xff0c 不是学校 家庭免费 xff01 请务必卸载已安装的Xmanager Power Suite 6或者Xmanager Po
  • docker-compose常用命令详解

    build docker compose build options build arg key 61 val SERVICE 构建 xff08 重新构建 xff09 项目中的服务容器 选项包括 xff1a compress 通过gzip压
  • 解决--spring.profiles.active=prod不生效问题

    今天自己手写了一个springboot的项目 xff0c 并没有通过IDE生成 xff0c 在打完包上传到服务器 xff0c 使用 spring profiles active 61 prod 启动时 xff0c 发现不生效 xff0c 依
  • 解决--docker run -d指定本地redis.conf文件启动失败

    在使用docker运行redis时 xff0c 都会使用自己的配置文件来运行 xff0c 而一般都会将redis的运行方式改为后台运行 xff0c 但是执行docker run后 xff0c 发现redis并没有如期的运行起来 docker
  • VMware安装Ubuntu首次使用设置 root 密码

    一条命令简单暴力 sudo passwd root
  • MySQL8.0.2启动报Different lower_case_table_names settings for server ('1') and data dictionary ('0').

    记录在安装了MySQL 8 0 20之后 xff0c 初始化的时候在my cnf里设置了lower case table names 61 1 xff0c 启动报错 xff1a 如下 查看MySQL官方文档 xff0c 有记录 xff1a
  • redis反序列化时竟然抛出ClassCaseException,什么玩意啊

    碰到一个奇怪的事情 xff0c 把bean序列化存到redis中 xff0c 在取出来转换为bean时 xff0c 竟然直接抛出了ClassCaseException xff0c 什么玩意啊 xff0c 我放进去 xff0c 给我吐出来就不
  • vnc viewer是什么,vnc viewer是什么,怎么用

    今天来给大家介绍一下VNC viewer的知识 xff0c 首先我们来科普一下什么是VNC xff0c VNC Virtual Network Console 是虚拟网络控制台的缩写 其中 xff0c VNC viewer就相当于是虚拟网络
  • 面试题(redis master和slave是怎么实现数据同步的)

    Redis的主从同步机制可以确保redis的master和slave之间的数据同步 按照同步内容的多少可以分为全同步和部分同步 xff1b 按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数据修改同步 xff1b 本文
  • 如何解决Mac系统中应用程序占用存储过大

    这是Mac自带的system information app About this mac 机制 当我们在点击存储这个按钮时 xff0c Mac后台会通过spotlight的功能进行对audio xff0c movie xff0c apps
  • VMware虚拟机安装CentOS7

    VMware虚拟机安装CentOS7 2021 3 18 23 42 58 软件环境 虚拟机 xff1a VMware Workstation Linux xff1a CentOS 7 x86 64 DVD 1708 iso镜像文件 虚拟机
  • Linux-ContentOs关闭防火墙

    Centos 永久关闭防火墙 2021 3 19 22 22 43 1 打开虚拟机 xff0c 然后输入命令 systemctl status firewalld service 并按下回车键 2 出现上图中的active xff08 ru
  • Linux一键安装部署环境

    安装Java环境 yum install y java 1 8 0 openjdk devel x86 64 安装mariadb 1 vi install mariadb sh 创建文件并打开 2 输入 i 进入编辑 复制一下内容粘贴 bi
  • ubantu安装搜狗常见问题

    安装详情 参考步骤 语言设置里已经设置为fcitx xff0c 也装了这个 xff0c 但按照教程 xff0c 重启后 xff0c 点击键盘图标 xff0c 配置语言时 xff0c 却弹出来了这样的对话框 xff08 您正在图形界面下运行
  • ubuntu下virtualbox的安装、卸载

    一 添加VirtualBox的源并安装5 1版本 virtualbox官网 xff1a https www virtualbox org wiki Download Old Builds 虽然也可以直接安装deb包 xff08 例如 xff
  • CoreData的简单使用<二、CoreData两张数据库表的关联操作>

    两张数据库表的关联操作 在实际的数据结构中难免会遇到两张数据表需要进行关联 xff0c 比如通用的例子 xff0c 公司有两个员工张三和李四 xff0c 分别属于iOS和android部门 xff0c 如果所有的员工属于一张表 xff0c
  • 瑞士移位赛赛制解释

    这种比赛是用瑞士轮转法实施的积分编排制比赛 当参赛队数较多 xff0c 而比赛时间又不很充裕时 xff0c 瑞士移位法是理想的比赛方法 比赛分开闭室 各队都给予编号 xff0c 在整个比赛过程中各队的编号不动 第1轮对阵一般安排强队对弱队

随机推荐

  • Springboot:Spring Assistant创建项目框架

    Springboot Spring Assistant创建项目框架 Springboot自动配置项目流程步骤如下所示 第一步 第二步 第三步 第四步
  • vnc server干什么用的,简单介绍vnc server是干什么用的

    VNC Server 是一般 Linux 发行版都会附带的 vnc服务器软件 vncserver 是一个为了满足分布式用户共享服务器上面的资源 xff0c 而在服务器上开启的一项服务 xff0c 对应的客户端软件为vncviewer xff
  • GITHUB下载慢解决办法-插件解决

    在油猴上搜索此插件 或者直接导入插件代码如下 61 61 UserScript 61 61 64 name Github 增强 高速下载 64 name zh CN Github 增强 高速下载 64 name zh TW Github 增
  • OSPF路由协议配置实验

    实验目的 xff1a 理解OSPF xff1b 掌握OSPF的配置方法 xff1b 掌握查看OSPF协议的相关信息 实验器材 xff1a 路由器及PC机 xff0c 双绞线 实验内容 xff1a 本实验通过在路由器上配置OSPF协议 xff
  • linux 22.04版本ubuntu换源

    1 备份原始源文件 执行下面命令 xff0c 将原来的源文件备份保存 sudo cp etc apt sources list etc apt sources list bak 2 修改源文件sources list 打开源文件 xff0c
  • jquery dialog 弹出 ajax加载数据

    我之前就是想实现一个弹框 xff0c 在弹框的时候用ajax 动态加载要展示的内容 xff0c 这个地方实现起来并不难 xff0c 但是在实现的时候遇到了一个坑 页面 xff1a lt div id 61 34 logDiv 34 styl
  • 解决STM32新增加函数出现Undefined symbol HAL_ADC_Init (referred from main.o). 问题

    最近在开发STM32L0xx系列产品的ADC采集项目 xff0c 在老工程上添加库函数 xff0c stm32l0xx hal adc h stm32l0xx hal adc c函数 进行ADC初始化 xff0c 编译不通过出现 xff0c
  • GET,POST,PUT,DELETE,OPTIONS等请求方式简单总结

    之前做的java web项目 xff0c 基本上只使用get和post的请求方式 xff0c 但是现在新项目额外增加了put xff0c delete xff0c 查了点资料 xff0c 做个简单的总结 1 GET get请求是用来获取数据
  • IOS TableView Cell重用机制及TableView常用Code

    写的太好了 xff0c 多谢楼主的无私分享 文章来自 xff1a http heidianfeng blog 163 com blog static 6184345620121114104552518 创建UITableViewContro
  • 编译Linux驱动程序

    基于Ubuntu 12 10 xff0c 编译Linux驱动程序 1 准备linux内核源码 此时 xff0c 我要编译的驱动是基于Ubuntu 12 10内核的 xff0c 所以我下载的是其对应的内核源码包 xff1a linux 3 5
  • 卸载windows10子系统卸载linux

    参考地址 xff1a https docs microsoft com en us windows wsl wsl config 查看所有已经安装的分发版本 xff1a wsl list all 查看正在运行的分发版本 xff1a wsl
  • github镜像站

    github镜像站 xff1a https hub fastgit org GitHub 在国内经常会出现无法访问的情况 xff0c 下面分享几个 GitHub 镜像站供大家使用 xff01 全局加速 可直接访问站点 xff0c 查看代码等
  • vnc连接linux失败,vnc连接linux失败解决办法

    在日常工作学习中 xff0c 经常会使用到vnc连接 xff0c 那有小伙伴知道如何进行vnc连接linux吗 xff1f 当vnc连接linux失败又该如何解决呢 xff1f 之前有简单介绍过如何实现vnc连接linux 那接下来让我们一
  • 域名是如何关联到CDN的

    用户在访问一个域名的时候 xff0c 网络中是怎么知道这个域名到底是配置在哪一个CDN厂商的呢 xff1f 笔者以test1 huiziguoxueshe com为例 xff0c 来描述下具体的过程 xff0c 如下所示 xff1a ste
  • 第五章:软件详细设计

    真是应了那句 xff1a 白天游四方 晚上点灯补裤裆 捂脸 xff09 xff0c 孩子睡了夜深人静了 我才是开始我的小笔记整理工作 详细设计是软件设计的第二阶段 xff0c 这一阶段的工作 xff0c 就是要对系统中的每个模块给出足够详细
  • 第7章 软件测试(1)

    今天是个开心的日子 xff0c 具体为啥开心我知道你懂得 继续我的龟速学习小笔记 它来了它来了 xff0c 你说它很简单 xff0c 当我看到此章的一部分内容后发现了原来学霸和学渣差别就是如此大 xff08 捂脸 xff09 xff0c 今
  • 第7章 软件测试(3)

    一晃3天没有学习了 xff0c 昨天的阅读量创立了一个新高 xff0c 内心还是很欢喜的 7 4 2黑盒技术 黑盒技术着重测试软件功能 xff0c 需重点研究需求说明和总体设计中有关程序功能输入 输出之间的关系等信息 xff0c 从而与测试
  • 第七章 软件测试(此章完结)

    春乏秋困 xff0c 一个早上哈气连天 脖子酸 腰痛 xff08 捂脸 xff09 近期叫醒我的不是闹钟也不是梦想 xff0c 而是凌晨4点和6点广播大喇叭喊居民做核酸的声音 xff0c 还是别的小区的 xff08 再次捂脸 xff09 也
  • 第十章:面向对象分析(2)

    3 泛化关系 泛化关系和类找那个的泛化概念是一样的 xff0c 于用例继承父用例的行为和含义 xff0c 还可以增加或覆盖父用例的行为 xff0c 子用例可以出现在任何父用例出现的位置 xff08 父和子均有具体的实例 xff09 也可以重
  • 第十章:面向对象分析(此章完结)

    10 4 4建立活动图 活动具体表现为由一系列动作组成的执行过程 xff0c 将各种活动及不同活动之间的转换 xff0c 用图形进行表示就构成了活动图 xff0c 作用是对系统的行为建模 1 活动图与流程图 活动图描述系统使用的活动 xff