Software architecture is the software engineering practice of planning, organizing, and evolving the components of a system of applications for optimal interaction. What is "optimal" is determined by the requirements, constraints, and design goals of the system. Optimizations may include cost, flexibility, scalability, implementation timelines, and various business factors.
Deeper Knowledge on Software Architecture
Architectural Decision Records (ARDs)
A method for capturing architectural decisions
Broader Topics Related to Software Architecture
Engineering approaches to software development