A Theory of Software Architecture
I think software architecture is the wrong word for this.  It’s module structure,  architecture to me includes all the surrounding bits concerning the “ilities”.  (Availability, Interoperability,  Modifiability, Usability, Testability, Security, Performance).  I say this because getting the module structure right is important but not the only factor to a successful application.My favorites in regard to the topic of module structure are   David Parnas and Juval Lowy