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

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

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

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

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

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

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

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

架构需求:

1、获取需求

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

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

架构设计:

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

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

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

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

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

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

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

架构文档化:

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

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

架构复审:

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

架构实现:

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

对构件进行组装和部署。

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

架构演化:

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

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

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

相关推荐
范中勤15 分钟前
适配器模式(Adapter Pattern):原理、场景与 LLM 多厂商工程落地
设计模式·架构·langchain·适配器模式·多厂商
木子n11 小时前
软件架构设计实战-架构18.从 Classic 到 Adaptive:SOA 架构在 MATLAB 里的模样
架构·autosar·性能工程·soa架构
mldong1 小时前
给 Django Admin 加审批流:一行前端代码没写,298 行接上工作流引擎
后端·python·架构
小白学大数据10 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
茵Cindy10 小时前
AI+HR智能体架构如何落地?从入口到生态底座的工程实现
人工智能·架构·ai+hr
骇客野人11 小时前
微服务多级缓存架构设计
缓存·微服务·架构
闻哥11 小时前
分布式任务调度框架:XXL-Job / ElasticJob / DolphinScheduler / SchedulerX 架构对比与选型
分布式·架构·wpf
天远API12 小时前
零信任架构实战:基于天远风控经营异常预警构建自动化供应商店铺巡检网关
人工智能·架构·自动化·dubbo
AI行业应用研究12 小时前
会务信息载体的演进:纸质、PDF 与结构化数据源的分发成本与版本一致性
大数据·人工智能·安全·小程序·架构·pdf
JPower_mr.g12 小时前
SmartCall 音色管理技术解析:基于 SPI 的可扩展音色注册架构
java·开发语言·人工智能·ai·架构·开源