<?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: Joe Wallace</title>
    <description>The latest articles on DEV Community by Joe Wallace (@joeswallace).</description>
    <link>https://dev.to/joeswallace</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%2F919672%2Ff81b7d01-ecec-4925-840e-2b14679b6f39.jpeg</url>
      <title>DEV Community: Joe Wallace</title>
      <link>https://dev.to/joeswallace</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joeswallace"/>
    <language>en</language>
    <item>
      <title>Standard visual modelling languages</title>
      <dc:creator>Joe Wallace</dc:creator>
      <pubDate>Fri, 18 Nov 2022 17:35:08 +0000</pubDate>
      <link>https://dev.to/oneadvanced/standard-visual-modelling-languages-4el0</link>
      <guid>https://dev.to/oneadvanced/standard-visual-modelling-languages-4el0</guid>
      <description>&lt;p&gt;Within the profession of Business Analysis, a key function is for the Analyst to be able to communicate ideas effectively, in a way that an intended audience is easily able to understand. &lt;/p&gt;

&lt;p&gt;One way of doing this is visually modelling a process or system; a large benefit of this is to be able to distil complex concepts down into one easy-to-digest visual. Additionally, it’s easy to iterate on a model based on feedback, and new requirements coming to light.&lt;/p&gt;

&lt;p&gt;In order to help Business Analysts, various standardised modelling languages have been created. In this article, we’ll focus on two of the most common ones: Unified Modelling Language (UML) and Business Process Modelling Notation (BPMN). When should you use them, and what do they consist of?&lt;/p&gt;

&lt;h2&gt;
  
  
  Unified Modelling Language 🌐
&lt;/h2&gt;

&lt;p&gt;UML is an object-oriented modelling language, intended for use in a broad range of different domains, architectures and coding languages. It is focussed on the design of IT systems specifically, and as such can be used for software or architectural designs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What is UML good for?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactions within an IT system or between IT systems.&lt;/li&gt;
&lt;li&gt;Determining objects used by a system, and the data items within them.&lt;/li&gt;
&lt;li&gt;Communicating architectural designs to stakeholders with technical expertise.&lt;/li&gt;
&lt;li&gt;Automated generation of code and/or test cases.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are two different types of UML diagrams:&lt;/p&gt;

&lt;h2&gt;
  
  
  Structure diagrams
&lt;/h2&gt;

