架构设计是门艺术。
一个优秀的程序员要想成为一名优秀的架构设计师,就改变编程的思维,学会使用架构设计的思维方式。
架构设计的思维方式有以下几种:
1. 分而治之的思维方式
分而治之,是把一件笼统模糊的事项变得清晰,把复杂的事项变得简单的思维方式。而这正是我们进行架构设计首要达成的目标。
架构设计师必须要学会架构分解,将软件的功能和非功能需求在架构的多个层面进行分解。
架构分解的时机要恰当,不要过早分解、也不要过度分解,通常的分解时机就是架构构造和演变时。
架构分解应当遵循以下原则:
高内聚、低耦合。
层次性。分解的顺序一般是系统→子系统→模块→组件→类。
正交原则。分解出的架构元素符合正交原则。
抽象原则。分解出的架构元素应当是架构设计师抽象的结果。
稳定性原则。应当将稳定架构元素和不稳定的架构元素独立。
复用性原则。架构设计应当和软件一样,要考虑复用和可复用的设计。
2. 聚而合之的思维方式
分而治之的目的是降低难度,但软件的设计和实现最终还是要将分解的各个元素组合在一起。所以,不能为了分解而分解,在分解的过程中也要考虑将来的集成。毕竟如果分解后的内容无法集成在一起,分解得再详细,再清晰也没有任何意义。
3. 动静分离的思维方式
动静分离的思维方式要求将系统中的静态资源与动态资源分离,同时又要注意二者结合的架构设计。因为动态的流程和用例无法离开静态的数据和类就能自行完成的。
4. 复用的思维方式
复用是最佳的软件工程实践,没有之一。复用可以给我们带来以下好处:
较高的生产率。
较高的系统质量。
改善系统的可维护性。
所以,我们在进行架构设计时也需要使用复用思维,将各个模块需要用到的共性功能抽取为可复用的共性组件。
我们可以将复用分为常规复用和系统层复用。
其中常规复用又可分为代码复用、算法复用、数据结构的复用;系统层复用又可分为设计复用、分析复用。
5. 分层的思维方式
分层是将各架构元素通过分层重新构建的过程,各层之间要保持独立设计和松耦合。
分层的思维方式可以使软件架构具有如下优点:
开发人员可以只关注某一层。
可以很容易地用新的实现来替换原有层的实现。
可以降低层与层之间的依赖。
有利于标准化。
有利于各层逻辑的复用。
6. 模式的思维方式
架构模式是一套成熟的、通用的、可重用的解决方案,在进行架构设计时,架构设计师要能够根据业务需求来挑选最适合的架构模式。
架构模式一般有分层模式、客户端-服务器模式、主从设备模式、管道-过滤器模式、代理模式、P2P模式、事件总线模式、MVC模式、黑板模式和解释器模式等。
7. 抽象的思维方式
抽象包括两个层面的内容:一个层面是将各种类似场景的实现归纳成一种规则或方法出来供以后的设计用;另一个层面是将非类似场景中的共性内容总结出来,进一步抽象为类似的东西。
8. 结构化的思维方式
结构化是一种注重结构完整性的思维方式,它强调在分析问题的过程中,要考虑整体性,不要马上陷入细节。结构化思维的核心在于对问题进行正确界定的基础上(以终为始),对问题的构成要素进行合理分类,并对其中的重点环节进行分析(要事第一)。
结构化应遵循以下原则:
以终为始。
知道设计的目标,根据目标倒推需要完成的工作和任务。
不要先入为主,避免陷入细节。
各架构元素相互独立。
各架构元素无遗漏。
迭代的思维方式
没有最好,只有更好。架构设计也要随着业务需求的变化不断迭代和演化。
这正是:
架构设计不简单,思维方式数半天
学习前人获经验,优秀架构不再难
责编AJX
相关推荐
8月,由南京市政府主办的“2022年度南京市独角兽、瞪羚企业发布会”在江北新区举行,会议揭晓2022....
MEMS 发表于 08-08 11:19
•
181次
阅读
安装程序会自动安装“TIA Portal Openness V13 SP1”附加软件包。
基于深度学习的检测方法,可以正确的检测螺纹孔,检测不合格产品时可以发出报警信号(OK/NG),良好的....
发表于 08-08 10:47 •
11次
阅读
这项工作不仅报道了一维π-π堆积诱导的高效率RTP,为探索超分子聚集体的高效率RTP提供了重要的模型....
鸿之微 发表于 08-08 09:49
•
43次
阅读
内存是计算机最重要的资源之一,内存管理是操作系统最重要的任务之一。内存管理并不是简单地管理一下内存而....
域控制架构的出现,带来了两大好处,一是可扩展的集中式软件开发,不仅简化了功能域中的软件集成,还能高效....
电子发烧友网 发表于 08-08 09:09
•
67次
阅读
为了显示自己的技巧,也在自己的程序中用过几次。渐渐发现这样的技巧带来的好处是有代价的,破坏了程序的结....
发表于 08-05 11:35 •
75次
阅读
一、编程软件简介
天启编程软件是一款为软硬件一体化青少年编程平台。既可以拖动图形化积木编程,还可以使用Python/C++等高级...
发表于 08-05 10:37 •
6837次
阅读
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,....
本章对 SSM 及其 SSM 的发展历程及 SSM 在哪些方面能够帮助软件开发企
业等方面做一个简....
发表于 08-04 17:47 •
23次
阅读
进行项目开发、构建产品框架的时候,最开始需要考虑的就是采用哪种通信方式让软件可以访问外部设备(简称外....
感知层主要实现物体的识别与感知功能,主要包括各类传感器(包括读卡器),利用传感器获取实物影像或编码图....
用友是全球领先的企业云服务与软件提供商,致力于用创想与技术推动商业和社会进步,通过构建和运行全球领先....
IBM中国 发表于 08-03 10:35
•
931次
阅读
越来越多的医疗植入物与互联网相连。该连接允许医疗服务提供商下载数据,程序员更新软件。这种连接可能使它....
近日,江苏国光信息产业股份有限公司研发的智慧显示屏问世,新产品在软硬一体化升级后,提供了海量信息流传....
润和软件 发表于 08-03 09:46
•
125次
阅读
每个 RPU 处理器都有 1 个 DBGDRAR 寄存器,其中包含 CoreSight 根 ROM ....
王涛 发表于 08-02 15:57
•
106次
阅读
“部分旧产品可能未提供下述 WDQS 控制信号”。但是,为了防止出现写操作前同步信号相关故障,强烈建....
李娟 发表于 08-02 15:54
•
107次
阅读
日前,国内知名车载软件方案商蓝马舱行智能科技(上海)有限公司(以下简称:Landmark)与新晋车载....
发表于 08-01 10:49 •
94次
阅读
汽车供应商和原始设备制造商正大力投资软件研发工作,以期增加新的功能和特性,从而实现自主性、电气化和连....
发表于 08-01 10:05 •
91次
阅读
蓝牙®通过智能手机将我们与世界相连。我们可与门锁、恒温器甚至我们的汽车对接。但是所有蓝牙都是一样的吗....
发表于 08-01 09:55 •
38次
阅读
Linux 已经变成了如此庞大的代码和补丁组合,以至于相对容易放入编写良好的恶意软件。
算一挂 发表于 07-30 16:55
•
131次
阅读
通常,公司只是没有为手头的任务做好准备,并且从一开始就在打一场失败的战斗。
发表于 07-30 16:41 •
9次
阅读
云计算太大而不能消失,但又不会太大而不能倒下。我们需要创建一个几乎不可能被渗透的完全加密和经过身份验....
李敏 发表于 07-30 16:32
•
108次
阅读
麻省理工学院(MIT)的仿生学实验室最近让迷你猎豹机器人(Mini Cheetah)的速度打破了记录....
发表于 07-30 15:35 •
146次
阅读
7月30日,由康尼机电承接站台门项目的凤凰磁浮线正式通车运营!
康尼机电 发表于 07-30 15:16
•
270次
阅读
上一期的教程给大家介绍了Device Studio应用实例之STEMS应用实例上半部分的内容,本期将....
鸿之微 发表于 07-30 11:06
•
94次
阅读
诚迈科技Fusion SOA平台的中间件层,它是该平台最核心的组成部分,位于服务层以下,操作系统层以....
发表于 07-30 10:22 •
140次
阅读
在前面几节芝识课堂中我们详细介绍了微控制器的基本知识、软件和硬件以及内核的技术细节,在我们实际应用微....
东芝半导体 发表于 07-30 10:01
•
118次
阅读
随着道路上电动汽车数量的增加,汽车制造商必须高效、环保地管理电池的整个生命周期。在欧洲,已经发布了一....
发表于 07-29 16:36 •
29次
阅读
J-Scope是Segger推出的一款免费软件,用于MCU运行时,实时显示数据的波形。
在这个完整的指南中,物联网开发人员必须最终建立他们为物联网软件开发设定现实和动机的目标。 软件开发通....
发表于 07-28 17:40 •
32次
阅读
专家、医生和科学家表示,为了限制冠状病毒感染,人们在社交接触中应保持至少 1 米的人际社交距离。但是....
发表于 07-28 16:29 •
31次
阅读
数字电源是一种系统,可让您使用针对电源设备的特殊控制技术转换能量。在数字电源系统的设计中,主要目标是....
发表于 07-28 14:56 •
28次
阅读
随着汽车电子技术的飞速发展,ADAS系统、高清车载信息娱乐系统、车联网系统、云服务及大数据等新兴技术....
Eplan是一款专为电气工作人员打造的专业自动设计软件是电气领域中真正的计算机辅助工程CAE工具,可....
PLC技术圈 发表于 07-28 11:08
•
326次
阅读
第二,就是文首提到的能耗比、热效能、算力密度。不同方向的应用当前对“效率”都越来越看重,不同规模的设....
在6000亿美元的机遇中,半数以上将来自汽车、交通运输和物流行业(约64%);19%来自制造业;13....
发表于 07-28 09:22 •
148次
阅读
根据《上海市经济信息化委关于组织推荐2021年度“专精特新”企业的通知》(沪经信企〔2021〕539....
上扬软件 发表于 07-27 09:36
•
241次
阅读
无线电源解决方案开发商 WiBotic 宣布推出 Commander,这是一个旨在改善能源管理的软件....
王桂英 发表于 07-26 17:34
•
158次
阅读
总部位于波士顿的人工智能软件公司 Neurala 最近宣布在意大利成立其欧洲子公司 Neurala ....
发表于 07-26 16:53 •
133次
阅读
量子计算机的出现,需要一定程度的软件解决方案,为每个人的量子开发环境提供必要的基础。IBM 凭借其最....
李继明 发表于 07-26 15:56
•
178次
阅读
如果芯片设计有一张脸,它就会有一两道皱纹,尤其是由于硬件和软件验证日益复杂的挑战而造成的皱纹。
大家在调试气伺服焊钳时,可能经常遇到这个故障"Zange E1 ausserhalb Softwar....
日前,图森未来发布下一代真实感仿真系统原型。该系统旨在解决L4级别自动驾驶系统中端到端仿真中传感器数....
图森未来 发表于 07-26 14:39
•
298次
阅读
会上发布了“2022年第一批智慧副中心建设应用场景需求”,其中涉及副中心感知体系、数字孪生(规、建、....
千方科技 发表于 07-26 11:46
•
226次
阅读
本专题将介绍一种量子化学与分子力学结合的方法(QM/MM方法),该方法既包括量子化学的精确性,又利用....
鸿之微 发表于 07-26 09:55
•
185次
阅读
对于一个硬件产品而言,大批量的生产交付才能实现其最大的商业价值。
无论是在工业网络环境中,还是在普通的企业网络环境中,交换机的理线都是一个问题。但在工业网络环境下,设....
电子发烧友网 发表于 07-25 15:49
•
140次
阅读
电子产品能否做稳定,硬件至关重要,因为硬件设计上的不稳定最后来都是推倒重新设计,软件还可以修改代码编....
随着软件定义汽车概念的兴起,脱离硬件和实车的虚拟化仿真测试,已经逐渐开始崭露头角。所谓虚拟化仿真测试....
2022年7月,第五届解法器快速算法及应用研讨会(SOLVER2022)在重庆举办,经过激烈角逐,华....
华为计算 发表于 07-25 10:03
•
166次
阅读
请问一下,CH579如何在线升级软件(不使用ISP工具),能否提供下例程?谢谢!
...
发表于 07-25 06:41 •
111次
阅读
本资料针对高等职业院校物联网应用技术专业的高职学生,从他们毕业后会涉及到的实际案例入手,通过“项目——任务”的方式让学生...
发表于 07-15 16:08 •
1910次
阅读
关闭代理的情况下添加组件发生情况报错
done!
C:\RT-ThreadStudio>cd /d C:\RT-ThreadStudio\workspace\TouchGFX...
发表于 04-28 09:46 •
2954次
阅读
1 Graphics介绍
1.1 使用X11 Graphics
Xserver 是在常规桌面 Linux 平台上使用的显示系统。
Rockchip 有一个定制的 Xs...
发表于 04-20 16:37 •
1527次
阅读
1、在 AArch64 架构下内核与用户地址的隔离机制
一般来说在操作系统之上会有多个应用程序或者任务同时运行。每一个任务都有自...
发表于 04-13 17:27 •
5970次
阅读
QEMU安装
1. 如果系统中没有,请安装以下软件
$ sudo apt-get install git libglib2.0-dev libfdt-dev
libpixman-1-dev z...
发表于 04-12 11:18 •
4137次
阅读
GICv3架构中,对中断进行了分组。分成了以下三个组:
◾group0,用于EL3处理的中断
◾secure group1:用于secure EL1...
发表于 04-08 10:00 •
4112次
阅读
GIC,是arm为了实现复杂的中断控制,而定义的一套架构。版本也历经了多个变化,从最初的GICv1到现在最新的GICv4。每一个...
发表于 04-07 10:59 •
3694次
阅读
system指令,也就是sys,sysl指令,的编码如下所示:
L: 传输方向
op0:系统指令类型
op1: 最低访问权限的EL
...
发表于 04-07 10:35 •
4511次
阅读
评论