ryanlevell / books

MIT License
0 stars 0 forks source link

Fundamentals of Software Architecture (2%) #20

Open ryanlevell opened 9 months ago

github-actions[bot] commented 9 months ago

Congrats on starting Fundamentals of Software Architecture by Mark Richards, Neal Ford, I hope you enjoy it! It has an average of unknown/5 stars and 0 ratings on Google Books.

Book details (JSON) ```json { "title": "Fundamentals of Software Architecture", "authors": [ "Mark Richards", "Neal Ford" ], "publisher": "O'Reilly Media", "publishedDate": "2020-01-28", "description": "Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This book provides the first comprehensive overview of software architecture’s many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics. Mark Richards and Neal Ford—hands-on practitioners who have taught software architecture classes professionally for years—focus on architecture principles that apply across all technology stacks. You’ll explore software architecture in a modern light, taking into account all the innovations of the past decade. This book examines: Architecture patterns: The technical basis for many architectural decisions Components: Identification, coupling, cohesion, partitioning, and granularity Soft skills: Effective team management, meetings, negotiation, presentations, and more Modernity: Engineering practices and operational approaches that have changed radically in the past few years Architecture as an engineering discipline: Repeatable results, metrics, and concrete valuations that add rigor to software architecture", "image": "http://books.google.com/books/content?id=xa7MDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api", "language": "en", "categories": [ "Computers" ], "pageCount": 422, "isbn10": "1492043427", "isbn13": "9781492043423", "googleBooks": { "id": "xa7MDwAAQBAJ", "preview": "http://books.google.com/books?id=xa7MDwAAQBAJ&printsec=frontcover&dq=intitle:Fundamentals+of+Software+Architecture&hl=&cd=1&source=gbs_api", "info": "http://books.google.com/books?id=xa7MDwAAQBAJ&dq=intitle:Fundamentals+of+Software+Architecture&hl=&source=gbs_api", "canonical": "https://books.google.com/books/about/Fundamentals_of_Software_Architecture.html?hl=&id=xa7MDwAAQBAJ" } } ```
When you're finished with reading this book, just close this issue and I'll mark it as completed. Best of luck! 👍
ryanlevell commented 9 months ago

Chapter 8: Component-based architecture

Components consist of classes or functions (depending on the implementation platform), whose design falls under the responsibility of tech leads or developers. It's not that architects shouldn't involve themselves in class design (particularly when discovering or applying design patterns), but they should avoid micromanaging each decision from top to bottom in the system. If architects never allow other roles to make decisions of conse-quence, the organization will struggle with empowering the next generation of architects.

Before any code exists for a software project, the architect must somehow determine what top-level components to begin with, based on what type of top-level partitioning they choose. Outside that, an architect has the freedom to make up whatever components they want, then map domain functionality to them to see where behavior should reside. While this may sound arbitrary, it's hard to start with anything more concrete if an architect designs a system from scratch. The likelihood of achieving a good design from this initial set of components is disparagingly small, which is why architects must iterate on component design to improve it.