Fundamentals 10 min read

The Essence of Software Architecture: Defining Problems, Classification, and Perspective

The article argues that software architecture is fundamentally the practice of uncovering a problem’s essence—its context, goal, and obstacle—classifying it as abnormal or improvement, and then converting the open‑ended gap between current state and desired outcome into a concrete, implementable solution.

Didi Tech
Didi Tech
Didi Tech
The Essence of Software Architecture: Defining Problems, Classification, and Perspective

At the beginning, a quote from *The Godfather* is used to highlight the importance of seeing the essence of things quickly. The author argues that while the ability to perceive essence is valuable, destiny is not strictly determined by it.

The article uses this idea as a prelude to stress the significance of uncovering the essence of problems, which is the core of software architecture. Architecture is defined as the process of discovering the essence of a problem and solving it.

Software architecture (unless otherwise specified) refers to the overall design of a software system. It spans the entire software lifecycle—requirements analysis, high‑level design, detailed design, coding, testing, deployment, and operation—addressing countless issues that arise along the way.

A “problem” is broken down into three basic components: context (the scenario and known conditions), goal (the desired outcome), and obstacle (why the goal is not immediately reachable). In short, a problem is the gap between the current state and the goal.

Two illustrative examples are given: (1) a system that cannot be accessed versus the goal of normal access, and (2) the personal goal of getting married next year versus the current unmarried state.

Problems are classified into two types:

Abnormal problems : the goal should be achieved now, the current state does not meet the goal, and the solution focuses on finding the cause. Example: a system that is down.

Improvement problems : the goal is future‑oriented, the current state does not meet the goal, and the solution focuses on how to achieve the goal. Example: planning to get married next year.

The article then adopts a “problem‑centric” view of everyday objects, showing that most things exist to solve specific problems: shoes solve the problem of foot injury when walking barefoot, combs solve tangled hair, blankets solve the problem of staying warm, etc. It notes that the definition of an object depends on the problems of its era.

From this perspective, software architecture is defined as the means to transform real‑world requirements into a software implementation—essentially, a problem‑solving activity.

The key to solving any problem is described as converting an open‑ended situation into a closed one: for abnormal problems, locate the root cause; for improvement problems, determine the path to the future goal.

Summary of the article:

Problem definition: a gap between current state and goal.

Problem classification: abnormal vs. improvement problems.

Problem perspective: most objects exist to solve specific problems.

Importance of problems: societal and personal development correlate with the ability to solve higher‑level problems.

Architecture definition (problem perspective): architecture solves the conversion of real needs into software solutions.

Key to solving problems: turning open‑ended issues into closed solutions.

software architecturesystem designanalysisproblem classificationproblem definition
Didi Tech
Written by

Didi Tech

Official Didi technology account

0 followers
Reader feedback

How this landed with the community

login 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.