【系统架构设计(15)】软件架构设计一:软件架构概念与基于架构的软件开发

文章目录

    • 一、核心思想
    • 二、软件架构概念:系统设计的高级抽象
    • 三、软件架构设计与生命周期:架构在开发流程中的演进
    • 四、架构描述语言ADL:架构的标准化表达
    • 五、4+1视图:多角度的架构展现
    • 六、基于架构的软件开发概念:架构驱动的开发理念:ABSD
    • 七、基于架构的软件开发过程:从需求到实现的完整流程
      • ABSD开发过程的整体特征
      • 架构需求过程:从需求到构件的转换
      • 架构设计过程:构建系统蓝图
      • 架构实现过程:从设计到可运行系统
      • 架构演化过程:适应变化的持续改进
      • ABSD方法的核心价值

一、核心思想

软件架构是对复杂软件系统的高级抽象,它通过结构化的方式定义系统的组件、关系和约束;而基于架构的软件开发则是将这种抽象设计转化为可执行软件的系统化方法。

这就像建造一座摩天大楼:

  • 软件架构是建筑设计图纸,定义了楼层结构、功能分区和基础设施布局;
  • 架构描述语言是绘制图纸的标准规范;
  • 4+1视图是从不同专业角度(结构工程师、电气工程师、装修设计师等)审视同一栋建筑;
  • 而基于架构的软件开发则是按图施工的完整流程,从地基挖掘到装修交付的全过程管理。

为什么这个体系如此重要?

  1. 软件系统的复杂性已经超出了人类直接理解和管理的能力。架构提供了必要的抽象层次,让我们能够在宏观层面把握系统全貌,同时为不同角色提供了有效的沟通语言。
  2. 这个体系建立了从需求到实现的可追溯链条:需求分析确定"要做什么",软件架构回答"怎样组织",详细设计解决"如何实现"。没有这个中间层,复杂系统的开发将陷入混乱。

 

二、软件架构概念:系统设计的高级抽象

软件架构的概念包括架构的本质、作用和在软件开发中的桥梁位置,是理解整个架构体系的基础。
在这里插入图片描述

概念要素定义与特点应用场景重要性说明
高级抽象对系统结构、行为、属性的高层概括
不涉及具体实现细节
微服务架构抽象出服务边界
分层架构定义层次职责
提供宏观视角
降低理解复杂度
惯用模式与约束特定领域的常用架构风格
定义专业术语和协作规则
互联网应用的微服务模式
企业应用的分层模式
提供设计指导
确保架构一致性
交流手段不同角色基于架构进行沟通
理解系统整体设计
开发、测试、业务团队协作
技术方案评审
统一认知基础
提高沟通效率
可传递复用模型架构可在项目间传递复用
支持质量预估和问题发现
电商平台架构复用
金融系统架构模板
降低设计成本
提升系统质量
桥梁作用连接需求分析与软件设计
实现需求到组件的分配
将用户需求分配到具体组件
确定组件职责和协作关系
填补设计鸿沟
确保需求可追溯

在这里插入图片描述

 

三、软件架构设计与生命周期:架构在开发流程中的演进

软件架构设计贯穿整个软件生命周期,从需求分析到后开发阶段都发挥着关键作用。
在这里插入图片描述

生命周期阶段核心任务关键方法与工具与架构的关系
需求分析阶段需求模型到架构模型的转换
确保转换过程可追溯
需求建模技术
可追溯性矩阵
架构设计的输入基础
确保需求完整覆盖
设计阶段使用ADL和4+1视图描述架构
从多视角展现架构设计
架构描述语言(ADL)
4+1视图方法
架构研究的核心阶段
产生正式架构文档
实现阶段依据架构进行代码编写
将设计转化为可运行代码
编程语言和框架
代码生成工具
架构设计的具体落地
验证架构可行性
构件组装阶段在高层次组装已有构件
提高开发效率
构件库管理
集成测试工具
体现架构组合特性
实现架构复用
部署阶段架构提供部署指导
确定系统在硬件环境中的部署
容器化技术
自动化部署工具
架构的物理实现
保障系统稳定运行
后开发阶段动态架构调整
架构恢复与重建
架构演化工具
重构技术
支持架构持续改进
适应需求变化

 

四、架构描述语言ADL:架构的标准化表达

架构描述语言为软件架构提供形式化的描述方法,确保架构设计的精确性和一致性。
在这里插入图片描述

