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

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

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

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

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

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

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

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

架构需求

1、获取需求

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

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

架构设计

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

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

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

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

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

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

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

架构文档化

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

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

架构复审

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

架构实现

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

对构件进行组装和部署。

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

架构演化

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

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

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

相关推荐
ALex_zry26 分钟前
分布式缓存与微服务架构的集成
分布式·缓存·架构
贾修行37 分钟前
企业级网络安全架构实战:从防火墙部署到远程办公全解析
web安全·架构·智能路由器
一只专注api接口开发的技术猿1 小时前
淘宝商品详情API的流量控制与熔断机制:保障系统稳定性的后端设计
大数据·数据结构·数据库·架构·node.js
小马爱打代码2 小时前
熔断限流从入门到实战:打造高可用微服务架构
微服务·云原生·架构
斯普信专业组2 小时前
Nacos-MCP 融合架构:运维nacos的MCP服务项目
运维·nacos·架构
黑棠会长3 小时前
微服务实战.06 |微服务对话时,你选择打电话还是发邮件?
微服务·云原生·架构·c#
回忆是昨天里的海3 小时前
k8s整体架构及核心组件
架构·k8s
程序员泠零澪回家种桔子4 小时前
微服务日志治理:ELK 栈实战指南
后端·elk·微服务·云原生·架构
fanstuck4 小时前
从 0 到 1 构建企业智能体平台:openJiuwen 架构解析与智能客服工作流实战
大数据·人工智能·算法·架构·aigc
七夜zippoe4 小时前
Plotly + Dash:构建交互式数据仪表盘的艺术与实战
python·信息可视化·架构·dash·回到函数