0
点赞
收藏
分享

微信扫一扫

复原 IP 地址——力扣93

you的日常 2023-08-05 阅读 50
架构

如何成为一名架构师,架构师成长之路_golang架构师成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客

如何画架构图_个人渣记录仅为自己搜索用的博客-CSDN博客

如何画好一张架构图?(内含知识图谱) - 知乎

什么是架构?要表达的到底是什么?

Linus 03 年在聊到拆分和集成时有一个很好的描述:

我理解这里描述的系统拆分就是架构的过程,基本出发点是为了效率,通过架构的合理拆分(无论是空间还是时间上的拆分)最终目的让效率最大化。那到底什么是架构,其实没有完全统一且明确的定义,如下三个定义可以参考。

在百度百科上的定义:

在 Wikipedia 上的定义:

ISO/IEC 42010:20072 中对架构有如下定义:

这三个定义也是见仁见智,但是我们基本可以得出:架构体现的是整体结构和组件之间的关系。

IEEE对于软件系统架构的定义:

organization 是组织的意思,这里理解为组织结构。

直译:架构是一个系统在其组件层面基本组织结构表现,包括系统内部组件之间的关系、组件与外部的关系以及决定其设计和演进的原则。

《系统架构-复杂系统的产品设计与开发》一书中用最简单的话来描述架构:

“对系统中的实体及实体之间的关系所进行的抽象描述。”

(第九页,出自Edward Crawley等人专著论文《The Influence of Architecture in Engeering Systems》)

以上两种表述,第一种措辞严谨精确,可用于书面定义;第二种更直白容易理解,可用于日常表达。

架构和抽象

Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话:编程中最重要的三件事是:抽象,抽象,抽象

 抽象的本质其实是 抽出共同的(类似的)字段 + 分类 + 取名概念, 类比 界门纲目科属种概念的提出.

本质是:

  • 抽象角度其实也是分类的角度,角度不同,会导致完全不同建模方向和结果;
  • 抽象的角度就是建模的方向和目的(“屁股决定脑袋”)。

重新回到我们前边的两个问题,业务建模中我们谈到了归类,按什么去归类,答案呼之欲出,按我们的业务流程去归类、按客户的角色去归类,按不同流程复用的东西去分类( phil补充), 又回到了那个最初始的问题:客户是谁?核心诉求是什么?

 -----------------------------------------------------------------------------

--------------延申-----如何画软件架构图?--------------------------

 -----------------------------------------------------------------------------

软件架构图的目的是将设计表达出来,而一套设计包含多个维度,一个图基本上表达不完,那就需要多个图,需要哪些图?

画架构图目前有几种选择:

1、遵循一些标准体系,这些标准要求应该有哪些东西,我们就画哪些东西,这里列两个标准:

TOGAF: 企业架构领域的一个标准框架,定义了四种图,从不同维度来表现一套架构设计,包括业务架构、技术架构、数据架构、应用架构,以下引用摘自WIKI

RUP:  是由Rational Software公司开发的一套搞软件工程方法,其中有一块做软件架构设计的方法使用的是一篇论文中的内容——4+1视图,看了一圈,比较抽象,我也不太理解,就不说了,具体可以自行查询

我个人更倾向于TOGAF的四种图,因为容易理解:

软件架构的定义基本上就是说有哪些组件,他们之间的关系。但是组件这个定义比较泛,在不同的维度组件上表现为不同的东西,TOGAF的四种图就是从四个维度对软件架构定义的套用:

从业务维度上来说,至少要描述清楚有哪些系统,有什么功能,他们之间的关系是怎么样的等等

从技术整体维度上来说,由哪些 中间件/子系统/技术组件 组成,他们之间的关系是怎么样的等等

从单个应用程序维度上来说,里用到了什么开发技术,做了什么分层,它又会把数据存到哪等等

从数据维度上来说,有哪些数据,存在哪,如何存,他们之间如何转化、流转的等等

2、自己画,能说清意思就行

说实在的,我们画图的目的就是表达清楚自己设计的内容,对老板,对产品、对研发、对运维,只要能达到目的也没必要非得纠结这些目前还没达成统一的标准。自己画就行

最后,画图的时候不要想着把所有细节都能弄进去。对于一个庞大的系统,不要妄想几张图就说清所有的事情;也不要画几张图就撒手不管做起ppt架构师了,架构图固然重要(错误的设计会导致项目组很难受,甚至导致项目失败,试错成本相当高),引导团队进行架构的落地过程也相当重要,这是对你架构设计质量以及你个人技术能力的检验。

3、C4模型

C4模型是一种更为容易理解的模型,学习成本低,表达效果好,直接上链接

用于软件架构的C4模型_架构_Simon Brown_InfoQ精选文章

https://www.infoq.com/articles/C4-architecture-model/

举报

相关推荐

0 条评论