还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

几种软件架构设计的思维方式

123xiaowang蓝色_ 来源:软件工程之思 作者:软件工程之思 2021-03-08 15:30 次阅读

架构设计是门艺术。

一个优秀的程序员要想成为一名优秀的架构设计师,就改变编程的思维,学会使用架构设计的思维方式。

架构设计的思维方式有以下几种:

1. 分而治之的思维方式

分而治之,是把一件笼统模糊的事项变得清晰,把复杂的事项变得简单的思维方式。而这正是我们进行架构设计首要达成的目标。

架构设计师必须要学会架构分解,将软件的功能和非功能需求在架构的多个层面进行分解。

架构分解的时机要恰当,不要过早分解、也不要过度分解,通常的分解时机就是架构构造和演变时。

架构分解应当遵循以下原则:

高内聚、低耦合

层次性。分解的顺序一般是系统→子系统→模块→组件→类。

正交原则。分解出的架构元素符合正交原则。

抽象原则。分解出的架构元素应当是架构设计师抽象的结果。

稳定性原则。应当将稳定架构元素和不稳定的架构元素独立。

复用性原则。架构设计应当和软件一样,要考虑复用和可复用的设计。

2. 聚而合之的思维方式

分而治之的目的是降低难度,但软件的设计和实现最终还是要将分解的各个元素组合在一起。所以,不能为了分解而分解,在分解的过程中也要考虑将来的集成。毕竟如果分解后的内容无法集成在一起,分解得再详细,再清晰也没有任何意义。

3. 动静分离的思维方式

动静分离的思维方式要求将系统中的静态资源与动态资源分离,同时又要注意二者结合的架构设计。因为动态的流程和用例无法离开静态的数据和类就能自行完成的。

4. 复用的思维方式

复用是最佳的软件工程实践,没有之一。复用可以给我们带来以下好处:

较高的生产率。

较高的系统质量。

改善系统的可维护性。

所以,我们在进行架构设计时也需要使用复用思维,将各个模块需要用到的共性功能抽取为可复用的共性组件。

我们可以将复用分为常规复用和系统层复用。

其中常规复用又可分为代码复用、算法复用、数据结构的复用;系统层复用又可分为设计复用、分析复用。

5. 分层的思维方式

分层是将各架构元素通过分层重新构建的过程,各层之间要保持独立设计和松耦合。

分层的思维方式可以使软件架构具有如下优点:

开发人员可以只关注某一层。

可以很容易地用新的实现来替换原有层的实现。

可以降低层与层之间的依赖。

有利于标准化。

有利于各层逻辑的复用。

6. 模式的思维方式

架构模式是一套成熟的、通用的、可重用的解决方案,在进行架构设计时,架构设计师要能够根据业务需求来挑选最适合的架构模式。

架构模式一般有分层模式、客户端-服务器模式、主从设备模式、管道-过滤器模式、代理模式、P2P模式、事件总线模式、MVC模式、黑板模式和解释器模式等。

7. 抽象的思维方式

抽象包括两个层面的内容:一个层面是将各种类似场景的实现归纳成一种规则或方法出来供以后的设计用;另一个层面是将非类似场景中的共性内容总结出来,进一步抽象为类似的东西。

8. 结构化的思维方式

结构化是一种注重结构完整性的思维方式,它强调在分析问题的过程中,要考虑整体性,不要马上陷入细节。结构化思维的核心在于对问题进行正确界定的基础上(以终为始),对问题的构成要素进行合理分类,并对其中的重点环节进行分析(要事第一)。

结构化应遵循以下原则:

以终为始。

知道设计的目标,根据目标倒推需要完成的工作和任务。

不要先入为主,避免陷入细节。

各架构元素相互独立。

各架构元素无遗漏。

迭代的思维方式

没有最好,只有更好。架构设计也要随着业务需求的变化不断迭代和演化。

这正是:

架构设计不简单,思维方式数半天

学习前人获经验,优秀架构不再难
责编AJX

  • 软件
    +关注

    关注

    39

    文章

    3105

    浏览量

    79006
  • 架构
    +关注

    关注

    1

    文章

    248

    浏览量

    23462
