Mark Richards, Neal Ford
在全球范围的薪资调查中,软件架构师经常位列十大最佳工作岗 位排行榜,但是却没有真正的指南来帮助开发人员成为架构师。现在,这本书来了。书中首次全面概述了软件架构的诸多方面。有抱负的和现有的架构师可以从中学习到架构特征、架构模式、组件确定、架构图解和展示、演化架构等诸多主题。
Mark Richards和Neal Ford —— 多年来专业教授软件架构课程的践行者,将重点放在适用于所有技术栈的架构原理上。本书将带你从现代的角度探究软件架构,思考过去十年间的所有创新成果。
● 架构模式:许多架构决策的技术基础
● 组件:识别、耦合、内聚、分割、粒度
● 软技能:有效的团队管理、会议、谈判、演讲等
● 现代性:过去数年间发生了根本性变化的工程实践和操作方法
● 作为工程学科的架构:可重现的结果、衡量标准以及提高软件架构严谨性的具体评估
  1. Preface: Invalidating Axioms
  2. 1. Introduction
  3. Defining Software Architecture
  4. Expectations of an Architect
  5. Expectations of an Architect
  6. Intersection of Architecture and...
  7. Laws of Software Architecture
  8. Part I. Foundations
  9. 2. Architectural Thinking
  10. Architecture Versus Design
  11. Technical Breadth
  12. Analyzing Trade-Offs
  13. Understanding Business Drivers
  14. Balancing Architecture and Hands-On Coding
  15. 3. Modularity
  16. Definition
  17. Measuring Modularity
  18. From Modules to Components
  19. 4. Architecture Characteristics Defined
  20. Architectural Characteristics (Partially) Listed
  21. Trade-Offs and Least Worst Architecture
  22. 5. Identifying Architectural Characteristics
  23. Extracting Architecture Characteristics from Domain Concerns
  24. Extracting Architecture Characteristics from Requirements
  25. Case Study: Silicon Sandwiches
  26. 6. Measuring and Governing Architecture Characteristics
  27. Measuring Architecture Characteristics
  28. Governance and Fitness Functions
  29. 7. Scope of Architecture Characteristics
  30. Coupling and Connascence
  31. Architectural Quanta and Granularity
  32. 8. Component-Based Thinking
  33. Component Scope
  34. Architect Role
  35. Developer Role
  36. Component Identification Flow
  37. Component Granularity
  38. Component Design
  39. Case Study: Going, Going, Gone: Discovering Components
  40. Architecture Quantum Redux: Choosing Between Monolithic Versus Distributed Architectures
  41. Part II. Architecture Styles
  42. 9. Foundations
  43. Fundamental Patterns
  44. Monolithic Versus Distributed Architectures
  45. 10. Layered Architecture Style
  46. Topology
  47. Layers of Isolation
  48. Adding Layers
  49. Other Considerations
  50. Why Use This Architecture Style
  51. Architecture Characteristics Ratings
  52. 11. Pipeline Architecture Style
  53. Topology
  54. Example
  55. Architecture Characteristics Ratings
  56. 12. Microkernel Architecture Style
  57. Topology
  58. Registry
  59. Contracts
  60. Examples and Use Cases
  61. Architecture Characteristics Ratings
  62. 13. Service-Based Architecture Style
  63. Topology
  64. Topology Variants
  65. Service Design and Granularity
  66. Database Partitioning
  67. Example Architecture
  68. Architecture Characteristics Ratings
  69. When to Use This Architecture Style
  70. 14. Event-Driven Architecture Style
  71. Topology
  72. Broker Topology
  73. Mediator Topology
  74. Asynchronous Capabilities
  75. Error Handling
  76. Preventing Data Loss
  77. Broadcast Capabilities
  78. Request-Reply
  79. Choosing Between Request-Based and Event-Based
  80. Hybrid Event-Driven Architectures
  81. Architecture Characteristics Ratings
  82. 15. Space-Based Architecture Style
  83. General Topology
  84. Data Collisions
  85. Cloud Versus On-Premises Implementations
  86. Replicated Versus Distributed Caching
  87. Near-Cache Considerations
  88. Implementation Examples
  89. Architecture Characteristics Ratings
  90. 16. Orchestration-Driven Service-Oriented Architecture
  91. History and Philosophy
  92. Topology
  93. Taxonomy
  94. Reuse...and Coupling
  95. Architecture Characteristics Ratings
  96. 17. Microservices Architecture
  97. History
  98. Topology
  99. Distributed
  100. Bounded Context
  101. API Layer
  102. Operational Reuse
  103. Frontends
  104. Communication
  105. Architecture Characteristics Ratings
  106. Additional References
  107. 18. Choosing the Appropriate Architecture Style
  108. Shifting “Fashion” in Architecture
  109. Decision Criteria
  110. Monolith Case Study: Silicon Sandwiches
  111. Distributed Case Study: Going, Going, Gone
  112. Part III. Techniques and Soft Skills
  113. 19. Architecture Decisions
  114. Architecture Decision Anti-Patterns
  115. Architecturally Significant
  116. Architecture Decision Records
  117. 20. Analyzing Architecture Risk
  118. Risk Matrix
  119. Risk Assessments
  120. Risk Storming
  121. Agile Story Risk Analysis
  122. Risk Storming Examples
  123. 21. Diagramming and Presenting Architecture
  124. Diagramming
  125. Presenting
  126. 22. Making Teams Effective
  127. Team Boundaries
  128. Architect Personalities
  129. How Much Control?
  130. Team Warning Signs
  131. Leveraging Checklists
  132. Providing Guidance
  133. Summary
  134. 23. Negotiation and Leadership Skills
  135. Negotiation and Facilitation
  136. The Software Architect as a Leader
  137. Integrating with the Development Team
  138. Summary
  139. 24. Developing a Career Path
  140. The 20-Minute Rule
  141. Developing a Personal Radar
  142. Using Social Media
  143. Parting Words of Advice
  144. A. Self-Assessment Questions
  145. Index
