Book description
Apply business requirements to IT infrastructure and deliver a high-quality product by understanding architectures such as microservices, DevOps, and cloud-native using modern C++ standards and features
Key Features
- Design scalable large-scale applications with the C++ programming language
- Architect software solutions in a cloud-based environment with continuous integration and continuous delivery (CI/CD)
- Achieve architectural goals by leveraging design patterns, language features, and useful tools
Book Description
Software architecture refers to the high-level design of complex applications. It is evolving just like the languages we use, but there are architectural concepts and patterns that you can learn to write high-performance apps in a high-level language without sacrificing readability and maintainability.
If you're working with modern C++, this practical guide will help you put your knowledge to work and design distributed, large-scale apps. You'll start by getting up to speed with architectural concepts, including established patterns and rising trends, then move on to understanding what software architecture actually is and start exploring its components.
Next, you'll discover the design concepts involved in application architecture and the patterns in software development, before going on to learn how to build, package, integrate, and deploy your components. In the concluding chapters, you'll explore different architectural qualities, such as maintainability, reusability, testability, performance, scalability, and security. Finally, you will get an overview of distributed systems, such as service-oriented architecture, microservices, and cloud-native, and understand how to apply them in application development.
By the end of this book, you'll be able to build distributed services using modern C++ and associated tools to deliver solutions as per your clients' requirements.
What you will learn
- Understand how to apply the principles of software architecture
- Apply design patterns and best practices to meet your architectural goals
- Write elegant, safe, and performant code using the latest C++ features
- Build applications that are easy to maintain and deploy
- Explore the different architectural approaches and learn to apply them as per your requirement
- Simplify development and operations using application containers
- Discover various techniques to solve common problems in software design and development
Who this book is for
This software architecture C++ programming book is for experienced C++ developers looking to become software architects or develop enterprise-grade applications.
Table of contents
- Title Page
- Copyrights
- Dedication
- Contributors
- Preface
- Section 1: Concepts and Components of Software Architecture
-
Importance of Software Architecture and Principles of Great Design
- Technical requirements
- Understanding software architecture
- Learning the importance of proper architecture
- Exploring the fundamentals of good architecture
- Developing architecture using Agile principles
- The philosophy of C++
- Following the SOLID and DRY principles
- Coupling and cohesion
- Summary
- Questions
- Further reading
-
Architectural Styles
- Technical requirements
- Deciding between stateful and stateless approaches
- Understanding monoliths—why they should be avoided, and recognizing exceptions
- Understanding services and microservices
- Exploring event-based architecture
- Understanding layered architecture
- Learning module-based architecture
- Summary
- Questions
- Further reading
-
Functional and Nonfunctional Requirements
- Technical requirements documentation from sources, you must have
- Understanding the types of requirements
- Recognizing architecturally significant requirements
- Gathering requirements from various sources
- Documenting requirements
- Documenting architecture
- Choosing the right views to document
- Generating documentation
- Summary
- Questions
- Further reading
- Section 2: The Design and Development of C++ Software
-
Architectural and System Design
- Technical requirements
- Understanding the peculiarities of distributed systems
- Making your system fault tolerant and available
- Integrating your system
- Achieving performance at scale
- Deploying your system
- Managing your APIs
- Summary
- Questions
- Further reading
- Leveraging C++ Language Features
-
Design Patterns and C++
- Technical requirements
- Writing idiomatic C++
- Curiously recurring template pattern
- Creating objects
- Tracking state and visiting objects in C++
- Dealing with memory efficiently
- Summary
- Questions
- Further reading
- Building and Packaging
- Section 3: Architectural Quality Attributes
- Writing Testable Code
- Continuous Integration and Continuous Deployment
- Security in Code and Deployment
-
Performance
- Technical requirements
- Measuring performance
- Helping the compiler generate performant code
- Parallelizing computations
- Using coroutines
- Summary
- Questions
- Further reading
- Section 4: Cloud-Native Design Principles
-
Service-Oriented Architecture
- Technical requirements
- Understanding Service-Oriented Arcitecture
- Adopting messaging principles
- Using web services
- Leveraging managed services and cloud providers
- Summary
- Questions
- Further reading
- Designing Microservices
-
Containers
- Technical requirements
- Reintroducing containers
- Building containers
- Testing and integrating containers
- Understanding container orchestration
- Summary
- Questions
- Further reading
-
Cloud-Native Design
- Technical requirements
- Understanding cloud-native
- Using Kubernetes to orchestrate cloud-native workloads
- Observability in distributed systems
- Connecting services with a service mesh
- Going GitOps
- Summary
- Questions
- Further reading
- Appendix A
- Assessments
- About Packt
- Other Books You May Enjoy
Product information
- Title: Software Architecture with C++
- Author(s):
- Release date: April 2021
- Publisher(s): Packt Publishing
- ISBN: 9781838554590
You might also like
book
C++ Software Design
Good software design is essential for the success of your project, but designing software is hard …
video
Multi-Paradigm Programming with Modern C++
C++ is a multi-paradigm language that lets you solve a problem in different ways, and this …
book
Modern C++ Programming with Test-Driven Development
If you program in C++ you've been neglected. Test-driven development (TDD) is a modern software development …
book
Large-Scale C++ Volume I: Process and Architecture
Writing reliable and maintainable C++ software is hard. Designing such software at scale adds a new …