&lt;p&gt;These demonstrate the objects and components within an IT system and how they relate to each other. Various types of structure diagrams are available, including:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Class diagrams&lt;/u&gt; &lt;br&gt;
Denote object classes within the system, and the relationships between them.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Object diagrams&lt;/u&gt; &lt;br&gt;
Similar to class diagrams, but show how the user of a system might see the objects within it.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Composite structure diagrams&lt;/u&gt; &lt;br&gt;
Also similar to class diagrams, but also show the composite parts within classes.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Component diagrams&lt;/u&gt; &lt;br&gt;
Depict how system components hang together and depend on each other.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Deployment diagrams&lt;/u&gt; &lt;br&gt;
Denote the distribution order and configuration required when deploying an IT system.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Package diagrams&lt;/u&gt; &lt;br&gt;
Model how packages in the system fit into the overall application model and their dependencies.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Profile diagrams&lt;/u&gt; &lt;br&gt;
Allow you to document prototype data structures using “stereotypes” - domain-specific data models which can be used for more formal class or object diagrams later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Example%20Class%20Diagram.drawio#R7V1tc%2BK2Fv41zLSdgbEsIORjINvtnaY7mbCd2%2B2XO8IWRre2RW2xCf31PZLfLRsMwWtKndnJWsfym55HRzqPjp0BXnhvHwOy3fzCbeoOTMN%2BG%2BDHgWmiqXEP%2F0nLPrVMIosTMDu2ZYYl%2B4vGRiO27phNw0JFwbkr2LZotLjvU0sUbCQI%2BGux2pq7xatuiUM1w9Iirm79L7PFJrLOzLvM%2FhNlzia5MprGT%2ByRpHL8JOGG2Pw1Z8IfBngRcC6iLe9tQV3Zekm7RMf9WLM3vbGA%2BqLJAfdovvkZo4%2F%2F%2B%2F2z8%2BQM37bs95dhfJavxN3FD%2FxC1zQIiBvftNgnLRG%2BMs8lPpTma%2B6LZbzHgDJxmePDtgW3QgMwfKWBYNCID%2FEOwbdgtTbMtZ%2FInu%2FkDYeCWH8kpfmGB%2BwvOC1cGD8iMMDuQMR8MKeFGkt5ZHzpgIZQ5zlpBZSankgo4joWd12yDdlK3bCs4pHAYf6cC8G95ER859vUjkspWKogAv5HCr88Pm41eEr6VgsHSkGG7kG5R0WwhyrxASkvkp6RlF8zmkFviWybHMXAGtM7praTnju93At0BeI78LzZ9XDpeuOm1ytdjriAsU8EncsWC%2FOcg43co2YmxcQTWGlWs5L6lnygTztvBSwr8xOgEDkuunQtapkYbonFfOdJ1XkcZ5aX%2BLmlicOxa1exYMNsm%2FqKJYIIskqZv%2BXMF6phJnP4B823MEaTwQRuaAFllJXhn6weiAX3gVCEKZpQYOkrlUxtxqn6TqwTbV%2FE71Sc87QqAHwqmviAjzFeoAW4f3NgHvAmG%2BG58WZbkE%2FMjiEfa5D%2FGjjQffc90BcF%2Bm7WMdCTQ337iQpxg466W8iRMe4Y86mGuQaxy9Q8MW4OVDmHOoK%2FB0jK0yWAf5Z8eBwijRRYJwWuIIBLVtR95iETjMvzB1HdEjG6GqQRbjgbm7UE6p0GKrEsuhXffX9z%2Fbc9DLv2xjMNxID%2BH0KBHsTmIE67dq%2F3Goi7rQ3hVjKw%2Fsdf88Aj0o31uDbH9f7McPdiuCaKVg7YB%2FsrUyHtC%2F1zJ5%2B%2F11xa1VxQSXPBs4akSLSS0yQXhM%2B8XAeSC9KVQI2N1LcfpKQKpZXLJR3mYIr5goyo%2BCNz3WaAFtGntkMTflN3xV8%2FZIa5MsCOhOMpHeRRh8kAT8B3gUUb9Exgv0MPuZj7anZVwRlQF1z01%2BLNHaDPs3ShObXOKFIHyFM8RfRQ8VF51bd0Ilw6EZ6UuBU9tHaii%2FFK1%2FIetmq88Ki6z971fRPXh8%2F1Ree5PjxucLm7K3F9ukD5DH2X%2Bj0pWyblxJgVWNL2Gshk8s9ZA0G6hvqJeFSj5L94wo%2BryXUt6x5IF0c%2F%2FbQc3OwCVuu66GG8O1%2F0QLow%2BgguAix8Db%2FmLID76kG%2FKOidL4AgXTh9sG0YfsMe6stC3f3CB9L11Y8Q8fau%2FOJQN10NaQ9qXYV95qGwuH17M7CuwZ50PVFLoo5%2BRfOiuM4aTsjaWtI0dUkTHpOt94%2FU447MV2VW2C%2BhnIBo52soScfMQSpbYedCpN%2BrNS2rNUNsmKOyYoMnzSiBxpN6TtyGjmjqOmKv2FR03%2BtVbExdc3villpq71FsimJjHaa1cV%2FX3Z4DvoaQHHCMko6523fLxoCeu2p9OUB1Ya0E6OIW47LWAEVG545WV83QaPSDBmEu44BvVXvnArBc7oGZTL%2BS2jYjHvftzxvml2ZmaJwYcpkK%2BeQDQGTDHUmsfAbCERat4olZOanhjYnfcttf5DbAH5Ue33K7HveDfKB9kcQGXJOwkEzojFE84L0zW2E4xsbIyP2gwqQNZmiwd5ztNosXaJrLMESl2aBG0JpkhuxMSUW%2BXoe0lYQHUxcJUSe8Rm3y2odG%2Bi1fyDFbFjNqq9J%2BUOwPqJv%2BELP9aJ5PtJJT32%2BK9MYX6UNpZJN2mvGoFDI17ScTVD5V6UQt5%2FyYungaJa9WKOV9jN7qW6XDxikOaHZWSsU%2FKccR6zpvH6BX9NzrDdCxLun2od07AO08ZwLrgu6%2FIbRre8ntCOydZ01gXSq91ayJ1kDsPh8C63Lp84b7%2FTcazgCz84wHrKumHzzC9O%2FA9BhebSID1oXSOPCyZdjL4deSBtE7Z30cNmgxDhuWlKrm66SJ8XbXSbEu%2Fi631GLAM3F7Hwg5393gGhXqaoIxXelc7lbDsMfyZCy7j8N0ya6fkJ8IYudR1VjXt%2Fr5%2BHlYdh9cjXWpq5%2BPn4Zh5zHVWFe3bnktMFv%2B%2B5Le%2FvG1wGz970tuT%2BtrgcnHZI%2BtBdYFfdka%2BrQ407%2FMBwDK7%2B0jVIoLmi4GjlHNO7ZXtGY%2BrpADlfSbpfYaHpGtvqIu950kmPV4IAc3sSE%2B%2FBeNdGmAu5DVd0L1f3ULK7l7RUIVDBORHlGb4gdh4lZu%2BlzI7hHG4aok4uuGCboE3yktrwHZFrttI592JII077Rs22HV%2B9FGVRRpHIgi3%2BfSdM3vkEfzuZIUbBJulMNAxXaqyZY5wSOc7X1k6ZkGDJpFihqXdi9Jsxz1L%2BOanPscxJMKhCeXcTNDs%2FxK%2FLl%2BZlj%2BZElZyGg56WCs65cDc%2BrKgYzBhhNNNSLDKjF8gp4dJla47CqrmToc%2BQi2rZzGmgdRSb1yo5anLO6rCVh2jtzVqmdq2jtEC%2B7yIOssa3BXJdNRCS59t6jKMRV7mZT3ktMP5DgznS4Wl%2FJZpfSDyhdGTJ3NuDV3VfWxypQVOXCmf%2B54TJFsq5o0v%2Bzk5%2BddSRyjijvqbe9oaIF2UzqIYakRSnVWmoxeBMaVjQzKeurIRBU0g%2BGuPofQ1AXUqZEOkIX3yVojky5cvptMD44TUEfNP%2Br4RNQkJ6AWD6QgawBO1kY%2Bn7JDE6upzLpnVOljb%2BVkUVTFoG9Jn2vJDG0z41kDVP7k53aD5pmf6dwOjQwT52d3xug%2BM3Q0w2uaTBrJ5IcCSHx3hy4ym0OlKdjdmXO5clKfWZ4UXkPMqCvW73bGC%2B5t4%2FepT3XG3k5%2Bww6mg0OgsNpkvgpNZfVwHwrq9W5ZTfVKyclV%2Banmt3TLSQB0SSJ9pD4NAJAwptKUeLKR%2FVW4zVXP84r5NmAlYjkjEycsl8g1GIPJX0Tez241TIz9oK%2FlP08mBXbhigjkvkowKatil6PXaR9WjZu7XiOp0Tuy8a96NGw%2B8B1%2FO8KshuDbKBb6B01L75E2FkbLmesNBQtASikDSbV4KaT2hseo%2BoYzUkVnbDg6QjH7m2FR9exPr%2BEPfwM%3D"&gt;Example class diagram on Diagrams.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Behaviour diagrams
&lt;/h2&gt;

