A practical and pragmatic guide to software architecture
The agile and software craftsmanship movements are helping to push up the quality of the software systems that we build, which is excellent. Together they are helping us to write better software that better meets the needs of the business while carefully managing time and budgetary constraints. But there's still more we can do because even a small amount of software architecture can help prevent many of the problems that projects face. Successful software projects aren't just about good code and sometimes you need to step away from the IDE for a few moments to see the bigger picture.
This book is about that bigger picture and its role in delivering better software. It's a collection of essays that together form a practical and pragmatic guide to software architecture, with the overall goal being to demystify what it means to be a software architect and provide guidance on how to do software architecture effectively.
The book is aimed at software developers that want to learn more about software architecture as well as those that are new to the role. It fills the gap between software development and high-level architecture that probably seems a little "enterprisey" for most developers.
You'll find this book useful if any of the following scenarios sound familiar!
- I'm not sure what software architecture is about and how it's any different from design.
- I don't understand why we need "software architecture".
- My manager has told me that I'm the software architect on our new project, but I'm not sure what that actually means.
- I want to get involved in designing software but I'm not sure what I should learn.
- I've been given some requirements and asked to design some software, but I'm not sure where to start.
- I need to make some major enhancements to my system, but I'm not sure where to start.
- I've been asked to write a software architecture document but I'm not sure what to include in it.
- I'm not sure who to talk to in my organisation about how best to integrate what we're building.
- I understand what software architecture is all about, but I'm not sure how to tackle it on my project.
- My project seems like a chaotic mess; everybody is doing their own thing and there's no shared vision. Help!