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.
Wikipedia definition, interesting article about the difference between Software Architecture and Design. Developers should know a lot about design and a little about architecture.
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
No | Book | Comments |
---|---|---|
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 |