当前位置: 首页 > article >正文

系统架构设计师—系统架构设计篇—基于体系结构的软件开发方法

文章目录

  • 概述
  • 基于体系结构的开发模型-ABSDM
    • 体系结构需求
    • 体系结构设计
    • 体系结构文档化
    • 体系结构复审
    • 体系结构实现
    • 体系结构演化

概述

基于体系结构(架构)的软件设计(Architecture-Based Software Design,ABSD)方法。

ABSD方法时体系结构驱动,即指构成体系结构的商业、质量和功能需求的组合驱动的。在基于体系结构的软件设计方法中,采用视角与视图来描述软件架构,采用用例来描述功能需求,采用质量场景来描述质量需求。

ABSD方法是一个自顶向下、递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。

ABSD方法有三个基础:

  1. 功能的分解:ABSD方法使用已有的、基于模块的内聚和耦合技术。
  2. 通过选择体系结构风格来实现质量和商业需求
  3. 软件模板的使用

基于体系结构的开发模型-ABSDM

ABSDM把整个基于体系结构的软件过程划分为体系结构需求、体系结构设计、体系结构文档化、体系结构复审、体系结构实现、体系结构演化的子过程,直到能产生软件构件和类。
在这里插入图片描述

体系结构需求

需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
体系结构需求过程主要是获取用户需求、标识系统中所要用到的构件,可以复用需求库中已有的构件
主要过程:

  1. 需求获取
  2. 标识构件:为系统生成初始逻辑结构,包含大致的构件。
    1. 第一步:生成类图。
    2. 第二步:对类进行分组。在生成的类图的基础上,使用一些标准对类进行分组可以大大简化类图结构,使之更清晰。
    3. 第三步:把类打包成构件。
  3. 需求评审
    1. 组织一个由不同代表(如分析人员、客户、设计人员、测试人员)组成的小组,对体系结构需求及相关构件进行仔细的审查。
    2. 审查的主要内容包括所获取的需求是否真实反映了用户的要求,类的分组是否合理,构件合并是否合理等。
    3. 必要时,可以再“需求获取—标识构件—需求评审”之间进行迭代。
      在这里插入图片描述

体系结构设计

主要过程:

  1. 提出体系结构模型:提出架构风格
  2. 映射构件:按照架构风格的思路映射构件
  3. 分析构件相互作用
  4. 产生体系结构
  5. 设计评审

在这里插入图片描述

体系结构文档化

主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书这两个文件。

体系结构复审

体系结构复审是一个迭代过程,目的是标识出潜在的风险尽早发现体系结构设计中的缺陷错误

从这个方面来说,在一个主版本的软件体系结构分析之后,要安排一次由外部人员(用户代表领域专家)参加的复审。

体系结构实现

主要过程:

  1. 复审后的文档化的体系结构
  2. 分析与设计
  3. 构件实现
  4. 构件组装
  5. 系统测试
  6. 体系结构演化
    在这里插入图片描述

体系结构演化

主要过程:

  1. 需求变化归类
  2. 体系结构演化计划
  3. 构件变动:更新构件库
  4. 更新构件的相互作用
  5. 构件组装与测试
  6. 技术评审
  7. 演化后的体系结构
    在这里插入图片描述

相关文章:

系统架构设计师—系统架构设计篇—基于体系结构的软件开发方法

文章目录 概述基于体系结构的开发模型-ABSDM体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构演化 概述 基于体系结构(架构)的软件设计(Architecture-Based Software Design,ABSD)方法。 AB…...

国产AI智能体manus和deepseek的区别

DeepSeek(深度求索)与Manus(全球首款通用AI助手)是当前中国AI领域的两大代表性产品,但两者的定位、技术路径与应用场景存在显著差异。以下从多个维度进行详细对比: 1. 核心定位与技术架构 DeepSeek 定位&am…...

Maven快速入门指南

Maven快速入门指南:从依赖管理到项目构建全解析 文章目录 Maven快速入门指南:从依赖管理到项目构建全解析一、认识Maven:Java项目的瑞士军刀1.1 什么是Maven?1.2 Maven的三大核心作用 二、快速安装配置2.1 环境准备2.2 安装步骤&a…...

linux 内网下载 yum 依赖问题

