A practical system design process

Author: Ansel Robateau 7/2/2024

Overview

This document presents a unique method for outlining and developing system designs using specialized diagramming tools, namely yEd Live Diagram Editor and Miro. The primary objective is to provide a practical example and showcase the results of such a process. The intention is to share this information with the public for their review and critical analysis, with the aim of determining its potential value and merit.

Introduction

I was recently assigned to automate a complex, multi-step process. The project had a diverse group of stakeholders, and the information I received initially was scattered and sometimes contradictory. I was bounced from my supervisor to a product manager, then to another product manager, and finally handed a document detailing the existing manual process.

The complexity of the process, combined with outdated documentation and conflicting communication styles, quickly led to roadblocks. There were disagreements on the direction of the project and the system's architecture. This created a frustrating environment where the project seemed to drag on endlessly.

Realizing I needed a new approach, I took a step back to re-evaluate. I shifted my focus to the end-user experience first. What did we want the users to be able to do? Once I had a clear vision of this, I brought all stakeholders together to establish a unified understanding and agreement.

With the desired user actions in mind, we identified the backend system actions (APIs) necessary to support them. I meticulously mapped out the systems and interactions required for each API. This breakdown allowed me to tackle each system action individually, first determining how to perform them manually.

I consistently sought confirmation from stakeholders, ensuring alignment and buy-in on each step. With a clear roadmap in place, I broke the project into smaller, manageable deliverables, each tied to a specific system action.

This approach revolutionized the project. Implementation became streamlined and efficient because each deliverable had already been validated and agreed upon. It was easy to track progress and see how each piece contributed to the overall user experience.

In the end, I successfully delivered the project. The automated process functioned flawlessly for end users, and stakeholders were thrilled with the results. The experience taught me the value of user-centric design, open communication, and meticulous planning in overcoming even the most challenging projects.

Design Process

During the design process, I utilized two online tools available to everyone: yEd Live Diagram Editor and Miro.

Roles of These Tools

When identifying user actions and backend APIs along with their interactions, it's crucial to focus on connections rather than organizing diagrams manually. yEd Live Diagram Editor facilitates rapid ideation with a unique feature: it can automatically organize and format diagrams with a single click using advanced layout algorithms.

Effective communication is vital for a successful project. Miro excels in visually representing information to a team by allowing all users to see the same information in real-time and collaborate on a shared board. Its infinite canvas and ability to embed various media types—such as images, diagrams, screenshots, and shapes—enable the project manager to share every project detail. This includes the overall design, specifications, descriptions, individual steps, examples, and links to reference materials.

Why is This a Differentiator?

The ability to quickly create high-quality diagrams allows users to concentrate on ideas and problem-solving without getting bogged down by manual organization. This capability lets you start from scratch and swiftly represent complex ideas.

Sharing information visually brings the team together, ensuring clear communication and comprehensive project definition. Miro's collaborative features enable documenting feedback and using the overall design as a foundation for creating tasks to implement the project.

Overview of the Method

Step 1: Gather User Stories

Step 2: Itemize User Actions

Step 3: Review User Stories with Stakeholders

Step 4: Identify Backend APIs

Step 5: Detail Service Interactions

Step 6: Create a Full System Diagram

Step 7: Validate User Action Implementation

Step 8: Collaborate and Refine

Step 9: Assign Tickets

Step-by-Step Guide to Outlining and Developing System Designs

Let's dive into how to use yEd Diagram Editor and Miro in the system design process.

Represent User Stories in a Diagram

Share User Stories

Add Backend APIs

Add System Interactions

Presenting the Plan in Miro

Documenting Implementation Validation

Collaboration and Refinement

Ticket Creation and Assignment

By following these steps, you can effectively use yEd Diagram Editor and Miro to support the system design process, ensuring clarity, collaboration, and thorough documentation.

Example of a System Design

To illustrate this design process, let’s design a simple resume submission service.  The scope of the service is limited to the following criteria.


Gathering the user stories


The user stories are:


User Stories

As a Job Seeker, I want to login so that I can access the resume service

As a Job Seeker, I want to submit a resume so that I can apply for a job


In this example, we have one actor, Job Seeker and we have two user actions, login and submit a resume.


Using the tools


Let’s start with a blank yEd canvas.

Add the actor to a blank canvas

Add user actions and connect them to the actor

Apply BPMN layout

Add dependencies between actions and apply layout

Share user actions in Miro

Add backend apis to the diagram

Add system interactions

Export full diagram to Miro

Export each backend api workflow to Miro

Results and Analysis

By using a consistent visual language, we can quickly review and understand complex information. Diagramming the full system workflow ensures that all connections between functionalities are discovered and accounted for, providing a comprehensive view of the project.

Sharing this information visually in Miro allows all stakeholders to grasp the scope of work and the resources involved. The Miro board becomes a vital reference point for those implementing the plan and serves as a communication hub for all stakeholders, facilitating ongoing collaboration and alignment.

Conclusion

The system design process is a critical component of successful project development. By leveraging tools like yEd Diagram Editor and Miro, we can streamline this process, ensuring clarity and collaboration at every stage. Diagramming user stories and their corresponding backend APIs helps us visualize complex workflows and identify dependencies early on. Sharing these diagrams in Miro enables stakeholders to understand the project scope, provide valuable feedback, and reach a consensus efficiently.

The consistent use of visual language across these tools not only aids in quick comprehension but also ensures that every detail is accounted for, reducing the risk of overlooked requirements. The Miro board, enriched with diagrams, documentation, and real-time collaborative features, becomes an indispensable asset, guiding the project from planning to implementation.

By following the structured method outlined in this article, teams can achieve a thorough and unified approach to system design, ultimately leading to more successful project outcomes.