TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: How to keep up to date doc of a system architecture?

22 pointsby metageneralistabout 3 years ago
Hi,<p>I have helped architect embedded vision system.<p>It&#x27;s a piece of hardware with a camera, AI accelerator, processor, RT processor etc.<p>A lot of stuff is going on in this project, also a lot have changed in last just year.<p>It was easy for me to do the first diagrams in Keynote and present the architecture.<p>But now it grew so much, that I no longer feel control over it.<p>I get a lot of feature requests and questions about system behaviour, and it takes me longer and longer to respond.<p>Is there any software that could really help write down, visualise and keep history of such architecture?<p>Ideally I could contribute on pieces of it with teammates.<p>How would you approach such problem?<p>thanks.

7 comments

weitzjabout 3 years ago
Maybe plantuml <a href="https:&#x2F;&#x2F;github.com&#x2F;plantuml-stdlib&#x2F;C4-PlantUML" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;plantuml-stdlib&#x2F;C4-PlantUML</a> with the c4model plugin helps (<a href="https:&#x2F;&#x2F;c4model.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;c4model.com&#x2F;</a>). Using plantuml includes you might be able to have some kind of overview plantuml picture, where you can click on the included to see the detailed contexts.<p><a href="https:&#x2F;&#x2F;real-world-plantuml.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;real-world-plantuml.com&#x2F;</a><p>Everything checked into Git<p>For the text part you could use pandoc.<p>In the end you have a pandoc pipeline which mixes your text with your pictures (plantuml) and generates some nice documents
评论 #31373630 未加载
righttoolforjobabout 3 years ago
I think you just have to bite the bullet and document what you have. Start with the high-level view from different perspectives. Some call it different architectural views, like block diagrams and data flows. Focus on diagrams and a little bit of text, unless you really want to write more, but just a little bit can be good enough. Take this through a few iterations and it has to be both correct, simple and easy to understand.<p>Now you hopefully have a good block diagram and then you can attack every component in it in the same way.<p>This is the basic view where you really haven&#x27;t explained any use case or at least not directly from the perspective of the use case. You&#x27;ve just explained the building blocks. Like with a car you would say it has 4 wheels, a trunk, some seats, a steering wheel, and so on, but even without describing what the hell you do with all of this, people still can get the point.<p>However, you can if you want to, get into more dynamic behaviours as well, often with sequence diagrams.<p>Especially on the lower levels perhaps flow charts start to make sense, but you are starting to get more into implementation design here than architecture.<p>Forget about fancy tools. This is creative work just like programming. Use something basic. Visio, OmniGraffle, Miro, Dia, ...? Or something automated if you prefer.
nickdothuttonabout 3 years ago
Wiki or other simple (e.g. Markdown) structured document store. Individual docs&#x2F;pages consisting of text and as others have said various embedded forms of scriptable diagrams (sequence diagrams, block diagrams, flow charts, logic diagrams). In a corp environment this could be in something like Confluence + plugins.
abhimskywalkerabout 3 years ago
Have used sequence diagrams for interactions &amp; state diagram for state machines from mermaid for this. <a href="https:&#x2F;&#x2F;mermaid-js.github.io&#x2F;mermaid&#x2F;#&#x2F;" rel="nofollow">https:&#x2F;&#x2F;mermaid-js.github.io&#x2F;mermaid&#x2F;#&#x2F;</a> System architecture is probably best in PlantUML as already pointed out in other comments. <a href="https:&#x2F;&#x2F;real-world-plantuml.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;real-world-plantuml.com&#x2F;</a> is helpful. But mostly it&#x27;s a lot of manual effort to keep it updated, but the markdown (in git repo) makes it easier I guess...<p>=&gt; One thing that worked at times was to have new joinees in team update the docs and the diagram based on their understanding + having this system architecture as part of onboarding sort of ensures it is updated on most occasions. :)
m-p-3about 3 years ago
Best way to keep it up-to-date is to make the documentation part of the development workflow.<p>If you can make the code itself generate a diagram (ie: MermaidJS) that reflect your code, it won&#x27;t become outdated.<p>It takes time and effort to get there, so you might want to at least make a manual diagram to understand where you&#x27;re at before undertaking this kind of automation.
krnlpncabout 3 years ago
&gt; Is there any software that could really help write down, visualise and keep history of such architecture?<p>A wiki does this. But its not so much a technical problem as it is hooking doc updates into development cycles.
tryauuumabout 3 years ago
Maybe a dedicated technical writer can be tasked to convert your ramblings about architecture into confluence documentation<p>(I have no experience with documenting hardware projects, so this is a suggestion from a layperson)