I have helped architect embedded vision system.
It's a piece of hardware with a camera, AI accelerator, processor, RT processor etc.
A lot of stuff is going on in this project, also a lot have changed in last just year.
It was easy for me to do the first diagrams in Keynote and present the architecture.
But now it grew so much, that I no longer feel control over it.
I get a lot of feature requests and questions about system behaviour, and it takes me longer and longer to respond.
Is there any software that could really help write down, visualise and keep history of such architecture?
Ideally I could contribute on pieces of it with teammates.
How would you approach such problem?
thanks.
https://real-world-plantuml.com/
Everything checked into Git
For the text part you could use pandoc.
In the end you have a pandoc pipeline which mixes your text with your pictures (plantuml) and generates some nice documents
Now you hopefully have a good block diagram and then you can attack every component in it in the same way.
This is the basic view where you really haven't explained any use case or at least not directly from the perspective of the use case. You'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.
However, you can if you want to, get into more dynamic behaviours as well, often with sequence diagrams.
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.
Forget about fancy tools. This is creative work just like programming. Use something basic. Visio, OmniGraffle, Miro, Dia, ...? Or something automated if you prefer.
=> 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. :)
If you can make the code itself generate a diagram (ie: MermaidJS) that reflect your code, it won't become outdated.
It takes time and effort to get there, so you might want to at least make a manual diagram to understand where you're at before undertaking this kind of automation.
A wiki does this. But its not so much a technical problem as it is hooking doc updates into development cycles.
(I have no experience with documenting hardware projects, so this is a suggestion from a layperson)