架构设计深入学习02--概念架构与细化架构

越努力越幸运,越磨砺越光芒 越努力越幸运,越磨砺越光芒     2022-08-18     353

关键词:

胜兵先胜而后求战,败兵先战而后求胜—《孙子兵法》。

这部分有些内容比较陈旧,但原理和思路还是一致的。

 

通常来说,概念架构满足"架构=组件+交互"且只关注高层组件,之后对齐进行笼统的界定,给为他们之间的关心,此外,概念架构不涉及接口细节。这儿需要牢记的是,重大需求塑造概念设计,这儿的重大需求就是预架构中的功能、质量及约束3类需求中的关键部分。

 

概念架构阶段的3个步骤

初步设计:基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计,对于新系统很重要。

高层分割:对系统黑盒进行切分,可以借助架构模式。

考虑非功能需求,通过"目标-场景-决策表"分析非功能需求。

 

初步设计的主要任务是发现职责,可以借助"职责协调链"。在分析直接协调链时,首先需要引入一个工具,鲁棒图,其包含3中元素,分别是边界对象,控制对象和实体对象。(由于VISIO不支持,这个图就忽略了,可以用序列简图表述)

高层分割:首先一个系统分割为项目交互的几个系统,之后将每个系统分化为多个子系统(不必须,一切都需根据情况,不要过度设计)。这儿的子系统通常就是分层(layer),如下图所示。

 

Tip: Layer表示逻辑分层, Tier表示物理分层(比如数据库服务器,Web服务器,应用服务器等的分离)。

考虑非功能需求:比如对于持续可用性的要求,就需要数据库服务器配置故障转移集群,Web服务器负载均衡。

 

架构设计一门解决复杂问题的艺术,因此"分而治之"的思想一定不能少,在该阶段,通常使用多视图的方法来展示架构思想,其特点是:利于思考(分而治之),便于交流(分离了关注点)。得到广泛认可的是RUP4+1视图,不过这儿重要的是思想(每个思维角度,一个视图),不是必须要提供指定的4+1视图(逻辑视图、部署视图、进程视图、实现视图和用例图),最后的Tip中展示了自身日常做项目中的视图方式。

在此,将按照温昱思路,介绍一下他的五视图,作为实践的参考。

 

逻辑架构:主要工作包括划分子系统、定义接口等,通常借助接口-包图来表述。划分子系统的方法包括分层的细化、分区的引入、机制的提取。

其相关原则为:职责不同的单元划归不同的子系统;通用性不同的单元划归不同的子系统;需要不同开发技能的单元划归为不同子系统(前天、后台、高保真);兼顾工作量的相对均衡,进一步划分太大的子系统(项目管理的80小时原则)。此外,定义接口时一定不能自说自话,需要足够的沟通。

运行架构:在涉及大量并发时,需要考虑,不常用。

开发架构:这部分主要是开发语言、相关框架的选择,项目文件的结构和形式,在实际中很重要,统一和合理的结构可以大幅挺好开发和沟通效率。在软件开发中,维护成本实际上是最大的,因此合理的重用非常重要,其优先级为重用完成APP-》重用框架-》重用库和程序=》重用标准算法和设计模式。

物理架构:这部分的思维重点是"开销"和"争用",因此架构的目标就是降低开销和避免征用。

数据架构:数据的分布方案是一个难点,通常可以借助一下6个策略。

3个应用原则:把握系统特点,决定分布策略(合适原则);不同分布策略,可以综合应用(综合原则);对"对么""好么"进行评估(优化原则)。

 

Tip:

在实际的项目中,实际的架构情况如下图所示,至于细节的服务契约定义(依据序列图发现接口)和数据库的详细设计(依赖PRD发现所需字段)等都可以和一线开发经理一起决定。

 

参考资料

  1. 温昱. 一线架构师实践指南[M]. 北京:电子工业出版社, 2011.

《一线架构师实践指南》之细化架构有感

第11章细化架构的故事细化架构和概念架构的差异接口细化架构接口,细化架构后会出现明确的接口定义,在概念架构中的初级分层后,为了让解决问题更加具象,所以在细化架构这个迭代螺旋式阶段,我们要给出明确的接口。... 查看详情

《深入理解tensorflow架构设计与实现原理》_彭靖田学习材料整理

...剖析了TensorFlow。书中首先介绍了TensorFlow设计目标、基本架构、环境准备和基础概念,着重介绍了以数据流图为核心的机器学习编程框架的设计原则与核心实现,紧着还将TensorFlow与深度学习相结合,从理论基础和程序实现这两个... 查看详情

一线架构师实践指南第三章读后感

第三章主要讲述了refinendarchitecture阶段,包含了细化架构和逻辑架构的讲解。细化架构保证保证为开发提供足够的指导和限制,从概念架构到细化架构,先设计概念架构,构思关键问题的解决策略;再进行细化架构的设计。作者引... 查看详情

