Understanding Software Architecture: History, Concepts, and Definitions
This article explores the evolution of software development from machine code to high‑level languages, explains the two software crises, and clarifies key concepts such as systems, subsystems, modules, components, frameworks, and ultimately defines software architecture as the top‑level structure for managing complexity.
In practice, programmers specialize in coding, low‑level principles, or logic, but many struggle when faced with higher‑level architectural design.
Do not be discouraged; everyone can be an architect because every task implicitly uses architecture.
This article walks you through the true meaning of software architecture, showing that it is not a mysterious concept but a logical extension of software evolution.
1. Machine Language
The earliest software was written directly in binary, e.g., the instruction to move the content of register BX to AX:
1000100111011000Machine code is notoriously hard to write, read, and modify.
2. Assembly Language
Assembly introduced mnemonic symbols to replace raw binary, making code clearer but still tied to specific CPUs:
mov ax,bxIt solves readability but remains machine‑oriented.
3. High‑Level Languages
High‑level languages abstract away hardware details, allowing developers to focus on business logic. For example, adding 4 and 6 in Lisp is a single line:
(+ 4 6)Compiled once, the same source can run on many architectures.
4. Two Software Crises
The first crisis (large, monolithic code) led to structured programming, emphasizing top‑down design and modularization.
Structured programming is still procedural but reduces complexity through hierarchical decomposition.
The second crisis (rapid growth of hardware and business requirements) introduced object‑oriented programming, aiming to manage extensibility, though it is not a silver bullet.
5. Emergence of Software Architecture
As systems grew, new design problems appeared: massive scale, tight coupling, and complex logic. Architecture emerged to address these by defining components, modules, and objects at higher abstraction levels.
Huge system scale leads to low development efficiency. Strong coupling makes modifications difficult. Complex logic causes hard‑to‑trace bugs.
Architecture introduces the concepts of modules, objects, and components, each representing a coarser granularity of system decomposition.
6. Defining Core Concepts
System and Subsystem
A system is a set of related entities operating under rules to achieve capabilities beyond individual parts. A subsystem is simply a system that is part of a larger system.
Example: WeChat is a system containing subsystems like chat, login, payment, and Moments; Moments contains dynamic, comment, and like subsystems, and so on.
Module and Component
Modules are logical partitions for responsibility separation; components are physical units designed for reuse and replaceability.
Framework and Architecture
A framework defines conventions, while architecture defines the structural layout. For instance, “the project uses MVC architecture” (structure) versus “the project uses SSH framework” (convention).
7. Redefining Architecture
Software architecture is the top‑level structure of a software system.
An architecture must identify the system’s constituent parts (systems, subsystems, modules, components) and the rules governing their interaction.
In practice, architects balance constraints such as team experience, cost, resources, time, and business stage to make trade‑offs that yield an appropriate architecture for a given software system.
—
Author: 猿码架构 (source: https://www.jianshu.com/p/312af3e8b94a)
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.