ADL类型核心特点适用场景基本元素
C2SADL基于组件和消息
聚焦消息传递交互
事件驱动系统
消息中间件架构
构件:计算或数据存储单元
连接件:构件交互建模
Wright适用分布、并发系统
关注并发执行逻辑
分布式系统
高并发应用
架构配置:构件连接关系图
ACME架构互换语言
强调转换和互操作性
架构集成项目
多系统协作
支持架构复用和集成
UniCon基于组件和连接
注重连接关系建模
传统企业应用
模块化系统
清晰展现架构拓扑结构
Rapide基于事件驱动
关注事件触发响应机制
实时系统
响应式应用
以事件为核心的架构描述

 

五、4+1视图:多角度的架构展现

4+1视图方法从不同涉众的关注角度全面展现软件架构,确保架构设计满足各方需求。
在这里插入图片描述

视图类型关注者核心关注点描述内容
逻辑视图最终用户功能需求实现
系统逻辑结构
类与对象层面的系统结构
功能实现方式
实现/开发视图程序员配置装配
代码组织结构
代码组织和模块划分
编码和集成依据
进程视图系统集成人员性能、可伸缩性
并发处理能力
运行时进程交互
资源分配方案
部署/物理视图系统工程人员发布安装
物理拓扑结构
物理环境部署方式
系统部署实施指导
用例视图/场景分析人员、测试人员用例场景
用户交互方式
系统功能和交互场景
需求分析和测试依据

 

六、基于架构的软件开发概念:架构驱动的开发理念:ABSD

基于架构的软件开发(ABSD)强调架构在软件开发中的核心驱动作用,建立了系统化的开发方法。

在这里插入图片描述

核心概念定义与特点实施方法价值体现
架构驱动理念架构由业务、质量、功能需求共同驱动
兼顾多维度需求
需求分析时同时考虑
业务目标和质量属性
确保架构满足
全面的系统需求
三个基础
功能分解运用模块内聚和耦合技术
高内聚低耦合设计
模块化设计原则
接口标准化
提高系统灵活性
和可扩展性
架构风格选择根据需求选择合适架构风格
满足质量和业务需求
分层架构、微服务架构
等风格的合理选择
架构与需求的
最佳匹配
软件模板使用提供通用架构框架
保证架构一致性
开源框架模板
企业架构标准
提高开发效率
保障质量一致性
视角与视图
多视角需求捕获功能需求用用例捕获
质量需求用场景捕获
用例建模
质量场景设计
全面准确捕获
各类系统需求

 

七、基于架构的软件开发过程:从需求到实现的完整流程

ABSD开发过程的整体特征

自顶向下的递归细化方法:ABSD方法采用自顶向下、逐步细化的开发策略,从高层架构逐步深入到具体的软件构件和类。这种方法能很好地支持软件重用,通过架构模板和构件库的使用,显著提高开发效率和软件质量。

迭代与反馈机制:整个开发过程具有强烈的迭代特征,每个阶段都包含评审环节(0:N或0:M表示可能的多次迭代),确保质量控制和持续改进。

在这里插入图片描述

开发阶段核心活动关键输出质量保障
架构需求需求获取、类图生成
构件打包、需求评审
构件化的需求模型
需求评审报告
多次需求评审(0:N)
确保需求完整性
架构设计提出架构模型、构件映射
分析构件交互、产生架构
完整软件架构
构件交互模型
多次设计评审(0:M)
保证架构质量
架构文档化记录架构设计成果
形成多份文档
架构设计文档
构件规格说明
文档标准化
便于团队协作
架构实现构件实现、构件组装
系统测试
可运行软件系统
测试报告
全面系统测试
验证架构设计
架构演化需求变化归类、演化计划
构件变动、技术评审
演化后的架构
更新的构件库
多次技术评审(0:N)
适应需求变化

 

架构需求过程:从需求到构件的转换

在这里插入图片描述

需求分析的系统化方法:

  1. 需求获取:从需求库中收集各类需求,需求库的存在体现了知识积累和复用的重要性
  2. 生成类图:将需求转化为面向对象的类图表示,建立系统的静态结构模型
  3. 对类进行分组:根据功能相关性将类进行逻辑分组,为后续构件化奠定基础
  4. 把类打包成构件:将分组后的类封装成可独立部署和复用的构件
  5. 需求评审:通过0:N次评审确保需求的完整性和准确性

核心价值:这个过程实现了从抽象需求到具体构件的可追溯转换,为后续的架构设计提供了结构化的输入。

 

架构设计过程:构建系统蓝图

