Book Image

Software Architecture for Busy Developers

By : Stéphane Eyskens
Book Image

Software Architecture for Busy Developers

By: Stéphane Eyskens

Overview of this book

Are you a seasoned developer who likes to add value to a project beyond just writing code? Have you realized that good development practices are not enough to make a project successful, and you now want to embrace the bigger picture in the IT landscape? If so, you're ready to become a software architect; someone who can deal with any IT stakeholder as well as add value to the numerous dimensions of software development. The sheer volume of content on software architecture can be overwhelming, however. Software Architecture for Busy Developers is here to help. Written by Stéphane Eyskens, author of The Azure Cloud Native Mapbook, this book guides you through your software architecture journey in a pragmatic way using real-world scenarios. By drawing on over 20 years of consulting experience, Stéphane will help you understand the role of a software architect, without the fluff or unnecessarily complex theory. You'll begin by understanding what non-functional requirements mean and how they concretely impact target architecture. The book then covers different frameworks used across the entire enterprise landscape with the help of use cases and examples. Finally, you'll discover ways in which the cloud is becoming a game changer in the world of software architecture. By the end of this book, you'll have gained a holistic understanding of the architectural landscape, as well as more specific software architecture skills. You'll also be ready to pursue your software architecture journey on your own - and in just one weekend!
Table of Contents (14 chapters)
1
Section 1: Introduction
3
Section 2: The Broader Architecture Landscape
6
Section 3: Software Design Patterns and Architecture Models
9
Section 4: Impact of the Cloud on Software Architecture Practices
11
Section 5: Architectural Trends and Summary

My top 10 code smells

A code smell is a code construct that could lead an application to crash or encounter unexpected issues. As I showed in the repository pattern section, it is very easy to leave rubbish inside well-implemented design patterns. Admittedly, most modern continuous integration/continuous delivery (CI/CD) factories ship with code-analysis tools such as SonarQube that analyze code and detect code smells automatically. Nevertheless, here are the top 10 things I consider when reviewing code or assessing the results produced by such a tool:

  1. Memory leaks will for sure lead to process crashes: The sooner you detect them, the better.
  2. Improperly disposed objects: While memory leaks are annoying, they are easy to troubleshoot. Conversely, disposed objects that are still used somewhere are harder to find and often lead to erratic behaviors.
  3. ORM usage: It is great to abstract away the underlying data store but, in some situations (input/output (I/O)-intensive...