Understanding Software Architecture: Systems, Subsystems, Modules, Components, Frameworks, and Architecture
This article explains the fundamental concepts of software architecture—including systems, subsystems, modules, components, frameworks, and architecture itself—by defining each term, illustrating their relationships with real‑world examples, and clarifying common misconceptions for technical professionals.
Software architecture is a crucial skill for technical professionals, yet many cannot precisely define what "architecture" means. This article clarifies the concept by distinguishing related terms such as system, subsystem, module, component, framework, and architecture.
System and Subsystem
A system is a group of interrelated entities that operate under defined rules to achieve capabilities beyond the sum of individual parts.
Key aspects include:
Association: entities must be related; a random collection does not form a system.
Rules: components follow coordinated rules rather than acting independently.
Capability: the system exhibits emergent abilities not present in individual components.
A subsystem follows the same definition but is viewed as part of a larger system.
Example (illustrative, not official): WeChat is a system containing subsystems such as chat, login, payment, and Moments; Moments further contains dynamic, comment, and like subsystems, and so on.
Module and Component
Modules and components are often confused. A module is a logical unit of software that groups related code and data, exposing interfaces for functionality. A component is a self‑contained, reusable, language‑agnostic software unit that can be assembled into applications.
Modules emphasize responsibility separation; components emphasize physical reuse.
Example: In a student information management system, logical modules might be "login", "personal info", and "grades", while physical components could be Nginx, a web server, and MySQL.
Framework vs. Architecture
A framework is a set of conventions or specifications (e.g., MVC, MVP, MVVM) that provides foundational functionality for building applications, such as Spring MVC offering annotations, security, and JPA support.
Software architecture refers to the fundamental structures of a software system, the discipline of creating those structures, and the documentation of them.
Thus, a framework focuses on "specification" while architecture focuses on "structure". Both can be described together (e.g., "MVC architecture" or "Spring MVC framework").
Redefining Architecture
Based on Wikipedia, we redefine software architecture as the "top‑level structure" of a software system. It must specify which entities (subsystems, modules, components) belong to the system, the rules governing their interaction, and the overall hierarchical organization.
All these representations are valid architectures of the same system, reflecting different viewpoints (business, deployment, development). This aligns with IBM's 4+1 view model.
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.