架构设计过程,体现了系统化的设计方法:

  1. 提出架构模型:基于需求分析结果,选择合适的架构风格和基本框架
  2. 映射构件:将需求阶段产生的构件映射到架构模型中,确定构件在系统中的位置
  3. 分析构件相互作用:研究构件间的交互方式、依赖关系和协作机制
  4. 产生架构:综合以上步骤,形成完整的软件架构设计
  5. 设计评审:通过0:M次评审保证架构的合理性和可行性

关键特点:设计过程强调构件间关系的分析,这是ABSD方法区别于传统开发方法的重要特征。

 

架构实现过程:从设计到可运行系统

在这里插入图片描述

设计到实现的转化:

  1. 分析与设计:基于复审后的架构文档进行详细分析,可以利用构件库中的已有构件
  2. 构件实现:编写代码实现各个构件的具体功能
  3. 构件组装:将实现的构件按照架构设计进行组装,构件库在此阶段发挥重要作用
  4. 系统测试:对组装后的系统进行全面测试,验证架构设计的正确性

构件库的作用:构件库贯穿整个实现过程,体现了软件重用的核心思想,提高了开发效率并保证了质量一致性。

 

架构演化过程:适应变化的持续改进

架构演化过程,体现了系统的可持续发展:

  1. 需求变化归类:对变更需求进行分类分析,明确变化的性质和影响范围
  2. 架构演化计划:制定有序的演化策略,规划演化步骤和资源配置
  3. 构件变动:从构件库获取或修改相关构件,实现架构调整
  4. 更新构件相互作用:调整构件变动后的交互关系,维护系统完整性
  5. 构件组装与测试:重新组装并测试,验证演化效果
  6. 技术评审:通过0:N次技术评审确保演化质量

演化特点:演化过程形成闭环,演化后的架构可以继续适应新的需求变化,体现了ABSD方法的可持续性。

 

ABSD方法的核心价值

通过这三个阶段的有机结合,ABSD方法实现了:

  1. 系统化的开发流程:从需求到实现再到演化的完整链条
  2. 强大的复用能力:需求库和构件库支撑的多层次复用
  3. 质量保障机制:多次评审确保每个阶段的质量
  4. 持续改进能力:演化过程支持系统的长期发展

这种方法特别适合大型、复杂的软件系统开发,通过架构驱动的方式确保了开发过程的可控性和最终产品的高质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95663.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件系统-哈希结构文件

一、核心思想哈希文件的核心思想非常简单直接:通过一个计算(哈希函数),将记录的键(Key)直接转换为该记录在磁盘上的物理地址(通常是块地址),从而实现对记录的快速存取。它…

一文吃透 C#中异步编程Task

一文吃透 C#中异步编程Task 一、Task 是什么 二、推荐使用场景 三、Demo:Task 的核心用法 1. 最常用的启动方式Task.Run 2. task完成状态与结果获取 3. 多个任务怎么等?Wait/WaitAll/WaitAny 4. 任务想中途停掉?取消与异常处理 四、必备 API 速查表 五、避坑指南、注意事项 …

TDengine TIMETRUNCATE 函数用户使用手册

TDengine TIMETRUNCATE 函数用户使用手册 函数概述 TIMETRUNCATE 是 TDengine 中的一个时间处理标量函数,用于将时间戳按照指定的时间单位进行截断操作。该函数在时间数据聚合、分组和统计分析中非常有用,特别适用于智能电表等时序数据的分析场景。 语法…

KSZ8081寄存器介绍

一、寄存器概览KSZ8081MNX/RNB 支持 IEEE 802.3 标准的 MII 管理接口(MDIO),寄存器地址范围为 0x00 - 0x1F,其中寄存器 0x00 - 0x08 为 IEEE 标准寄存器,0x09 - 0x1F 为扩展功能寄存器。寄存器按功能可分为基本控制与状…

力扣190:颠倒二进制位

力扣190:颠倒二进制位题目思路代码题目 颠倒给定的 32 位无符号整数number的二进制位。 思路 思路很简单,我们只需要得到number从低位到高位的每一个二进制位再把二进制位移到颠倒的res的对应二进制位即可,例如number的最低位为1那么res的最高位即1&a…

鸿蒙NEXT交互机制解析:从输入设备到手势响应的全面指南

深入探索鸿蒙NEXT的交互设计,掌握下一代人机交互核心技术在智能设备无处不在的今天,一个操作系统的交互设计质量直接影响着用户体验。鸿蒙NEXT作为华为推出的新一代操作系统,在交互设计上带来了许多创新和突破。本文将全面解析鸿蒙NEXT的交互…

通过IDEA写一个服务端和一个客户端之间的交互

