【软考---系统架构设计师】软件架构

news2024/12/26 23:01:36

目录

1

一、软件架构的概念

二、软件架构风格

(1)数据流风格​​​​​​​

(2)调用/返回风格

(3)独立构件风格

(4)虚拟机风格

(5)仓库风格

三、架构描述语言(ADL)

四、基于架构的软件开发

五、质量属性

六、软件架构评估

七、软件产品线

软件产品线的建立方式

软件产品线——组织结构

八、构件与中间件技术

九、Web架构设计


软件架构重要考点

    *软件架构的概念(***)

    *软件架构风格(*****)

    *架构描述语言ADL(***)

    *特定领域软件架构(***)

    *基于架构的软件开发(****)

    *软件质量属性(*****)

    *软件架构评估(*****)

    *软件产品线(***)

    *构件与中间件技术(****)

    *Web架构设计(*****)

一、软件架构的概念

一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。

体系结构并非可运行软件。确切地说,它是一种表达,使软件工程师能够:

  • 分析设计在满足规定需求方面的有效性。
  • 在设计变更相对容易的阶段,考虑体系结构可能的选择方案。
  • 降低与软件构造相关联的风险。

架构设计就是需求分配,即将满足需求的职责分配到组件上

二、软件架构风格

(1)数据流风格

批处理序列

构件作为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递。

管道-过滤器

每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。

早期编译器就是采用的这种架构。要一步一处理的,均可考虑采用此架构风格

(2)调用/返回风格

主程序/子程序

单线程控制,把问题划分为为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。

面向对象

构件是对象,对象是抽象数据类型的实例。

层次结构

构件组织成一个层次结构,连接件通过决定层间如何交互的协议来定义,每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。

层次结构的优点

(1)支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。

(2)不同的层次处于不同的抽象级别

(2)为软件复用提供了强大的支持

缺点

(1)并不是每个系统可以很容易低划分为分层的模式

(2)很难找到一个合适的,正确的层次抽象方法

(3)独立构件风格

进程通信

构件是独立的过程,连接件是消息传递。

事件驱动系统(隐式调用)

构件不直接调用一个过程,而是触发或广播一个或多个事件。(注意是触发,关键字是触发)

(4)虚拟机风格

解释器

具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低(关键字是自定义需求的场景)

基于规则的系统

有相应的知识库作为支撑,一般用于人工智能领域和DSS(辅助决策)中。

(5)仓库风格

数据库系统

就我们用的那些MySQL,oracle等等啊,大致就是这种意思

黑板系统

包括有知识源,黑板,控制三部分。黑板是一个全局数据库,就是相当于一个共享的。具体例子:信号处理,语音识别,问题规划,编译器优化等。

超文本系统

构件以网状链接方式相互连接,类比于HTML的超文本链接

现代集成编译环境一般采用这个这种架构风格

上面说的五种风格是主要的,后面的架构风格也要求掌握

(1)闭环控制架构(过程控制)

当软件被用来操作一个物理系统时,软件和硬件之间可以粗略地表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态。适用于嵌入式系统,涉及连续的动作与状态。(关键看有没有从环境中取值,然后不断地去调整平衡)

(2)C2风格

(3)层次架构风格

MVC架构风格

Model(模型)

View(视图)

Controller(控制器)

MVP架构风格

View

Model

Presenter

MVP是MVC的变种,实现了V和M之间的解耦,并且更好的支持单元测试;业务逻辑在P中,界面事件由C处理
 

MVVM风格

(4)富互联网应用(RIA)

思想:第一次打开缓慢,但是之后的运行快,表现力强。原因是第一次打开时将常用的资源都下载到了本地。

(5)基于服务的架构(SOA)                                                        

服务是一种为了满足某项业务需求的操作,规则等的逻辑组合,它包含一系列有序活动的交互,为实现用户目标提供支持。

SOA是一种思想,一种方法论,但是没有提供具体实践性的一些标准实践性标准包括了服务总线(ESB)

特点:松散耦合,粗粒度,标准化接口