&lt;p&gt;These demonstrate dynamic changes which may occur within an IT system as a result of user or automated triggers. Many different behaviour diagrams exist, including:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Use case diagrams&lt;/u&gt;&lt;br&gt;
Describe how users and systems functionally interact with an IT system, in a series of steps.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Activity diagrams&lt;/u&gt;&lt;br&gt;
Graphical representations of the workflow through a system, organised into swim lanes.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interaction overview diagrams&lt;/u&gt; &lt;br&gt;
Similar to activity diagrams, but with a focus on interactions over workflow.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Sequence diagrams&lt;/u&gt;&lt;br&gt;
Models dependencies in the flow of an IT system in sequence.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Communication diagrams&lt;/u&gt; &lt;br&gt;
Similar to sequence diagrams, but more focussed on how processes interact than on the time sequence.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Timing diagrams&lt;/u&gt; &lt;br&gt;
Also similar to sequence diagrams, but with an emphasis on the amount of time each process takes.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;State diagrams&lt;/u&gt;&lt;br&gt;
Show which state transitions are permitted and how they are triggered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Example%20Use%20Case%20Diagram.drawio#R7VrJcts4EP0aVc0c7OJO6eglW1VclYqScjI3iIQojEmCA0K2PF8%2FDRJcsCh2bMmykvHBAhoLgcfXrxuQJv5FsXnHULW6oinOJ56Tbib%2B5cTz4qkH%2F4XhvjW4kRO2loyRVNoGw5z8i6XRkdY1SXGtdOSU5pxUqjGhZYkTrtgQY%2FRO7bakufrUCmXYMMwTlJvWa5LyVWudevFgf49Jtuqe7EaztqVAXWe5k3qFUno3MvlvJv4Fo5S3pWJzgXMBXodLO%2B7tltZ%2BYQyX%2FDEDFum79ObjwrsmF8Vf7%2F%2BOv5LF9ETOcovytdzwZ7zEjGEmF83vOyRg%2FZUorov8LOGUTfzzW8w4Aaw%2BogXOP9GacEJL6LKgnNNi1OEsJ5lo4LQC64oXOVRcKNI1z0mJL%2Fq354BRrgnG4s3Wzbo9hMA9TAvM2T106QaEEvWOd91buBteoi9Nq9H7i6QNSdpk%2FcwDslCQ4P4E0J4BNOy5XuccwYaOGuo41qCODgy1b0BtAHy3IhzPK5SI%2Bh0olwrVDlDptyxROXFDA5UgtMASzMI94RIYuFyhG9BWz2GNz6PcwAlmBaGFyvn%2BEfN9kze9244Rmu6LOKEB0BeGSPYKIepczT00ZJEB2RxzgReoTQLPeFVweRZlelm4YgOuawYoqARzcsy5JQAfErqTPqAeDLupRdYjVIi957zZ9bhGyiRfp7g3ZkoXWdMAHkGoR9M%2BzOIyPRNpJdhohaHpPEX1CqdyHDTLHHYKNUbXZdq0iViLN4R%2FE%2BXTUNa%2Bd6OgfLkZdbu87yolQDcaJKrfx23DsKbWjWv3hlMjudUIAPuna5bgh1WRI5Zh%2FpAUbCWUc%2BoG3kzhVCCZwnCOOLlVV2qjj5z8EyUiZ%2BpmDlyVqr6eWLQ7lKPGCbI2kT%2FV5CLWJmoh%2BMFEXUe6XNZY6dMwvkfl6U4wsziBLhMDQ0taYlUaNEb27FK4NVDt2ex6kDWBnTUjlbElSeFuqOPOtHjqP5E6npYD6yK4hTm7YkXnAb8OLeJfgxZaFNWVad%2B0ME%2F3z6KFjF%2FuKHoNscwev3Ydhw5FiUCnxFODTBxpE81emBPmRcQRc2JLzvEynAj140VwrJwwb0y%2BVikyziWkXFJWoObm6TUdTvrE7WBnE9e8WznyANxy4vgjsOZa%2FiNz%2Bp25lnmn9P%2Bp9dn83aoMJ5Zj5smOzpn%2BdHYaRrPhL3gaJbfN0y33p0%2Bd%2FRWNOm5%2Fh1DXvPW7QjxZNfGiAoxxs64UFzQT3wqSpD5ovAgdVQSCg4cL8x7w8xBmr1CJMly0IM7va44LA76j%2FobIcpX4ol8QubarxKPNgd2DJsGRFql1n3l0Dhz%2BeJ59x2nbxVrUxOQlbdaZ0Fy4GbRE%2F6xpG4l9x4miJBmboi5kN2MXneFcMIaUGUy0oBshlJEM%2F28XwyDIsFPwUI7F6wPZXMHnuha1BNWNugI%2Fmm6CGAmE8on4SQMTCd1KlD98EQ1SMvontDuI7OkDuDVX2V1zRm9ABdr9SvYvSZ5rJiR1JAHKYmYRmIKkab5N4lUfEkucy0V1J9TnSE4Qx6ehGldnFtWPQtMx9FRzdz8BsN3S7ZBjH7rk0bGxi6OsVhmGFHaNKEfaOM7EkuhS9Cwp8Iv95pSKVEJ5joVQwYsSyna%2Ft0NCndU1TYg871tJJdIFQRb4vBE7FKmIqP%2FRUalAAsGFYFeFaZWLQqNXrUjVfwrporrM%2FdY0s18Z70G1oDr8%2BqwNpMNv%2BPw3%2FwE%3D"&gt;Example use case diagram on Diagrams.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Business Process Modelling Notation 🔁
&lt;/h2&gt;

