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'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.<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.