---
title: '学架构笔记1：架构的概念'
pubDate: 1995-07-31
tags:
  - '笔记'
description: '学架构笔记1：架构的概念'
---

_学习笔记，较为简略。_

理解并分清概念的方法最好是选出容易混淆并区分，而且必须要吹毛求疵的那种。

## 系统与子系统

### 系统

> 系统泛指由一群有关联的个体组成，根据某种规则运作，能完成个别元件不能单独完成的工作的群体。它的意思是“总体”、“整体”和“联盟”。

关键词：关联、规则、能力

### 子系统

> 子系统也是由一群有关联的个体所组成的系统，多半会是更大的系统中的一部分。

子系统的定义与系统类似，只是在观察角度略有区别。

### 举例说明

1. 微信是一个系统，有聊天、支付、票圈等子系统
2. 票圈这个系统又有动态、评论等子系统
3. 评论这个系统又有防刷、审核、发布、存储子系统
4. 评论审核子系统不再包含业务意义上的子系统，而是模块或组件。

## 模块与组件

这两个概念容易混淆。

模块和组件都是系统的组成部分，只是从不同的角度拆分系统。

- 模块：从逻辑的角度拆分，目的是分离职责
- 组件：从物理的角度拆分，目的是单元复用

### 举例说明

学生信息管理系统：

- 模块角度：登录注册模块、个人信息模块、个人成绩模块
- 组件角度：Nginx、Web server、MySQL

## 框架与架构

### 框架

> 软件框架通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范，也指为了实现某个软件组件规范时，提供规范所要求之基础功能的软件产品。

1. 框架是组件规范
2. 框架提供基础功能

框架更多的是从开发规范的角度说，比如说MVC规范的框架。

### 架构

> 软件架构指软件系统的“基础结构”，创造这些基础结构的准则，以及对这些结构的描述。

1. 架构关注结构

根据老师的重新定义：

1. 架构需要明确系统包含哪些个体
2. 架构需要明确个体运作和协作的规则
3. 架构关注的是顶层架构，不要和子系统的架构混淆

## 总结

阐明并区分了几个容易混淆、模糊的概念。

_先这样吧_

若有错误之处请指出，更多地关注[煎鱼](http://www.jianyujianyu.com)。
