Fundamentals 12 min read

What Is Software Architecture? History, Concepts, and Why It Matters

This article traces the evolution from machine code to high‑level languages, explains the two software crises, defines system, subsystem, module, component and framework, and clarifies the true purpose and goals of software architecture for modern developers.

IT Architects Alliance
IT Architects Alliance
IT Architects Alliance
What Is Software Architecture? History, Concepts, and Why It Matters

Preface

Many programmers aspire to become architects, yet the path is often unclear. This article gradually introduces the essence of software architecture, showing that anyone can practice architectural thinking in daily work.

Background of Architecture

1.1 Machine Language

Early software was written directly in binary code, e.g. the instruction to move the content of register BX to AX: 1000100111011000 Machine code is notoriously hard to write, read, and modify.

1.2 Assembly Language

Assembly introduced mnemonic symbols to replace raw opcodes, making code clearer but still tied to hardware. Example: mov ax,bx It reduces the difficulty of writing and reading code but still requires detailed knowledge of the target CPU.

1.3 High‑Level Languages

High‑level languages abstract away hardware details, allowing developers to focus on business logic. For instance, the Lisp expression for adding 4 and 6 is simply: (+ 4 6) Compiled once, the same source can run on many machines.

1.4 The Two Software Crises

First crisis – Structured Programming : As software grew, quality and schedule problems emerged (e.g., the 1963 Sailor‑One rocket failure caused by a single FORTRAN error). Structured programming introduced top‑down modular design to control complexity.

Second crisis – Object‑Oriented Programming : Hardware advances and expanding business requirements made pure modularization insufficient. Object‑orientation attempted to address extensibility, yet it also proved not to be a silver bullet.

1.5 Emergence of Software Architecture

When systems become large, the focus shifts from algorithms to the overall organization of components. Architecture addresses problems such as massive coupling, low development efficiency, and difficulty in maintenance and evolution.

Huge system size leads to severe internal coupling and low efficiency. Coupling makes any change ripple throughout the system. Complex logic increases bugs and hampers debugging.

What Architecture Actually Means

2.1 System and Subsystem

A system is a set of related entities that operate under common rules to achieve capabilities beyond any single part. A subsystem is simply a system that forms part of a larger system.

Example: WeChat is a system containing chat, login, payment, and Moments subsystems; Moments further contains dynamics, comments, and likes subsystems; the comment subsystem includes anti‑spam, review, publishing, and storage sub‑systems, which in turn rely on MySQL, Redis, etc.

2.2 Module vs. Component

Modules are logical partitions created to separate responsibilities; components are physical units designed for reuse. A component (often called a “part”) is independent and replaceable.

2.3 Framework vs. Architecture

Frameworks define conventions and APIs (the “norms”), while architecture defines the structural arrangement of those parts.

Illustrations of a student‑management system from three perspectives:

Student management system – business view
Student management system – business view
Student management system – physical deployment view
Student management system – physical deployment view
Student management system – development structure view
Student management system – development structure view

2.4 Redefining Architecture

Software architecture is the top‑level structure of a software system.

It must identify the individual parts (systems, subsystems, modules, components) and the rules governing their interaction.

Goals of Architecture

Architecture is a solution to software complexity, requiring trade‑offs among constraints such as team experience, cost, resources, schedule, and business stage. By analyzing architectural complexity, designers can make informed decisions and apply the right structure to the right problem.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Software Architecturesoftware-engineeringSystem DesignComponentmodule
IT Architects Alliance
Written by

IT Architects Alliance

Discussion and exchange on system, internet, large‑scale distributed, high‑availability, and high‑performance architectures, as well as big data, machine learning, AI, and architecture adjustments with internet technologies. Includes real‑world large‑scale architecture case studies. Open to architects who have ideas and enjoy sharing.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.