软件架构和基于架构的软件开发方法知识总结

news2024/12/24 20:45:54

一、软件架构定义

        软件架构为软件系统提供了一个结构、行为和属性的高级抽象

        软件架构是一种表达,使软件工程师能够:

        (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. 架构演化:

        


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

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

相关文章

【LeetCode】升级打怪之路 Day 27:回溯算法 — 单词拆分问题

今日题目: 140. 单词拆分 II139. 单词拆分 参考文章:回溯算法:单词拆分 今天主要做了两道单词拆分的问题,都是需要使用回溯算法来解决,第一个题目难度不大,第二个题目需要在“剪枝”上多做一些功夫&#xf…

总线--通信的“道路“

前言 大家好,我是jiantaoyab,前面讲了CPU和内存,那么CPU 从我们的键盘、鼠标接收输入信号,向显示器输出信号,这之间究竟是怎么通信的呢?换句话说,计算机是用什么样的方式来完成,CPU…

【工具使用】VScode如何设置中文环境

操作步骤 1.1 安装中文插件 1.2 设置为中文,然后重启 按照插件的使用方法介绍设置中文: 按下“CtrlShiftP”组合键以显示“命令面板”: 输入“dispaly”,选择“Configure Display Language”: 选择“中文简体” …

第十五届蓝桥杯嵌入式模拟考试I

第十五届蓝桥杯嵌入式模拟考试I 时隔多日,蓝桥杯比赛将之,听老师说还有模拟题这个东西(以前从没听说过),不模拟不知道,一模拟吓一跳,废话不多说直接上图,这是只做编程题的得分满分85,剩下的几分我实在拿不…

C语言:数据在内存中的存储

目录 一、 整数在内存中的存储二、 大小端字节序和字节序判断1.什么是大小端2.为什么有大小端3.练习(1)练习1(2)练习2(3)练习3(4)练习4(5)练习5(6)练习6 三、 浮点数在内存中的存储1.练习2.浮点数的存储(1) 浮点数存的过程(2)浮点数取的过程 3.题目解析 一、 整数在内存中的存储…

亚马逊AWS展示高效纠错的全新量子比特!

亚马逊网络服务公司(AWS)在量子计算的纠错技术领域取得了显著成就,极大地简化了量子系统的复杂性和资源需求。他们的研究人员通过采用“双轨擦除”量子比特(dual-rail erasure qubit)技术,有效地克服了量子…

四川宏博蓬达法律咨询有限公司:法律服务安全的新标杆

在这个法治社会,法律服务行业扮演着越来越重要的角色。四川宏博蓬达法律咨询有限公司,作为行业内的佼佼者,始终坚持以客户为中心,为客户提供专业、高效、安全的法律服务。 一、公司背景与实力展示 四川宏博蓬达法律咨询有限公司自…

python的BBS论坛系统flask-django-nodejs-php

为了更好地发挥本系统的技术优势,根据BBS论坛系统的需求,本文尝试以B/S架构设计模式中的django/flask框架,python语言为基础,通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff…

Python 将HTML转为PDF、图片、XML、XPS格式

网页内容是信息传播的主要形式之一。在Web开发中,有时候我们需要将HTML文件以不同的格式保存或分享,比如PDF、图片(如PNG或JPEG)、XML或XPS等。这些格式各有优势,适合不同的用途。在这篇文章中,我们将介绍如…

【OpenCV C++Python】(五)图像平滑(模糊)

文章目录 图像平滑均值滤波高斯滤波中值滤波双边滤波(Bilateral Filtering ) PythonC 图像线性平滑空间滤波(加权均值滤波器,几何均值滤波,谐波均值滤波,逆谐波均值滤波),非线性平滑空间滤波(中…

mysql 索引原理为什么用b+树而不用二叉树

在数据库中,索引是一种数据结构,它能够快速定位到存储在数据库表中特定行的数据。MySQL等数据库管理系统通常使用B树作为索引的数据结构,而不使用二叉树,主要基于以下几个原因: 高度平衡:B树是一种多路搜索…

【python】python3基础

文章目录 一、安装pycharm 二、输入输出输出 print()文件输出:格式化输出: 输入input注释 三、编码规范四、变量保留字变量 五、数据类型数字类型整数浮点数复数 字符串类型布尔类型序列结构序列属性列表list ,有序多维列表列表推导式 元组tu…

三角形单元悬臂梁Matlab有限元编程 【程序源码+PPT讲义】|平面单元 | 三节点

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

虚拟机安装Linux系统,FinalShell远程连接Linux

1.虚拟机安装CentOS系统 2. 查看CentOS系统的ip地址 3. FinalShell远程连接Linux 3.虚拟机快照(存档) 确保虚拟机关机,找到快照模拟器 恢复快照

字符函数与字符串函数

目录 一.字符分类函数 二.字符转化函数 三.strlen函数 函数的介绍 strlen函数的模拟实现 1.计算器法 2.递归 三.指针-指针的方式 四.strcpy函数 函数介绍 strcmp的模拟实现 五.strcat函数 函数介绍 strcat的模拟实现 六.strcmp函数 函数介绍 返回值 strcm…

论文阅读-MIPD:一种用于分布式深度神经网络训练的自适应梯度稀疏化框架

摘要—基于参数服务器架构的异步训练广泛应用于大规模数据集和深度神经网络模型的扩展训练。在大规模分布式深度学习系统中,通信一直被认为是主要瓶颈。最近的研究尝试通过梯度稀疏化和量化方法来减少通信流量。我们发现前期研究存在三个限制。首先,他们…

pycharm中anaconda虚拟环境下进行matlab函数调用设置

1,具体的matlab版本对应的engine参考 matlab安装路径下的“extern\engines\python”文件夹内,setup.py文件打开可以查看 例如我的安装路径是“C:\Program Files\Polyspace\matlabR2021a\extern\engines\python”,matlab版本是2021a&#xf…

c++的学习之路:2、入门(1)

一、 C关键字 c的关键字要比c语言要多31个足足有63个,这里我只是了解了下每个有啥作用,具体使用方法以及更多的知识将在后续学习中,慢慢扩展使用,下方表格就是c的63个关键字 asmdoifreturntryautodoubleinlinetypedefdynamic_ca…

新能源汽车BMS应用设计

新能源汽车BMS应用设计 电池管理系统(BMS) 概述 电池管理系统(BMS)为一套保护动力电池使用安全的控制系统,时刻监控电池的使用状态,通过必要措施缓解电池组的不一致性,为新能源车辆的使用安全…

Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1.)

检查下根目录下的 build.gradle 配置 , 是否只配置了 jcenter 仓库 ,加上 google()mavenCentral() 重新编译试一下