如何理解基于架构的软件设计(ABSD)

既然是基于架构的软件设计那么就离不开架构这两个字,整个设计的核心思想都是架构,所以我们首先要理解什么叫架构。

那么什么叫架构呢?在软件开发中,架构指的是系统的高层次结构和组织方式。它涉及以下几个方面:

  1. 组件和模块:系统由哪些主要部分构成,它们的功能和职责是什么。
  2. 接口和交互:各个组件如何通过接口进行通信和数据交换。
  3. 设计模式:使用了哪些设计模式或架构风格(如MVC、微服务)来解决特定问题。
  4. 部署:系统如何部署和运行在不同环境中,如云平台、本地服务器等。

知道了什么是架构以后,我们在来对比一下传统的软件设计与基于架构的软件设计有什么不同。

传统的软件设计,主要通过业务需求来细化用户需求,再通过用户需求来细化系统需求,这种自上而下的关系来逐渐细化需求。

而基于架构的软件设计主要是针对架构来进行分析设计,这种设计理念更关注系统的整体结构和组件之间的关系,确保系统的可扩展性、性能和可维护性。在架构驱动的设计中,重点是通过定义系统架构来指导整个开发过程,从而优化系统的质量和适应性。

这种设计主要包括六个阶段,他们分别是:架构需求、架构设计、架构文档化、架构复审、架构实现、架构演化。

架构需求

1、获取需求

2、生成类图,对类进行分组,将分组打包成构件,最终识别出系统有哪些构件(构件是一个可独立部署的整体)。

3、通过评审来看构件中类的分组是否合理,构件的合并(构件合并是指将多个独立构建集成到一个统一的系统中)是否合理。

架构设计

1、选择一个合适的架构风格如(如MVC、微服务)

2、将构件映射到架构中,分析构件之间的相互作用

  • 数据流:构件之间如何传递数据。
  • 控制流:构件如何控制其他构件的行为。
  • 接口:构件之间如何通过接口进行交互。

3、创建一个中间结构来表示这些构件及其关系。

  • 模块图:展示构件及其接口的图示。
  • 数据流图:描述数据在构件之间的流动路径。
  • 序列图:展示构件之间的交互顺序。

4、基于中间结构,对系统架构进行进一步精化。这包括:

  • 详细设计:将高层次的构件和接口细化为详细设计,包括具体的类、方法、数据结构等。
  • 接口设计:设计详细的接口规范,包括输入输出格式、协议、错误处理等。
  • 数据建模:设计数据模型,包括数据库模式、数据流和数据存储。

架构文档化

记录和文档化精化后的架构设计,以便于团队成员理解和实现:

  • 架构文档:详细记录架构设计,包括构件、接口、数据流等信息。
  • 沟通:与团队成员和利益相关者沟通架构设计,确保大家对架构有共同的理解。

架构复审

架构复审【架构评估】的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误。

架构实现

可以从构件库中直接查找符合接口约束的构件,也可以开发新构件。

对构件进行组装和部署。

对系统进行测试, 包括单个构件的功能性测试和被组装应用的整体功能和性能测试。

架构演化

对需求变化进行归类,使变化的需求与已有构件对应。

对有变动的构件进行修改,增加或删除构件,要对修改和增加的构件进行功能性测试。

更新构件的相互作用,对构件进行组装、测试和对测试结果进行评审,得到反馈和改进意见。

相关推荐
AiTop10013 分钟前
智谱AI推出ZCube组网架构:大模型推理性能与成本双突破,重构智算基础设施
人工智能·重构·架构
数字时代全景窗27 分钟前
从OpenClaw、Palantir、SpaceX,看颠覆式创新的四个层次(5)传统财务模型的局限
大数据·人工智能·架构·软件工程
code_pgf27 分钟前
sVLM在资源受限环境中的应用案例
人工智能·深度学习·架构
亚空间仓鼠43 分钟前
Docker容器化高可用架构部署方案(十四)
docker·容器·架构
2601_957786771 小时前
多平台矩阵系统的反脆弱架构:如何用技术解耦对抗平台规则的不确定性
人工智能·矩阵·架构·平台解耦
虎冯河2 小时前
Nano Banana Pro生图逻辑详解—— 从底层架构到实践指南
架构·aigc
啷里格啷2 小时前
第三章 Fast-DDS核心源码导读与流程拆解-Discovery机制
后端·架构
什么半岛铁盒2 小时前
LangChain 入门与架构:快速搭建你的第一个 AI 应用
人工智能·架构·langchain
mirror_zAI2 小时前
C++ 仿 QQ 聊天室项目:Qt 客户端 + epoll 服务端 + Reactor 架构(含源码)
c++·qt·架构
啷里格啷3 小时前
第三章 Fast-DDS核心源码导读与流程拆解
后端·架构