<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: KienTPhan</title>
    <description>The latest articles on DEV Community by KienTPhan (@kientphan).</description>
    <link>https://dev.to/kientphan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F342506%2Fbec3b289-92d6-4fab-b93a-199277958e54.png</url>
      <title>DEV Community: KienTPhan</title>
      <link>https://dev.to/kientphan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kientphan"/>
    <language>en</language>
    <item>
      <title>How to use UML Diagrams for better communication</title>
      <dc:creator>KienTPhan</dc:creator>
      <pubDate>Sat, 13 May 2023 19:39:54 +0000</pubDate>
      <link>https://dev.to/kientphan/how-to-use-uml-diagrams-for-better-communication-4pf0</link>
      <guid>https://dev.to/kientphan/how-to-use-uml-diagrams-for-better-communication-4pf0</guid>
      <description>&lt;h2&gt;
  
  
  Why I think you should learn UML Diagrams?
&lt;/h2&gt;

&lt;p&gt;I think it can help a lot when explaining complex concept. It is very easy to get caught up in the weeds when talking to another developer and miss the whole reason for the conversation. Having a diagram keeps me from caring so much about the details and allow more higher level thinking.&lt;/p&gt;

&lt;p&gt;Another benefit I think it helps with is understanding a new system. If you force yourself to map out a system into a diagram, it helps you visualize it and learn the system. It is also great for sharing this knowledge or refreshing your mind in the future. The bonus of learning a system by drawing out a diagram is you end up with a diagram in the end that could be use as documentation for your team!&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagram types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;structural&lt;/li&gt;
&lt;li&gt;behavioral&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Structural diagram
&lt;/h3&gt;

&lt;p&gt;Structural diagrams helps explain the actual parts inside your system like model classes and their relationships.&lt;/p&gt;

&lt;h3&gt;
  
  
  Behavior diagram
&lt;/h3&gt;

&lt;p&gt;Behavior diagrams helps explain some process like clicking a button and the light turns on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the most useful UML Diagrams for developer in my opinion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;class diagram&lt;/li&gt;
&lt;li&gt;sequence diagram&lt;/li&gt;
&lt;li&gt;use case diagram&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  class diagram
&lt;/h3&gt;

&lt;p&gt;Shows a class and their members and its relationship with other classes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lNUYzfvP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q5iwqxj7eaz65rn2gkw6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lNUYzfvP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q5iwqxj7eaz65rn2gkw6.png" alt="class diagram image" width="650" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  sequence diagram
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iJJOTrxP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2ef1t4k6chq7g0pe50z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iJJOTrxP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2ef1t4k6chq7g0pe50z.png" alt="sequence diagram image" width="622" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Diagram is good for mapping out the flow of function calls during an execution between the instances of classes. It is a great compliment on top of class diagram. It shows how the class instances interact with each other. &lt;/p&gt;

&lt;h2&gt;
  
  
  Use case diagram
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KUjKDi5l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prf6jajvykurlgg5898x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KUjKDi5l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prf6jajvykurlgg5898x.png" alt="Use case diagram image" width="662" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is another behavioral diagram that helps map out how a system operate with different user behaviors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Component diagram
&lt;/h2&gt;

&lt;p&gt;This is used when planning the architecture of a project. This help abstract out complex system into components and show their interaction with each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  other types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;state diagram&lt;/li&gt;
&lt;li&gt;deployment diagram&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;keep diagrams scope narrow to avoid clutter&lt;/li&gt;
&lt;li&gt;make sure to have a purpose and audience for the diagram&lt;/li&gt;
&lt;li&gt;remember the purpose is to communicate something, so don't overthink it&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  software to use
&lt;/h2&gt;

&lt;p&gt;Note: you can just use paper and pen.&lt;/p&gt;

&lt;p&gt;My recommendation for software is &lt;code&gt;draw.io&lt;/code&gt;. It's free easy to install and has great integration with Notion.&lt;/p&gt;

&lt;h2&gt;
  
  
  source
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://builtin.com/software-engineering-perspectives/uml-diagrams"&gt;source 1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>design</category>
      <category>diagram</category>
    </item>
  </channel>
</rss>