收藏 人收藏

    评论

    相关推荐

    英田光学的精密光学元件为国家卫星互联网建设助力

    8月,由南京市政府主办的“2022年度南京市独角兽、瞪羚企业发布会”在江北新区举行,会议揭晓2022....
    的头像 MEMS 发表于 08-08 11:19 181次 阅读

    TIA Portal Openness V13 SP1安装程序

    安装程序会自动安装“TIA Portal Openness V13 SP1”附加软件包。
    的头像 机器人及PLC自动化应用 发表于 08-08 11:04 39次 阅读

    基于机器视觉技术的检测方法

    基于深度学习的检测方法,可以正确的检测螺纹孔,检测不合格产品时可以发出报警信号(OK/NG),良好的....
    发表于 08-08 10:47 11次 阅读

    超分子聚集体的高效率RTP模型和思路

    这项工作不仅报道了一维π-π堆积诱导的高效率RTP,为探索超分子聚集体的高效率RTP提供了重要的模型....
    的头像 鸿之微 发表于 08-08 09:49 43次 阅读

    Linux内存管理体系介绍

    内存是计算机最重要的资源之一,内存管理是操作系统最重要的任务之一。内存管理并不是简单地管理一下内存而....
    的头像 Linux阅码场 发表于 08-08 09:28 95次 阅读

    恩智浦全新S32Z和S32E实时处理器助力软件定义汽车

    域控制架构的出现,带来了两大好处,一是可扩展的集中式软件开发,不仅简化了功能域中的软件集成,还能高效....
    的头像 电子发烧友网 发表于 08-08 09:09 67次 阅读

    如何在C程序中采用面向对象编程

    为了显示自己的技巧,也在自己的程序中用过几次。渐渐发现这样的技巧带来的好处是有代价的,破坏了程序的结....
    发表于 08-05 11:35 75次 阅读

    东方创科天启教育M1开发板开发教程-软件篇

    一、编程软件简介 天启编程软件是一款为软硬件一体化青少年编程平台。既可以拖动图形化积木编程,还可以使用Python/C++等高级...
    发表于 08-05 10:37 6837次 阅读

    LABVIEW是什么软件?LABVIEW都可以干什么?

    LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,....
    的头像 纳米软件(系统集成) 发表于 08-05 10:14 115次 阅读
    LABVIEW是什么软件?LABVIEW都可以干什么?

    系统与软件度量白皮书

    本章对 SSM 及其 SSM 的发展历程及 SSM 在哪些方面能够帮助软件开发企 业等方面做一个简....
    发表于 08-04 17:47 23次 阅读

    如何在UEFI环境下使用 UEFI规范提供的接口

    进行项目开发、构建产品框架的时候,最开始需要考虑的就是采用哪种通信方式让软件可以访问外部设备(简称外....
    的头像 Linux阅码场 发表于 08-04 09:38 75次 阅读

    媒体物联网的技术架构

    感知层主要实现物体的识别与感知功能,主要包括各类传感器(包括读卡器),利用传感器获取实物影像或编码图....
    的头像 讯维官方公众号 发表于 08-03 14:20 229次 阅读

    IBM车库创新设计思维的工作方式

    用友是全球领先的企业云服务与软件提供商,致力于用创想与技术推动商业和社会进步,通过构建和运行全球领先....
    的头像 IBM中国 发表于 08-03 10:35 931次 阅读

    植入式医疗设备的方案

    越来越多的医疗植入物与互联网相连。该连接允许医疗服务提供商下载数据,程序员更新软件。这种连接可能使它....
    的头像 IEEE电气电子工程师 发表于 08-03 10:16 205次 阅读

    润和软件携手江苏国光共建“软件、硬件、生态、服务”新商业模式

    近日,江苏国光信息产业股份有限公司研发的智慧显示屏问世,新产品在软硬一体化升级后,提供了海量信息流传....
    的头像 润和软件 发表于 08-03 09:46 125次 阅读

    为调试寄存器 DBGDRAR 设置的值错误

    每个 RPU 处理器都有 1 个 DBGDRAR 寄存器,其中包含 CoreSight 根 ROM ....
    的头像 王涛 发表于 08-02 15:57 106次 阅读

    PS LPDDR4 DRAM 器件需启用 WDQS 控制信号

    “部分旧产品可能未提供下述 WDQS 控制信号”。但是,为了防止出现写操作前同步信号相关故障,强烈建....
    的头像 李娟 发表于 08-02 15:54 107次 阅读

    RT-Thread与Landmar推出软件平台Gemini-OS 助力整车SOA功能量产落地

    日前,国内知名车载软件方案商蓝马舱行智能科技(上海)有限公司(以下简称:Landmark)与新晋车载....
    发表于 08-01 10:49 94次 阅读

    汽车网关如何提升驾驶体验

    汽车供应商和原始设备制造商正大力投资软件研发工作,以期增加新的功能和特性,从而实现自主性、电气化和连....
    发表于 08-01 10:05 91次 阅读

    探索经济实用的低功耗蓝牙®的优点

    蓝牙®通过智能手机将我们与世界相连。我们可与门锁、恒温器甚至我们的汽车对接。但是所有蓝牙都是一样的吗....
    发表于 08-01 09:55 38次 阅读

    HiddenWasp 恶意软件针对特定的Linux设备所有者

    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应用实例

    上一期的教程给大家介绍了Device Studio应用实例之STEMS应用实例上半部分的内容,本期将....
    的头像 鸿之微 发表于 07-30 11:06 94次 阅读

    诚迈科技Fusion SOA平台加快车型智能化发展

    诚迈科技Fusion SOA平台的中间件层,它是该平台最核心的组成部分,位于服务层以下,操作系统层以....
    发表于 07-30 10:22 140次 阅读

    软件的开发流程介绍

    在前面几节芝识课堂中我们详细介绍了微控制器的基本知识、软件和硬件以及内核的技术细节,在我们实际应用微....
    的头像 东芝半导体 发表于 07-30 10:01 118次 阅读

    电池分析软件解决电池生命周期的挑战

    随着道路上电动汽车数量的增加,汽车制造商必须高效、环保地管理电池的整个生命周期。在欧洲,已经发布了一....
    发表于 07-29 16:36 29次 阅读

    什么是J-Scope

    J-Scope是Segger推出的一款免费软件,用于MCU运行时,实时显示数据的波形。
    的头像 city_prolove 发表于 07-29 15:02 114次 阅读

    为物联网软件开发设定现实和激励目标

    在这个完整的指南中,物联网开发人员必须最终建立他们为物联网软件开发设定现实和动机的目标。 软件开发通....
    发表于 07-28 17:40 32次 阅读

    最大限度地保持社交距离是 COVID-19 的后果

    专家、医生和科学家表示,为了限制冠状病毒感染,人们在社交接触中应保持至少 1 米的人际社交距离。但是....
    发表于 07-28 16:29 31次 阅读
    最大限度地保持社交距离是 COVID-19 的后果

    功率分析工具简介

    数字电源是一种系统,可让您使用针对电源设备的特殊控制技术转换能量。在数字电源系统的设计中,主要目标是....
    发表于 07-28 14:56 28次 阅读
    功率分析工具简介

    采用芯和半导体SnpExpert软件进行车载以太网测试结果性能分析的流程

    随着汽车电子技术的飞速发展,ADAS系统、高清车载信息娱乐系统、车联网系统、云服务及大数据等新兴技术....
    的头像 Xpeedic 发表于 07-28 11:40 106次 阅读

    计算机辅助工程CAE工具—Eplan

    Eplan是一款专为电气工作人员打造的专业自动设计软件是电气领域中真正的计算机辅助工程CAE工具,可....
    的头像 PLC技术圈 发表于 07-28 11:08 326次 阅读

    IMG GPU的几个架构特色

    第二,就是文首提到的能耗比、热效能、算力密度。不同方向的应用当前对“效率”都越来越看重,不同规模的设....
    的头像 Imagination Tech 发表于 07-28 10:52 181次 阅读

    人工智能在未来10年将创造超过6000亿美元的经济价值

    在6000亿美元的机遇中,半数以上将来自汽车、交通运输和物流行业(约64%);19%来自制造业;13....
    发表于 07-28 09:22 148次 阅读

    上扬软件公司荣获上海市“专精特新”企业认定

    根据《上海市经济信息化委关于组织推荐2021年度“专精特新”企业的通知》(沪经信企〔2021〕539....
    的头像 上扬软件 发表于 07-27 09:36 241次 阅读

    通过改善能源管理的软件包Commander来优化机器人及无人机的能源供应

    无线电源解决方案开发商 WiBotic 宣布推出 Commander,这是一个旨在改善能源管理的软件....
    的头像 王桂英 发表于 07-26 17:34 158次 阅读
    通过改善能源管理的软件包Commander来优化机器人及无人机的能源供应

    Neurala通过成立子公司在欧洲建立新的人工智能软件业务

    总部位于波士顿的人工智能软件公司 Neurala 最近宣布在意大利成立其欧洲子公司 Neurala ....
    发表于 07-26 16:53 133次 阅读
    Neurala通过成立子公司在欧洲建立新的人工智能软件业务

    量子计算的开源框架

    量子计算机的出现,需要一定程度的软件解决方案,为每个人的量子开发环境提供必要的基础。IBM 凭借其最....
    的头像 李继明 发表于 07-26 15:56 178次 阅读
    量子计算的开源框架

    抚平芯片设计验证和确认的皱纹

    如果芯片设计有一张脸,它就会有一两道皱纹,尤其是由于硬件和软件验证日益复杂的挑战而造成的皱纹。
    的头像 andyfly7 发表于 07-26 15:43 122次 阅读

    气伺服焊钳为什么会发出钳E1超出软件限制报警

    大家在调试气伺服焊钳时,可能经常遇到这个故障"Zange E1 ausserhalb Softwar....
    的头像 机器人及PLC自动化应用 发表于 07-26 14:57 139次 阅读

    图森未来下一代真实感仿真系统原型大幅提升自动驾驶研发迭代的效率

    日前,图森未来发布下一代真实感仿真系统原型。该系统旨在解决L4级别自动驾驶系统中端到端仿真中传感器数....
    的头像 图森未来 发表于 07-26 14:39 298次 阅读

    千方全域交通数字化解决方案助力智慧城市建设的最新探索与实践

    会上发布了“2022年第一批智慧副中心建设应用场景需求”,其中涉及副中心感知体系、数字孪生(规、建、....
    的头像 千方科技 发表于 07-26 11:46 226次 阅读

    一种量子化学与分子力学结合的方法

    本专题将介绍一种量子化学与分子力学结合的方法(QM/MM方法),该方法既包括量子化学的精确性,又利用....
    的头像 鸿之微 发表于 07-26 09:55 185次 阅读

    如何开发出成功的硬件产品

    对于一个硬件产品而言,大批量的生产交付才能实现其最大的商业价值。
    的头像 电子发烧友论坛 发表于 07-25 16:38 194次 阅读

    工业AR应用为何还是落地难

    无论是在工业网络环境中,还是在普通的企业网络环境中,交换机的理线都是一个问题。但在工业网络环境下,设....
    的头像 电子发烧友网 发表于 07-25 15:49 140次 阅读

    为什么说软件比硬件简单?

    电子产品能否做稳定,硬件至关重要,因为硬件设计上的不稳定最后来都是推倒重新设计,软件还可以修改代码编....
    的头像 STM32嵌入式开发 发表于 07-25 14:48 106次 阅读

    ETAS软件虚拟化技术与联合仿真平台

    随着软件定义汽车概念的兴起,脱离硬件和实车的虚拟化仿真测试,已经逐渐开始崭露头角。所谓虚拟化仿真测试....
    的头像 ETAS易特驰 发表于 07-25 14:32 118次 阅读

    华为与清华大学联队夺取SolverChallenge竞赛最高奖项

    2022年7月,第五届解法器快速算法及应用研讨会(SOLVER2022)在重庆举办,经过激烈角逐,华....
    的头像 华为计算 发表于 07-25 10:03 166次 阅读

    CH579如何在线升级软件?

    请问一下,CH579如何在线升级软件(不使用ISP工具),能否提供下例程?谢谢!   ...
    发表于 07-25 06:41 111次 阅读

    单片机与上位机软件设计(上、下册全)

    本资料针对高等职业院校物联网应用技术专业的高职学生,从他们毕业后会涉及到的实际案例入手,通过“项目——任务”的方式让学生...
    发表于 07-15 16:08 1910次 阅读

    请问RT-Thread Studio为什么无法下载软件?

    关闭代理的情况下添加组件发生情况报错 done! C:\RT-ThreadStudio>cd /d C:\RT-ThreadStudio\workspace\TouchGFX...
    发表于 04-28 09:46 2954次 阅读

    Rockchip Graphics介绍

    1 Graphics介绍 1.1 使用X11 Graphics Xserver 是在常规桌面 Linux 平台上使用的显示系统。 Rockchip 有一个定制的 Xs...
    发表于 04-20 16:37 1527次 阅读

    谈一谈在AArch64架构下内核与用户地址的隔离机制

    1、在 AArch64 架构下内核与用户地址的隔离机制 一般来说在操作系统之上会有多个应用程序或者任务同时运行。每一个任务都有自...
    发表于 04-13 17:27 5970次 阅读
    谈一谈在AArch64架构下内核与用户地址的隔离机制

    如何使用DPDK设置OvS从而在Arm平台上运行PHY-VM-PHY或vHost-Loopback流量测试

    QEMU安装 1. 如果系统中没有,请安装以下软件 $ sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev z...
    发表于 04-12 11:18 4137次 阅读

    ARM GIC(九)GICv3架构中的中断分组

    GICv3架构中,对中断进行了分组。分成了以下三个组: ◾group0,用于EL3处理的中断 ◾secure group1:用于secure EL1...
    发表于 04-08 10:00 4112次 阅读

    ARM GIC(八)GICv3架构的变化

    GIC,是arm为了实现复杂的中断控制,而定义的一套架构。版本也历经了多个变化,从最初的GICv1到现在最新的GICv4。每一个...
    发表于 04-07 10:59 3694次 阅读

    小编科普一下A64架构中的system指令

    system指令,也就是sys,sysl指令,的编码如下所示: L: 传输方向 op0:系统指令类型 op1: 最低访问权限的EL ...
    发表于 04-07 10:35 4511次 阅读
    小编科普一下A64架构中的system指令