交流伺服系统设计指南_交流设计

交流伺服系统设计指南

软件设计至关重要。 它是应用程序的基础。 就像蓝图一样,它为所有背景的聚会提供了一个通用平台。 它有助于理解,协作和发展。

设计不应仅视为开发的要素。 它不应该仅仅存在于开发人员的脑海中,否则团队将发现它几乎无法增长,因为知识很难获得。 而且,当员工离职时,公司会损失更多的价值。

应用程序代码应通过将领域模型有效地转换为清晰的抽象来描述设计。 这些应该经过良好的编码,良好的命名和良好的定义。 但这还不够。

设计不仅应存在于代码中。 尽管使用该层来表达设计对于开发团队来说可能已经足够,但是拒绝了其他对应用程序设计感兴趣的人。 他们要么无法物理检索代码,要么没有软件开发背景,要么就没有时间自己弄清楚设计。

有时,在编写大量代码之前,需要在多团队组织中讨论和完善高级设计。 在这种情况下,很明显,即使代码表达了设计,也不应仅将其包含在代码中。 为此,设计建模已成为一个单独的过程。

表达系统设计

设计不仅涉及类以及它们之间的关系。 这也与合作和行为有关。 关于用例,状态和活动。

交流设计的主要形式如下。 由于UML的普及性, UML被用作参考,但是没有人会受其符号或术语的约束,因为重点应该放在有效的沟通上。

结构体

概述图

使用一组描述部署策略,程序包,模块和组件的图来描述系统结构概述。

最高级别的概述之一是部署,按照应用程序使用的基础结构实体进行描述。 UML描述了实现该目的的部署图 ,该部署图由节点组成,例如Web服务器,应用程序服务器,数据库服务器和客户端。

系统中部署的组件具有外部依赖性。 这些应记录在案。 UML为此目的规定了程序包图 ,它描述了程序包合并和导入关系。

详细图表

在较低的层次上,通过展示类及其之间的关系来描述系统的结构。

类图

类图描述了系统的类,包括它们的属性,操作(或方法)以及它们之间的关系。

关系可以具有多种类型,例如,依赖性,关联性,组成,继承。 应该清楚地表达它们,以便开发人员团队可以手动设计系统,也可以使用根据类图生成类的工具来设计系统。

在UML中 ,类成员可以具有以下类型的可见性:

  • 公开 :+
  • 私人的 :–
  • 受保护的 :#
  • 派生 :/,该属性是根据另一个元素的属性计算得出的
  • 包装方式 :〜

在UML中 ,定义了以下关系:

图1

  • 关联 :表示一系列链接,可以是单向或双向的; 关联可以被命名;
  • 继承/泛化 :一类是另一类的专门形式
  • 实现/实现 :一个类实现一个接口
  • 依赖性 :两个元素之间的单向关系,当对一个元素的更改导致需要更改另一个元素时发生
  • 集合 :“具有”关联,只能是双向的; 在聚合关系中,聚合组件可以存在于容器外部
  • 组成 :更强大的聚集关系,其中聚集的组件不能“存在”于容器外部,例如汽车的引擎

类结构图

这种类型的图显示了类的内部结构。 它们可以包括其协作者如何与之交互以及如何与之交互。

在UML中 , 复合结构图包括内部零件,端口和连接器。 端口促进了班级内部以及与外界的交流。 连接器位于零件和端口之间。

斐波那契系统的复合结构图如下所示:

图2

互动互动

一个系统内发生的交互与其结构一样重要,甚至更多。 实际上,行为是用户所体验的,因此对其进行精确描述和早期建模可以使参与该项目的每个人都省去很多麻烦。

用例

用户与系统进行交互以满足目标。 实现目标所需的一组交互作用形成一个用例 。

与一组用户故事相反,表示这些交互对于以紧凑形式可视化需求非常重要。 UML定义了用例图 ,其中涉及不同的参与者和系统。

互动概述

在更高的层次上,可以用模块之间的交互来描述系统,通常是为了建模控制流。 就此而言, UML定义了交互概述图和活动图 。 交互概述图可以描述由多个交互组成的控制流,而活动图的详细程度较低,描述了实际条件,逻辑和动作。

详细互动

消息序列图捕获了协作类之间的操作顺序。 在UML中 ,它们称为序列图。 这些类型的图不仅描述了类如何交互,而且还包括时间元素,建立了交互的顺序或顺序:

图3

水平箭头显示两个协作者之间交换的消息。 垂直线(也称为生命线)捕获了两个类之间可能发生的所有通信。

在具有复杂约束和条件的环境中,系统状态可能难以可视化。 最直观地讲,该系统可以表示为状态机,其节点数量与状态一样多,并且条件会在附加到标记过渡的箭头的状态之间进行切换。 为了提高可读性,应抽象出复杂的条件并以简洁的方式表达。

