Software Architecture with C++
Subtitle: Designing Robust C++ Systems with Modern Architectural Practices
By: edited by Andrey Gavrilin
Publisher: Packt Publishing, Limited
Published: 2025
Language: eng
Number of pages: 738
ISBN-13: 9781803243016
Description: Architect high-quality C++ applications using modern features and patterns, with expanded coverage and practical new examples throughout the book.

Key benefits

* Design modern C++ systems using features from C++11 through C++20 and beyond
* Explore distributed system design with observability, scalability, and maintainability in mind
* Manage and package C++ applications, and prepare them for deployment using CMake, Conan, and CI/CD

Book Description

Designing scalable and maintainable software with C++ requires more than language expertise—it demands strong architectural thinking. This practical guide equips you with the skills to design and build robust, distributed systems using modern C++.

Starting with fundamental architectural principles and design philosophies, the book walks you through practical approaches to designing and deploying reliable systems. This edition contains significant updates across the book, including new chapters on observability, package management, and C++ modules to address real-world software challenges. You will explore software decomposition strategies, design and system patterns, fault tolerance, API management, and testability—all applied with C++.

Additionally, the book covers modern CI/CD pipelines, cloud-native design, microservices, and modular development, helping developers navigate today's fast-evolving software landscape. With updated examples and a renewed emphasis on maintainable and observable architectures, this edition equips C++ professionals to architect modern systems. By the end of this book, you will be able to design, build, test, and deploy well-architected solutions using modern C++ and proven architectural techniques.

What you will learn

* Apply architectural fundamentals to design scalable C++ systems
* Use modern C++ features to create maintainable and secure applications
* Implement architectural and system design patterns
* Design testable code and automate quality checks via CI/CD pipelines
* Manage dependencies and build systems using CMake and Conan
* Explore microservices, containers, and cloud-native practices in C++
* Improve observability with logging, tracing, and monitoring tools
* Build deployable C++ systems suited for modern development environments

Who this book is for

This book is intended for experienced C++ developers and software engineers aiming to expand their architectural knowledge, lead software projects, or build scalable systems. It assumes readers are comfortable with modern C++ (C++11 onwards) and familiar with basic design principles and patterns.
Table of contents: title: 1. Importance of Software Architecture and Principles of Great Design; title: 2. Architectural Styles; title: 3. Functional and Nonfunctional Requirements; title: 4. Architectural and System Design Patterns; title: 5. Leveraging C++ Language Features; title: 6. Design Patterns and C++ Idioms; title: 7. Building and Packaging; title: 8. Package Management; title: 9. The Future of C++ Code Reuse: Using Modules; title: 10. Writing Testable Code; title: 11. Continuous Integration and Continuous Deployment; title: 12. Security in Code and Deployment; title: 13. Performance; title: 14. Architecture of Distributed Systems; title: 15. Interservice Communication; title: 16. Containers; title: 17. Observability; title: 18. Cloud-Native Design