为什么我们需要UML? 或者如何节省您的神经和时间

许多程序员面对着艰巨的任务,而忽略了设计阶段,而指的是设计是浪费时间的事实,在这种情况下,这只会困扰我。


如果任务很小,并且程序员的资格足以确定最佳解决方案,那么这种说法通常是正确的。

不使用UML的程序员分为几组:

  • 我将开始编写代码,在此过程中,我将了解什么以及如何做;
  • 我读了论坛,Habr,中等,堆栈溢出,一本书,墙上的笔记,标志...。
  • 我问我的同事,也许有人知道如何解决类似的问题。
  • 我将开始绘制小方块,并示意性地显示出我对问题的看法。

但是,当解决更复杂的问题时,预先计划和建模会大大简化编程。 另外,进行类图更改比进行源代码更容易。

您可以用盖房子来类比。 当有人要盖房子时,他不仅会用锤子敲打然后开始工作。 他需要一个计划-一个设计计划,以便他可以分析和修改其系统。

如果您已经开始在纸上描述您的任务,那么这已经是一大优势。

什么是UML?


维基百科的官方定义。
UML (统一建模语言)是一种符号系统,可用于面向对象的分析和设计。 它可以用于软件系统的可视化,规范,设计和文档编制。
简而言之,如果您在搜索引擎中查看图片,就会很清楚,UML与方案,箭头和正方形有关。

UML转换为统一建模语言非常重要。 这里的主要词是统一的。 也就是说,我们不仅可以理解我们的图片,而且其他了解UML的人也可以理解我们的图片。 事实证明,这是绘制回路的一种国际语言。

UML设计的优点和缺点


缺点:

  • 浪费时间;
  • 需要了解各种图表及其符号。

优点:

  • 有机会从不同的角度看待一项任务;
  • 其他程序员发现更容易理解任务的本质以及如何实现它;
  • 在迅速熟悉它们的语法之后,它们相对容易阅读。

为了弄清楚是否需要使用UML,需要考虑主图。 多亏了他们,才形成了整体图景,使人们对在业务任务框架中表达架构思想的可能性有了一个想法。

下面的所有图都是互连的。 通过将它们组合在一起,我们可以实现各个任务分解所需的级别。

我建议熟悉一些最有用和最常用的图表。
我们将讨论序列图,状态图,活动图及其最复杂的图-类图。

首先是<...>,然后是<...>,然后是...序列图


假设您需要描述在线商店中订购商品的操作顺序。 谁应该参与该过程? 订单下达前要经历什么阶段?

通常,我们编写了一个长长的阶段列表,应用程序必须经历这些阶段才能获得“已装饰”的自豪状态。 然后,我们描述谁将确切执行特定操作。 然后,我们才开始编程。

这种方法的缺点是什么? 他不是视觉的。

想象一下,在您列出之前描述的步骤以及对其进行注释的过程中,列出了一长串。 您发现它有多容易? 需要多长时间? 我想就足够了。

此方法的替代方法是使用下图所示的序列图。


顺序图

Actor显示在顶部,每个箭头都是与它们关联的特定动作。 在此处了解有关此图表的更多信息

状态图。 我们配置旧的电子时钟


状态图使您可以描述特定条件下单个对象的行为。 她还将向我们展示物体可能处于的所有可能状态,以及由于外部影响而改变状态的过程。

假设我们编写了一个苏联电子时钟。


要进行配置,我们只提供了几个按钮。 相当稀疏。 同时,我们知道其中一个按钮可切换时钟设置模式。 第一种模式下的另一个按钮更改分钟,第二个小时内更改。

设置指令已经很小,但是由于有状态图,因此在视觉上更容易理解。


状态图

在此处阅读有关状态图的更多信息。

类图,或如何在没有代码的情况下谈论您的代码


类图最常用于PS建模。 从系统设计的角度来看,它们是系统的静态描述形式。 类图未显示其上描述的类对象的动态行为。 类图显示了类,接口以及它们之间的关系。
在各种文档中,关于设计模式的描述以及阅读Habr,我们经常遇到类图。 为什么经常使用它?


假设您需要设计一个系统。 在着手实施几个类之前,您需要对系统有一个概念上的了解-我需要哪些类? 这些类将具有哪些功能和信息? 它们如何相互影响? 谁可以看到这些课程? 依此类推。

这是类图出现的地方。 类图是在开始编码它们之前可视化系统上类的一种好方法。 它们是系统结构的静态表示。

它是类图,它使我们对程序代码中的结构和关系有了最完整,最详细的了解。 了解构造此图的原理可以使您简短,透明地表达您的想法。

让我们考虑如何使用类图描述著名的设计模式“ Visitor”。
“访问者”是一种行为设计模式,可让您在不更改可执行这些操作的对象类别的情况下向程序添加新操作。

类图

该图表最显着的优点是:

  • 在向其他程序员解释任务时节省时间;
  • 更加准确和直观地表示了系统主要组成部分的结构。

缺点是要花费大量时间,前提是该图缺乏经验。

您可以在此处阅读有关类图的更多信息,并在此处阅读有关Visitor模式的更多信息

活动图


活动图是一项允许您描述过程,业务流程和工作流逻辑的技术。 在许多情况下,它们类似于流程图,但是活动图和流程图符号之间的根本区别在于前者支持并行过程。
简而言之,活动图有助于我们描述系统行为的逻辑。 可以为一个相同的系统构建多个活动图,每个活动图都将重点放在系统的不同方面,并显示在系统内部执行的各种操作。

活动图上显示了从一个活动到另一个活动的过渡。 实际上,这是一种状态图,其中所有或大多数状态是某些活动,并且所有或大多数转换在某个活动完成时起作用,并允许您继续进行下一个活动。


活动图

该图的含义是可以理解的。 它显示了如何使用Web应用程序来解决远程数据库中的某些问题。 请注意此图中的活动安排:它们散布在三列中,每一列对应于三个对象之一的行为-客户端,Web服务器和数据库服务器。 因此,很容易确定哪个对象执行每个活动。

您可以在此处阅读有关活动图的更多信息。

结论


希望本文结束后,您对UML有所不同。 现在,当阅读有关该主题的文献或网站时,您将更容易理解UML的目的并找到应用UML的机会。 尝试开始应用它,您将感受到隐藏在一组箭头和正方形后面的所有力量和力量。

如果您认为(或知道)某事有误或可以更好地描述,请发表评论。

Source: https://habr.com/ru/post/zh-CN458680/


All Articles