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

本文探讨了软件架构设计的重要性,特别是在处理复杂度时的作用。通过区分系统与子系统、系统与平台、模块与组件、框架与架构的概念,阐述了架构设计的基本原理。架构设计关注系统的顶层结构,定义子系统、组件及其协作规则,以提高系统扩展性和降低沟通成本。
最低0.47元/天 解锁文章
4099





