I used to believe that software architecture is about create big systems. I no longer do that.
Now, I first think about objectives. What user behaviors are we planning to support? Do we understand the user problems we are solving?
Then, I think about dependencies.
If we do not think we can achieve our goals with either of the three options, I’m inclined to treat the code we write as exploration.