&lt;p&gt;BPMN is a process-oriented modelling language, intended to represent the full business process supporting an IT system. It is based on flow charts, and likely to cover areas outside of the scope of a software or architectural change being investigated or proposed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What is BPMN good for?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mapping out business processes underpinned by an IT system.&lt;/li&gt;
&lt;li&gt;Determining the different scenarios that may occur, and how a system should behave in each scenario.&lt;/li&gt;
&lt;li&gt;Communicating system behaviour to all business stakeholders, regardless of technical knowledge.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;BPMN has four main components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flow objects&lt;/strong&gt;&lt;br&gt;
These can be events (triggers for the beginning or end of a flow), activities (processes or sub-processes undertaken by a user or system within the flow), or gateways (decision points where the flow can branch off in multiple directions).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connecting objects&lt;/strong&gt;&lt;br&gt;
These can be flows of activities or messages (denoted by a solid or dashed arrow, respectively) or associations (links between an artefact and a flow object).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Swimlanes&lt;/strong&gt;&lt;br&gt;
These can exist on two levels: Pools (groupings of roles such as a function or organisation) and, within them, lanes (individual roles within the process).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Artefacts&lt;/strong&gt; &lt;br&gt;
These can be data objects (information required for a process), groups (which link together activities in a process), or annotations (textual descriptions of to give additional context).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Example%20Business%20Process%20Flow%20Diagram.drawio#R7V1bc9o4FP41PGYH381jQtJuZjYznbKdbvdN2ALUGIuVRYD%2B%2BpV8wbZksCD4Amk7k7GFb5zz6dM5n47MwBgvt58JWC1esA%2BDgT70twPjcaDrjquzv7xhlzSYhp00zAnykyYtb5igXzBtHKata%2BTDqHQgxTigaFVu9HAYQo%2BW2gAheFM%2BbIaD8l1XYA6lhokHArn1O%2FLpIml1dSdv%2FxOi%2BSK7s2aPkk%2BWIDs4%2FSbRAvh4U2gyngbGmGBMk63ldgwDbrvMLsl5nw58un8wAkOqcgIFu29f%2F8Xj2ff1cPQ8%2BfyKFuO79CpvIFinXzh9WLrLLEDwOvQhv8hwYDxsFojCyQp4%2FNMNczlrW9BlwPY0tjlDQTDGASbxucaTzf%2Bz9ogS%2FAqzT0IcstMf0ntDQuH24JfS9qZiEIN4CSnZsUOyE4apdVN4aXa6v8mdpelZ46LgKcdMG0GKkPn%2B4rkR2UZqxxNsqks2%2FQpnkBBIJNtGG7QMQGyMBSboFw4pCBQtzY6dpFdStzz7ZBj%2F69r8%2BrAp8xv1kGZXYfwB640MolVCKjO05V1AtLJvQdc3q6zs6lPDtlWtfBhHB03vlC3vyIa3KsxuNWV1U8HqoX%2FPGZnteQGIIuSVjV0mGrhF9J%2F0E779g7f%2FYaV7j9vCYY%2B7dCe5JfQlSlexNHtWvCYerIOW7BFFmxMYAIreys9W5Yj0Dl8wYk%2B9d7huCn1N7EHJ46dnFQcC4UKaVb7QyCpfhwIyh1S6TgyL%2Fbc%2BHymWhJRnn7kHzbgpvQCFiI2%2BbDOEDAuHByPt5MFoNpvpnlfVWX17altNdlbR5LZVQZMV0LGb6q625ITvhNkyRikfq2IPBJDSikHrSn1g6D3zgfMRKDM1csIpdYDsilpNTYDGmcxq2iJFt8qsrgSoF%2FAq9OkZwcvYvxTB%2BNEJ9DDxuSt3EYXLW%2Bnt5qhnvX3Uh97OLEp2%2FxR3Cmfx3fy0eK8tlrAVWcLtlCWcA8nOqTRhCSOR1jJPZLcrYPHbygfi8I%2FCGSZLZjEc3gorOHpt1tQuK2hVAowdsNs%2BILYxp7ExkoZp1jBh%2BOBwAiHnbRj%2FXXGwRNmh7Fmm%2BelDZjT2l0XZmPKYejiNQ21m9zWJ9z1EvAAWzy7cXPA88wgtu7dS2yn6PG0CAZqHnNuYB1lYaTxw%2F%2FJg%2Fz79YIl8PziUlZfJj6sfJU3Dtsfj9rLtfTxfBI5ZARy9MeDIKlMBOAWH2f%2BtcYqifKsaV%2FceY0fEAoM6HK2QlwBpg9i3Z%2FhZk7d4nwUTFIRzdmvx2gcu%2BRtwBwDnChmjWxG%2FaK0CTtbVvuZjxQsIwRwuk5ByUh1JXr3YKQwe%2B6yhNHpUs0BjXpF1txdAvUUpxPfhEs%2F57AzyInkkX%2BDldB2dMYpD%2B8Ao7oym6jY%2FAjbl4F6XHeFWuMFtzAuypjUmMAmo5EzrWkKpGifoI7PkBKPzWEoWtSRjn5hiZemSdlq6lKVm2XaTQkzGy7U5VkYVtUlWguausixbGPiMM5MsR5iauhNHxqaTLFneu%2Ff9coZFMXf5FkUUhfNb5gopde6eLGSx7L1kkXX6fUf%2FMcjVmU47fWd92RDcLgodyoqJeCGRFZruzLJ69wmgYM3zoV6mK831ZKOanguAqpruF%2F11uWILWcuarD0PRnKke%2BOesYT54VHXnjkqbZ2nUDxCD0WxHrkXvIZVwkIiVKDQZ04qKRWUoFif%2BNhaVx2S3DKSqsSuVrWHbGwu5lc4jNYBBSnf37LOYKvrDKPGPKBSVdXbcGn%2FsLXhUqepjzh9LOoVqtGSYZUzc6fdYEmXNam%2FGe3Oy9NL15LZJNhRVkE6n1HSZS1qAjk48Jp67B6y5fsoANZYXZrd71gA1C8vPV3D7L4qreqq0pPeKf9a4pzLmfxrC9JTy8mqLitPz%2FFU%2Fp5%2FeVHfEM%2Fi%2FZ%2FQu7IZ%2FuPUIOp%2BFXMDLRNyY0rTbXCDaoVgAuvOuEFQMMVIW5kbxElENW5g6AC7wmFZ9ntQeRMXZgyHxx9LON4qHc42kge4LE9dviSuE5B3pq4e8PHpmBTGPU1cJdIUKNtAWTb4HkUZ83yW9mNCF3iOQxA85a0CzvJj%2FsJ4lULxJ6R0ly5gBGuKy0BtnEeNbHVkHY8aB0CrjMb3rc6SVcFCGQndrW4jQZG6VIWG02qGYuiS3b8Q%2FIZ8npUD%2Fw15fCOekMxjxBsJCV2RdzqPCQ1ZTnvA%2BJXfahWzaFJJdSP2F6cBu4%2FJjcaWK54iZ%2BbhSh6h%2FCgFKB3F5OpjSacrIsVqbmm9jXKtSF1lf8MZu1Gl2SVl3fuKEBS%2BIZoW41%2FfyrzTCLoHBKEi6F1qFfnM9WC16aeuZVqNBiqaZoq2lyuNW11JbvRiXWRv9ZIsdKjn5k61VEeYy5KEDlVudoW1mZqovDTNzR9YvusKPCNxYDdH54Fn5NRcqGnwqEhctzCMiIbWuh5FMrr53W2767bapbqtdKGGu61ZJVLxiTIJQv2oEGusW4uzFRVxeas1haYuOebe8%2BDq4zlGQdJq1zOyovVcXD8uzTyD2G8g9CoE3ytNY6Voo%2FM01uzFa7l6m0uZyrlUp6%2Bn0TRXpOEzkylNFxdSKE71XWxklZWu%2B3Ty4WMRuCM6onMCr1K83lmu%2FwKjCMx5sf1wCukGwqRwHweH6vYX4C1%2BwwCIFnHVfoDCD16qXwMjTVRHqoacVmv1zSr5LnFgtAJh5sD0lajcyfGk4wSShAb2vi4efSREUKjqJzgVzo3Hu1Hmps7L%2FO%2B0TGTOilhNOWfeF7q247teLIo8d1osZQ3legtNMUpwFYOEbtdaioKreXaFmlBbbbb8dipTRTPrLQgviLtsBXnPq6ZF4NnnAk9U%2Bm3F2shLAS%2BzR9PAGyoC77RkqSn2y5xSj8Je0Z9uCW81Vl48JQTmpuLqqVOLIV0hp8vmtQ6mbuK7RU883tGOHy%2B%2BHlc4vpniTEvh9wfa7HJlrtc66nK6KvEnLuqqy7liKfu562VcQTczW14wY%2BkSCu%2BPlOH1I9UcvD8DER3oNPfKALab%2F9JJ4rf852KMp%2F8B"&gt;Example business process flow diagram on Diagrams.net&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Epics: Purpose, structure, and content</title>
      <dc:creator>Joe Wallace</dc:creator>
      <pubDate>Mon, 07 Nov 2022 16:36:29 +0000</pubDate>
      <link>https://dev.to/oneadvanced/epics-purpose-structure-and-content-3k8m</link>
      <guid>https://dev.to/oneadvanced/epics-purpose-structure-and-content-3k8m</guid>
      <description>&lt;p&gt;✅ Epic User Stories, often called “Epics”, are simply User Stories which are too large to fit into an individual development timebox (“Sprint”, in the Scrum methodology).&lt;/p&gt;

