系统架构设计师 软件架构的定义与生命周期
软件架构的定义
通过一系列的设计活动,以满足系统的
功能性需求和符合一定的非功能性需求与质量属性有相似含义的软件系统框架模式。在软件体系结构设计过程中,主要考虑的是系统的非功能性需求
软件体系结构设计经验的总结与重用是软件工程的重要目标之一,所采用的手段主要包括体系结构风格、DSSA(特定领域的架构)
软件架构设计的重要性
了解
- 架构设计能够满足系统的品质
- 架构设计使受益人达成一致的目标
- 架构设计能够支持计划编制过程
- 架构设计对系统开发的指导性
- 架构设计能够有效管理复杂性
- 架构设计能够为复用奠定基础
- 架构设计能够降低维护费用
- 架构设计能够支持冲突分析
架构设计的生命周期
选择题,但是你要知道有哪些阶段,对于每一个阶段干什么事情要知道
- 需求分析
- 设计阶段
- 实现阶段
- 构件组装阶段
- 部署阶段
- 后开发阶段
需求分析
起步阶段
需求和软件架构设计面临的是不同的对象:
- 问题空间
- 解空间
保持二者的可追踪行和转换,一直是软件工程领域追求的目标
从软件需求模型向软件架构模型的转换主要关注两个问题
如何根据需求模型构件软件架构模型如何保证模型转换的可追踪性
设计阶段
主要研究如下内容
软件架构模型的描述软件架构模型的设计与分析方法对软件架构设计经验的总结与复用
有关软件架构模型描述的研究分为三个层次
- SA的基本概念
即
SA模型由哪些元素组成,这些组成元素之间按照何种原则组织
传统的设计概念只包括构件以及一些基本的模块互联机制。随着研究的深入,构件间的互联机制逐渐独立出来,成为与构件同等级别的实体,被称之为连接子
- 体系结构描述语言 , ( A r c h i e t c t u r e D e s c r i p t i o n L a n g u a g e , A D L ) 体系结构描述语言,(Archietcture\ Description\ Language,ADL) 体系结构描述语言,(Archietcture Description Language,ADL)
支持构件、连接子及其配置的描述语言是如今所说的体系结构描述语言。
你可以认为VDL就是你画架构图的时候用的哪些图形文字之类的东西
- 软件架构模型的多视图表示
即从不同的视角描述特定系统的体系结构,从而得到多个视图,并将这些视图组织起来以描述整体的软件架构模型。
典型的包括4+1视图
实现阶段
干的活有如下几个方面
- 研究基于软件架构的开发过程支持,如项目组织结构、配置管理等等
- 寻求从软件架构向实现过渡的途径,如将程序设计语言元素引入软件架构阶段、模型映射、构建组装,复用中间件平台等
- 研究基于软件架构的测试技术。
构件组装阶段
研究的内容如阿西哎
- 如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持
- 组装过程中,如恶化检测并消除体系结构失配问题。这些问题主要包括
- 由构件引起的失配
包括由于系统对构件基础设施、构件控制模型和构建数据模型的假设存在冲突引起的失配
- 由连接子引起的失配
包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配
- 由于系统成分对全局体系结构的假设存在冲突引起的失配
要解决失配问题,首席按需要检测出失配问题,并在此基础上通过适当的手段消除检测出的适配问题
即你去宜家,家具都是组装而成的,但不幸的是,我们找到的板材和螺丝钉连接不起来,对不上,你就可以认为这是构件之间引起的失配,连接子引起的失配,往大的说,就是对全局体系结构的失配
部署
- 提供更高层的体系结构视图描述部署阶段的软硬件模型
- 基于软件架构模型可以分析部署方案的质量属性,从而选择合理的部署方案
后开发阶段
软件部署安装之后的阶段
主要研究围绕维护、演化、复用等方面进行。典型的研究方向包括动态软件体系结构、体系结构恢复与重建等等
相关文章:
系统架构设计师 软件架构的定义与生命周期
软件架构的定义 通过一系列的设计活动,以满足系统的功能性需求和符合一定的非功能性需求与质量属性有相似含义的软件系统框架模式。在软件体系结构设计过程中,主要考虑的是系统的非功能性需求 软件体系结构设计经验的总结与重用是软件工程的重要目标之一…...
从零开始使用Surya-OCR最新版本0.6.1——最强文本检测模型:新添表单表格检测识别
目录 一、更新概述 二、环境安装 1.基础环境配置 2.模型参数下载 3.参数地址配置——settings.py 三、指令使用 1.命令指令运行 一、更新概述 surya项目Github地址:https://github.com/VikParuchuri/surya 号称今年最强OCR的surya近期迎来新的更新,Vik…...
linux中级wed服务器(https搭建加密服务器)
一。非对称加密算法: 公钥:公共密钥,开放 私钥:私有密钥,保密 1.发送方用自己的公钥加密,接受方用发送方的私钥解密:不可行 2.发送方用接受方的公钥加密,接受方用自己的私钥解密…...
聊一聊为什么企业数字化转型总是三天热度
听到“数字化转型”,是不是脑子里立马蹦出各种炫酷词汇:AI、大数据、物联网、区块链……瞬间觉得公司马上就要起飞?可惜,现实往往是:转型刚刚起步时大家热血沸腾,结果没过多久一哄而散。最终,这…...
2025年NPDP产品经理认证考试时间和报考条件
在报考2025年NPDP认证考试前,了解NPDP相关考试信息是非常重要的,可以帮助我们更好地制定备考计划,提高学习效率。 NPDP考试时间 NPDP考试每年举办两次,分别在5月和11月进行,且考试一般安排在周末,以便在职的专业人士…...
微信小程序文字转语音播报案例
插件申请 在小程序官方申请同声传译插件,地址: mp.weixin.qq.com 引入插件 在app.json中加入 "plugins": {"WechatSI": {"version": "0.3.6","provider": "wx069ba97219f66d99"}},封装…...
QT SSDP 局域网检测支持扫描通信
一. 什么是SSDP? 简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用层协议,简单服务发现协议是在HTTPU和HTTPMU的基础上实现的协议。简单服务发现协议(SSDP)提供了在局域网里面发现设备的机制。客户端可以通过使用SSDP,根据自己的需要,在局域网查找特…...
python_学习2(仅为本人学习记录)
二、变量与字符串 1、变量的声明和赋值 a.变量在使用前必须要先赋值 b.删除变量,可以通过del语句删除。 a123 del a c.链式赋值 xy123 相当于 x123;y123 d.解包赋值 a,b,c1,2,3 相当于 a1 b2 c3 使用解包赋值给变量交换值:a,b3,4 a,bb,a 2、基本…...
手动将python的flask程序打包成exe在windows上执行
1、安装pyinstaller工具 (venv) PS D:\django\locallibrary> pip install pyinstaller Collecting pyinstallerDownloading pyinstaller-6.11.0-py3-none-win_amd64.whl.metadata (8.4 kB) Requirement already satisfied: setuptools>42.0.0 in d:\django\locallibrary…...
老生常谈,MySQL事务隔离级别
在 MySQL 关系型数据库中,事务隔离级别主要有以下四种: 1)读未提交(READ UNCOMMITTED): 这是最低的隔离级别,在该级别下,一个事务可以看到另一个事务尚未提交的数据修改。这可能会…...
百度翻译以及另外三款翻译工具推荐!!!
在这个全球化的时代,翻译工具已经成为我们生活中不可或缺的一部分。我们需要使用翻译工具来克服语言障碍,无论是出国旅行、商务谈判还是学术研究。那么,市场上有各种各样的翻译工具。有哪些好用的在线翻译软件呢?别担心࿰…...
Redis JSON介绍和命令大全
Redis JSON介绍和命令大全 Redis JSON先说说JSON是什么再说说JSON Path先推荐两个网站JSONPath JAVA clents Redis JSON 安装内存json命令语法命令url命令解释JSON.ARRAPPENDJSON.ARRINDEXJSON.ARRINSERTJSON.ARRLENJSON.ARRPOPJSON.ARRTRIMJSON.CLEARJSON.DEBUG MEMORYJSON.DE…...
yolo自动化项目实例解析(八)自建UI-键鼠录制回放
项目中关于键鼠的操作,不像我们之前自动化那样一步一步去定义的,而是用C写了一个记录键鼠的操作,通过回放的方法来实现的 一、通讯系统 1、创建websocket服务器 首先通过事件循环asyncio 和websockets,创建一个持久化的服务端进程…...
C++ 面向对象知识汇总(超详细)
学习交流:0voice GitHub 1.什么是类? 在C中,类(Class) 是一种用户定义的数据类型,用来描述具有相同特征和行为的一组对象。类是面向对象编程(OOP)的核心概念,它通过将…...
stm32使用SIM900A模块实现MQTT对接远程服务器
SIM900A模块是一种GSM/GPRS无线通信模块,它可以通过SIM卡连接移动通信网络,并通过串口或USB接口与微控制器或计算机进行通信。 SIM900A驱动代码如下: #include "stm32f10x.h" #include "stdio.h" #include "stdlib.h" #include "sim900a…...
MATLAB Simulink (一)直接序列扩频通信系统
MATLAB & Simulink (一)直接序列扩频通信系统 写在前面1 系统原理1.1 扩频通信系统理论基础1.1.1 基本原理1.1.2 扩频通信系统处理增益和干扰容限1.1.3 各种干扰模式下抗干扰性能 1.2 直接序列扩频通信系统理论基础1.2.1 基本原理1.2.2 物理模型 2 方…...
标准数字隔离器主要特性和应用---腾恩科技
在现代电子系统中,不同电路部分之间需要可靠的隔离,尤其是在高压环境或必须保持敏感信号完整性的情况下。一种这样的解决方案是使用标准数字隔离器。这些组件在电路的不同部分之间提供电气隔离,确保安全、降噪和可靠的信号传输。本文深入探讨…...
Spring事务的七种传播行为
Spring事务的七种传播行为 1.事务的传播行为是什么?2.具体传播行为2.1 REQUIRED ,默认,存在事务则加入该事务,不存在则新建一个事务2.2 REQUIRES_NEW,每次新开启事务,新老事务相互独立2.3 NESTED࿰…...
win10怎么卸载软件干净?电脑彻底删除软件的方法介绍,一键清理卸载残留!
电脑上经常会下载各种各样的软件来协助我们办公,不同的软件能够满足不同的需求。 但是不少软件可能使用频率没有那么高,甚至完全不使用。这个时候就需要将这些不常用的电脑软件卸载掉了,卸载软件能够释放一定的存储空间,提高电脑…...
excel中,将时间戳(ms或s)转换成yyyy-MM-dd hh:mm.ss或毫秒格式
问题 在一些输出为时间戳的文本中,按照某种格式显示更便于查看。 如下,第一列为时间戳(s),第二列是转换后的格式。 解决方案: 在公式输入框中输入:yyyy/mm/dd hh:mm:ss TEXT((A18*3600)/8640070*36519, "yyy…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
