系统架构设计师-软件架构设计(3)

目录

一、软件架构风格(其它分类)

        1、闭环控制结构(过程控制)  

        2、C2风格

        3、MDA(模型驱动架构 Model Driven Architecture)

        4、特定领域软件架构(DSSA)

                4.1 DSSA基本活动及产出物:

                4.2 DSSA类型:

                4.3 参与DSSA的人员:        

                4.4 建立过程:

                4.5 三层次模型:

二、软件架构评估

        1、质量属性

                1.1 性能

                1.2 可用性 

                1.3 安全性

                1.4 可修改性

                1.5 易用性

                1.6 可测试性


一、软件架构风格(其它分类)

        1、闭环控制结构(过程控制)  

                适合嵌入式系统用于解决简单闭环控制问题

                经典应用:空调温控,定速巡航

        2、C2风格

        

                C2架构的基本规则:

                (1)构件和连接件都有一个顶部和底部

                (2)构件的顶部要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。

                (3)一个连接件可以和任意数目的其他构件和连接件连接。

                (4)当两个连接件进行直接连接时,必须由其中一个底部连接到另一个底部。

        3、MDA(模型驱动架构 Model Driven Architecture)

                形式化开发方法,数学模型为基础,层层映射机制

                - Model ?  客观事物的抽象表示

                - Model-Driven ?  使用模型完成软件的分析、设计、构建、部署、维护等各开发活动

                - Architecture ?  构成系统的部件、连接件及其约束的规约

                - MDA 起源于分离系统规约和平台实现的思想

                

                - MDA的主要目标:

                (1)Portability(可移植性)(2)interoperability(互通性)

                (3)Reusability(可重用性)

                - MDA核心模型

                (1)计算无关模型(CIM):对某具体行业内的一个项目的业务需求及其系统功能需求进行分析。(行业共性需求)

                (2)平台独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型。(需求层级)

                (3)平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型。PIM会变换成一个或多个PSM。

                (4)代码Code:用源代码对系统的描述(规约)。每个PSM都将变换成代码。

        4、特定领域软件架构(DSSA)

                定义特定领域软件架构以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,支持一个特定领域中多个应用的生成

                4.1 DSSA基本活动及产出物:

                (1)领域【分析】 获得 领域模型

                (2)领域【设计】 获得 特定领域软件架构(DSSA)

                (3)领域【实现】 获得 开发和组织可复用信息

                4.2 DSSA类型:

                (1)垂直域:相同领域,深入。

                (2)水平域:不同领域,平移。

                4.3 参与DSSA的人员:        

                (1)领域专家:有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。领域专家的主要任务包括提供关于领域中系统需求规约和实现的知识。

                (2)领域分析人员:领域分析人员应由具有知识工程背景的有经验的系统分析员来担任。

                (3)领域设计人员:领域设计人员应由有经验的软件设计人员来担任。

                (4)领域实现人员:领域实现人员应由有经验的程序设计人员来担任。

                4.4 建立过程:

                4.5 三层次模型:

                        领域开发环境就是开发行业领域中的共性的东西,领域特定的应用开发环境就是在原产品上完成对客户的个性化开发,也就是二次开发。应用执行环境就是运行环境,跟开发无关。

 

二、软件架构评估

        1、质量属性

                四个主要质量属性:性能、可用性、安全性、可修改性

                1.1 性能

                        性能(performance)是指系统的响应能力,既要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件个数。

                        例如:

                        (1)同时支持1000并发;

                        (2)响应时间小于1s;

                        (3)显示分辨率达4K;

                1.2 可用性 

                         可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。

                        例如:

                        (1)主服务器故障,1分钟内切换至备用服务器;

                        (2)系统故障,一小时内修复;

                        (3)系统支持7 * 24小时工作;

                1.3 安全性

                         安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性有又可划分为机密性【信息不泄漏给未授权的用户】、完整性【防止信息被篡改】、不可否认性【不可抵赖】及可控性【对信息的传播及内容具有控制能力】等特性。

                        例如:

                        (1)可抵御SQL注入攻击;

                        (2)对计算机的操作都有完整记录;

                        (3)用户信息数据库授权必须保证99.9%可用;

                1.4 可修改性

                        可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。

                        例如:

                        (1)更改系统报表模块,必须在2人周内完成;

                        (2)对Web界面风格进行修改,修改必须在4人月内完成;

                1.5 易用性

                        易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。

                        例如:

                        (1)界面友好

                        (2)新用户学习使用系统时间不超过2小时

                1.6 可测试性

                        软件可测试性是指通过测试揭示软件缺陷的容易程度。

                        例如:

                        (1)提供远程调试接口,支持远程调试。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL之深入InnoDB存储引擎——Checkpoint机制

文章目录 一、引入二、LSN三、触发时机 一、引入 由于页的操作首先都是在缓冲池中完成的,那么如果一条DML语句改变了页中的记录,那么此时页就是脏的,即缓冲池中页的版本要比磁盘的新。那么数据库需要将新版本的页刷新到磁盘。倘若每次一个页…

Unity源码分享-黄金矿工游戏完整版

Unity源码分享-黄金矿工游戏完整版 项目地址:https://download.csdn.net/download/Highning0007/88118933

Raki的读paper小记:RWKV: Reinventing RNNs for the Transformer Era

