Skip to content Skip to footer
-70%

Fundamentals of Software Architecture: An Engineering Approach 1st Edition by Mark Richards, ISBN-13: 978-1492043454

Original price was: $50.00.Current price is: $14.99.

 Safe & secure checkout

Description

Description

Fundamentals of Software Architecture: An Engineering Approach 1st Edition by Mark Richards, ISBN-13: 978-1492043454

[PDF eBook eTextbook] – Available Instantly

  • Publisher: ‎ O’Reilly Media; 1st edition (March 3, 2020)
  • Language: ‎ English
  • 419 pages
  • ISBN-10: ‎ 1492043451
  • ISBN-13: ‎ 978-1492043454

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.

Table of Contents:

Preface: Invalidating Axioms

Conventions Used in This Book

Using Code Examples

O’Reilly Online Learning

How to Contact Us

Acknowledgments

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

Operations/DevOps

Process

Data

Laws of Software Architecture

I. Foundations

2. Architectural Thinking

Architecture Versus Design

Technical Breadth

Analyzing Trade-Offs

Understanding Business Drivers

Balancing Architecture and Hands-On Coding

3. Modularity

Definition

Measuring Modularity

Cohesion

Coupling

Abstractness, Instability, and Distance from the Main Sequence

Distance from the Main Sequence

Connascence

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

II. Architecture Styles

9. Foundations

Fundamental Patterns

Big Ball of Mud

Unitary Architecture

Client/Server

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

Topology

Layers of Isolation

Adding Layers

Other Considerations

Why Use This Architecture Style

Architecture Characteristics Ratings

11. Pipeline Architecture Style

Topology

Pipes

Filters

Example

Architecture Characteristics Ratings

12. Microkernel Architecture Style

Topology

Core System

Plug-In Components

Registry

Contracts

Examples and Use Cases

Architecture Characteristics Ratings

13. Service-Based Architecture Style

Topology

Topology Variants

Service Design and Granularity

Database Partitioning

Example Architecture

Architecture Characteristics Ratings

When to Use This Architecture Style

14. Event-Driven Architecture Style

Topology

Broker Topology

Mediator Topology

Asynchronous Capabilities

Error Handling

Preventing Data Loss

Broadcast Capabilities

Request-Reply

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

Topology

Taxonomy

Business Services

Enterprise Services

Application Services

Infrastructure Services

Orchestration Engine

Message Flow

Reuse…and Coupling

Architecture Characteristics Ratings

17. Microservices Architecture

History

Topology

Distributed

Bounded Context

Granularity

Data Isolation

API Layer

Operational Reuse

Frontends

Communication

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

Microkernel

Distributed Case Study: Going, Going, Gone

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

Example

20. Analyzing Architecture Risk

Risk Matrix

Risk Assessments

Risk Storming

Identification

Consensus

Agile Story Risk Analysis

Risk Storming Examples

Availability

Elasticity

Security

21. Diagramming and Presenting Architecture

Diagramming

Tools

Diagramming Standards: UML, C4, and ArchiMate

Diagram Guidelines

Presenting

Manipulating Time

Incremental Builds

Infodecks Versus Presentations

Slides Are Half of the Story

Invisibility

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

Summary

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

Summary

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

Self-Assessment Questions

Chapter 1: Introduction

Chapter 2: Architectural Thinking

Chapter 3: Modularity

Chapter 4: Architecture Characteristics Defined

Chapter 5: Identifying Architecture Characteristics

Chapter 6: Measuring and Governing Architecture Characteristics

Chapter 7: Scope of Architecture Characteristics

Chapter 8: Component-Based Thinking

Chapter 9: Architecture Styles

Chapter 10: Layered Architecture Style

Chapter 11: Pipeline Architecture

Chapter 12: Microkernel Architecture

Chapter 13: Service-Based Architecture

Chapter 14: Event-Driven Architecture Style

Chapter 15: Space-Based Architecture

Chapter 16: Orchestration-Driven Service-Oriented Architecture

Chapter 17: Microservices Architecture

Chapter 18: Choosing the Appropriate Architecture Style

Chapter 19: Architecture Decisions

Chapter 20: Analyzing Architecture Risk

Chapter 21: Diagramming and Presenting Architecture

Chapter 22: Making Teams Effective

Chapter 23: Negotiation and Leadership Skills

Chapter 24: Developing a Career Path

Index

Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems in a variety of technologies. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark is the founder of DeveloperToArchitect.com, a free website devoted to helping developers in the journey to becoming a software architect. He is the author of numerous technical books and videos, as well as a conference speaker and trainer, having spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.

Neal Ford is Director, Software Architect, and Meme Wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals, who thinks disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. He is an internationally recognized expert on software development and delivery, especially in the intersection of agile engineering techniques and software architecture. Neal has authored magazine articles, eight books (and counting), dozens of video presentations, and spoken at hundreds of developers conferences worldwide. His topics include software architecture, continuous delivery, functional programming, cutting edge software innovations, and includes a business-focused book and video on improving technical presentations

What makes us different?

• Instant Download

• Always Competitive Pricing

• 100% Privacy

• FREE Sample Available

• 24-7 LIVE Customer Support

Delivery Info

Reviews (0)

Reviews

There are no reviews yet.

Be the first to review “Fundamentals of Software Architecture: An Engineering Approach 1st Edition by Mark Richards, ISBN-13: 978-1492043454”

Your email address will not be published. Required fields are marked *