SOA的实现方式——Web Service

SOA的实现方式——ESB

企业服务总线(ESB)

提供位置透明性的消息路由和寻址服务

提供服务注册和命名的管理功能

提供日志和监控功能

(6)微服务架构

将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合。

特点:

小,且专注于做一件事情,轻量级的通信机制,松耦合,独立部署

微服务和SOA区别

微服务SOA
能拆分就拆分是整体的,服务能放在一起就都放在一起
纵向业务拆分       是水平分多层
由单一组织负责按层级划分不同部门的组织负责
细粒度粗粒度
两句话可以解释明白几百字只相当于SOA的目录
独立的子公司类似大公司里面划分了一些业务单元
组件小存在较复杂的组件
业务逻辑存在于每一个服务中业务逻辑横跨多个业务领域
使用轻量级的通信方式,如HTTP企业服务总线(ESB)充当了服务之间通信的角色

(7)MDA风格

使用模型完成软件分析,构建,部署等活动。模型驱动

三、架构描述语言(ADL)

ADL的三个基本元素

(1)构件:计算或数据存储单元

(2)连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则

(3)架构配置:描述体系结构的构件与连接件的连接图

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

领域分析机制中的角色:

领域专家(充当军师)

领域分析人员,领域设计人员,领域实现人员(这三个都是干活的) 

DSSA——三层次模型

四、基于架构的软件开发

基于架构的软件开发方法——基于架构的软件设计(ABSD)

ABSD方法是架构驱动,即强调由业务,质量和功能需求的组合驱动架构设计。

ABSD方法有三个基础。第一个基础是功能的分解;第二个基础是通过选择架构风格来实现质量和业务需求;第三个基础是软件模板的使用

ABSD方法是递归的,且每一个步骤都是清晰定义的。

视角和视图:从不同的视角来检查,所以有不同的视图。

用例用来捕获功能需求,特定场景来捕获质量需求(非功能需求)

基于架构的软件开发方法——开发过程

五、质量属性

其实质量属性是属于软件架构评估这一个大的知识点中的

1、性能

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

代表参数:响应时间,吞吐量                      设计策略:优先级队列,资源调度

2、可用性

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

代表参数:故障间隔时间                               设计策略冗余,心跳线

3、安全性

指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。

设计策略:追踪审计

4、可修改性

指能够快速地以较高的性能价格比对系统进行变更的能力。

主要策略:信息隐藏

5、可靠性

是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。主要考虑两个方面:容错,健壮性。(一般符合情况都认为是可用性,除非特别强调才认为是可靠性)

后面的其实不怎么重要,知道有就行了

6、功能型

7、可变性

8、互操作性

六、软件架构评估

风险点:系统架构风险是指架构设计潜在的,存在问题的架构决策所带来的隐患。

敏感点:为了实现某种特定的质量属性,一个或多个构建所具有的特性

权衡点:影响多个质量属性的特性,是多个质量属性的敏感点

非风险点:是指不会带来隐患,一般以XXX要求是可以实现或接受的方法表达

软件架构评估——基于场景的方式

(1)SAAM

最初用于分析架构可修改性,后扩展到其他质量属性

(2)ATAM

在SAAM基础上发展起来的,主要针对性能,实用性,安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。

第一阶段 场景和需求收集

第二阶段 架构视图和场景实现

第三阶段 属性模型构造和分析

第四阶段 折中

七、软件产品线

产品线是多个知识领域的综合体,软件产品线会包括特定领域架构DSSA

特点:核心资源,产品集合,过程驱动,特定领域,技术支持,以架构为中心。

软件产品线的建立方式

