关于系统架构你不知道的那些事之了解几个常见的名词

前言

今天梳理了与架构有关的几个容易混淆的概念,包括系统与子系统、模块与组件、框架与架构,解释了架构的定义,希望对各位有所帮助。

系统与子系统

关于系统,维基百科的定义如下:

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

其中有的关键词是:
1. 关联:系统是由一群有关联的个体组成的,没有关联的个体在一起不能成为一个系统。
2. 规则:系统内的个体需要按照指定的规则运作,而不是单个个体各自为政。规则规定了系统内个体分工和协作的方式。
3. 能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。

子系统的定义

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

其实子系统的定义和系统定义是一样的,只是观察的角度有差异,一个系统可能是另外一个更大系统的子系统。

举例分析

  1. 微信本身是一个系统,包含聊天,登录、支付、朋友圈等子系统。
  2. 朋友圈这个系统有包括动态、评论、点赞等子系统。
  3. 评论这个系统可能又包括防刷子系统,审核子系统、发布子系统、存储子系统
  4. 评论审核子系统不再包含业务意义上的子系统,而是包括各个模块或者组件,这些模块或者组件本身也是另外一个维度上的系统。例如,MySQL,redis等存储系统,但不是业务子系统。

模块与组件

维基百科的定义

软件模块(Module)是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。

软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。

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

两者的对比

模块组件
划分的角度逻辑角度物理角度
划分的目的职责分离单元复用

解释:
学生信息管理系统
逻辑的角度:登录注册模块、个人信息模块
物理的角度:Nginx、Web服务器。MySQL

框架与架构

框架的定义

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

提炼关键词:

  1. 框架是组件规范:例如,MVC就是一种常见的开发规范,类似的还有MVP、MVVM、J2EE等框架。
  2. 框架提供基础功能的产品:例如,Spring MVC是MVC的开发框架,除了满足MVC的规范,Spring提供了很多基础功能来帮助我们实现功能,包括注解(@Controller等)、Spring Security、Spring JPA等很多基础功能。

架构的定义

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

框架关注的是“规范”,架构关注的是“结构”
为什么框架和架构的定义会比较模糊不定的。根本原因隐藏域架构的定义中,关键就是“基础结构”这个概念并没有明确说是从什么角度来分解的。采用不同的角度或者维度,可以将系统划分为不同的结构。
从业务逻辑的角度分解,“学生管理系统”的架构是:
在这里插入图片描述

从物理部署的角度分解,“学生管理系统”的架构是:
在这里插入图片描述

从开发规范的角度分解,“学生管理系统”可以采用标准的MVC框架来开发,因此架构又变成了MVC架构:
在这里插入图片描述

这些“架构”,都是“学生管理系统”正确的架构,只是从不同的角度来分解而已,这也是 IBM 的 RUP 将软件架构视图分为著名的“4+1 视图”的原因。

#重新定义架构

软件架构指软件系统的顶层结构。

  1. “系统是一群关联个体组成”,这些“个体”可以是“子系统”“模块”“组件”等;架构需要明确系统包含哪些“个体”。

  2. 系统中的个体需要“根据某种规则”运作,架构需要明确个体运作和协作的规则。

  3. 维基百科定义的架构用到了“基础结构”这个说法,我改为“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆在一起导致架构层次混乱。

总结

今天梳理了与架构有关的几个容易混淆的概念,包括系统与子系统、模块与组件、框架与架构,解释了架构的定义,希望对各位有所帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻狂书生FS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值