&lt;p&gt;❌ Epic User Stories are not themes which group together individual User Stories, new product features such a modules, or buckets of time to collect recorded time against.&lt;/p&gt;

&lt;h2&gt;
  
  
  The purpose of an Epic 🎞
&lt;/h2&gt;

&lt;p&gt;The purpose of an Epic is similar to a typical User Story - an informal description of a user’s requirement, written in natural language relevant to the business domain. However, an Epic is less constrained by development capacity or process, so may describe a requirement a little broader and looser than required in a typical User Story.&lt;/p&gt;

&lt;h2&gt;
  
  
  The structure and content of an Epic 🧬
&lt;/h2&gt;

&lt;p&gt;Epic User Stories, much like any other User Story, typically begin with a card describing the user’s problem, such as the “Connextra” template:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a user persona&lt;br&gt;
I want capability&lt;br&gt;
So that business benefit&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They will also have acceptance criteria like a typical User Story, to inform the test cases that are run to verify that the conditions to fulfil the user story have been met, as in the “Gherkin” template:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Given pre-condition&lt;br&gt;
When user action&lt;br&gt;
Then outcome&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  User Story mapping 📌
&lt;/h2&gt;

&lt;p&gt;A process known as User Story mapping is often used by software development teams to sketch out a user’s journey through the system, break that down into Epics, and then break the (must have) Epics within it down into User Stories (of any priority).&lt;/p&gt;

