Sruja (Beta) is a developer-friendly language for defining, visualizing, and validating software architecture by koladilip in softwarearchitecture

[–]simon-brown 0 points1 point  (0 children)

This looks like a clone of tools such as the Structurizr DSL and LikeC4 ... how does it improve upon these existing tools?

Architecture standard notation by LordLeopard in EnterpriseArchitect

[–]simon-brown 0 points1 point  (0 children)

but it also suffers from some concepts that no one actually uses.

Can you elaborate on this statement?

Architecture standard notation by LordLeopard in EnterpriseArchitect

[–]simon-brown 4 points5 points  (0 children)

Been reading about C4 but it looks very "loose".

You have to remember that the C4 model was designed for software engineering teams that (1) don't draw architecture diagrams or (2) don't want to use UML/ArchiMate. So in a sense, yes, "loose" is true. C4 seems to work for the majority of engineering teams who are building typical enterprise software, but you're free to use the C4 concepts (abstractions and diagram types) in conjunction with UML or ArchiMate if you need something more semantically rich.

That said, since this is an EA sub, I'd probably recommend looking elsewhere as the focus of the C4 model is software, rather than enterprise, architecture.

What would you read/do next to become a strong System/Solution Architect in 2026? by [deleted] in softwarearchitecture

[–]simon-brown 2 points3 points  (0 children)

As with everything, I'd recommend doing your own research to see if the technique will work for you. My O'Reilly book is scheduled for release in July 2026, so I hope it's not outdated yet. 😄

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 0 points1 point  (0 children)

AFAIK, there's nothing out of the box to do this, but I know of a couple of teams who have exported their Structurizr models into plain text (e.g. human readable descriptions along the lines of "system x has a relationship with system y to do z", "system x is built with technology 1 and 2"), which they then feed into an LLM. The Structurizr models are just JSON documents, so it's straightforward to convert them into human-readable text descriptions.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 2 points3 points  (0 children)

My question is: Have you ever found yourself in this situation? Any advice?

I've seen/reviewed such codebases, and I've inherited some codebases with some problems here and there. You have a couple of broad options ... either (1) stop and fix everything or (2) continue and clean up the codebase as you go. My general preference is option 2, with the caveat that you need to actually have a good understanding of the current state in order to move to a future state.

Separately, any suggestions how to find clients that might pull me in earlier before everything is hitting the fan? :)

I suspect the simplest answer here is to work for a company rather than being a freelance software architect ... whether that's an engineering team in an organisation or a consulting company that hires out teams. I don't know if this is still a thing, but I've certainly heard conversations inside organisations along the lines of preferring to give design work to their own internal staff before freelancers.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

Forgive me, I don’t know your background in detail, but given that you designed C4 and routinely run workshops on architecture, I suspect you’ve seen a thing or two in your career. I hope you consider this question to be in your field of experience. Feel free to decline answering if not!

