{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/2020-06-06-architecture-document/","result":{"data":{"markdownRemark":{"id":"cdcc8194-296f-5d70-beba-600969369e57","html":"<p><img src=\"/img/chemex.jpg\" alt=\"chemex\"></p>\n<p>架构文档是架构师的主要交付产物，由主要描述架构元素以及架构元素间关系的架构视图组成，体现了软件设计阶段不同相关方的利益诉求。</p>\n<h2>架构视图</h2>\n<p>软件架构={元素,形式,关系约束}<br>\n单一的视图无法完整的表达架构,因此需要具备完整的视图集。</p>\n<h3>4+1 视图模型</h3>\n<blockquote>\n<p>由 IBM 提出的业界比较出名的架构设计方案</p>\n</blockquote>\n<ul>\n<li>逻辑视图（Logical View），设计的对象模型（使用面向对象的设计方法时）。</li>\n<li>过程视图（Process View），捕捉设计的并发和同步特征。</li>\n<li>物理视图（Physical View），描述了软件到硬件的映射，反映了分布式特性。</li>\n<li>开发视图（Development View），描述了在开发环境中软件的静态组织结构。</li>\n<li>场景视图( scenarios),描述用例场景。</li>\n</ul>\n<p>逻辑视图、过程视图、物理视图、开发视图围绕场景世视图展开。</p>\n<h4>逻辑视图</h4>\n<ul>\n<li>相关方: 客户,用户,开发组织管理者。</li>\n<li>视角: 系统的功能元素,以及它们接口,职责,交互</li>\n<li>主要元素: 系统,子系统,功能模块,子功能模块,接口。</li>\n<li>用途: 开发组织划分成本进度的评估。</li>\n</ul>\n<h4>开发视图</h4>\n<ul>\n<li>相关者: 开发相关人员,测试人员。</li>\n<li>视角: 系统如何开发实现。</li>\n<li>主要元素: 描述系统的层,分区,包,框架,系统通用服务,业务通用服务,- 类和接口, 系统平台和相关基础框架。</li>\n<li>用途: 指导开发组织设计和开发实现。</li>\n</ul>\n<h4>物理视图</h4>\n<ul>\n<li>相关者: 系统集成商,系统运维人员。</li>\n<li>视角: 系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置。</li>\n<li>主要元素: 物理节点以及节点的通信。</li>\n</ul>\n<h4>过程视图</h4>\n<ul>\n<li>相关者: 性能优化,开发相关人员。</li>\n<li>视角: 系统运行时线程,进程的情况。</li>\n<li>主要元素: 系统进程,线程以及处理队列等。</li>\n</ul>\n<h4>场景视图</h4>\n<ul>\n<li>相关者: 用户,设计和开发人员。</li>\n<li>视角: 概括了架枃上最重要的场景(最典型或者最有风险)及其非功能性需求,通过这些场景的实现,闻明了架构的广度或众多架构元素运行的方式</li>\n</ul>\n<h2>软件建模</h2>\n<h3>什么是模型</h3>\n<p>模型是一个系统的完整的<code>抽象</code>。在落地之前对现实问题的考量，在系统产生之前表述是什么、要做什么，系统的设计就是在建模。</p>\n<blockquote>\n<p>架构师的职责是在系统投产之前，对将要做的系统有一个认知，把自己的想法通过模型图画出来就完成了系统的设计。架构师的职责和产出是一致的，关键在于对现实问题的抽象。</p>\n</blockquote>\n<h3>为什么要建造模型</h3>\n<ul>\n<li>验证想法是否可行</li>\n<li>与它人沟通</li>\n<li>保存最终的设计结果</li>\n</ul>\n<h3>何时、何处画图</h3>\n<h4>何时画图</h4>\n<ul>\n<li>讨论、交流时</li>\n<li>最终设计文档</li>\n</ul>\n<h4>何处画图</h4>\n<ul>\n<li>白板</li>\n<li>工具</li>\n</ul>\n<h3>UML</h3>\n<blockquote>\n<p>Unified Modeling Language, 统一建模语言</p>\n</blockquote>\n<h4>什么是 UML</h4>\n<p>以图形方式描述软件的概念  </p>\n<p>统一: 统一多种建模方式\n语言: 建模工具，用于交流沟通，有利于思考。  </p>\n<p>语言有方言， UML 也是有方言的。不强制要求，重点在于传达思想。</p>\n<h4>UML 7 种常用图形</h4>\n<ul>\n<li>用例图</li>\n<li>类图</li>\n<li>组件图</li>\n<li>时序图</li>\n<li>活动图</li>\n<li>状态图</li>\n<li>部署图</li>\n</ul>\n<h2>架构文档</h2>\n<h3>需求分析</h3>\n<ul>\n<li>用例图</li>\n<li>活动图，关键的流程</li>\n<li>状态图，核心状态，关键对象的状态转换</li>\n<li>时序图,系统级的外部系统</li>\n</ul>\n<h3>概要设计</h3>\n<ul>\n<li>部署图</li>\n<li>子系统级别的时序图</li>\n<li>系统级的活动图</li>\n<li>组件图</li>\n<li>组件时序图</li>\n</ul>\n<h3>详细设计</h3>\n<ul>\n<li>类图</li>\n<li>类时序图</li>\n<li>方法的活动图</li>\n<li>状态图</li>\n</ul>\n<h2>Reference</h2>\n<ul>\n<li><a href=\"https://www.ibm.com/developerworks/cn/rational/r-4p1-view/index.html\">4+1 视图</a></li>\n<li><a href=\"https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-uml/\">what is uml</a></li>\n</ul>","frontmatter":{"date":"June 06, 2020","title":"Architecture Document","description":"`看山是山，看山不是山，看山还是山。`","tags":["Architecture","UML"]}}},"pageContext":{"id":"cdcc8194-296f-5d70-beba-600969369e57"}}}