&lt;p&gt;See an example below for a holiday story map. Note that this might differ based on the scenario at hand and the needs of the customer. For example, if the customer had experience operating a boat, they might rent their own, and then a captain is not a must have!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Example%20Story%20Map.drawio#R7Vxdc5s4FP01fuyMARs7j4mbNvuQmW3Jbmf2TYaL0VhGVBZxvL9%2BJb4cuLSTnQZLxn0yvoCFzuF%2BnIvwxFvtXj4LkiWPPAI2cafRy8T7OHFdx5%2FeqA9tOZaWmeeXho2gUXXQyRDQf6EyTitrTiPYtw6UnDNJs7Yx5GkKoWzZiBD80D4s5qw9akY2gAxBSBi2fqORTErr0l2c7A9AN0k9suNXE96R%2BuBqJvuERPzwyuTdT7yV4FyWW7uXFTANXo1Led6nH%2BxtLkxAKt9yAmNpsADCj8FN8vgX34vv%2F3z5UP3KM2F5NeEnQZ4LDiXXEKaRRk3wnbYkoJmEvaQpkZSn1cTksUZL8DyNQA84nXh3h4RKCDIS6r0HdX8oWyJ3TH1z1GZMGVtxxkVxrhfNYRnNlH0vBd%2FCqz1Ld%2B35vtpTXSwICS8%2FRMFpsFU3JfAdSHFUh1QnLCs2ju2vhxO3Tk1Y8opXv7KR6nbaND98QlxtVKD%2FDwJcRMBtGPLdjkeXirDvWgax1wOxpM9UUhVYLg9fZ2obwDMcRBLY9YCrJi3bCLaRSnkKHVgrE2F0k6qvoQIJlP1OQ0hVmL6tduxoFOlheilrkxrzVAbVRTn19zLxOMv34ejDvE3RzRxR5Pcw5A3F0BwxNHF9JqvJt0jyv%2Be83vFhX8Byqw5w3OylwKber7Y2%2BvMryFykOjsIQtM6b5SpglCRcSHrsdSll8OVZ%2F6i771izcW%2BGMexG4Z9vhj5a38%2BTDZxFqZd0UdEf2J62F8NdDaA7c5sQ3uBM0t9x08TLssyqvCEtLgad7qGmAttiFlpuXhWuunePCtLxMrfChhSVP9CD6gvDmA7AvAX1gWgGwR%2BkHKxVWfSdDMCxFH1ZR7yWiq%2FwvyOE1mkZJqNAXPHutvc6RHOuuYt57UdEfaedVnXwZp5dQzL%2BDIa2OdT62DHOvo%2Bo%2BFvlXfiaGlY5jlYiQdJLiXTcWmd7yc%2F7upV5erFO87MPr%2FB4juQXPQ1n67Wc9wels7rOVg4v1uH5DHf6x94IM%2FVkXf5sRyKajdUNG1BC%2FTzN0kiAsu41yX9cAnreJAmiTvHUfLMHol1%2B7uRHSQ8Z1GL7gCIpneaAtHyE0iYqA%2Bu4q4wQTo40RwWfaTf%2BAuPDNMZa6pIc6TjtsC7kb5CnH%2BFWMA%2B2Sm0NPU8bRJt1SY10BFdhtCff9fL%2BWw%2BHYT3mWucd9yR%2BB3Z3ymydzuy5kN7Pdjv0D5caO%2By3khVc6zjbsxwPv4ZZKOjmm5%2FMVWeC30zoB7%2Ftbi%2F%2BSTv4tbQkO7%2FCIS1s7s5yg35vvHFBy5uSw3n%2Bw%2B8uAPWZLPR68bUFldYR9fj4ubrORf3uIZ08VuqE3vI04jq9VhFk3mszt3tnVlA9oALV669eO%2BybUHxPmATrse1nzhlhhg2488WFOoDdt6QP5fs1Ks%2Bmpx9Lf5sQTWOW24VSckp6KoCSiXVfcMTKBCO%2BqHG5TPSXRplQYTFzbC6d3mi5L5hYLop4qPWNkUZxA9a6QiunxtefKeyy455f6mfbv2UnU8CCuEhgGxjsh94CaERJszXnR5uKF0lE%2BYrBg93dK4qh3RXeJrPIR5uuDTFtUVJ5DwldpceC5JI3xogRM83GtMRwm9B5sAdC5w5VgxIqh8RXXzC6BJgQcLATQRMQKBnqD63cBwjCcab8h7W%2BVeVtdFbAhak7TeI8RUXQr9Er7j4ntNMr14ZIxkWJGmswxEZf6QKlTyUfNg8YYgD85m6vgmuNkZ136oxH6NmWHYjSgI1VqkriiUYIclk9d5xUj6QJaOIWc7SsSxmzbAS7xEW7YWPFy8wEA8WxK036e%2Fm4dYYKLBNY8ywxsYa44nnOmMUf2A0KA3nERmYBuMqY4a1NkoXT%2FVj%2FBEm8O6rmRYkcCy%2BcU1FtzpR61kSNmyAOhMP3Xc1LeAB628coP4kYbF2bcrytFi3nAnQs47GEK26vmFB%2FYQFOObkSw659o79Vr%2FGfFqEND5CLCik3iDCH4DtYBSCohukzDtE%2FQ7ozwvZ2ywTPBOUSO0XIeMyGfqfRM5U13YZMe8Rc6y%2FexjRTy90KXUAUr7ocloeOwq90eVlSL2hvp7%2BAbTY9%2Bp%2FVL37%2FwA%3D"&gt;Example story map on Diagrams.net&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>beginners</category>
    </item>
    <item>
      <title>User Stories 101</title>
      <dc:creator>Joe Wallace</dc:creator>
      <pubDate>Tue, 27 Sep 2022 10:27:24 +0000</pubDate>
      <link>https://dev.to/oneadvanced/user-stories-101-nie</link>
      <guid>https://dev.to/oneadvanced/user-stories-101-nie</guid>
      <description>&lt;h2&gt;
  
  
  What is a User Story? 📖
