Book Image

Software Architect's Handbook

By : Joseph Ingeno
Book Image

Software Architect's Handbook

By: Joseph Ingeno

Overview of this book

The Software Architect’s Handbook is a comprehensive guide to help developers, architects, and senior programmers advance their career in the software architecture domain. This book takes you through all the important concepts, right from design principles to different considerations at various stages of your career in software architecture. The book begins by covering the fundamentals, benefits, and purpose of software architecture. You will discover how software architecture relates to an organization, followed by identifying its significant quality attributes. Once you have covered the basics, you will explore design patterns, best practices, and paradigms for efficient software development. The book discusses which factors you need to consider for performance and security enhancements. You will learn to write documentation for your architectures and make appropriate decisions when considering DevOps. In addition to this, you will explore how to design legacy applications before understanding how to create software architectures that evolve as the market, business requirements, frameworks, tools, and best practices change over time. By the end of this book, you will not only have studied software architecture concepts but also built the soft skills necessary to grow in this field.
Table of Contents (19 chapters)

Change is inevitable

Change is one of the few things that you can count on and it is inevitable for software systems. It occurs during the course of the initial development as well as throughout its life during maintenance.

There was a time when we had a greater sense of control over real-world processes and what needed to take place as part of those processes. A big, up-front design would take place before any code was written. In an effort to exert control, software architects tried to predict and plan for every future contingency as we designed our systems. Software systems were viewed as being more static than we view them today, with behavior that would stay consistent over time.

As we know, software systems modeled after the real world are hardly static. Changes constantly take place and the software systems that are modeled after it must change as well. Although software...