1.上传系统镜像 创建系统目录,用户存放镜像,如下: mkdir /mnt/iso上传 iso 文件到 /mnt/iso 文件夹下。 2.挂载系统镜像 安装镜像至 /mnt/cdrom 目录中 mount -o loop /mnt/iso/CentOS-7-x86_64-Minimal-xx.iso /mnt/cdrom3.修改yum源配…...

基于Python+Django的网上招聘管理系统

项目介绍 PythonDjango网上招聘系统的设计与实现(Pycharm Django Vue Mysql) 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。 - 前台功能包括:首页、岗位详情页、简历中…...

人生意气场概念解析

人生意气场 浅析人生意气场缘起为己之学悠然采菊面相方程组花间流风积分形式与梅易字品微分形式导引修正: 切触形式和结构的数学定义及名词解释切触形式α切触结构ξ 数学定义与解析"反者道之动,弱者道之用"慢道缓行理性人大语言模型量化解析太…...

数据仓库为什么要分层

数据仓库分层架构是数据仓库设计中的一个重要概念,其主要目的是为了更好地组织和管理数据,提高数据仓库的可维护性、可扩展性和性能。分层架构将数据仓库划分为多个层次,每个层次都有其特定的职责和功能。以下是数据仓库分层的主要原因和好处…...

番外篇 - Docker的使用

一、Docker的介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完…...

mapbox开发小技巧

自定义图标 // 1、单个图标 const url ./static/assets/symbols/code24x24/VIDEO.png // 图标路径 map.loadImage(url ,(error, image) > {if (error) throw errormap.addImage(video-icon, image) })// 2、雪碧图利用canvas // json和png图片 function getStyleImage(fil…...

Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...

Vue2&3 基礎性1. 關於Vue2和Vue3生命週期的差別2. Vue2&3組件之間傳參不同點Vue2 傳遞與接收Vue3 傳遞與接收 (使用script setup語法糖)Vue3 傳遞與接收 (不使用script setup語法糖) 3. Vue2&3 keep-alive 組件Vue2 keep-aliveVue3 keep-alive 進階性爲什麽POST請求…...

GitHub神秘组织3小时极速复刻Manus

一、背景 昨夜科技圈被两个关键词刷屏:​Manus激活码炒至6万,​GitHub神秘项目OpenManus突然开源。 Manus之所以如此火爆,是因为在演示视频中自主分析股票、筛选简历、规划旅行的能力。同时,想要体验Manus就需要内测邀请码&…...

文件上传漏洞(upload靶场)

目录 Pass-01:前端绕过 方法一:浏览器禁用js 方法二:直接修改或删除js脚本 方法三:修改后缀绕过 Pass-02:服务器检测 Pess-03:黑名单绕过 Pass-04:.htaccess文件 Pass-05:windows特性和user.ini 方法一:php.自动解析为ph…...

苦瓜书盘官网,免费pdf/mobi电子书下载网站

苦瓜书盘(kgbook)是一个专注于提供6英寸PDF和MOBI格式电子书的免费下载平台,专为电子阅读器用户设计。该平台为用户提供了丰富的电子书资源,涵盖文学、历史、科学、技术等多个领域,旨在打造一个全面的电子书资源库。用…...

Linux:理解进程,系统调用,进程,进程切换,调度,分时操作系统和实时操作系统,

操作系统要向上提供对应的服务 操作系统,不相信任何用户或者人;------------银行------窗口 因此提供了系统调用,(函数调用)-->用户和操作系统之间进行某种数据交互 一:系统调用 计算机的各种硬件资…...

深入理解Vue中的Component:构建灵活且可复用的前端模块

在前端开发的世界里,随着应用程序的规模和复杂度不断增加,如何有效地组织和管理代码成为了一个关键问题。Vue.js作为一款流行的前端框架,通过其强大的组件系统为开发者提供了一种优雅且高效的解决方案。本文将深入探讨Vue中的Component(组件),包括其基本概念、创建方式、…...

【javaEE】多线程(基础)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...

vscode - 操作整理

文章目录 vscode - 操作整理概述笔记打开文件后,编码另存为配置指定后缀的文件的语言模式语言模式配置 - Batch 安装eol插件配置文件如果用vscode打开的文件没有显示回车,原因及处理vscode启用了信任模式,需要信任工作区才行。 将打开的文件中…...

linux 基本命令教程,巡查脚本,kali镜像