作者:Mark Richards, Neal Ford
原版书书名:Fundamentals of Software Architecture
原版书出版商:O'Reilly Media
Mark Richards
Mark Richards is an accomplished author and conference speaker working as a handson
SOA and enterprise architect in the financial services industry. In addition to
numerous published articles, he is the author of Java Transaction Design Strategies
(C4Media), contributing author of 97 Things Every Software Architect Should Know
(O’Reilly), and contributing author of No Fluff, Just Stuff Anthology Volumes 1 and 2
(Pragmatic Bookshelf). He is a recognized authority on messaging, Service-Oriented
Architecture, and transaction management. Mark is a regular speaker on the NFJS
Software Symposium series and speaks at conferences around the world.
Neal Ford
作为一名软件架构师与意见领袖,Neal Ford供职于ThoughtWorks(一家专注于端到端软件开发与交付的跨国IT咨询公司)。在加入ThoughtWorks之前,Neal是The DSW Group, Ltd.的技术总监 ── 这是一家在美国还算有名的培训与软件开发公司。Neal毕业于乔治亚州立大学,他拥有计算机科学的学位,专攻语言与编译器;同时他还辅修数学,专攻统计分析。现在他是一名软件设计师和开发者,此外也编撰培训材料、杂志文章和视频演讲,他还是几本图书的作者,包括《Developing with Delphi:Object-Oriented Techniques》(由Prentice-Hall出版)、《Jbuilder 3 Unleashed》(由Sams出版)和《Art of Java Web Development》(由Manning出版)等。他曾担任2006和2007版《No Fluff, Just Stuff文选》(Pragmatic Bookshelf)的编辑和作者。他擅长的编程语言包括Java、C#/.NET、Ruby、Groovy、函数式语言、Scheme、Object Pascal、C++和C等。他的咨询工作主要针对大规模企业应用的设计和开发。Neal曾在美国和其他国家进行现场授课,客户包括军方和很多世界500强的企业。作为演讲者,他同样在全球享有盛名,曾在世界各地举办的各种大型开发者会议上发表超过600场演讲。如果有兴趣了解更多关于Neal的信息,请访问他的网站:http://www.nealford.com。他也希望得到读者的反馈,他的邮件地址是nford@ thoughtworks.com。
Neal Ford a is software architect and Meme Wrangler at ThoughtWorks, a global IT consultancy
with an exclusive focus on end-to-end software development and delivery. Before joining
ThoughtWorks, Neal was the chief technology officer at The DSW Group, Ltd., a nationally
recognized training and development firm. Neal has a degree in computer science, specializing
in languages and compilers, from Georgia State University and a minor in mathematics,
specializing in statistical analysis. He is also the designer and developer of applications,
instructional materials, magazine articles, video presentations, and author of the books
Developing with Delphi: Object-Oriented Techniques (Prentice-Hall), JBuilder 3 Unleashed
(Sams), and Art of Java Web Development (Manning). He was editor of and contributor to the
2006 and 2007 editions of the No Fluff, Just Stuff Anthology (Pragmatic Bookshelf). His
language proficiencies include Java, C#/.NET, Ruby, Groovy, functional languages, Scheme,
Object Pascal, C++, and C. His primary consulting focus is the design and construction of largescale
enterprise applications. Neal has taught on-site classes nationally and internationally to
the military and to many Fortune 500 companies. He is also an internationally acclaimed
speaker, having spoken at over 100 developer conferences worldwide, delivering more than
600 talks. If you have an insatiable curiosity about Neal, visit his web site at http://
www.nealford.com. He welcomes feedback and can be reached at nford@thoughtworks.com.
The animal on the cover of Fundamentals of Software Engineering is the red-fan parrot (Deroptyus accipitrinus), a native to South America where it is known by several names such as loro cacique in Spanish, or anaca, papagaio-de-coleira, and vanaquiá in Portugese. This New World bird makes its home up in the canopies and tree holes of the Amazon rainforest, where it feeds on the fruits of the Cecropia tree, aptly known as "snake fingers," as well as the hard fruits of various palm trees.
As the only member of the genus Deroptyus, the red-fan parrot is distinguished by the deep red feathers that cover its nape. Its name comes from the fact that those feathers will “fan” out when it feels excited or threatened and reveal the brilliant blue that highlights each tip. The head is topped by a white crown and yellow eyes, with brown cheeks that are streaked in white. The parrot’s breast and belly are covered in the same red feathers dipped in blue, in contrast with the layered bright green feathers on its back.
Between December and January, the red-fan parrot will find its lifelong mate and then begin laying 2-4 eggs a year. During the 28 days in which the female is incubating the eggs, the male will provide her with care and support. After about 10 weeks, the young are ready to start fledging in the wild and begin their 40-year life span in the world’s largest tropical rainforest.
While the red-fan parrot’s current conservation status is designated as of Least Concern, many of the animals on O’Reilly covers are endangered; all of them are important to the world.
The cover illustration is by Karen Montgomery, based on a black and white engraving from Lydekker’s Royal Natural History. The cover fonts are Gilroy Semibold and Guardian Sans. The text font is Adobe Minion Pro; the heading font is Adobe Myriad Condensed; and the code font is Dalton Maag’s Ubuntu Mono.