---
title: '学架构笔记2和3：架构的历史和目的'
pubDate: 1995-07-31
tags:
  - '笔记'
description: '学架构笔记2和3：架构的历史和目的'
---

## 历史

### 软件历史

1. 机器语言：直接使用二进制码0和1进行编程
2. 汇编语言：清晰了，仍需要了解底层
3. 高级语言：程序员不需要再关注及其底层
4. 第一次软件危机：软件逻辑复杂。提出软件工程、结构化程序设计（自顶向下、模块化），控制复杂度
5. 第二次软件危机：软件扩展跟不上硬件。面向对象流行

### 软件架构历史

软件架构出现：随着软件系统规模的增加，计算相关的算法和数据结构不再构成主要的设计问题；当系统由许多部分组成时，整个系统的组织，也就是所说的软件架构，导致了一系列新的设计问题。

只有较大规模的软件系统才会面临软件架构相关的问题：

- 系统规模庞大，耦合严重，开发效率低
- 耦合严重，扩展、修改难
- 逻辑复杂、排错困难

## 目的

架构并非必要，也不一定提升效率，也不一定能促进业务发展。不能因为需要架构而硬上架构。

**架构设计的真正目的是降低软件的复杂度。**

### 举例分析

#### 需求

大学学生管理系统，包括登录、注册、成绩管理、课程管理等。

#### 分析

- 性能：访问频率不高，性能不怎么复杂。MySQL胜任。
- 可扩展性：该类系统功能基本不便，可扩展性不复杂。
- 高可用：宕机影响不大，负载均衡不需要；数据需要高可用，因此使用主备方案。
- 安全性：不是强隐私，中等强度。
- 成本：几台服务器足够。

根据以上分析，可得架构：

![](https://source.mkshell.com/15278772066021.jpg)

## 总结

回顾软件和架构的发展历史，重申架构的真正目的，举例分析架构设计的目的和方法。

_先这样吧_

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