linux实操 shutdown练习 Shutdown -h 5 意思是五个小时之后进行重启 新用户密码设置, Useradd 用户名 新建用户 Passwd 进行设置密码 覆盖关机时间 Shutdown -c 取消重启设置 top练习 查看进程 僵尸进程 kill:查看jobs号直接杀死 kill %num 查看…...

R语言使用scitable包交互效应深度挖掘一个陌生数据库

很多新手刚才是总是觉得自己没什么可以写的,自己不知道选什么题材进行分析,使用scitable包后这个完全不用担心,选题多到你只会担心你写不完,写得不够快。 今天演示一下使用scitable包深度挖掘一个陌生数据库 先导入R包和数据 li…...

Kali WebDAV 客户端工具——Cadaver 与 Davtest

1. 工具简介 在 WebDAV 服务器管理和安全测试过程中,Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端,主要用于远程文件管理,支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...

QSplashScreen启动画面开发详解

QSplashScreen启动画面 1. 基本概念2. 使用场景3. 基本操作与代码示例3.1 创建简单的启动画面3.2 动态更新启动画面信息4. 自定义启动画面样式4.1 自定义文字和背景5. 高级应用:结合多线程加载6. 注意事项7. 总结其他QT文章推荐QSplashScreen 是 Qt 框架中用于在应用程序启动时…...

线性代数笔记28--奇异值分解(SVD)

1. 奇异值分解 假设矩阵 A A A有 m m m行 n n n列 奇异值分解就是在 A A A的行向量上选取若干对标准正交基,对它作 A A A矩阵变化并投射到了 A A A的列空间上的正交基的若干倍数。 A v → u → σ u → ∈ R m v → ∈ R n A\overrightarrow{v}\overrightarrow{u…...

【记录一下学习】Embedding 与向量数据库

一、向量数据库 向量数据库(Vector Database),也叫矢量数据库,主要用来存储和处理向量数据。 在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向&#xff0c…...

面试准备——云相册项目(1)基础

项目概述 云相册项目旨在为用户提供便捷的照片存储、管理和访问服务。通过客户端与服务器的配合,实现照片的上传、下载以及一些基本的命令交互功能,方便用户在不同设备上随时查看和管理自己的相册。 技术要点 编程语言与环境:使用 C 语言开…...

Redis数据结构深度解析:从String到Stream的奇幻之旅(一)

Redis系列文章 《半小时掌握Redis核心操作:从零开始的实战指南》-CSDN博客 Redis数据结构深度解析:从String到Stream的奇幻之旅(一)-CSDN博客 Redis数据结构深度解析:从String到Stream的奇幻之旅(二&…...

Linux - 网络基础(应用层,传输层)

一、应用层 1)发送接收流程 1. 发送文件 write 函数发送数据到 TCP 套接字时,内容不一定会立即通过网络发送出去。这是因为网络通信涉及多个层次的缓冲和处理,TCP 是一个面向连接的协议,它需要进行一定的排队、确认和重传等处理…...

【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚前言 📖 IP地址的组成 🔖IPv4 🔖IPv6 &#x1f4da…...

解锁前端表单数据的秘密旅程:从后端到用户选择!✨

😄 解锁前端表单数据的秘密旅程:从后端到用户选择!✨ 嘿,技术爱好者们!👋 你有没有在开发中遇到过这样的困惑:表单里的数据(比如图片附件、识别点 ID)从哪儿来的&#x…...

Kotlin字符串操作在Android开发中的应用示例

Kotlin字符串操作在Android开发中的应用示例 引言 在Android开发中,Kotlin已经成为主流的编程语言,它提供了许多便捷的字符串操作功能。本文将结合一个具体的Kotlin示例程序,详细介绍Kotlin中字符串的创建、格式化和使用方法。 示例代码 以…...

【机械视觉】C#+visionPro联合编程———【一、C# + VisionPro 联合编程详解以及如何将visionPro工具加载到winform】

机械视觉与 C# VisionPro 联合编程详解 目录 机械视觉与 C# VisionPro 联合编程详解 概念 应用场景 1. 工业检测与质量控制缺陷检测 2. 定位与机器人引导 3. 识别与分类 4. 复杂流程控制 将visionPro工具加载到winform 环境准备 一、创建winform项目 二、打开窗体…...