【软件架构】软件的设计图纸(用例图,类图,状态图,活动图,顺序图)

news2025/1/15 22:39:21

【软件架构】软件的设计图纸(用例图,类图,状态图,活动图,顺序图)_bdview的博客-CSDN博客

按图索骥---软件的设计图纸

序:

我一直以为,在软件设计中,各种图要比文档重要的多。图可以更加直接的反应软件的构造。尤其是在面向对象的软件设计中。图可以让我们直观的了解各个类和对象直接的交互和关系。

1、 用例图

定义:展示系统中参与者与用例之间的关系

我的理解 :用例图是根据需求分析得到的,也是软件设计中的第一张图纸。描述了软件系统的全部用户(角色)和全部功能点(业务需求),以及他们之间的关系。也是软件开发中最重要的一张图纸。

用例准则:用例描述了为参与者提供可测量的价值的一个动作顺序,如:提取资金,登记文件。

参与者准则:参与者是和系统进行一次或多次交互的某个角色,它可以是人,组织,进程或者外部系统,如:客户,学生,付款机

技巧:通过竖排用例,隐含表达用例之间的时间顺序。

            用例名以意义明确的动词开头。

            主要参与者放在图的左上角

图例:

 

2、 类图

定义:类图展示的系统中的类,类之间的相互关系,类的方法和属性。

理解:根据用例图,可以基本上设计出系统的类和他们的之间的关系。类图描述的就是类的静态结构

类关系:

       关联:关联指的是类之间的特定的对应关系,在UML中拥戴实现的箭头表示。按照类之间的数量对比,关联可分为以下3种。

聚合:聚合指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。例如台灯和灯泡之间就是聚集关系。当台灯类(ReadingLamp类)由灯泡类(Bulb类)和Circuit类聚集而成时,在ReadingLamp类中应该包含Bulb类和Circuit类型的成员变量。

聚集关系中,子系统允许被拆卸和替换。例如:电灯和灯泡

Bulb bulb1 = new Bulb(); //创建第一个灯泡

Bulb bulb2 = new Bulb(); //创建第二个灯泡

ReadingLamp lamp = new ReadingLamp(bulb1); //创建的时候使用第一个灯泡

lamp.setBulb(bulb2); //创建以后还可以换成第二个灯泡

           组合:是关联关系的一种,是比聚集关系强的关联关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

                    合成关系中,子系统不允许被拆卸和替换。例如:Windows的窗口和窗口上的菜单就是组合关系。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。

           依赖:依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或方法,或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。例如Panel与Shape类之间存在依赖关系,因为Panel类会调用Shape类的draw()方法。

           继承:类之间的继承关系,在UML中用带实线的三角形箭头表示。例如长方形Rectangle、圆形Circle和直线Line都继承Shape类

           实现:实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示,这里的接口指的是接口类型,接口名字用斜体字表示,接口中的方法都是抽象方法,也采用斜体字表示。

图例:

 

 

3、 状态图

定义:状态图中展示实体基于它当前的状态对不同的事件是如何反应的。

我的理解:状态图是系统即时、实施的图纸。从这个图开始,消息的概念开始贯穿设计始终。通过状态图,我们可以了解系统中的主要对象的状态变迁和变迁散发出的消息。

图例:

 

 

 

4、 活动图

定义:工作流程活动图用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。活动既可以是手动执行的任务,也可以是自动执行的任务。它可完成一个工作单元。

我的理解:活动图是状态图的延续,不止是在图中标记了对象状态的变迁,还加入了状态变迁相关的操作。

基本元素:活动状态表示在工作流程中执行某个活动或步骤。   

转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。   

决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。   

同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。

泳道:可以使用垂直实线将活动图划分为泳道。每条泳道代表整个工作流程的某活动图个部分的职责,该职责由组织的某个部门来执行。泳道最终可以由组织单元或者业务对象模型中的一组类来实施。

图例:

 

 

5、 顺序图

定义:描述涉及用例实现的多个对象实例以及对象交互时传递的消息,并按照用例的执行步骤为顺序指明对象的交互顺序。

我的理解:主要描述对象间消息的传递和消息传递的顺序。

重点:画顺序的关键是要理清对象间的交互,也就是决定消息该发给那个对象。

图例:

 

 

活动图与流程图区别
活动图面向对象分析设计,流程面向过程的

活动图描述对象的活动顺利关系应尊守的规则,主要强调行为而非过程。流程图是面向过程,通过顺序,条件、循环来描述过程的顺序关系和时间序列。

