Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying Software Architecture with C++
  • Table Of Contents Toc
Software Architecture with C++

Software Architecture with C++ - Second Edition

By : Andrey Gavrilin, Adrian Ostrowski, Piotr Gaczkowski
close
close
Software Architecture with C++

Software Architecture with C++

By: Andrey Gavrilin, Adrian Ostrowski, Piotr Gaczkowski

Overview of this book

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. *Email sign-up and proof of purchase required
Table of Contents (27 chapters)
close
close
1
Concepts and Components of Software Architecture
5
The Design and Development of C++ Software
12
Architectural Quality Attributes
17
Cloud-Native Design Principles
26
Index

The importance of proper architecture

A better question would be: why is caring about your architecture important? As we mentioned earlier, regardless of whether you put conscious effort into building it or not, your software will end up with some kind of architecture. If, after several months or even years of development, you still want your software to retain its qualities, you need to take some steps earlier in the process. If you won’t think about your architecture, chances are it won’t ever present the required qualities.

So, in order for your product to meet the business requirements (formal descriptions of business-related objectives and expectations) and attributes such as performance, maintainability, and scalability, you need to take care of its architecture, and it is best if you do it as early as you can in the process. Failing to do so could result in the issues discussed in the following two subsections.

Technical debt

Even after you have done the initial work and have a specific architecture in mind, you need to continuously monitor how the system evolves and whether it still aligns with its users’ needs, as those may also change during the development and lifetime of your software.

Technical debt (sometimes also called software decay, software erosion, or software rot) occurs when the implementation decisions don’t correspond to the intentional architecture. It is a metaphor describing the trade-offs between short-term gain and long-term stability of software development.

Technical debt could result from a variety of factors, such as unclear project requirements, poorly written or hastily written code, hardcoded values, lack of documentation, outdated documentation, lack of testing, insufficient testing, lack of code reviews, deprecated libraries or frameworks, deferred upgrades, or accumulated bug debt.

Accidental architecture

Failing to track whether the development adheres to the chosen architecture or failing to intentionally plan how the architecture should look will often result in a so-called accidental architecture, and it can happen regardless of applying best practices in other areas, such as testing, or having any specific development culture.

There are architectural anti-patterns and smells that suggest your architecture is accidental. Code resembling the big ball of mud or spaghetti code, an architectural anti-pattern that suggests a lack of structure, is the most obvious example. Having a god object, where one entity is responsible for everything at once, is another important sign of this. Altogether, if your software is getting tightly coupled with strong dependencies between software components—perhaps with circular dependencies, which occur when two or more components depend on each other—it’s an important signal to put more conscious effort into how the architecture looks.

Let’s now describe what an architect must understand to deliver a viable solution.

Visually different images
CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Software Architecture with C++
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist download Download options font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon