Tuesday, May 04, 2021

2021-05-04 Tuesday - Book Review - Software Architecture with C++

 

image source: Amazon.com

Full Disclosure: Naved Mahdi (Marketing Coordinator at Packt, very graciously offered to provide me with an eBook copy to review.

Software Architecture with C++, by Adrian Ostrowski and Piotr Gaczkowski

Software Architecture with C++: Design modern systems using effective architecture concepts, design patterns, and techniques with C++20

https://www.amazon.com/Software-Architecture-effective-architecture-techniques/dp/1838554599/

Imagine spending thousands of dollars to attend some of the best world-class conferences. In addition to the cost of the conference, you will also incur travel costs, hotels, meals, parking, and the costs of the time spent being away from your full-time job. While attending such conferences – you have the opportunity to sit in on sessions – presented by leading practitioners – but you will be challenged to decide which sessions to select – and you will inevitably have to miss out on some when choices must be made. Embodied in this book are some of the most important lessons that you might glean from attending several such conferences. The additional value of this book – is that it is concisely written – and in the latter chapters, provides a specialized focus through the lens of Software Architecture with C++. However, many of the lessons conveyed in its pages are applicable, regardless of your language choice. By learning C++ you will become a better programmer. Period. You will have a deeper understanding of the underlying design and performance considerations of all programming languages – and you will have added a powerful tool to your toolbox.

This book is the equivalent of a Master Class on Software Architecture with C++

What I Particularly Liked About this Book

  • Coverage of C++ 20, and discussion of the evolution of changes from C++98, C++11, C++17
  • Holistically examines Software Architecture.
  •  Provides an opinionated view of C++ usage in implementing Software Architecture – that has a fair representation of broad industry practices and conventions.
  • Touches on Cloud Native Architecture – as well as older Service Oriented Architecture – as well as Microservices.
  • Domain Driven Design
  • The discussion of SOLID and DRY principles – and the suggested list of some well-written (and mature) libraries/frameworks.
  • The discussion on stateless and stateful,  in Chapter-2
  • Chapter-3’s discussion on architecture view and documentation generation
  • Chapter-4’s inclusion of the Fallacies of Distributed Computing and CAP Theorem, as well as the discussion on IaaS, PaaS,  SaaS, and FaaS models. Overall, this is a substantial chapter that covers a lot of significant material – and is notable for its concise and broad coverage of architecture patterns.
  • Chapter-5’s demonstration of the evolution of a design – starting with a C++17 implementation – and showing the transition to a C++20 implementation.
  • I greatly appreciated the inclusion of the suggested entries in the “Further reading” at the end of each chapter.

There is much more I could say about the goodness in each of the chapters of this book - but I will leave that discovery for you to enjoy yourself.

Chapters:

  1. Importance of Software Architecture and Principles of Great Design
  2. Architectural Styles
  3. Functional and Nonfunctional Requirements
  4. Architectural and System Design
  5. Leveraging C++ Language Features
  6. Design Patterns and C++
  7. Building and Packaging
  8. Writing Testable Code
  9. Continuous Integration and Continuous Deployment
  10. Security in Code and Deployment
  11. Performance
  12. Service-Oriented Architecture
  13. Designing Microservices
  14. Containers
  15. Cloud-Native Design

Note: I rarely give 5-star reviews - this book exceeded my expectations. 



For a deeper exploration of C++ Object Oriented Programming concepts, I highly recommend Dorothy Kirk's new book: Demystified Object Oriented Programming with C++, also from Packt.

No comments:

Copyright

© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.