软考系统架构师知识点集锦三:软件架构设计

news2024/9/23 11:43:11

 一、考情分析

二、考点精讲

2.1软件架构的概念

2.1.1什么是架构(暂无定论)

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

        软件架构风格是描述某-特定应用领域中系统组织方式的惯用模式。架构风格定义-个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。

        软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。

架构的本质:
        软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
        软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。

架构的作用:
        软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
        软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
        软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
        软件架构=软件体系结构
        架构设计就是需求分配,即将满足需求的职责分配到组件上。

2.1.2 架构“4+1”视图

结构模型:以架构的构件、连接件和其他概念来刻画结构
框架模型:不太侧重描述结构的细节而更侧重于整体的结构
动态模型:系统的“大颗粒”的行为性质
过程模型:构建系统的步骤和过程
功能模型:由一组功能构件按层次组成,下层向.上层提供服务

2.2软件架构风格

架构风格定义了用于描述系统的术语表和一组指导构建系统的规则

2.2.1数据流风格

(1)批处理序列
        构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在其前一步结束后才能开始,数据必须是完整的,以整体的方式传递。

(2)管道-过滤器

        每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常是通过对输入数据流的变换或计算来完成的,包括通过计算和增加信息以丰富数据、通过浓缩和删除以精简数据、通过改变记录方式以转化数据和递增地转化数据等。这里的构件称为过滤器,连接件就是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。

2.2.2调用/返回风格

(1)主程序/子程序
        单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,即充当连接件的角色。调用关系具有层次性,其语义逻辑表现为主程序的正确性取决于它调用的子程序的正确性。

(2)面向对象
        构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件即是对象间交互的方式,对象是通过函数和过程的调用来交互的。

(3)层次结构

        概念:构件组织成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层, 最多影响其相邻的两层(通常只能影响上层)。

2.2.3独立构件风格

(1)进程通信
        构件是独立的过程,连接件是消息传递。构件通常是命名过程,消息传递的方式可以是点对点、异步或同步方式,以及远程过程(方法)调用等。

(2)事件驱动系统(隐式调用)
        构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在-个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。这种风格中的构件是匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用来实现的。主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;其缺点是构件放弃了对系统计算的控制。

2.2.4虚拟机风格

(1) 解释器
        解释器通常包括一个完成解释 工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及-个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低。

(2)基于规则的系统
        基于规则的系统包括规则集、规则解释器、规则/数据选择器和工作内存, - -般用在人工智能领域和DSS中。

2.2.5仓库风格(以数据为中心的风格)

(1)数据库系统
        构件主要有两大类, 一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作。

(2)黑板系统

        包括知识源、黑板和控制三部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介; 知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中(信 号处理、问题规划和编译器优化等)。

(3)超文本系统
        构件以网状链接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点之间的联想式关联。超文本系统通常应用在互联网领域。

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

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

        当软件被用来操作一个物理系统时,软件与硬件之间可以粗略地表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态。适合于嵌入式系统,涉及连续的动作与状态。

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

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

2.2.7 C2风格

C2架构的基本规则:
构件和连接件都有一个顶部和一个底部。
构件的顶部要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。
一个连接件可以和任意数目的其它构件和连接件连接。
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

2.3典型架构应用

2.3.1层次架构

