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

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

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

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

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

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

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

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

架构需求

1、获取需求

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

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

架构设计

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

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

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

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

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

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

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

架构文档化

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

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

架构复审

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

架构实现

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

对构件进行组装和部署。

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

架构演化

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

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

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

相关推荐
AI成长日志33 分钟前
【AI原生开发实战】1.2 传统开发 vs AI原生开发:思维转变与架构差异
服务器·架构·ai-native
戮戮33 分钟前
Spring Cloud Gateway 零拷贝参数校验:一种高性能网关架构实践
java·网络·架构·gateway
LONGZETECH33 分钟前
汽车故障诊断仿真教学软件【哈弗M6PLUS】:技术架构、功能实现与落地实践
架构·汽车·职业教育·汽车仿真教学软件·汽车故障诊断
xinlianyq36 分钟前
2026 边缘智能的崛起:端云协同架构下的“词元”调度艺术
人工智能·架构·api
2301_7807896639 分钟前
零信任架构在云安全落地过程中的最佳实践
服务器·人工智能·游戏·架构·零信任
梓䈑39 分钟前
高性能 C++ 日志实战:spdlog 核心架构解析与最佳实践指南
c++·架构
提子拌饭1331 小时前
番茄时间管理:鸿蒙Flutter 实现的高效时间管理工具
android·flutter·华为·架构·开源·harmonyos·鸿蒙
heimeiyingwang1 小时前
【架构实战】NewSQL数据库对比(TiDB/CockroachDB)
数据库·架构·tidb
提子拌饭1331 小时前
星芒便签:鸿蒙Flutter框架 实现的美观便签应用
flutter·华为·架构·开源·harmonyos·鸿蒙
陈天伟教授2 小时前
心电心音同步分析-案例:原型设计一
开发语言·人工智能·python·语言模型·架构