软件架构和基于架构的软件开发方法知识总结
一、软件架构定义
软件架构为软件系统提供了一个结构、行为和属性的高级抽象
软件架构是一种表达,使软件工程师能够:
(1)分析设计在满足所规定的需求方面的有效性
(2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案
(3)降低与软件构造相关的风险
软件体系结构的设计通常涉及数据设计和体系结构设计
二、软件架构设计与生命周期
软件架构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。
1. 需求分析阶段:软件架构设计的起步阶段,主要解决如何根据需求模型构建SA模型,如何保证模型转换的可追踪行。
2. 设计阶段:
架构描述语言(ADL):是一种形式化的语言,基本元素:构建、连接件、架构配置
架构的“4+1”视图:

3. 实现阶段
4. 构建组装阶段
主要研究方面:
(1)如何支持可复用构件的互联
(2)在组装的过程中,如何检测并消除体系结构失配问题
引起构建失配的原因:
(1)由构件引起的失配
(2)由链接子引起的失配
(3)由于系统成分对全局体系结构的假设存在冲突引起的失配
5. 部署阶段
6. 后开发阶段:主要围绕维护、演化、复用等方便进行
三、软件架构的重要性
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。软件架构是项目干系人进行交流的手段;软件架构是可传递和可复用的模型;软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计。
1. 架构设计能够满足系统的品质
2. 架构设计使受益人达成一致的目标
3. 架构设计能够支持计划编制过程
4. 架构设计对系统1开发具有指导性
5. 架构设计能够有效地管理复杂性
6. 架构设计为复用奠定了基础
7. 架构设计能够降低维护费用
8. 架构设计能够支持冲突分析
四、基于架构的软件开发方法(ABSD)
定义:ABSD方法是由架构驱动的,即指由构成系统的商业、质量、功能需求的组合驱动的。
ABSD的三个基础:1. 功能的分解;2. 通过选择体系结构风格来实现质量和商业需求;3. 软件模版的使用。
ABSD能够很好的支持软件复用,ABSD方法是一个自顶向下,递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生构件和类
视角与视图:从不同的视角来观察对架构的描述
用例和质量场景:用例用来捕获功能需求;质量场景用来捕获质量需求
ABSD的软件过程规划:

1. 需求获取:
需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。
架构需求的来源:系统的质量目标、系统的商业目标、系统开发人员的商业目标

2. 架构设计:

3. 架构文档话:
主要输出结果:体系结构规格说明书和测试体系结构需求的质量设计说明书
文档的要求:
1. 文档要从使用者的角度进行编写;
2. 必须分发给所有与系统有关的开发人员
3. 必须保证开发者手上的文档是最新的
4. 架构复审:
复审的目的是标识潜在的风险,及早发现体系结构这种的缺陷
5. 架构实现:

6. 架构演化:

相关文章:
软件架构和基于架构的软件开发方法知识总结
一、软件架构定义 软件架构为软件系统提供了一个结构、行为和属性的高级抽象 软件架构是一种表达,使软件工程师能够: (1)分析设计在满足所规定的需求方面的有效性 (2)在设计变更相对容易的阶段,…...
环信新版单群聊UIKit集成指南——Android篇
前言 环信新版UIKit已重磅发布!目前包含单群聊UIKit、聊天室ChatroomUIKit,本文详细讲解Android端单群聊UIKit的集成教程。 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开发的一款即时通讯 UI 组件库,提供各种组件实现会话列表、聊天界…...
最细致最简单的 Arm 架构搭建 Harbor
更好的阅读体验:点这里 ( www.doubibiji.com ) ARM离线版本安装 官方提供了一个 arm 版本,但是好久都没更新了,地址:https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新,我看…...
mysql基础02
1.常用函数 字符串处理函数 length(str) 统计字符长度char_length(str) 统计以(单个字符为单位)的字符长度ucase/upper(str) 小写变大写lcase/lower(str) 大写变小写substr(s,start,end) 从s截start到end的字符串instr(str,"str1") str1在str的位置是? trim(str) 去…...
css的box-shadow详解
CSS的box-shadow属性用于在元素框上添加阴影效果。它可以为元素提供外阴影或内阴影,并且可以控制阴影的颜色、偏移距离、模糊半径以及扩展半径。 box-shadow属性的基本语法如下: box-shadow: h-shadow v-shadow blur spread color inset;下面是各个参数…...
递归的个人总结
递归函数(递去、回归)是函数不断的调用自己; 可以按照如下来理解:func1中调用func2,func2中调用func3; func3函数返回了,继续执行func2中的语句;func2执行完了,继续执行func1之后的…...
使用PDFBox调整PDF每页格式
目录 一、内容没有图片 二、内容有图片 maven依赖,这里使用的是pdfbox的2.0.30版本 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version></dependency>…...
【3D reconstruction 学习笔记】
三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…...
(附源码)基于Spring Boot与Vue的宠物用品销售系统设计与实现
前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 ἱ…...
Qwen及Qwen-audio大模型微调项目汇总
Qwen及Qwen-audio可微调项目调研 可用来微调方法/项目汇总ps.大语言模型基础资料 可用来微调方法/项目汇总 Qwen github 项目自带的finetune脚本 可以参考https://blog.csdn.net/qq_45156060/article/details/135153920PAI-DSW中微调千问大模型(阿里云的一个产品&a…...
浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog
为什么要写这么一篇介绍ArcGis的文章呢?因为大部分人也包括ArcGisdada,在使用ArcMap应用程序创建工程时总以为我们就是使用了ArcGis这个软件的所有。其实不然,在后期的接触和使用中慢慢发现原来ArcMap只是ArcGis这个综合平台的一部分…...
AndroidStudio插件出现“Compatible with IntelliJ IDEA only“错误时的解决方案
原因:插件比较老,配置可能存在问题 1.修改plugins文件夹下的jar包(插件) 找到AndroidStudio所在位置 打开plugins文件夹,找到需要修改的jar包,通过压缩软件用zip方式打开,找到\META-INF\plugin.xml并编辑,在<version>xxxx</versi…...
探索未来的编程趋势与挑战
摘要: 本文将探讨未来编程领域可能面临的挑战和发展趋势,包括人工智能、量子计算、区块链等新兴技术对编程的影响,以及程序员需要具备的新技能和素质。 随着人工智能技术的快速发展,机器学习、深度学习等算法在编程领域的应用越来…...
第十二届蓝桥杯省赛CC++ 研究生组
十二届省赛题 第十二届蓝桥杯省赛C&C 研究生组-卡片 第十二届蓝桥杯省赛C&C 研究生组-直线 第十二届蓝桥杯省赛C&C 研究生组-货物摆放 第十二届蓝桥杯省赛C&C 研究生组-路径 第十二届蓝桥杯省赛C&C 研究生组-时间显示 第十二届蓝桥杯省赛C&C 研究生组…...
Ubuntu自启GUI程序
问题描述 最近搞了一个项目,程序需要自动启动,系统是Ubuntu,先搞了成服务方式(配置的文章很多,可以自己找找),程序还是不启动 ,最后加到/etc/rc.local文件里面启动,看调试信息,需要…...
【光标精灵】让您享受鼠标皮肤多样化快捷更换
鼠标作为我们日常使用频率最高的“小伙伴”,扮演着至关重要的角色。尤其是在女生群体中,对于打造一个个性化、可爱的电脑桌面和软件界面的需求日益增长。然而,尽管电脑默认提供了一些可更换的光标图案,但仍显得有些单调和呆板。想…...
Vue 常见面试题(一)
目录 1、Vue 的最大的优势是什么?(必会) 2、Vue 和 jQuery 两者之间的区别是什么?(必会) 3、MVVM 和 MVC 区别是什么?哪些场景适合?(必会) 1、基本定义 2…...
Elasticsearch 的 scroll API
对于大量数据,可以使用 Elasticsearch 的 scroll API 来分批次地读取数据,以避免一次性读取所有数据造成的内存负担。这段代码使用滚动查询(scroll)来分批次地读取数据。首先,它发送初始的搜索请求,并获取第…...
Leedcode刷题——2 字符串
注:以下代码均为c 1. 反转字符串 void reverseString(vector<char>& s) {int n s.size();int i, j;for(i 0, j n - 1; i < j; i, j--){swap(s[i], s[j]);}}2. 整数反转 int reverse(int x) {int rev 0;while(x ! 0){if(rev < INT_MIN / 10 || …...
2016年认证杯SPSSPRO杯数学建模B题(第二阶段)多帧图像的复原与融合全过程文档及程序
2016年认证杯SPSSPRO杯数学建模 B题 多帧图像的复原与融合 原题再现: 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制,拍摄设备只能在较低的分辨率下成像。为简单起见,我们只考虑单色成像。假设成像的分辨率为 32 64&#x…...
告别繁琐安装!在线PPT制作神器PPTist,浏览器就能创作专业演示文稿
告别繁琐安装!在线PPT制作神器PPTist,浏览器就能创作专业演示文稿 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS P…...
用OpenSearch实现电商语义搜索
想象一下,一位顾客搜索"适合团队通话的经济型无线耳机"。传统的关键词搜索返回零结果,因为您的商品标题中并不包含所有这些确切词汇。但借助由生成式 AI 嵌入模型驱动的语义搜索,OpenSearch 能够理解用户意图——并将您最好的带降噪…...
4步快速上手:用APK-Installer在Windows上轻松安装安卓应用,告别模拟器烦恼
4步快速上手:用APK-Installer在Windows上轻松安装安卓应用,告别模拟器烦恼 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑…...
数据可视化如何落地?一篇讲清楚数据可视化应用
其实大部分人一开始学数据可视化,最容易卡在一个地方,就是学了不少图表类型,真到工作里却不知道该怎么用。经常会问:这张图到底该怎么做,这些数据到底该怎么展示,这样展示是不是对业务真有帮助?…...
考研数学二想拿高分?武忠祥老师强化讲义里的这些“坑”你绕过去了吗?
考研数学二高分避坑指南:武忠祥强化讲义典型误区全解析 1. 极限与连续:那些年踩过的"存在性"陷阱 极限存在性的判断一直是考生最容易栽跟头的地方。武忠祥老师在强化讲义中特别强调,很多同学对"去心邻域内处处有定义"这一…...
Python 测验
Python 测验 引言 Python 作为一种高级编程语言,因其简洁易读、功能强大等特点,在编程领域备受青睐。为了帮助读者检验自己对 Python 的掌握程度,本文特此推出一份 Python 测验。本测验涵盖了 Python 的基础知识、常用库以及高级特性,旨在帮助读者全面了解 Python 的应用…...
质数判定的平方根法则对打印质数问题
定理:如果一个数 x,在2~√x都没有能整除它的数,那么x就是质数。证明:对于一个在2~x - 1的数 t,如果它能整除 x,那么一定有一个数d x / t,也能整除 x。又因为d * t x,√x * √x x&…...
PCA vs PCoA vs NMDS vs LDA vs t-SNE:5种降维方法的核心差异与应用场景解析
1. 降维方法的基本概念与核心价值 当你面对一个包含数百个特征的数据集时,就像站在一个装满各种调料的厨房里——每个瓶子看起来都很重要,但真正做菜时可能只需要其中几种。这就是降维技术的用武之地,它能帮我们从高维数据的"调料架&quo…...
QKeyMapper:3分钟学会Windows按键自定义,从此告别繁琐操作
QKeyMapper:3分钟学会Windows按键自定义,从此告别繁琐操作 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到…...
Tusky性能优化技巧:如何打造流畅的Mastodon体验
Tusky性能优化技巧:如何打造流畅的Mastodon体验 【免费下载链接】Tusky An Android client for the microblogging server Mastodon 项目地址: https://gitcode.com/gh_mirrors/tu/Tusky Tusky作为一款优秀的Android版Mastodon客户端,其性能优化设…...
