0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

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

3天内不再提示

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

如意 来源:软件工程之思 作者:软件工程之思 2021-03-08 15:30 次阅读

架构设计是门艺术。

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

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

1. 分而治之的思维方式

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

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

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

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

高内聚、低耦合

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

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

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

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

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

2. 聚而合之的思维方式

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

3. 动静分离的思维方式

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

4. 复用的思维方式

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

较高的生产率。

较高的系统质量。

改善系统的可维护性。

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

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

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

5. 分层的思维方式

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

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

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

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

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

有利于标准化。

有利于各层逻辑的复用。

6. 模式的思维方式

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

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

7. 抽象的思维方式

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

8. 结构化的思维方式

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

结构化应遵循以下原则:

以终为始。

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

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

各架构元素相互独立。

各架构元素无遗漏。

迭代的思维方式

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

这正是:

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件
    +关注

    关注

    67

    文章

    4345

    浏览量

    85609
  • 架构
    +关注

    关注

    1

    文章

    483

    浏览量

    25200
收藏 人收藏

    评论

    相关推荐

    软件架构设计教程

    软件架构设计教程
    发表于 09-26 15:27

    【汽车电气架构设软件

    因工作需要,求整车电气架构设软件——PREEvision(盗版),价格可议,WetChat/***,非诚勿扰
    发表于 04-18 14:20

    STM32软件架构设计的意义

    STM32软件架构1、架构设计的意义(1)应用代码逻辑清晰,且避免代码冗余;(2)代码通用性,方便软件高速、有效的移植;(3)各功能独立,低耦合高内聚;2、总体
    发表于 08-04 07:23

    机甲大师机器人控制(三):软件架构设计 精选资料推荐

    本文是机甲大师机器人控制的系列博客之一。在功能分析的基础上,本文设计软件架构。文章目录1 开发阶段2 软件架构设计2.1 顶层子系统2.1.1 子系统模型2.1.2 输入接口2.2
    发表于 08-18 07:01

    嵌入式软件架构设计常见的误解

    1.常见的误解1.1小型系统不需要架构设架构应当满足当前需求并适当的考虑重用和变更1.2 敏捷开发不需要框架 极限编程, 敏捷开发的出现使一些人误以为软件开发无需再做架构了。 这是
    发表于 10-27 09:22

    为何要进行嵌入式软件架构设计?如何设计?

    为何要进行嵌入式软件架构设计?如何进行嵌入式软件架构设计?
    发表于 11-01 06:31

    机甲大师机器人的软件架构设计如何实现?

    机甲大师机器人的软件架构设计如何实现?
    发表于 11-22 07:55

    嵌入式软件架构设计资料分享

    作为程序员,我觉得如果要走的更远必须要成为工程师,毕竟年龄和资历都摆在那里了。所以就让我这个老程序员浅谈一下嵌入式软件架构设计。我参考的也是一篇博文。原图如下![在这里插入图片描述](?x-oss-process=image/watermark,type_ZmFuZ3po
    发表于 12-24 07:09

    软件架构设计的三个维度

    架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中
    发表于 06-22 10:09 1327次阅读
    <b class='flag-5'>软件</b><b class='flag-5'>架构设</b>计的三个维度

    使用Simulink实现软件架构设

      本文参考ISO26262的要求,同时考虑AUTOSAR代码生成的兼容性,给出使用Simulink实现软件架构设计的一些建议。
    发表于 09-19 14:40 36次下载
    使用Simulink实现<b class='flag-5'>软件</b><b class='flag-5'>架构设</b>计

    如何升级架构设思维

    孙玄,江湖人称“玄姐”,前58集团技术委员会主席,前转转二手交易平台首席架构师。今天想跟你聊点儿企业里那些年薪百万的架构师,他们的架构设思维是如何升级的。 话不多说,咱们直接来聊点儿
    的头像 发表于 01-11 10:39 1909次阅读

    SWE.2的软件架构设

    过程ID:SWE.2 过程名称:软件架构设计 过程目的:软件架构设计过程目的是建立一个架构设计,识别哪些
    的头像 发表于 01-11 10:36 2440次阅读

    STM32软件架构设

    STM32软件架构1、架构设计的意义(1)应用代码逻辑清晰,且避免代码冗余;(2)代码通用性,方便软件高速、有效的移植;(3)各功能独立,低耦合高内聚;2、总体
    发表于 11-06 09:05 29次下载
    STM32<b class='flag-5'>软件</b><b class='flag-5'>架构设</b>计

    关于Genesis芯神匠架构设软件

    芯片设计随着摩尔定律的发展,单IP和系统的实现方案越来越复杂。同时随着设计约束条件越来越苛刻,传统依靠经验来指定设计规格的方式,导致项目设计变得愈发棘手。此时,最需要的是一个可以对电子系统的硬件、软件实现方案进行快速分析与优化的设计平台,这就是Genesis芯神匠
    的头像 发表于 01-21 10:36 1435次阅读

    SWE.2软件架构设

    过程ID : SWE.2 过程名称 : 软件架构设计 过程目的 : 软件架构设计过程目的是建立一个架构设计,识别哪些
    的头像 发表于 08-24 09:43 497次阅读