uml中活动图与流程图的区别
活动图定义:

  活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。

  它是UML中用于对系统动态活动建模的图形,反映系统中一个活动到另一个活动的流程,常常用于描述业务过程和并行处理过程。活动图中包括泳道、活动开始、活动结束、活动、对象、分支、消息等图形符号。

   泳道将一个活动图中的活动划分为不同的组,每个组分别对应不同角色的操作。活动图描述多个角色之间的协作处理非常有效。

  一张活动图可以有多个开始状态和结束状态。

  一个活动可以与多个实体对象相关(相关指的是一种访问操作)。

  分支用在有多条路径可选的流程中,针对不同的路径进行不同的分支处理。

 

活动图的走向可以是横向的也可以是纵向的,根据个人喜好而定。上图的这个销售订单处理活动图重点展示的是并发处理符号,它反映多个活动可以同时并发处理,并发结束后,又转变为顺序处理。

流程图定义:

1: 有起止框、输入框、输出框、处理框 、流程线、连接点组成。

2: 起止框:表示算法的开始或结束

3: 输入\输出框:表示算法的输入和输出操作。输入操作是指从输入设备山过江算法所需要的数据传递给指定的内存变量;输出操作                    则是将常量或变量的值由内存贮器传递到输出设备。

4: 处理框:算法中各种技术和赋值的操作均一处理框加以表示。处理框内填写处理说明或具体的算式。

5: 判断框:算法中的条件判断操作。判断框说明算法中尝试了分支,需要根据某个灌水或提哦案件的成立与否来确定下一步的执行路                 线。判断框内应当填写判断条件,一般用关系比较运算或逻辑运算来表示。

6: 注释框:表示对算法的走向,流程线箭头的方向就是算法执行的方向。

7: 连接点:表示不同地方的流程图的连接。

 

活动图与流程图的区别:

(1)、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。

(2)、活动图能够表示并发活动的情形,而流程图不行。

(3)、活动图是面向对象的,而流程图是面向过程的
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/678981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RocketMQ 常见面试题(二)

broker如何处理拉取请求的? Broker处理拉取请求的具体流程如下: 客户端向Broker发送拉取请求,请求指定要拉取的主题名称和消费者组信息。 Broker首先会检查该消费者组是否已经存在,如果不存在则会创建该消费者组,并为…

Dubbox是什么,如何整合SpringBoot,有什么优势?

目录 一、Dubbox 是什么 二、Dubbox 如何整合SpringBoot 三、Dubbox 有什么优势 一、Dubbox 是什么 Dubbox是一款基于Java语言的分布式服务框架,是阿里巴巴公司开源的一款服务化治理框架,其前身为Dubbo。Dubbox是针对Dubbo进行了改进和升级&#xff…

akima 插值拟合算法 Python/C++/C版本

目录 前言Akima简介Akima优势 算法的代码实现python版C 版代码解析1代码解析2代码解析3 C版 实验对比 前言 鉴于“长沙等你”网站上Akima算法文章大部分要VIP观看或者下载,即使是付费也有质量不佳,浪费Money也浪费时间。 笔者根据查到的资料分享给大家。…

第5章 链路层

1、局域网的协议结构一般不包括( ) A. 数据链路层B. 网络层C. 物理层D. 介质访问控制层 逻辑链路控制子层、介质访问控制子层、物理层 2、下列关于二维奇偶校验的说法,正确的是( ) A. 可以检测和纠正双比特差错B…

NodeJS 了解和快速入门 - 实现 http 服务 操作 mysql

目录 1. 介绍 NodeJS 2. NodeJS 快速入门 3. NodeJS 实现 Httpserver 服务 4. NodeJS 操作 MySQL 数据库 1. 介绍 NodeJS 1. Node 是一个让 JavaScript 运行在服务端的开发平台, 它让 JavaScript成为与 PHP, Python, Perl, Ruby 等服务端语言平起平坐的脚本语言, 发布于 200…

尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…

VUE L 表单数据过滤器 ⑨

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs收集表单数据过滤器 使用 C o o k i e Cookie Cookie 影响总结 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹…

如何将Springboot项目升级成Springcloud项目

本文以nacos为例 分为以下几个步骤 1. 下载nacos软件 2. pom文件配置 3. application.yml文件配置 4. 代码调用 5. 效果展示 一 . 下载nacos软件 1.1 下载nacos-server-2.2.0-BETA这个版本 1.2 修改nacos配置文件 打开bin目录下的startup.cmd,将第26行的 set MO…

