
I like the idea of breaking down by Viewpoints and Perspectives, from the book Software Systems Architecture.
Also, while this bit is probably overkill for your current situation, you may find value down the road in looking at some of the various "architecture frameworks"[4] and reference models that are out there. Things like TOGAF[5], DODAF[6], MODAF[7], TRAK[8], etc.
In any case, always remember the words of the immortal Bruce Lee:
“Absorb what is useful, discard what is useless and add what is specifically your own”.
[1]: https://en.wikipedia.org/wiki/Philippe_Kruchten
[2]: https://en.wikipedia.org/wiki/4%2B1_architectural_view_model
[3]: https://www.amazon.com/Software-Systems-Architecture-Stakeho...
[4]: https://en.wikipedia.org/wiki/Enterprise_architecture_framew...
[5]: https://en.wikipedia.org/wiki/The_Open_Group_Architecture_Fr...
[6]: https://en.wikipedia.org/wiki/Department_of_Defense_Architec...
Basically, it’s not about the code. It’s about the form following the function. That is, first, deeply understand the context and purpose of the software, and the structure will follow.
I also recommend “Domain Driven Design” by Evans. But, a warning - it’s dry. There are a lot of “DDD in Java” code examples out there.
You could go back amd re-read “Code Complete”, and other early Microsoft Press books. Though, some are probably dated.
The Robert Martin books can be also useful, at least in thinking about how to maintain low coupling, high cohesion.
Oh, and “Working with Legacy Code”
Unfortunately, none are specifically Java related. How to structure systems is an art that requires practice. So, maybe start off with some small toy projects, just to get warmed up.
Reading the book should be a very useful first step when learning about architecture.
If one decides to go to the course it's essential that there are also experienced architects participating and that one has an architectural case study that can be discussed.