&lt;/h2&gt;

&lt;p&gt;A “user story” in software development is an informal description of a user’s requirement, written in natural language relevant to the business domain, preferably without reference to the software in use (although sometimes this may be necessary), and worked on by a software development team.&lt;/p&gt;

&lt;p&gt;It should also ideally be written by (or at least in collaboration with) a user, though they are also often typically written by a Business Analyst or Product Owner, and really can be written by anyone, if they have the right information on the business context.&lt;/p&gt;

&lt;p&gt;User stories are conversation starters and anchor what a solution needs to facilitate, but they don’t define it. You may even be able to achieve what you wanted to in your user story without software development!&lt;/p&gt;

&lt;h2&gt;
  
  
  User Story Formats 🃏
&lt;/h2&gt;

&lt;p&gt;User stories are often produced in a formatted fashion, largely to drive consistency or to help people to structure their thoughts, but they don’t have to be.&lt;/p&gt;

&lt;p&gt;Typically at Advanced (and in many other software companies), user stories follow the “Connextra” template:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a user persona&lt;br&gt;
I want capability&lt;br&gt;
So that business benefit&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The lightweight nature of this format makes it useful in different contexts; on a project management tool like Jira, or physically, on a post-it note or index card.&lt;/p&gt;

&lt;p&gt;The key part of any user story is the business benefit (or the “So that” on the Connextra template); if you can’t define why a user wants a capability in your software or process, you probably don’t need it at all!&lt;/p&gt;

&lt;h2&gt;
  
  
  User Story Splitting 🕷
&lt;/h2&gt;

&lt;p&gt;User stories should be as small and self-contained as possible in their scope. This is both to ensure a focussed solution and to plan work in manageable chunks. &lt;/p&gt;

&lt;p&gt;There are multiple methods of splitting user stories, but the most commonly used is SPIDR:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Spikes&lt;/strong&gt;&lt;br&gt;
Investigations and prototyping to better understand the ideal solution for a user story.&lt;br&gt;
&lt;strong&gt;Paths&lt;/strong&gt;&lt;br&gt;
Different routes a user may take through a process, e.g. reschedule an appointment, or cancel it without rescheduling.&lt;br&gt;
&lt;strong&gt;Interfaces&lt;/strong&gt;&lt;br&gt;
Different devices, browsers, or alternate interfaces for different types of users of the system.&lt;br&gt;
&lt;strong&gt;Data&lt;/strong&gt;&lt;br&gt;
Different categories of information being managed or browsed, e.g. displaying someone’s allergies, or displaying their medication.&lt;br&gt;
&lt;strong&gt;Rules&lt;/strong&gt;&lt;br&gt;
Constraints on the system, e.g. rules on the maximum number of appointments someone can have booked at once, or a minimum gap between appointments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Acceptance Criteria ✅
&lt;/h2&gt;

