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.

The C4 model for visualising software architecture

187 pointsby redact207over 5 years ago

12 comments

lstamourover 5 years ago
If you like this, you’ll probably also like <a href="https:&#x2F;&#x2F;seilevel.com&#x2F;business-analyst-resources&#x2F;rml-book&#x2F;" rel="nofollow">https:&#x2F;&#x2F;seilevel.com&#x2F;business-analyst-resources&#x2F;rml-book&#x2F;</a> and various videos and webinars from Seilevel on YouTube which I added to a playlist (not in any particular order so please scroll through it): <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PL2miG2CzrxakbZswQH-O43G5VnJ0_CB8C&amp;feature=share" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PL2miG2CzrxakbZswQH-O4...</a><p>Also relevant, the Design Structure Matrix (DSM): <a href="https:&#x2F;&#x2F;dsmweb.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;dsmweb.org&#x2F;</a> and <a href="https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;books&#x2F;design-structure-matrix-methods-and-applications" rel="nofollow">https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;books&#x2F;design-structure-matrix-metho...</a> (mostly learning by example, not all software-relevant, available as an e-Textbook on Amazon) If you code in Java, IntelliJ has this diagram included.<p>Finally if you’re looking on advice on how to break software into modules based on making your API surfaces easier to use for yourself and other programmers, have a look at A Philosophy of Software Design. It’s not comprehensive, but it’s concise and relatively easy to read: <a href="https:&#x2F;&#x2F;books.google.ca&#x2F;books&#x2F;about&#x2F;A_Philosophy_of_Software_Design.html?id=pD6-swEACAAJ&amp;source=kp_cover&amp;redir_esc=y" rel="nofollow">https:&#x2F;&#x2F;books.google.ca&#x2F;books&#x2F;about&#x2F;A_Philosophy_of_Software...</a>
评论 #21034259 未加载
gtirloniover 5 years ago
<i>&gt; An unfortunate and unintended side effect of the Manifesto for Agile Software Development is that many teams have stopped or scaled back their diagramming and documentation efforts</i><p>This is tragic and too common, in my experience.<p>It&#x27;s like code should document itself but it rarely does. And then we&#x27;re back to transmitting oral knowledge to every new hire.
评论 #21033682 未加载
评论 #21034117 未加载
Spearchuckerover 5 years ago
Too complex. Architecture descriptions should make sense to everyone on the project. It should not require you to learn a new design language or notation to use.<p>Here&#x27;s an example of a complex system that&#x27;s easy to get your head around - <a href="https:&#x2F;&#x2F;www.wittenburg.co.uk&#x2F;Design.aspx" rel="nofollow">https:&#x2F;&#x2F;www.wittenburg.co.uk&#x2F;Design.aspx</a><p>Unfortunately it won&#x27;t do much for an architect&#x27;s ego but, if the same simplistic approach to diagrams is applied to all levels of abstraction, it just may provide a thing all stakeholders can reason about and agree to.
评论 #21034069 未加载
评论 #21034038 未加载
评论 #21034019 未加载
评论 #21034519 未加载
评论 #21035205 未加载
评论 #21034252 未加载
michelppover 5 years ago
In case, like me, the headline makes you think it&#x27;s related, this is not the same as Pieter Hintjen&#x27;s C4 development process, the &quot;Collective Code Construction Contract&quot;:<p><a href="https:&#x2F;&#x2F;rfc.zeromq.org&#x2F;spec:42&#x2F;C4&#x2F;" rel="nofollow">https:&#x2F;&#x2F;rfc.zeromq.org&#x2F;spec:42&#x2F;C4&#x2F;</a>
rixedover 5 years ago
UML for the last level does not seem particularly adapted for functional languages or languages with a sophisticated module system though. Anyone knows of some conventional description language that would be a better fit, or is this a case where the code (higher level functions, often times forming some DSL, or the higher level module interfaces) is legitimately the actual description then?
评论 #21033799 未加载
评论 #21034010 未加载
mannykannotover 5 years ago
From everything that I have seen, any software architecture modeling model that relegates dynamic behavior to a &#x27;supplementary&#x27; status is suboptimal. One of the ways that waterfall fails is that the architects come up with an imposing, apparently comprehensive static structure that overlooks various issues that arise when it is put in motion. These points of contention often do not become apparent until one is trying to integrate the parts into a coherent system.<p>Software design is always an interation between static and dynamic matters -- use informs structure, and structure informs use.
评论 #21040719 未加载
contingenciesover 5 years ago
<i>UML - I know next to nothing about UML - but what I do know is the language was invented first and then people came around and tried to give semantics to the language. Well, in other words what that means is that the language was invented first and it really didn&#x27;t mean anything. And then, later on, people came around to try to figure out what it meant. Well, that&#x27;s not the way to design a specification language. The importance of a specification language is to specify something precisely, and therefore what you write - the specification you write - has to have a precise, rigorous meaning.</i> - Leslie Lamport<p><i>UML: a language that was invented first and then people came around to try to get semantics.</i> - Leslie Lamport<p><i>UML: fuzzy pictures of boxes and arrows.</i> - Leslie Lamport<p><i>People use UML, things like UML, to model programs, but it&#x27;s not clear how to translate them in to sequences of states, for concurrency. If you cannot translate them in to sequences of states, it means you don&#x27;t understand them, and it may mean that there&#x27;s nothing there. You know, there are lots of people selling snake-oil, drawing boxes and arrows that make you feel good, but ultimately have no real meaning. If something is really meaningful you should be able to express it in mathematics.</i> - Leslie Lamport<p><i>UML - Unnecessary Management Lingo.</i> - @iamdevloper<p>... via <a href="https:&#x2F;&#x2F;github.com&#x2F;globalcitizen&#x2F;taoup" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;globalcitizen&#x2F;taoup</a>
评论 #21035736 未加载
jwildeboerover 5 years ago
When I see C4 I still connect that moniker with the „Collective Code Construction Contract“ [1] by the late Pieter Hintjens.<p>I find it a bit unpleasant how this project thinks it’s OK to redefine that term without giving at least a nod to Pieter.<p>[1] <a href="https:&#x2F;&#x2F;rfc.zeromq.org&#x2F;spec:42&#x2F;C4&#x2F;" rel="nofollow">https:&#x2F;&#x2F;rfc.zeromq.org&#x2F;spec:42&#x2F;C4&#x2F;</a>
hackerm0nkeyover 5 years ago
On of the tools that are built to combine the excellent PlatUML and the C4 model and achieve diagrams as code is <a href="https:&#x2F;&#x2F;github.com&#x2F;RicardoNiepel&#x2F;C4-PlantUML" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;RicardoNiepel&#x2F;C4-PlantUML</a><p>Definitely adding this to my toolbox &lt;insert happy nerd laugh&gt;
okcwarriorover 5 years ago
I&#x27;m a big fan of this model - I&#x27;ve changed all my work architecture models to C4 and they make sense instantly to other engineers. The plugin for draw.io is really easy to use as well.
choegerover 5 years ago
Nice approach but it seems to be rather focused on that modern web or mobile app. How about a system with redundancies? Is a DB replication group a single container? Or do I have to know exactly the number of DB nodes?
评论 #21034074 未加载
jherikoover 5 years ago
(insert comment about smashing square pegs into round holes)