演化方式革命方式
基于现有产品基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构件(将现有产品演化为产品线核心资源的开发基于现有产品集的需求和可预测的,将来需求的超集(用软件产品线替代现有产品集
全新产品线产品线核心资源随产品新成员的需求而演化(全新软件产品线的演化开发满足所有预期产品线成员的需求的核心资源(全新软件产品线的开发

软件产品线——组织结构

组织结构类型

(1)设立独立的核心资源小组

(2)不设立独立的核心资源小组

(3)动态的组织结构

成功实施产品线的主要取决因素;

(1)对该领域具备长期和深厚的经验

(2)好的产品线架构

(3)好的管理(软件资源,人员组织,过程)支持

(4)一个用于构建产品的好的核心资源库

八、构件与中间件技术

构件

定义:软件构件是一个组装单元,它具有规范的接口约束和显示的语境依赖。软件构件可以被独立地部署并由第三方任意地组装

构件的复用

构件的复用分为四步:

(1)检索与提取构件

(2)理解与评价构件

(3)修改构件

(4)组装构件

中间件技术

中间件是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同的技术之间共享资源

中间件技术的优点

(1)面向需求

(2)业务的分隔和包容性

(3)设计与实现隔离

(4)隔离复杂的系统资源

(5)符合标准的交互模型

(6)软件复用

(7)提供对应应用软件的管理

具体的中间件技术

Corba(公共对象请求代理体系结构)

伺服对象:CORBA对象的真正实现,负责完成客户端请求

对象适配器:用于屏蔽ORB内核的实现细节,为服务器对象的实现着提供抽象接口,以便他们使用ORB内部的某些功能

对象请求代理:解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务器对象的位置,通信方式,实现,激活或存储机制。

九、Web架构设计

从架构来看        MVC,MVP,MVVM,REST,Webservice,微服务,中台
从缓存来看MemCache,Redis,Squid
从并发分流来看集群(负载均衡),CDN
从数据库来看主从库(主从复制),内存数据库,反规范化技术,NoSQL,分区(分表)技术,视图与物化视图
从持久化来看Hibernatr,Mybatis
从分布存出来看Hadoop,FastDFS,区块链
从数据编码来看XML,JSON
从Web应用服务器来看Apache,,WebService,WebLogic,Tomcat,JBOSS。
其他静态化,有状态与无状态,响应式Web设计

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

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

相关文章

知识图谱的起源与发展

文章目录 知识图谱的发展历史知识图谱的重要性知识图谱与Ontology、语义网络之间的区别知识图谱的定义 知识图谱的发展历史 知识图谱始于20世纪50年代,至今大致分为三个发展阶段:第一阶段 (1955年—1977年)是知识图谱的起源阶段&a…

C++学习————第八天(C/C++内存管理)

目录 1、1.C/C内存分布 2、 C语言中动态内存管理方式:malloc/calloc/realloc/free 3、C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 4.operator new与operator delete函数 5. new和delete的实现原理 5.1 内置类型 5.2 自定…

C++ 初识模板

目录 0.前言 1.泛型编程 2.函数模板 2.1概念 2.2格式 2.3原理 2.4函数模板的实例化 2.4.1隐式实例化 2.4.2显式实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 4.结语 (图像由AI生成) 0.前言 在 C 中&a…

密码学 | 承诺:常见的承诺方案

🥑原文:密码学原语如何应用?解析密码学承诺的妙用 - 知乎 1 简介 密码学承诺 涉及 承诺方、验证方 两个参与方,以及以下两个阶段: 承诺阶段:承诺方选择一个敏感数据 v v v,为它计算出相应…

docker打包部署自己的应用

docker部署应用 当谈及使用 Docker 进行容器化部署应用时,可以想象它是一个能够将整个应用程序及其所有依赖项打包成一个独立、可移植的容器的工具。这个容器不仅包含了应用代码,还包括了操作系统、运行时环境以及所有依赖的库和组件。这样一来&#xf…

Python 全栈安全(二)

原文:annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者:飞龙 协议:CC BY-NC-SA 4.0 第二部分:认证与授权 本书的第二部分是最具商业价值的部分。我这样说是因为它充满了大多数系统需要具备的实用工作流示例&#xf…

nginxtomcat笔记

nginx是一个轻量级高性能的http和反向代理web服务器,优点:占用内存少,并发能力强 实验主机:192.168.200.141 192.168.200.142 1.虚拟主机 1.1基于域名:一台服务器,一个端口,部署多个网站 在ng…

Transformer - Teacher Forcing

Transformer - Teacher Forcing flyfish 在训练过程中,将目标序列输入给解码器的方法称为(Teacher Forcing)。这个术语又代表什么意思呢? 这里的目标序列就是Ground Truth,也就是我们已知的正确答案 一句话就是我们…

火灾风险把控:数据采集卡搭配传感器实现电路异常全面监控!

引言 在现代社会中,火灾安全和用电安全是人们生活和工作中不可忽视的重要问题。为了有效应对火灾风险和电路异常情况,阿尔泰科技引入了一项创新解决方案:利用PXIe5681多功能数据采集卡对小信号的高精度测量优势,搭配电压传感器监…

使用代理绕过网站的反爬机制

最近在尝试收集一些网络指标的数据, 所以, 我又开始做爬虫了。 :) 我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误…

文本嵌入新方案:合合信息acge模型荣登C-MTEB榜首

目录 0 写在前面1 文本嵌入:LLM落地的根基2 C-MTEB:acge荣夺榜一2.1 max tokens2.2 文本分类2.3 文本聚类 3 acge demo演示与体验总结 0 写在前面 随着信息技术的发展和应用场景的不断扩大,人们需要处理和利用大量的文档信息。而传统的手动处…

深度学习transformer架构详细详解

一、transformer的贡献 transformer架构的贡献:该架构只使用自注意力机制,没有使用RNN或卷积网络。且可以实现并行计算,加快模型训练速度。 (将所有的循环层全部换成:multi-headed self-attention) 二、t…

39. UE5 RPG角色释放技能时转向目标方向

在上一篇,我们实现了火球术可以向目标方向发射,并且还可以按住Shift选择方向进行攻击。技能的问题解决,现在人物释放技能时,无法朝向目标方向,接下来我们解决人物的问题。 实现思路: 我们将使用一个官方的…

C++ //练习 12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob中的每个元素。

C Primer(第5版) 练习 12.20 练习 12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob中的每个元素。 环境:Linux Ubuntu(云服务器) 工…

密码学 | Random Oracle 随机预言机

​ 🥑原文:究竟什么才是随机预言机呢? - 玄星的回答 🥑答主指出: 英文维基明明对 随机预言机 给出了两个完全不同的理解,但这两个理解之间的连接词却是 “Stated differently”,即 “换句话说…

LabVIEW多设备控制与数据采集系统

LabVIEW多设备控制与数据采集系统 随着科技的进步,自动化测试与控制系统在工业、科研等领域的应用越来越广泛。开发了一种基于LabVIEW平台开发的多设备控制与数据采集系统,旨在解决多设备手动设置复杂、多路数据显示不直观、数据存储不便等问题。通过RS…

c语言利用控制台实现贪吃蛇

使用控制台实现贪吃蛇需要的技能加点: 控制台设置(包含于stdlib.h): 定义命令行窗口高/宽: system("mode con cols100 lines30"); system() 函数是一个C标准库函数,它允许程序执行操作系统命令…

Java中创建对象内存分析

package day31; ​ public class Pet {String name;int age;public void shout(){System.out.println("叫了一声");} } ​ package day31; ​ public class Application {public static void main(String[] args) {Pet cat new Pet();cat.name"肥波";cat…

Linux——网络管理nmcli

nmcli 不能独立使用,需要对应的服务启动 1. NetworkManager.service 2. 网络配置和服务不相关 3. 通过 nmcl i 建立网络配置和网卡之前的映射关系 网卡 简称:nmcli d DEVICE :物理设备 TYPE: 物理设备类型 ethernet 以太网…

螺纹滑牙的原因有哪些——SunTorque智能扭矩系统

螺纹滑牙的原因,通常是由于在旋紧或旋松过程中,螺纹副之间的摩擦力不足以维持所需的预紧力或工作载荷,导致螺纹副的相对位置发生变化。这种现象可能由多种因素引起,包括材料选择不当、设计不合理、制造工艺缺陷、环境因素以及使用…