服务端代码:WebSocketConfig代码package org.example.hufamessagedemo;import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.*;Configuration EnableWebSocket public class WebSocketConfig i…

玩客云刷机Armbian + CasaOS,轻nas系统,以及扩展

网上太多的教程,综合了一下,自己一边参考一边尝试,昨天晚上做的,感觉今天快忘了,记录一下,少走弯路。 随着矿潮的退去,市场上涌现出了众多所谓的“矿渣盒子”,这些设备往往因为价格低…

【Linux】环境变量与程序地址空间详解

前言:欢迎各位光临本博客,这里小编带你直接手撕Linux程序地址空间,文章并不复杂,愿诸君耐其心性,忘却杂尘,道有所长!!!! **🔥个人主页&#xff1a…

机器学习 - Kaggle项目实践(8)Spooky Author Identification 作者识别

Spooky Author Identification | Kaggle Approaching (Almost) Any NLP Problem on Kaggle (参考) Spooky Author Identification | Kaggle (My work) 根据三位的一些作品训练集,三分类测试集是哪个作家写的概率。 …

[frontend]WebGL是啥?

对于初学者来说,通常的建议是: 不要直接从原生 WebGL 开始,而是先使用一个基于 WebGL 的高级框架或库,最著名的就是 Three.js。 webgl是啥 three.js是啥? Three.js 封装了 WebGL 的复杂细节,提供了更简单、…

[光学原理与应用-400]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 声光调制器AOM

声光调制器(Acousto-Optic Modulator, AOM)是深紫外皮秒脉冲激光器中实现脉冲主动控制、频率稳定及光束管理的核心元件。其通过声波与光波的弹光相互作用,在皮秒时间尺度内实现激光强度、频率或传播方向的精准调制。以下从工作原理、关键性能…

25高教社杯数模国赛【D题顶流思路+问题分析】

注:本内容由”数模加油站“ 原创出品,虽无偿分享,但创作不易。欢迎参考teach,但请勿抄袭、盗卖或商用。后续都在”数模加油站“......

利用 openssl api 实现 TLS 双向认证

1. 环境 openssl1.1.1gwget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1g/openssl-1.1.1g.tar.gz sha256 为: ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46Linux 环境 2. 静态编译 openssl tar -zxvf openssl-1.1.1…

低代码开发平台技术总结

一、 核心定义 低代码开发平台(Low-Code Development Platform, LCDP)是一种通过图形化界面、可视化建模、拖拽组件和模型驱动逻辑来构建应用程序的开发环境。其核心目标是显著减少传统手写代码的数量,从而降低开发门槛,提升应用交…

Web与Nginx网站服务

文章目录前言1、Web 概念1.1 Web 的特点1.2 B/S 架构模型1.3 Web 请求与响应过程1.4 静态资源与动态资源1.5 Web 的发展阶段1.6 小结2、HTTP 与 HTTPS 协议2.1 http与https区别2.2 HTTPS 握手流程2.3 HTTP状态码2.3.1 HTTP 状态码概览2.3.2 常用状态码详解3、Nginx 概念3.1 Ngi…

【算法--链表】25.K个一组翻转链表--通俗讲解

一、题目是啥?一句话说清 给你一个链表,每k个节点一组进行反转,如果最后剩余的节点不足k个,则保持原状。需要实际交换节点,而不仅仅是改变值。 示例: 输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5](因为每2个一组反转,最后剩余5不足2个,保持原状) 二、解题核…

Git指令 | 个人学习笔记

主要包含git的日常核心操作。 1.创建新仓库 创建新文件夹&#xff0c;打开&#xff0c;然后执行。 git init2.创建一个本地仓库的克隆版本 先cd到指定的目录下&#xff0c;再 git clone /path/to/respository # 指定远程分支 git clone -b <分支名> <仓库地址> …

Apache 的安装及基本使用

1 Apache 简介Apache HTTP Server&#xff08;通常简称 “Apache”&#xff09;是世界上最流行、历史最悠久的开源 Web 服务器软件之一&#xff0c;由 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;维护。它的核心功能是接收客户端&#xff08;如浏览器…

五大主流大语言模型(LLM)对比

文章目录&#x1f916; 五大主流大型语言模型&#xff08;LLM&#xff09;对比1. ChatGPT (GPT-5) - OpenAI2. Claude 4 (Sonnet & Opus) - Anthropic3. Gemini 2.5 Pro - Google DeepMind4. Grok 4 - xAI5. DeepSeek R1 - 深度求索五款模型的综合对比表&#x1f680; 该如…