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

目录

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.hqwc.cn/news/637425.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《乱弹篇(30)厌战的杜诗》

时下地球村有一伙成天叫嚣着“打打杀杀”、鼓吹快快发动战争的狂人,他们视老百姓的生命如草芥,毫不珍惜。没有遭受过战火焚烧的人,也跟着成天吠叫“快开战吧”。然而中国唐朝大诗人却是个“厌战派”,他对战争的厌恶集中表现在诗《…

Navicat Premium 16最新版激活 mac/win

Navicat Premium 16 for Mac是一款专业的多连接数据库管理工具。它支持连接多种类型的数据库,包括MySQL、MongoDB、Oracle、SQLite、SQL Server、PostgreSQL等,可以同时连接多种数据库,帮助用户轻松地管理和迁移数据。 Navicat Premium 16 fo…

机器学习与深度学习 --李宏毅(笔记与个人理解)Day 20

Day 20 RNN 2 实际使用和其他应用 在实际的学习(training)过程中是如何工作的? step 1 Loss step 2 training Graindent Descent 反向传播的进阶版 – BPTT CLIpping 设置阈值~ 笑死昨天刚看完关伟说的有这玩意的就不是好东西 Why&#xff1…

大模型系列课程学习-大预言模型微调方法介绍

1.大语言模型相关基本概念综述 语言模型指对语言进行建模,其起源于语音识别(speech recognition),输入一段音频数据,语音识别系统通常会生成多个句子作为候选,究竟哪个句子更合理? 学术上表达为:描述一段自…

驶向成功:如何选择适合国际拓展的完美CRM

一、出海企业应该怎么选择CRM? 出海企业在选择CRM系统时,需要考虑行业特性以及在对外业务过程中可能遇到的问题。接触了一些出海企业客户,总结了以下出海企业在选择CRM时的诉求。 1、合法合规风险 出海企业的业务遍布不同国家地区&#xff…

sso-oauth2单点登录功能笔记

场景:最近公司2个系统需要做单点登录,A系统作为服务器,认证方式是sso-oauth2方式,B系统作为客户端,token方式是ta-token,先来张sso-oauth2认证方式的图 前置准备工作 第一步:要确认谁是服务提…

AI+PS快捷键大全!

hello,我是小索奇, 你会用Photoshop(PS)或者(Illustrator)AI吗?相信很多人都会接触到吧,但有一部分人很少用快捷键,仅凭借鼠标点击来实现功能,殊不知快捷键能…

如何添加所有未跟踪文件到暂存区?

文章目录 如何将所有未跟踪文件添加到Git暂存区?步骤与示例代码1. 打开命令行或终端2. 列出所有未跟踪的文件3. 添加所有未跟踪文件到暂存区4. 验证暂存区状态 如何将所有未跟踪文件添加到Git暂存区? 在版本控制系统Git中,当我们首次创建新文…

2024HW ---->内网横向移动

在蓝队的面试过程中,如果你会内网渗透的话,那是肯定的一个加分选项!!! 那么从今天开始,我们就来讲一下内网的横向移动!!! 目录 1.域内任意用户枚举 2.Password-Sprayi…

Java基础之JVM对象内存分配机制简介

一 对象内存分配 1.1 运行时数据区域 1.2 常见java应用启动JVM参数: -Xss:每个线程的栈大小(单位kb)-Xms:堆的初始大小,默认物理内存的1/64,示例:-Xms:4g -Xms:10m-Xmx:堆的最大可用大小,默认物…

STM32单片机C语言模块化编程实战:LED控制详解与示例

一、开发环境 硬件:正点原子探索者 V3 STM32F407 开发板 单片机:STM32F407ZGT6 Keil版本:5.32 STM32CubeMX版本:6.9.2 STM32Cube MCU Packges版本:STM32F4 V1.27.1 之前介绍了很多关于点灯的方法,比如…

数电期末复习(一)数制和码制

数制和码制 1.1 概述1.2 几种常用的数制1.2.1 十进制(Decimal)1.2.2 二进制(Binary)1.2.3 二-十进制之间的转换1.2.4 十六进制和八进制1.2.5 任意进制之间的转换 1.3 二进制代码1.3.1 二-十进制码(BCD Binary Coded Decimal)1.3.2…