TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: What do you use for diagramming in software engineering?

47 点作者 jayliew大约 7 年前
What are the popular common tools today for (visually) documenting architecture, component, and interaction diagrams?<p>The core purpose is to facilitate the efficient communication of technical information between software engineers on the team at a high level &#x2F; bird&#x27;s eye view (as opposed to a more granular level line by line comment inside of code).<p>Specifically, something persistent &amp; electronically scalable (not just a temporary whiteboard sketch that goes away!)<p>Not just for a one-off communication, but something long-term so that institutional knowledge stays with the organization, even if people come and go.<p>I&#x27;m thinking out loud here but some kind of product &#x2F; solution that can be baked into a code review process.

36 条评论

condiment大约 7 年前
I use a combination of tools for visual documentation. Block diagrams and sequence diagrams together are a pretty effective means of communicating.<p>For block diagrams that illustrate relationships between components as a sort of directed graph, I prefer Omnigraffle (on OSX). It&#x27;s fast and effective, easy to label boxes, lines, and interactions, and supports exports to pdf and png for quick sharing. Where omnigraffle falls over is in terms of its popularity and accessibility. You can&#x27;t really review the diagram source as a part of the code review process, and the output diagrams are not useful to the visually impaired. Popularity is a factor because even if a dev knows some piece of block diagram software well, it&#x27;s likely that they know a different one than anyone else. For that reason, we&#x27;re not prescriptive about the tool used on our team, only that some form of block diagram is included with the documentation for a feature or component.<p>For sequence diagrams I use web sequence diagrams, for which I hold a commercial license. These diagrams are great for illustrating different workflows, with the caveat that we generally need several very similar diagrams to explain even the simplest features. These also benefit from having a straightforward text format that can be shared as a reviewable part of the source tree, and which can be read and edited by the visually impaired. Sequence diagrams are a more effective tool for demonstrating the veracity of code against a desired specification than block diagrams are, but understanding the top-level component layout is generally a prerequisite.<p>Not sure about the general popularity of either of these, but they&#x27;ve been an effective toolchain for me so far.
jefe_大约 7 年前
Omnigraffle is by far my favorite, unfortunately only available on Mac OSX. I use Windows more lately and struggled to find a comparable offering. Then discovered Lucidchart <a href="https:&#x2F;&#x2F;www.lucidchart.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.lucidchart.com&#x2F;</a> and have grown to enjoy it quite a lot. It offers common Cisco and AWS networking icons, and has some nice exporting options and the auto-expanding canvas. There are some quirks but it is cheaper and in my opinion cleaner than Visio.
评论 #17043176 未加载
评论 #17042483 未加载
mlazos大约 7 年前
I really like Microsoft Visio for this purpose, it has all of the nice auto alignment draw features you’d expect and it can really be used for anything from ultra formal process designs to sketching an idea.
ljnelson大约 7 年前
Love UMLet (<a href="http:&#x2F;&#x2F;www.umlet.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.umlet.com&#x2F;</a>), particularly for the ability to copy and paste diagrams instantly.<p>In contrast to some others here, I find quick, simple diagrams <i>immensely</i> useful in resolving long, unproductive discussions. They tend to focus discussions on concepts, ontologies and cardinalities instead of trying to verbally represent mental models.
Discere大约 7 年前
I have been using DOT diagrams a bit recently - <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;DOT_(graph_description_language)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;DOT_(graph_description_languag...</a> - I like it because I can put into source control too
评论 #17044035 未加载
jillesvangurp大约 7 年前
I use Umlet in the rare case where I actually need to produce a diagram. Umlet has a nice delarative syntax and allows you to create complex diagrams with a minimum of fuss. Which for me is the key point because Imho, most diagrams are completely pointless. The less time spent on them, the better. But sometimes you just have sit down and waste some time on them.<p>I don&#x27;t get a lot of value out of diagrams for the work it takes to produce them.
digikata大约 7 年前
I generally use either a wiki page (if there is an agreed upon common wiki), or a short memo document. A wiki is nice because it&#x27;s easy to include a URL into a commit.<p>The diagramming tool is a minor consideration except it should be easily editable by someone coming along later. The important thing isn&#x27;t the tool, but that there is a common, known place to look and collect the info for the team. It could be as simple as a shared folder as long as everyone agrees.<p>In general, I write and try to encourage &quot;tech memos&quot; that are short of capital-D official, complete Documentation, and instead focus on capturing the high-level view of some scoped aspect of the total system. Memos that cover say a walk-thru of one type of operation through the entire system, how a single feature interacts with the larger system, or a tricky bit of analysis, logic, or assumptions on some key point; all tend to be popular reading. Whiteboard pics are often included just for convenience if needed too.
mehrundmehr大约 7 年前
I&#x27;ve turned many people onto OmniGraffle. I&#x27;m quite the power user. Fortunately it&#x27;s very well-made software that rewards power users well. I have the full version (the most expensive one) but I use it so much that I feel it&#x27;s totally justified paying hundreds of dollars for. I also use it for light wireframing instead of Sketch.
fundamental大约 7 年前
It depends on the exact problem and how long term you need to documentation to exist. For a lot of things physically drawing out diagrams is great. It&#x27;s fast to do and based upon the questions you get it&#x27;s easy to draw more detail on the area being discussed.<p>For more long form docs I tend to use a mix of LaTeX&#x27;s TiKZ (though I used to use PSTricks) for block diagrams and for a somewhat faster workflow I&#x27;ve used some of the diagramming tools which integrate nicely into an asciidoc based document. That can be graphviz, blockdiag, seqdiag, etc ( <a href="https:&#x2F;&#x2F;asciidoctor.org&#x2F;docs&#x2F;asciidoctor-diagram&#x2F;" rel="nofollow">https:&#x2F;&#x2F;asciidoctor.org&#x2F;docs&#x2F;asciidoctor-diagram&#x2F;</a> has a decent list of some of the options).<p>With any option it&#x27;s easier to quickly sketch something out than it is to have some clear well organized diagrams which don&#x27;t need any external context to understand.
评论 #17041556 未加载
ttd大约 7 年前
I&#x27;ll put in a plug for an offline diagramming tool that I created, Vexlio (<a href="https:&#x2F;&#x2F;vexlio.com" rel="nofollow">https:&#x2F;&#x2F;vexlio.com</a>). It has some neat features like embedded LaTeX equation editing, nice snapping, and a program mode (so you can draw diagrams in Lua code if you prefer that to mouse work).
评论 #17043379 未加载
评论 #17043614 未加载
bbulkow大约 7 年前
Honestly, I think we use Google docs draw more than anything else. I don&#x27;t love it, but it is group editable, has a permission system, good comments, and we can just paste urls in tickets and design documents. Many engineers simply use the draw tool in confluence, too. Trying to draw in markdown doesn&#x27;t work, obviously.
cdnsteve大约 7 年前
Gliffy Diagrams and Draw.io are two that I&#x27;m using. Draw.io has a lot more features, export options, etc.
makimat大约 7 年前
Softagram was mentioned once here as a solution to keep your diagrams up-to-date automatically. I happen to know it quite well as I am their lead developer ( --&gt; take my words with a grain of salt ;).<p>It&#x27;s surprising though how many are still bound to the idea that if you want diagrams for documentation, you&#x27;d better get a good drawing tool and draw them yourself. While manual drawing might give more flexibility, the burden of creating and maintaining those diagrams is often too much in the agile projects we work with. I suggest you all take a test drive on Softagram. Just go to softagram.com, register for a free trial, add your git repo and off you go. I&#x27;d be delighted to hear if you like it or not.
qpiox大约 7 年前
Modelio is open source and has one of the best support for UML2. I have been using it for several years. It also has jython scripting support to write automation for mass modifications in large models. I have managed to learn how to use jython to create a script to automatically generate java source as hibernate jpa entity classes just the way i like it in just one day. This was made much easier with the builtin metamodel browser so that you learn how your whole project model is constructed internally. <a href="https:&#x2F;&#x2F;www.modelio.org" rel="nofollow">https:&#x2F;&#x2F;www.modelio.org</a>
ezekg大约 7 年前
I&#x27;ve started using Monodraw[0] recently for creating technical diagrams and really enjoy it.<p>[0]: <a href="https:&#x2F;&#x2F;monodraw.helftone.com" rel="nofollow">https:&#x2F;&#x2F;monodraw.helftone.com</a>
badhombres大约 7 年前
A whiteboard and imagination from the oral documentation. It&#x27;s actually something I&#x27;m working on getting my team to fix sense I got here. I&#x27;m interested in this topic.
评论 #17041497 未加载
gregatragenet3大约 7 年前
Gliffy as part of confluence (save often!) Dia for personal projects. Would be interesting to see what folks suggest re tools that are code-review friendly.
elango大约 7 年前
Draw.io is a gem, with gdrive integration, it is easy to collaborate, embed and cross reference diagrams. We tried creatly before locking on draw.io<p>It is free btw
dirtyaura大约 7 年前
Just benchmarked a couple of web-based diagramming tools: LucidChart and draw.io<p>Both work, I ended up choosing LucidChart and we are now testing it with the team
quintes大约 7 年前
I use lucidcharts a little, it&#x27;s pretty good for component models.<p>Primarily though I use sparx enterprise Architect. I&#x27;ve been told it&#x27;s outdated, others don&#x27;t like the ui, but honestly all my models are in one place, including wire frames and use cases. I enjoy use it. It&#x27;s roadmap creation support I do not like, like a poor Gantt (at least last time I tried it)
imhoguy大约 7 年前
For manual diagrams Dia or Gliffy with Confluence. Unfortunatelly manualy side-made diagrams get out of sync quickly as codebase is a live thing.<p>When the code is primary source of truth it is better to use some on the fly visual analysis. In my current place we use Softagram to mainly analyse bird eye level changes at reviews, but it also helps during staff onboarding.
scruple大约 7 年前
Mostly draw.io but I am very keen to check out Pencil the next time I need to diagram something based on what I&#x27;ve seen.
评论 #17043591 未加载
评论 #17043665 未加载
pcx大约 7 年前
Draw.io is pretty great. I&#x27;ve started trying out RealtimeBoard.com, but haven&#x27;t really got a hang of it yet.
chrisgoman大约 7 年前
<a href="https:&#x2F;&#x2F;mermaidjs.github.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;mermaidjs.github.io&#x2F;</a>
curyous大约 7 年前
<a href="https:&#x2F;&#x2F;www.planttext.com" rel="nofollow">https:&#x2F;&#x2F;www.planttext.com</a>
samlittlewood大约 7 年前
<a href="https:&#x2F;&#x2F;www.yworks.com&#x2F;products&#x2F;yed" rel="nofollow">https:&#x2F;&#x2F;www.yworks.com&#x2F;products&#x2F;yed</a><p><a href="http:&#x2F;&#x2F;casual-effects.com&#x2F;markdeep&#x2F;" rel="nofollow">http:&#x2F;&#x2F;casual-effects.com&#x2F;markdeep&#x2F;</a>
cpburns2009大约 7 年前
When I left my previous employer several years ago I documented our infrastructure using Dia [1].<p>[1]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dia_(software)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dia_(software)</a>
joaofs大约 7 年前
Quite surprised no one suggested <a href="https:&#x2F;&#x2F;structurizr.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;structurizr.com&#x2F;</a>. It uses C4 diagramming approach. Quite useful for a more lean approach to docs.
flarg大约 7 年前
I&#x27;ve used PlantUML for ages and that&#x27;s good, but Sparx Enterprise Architecture is my goto these days because it works as a database of components as well as documentation authoring and publishing tool.
ifend大约 7 年前
yEd is my go to editor. Works on all platforms and is free.<p><a href="https:&#x2F;&#x2F;www.yworks.com&#x2F;products&#x2F;yed" rel="nofollow">https:&#x2F;&#x2F;www.yworks.com&#x2F;products&#x2F;yed</a>
bitL大约 7 年前
Mainly draw.io, tried also Lucidchart. In addition attempted to use Dia on Ubuntu and long before that Visio of course.
BerislavLopac大约 7 年前
<a href="https:&#x2F;&#x2F;www.lucidchart.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.lucidchart.com&#x2F;</a>
wwwhizz大约 7 年前
I like draw.io for most diagrams. Visio is good too, but I think it is too expensive.
a_lifters_life大约 7 年前
lucidchart.com - been using for ~5 years now, really great s&#x2F;w. And no: I&#x27;m not a paid sales rep, but a happy customer.
siruncledrew大约 7 年前
draw.io. It has nice AWS add-ons too.
senatorobama大约 7 年前
Asciiflow.