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.
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:
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.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
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.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