Abstract&Introduction&Related Work 研究任务 基础模型架构已有方法和相关工作 RNN,CNN,Transformer稀疏注意力(Beltagy等人,2020年;Kitaev等人,2020年;Guo等人,2022年&am…

arm 函数栈回溯

大概意思就是arm每个函数开始都会将PC、LR、SP以及FP四个寄存器入栈。 下面我们看一下这四个寄存器里面保存的是什么内存 arm-linux-gnueabi-gcc unwind.c -mapcs -w -g -o unwind&#xff08;需要加上-mapcs才会严格按照上面说的入栈&#xff09; #include <stdio.h> …

Flutter 开发者工具 Android Studio 开发Flutter应用

Flutter 开发者工具 在 Android Studio 开发Flutter应用 &#x1f525; Android Studio 版本更新 &#x1f525; Android Studio Check for Update Connection failed ​ 解决方案 如果是运行的是32位的android studio需要在andriod studio的启动目录下找到studio.exe.vmoptio…

Flutter-基础Widget

Flutter页面-基础Widget 文章目录 Flutter页面-基础WidgetWidgetStateless WidgetStateful WidgetState生命周期 基础widget文本显示TextRichTextDefaultTextStyle 图片显示FlutterLogoIconImageIamge.assetImage.fileImage.networkImage.memory CircleAvatarFadeInImage 按钮R…

抖音账号矩阵系统开发源码

一、技术自研框架开发背景&#xff1a; 抖音账号矩阵系统是一种基于数据分析和管理的全新平台&#xff0c;能够帮助用户更好地管理、扩展和营销抖音账号。 部分源码分享&#xff1a; ic function indexAction() { //面包屑 $breadcrumbs [ [tit…

【雕爷学编程】MicroPython动手做(13)——掌控板之RGB三色灯2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

Java另一种debug方法(not remote jmv debug),类似python远程debug方式

这种Debug类似python的debug方式&#xff0c;是运行时将业务代码及依赖推送到Linux并使用Linux的java运行运行程。只要本地能运行&#xff0c;就能自动将代码推送到Linux运行&#xff0c;不需打包及设置远程debug jvm参数&#xff0c;适合一些项目Debug调试 运行时会推送一些依…

67. 二进制求和

题目链接&#xff1a;力扣 解题思路&#xff1a;模拟十进制中的列竖式方法进行计算&#xff0c;逢二进一&#xff0c;因为高位在前&#xff0c;低位在后&#xff0c;两个二进制长度不一定相等&#xff0c;可以取两者长度的较大值&#xff0c;从后面开始遍历两个字符串&#xff…

【算法基础:动态规划】5.3 计数类DP(整数拆分、分拆数)

文章目录 例题&#xff1a;900. 整数划分解法1——完全背包解法2——分拆数⭐⭐⭐ 例题&#xff1a;900. 整数划分 https://www.acwing.com/problem/content/902/ 解法1——完全背包 容量是 n&#xff0c;物品的大小和价值是 1 ~ n 中的所有数字。 import java.util.*;pub…

Echarts 文字太长用省略号代替

xAxis: [{type: category,data: [materialUserEchartsDate.value[0] ? materialUserEchartsDate.value[0].name : ,materialUserEchartsDate.value[1] ? materialUserEchartsDate.value[1].name : ,materialUserEchartsDate.value[2] ? materialUserEchartsDate.value[2].na…

RabbitMQ 集群部署

RabbiMQ 是用 Erlang 开发的,集群非常方便,因为 Erlang 天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbitMQ 的集群节点包括内存节点、磁盘节点。RabbitMQ 支持消息的持久化,也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。 RabbitMQ 模式大…

Kibana+Prometheus+node_exporter 监控告警部署

下载好三个软件包 一、prometheus安装部署 1、解压 linxxubuntu:~/module$ tar -xvf prometheus-2.45.0-rc.0.linux-amd64.tar.gz 2、修改配置文件的IP地址 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is ever…

Eclipse memory analyzer 分析GC dump日志定位代码问题

1、问题描述&#xff1a; 使用命令 jstat -gcutil [pid] 查看JVM GC日志&#xff0c;发现生产系统频繁FullGC&#xff0c;大概几分钟一次&#xff0c;而且系统响应速度变慢很多 再使用 free -g 查看服务器内存全部占用&#xff0c;猜测是内存溢出了 2、导出dump日志 jmap -du…

修改整数(有点坑,所以发出来了)

问题描述 小贝给了小聪一个正整数 x&#xff0c;但是小聪决定把这个数改掉。她可以把整数 x 每个位置上的数 t 改成 9-t。 请你帮助小聪来计算一下&#xff0c;如何把 x 改成一个最小的正整数&#xff0c;注意&#xff0c;不能出现首位为 0 的情况。 输入格式 输入一个正整数…

Flowable-中间事件-消息中间抛出事件

定义 消息中间事件指在流程中将一个消息事件作为独立的节点来运行。它是一种抛出事件&#xff0c;当流程 执行到消息中间事件时就会中断在这里&#xff0c;一直等待被触发&#xff0c;直接到该事件接收到相应的消息后&#xff0c;流 程沿后继路线继续执行。消息事件是一种引用…

6门新兴语言,小众亦强大

编码语言在塑造我们创建软件的方式方面起着至关重要的作用。多年来&#xff0c;我们观察到Python&#xff0c;Java和C等成熟语言的流行。然而&#xff0c;如今一波新的编码语言浪潮已经出现&#xff0c;提出了创造性的解决方案&#xff0c;并推动了软件工程领域所能完成的极限。…

Redis学习路线(6)—— Redis的分布式锁

一、分布式锁的模型 &#xff08;一&#xff09;悲观锁&#xff1a; 认为线程安全问题一定会发生&#xff0c;因此在操作数据之前先获取锁&#xff0c;确保线程串行执行。例如Synchronized、Lock都属于悲观锁。 优点&#xff1a; 简单粗暴缺点&#xff1a; 性能略低 &#x…

如何在3ds max中创建可用于真人场景的巨型机器人:第 5 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. After Effects 中的项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 我有真人版 我在After Effects中导入的素材。这是将 用作与机器人动画合成的背景素材。 实景镜头 步骤 3 有背景 选定的素材…