【计算机网络】第二章 物理层(下)

文章目录 2.5 信道的极限容量2.5.1 奈氏准则2.5.2 香农公式2.5.3 练习题 2.6 章节小结2.7 章节习题 2.5 信道的极限容量 2.5.1 奈氏准则 理想低通信道的最高码元传输速率 2W Baud 2W 码元 / 秒 理想带通信道的最高码元传输速率 W Baud W 码元 / 秒 W : 信道带宽&#xff08…

OZON、雅虎自养号测评如何塑造伪装度极高的测评环境

在测评领域,每个卖家和工作室都深知:创建安全可靠的网络环境对于未来发展是至关重要的。如何打造一个伪装度极高的评测环境,这一问题始终困扰着许多人。 从早期的虚拟机、模拟机、云手机、VPS等系统方案成本高且成号率低。因此,一…

php对接微信公众号扫码登录开发实录(H5微信扫描登录、服务出现故障调试、模版消息设置、扫码轮询交互)

微信公众号扫码登录开发实录 前言一、服务器配置1.微信公众号配置2.本地服务器验证程序 二、生成登录二维码1.生成微信登录二维码2.封装成便于刷新的函数 三、扫码验证和交互四、模版消息设置五、开发中遇见的问题1.该公众号提供的服务出现故障,请稍后再试&#xff…

区分 scanf和printf、fscanf和fprintf、sscanf和sprintf函数

文章目录 前言scanf和printffscanf和fprintfsscanf和sprintf总结 前言 C语言中,许多函数的函数名过于相似,使用者要是不能很好地区分这些函数,就会造成误用,最终导致代码的结果大相径庭。对于scanf和printf函数、fscanf和fprintf…

Xcode 15 beta 2 (15A5161b) 发布下载 - Apple 平台 IDE (visonOS 1 beta 已发布)

Xcode 15 beta 2 (15A5161b) 发布下载 - Apple 平台 IDE (visonOS 1 beta 已发布) IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 此版本已加入 visonOS 支持。 请访问原文链接:https://sysin.org/blog/apple-xcode-15/,查看最新版。原创作品&#…

UWB测距方案|3C门店展示防丢报警方案,优化防盗设计提升购机体验

目前市场上最常见的3C产品(如手机,平板电脑,电脑等)展示防盗是采用有线防盗技术,即底座,防盗线以及警报触头组成。以线下手机营业厅为例,防盗线的长度直接限制了体验者的活动范围,没…

【VC 7/8】vCenter Server 更新(小版本升级)Ⅲ—— VC更新命令行工具 software-packages 更新命令说明

目录 3. software-packages 更新命令说明(1)查看 VCSA 中所有已安装的修补程序列表ⅰ 查看 VCSA 中已安装的修补程序和软件包的完整列表ⅱ 要按时间顺序查看已应用到 VCSA的所有修补程序ⅲ 要查看特定修补程序的详细信息 (2)将修补…

Centos7系统安装Docker

目录 1.Docker安装 1.安装Docker 2.启动Docker 2.Docker相关服务及配置镜像加速器 1.Docker安装 1.安装Docker 输入命令curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun进行安装 安装结束后,输入docker -v查看安装的docker版本 2.启动D…

【文献分享】基于边界点优化和多步路径规划的机器人自主探索

论文题目:Autonomous Robotic Exploration Based on Frontier Point Optimization and Multistep Path Planning 中文题目:基于边界点优化和多步路径规划的机器人自主探索 作者:Baofu Fang ;Jianfeng Ding ; Zaijun Wang 作者机…

Elasticsearch:redact processor - 编辑处理器

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 Redact 处理器使用 Grok 规则引擎来模糊输入文档中与给定 Grok 模式匹配的文本。…

VMware虚拟机在Mac上安装

文章目录 下载链接2 下载CentOS操作系统 下载链接 点击下载官网VMware有30天免费试用,我们点击试用,如果后期需要再购买就可以了 也可以选择player版,免费注册然后下载,不用钱 注册好后会给你生成一个许可证密钥 2 下载CentOS操…

VSCode gdb 调试 qemu u-boot 的方法

前言 最近使用 VS Code GDB 调试 qemu,有了一点收获,u-boot 编译后生成了一个 elf 文件:u-boot,是否也可以调试一下? 为何需要 VS Code GDB 调试,直接 gdb 调试不就可以了吗?答案就是&#xff…