文章目录加载中

架构中的基础概念

# 架构和程序设计的区别?

架构设计的关键是判断和取舍,程序设计的关键是逻辑和实现。随着软件工程复杂度的提高,如何针对系统的难点进行识别以及采取对应优化越来越重要。

“When systems are constructed from many components, the organization of the overall system-the software architecture-presents a new set of design problems.”
—《软件架构介绍》(An Introduction to Software Architecture)

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

# 软件架构的目的

目的是:解决软件系统复杂度带来的问题。针对不同系统,复杂度体现在不同方面。比如红包系统,是高性能;对于一个 sdk,是高扩展(例如微内核方式);对于金融系统,是高可用、安全性。

我们要做什么?识别系统中的复杂点,针对性地解决问题,并对其进行架构设计。不可能一步到位,不可能面面俱到。

# 系统和子系统


系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体

子系统:大系统的一部分。

两者关系:例如微信系统下,有用户登录系统、微信支付系统。

# 模块和组件


模块与组件:都是系统的组成部分,只是从不同角度进行划分。

划分模块的目的是“职责分离”,例如登录模块、nestjs 中的 module、前端中同属一系列的页面集合。

划分组件的目的是“单元复用”,例如 ant-design 等。

# 框架和架构


框架(Framework):通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,以及践行这些规范的产品。例如 mvp、mvvm 和 Spring、vuejs。

架构:指的是系统的顶层结构。从不同角度看,结构是不同的。以下是从业务逻辑、物理部署、开发规范三个角度来看学生系统。

可以看到,对于架构来说,要明确系统的个体,还要明确个体的运作和协作规则。

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog