What? Software architecture refers to the skeleton and high level infrastructure of a software system. It is the process of converting software characteristics (flexibility, scalability, feasibility, reusability, and security) into a structured solution that meets the technical and the business expectations.
Software design revolves around code level design: what the module is doing, classes scope, functions purpose, etc. Design principles such as SOLID and design patterns help a great deal.
List of Books Software Architect should read
According to Java Code Geeks
|1||Akka concurrency||Akka is an actor framework for the JVM, written in Scala, but also usable in Java. Different approach of structuring your code than “normal” Java way|
|2||Domain-Driven Design: Tackling Complexity in the Heart of Software||Structure your application based on the problem domain|
|3||Specification by Example: How Successful Teams Deliver the Right Software||Bring your team together on one page (analysts, testers, developers)|
|4||Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing||More about communication than specifictions of system|
|5||ATDD by Example: A Practical Guide to Acceptance Test-Driven Development||Testing and technical issues when using ATDD. Large overlap with Specification by example|
|6||Structure and Interpretation of Computer Programs||Functional easier than imperative. Talk: difference between simple & easy|
|7||Clean Code: A Handbook of Agile Software Craftsmanship||Architect is still a coder, so needs to code well|
|8||HTTP: The Definitive Guide||How does HTTP really work|
|9||Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)||How things can go bad in Production, so how to handle things gracefully|
|10||97 Things Every Programmer Should Know: Collective Wisdom from the Experts||Lots of good ideas|