refinedarchitecture阶段读后感

一线架构师实践指南第三部分RefinedArchitecture阶段读后感 RefinedArchitecture阶段最开始以细化架构入手阐述了如果一个项目的系统架构(包括理论基础)尚未确定,就不应该进行此系统的全面开发的道理从而表达细化架构的重要性... 查看详情

一线架构师第三部分——细化架构

  架构师的工作是领导团队的开发,但很多情况下,架构师是坐镇帷帐之中而决胜千里之外的,拥有千里的运筹能力或许就是能让项目团队一路走向成功的重要因素。对于架构师来说需求分析、分割层次、对象建模这些都是他... 查看详情

架构设计杂谈005——架构分类

架构分类-1没有统一的标准有按实现层次划分的、有按关注方向划分的、有按软工阶段划分的、有按视图类型划分的、有按技术实现风格划分的……等等,当然有很多是交叉重叠的按实现层次划分●移动架构●前端架构●系统架... 查看详情

架构设计初识

由于各种原因,好久没有写文章了。最近学习了一下架构设计方面的知识,拿来和大家分享一下。1.架构是什么架构是什么,大家能都说出一二,每个人对架构的理解又不尽相同。但对于架构,我们有几个模糊相似的概念需要知... 查看详情

架构设计杂谈005——架构分类

架构分类-1     没有统一的标准有按实现层次划分的、有按关注方向划分的、有按软工阶段划分的、有按视图类型划分的、有按技术实现风格划分的……等等,当然有很多是交叉重叠的  按实现层次划分... 查看详情

java分布式一些概念理解

...分享一下!首先推荐4本书(京东就有)大型分布式网站架构设计与实践大型网站技术架构:核心原理与案例分析》,大型网站系统与Java 查看详情

架构设计初识

由于各种原因,好久没有写文章了。最近学习了一下架构设计方面的知识,拿来和大家分享一下。1.架构是什么架构是什么,大家能都说出一二,每个人对架构的理解又不尽相同。但对于架构,我们有几个模糊... 查看详情

一线架构—细化架构

概念架构阶段的3个步骤初步设计:基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计,对于新系统很重要。高层分割:对系统黑盒进行切分,可以借助架构模式。考虑非功能需求,通过"目标-场景-决策表"分析非功能... 查看详情

[架构之路-99]:《软件架构设计:程序员向架构师转型必备》-9-确定关键性需求与决定系统架构的因素

第9章确定关键性需求与决定系统架构的因素9.1概念架构是什么9.1.1概念架构是直指目标的设计思想、重大选择9.1.2案例1:汽车电子AUTOSAR——跨平台复用NA9.1.3案例2:腾讯QQvideo架构——高性能NA9.1.4案例3:微软MFC架构—... 查看详情

深入理解qtcreator的插件设计架构(代码片段)

...59:02+08:00"draft=truetitle="深入理解QtCreator的插件设计架构"blog="blog.qizr.tech"+++基于插件的设计好处很多,把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现.扩展功能与框架以一种很松的方式耦合,... 查看详情

[架构之路-100]:《软件架构设计:程序员向架构师转型必备》-10-细化架构设计

第10章细化架构设计10.1从2视图方法到5视图方法10.1.1回顾:2视图方法10.1.2进阶:5视图方法备注:不同的视图,就是从不同的维度在看目标软件系统。相同的系统,不同的视角,看到的结果是不相同的。就... 查看详情

架构设计概念

什么是架构设计?  架构定义大的系统结构。是对需求的转化,上接业务,下接技术决策。架构设计包括静态架构设计和动态架构设计。静态架构设计:完成系统功能性需求,系统的整体结构动态架构设计:通用问题的解决方... 查看详情

refinedarchitecture阶段读后感

...方案和“规约级”解决方案。RefinedArchitecture(细化架构)属于架构设计,不能与DetailedDesign(详细设计)相混淆。架构领域最喜欢将建筑设计的多视图方法与软件架构设计的多视图方法做类比。实际意义多视图方法的价值... 查看详情

我眼中的架构设计

我眼中的架构设计1.架构与设计2.没有最好,只有最适合3.架构设计!=设计模式4.设计思维的养成5.事例实践5.1.需求分析5.2.规范与约束5.3.细化与评估5.4.技术选型5.5.框架搭建5.6.推进与支持6.架构设计对我的影响1.架构与设计... 查看详情

系统架构设计师-第一篇-系统架构师的概念及其定义

 1.概念      软件系统架构是关于软件系统的结构,行为和属性的高级抽象。在描述阶段,其对象是直接构成系统的抽象组件以及各个组件之间的连接规则。特别是相对细致的描述组件之间的通讯。在实... 查看详情