模块一
什么是架构
系统 &子系统
【系统】
泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”、“整体”或“联盟”。-- 来自《维基百科》
【子系统】
由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。-- 来自《维基百科》
分解为:
关联
一群有关联的个体
规则
个体之间按照规则运作
能力
系统能力超越个体能力
分层
自顶向下逐层分解
模块 vs 组件
【软件模块(Module)】
是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模 块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。
-- 来自《维基百科》
【软件组件(Component)】
自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。 -- 来自《维基百科》
【组件】(独立工具,强调跨项目可用)
组件的本质是一件产品,独立性很强;组件的核心是复用,与其它功能又有强依赖关系。组件是独立工具,强调跨项目可用,模块强调设计某个项目里的功能区域,二者没有上下级包含关系,模块可以由多个组件构成,组件也通常由多个模块实现。但是,组件是独立产品而模块不是。
如:插件,控件(按钮,列表框,对话栏)
【中间件】(主要应用在计算机资源管理和网络通讯)
中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。
是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。它位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件。这样相连接的系统,即使具有不同的接口,但通过中间件相互之间仍能交换信息;典型的云化中间件包括分布式消息队列、分布式缓存、分布式锁、分布式 ID 等。中间件与操作系统、数据库管理系统并称基础软件的“三驾马车”;与组件、模块、套件和插件相比,其复用性的约束更多的体现上计算机资源管理和网络通讯上。
如:spring boot 里的 tomcat 应用服务器
【插件】
是一种遵循一定规范的应用程序接口编写出来的程序,基于特定平台才可使用。插件的数量非常多。
插件是是组件的一个子类,就是将组件中具有某些特点的组件归为插件,这些特点是:益于与系统分离,接口明晰,可以替换的程序模块。
如:spring boot 里的 maven 插件
框架 vs 架构
【软件框架(Software Framework)】
通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。 -- 来自《维基百科》
【软件架构(Software Architecture)】
指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。 -- 来自《维基百科》
4R 架构
Rank + Role + Relation + Rule
软件架构指软件系统的顶层结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。
分层架构 vs 架构分层
分层架构是一种可扩展架构模式,架构分层是指架构 是自顶向下,逐步细化!
4R 架构应用
思维导图
随堂测验
模块一第 1 课-随堂测验
【判断题】
1. 系统能力等于多个个体能力之和。
2. 从逻辑角度拆分系统可以得到模块。
3. MySQL 可以是系统的一个模块,也可以是系统的一个组件。
答:错误,MySQL 是组件,不算模块
4. 软件架构和建筑架构没什么区别。
【思考题】
对比 4R 架构定义和维基百科架构的定义,主要差别是什么?
版权声明: 本文为 InfoQ 作者【净意】的原创文章。
原文链接:【http://xie.infoq.cn/article/7d72a369b992ad13e60517610】。未经作者许可,禁止转载。
评论