在UML中 ,状态图使用标准化表示法表示状态。 实心圆表示初始状态。 空心圆代表最终状态。 圆角矩形表示给定的命名状态。 箭头表示与事件相关的过渡。 还提供了事件名称:

图4

建模技术

可以使用文本和图形两种基本方法来描述设计。 通常,人们倾向于对图像更感兴趣,但文本模型倾向于更具描述性。 存在混合功能,可以同时进行高级概述和可视化详细信息的功能。

执行文本建模,以形式化语言表达需求。 这些模型倾向于以牺牲总体概观为代价提供更多细节。 在某些方面,创建速度被认为比图形方法要高,因为在图形方法中,设计人员需要在鼠标和键盘之间进行切换。 格式化趋向于更快,更高质量。 同样,鉴于基于文本的格式,版本控制的使用变得更加自然。

但是,对于文本建模,理解模块往往是一项更具挑战性的任务。 更现代的工具提供了显示基于树的结构或状态机的方法来克服此问题,但这并不总是足够的。 无法解决的一个特定问题仍然是动画和仿真,如果需要,应将其视为转向图形方法的基础。

使用图形建模,用户无需使用建模工具即可学习任何东西。 设计往往不太像编程,因为用户可以将更多的内容与他们要建模的概念联系起来。 学习系统时,从高级到低级再回到高级很容易。

结论

交流设计与设计同等重要。 必须避免将设计锁定在开发人员的思想和/或代码中。 相反,应该有效地进行沟通,以便项目中的每个人都可以访问它。

翻译自: https://www.javacodegeeks.com/2016/08/communicating-design.html

交流伺服系统设计指南

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

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

相关文章

maven 父maven_Maven神秘化

maven 父maven由于我的Android开发的背景下,我比较习惯到Gradle ,而不是Maven的 。 尽管我知道Gradle基于Maven,但我从未调查过幕后发生的事情。 在过去的一周中,我一直在尝试了解细节并找出Maven的不同组成部分。 什么是Maven M…

【WebRTC---序篇】(一)为什么要使用WebRTC

1.1.1自研直播客户端架构 一个最简单的直播客户端至少应该包括音视频采集模块,音视频编码模块,网络传输模块,音视频解码模块和音视频渲染模块五大部分。如下图所示 1.1.2拆分音视频模块 在实际开发中,音频和视频处理完全是独立的。如下图所示,经过细分后,音频采集与视频…

DFS深搜与BFS广搜专题

一般搜索算法的流程框架 DFS和BFS与一般搜索流程的关系 如果一般搜索算法流程4使用的是stack栈结构(先进后出,后进先出)那么就会越搜越深。即,DFS,DFS只保存当前一条路径,其目的是枚举出所有可能性。反之,如果流程4使…

cloud foundry_使用“另类” Cloud Foundry Gradle插件无需停机

cloud foundry我一直在尝试编写用于将应用程序部署到Cloud Foundry的gradle插件 ,并在上一篇文章中写了有关此插件的文章 。 现在,我通过使用两种方法支持将无停机时间部署到Cloud Foundry中来增强此插件: 自动驾驶风格部署和更常用的蓝绿色风…

懒惰学习_懒惰评估

懒惰学习最近,我正在编写log4j附加程序,并希望在自定义附加程序创建过程中使用logger记录一些诊断详细信息,但是log4j初始化仅在创建附加程序实例后才完成,因此在此阶段记录的消息将被忽略。 我感到需要在自定义附加程序中进行延…

leetcode(动态规划专题)

