其实一个软件系统要不要设计架构,要看实际情况,设计架构的目的是为了解决软件系统的复杂度带来的问题。你在写一个图书管理系统的时候,按照常规的写法即可,没有三高要求,这时候不需要做架构设计,但是当这个图书管理系统管理的是全国所有图书馆时,用户是面向全国用户,那就需要架构设计,因为复杂度完全不同。
在讲设计原则之前,我想先聊一下架构到底是什么?架构和框架有什么关系?系统和子系统有亲戚关系吗?系统和平台那个大?那组件和模块呢?是兄弟吗?
-
系统和子系统
微信是一个系统,而朋友圈是微信这个系统中的一个子系统,微信支付是也是一个子系统。整体和部分的关系,是有关联的,各个子系统不是独立的。微信支付还可以再分为支付和结算等子系统,当从业务角度不能进行细分时,该子系统就是由组件或模块组成。
-
系统和平台
系统和平台不能进行大小比较,平台更加侧重于从业务角度来阐述,比如网易云音乐大数据平台,统一权限平台,工业物联网平台等,不同的业务场景来定义各个平台,平台可能是有一个或多个系统子系统组成。
-
模块和组件
日常对话中,会出现:系统有加密认证模块,平台里面已经有了单点登录模块,下载功能使用的是第三方组件。这里出现的模块和组件是一种泛指的说法,即单点登录可以本身是一个系统,但是在更大的系统中,其也可以是作为该系统的一个组成模块。
一般来说,我们的组件或者模块是在系统之下的,也就是系统由不同的组件或者模块组成,组件是可复用的单元,内敛的,比如我们写了一个DAO层的组件&#x