做药的常用网站,网站权重优化,网站域名解析设置,侧边导航 wordpress如何画架构图_个人渣记录仅为自己搜索用的博客-CSDN博客 什么是架构#xff1f;要表达的到底是什么#xff1f;
Linus 03 年在聊到拆分和集成时有一个很好的描述#xff1a; I claim that you want to start communicating between independent modules no sooner than you…如何画架构图_个人渣记录仅为自己搜索用的博客-CSDN博客 什么是架构要表达的到底是什么
Linus 03 年在聊到拆分和集成时有一个很好的描述
I claim that you want to start communicating between independent modules no sooner than you absolutely HAVE to, and that you should avoid splitting things up until you really need to, because that communication complexity often swamps the complexity of the actual pieces involved in it.让我们认识到一种现象把 复杂系统拆分成模块似乎并没有降低 整个系统的复杂度。它降低的只是 子系统的复杂度。而整个系统的复杂度反而会由于拆分后的模块之间不得不进行 交互变得更加复杂。 我理解这里描述的系统拆分就是架构的过程基本出发点是为了效率通过架构的合理拆分无论是空间还是时间上的拆分最终目的让效率最大化。那到底什么是架构其实没有完全统一且明确的定义如下三个定义可以参考。
在百度百科上的定义
架构又名软件架构是有关软件 整体结构与组件的 抽象描述⽤于指导⼤型软件系统各个方面的设计。 在 Wikipedia 上的定义 Architecture is both the process and the product of planning, designing, and constructing buildings or any other structures. ISO/IEC 42010:20072 中对架构有如下定义
The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. 这三个定义也是见仁见智但是我们基本可以得出架构体现的是整体结构和组件之间的关系。 IEEE对于软件系统架构的定义 Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE 1471] organization 是组织的意思这里理解为组织结构。
直译架构是一个系统在其组件层面的基本组织结构表现包括系统内部组件之间的关系、组件与外部的关系以及决定其设计和演进的原则。 《系统架构-复杂系统的产品设计与开发》一书中用最简单的话来描述架构
“对系统中的实体及实体之间的关系所进行的抽象描述。”
第九页出自Edward Crawley等人专著论文《The Influence of Architecture in Engeering Systems》 以上两种表述第一种措辞严谨精确可用于书面定义第二种更直白容易理解可用于日常表达。 架构和抽象
Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话编程中最重要的三件事是抽象抽象抽象。 抽象的本质其实是 抽出共同的(类似的)字段 分类 取名概念, 类比 界门纲目科属种概念的提出. 本质是
抽象角度其实也是分类的角度角度不同会导致完全不同建模方向和结果抽象的角度就是建模的方向和目的“屁股决定脑袋”。
重新回到我们前边的两个问题业务建模中我们谈到了归类按什么去归类答案呼之欲出按我们的业务流程去归类、按客户的角色去归类按不同流程复用的东西去分类( phil补充), 又回到了那个最初始的问题客户是谁核心诉求是什么 -----------------------------------------------------------------------------
--------------延申-----如何画软件架构图-------------------------- -----------------------------------------------------------------------------
软件架构图的目的是将设计表达出来而一套设计包含多个维度一个图基本上表达不完那就需要多个图需要哪些图 画架构图目前有几种选择
1、遵循一些标准体系这些标准要求应该有哪些东西我们就画哪些东西这里列两个标准 TOGAF: 企业架构领域的一个标准框架定义了四种图从不同维度来表现一套架构设计包括业务架构、技术架构、数据架构、应用架构以下引用摘自WIKI 开放组体系结构框架英语The Open Group Architecture Framework缩写TOGAF是一个企业架构框架它提供了一种设计规划实施和管理企业信息技术架构的方法[2]。TOGAF是一种高层设计方法。 它通常被建模为四个级别业务应用程序数据和技术。 它在很大程度上依赖于模块化标准化以及已有的经过验证的技术和产品。 RUP: 是由Rational Software公司开发的一套搞软件工程方法其中有一块做软件架构设计的方法使用的是一篇论文中的内容——41视图看了一圈比较抽象我也不太理解就不说了具体可以自行查询 我个人更倾向于TOGAF的四种图因为容易理解
软件架构的定义基本上就是说有哪些组件他们之间的关系。但是组件这个定义比较泛在不同的维度组件上表现为不同的东西TOGAF的四种图就是从四个维度对软件架构定义的套用
从业务维度上来说至少要描述清楚有哪些系统有什么功能他们之间的关系是怎么样的等等
从技术整体维度上来说由哪些 中间件/子系统/技术组件 组成他们之间的关系是怎么样的等等
从单个应用程序维度上来说里用到了什么开发技术做了什么分层它又会把数据存到哪等等
从数据维度上来说有哪些数据存在哪如何存他们之间如何转化、流转的等等 2、自己画能说清意思就行
说实在的我们画图的目的就是表达清楚自己设计的内容对老板对产品、对研发、对运维只要能达到目的也没必要非得纠结这些目前还没达成统一的标准。自己画就行 最后画图的时候不要想着把所有细节都能弄进去。对于一个庞大的系统不要妄想几张图就说清所有的事情也不要画几张图就撒手不管做起ppt架构师了架构图固然重要错误的设计会导致项目组很难受甚至导致项目失败试错成本相当高引导团队进行架构的落地过程也相当重要这是对你架构设计质量以及你个人技术能力的检验。 3、C4模型
C4模型是一种更为容易理解的模型学习成本低表达效果好直接上链接
用于软件架构的C4模型_架构_Simon Brown_InfoQ精选文章
https://www.infoq.com/articles/C4-architecture-model/