线性DP 53. 最大子数组和 思路 code int maxSubArray(vector<int>& nums) {//res:最后所有状态的最终Max结果//lat:当前f[i]状态的Maxint res INT_MIN, last 0;for (int i 0; i < nums.size(); i){//当前f[i]状态最大值(使用下面的状态转移方程得出)//f[i] …

leetcode(链表专题)

数组模拟链表 #include<iostream> using namespace std;const int N 100; // 单链表 // head存储链表头&#xff0c;e[]存储节点的值&#xff0c;ne[]存储节点的next指针&#xff0c;idx表示当前用到了哪个节点 int head, e[N], ne[N], idx;// 初始化 void init() {hea…

lagom cqrs_Java和Lagom的CQRS

lagom cqrs我很高兴在Chicago Java User Group上进行了讨论&#xff0c;并讨论了Lagom如何实现CQRS&#xff08;命令查询责任隔离模式&#xff09;。 值得庆幸的是&#xff0c;有一个录音&#xff0c;我还把这些幻灯片发布在slideshare上 。 抽象&#xff1a; 一旦应用程序变…

【WebRTC---源码篇】(四)WebRTC线程模型

常见的线程模型 1.为了解决频繁线程创建与销毁,在此模型中使用的线程池。在线程池创建的时候就将一些线程创建起来,以提高效率。通过控制线程数量来解决线程频繁切换。 2.一般线程与线程存在前后关系的,线程执行完毕之后生成一个新的任务(task1 , task2,task3---)插入到任…

java cuba_CUBA平台–用于快速应用程序开发的开源Java框架

java cuba传统上&#xff0c;自计算时代开始以来&#xff0c;企业软件开发自然面临着一个挑战&#xff0c;当时自然而然地&#xff0c;企业软件开发本应专注于解决实际的业务问题&#xff0c;但与此同时&#xff0c;开发人员必须在技术上花费大量时间和精力。解决方案的一面&am…

java中什么时候应用异常_生产Java应用程序中的十大异常类型-基于1B事件

java中什么时候应用异常Pareto记录原理&#xff1a;97&#xff05;的记录错误语句是由3&#xff05;的唯一错误引起的 在最新的数据整理帖子之后&#xff0c;我们收到了很多反馈和问题&#xff0c;我们发现97&#xff05;的记录错误是由10个唯一错误引起的 。 根据大众的需求&…

C++ 11 深度学习(十四)C++类

(一)综述&#xff1a;类是我们自己定义的数据类型 设计时要考虑的角度&#xff1a; 站在设计和实现的角度来考虑&#xff1b;站在使用者的角度考虑&#xff1b;父类&#xff0c;子类之间的考虑&#xff1b; &#xff08;二&#xff09;explicit 首先, C中的explicit关键字只…

手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小...

手动编译 lombok在本文中&#xff0c;我们将看到如何在常规Java代码中使用lombok来最大程度地减少代码长度和冗余。 什么是Lombok&#xff1f; Lombok&#xff0c;一个编译时注释预处理器&#xff0c;有助于在编译时注入一些代码。 在详细介绍之前&#xff0c;我要求您应该从…

mysql超大表处理方式是_第29问:MySQL 的复制心跳说它不想跳了

问题最近年底&#xff0c;大家的数据库经常跑批量大事务&#xff0c;会发现复制突然断开&#xff0c;报错“心跳与本地信息不兼容”&#xff1a;会是什么原因&#xff1f;实验我们先来复现一下&#xff0c;再进行分析。宽油&#xff0c;做一对主从数据库&#xff1a;我们先造一…

sap 分摊分配不产生会计凭证的原因_SAP软件的物料分类账功能

物料账介绍物料分类账(Material Ledger)是SAP财务模块的重要功能之一&#xff0c;用于对标准价计价的物料进行差异处理。激活ML后&#xff0c;系统会在"工厂物料"层(或更细的层次)为每个物料建立子账簿&#xff0c;记录该物料在各个期间的数量、价值变化情况。月底运…

忽略异常_忽略已检查的异常,所有出色的开发人员都在这样做–基于600,000个Java项目...

忽略异常Github和Sourceforge上超过600,000个Java项目中的异常处理概述 Java是使用检查异常的少数几种语言之一。 它们在编译时强制执行&#xff0c;并且需要某种处理。 但是……在实践中会发生什么&#xff1f; 大多数开发人员实际上会处理任何事情吗&#xff1f; 他们怎么做…

数据结构【队列专题】

先进先出&#xff08;First In First Out&#xff0c;FIFO&#xff09;的线性序列&#xff0c;成为“队列”。 队列也是一种线性表&#xff0c;只不过它是操作受限的线性表&#xff0c;只能在两端操作&#xff1a; 一端进&#xff0c;一端出。进的一端成为队尾&#xff08;re…

oracle安装卡在create inventory_滴滴云服务器上安装Oracle12cR2单实例数据库

一、相关说明Oracle数据库是由美国甲骨文公司推出的一款优秀的关系型数据库。当前最新版为Database 19c。本文简述Oracle Database 12cR2在滴滴云主机上的安装过程。如需更权威的指导方法请参考Oracle官方安装文档。二、环境概述一台DC2云主机&#xff08;2c4g&#xff09;一个…

【WebRTC---序篇】(二)Windows平台WebRTC源码编译

需要准备的东西 (一)一个强大的梯子(懂得都懂)!!!!!!!!! (二) 下载depot_tools Windows指定地址必须在此下载 打开这个页面,找 install depot_tools 这个关键字 请把他解压到C盘,并且设置到PATH环境变量种,且让它处于最顶端。 其他需要设置的额外变量 DEPOT_TOOLS_…

商品管理后台发布商品时,规格值组合的前端交互的实现逻辑

方案1&#xff1a;先计算总行数&#xff0c;再循环填充规格值 根据每种规格值数量计算得到总行数&#xff0c;如果下图有3种规格&#xff1a;长度、重量、大小&#xff0c;规格值个数分别为&#xff1a;3、3、2,3x3x218行。 规格种类有3种&#xff0c;于是写3层嵌套递归循环填…