Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20

Fundamentals of Software Architecture

An Engineering Approach

Paperback Engels 2020 9781492043454
Op voorraad | Vandaag voor 21:00 uur besteld, morgen in huis


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


Aantal pagina's:400
Hoofdrubriek:IT-management / ICT


Wees de eerste die een lezersrecensie schrijft!

Over Mark Richards

Mark Richards is a Director and Sr. Technical Architect at Collaborative Consulting, LLC., where he is involved in the architecture and design of Service Oriented Architectures in J2EE and other technologies, primarily in the financial services industry. He has been involved in the software industry since 1984, and has significant experience and expertise in J2EE architecture and development, Object-oriented design and development, and systems integration. Mark served as the President of the Boston Java User Group in 1997 and 1998, and the President of the New England Java Users Group from 1999 thru 2003. Mark is also the author of "Java Transaction Design Strategies" and contributing author of "97 Things Every Software Architect Should Know" (O'Reilly 2009), "NFJS Anthology Volume 1", and "NFJS Anthology Volume 2". Mark is an IBM Certified Application Architect, Certified Master IT Architect (TOG), Sun Certified J2EE Business Component Developer, a Sun Certified J2EE Enterprise Architect, a Sun Certified Java Programmer, a BEA WebLogic Certified Developer, a Certified Java Instructor, and holds a Master's Degree in Computer Science from Boston University. He is a regular conference speaker at the No Fluff Just Stuff Symposium Series and speaks at conferences and user groups around the country. When he is not working Mark can usually be found hiking with his wife and two daughters in the White Mountains or along the Appalachian Trail.

Andere boeken door Mark Richards


Preface: Invalidating Axioms
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us
Acknowledgments from Mark Richards
Acknowledgments from Neal Ford

1. Introduction
Defining Software Architecture
Expectations of an Architect
Make Architecture Decisions
Continually Analyze the Architecture
Keep Current with Latest Trends
Ensure Compliance with Decisions
Diverse Exposure and Experience
Have Business Domain Knowledge
Possess Interpersonal Skills
Understand and Navigate Politics
Intersection of Architecture and…
Engineering Practices
Laws of Software Architecture

Part I: Foundations
2. Architectural Thinking
Architecture Versus Design
Technical Breadth
Analyzing Trade-Offs
Understanding Business Drivers
Balancing Architecture and Hands-On Coding

3. Modularity
Measuring Modularity
Abstractness, Instability, and Distance from the Main Sequence
Distance from the Main Sequence
Unifying Coupling and Connascence Metrics
From Modules to Components

4. Architecture Characteristics Defined
Architectural Characteristics (Partially) Listed
Operational Architecture Characteristics
Structural Architecture Characteristics
Cross-Cutting Architecture Characteristics
Trade-Offs and Least Worst Architecture

5. Identifying Architectural Characteristics
Extracting Architecture Characteristics from Domain Concerns
Extracting Architecture Characteristics from Requirements
Case Study: Silicon Sandwiches
Explicit Characteristics
Implicit Characteristics

6. Measuring and Governing Architecture Characteristics
Measuring Architecture Characteristics
Operational Measures
Structural Measures
Process Measures
Governance and Fitness Functions
Governing Architecture Characteristics
Fitness Functions

7. Scope of Architecture Characteristics
Coupling and Connascence
Architectural Quanta and Granularity
Case Study: Going, Going, Gone

8. Component-Based Thinking
Component Scope
Architect Role
Architecture Partitioning
Case Study: Silicon Sandwiches: Partitioning
Developer Role
Component Identification Flow
Identifying Initial Components
Assign Requirements to Components
Analyze Roles and Responsibilities
Analyze Architecture Characteristics
Restructure Components
Component Granularity
Component Design
Discovering Components
Case Study: Going, Going, Gone: Discovering Components
Architecture Quantum Redux: Choosing Between Monolithic Versus Distributed Architectures

Part II: Architecture Styles
9. Foundations
Fundamental Patterns
Big Ball of Mud
Unitary Architecture
Monolithic Versus Distributed Architectures
Fallacy #1: The Network Is Reliable
Fallacy #2: Latency Is Zero
Fallacy #3: Bandwidth Is Infinite
Fallacy #4: The Network Is Secure
Fallacy #5: The Topology Never Changes
Fallacy #6: There Is Only One Administrator
Fallacy #7: Transport Cost Is Zero
Fallacy #8: The Network Is Homogeneous
Other Distributed Considerations

10. Layered Architecture Style
Layers of Isolation
Adding Layers
Other Considerations
Why Use This Architecture Style
Architecture Characteristics Ratings

11. Pipeline Architecture Style
Architecture Characteristics Ratings

12. Microkernel Architecture Style
Core System
Plug-In Components
Examples and Use Cases
Architecture Characteristics Ratings

13. Service-Based Architecture Style
Topology Variants
Service Design and Granularity
Database Partitioning
Example Architecture
Architecture Characteristics Ratings
When to Use This Architecture Style

14. Event-Driven Architecture Style
Broker Topology
Mediator Topology
Asynchronous Capabilities
Error Handling
Preventing Data Loss
Broadcast Capabilities
Choosing Between Request-Based and Event-Based
Hybrid Event-Driven Architectures
Architecture Characteristics Ratings

15. Space-Based Architecture Style
General Topology
Processing Unit
Virtualized Middleware
Data Pumps
Data Writers
Data Readers
Data Collisions
Cloud Versus On-Premises Implementations
Replicated Versus Distributed Caching
Near-Cache Considerations
Implementation Examples
Concert Ticketing System
Online Auction System
Architecture Characteristics Ratings

16. Orchestration-Driven Service-Oriented Architecture
History and Philosophy
Business Services
Enterprise Services
Application Services
Infrastructure Services
Orchestration Engine
Message Flow
Reuse…and Coupling
Architecture Characteristics Ratings

17. Microservices Architecture
Bounded Context
Data Isolation
API Layer
Operational Reuse
Choreography and Orchestration
Transactions and Sagas
Architecture Characteristics Ratings
Additional References

18. Choosing the Appropriate Architecture Style
Shifting “Fashion” in Architecture
Decision Criteria
Monolith Case Study: Silicon Sandwiches
Modular Monolith
Distributed Case Study: Going, Going, Gone

Part III: Techniques and Soft Skills
19. Architecture Decisions
Architecture Decision Anti-Patterns
Covering Your Assets Anti-Pattern
Groundhog Day Anti-Pattern
Email-Driven Architecture Anti-Pattern
Architecturally Significant
Architecture Decision Records
Basic Structure
Storing ADRs
ADRs as Documentation
Using ADRs for Standards

20. Analyzing Architecture Risk
Risk Matrix
Risk Assessments
Risk Storming
Agile Story Risk Analysis
Risk Storming Examples

21. Diagramming and Presenting Architecture
Diagramming Standards: UML, C4, and ArchiMate
Diagram Guidelines
Manipulating Time
Incremental Builds
Infodecks Versus Presentations
Slides Are Half of the Story

22. Making Teams Effective
Team Boundaries
Architect Personalities
Control Freak
Armchair Architect
Effective Architect
How Much Control?
Team Warning Signs
Leveraging Checklists
Developer Code Completion Checklist
Unit and Functional Testing Checklist
Software Release Checklist
Providing Guidance

23. Negotiation and Leadership Skills
Negotiation and Facilitation
Negotiating with Business Stakeholders
Negotiating with Other Architects
Negotiating with Developers
The Software Architect as a Leader
The 4 C’s of Architecture
Be Pragmatic, Yet Visionary
Leading Teams by Example
Integrating with the Development Team

24. Developing a Career Path
The 20-Minute Rule
Developing a Personal Radar
The ThoughtWorks Technology Radar
Open Source Visualization Bits
Using Social Media
Parting Words of Advice

A. Self-Assessment Questions


Managementboek Top 100


Populaire producten



        Fundamentals of Software Architecture