软件架构基础知识

/ 设计模式 / 没有评论 / 3020浏览

软件架构基础知识

软件系统架构

系统与子系统

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

子系统:子系统也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。子系统的定义和系统定义是一样的,只是观察的角度有差异,一个系统可能是另外一个更大系统的子系统。

模块、组件、服务

模块:是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往使用模块作为合成的单位

组件:自包含的、可编程的、可重用的、与语言无关的软件单元,组件可以很容易被用于组装应用程序中模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。

从逻辑的角度来拆分系统后,得到的单元就是“模块” ;从物理的角度来拆分系统后,得到的单元就是“组件” 。划分模块的主要目的是职责分离;划分组件的主要目的是单元复用

服务:服务和组件有某种相似之处:它们都将被外部的应用程序使用。两者之间最大的差异在于:组件是在本地使用的(例如Jar文件);而服务是运行起来的,要通过同步或异步的远程接口来远程使用(例如RESTFul接口、web service、消息系统、RPC,或者socket)

软件架构原则

解耦

分层

封装

架构图

业务架构图

使用者:CEO、CIO、CTO、产品总监

img

功能架构图

使用者:产品总监、产品经理

img

系统架构图

使用者:系统架构师

img

技术架构图

使用者:系统架构师

img

数据架构图

使用者:CTO、系统架构师、数据架构师

img

部署架构图

img