(1) MVC

  • Model (模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View (视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • Controller (控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

J2EE体系结构中:

  • 视图(View) : JSP
  • 控制(Controller) : Servlet
  • 模型(Model) : Entity Bean、Session Bean

(2) MVP

MVP与MVC关系: MVP是MVC的变种。

MVP的优点:

  • 模型与视图完全分离,我们可以修改视图而不影响模型。
  • 可以更高效地使用模型,因为所有的交互都发生在一个地方一- Presenter 内部。
  • 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  • 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。
     

(3) MVVM

2.3.2富互联网应用(RIA)

        RIA结合了C/S架构反应速度快、交互性强的优点,以及B/S架构传播范围广及容易传播的特性。
        RIA简化并改进了B/S架构的用户交互。
        数据能够被缓存在客户端,从而可以实现-个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。
        优点:反应速度快、易于传播、交互性强。

2.3.3物联网分层结构

2.3.4大数据分层结构

2.3.5基于服务的架构(SOA)

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

(3) SOA层次和特点

服务是标准化程度更高的构件。
服务构件粗粒度,传统构件细粒度居多(粗粒度)。
服务构件的接口是标准的,主要是WSDL接口,传统构件常以具体API形式出现(标准化结构)。
服务构件的实现与语言无关,传统构件绑定某种特定语言。
服务构件可以通过构件容器提供QoS的服务,传统构件完全由程序代码直接控制(松耦合) 。

        WSDL就是WebService接口对应的WSDL文件,该文件通过xml格式说明如何调用,可以看作WebService的接口文档(使用说明书)。

        REST: REST (Representational State Transfer,表述性状态转移)是一种只使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。

REST的5个原则:

  • 网络上的所有事物都被抽象为资源。
  • 每个资源对应一个唯一的资源标识。
  • 通过通用的连接件接口对资源进行操作。
  • 对资源的各种操作不会改变资源标识。
  • 所有的操作都是无状态的。
     

        ESB:消息中间件、服务总线,它是面向服务架构的一种实现方式。

[服务请求者与服务提供者之间解耦]
提供位置透明性的消息路由和寻址服务
提供服务注册和命名的管理功能
支持多种的消息传递范型
支持多种可以广泛使用的传输协议
支持多种数据格式及其相互转换
提供日志和监控功能

2.3.6微服务混合风格

(1) 什么是微服务

        微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。

(2)微服务的优势

(3)微服务面临的挑战

  • 分布式环境下的数据一致性[更复杂]
  • 测试的复杂性(服 务间依赖测试]
  • 运维的复杂性

(4)微服务与SOA的对比

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

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

相关文章

项目沟通管理案例题

1.规划沟通管理 没进行规划沟通管理 沟通管理计划不能一人制定 沟通管理计划内容不全 沟通管理计划完成后没有邀请有关干系人确认评审 制定沟通管理计划没有结合项目实际情况,只参考了以往的文件制定 项目经理对沟通管理经验不足 2.管理沟通 没做管理沟通 …

ps2024滤镜插件Portraiture

Photoshop 是最常用到的综合性的设计工具,虽然PS一直在迭代升级,但是在细节功能上,PS总是无法完全满足全部所有的用户需求,今天coco玛奇朵推荐一个个截至目前最受欢迎的免费的PS插件,有了这些功能扩展的插件后PS如虎添…

DC电源模块高功率元器件的散热问题

BOSHIDA DC电源模块高功率元器件的散热问题 随着电子产品的普及和发展,DC电源模块的应用越来越广泛,而高功率元器件的散热问题也变得日益重要。这是因为高功率元器件在工作时会消耗大量的电能,产生大量的热量,如果不能及时有效地…

第四章 文件管理 九、文件系统的层次结构

目录 一、层次结构图 二、例子 一、层次结构图 二、例子 用一个例子来辅助记忆文件系统的层次结构: 假设某用户请求删除文件“D:/工作目录/学生信息..xlsx”的最后100条记录。 1.用户需要通过操作系统提供的接口发出上述请求―一用户接口 2.由于用户提供的是文…

基于STM32室内空气净化监测系统设计

**单片机设计介绍,1649基于STM32室内空气净化监测系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序程序文档 六、 文章目录 一 概要 信息时代的进步,我们的生活潜移默化中发生了许多改变,物联网作为一个 陌生但…

4.1 数据库安全性概述

思维导图: 前言: - **第一章回顾**:数据库特点 - 统一的数据保护功能,确保数据安全、可靠、正确有效。 - 数据保护主要涵盖: 1. **数据的安全性**(本章焦点) 2. 数据的完整性(第…

『第七章』翩翩起舞的雨燕:顺序与并发执行

在本篇博文中,您将学到如下内容: 1. 顺序执行2. 主线程 Main Thread 的秘密3. 并发执行:GCD 与分发队列(DispatchQueue)4. 延时执行5. 数据竞争(Data Race)6. 线程间的同步7. 避免线程爆炸8. RunLoop 与定时器总结楚客自相送,沾裳春水边。 晚来风信好,并发上江船。 花映…

【Uva】11059-Maximum Product

1、题目 Uva 11059 2、题意 输入 n n n 个元素组成的序列 S S S,你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,应输出0(表示无解)。 1 ≤ n ≤ 18 , − 10 ≤ S i ≤ 10 1 \le n \le 18&…

SpringBoot修复Spring AMQP反序列化漏洞(CVE-2023-34050)

问题描述: 2023年10月 Spring官方披露 CVE-2023-34050 Spring AMQP反序列化漏洞漏洞。由于 SimpleMessageConverter 或 SerializerMessageConverter 默认未配置白名单,导致可以反序列化任意类。新版本中在未配置白名单的情况下则不允许反序列化任意类。…

墨西哥专线相关问题快问快答

随着全球贸易的不断发展,越来越多的企业在寻求更便捷、高效的物流解决方案。墨西哥专线作为一种跨境物流方式,受到了越来越多企业的关注。本文将为您解答关于墨西哥专线的相关问题,帮助您更好地了解和运用这一物流方式。 一、墨西哥专线是什么…

为什么要拼命冲刺备考浙大MBA?这可能是最实在的理由了

离考试还有俩月不足,最后的时间里还可以做哪些事情?还有多少种可能?答案是不断往前走就有很多可能性,止步不前大概率是没有可能。无论是提前批面试中已经获得优秀资格的考生还是常规批的考生,最后的备考时间里要说动力…

NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理

node-sass安装问题处理 1.问题2.处理2.1 方案一【我的环境失败】2.2 方案二【成功】2.3 方案三【成功】 1.问题 gyp verb which failed Error: not found: python2 # 1.添加Python27的安装路径到环境变量 gyp verb check python checking for Python executable "python…

【C++】多态 ① ( 类型兼容性原则与函数重写 | “ 多态 “ 引入 | 函数重写 )

文章目录 一、类型兼容性原则与函数重写1、" 多态 " 引入2、函数重写3、类型兼容性原则的几类情况4、父类与子类示例5、父类指针 指向 父类对象 / 子类对象6、父类引用 指向 父类对象 / 子类对象 二、完整代码示例 - 类型兼容性原则与函数重写1、代码示例2、执行结果…

【鸿蒙软件开发】ArkTS基础组件之Rating(评分组件)、RichText(富文本显示)

文章目录 前言一、Rating组件1.1 子组件1.2 接口参数 1.2 属性1.3 事件1.4 示例代码示例代码1示例代码2 二、RichText富文本显示2.1 子组件2.2 接口参数 2.3 事件2.4 属性2.5 富文本所支持的标签2.6 示例代码 总结 前言 Rating组件:提供在给定范围内选择评分的组件…

基于STM32的汽车仪表系统设计

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、方案设计1.1 总体方案论证1.2 项目总体设计 二、软件设计3.1 主程序设计 三、软件设计3.3 emWin图形界面实现实物附录2 源程序清单 四、 结论五、 文章目录 概要 本次课题基于STM32F407微型控制器以及CAN总线…

智能决策:数字孪生的商业洞察

数字孪生在企业管理中的应用是一项重要的技术趋势,它为企业提供了强大的工具,以数字化的方式模拟和管理其物理资产、流程和运营。本文将探讨数字孪生在企业管理中的关键应用领域,以及它对企业的益处。 1. 制造业优化 数字孪生可以在制造业中…

RabbitMQ-死信交换机和死信队列

1. 简介 DLX: Dead-Letter-Exchange 死信交换器,死信邮箱 2.代码示例 Configuration public class RabbitConfig {final static String exchangeNormalName "exchange.dlx.normal";final static String queueNormalName "queue.dlx.normal"…

springsecurity学习笔记-未完

目录 前言 一、概念 1.什么是springsecurity 2.对比shiro 二、开始项目 1.建立一个空项目,建立module,引入相关依赖 2.启动项目,访问项目 3.自定义密码 总结 前言 记录一下学习springsecurity的过程 开发环境:IDEA 一、概念 1.…

shell脚本的编写(输入、输出、变量、数组等的使用规范及实例)

1.shell中变量的定义 使用变量的值: 例子: 2.外部传参/位置变量 例子: 3.输出---echo 4.输入---read 5.命令置换符 作用:把指令的运行结果赋值给变量 6.数组--shell支持稀疏数组

计算机视觉的相机选型

#你一般什么时候会用到GPT?# 目前市面上的工业相机大多是基于CCD(ChargeCoupled Device)或CMOS(Complementary Metal Oxide Semiconductor)芯片的相机。一般CCD制造工艺更加复杂,也会更贵一点! 1、CCD工…