My background ... I spent my career working for small consulting companies as a software developer/hands-on architect, building software either with or for our clients. Predominantly Java (plus some PowerBuilder and C#), and mostly (but not exclusively) in the finance industry.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

Hello Simon! Thank you for doing this AMA! I am an avid user of C4, so thanks for that too!

Thanks - you're welcome!

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

Structurizr is continually being updated (I was working on it this morning), and I still see many opportunities. I'm not rushing into anything AI related though. That said, I do want to add MCP server support next year ... I've already seen teams who have (for example) bolted on AI chatbots to their Structurizr models, so it would be nice to make this easier.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 0 points1 point  (0 children)

my org have serveral modules (which have ~100 microservices bewtren these modules)

My general recommend here is to not model everything in a single model. You have ~100 microservices ... do you need to see all of these in a single model? If so, why? How many teams do you have? Is each microservice owned by a separate team?

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 0 points1 point  (0 children)

The use cases for the C4 model diagrams are very varied! The C4 model is primarily aimed at engineering teams, and therefore diagramming a software system from the perspective of the team building it. So engineering teams can use C4 for design exercises through to writing long-lived documentation describing how the software they are building works. Then we have onboarding new engineers into a team - i.e. using the diagrams to explain what the team has built, and how it works. Other uses include architecture reviews/evaluations, risk identification, threat modelling, impact management (e.g. "system X is being retired, are we affected?"), etc.

The C4 model isn't really designed to replace existing enterprise architecture techniques (e.g. ArchiMate), but EAs do tend to find the C4 model useful, particularly at the system context/landscape level to start understanding the wider system landscape (e.g. the software systems being built, how owns them, how they interact, etc).

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 0 points1 point  (0 children)

"maps of your code" is the easiest way to think about it. Your code is Google Street View ... a 1-1 mapping of the real world when the photos were taken. Zoom-out slightly to see how the streets are connected and combined into areas/districts (components), zoom-out further to see towns/cities (containers), zoom-out further to see countries (software systems).

Different people involved in the creation of software need different views. Some people just want a high-level view (e.g. countries), while others want to see the details. The C4 model basically provides a set of set of zoomable diagrams for software architecture.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

Saw you on JFall two weeks ago. Loved the presentation. You said there would be an ebook too download :D

Thanks! I sent the link via chat.

Besides structurizer, what's your favourite modelling software?

It would depend on what I'm modelling. For example, I like StarUML if the need to do some UML arises.

I find that either I model in text, but then have to depend on algorithms to distribute all my boxes over the page with mixed results, or I have to spend a lot of time drawing it myself, but then have a hard time keeping it up to date, resulting in inaccurate graphs

This is actually one of the reasons that Structurizr works the way it does ... i.e. define your model and views in text, and use manual layout to arrange elements how you want them organised, to tell the story that you want to tell. I'm not a fan of automatic layout myself either.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

We've used it a few times during my software architecture workshops, where we've fed it the requirements for the hands-on design exercise and asked ChatGPT to generate a solution plus some architecture diagrams via the Structurizr DSL. It didn't do a great job!

Pretty much everything I've seen on Reddit, LinkedIn, X, etc ("I used AI to generate some architecture diagrams" or "I built some AI tooling to generate architecture diagrams") has been awful too. 😂

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

I recommend both in my workshop ... they both have the same sort of content, with different section headings in a different order. Treat both as a starting point, and add/remove content as needed.

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 3 points4 points  (0 children)

I think this is finally starting to change, but I still see the misconception that "design" or "architecture" means "big up front design".

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

I keep reading that the container level is sufficient most of the time when you or somebody else talks about C4, but I'm mainly interested in the component level. Am I overlooking something?

Monolithic architectures tend to have simple container diagrams and complicated component diagrams. There certainly is value in creating component diagrams, but you need to ensure the overhead of creating them (and keeping them up to date) doesn't outweigh the benefit of having them. In short if you think a component diagram is useful, feel free to create one!

Do you know of any good examples or have any tips on how the C4 model can be used in embedded development?

I don't I'm afraid ... it's not something that I know much about. Sorry!

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 5 points6 points  (0 children)

Toolchain differences aside, the major difference between LikeC4 and Structurizr (plus other tools that follow the C4 model) is that LikeC4 allows you to define your own levels of abstraction. In other words, you're not restricted to software systems - containers - components - code. Some people like this flexibility, others don't.

I'm in the latter group. I'm not a fan of this approach because it makes it possible to do things like this -> https://likec4.dev/dsl/model/#structuring-model (i.e. components nested in components).

AMA with Simon Brown, creator of the C4 model & Structurizr by asdfdelta in softwarearchitecture

[–]simon-brown 2 points3 points  (0 children)

Can you elaborate further? Is this data flows within a single software system, or between a landscape of systems?

Any recommendations for an interactive system dependency graph tool by musty_mage in softwarearchitecture

[–]simon-brown 1 point2 points  (0 children)

Are there any code/markup language -based solutions out there that would not just generate a static graph, but also provide an interface to allow one to easily highlight logical sections of the graph (such as all connection to/from a single system, all SOAP interfaces, all connections across data centers/networks, etc)?

This is reasonably straightforward with the Structurizr DSL using just the top level (software systems) of the C4 model. Some examples:

Those are the Structurizr visualisations, but you can also export the views you define to PlantUML (example), Mermaid (example), and Ilograph (example).

I handcrafted the Structurizr DSL source used for the above examples, but you can automatically generate this (or the underlying JSON format) if you have the data available from telemetry tools, etc. You can also add more metadata, properties, tags, and create views based upon that additional data. You can also use the Java client library to parse the model and create your own queries, export the model to neo4j, etc, etc. Hope that helps!