&lt;p&gt;Acceptance criteria are often added to user stories to determine conditions which need to be fulfilled when implementing the story such as to make it acceptable to the customer. These are used to inform the test cases that are run to verify that the conditions to fulfil the user story have been met.&lt;/p&gt;

&lt;p&gt;These may take the format of simple bullet points, or use the “Given, When, Then” template (also known as Gherkin):&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Given pre-condition&lt;br&gt;
When user action&lt;br&gt;
Then outcome&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Example User Story 🔍
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;As a&lt;/strong&gt; District Nurse&lt;br&gt;
&lt;strong&gt;I want&lt;/strong&gt; to be able to view a patient’s allergies when visiting them in their home&lt;br&gt;
&lt;strong&gt;So that&lt;/strong&gt; I don’t prepare them food or medication that may be dangerous to them&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Acceptance Criteria&lt;/u&gt;&lt;br&gt;
&lt;strong&gt;Given&lt;/strong&gt; a patient has any currently active allergies in their clinical record&lt;br&gt;
&lt;strong&gt;When&lt;/strong&gt; I open the patient’s visit on my tablet or phone&lt;br&gt;
&lt;strong&gt;Then&lt;/strong&gt; I will see them listed, with the causative agent, reaction severity and description shown&lt;/p&gt;

</description>
      <category>agile</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Technical Debt and Technical Efficiency</title>
      <dc:creator>Joe Wallace</dc:creator>
      <pubDate>Wed, 14 Sep 2022 14:12:56 +0000</pubDate>
      <link>https://dev.to/oneadvanced/technical-debt-and-technical-efficiency-2oc2</link>
      <guid>https://dev.to/oneadvanced/technical-debt-and-technical-efficiency-2oc2</guid>
      <description>&lt;h2&gt;
  
  
  Technical Debt: “The Loan” 💰
&lt;/h2&gt;

&lt;p&gt;Within agile software development, one of our key aims is to get working software out as early as we can. This allows us to enable the value for our users quickly (and therefore bring in revenue as a business) and get early feedback to improve and iterate the product in line with customer needs, without wasting time on things customers might not ultimately want. &lt;/p&gt;

&lt;p&gt;While we may refactor our code as we go along, this tends to mean that though the software we deploy works as intended, it may not be as efficient as we’d like. These inefficiencies are often called technical debt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Efficiency: “The Repayment” 💳
&lt;/h2&gt;

&lt;p&gt;It is important to address inefficiencies in our code over time, for a multitude of reasons: To reduce the likelihood of bugs occurring, to make the code base more manageable, and to improve performance, among other things. &lt;/p&gt;

&lt;p&gt;Therefore, its recommended that each product at Advanced sets aside a bucket of time in each release period for technical efficiency - refactoring and improving code to “pay back” the technical debt, like a loan we took out in order to deliver the software early. When American developer Ward Cunningham coined the term “technical debt”, this was exactly what he meant - repaying technical debt is essential, much like paying back a loan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Product Initiatives and Technical Efficiency 👩‍💻
&lt;/h2&gt;

&lt;p&gt;There are some scenarios where initiatives we want to complete at Advanced are technical in nature, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replacing a third party component or platform.&lt;/li&gt;
&lt;li&gt;Upgrading to a new version of a framework or integration.&lt;/li&gt;
&lt;li&gt;Changing our authentication methods.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These initiatives are often erroneously categorised as “technical efficiency”, as the end user does not notice a difference in their day-to-day work. This is problematic, however, as these types of initiatives are not related to technical efficiency by nature, and due to their complexity and business benefit, need to be prioritised against other initiatives.&lt;/p&gt;

&lt;p&gt;All of these initiatives should be considered like any customer-facing one, and supported by an appropriate business case that clearly quantifies the value of the initiative, and justifies why it should be done. For example, we wouldn’t be replacing a third party component for an abstract reason; we might be doing this because it causes unacceptable performance issues which are affecting the abilities for users to do their work, or the component might be going out of support, putting our entire service at risk.&lt;/p&gt;

&lt;p&gt;It is vital that these items are prioritised and analysed in the same way that customer-facing initiatives are, with just as much care put into the business case. Prioritisation is a wider topic, the scope of which extends far beyond this article, but the following should be considered for more technical initiatives, as well as user-facing ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The business risk incurred in not completing the initiative.&lt;/li&gt;
&lt;li&gt;Potential cost saving.&lt;/li&gt;
&lt;li&gt;Potential revenue add, in terms of additional module sales or selling into new markets.&lt;/li&gt;
&lt;li&gt;Customer satisfaction (and therefore retention).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Paying off technical debt is important, and freeing up space in our development teams' capacity by categorising these initiatives correctly helps us to recognise this.&lt;/p&gt;

</description>
      <category>agile</category>
    </item>
  </channel>
</rss>
