交流伺服系统设计指南

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

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

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

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

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

表达系统设计

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

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

结构体

概述图

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

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

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

详细图表

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

类图

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

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

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

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

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

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

类结构图

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

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

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

互动互动

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

用例

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

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

互动概述

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

详细互动

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

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

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

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

建模技术

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

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

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

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

结论

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

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

交流伺服系统设计指南

交流伺服系统设计指南_交流设计相关推荐

  1. delphi5开发人员指南_非设计人员的网页设计开发人员指南

    delphi5开发人员指南 I created my first website as a school project when I was 14. The task was simple: cre ...

  2. python问卷调查系统设计案例_从设计到施工,全面剖析超级玻璃屋面系统案例!...

    [设计师的材料清单]戳图即可购买<设计师的材料清单>实体书或获取高清电子书转载整理自:弗思特(ID:FFTCCL) 各位设计师 大家好! 随着人们对建筑外观及内部环境要求的不断提高 具有大 ...

  3. neo4j图形算法综合指南_网页设计中色彩使用的综合指南

    neo4j图形算法综合指南 There is a lot of material about color to be found online. But none of us has the time ...

  4. 印发 指南 通知_通知设计的综合指南

    印发 指南 通知 重点 (Top highlight) Peripheral messages in digital products, collectively known as notificat ...

  5. 制作一个状态栏中跑马灯效果_图标设计指南(3)——制作一个图标集所需全部信息(中)...

    本文翻译自图标设计专家Justas Galaburda写的图标设计指南.本文主要介绍制作一个图标集所需全部信息(中).翻看同系列文章,直接到文章最底部. 制作一个图标集所需全部信息 上次我们介绍了我将 ...

  6. 工作经验教训_在设计工作五年后获得的经验教训

    工作经验教训 This June it has been five years since I graduated from college. Since then I've been working ...

  7. vue路由匹配实现包容性_包容性设计:面向老年用户的数字平等

    vue路由匹配实现包容性 In Covid world, a lot of older users are getting online for the first time or using tec ...

  8. 404 错误页面_如何设计404错误页面,以使用户留在您的网站上

    404 错误页面 重点 (Top highlight) 网站设计 (Website Design) There is a thin line between engaging and enraging ...

  9. 西里尔字符_如何设计西里尔字母Њ(Nje),Љ(Lje),Ћ(Tshe)和Ђ(Dje)

    西里尔字符 This article is about how to design Cyrillic characters Њ, Љ, Ђ, and Ћ (upright caps and lower ...

最新文章

  1. c语言 获得回车按键控制输入法,android调用输入软键盘回车键跟删除键
  2. eclipse 安装svn插件
  3. php 接受数组_PHP接收前端发送的数组
  4. PMCAFF | 阿里PM的可用性测试秘籍:有理有据的用户体验优化
  5. 【NLP】国内实力雄厚的自然语言处理(NLP)研究组
  6. Maven构建分布式项目时子模块相互依赖打包技巧
  7. 我是如何带领团队开发项目的
  8. 串灯控制盒去掉怎么接_仿木地板瓷砖怎么样?仿木地板瓷砖怎么铺?
  9. 教训:LINUX复制文件到U盘丢失
  10. awk使用多个分割符
  11. mysql 多表查询 like_MYSQL多表联合查询的问题
  12. pcm系统设计及matlab仿真实现,DOC:25页毕业设计PCM系统设计及MATLAB仿真实现.doc文档优秀范文...
  13. 论文笔记 | A Tale of Two Headers: A Formal Analysis ofInconsistent Click-Jacking Protection on the Web
  14. Hello 中国,Go官网回归中国
  15. Android Tech Weekly - 45 :再不好好学习,Copilot 就取代你了
  16. 什么是 Null Pointer Exceptions (java.lang.NullPointerException) ,是什么原因造成的?
  17. html输入框自动对齐,html如何设置文本框对齐
  18. 扫地机器人腿是咕噜_智能家居 篇一:洒哇地咔钟点狗智能擦地机初步评测:试水之作 略有失望...
  19. HCIP-H12-221单选题库(4)
  20. 倒三角形算法的实现!

热门文章

  1. 模板:容斥优化多重方案背包
  2. Loj#2880-「JOISC 2014 Day3」稻草人【CDQ分治,单调栈,二分】
  3. AT2390-[AGC016F]Games on DAG【状压dp,SG函数】
  4. P4213-[模板]杜教筛(Sum)
  5. nssl1453-Fibonacci数列【矩阵乘法,线段树】
  6. P3808,P3796-[模板]AC自动机(简单版/加强版)
  7. ssl2293-暗黑游戏【dp练习题】
  8. 【dfs】栅栏的木料(2012特长生 T4)
  9. 25、jdbc操作数据库(2)
  10. Spring整合mybatis中的sqlSession是如何做到线程隔离的?