软考系统架构师笔记——综合知识

目录

考试时间

2023.11.04

综合知识 9:00-11:30

案例分析+论文 14:30-18:00

综合知识

错题笔记

  • 🌟软件需求开发的最终文档,通过评审后定义了开发工作的需求基线,它在客户和开发者之间构筑了产品功能需求和非功能需求的一个需求约定,是需求开发和需求管理之间的桥梁。

    • 软件评审是软件质量保证的主要活动之一。
  • 🌟🌟在企业内部的信息集成中,应用系统集成实现了不同系统之间的互操作,业务过程集成实现了不同应用系统之间的连接、协作和信息共享。

  • 企业应用集成中,面向过程的集成模式强调处理不同应用系统之间的交互逻辑,与核心业务逻辑相分离,并通过不同应用系统之间的协作共同完成某项业务功能。

  • 🌟系统应用集成构建统一标准的基础平台,在各个应用系统的接口之间共享数据和功能,基本原则是保证应用程序的独立性。系统应用集成提供了4个不同层次的服务,最上层服务是流程控制服务。

  • 🌟软件活动主要包括软件描述、软件开发、软件有效性验证和软件进化

  • 🌟面向对象的模型

    • 分析模型 = 顶层架构图+用例与用例图+领域概念模型
    • 设计模型 = 以包图表示的软件体系结构图、以交互图表示的用例实现图+类图+描述复杂对象的状态图+用于描述流程化处理过程的活动图
  • 设计模型 = 以包图表示的软件体系结构图+以交互图表示的用例实现图+完整精确的类图+针对复杂对象的状态图+泳衣描述流程化处理过程的活动图

  • 基于构件的开发模型包括软件的需求分析定义、体系结构设计、构件库建立、应用软件构建,以及测试和发布 5 个顺序执行的阶段。

  • 逆向工程导出的信息可以分为 4 个抽象层次

    1. 实现级:抽象语法树、符号表
    2. 结构级:反映程序分量之间的相互以来关系,如调用图、结构图
    3. 功能级:反映功能及程序段之间的关系
    4. 领域级:反映程序与应用领域概念之间对应关系
  • 程序流程图的环形复杂度 = 判定节点数 P + 1

  • 评价程序中:评价准确度最高的是真实程序;用得最多、最频繁的核心程序作为标准程序,称其为基准测试程序。

  • BPEL4WS:Business Process Execution Language For Web Service,面向 Web 服务的业务流程执行语言,用来将分散的、功能单一的 Web 服务组织称一个复杂的有机应用。

  • 在 ANSI/IEEE1471-2000 标准中,视图主要用于描述软件架构模型,视角描述某个利益相关人所关注架构模型的某一方面,架构是对所有利益相关人关注点的响应和回答。

  • 在计算机指令周期中,为了能从内存中读指令操作码,首先将程序计数器 PC 的内容送到地址总线上。

  • IETF 定义的区分服务模型要求每个 IP 分组都要根据 IPv4 协议头中的服务类型字段加上一个 DS 码点,然后调度和转发。

  • 信息流分析:找出输入变量和输出变量之间的依赖关系。

  • COP:面向构件编程,有 4 个特性:多态性、模块封装性、后期绑定和装载、安全性

  • I/O 接口与打印机交换信息一般采用异步传输方式。

  • RAD:Rapid Application Development,快速应用开发,通过使用基于构件的开发方法获得快速开发,当系统模块化程度较高时,最适合于采用 RAD 方法。

  • 标准函数库是一种典型的水平式重用。

  • 项目范围定义的输入包括:项目章程、项目范围管理计划、组织过程资产和批准的变更申请

  • 检验模型的技术细节不需要被企业负责人理解,他们只需要宏观认可。

  • 全局概念模式:定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用传统的集中式数据库中所采用的方法进行定义。

  • 离线数据访问模式:与数据库交互的次数并不频繁,但是每次的数据量相对较大,同时也希望能够使得本地操作有较好的交互体验。

  • 双核心架构的缺点是投资较单核心高,核心端口密度要求较高。

  • 电子商务系统中参与电子商务的实体包括:客户、商户、银行和认证中心

  • 系统输入设计中,采用内部控制方式以确保输入系统数据的有效性,域检查用于验证数据是否位于合法的取值范围。

一、架构设计基础

1 计算机系统基础

  • 冯·诺伊曼计算机结构 = 运算器+控制器+存储器+输入设备+输出设备,中央处理器CPU = 运算器+控制器
  • 🌟DSP:Digital Signal Processor 信号处理器,专用于实时的数字信号处理,常采用哈佛体系结构
  • 操作系统具有并发性、共享性、虚拟性和不确定性
  • CORBA:Common Object Request Broker Architecture,公共对象请求代理架构
    • ORB:对象请求代理,解释调用并负责查找实现该请求的对象
    • 公共对象服务
    • 公共设施
    • 🌟Servant:伺服对象,CORBA 对象的真正实现,负责完成客户端请求。
    • Object Adapter:对象适配器,用于屏蔽实现细节,提供抽象接口
  • EJB 是 J2EE的构件标准,其中的构件称为 Bean,可以分为会话Bean,实体Bean和消息驱动Bean
  • UML中四种关系
    • 依赖:使用的关系
    • 关联:拥有的关系,组合关系和聚合关系的区别在于组合关系中的“部分”只能属于一个“整体”,且生命周期相同
    • 泛化:父子继承关系
    • 实现:接口和实现之间
    • e.g. 在线学习系统中,课程学习和课程考试都需要先检查学员的权限,“课程学习”与“检查权限”两个用例之间属于包含关系
  • UML 的 “4+1”视图
    • 实现视图/开发视图:开发者,查看配置,物理代码的文件和构件
      • 包图、组件图
    • 进程视图/过程视图:集成者,查看性能,逻辑视图的一次执行实例,描述了并发与同步结构
      • 活动图
    • 部署视图/物理视图:系统工程师,查看拓扑,软件到硬件的映射和分布结构
      • 部署图
    • 逻辑视图:最终用户,查看功能,描述涉及的对象模型和对象间的关系
      • 类图、对象图、状态图、协作图
    • 用例视图/场景视图:测试者,查看行为,需求分析模型
  • UML 的 3 种视图
    • 静态视图:用例图、类图、包图(由模型本身分解而成的组织单元,以及他们之间的依赖关系)
    • 动态视图:活动图、状态图、序列图、协作图
    • 交互视图:序列图、协作图
  • UML 2 种类型
    • 结构图

      • 类图:类的内部属性和行为
      • 对象图
      • 组件图
      • 部署图
    • 行为图

      • 用例图
      • 顺序图:进出系统的信息流,包括对象、生命线和消息
      • 活动图:主要用来描述动态视图,能表达并发(粗线引出的分支)
      • 状态图:对象的内部行为
      • 通信图

2 嵌入式基础

  • 嵌入式系统具有操作系统的基本功能,如多任务调度、同步机制。
  • 嵌入式系统分层
    • 硬件层
    • 抽象层:硬件抽象层(HAL) 提供硬件资源,将操作系统与硬件平台隔开,使操作系统具有硬件无关性;板级支持包(BSP)提供对硬件的管理。
    • 操作系统层
    • 中间件层
    • 应用层
  • 存储器分类
    • RAM:Random Access Memory 随机存取存储器
      • DRAM:Dynsmic ~ 动态,常作主存
      • SRAM:Static ~ 静态,常作 Cache 缓存
    • ROM:Read Only Memory 只读存储器
      • MROM:Mask ~ 掩膜型,不可修改
      • PROM:Programmable ~ 可编程,一次性烧录
      • EPROM:Erasable ~ 可擦,通过紫外线擦写
      • EEPROM:Electronically ~ 电,通过电压清除
      • Flash Memory:快闪存储器,可以联机擦写
  • 存取速度排序(快->慢):寄存器组>Cache 缓存>内存>Flash(ROM)
  • 在 Cache-主存 层次结构中,主存单元到Cache单元到地址转换由硬件完成。
  • 嵌入式系统降低功耗一般采用:软硬件协同设计、编译优化、算法优化、“中断”代替“查询”、有效管理电源。
  • 系统间进行异步串行通信时,数据的串、并转换一般是通过接口中的移位寄存器实现的。
  • 🌟SoC 不是一块处理器芯片,而是芯片的集成
  • RAID5:3 块 80G 的 =》 80+80 = 160G;2 块 80G+1 块 40G =》 3 块 40G =》40+40 = 80G
  • 嵌入式系统中采用中断方式实现I/O的主要原因是能对突发事件做出快速响应,在中断时,CPU断点信息一般保存到中。
  • DMA:直接存储器访问,在主存与外设之间建立直接的数据通路。
  • 最晚截止期调度算法:当某任务执行接近自己的截止期时,调度算法把该任务的优先级调整到系统最高优先级,让该任务获取CPU资源运行。

3 计算机网络基础

  • 复用技术:TDM 时分、FDM 频分、CDM 码分
  • OSI 七层
    • 物理层:传输比特流
      • 集线器(Hub)和中继器(Repeater)
      • 查看端口状态、协议建立状态和EIA状态属于物理层诊断。
    • 数据链路层:点到点的帧传输
      • 网桥(Bridge)和交换机(Switcher)
      • 在以太网标准中规定的最小帧长时 64B,这是根据网络中检测冲突的最长时间来确定的
    • 网络层:ip节点之间传输
      • 路由器(Router)和防火墙(Firewall)
    • 传输层:port端到端传输
    • 会话层:管理进程间通信
    • 表示层:数据编码
    • 应用层:处理网络应用,提供用户接口
  • FTP:File Transport Protocol,文件传输协议,基于TCP,21端口传送控制信息,20端口传送文件内容
  • TFTP:Trivial FTP,简单文件传输协议,基于UDP,69端口,不提供认证授权机制,采用超时重传来保证数据到达
  • HTTP:基于TCP,80端口
  • HTTPS:HTTP+SSL,SSL = Secure Socket Layer,安全套接层,使用443端口
  • DHCP:Dynamic Host Configuration Protocol 动态主机配置协议,如果网络中有多个DHCP服务器发送OFFER报文,客户端只根据第一个收到的OFFER报文,返回REQUEST报文
  • DNS:域名 -> IP地址;PTR:Pointer Record,IP地址 -> 域名
  • 网络设计分层:接入层(用户管理)、汇聚层(过滤)、核心层(双机冗余热备份)
    • 备用路径在主路径失效时才启用
  • ARP 攻击造成网络无法跨网段通信的原因是 伪造网关 ARP 报文使得数据包无法发送到网关
  • 网闸:一个物理隔离装置,隔离内网与外网的连接。e.g. 会阻止学生用户通过校园网访问系统
  • 域名服务器:根~、顶级~、权限~、本地~、本地缓存(不需要域名数据库)

二、架构设计专业知识

4 信息系统

  • DSS:Decision Support System,决策支持系统。管理者处于核心地位,结构形式包括两库结构和基于知识的结构

  • 🌟ERP:Enterprise Resource Planning,企业资源规划。包括三大流:物流、资金流、信息流。(没有工作流)

    • 生产计划大纲:根据经营计划的生产目标制定,对企业经营计划的细化。
    • 主生产计划:说明了在一定时期内生产什么、生产多少、交货时间
    • 能力需求计划:能够帮助企业尽早发现企业生产能力的瓶颈
  • 🌟G2G:人口信息采集处理和利用业务

  • B2G:参加政府工程交接

  • ES:Expert System,专家系统,核心是推理机和知识库

5 信息安全技术

  • 对称加密
    • DES:Data Encryption Standard,使用密钥加密的块算法,密钥长度 56bit
    • 3DES:密钥长度 112bit
    • IDEA:International Data Encryption Algorithm,国际数据加密算法,密钥长度 128bit
    • AES:Advanced Encryption Standard,高级加密标准,支持 128bit、192bit、256bit 三种密钥长度
    • SM4:国密算法,密钥长度 128bit
  • 非对称加密
    • RSA:Rivest Shamir and Adleman,安全性基于大素数分解的困难性,密钥长度可选择
    • SM2:国密算法,基于椭圆曲线离散对数问题,密钥长度和计算规模比 RSA 小
  • DDos:Distributed Denial of Service,分布式拒绝服务攻击,侵犯系统的可用性要素,通过特征识别、防火墙、通信数据量的统计、修正问题和漏洞 4 种方法防御。
  • 防御 ARP 欺骗:固化 ARP 表,使用 ARP 服务器,双向绑定和安装防护软件。
  • 防御 DNS 欺骗:被动监听检测、虚假报文检测和交叉检查查询。
  • 防御 TCP 同步包风暴(SYN Flooding):减少等待超时时间
  • 等级保护
    1. 用户自主保护级(对应 TCSEC 的 C1)
    2. 系统审计保护级(对应 TCSEC 的 C2)
    3. 安全标记保护级(对应 TCSEC 的 B1)
    4. 结构化保护级(对应 TCSEC 的 B2)
    5. 访问验证保护级(对应 TCSEC 的 B3)

6 系统工程

  • 霍尔的三维结构:时间维、逻辑维、知识维
  • 切克兰德方法的核心不是“最优化”而是“比较”与“探寻”
  • WSR:物理-事理-人理综合统一的东方系统思想。
  • MBSE:Model-Based Systems Engineering,基于模型的系统工程。产物包括:
    • 需求分析阶段:需求图、用例图、包图
    • 功能分析与分配阶段:顺序图、活动图、状态机图
    • 设计综合阶段:模块定义图、内部块图、参数图
  • 系统工程的三大支柱:建模语言、建模工具、建模思路
  • 评价计算机的性能指标:时钟频率(主频)、运算速度、运算精度、PDR(Processing Data Rate,数据处理速率)、吞吐率等。
  • 评价数据库的性能指标:最大并发事务处理能力、负载均衡能力(可以增加系统吞吐量)、最大连接数
  • 数据库的容灾属于的网络安全与应用安全内容。
  • 阿姆达尔(Amdahl)定律:计算机系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式所占总执行时间的比例。加速比=使用增强部件时间/不使用增强部件时间

7 软件工程

  • 瀑布模型缺点:需求难以一次确定、变更代价高、结果难以预见、各阶段工作不能并行

  • 原型模型(又称快速原型):用户仅仅提出软件的一些基本功能,但是没有详细需求时

    • 2 个阶段:原型开发、目标软件开发
    • 抛弃式原型:用于界面设计,让用户有直观感受,从而可以提出需求,等需求获取到之后,把这个界面原型抛弃不用,适合于需求不确定、不完整、含糊不清的项目。
    • 演化式原型:用在必须易于升级和优化的场合,适合于 Web 项目
    • 水平原型:用在界面上
    • 垂直原型:用在复杂的算法实现上。
  • 🌟螺旋模型:循环+里程碑,在原型模型的基础上结合瀑布模型扩展而成,每个阶段包含 4 部分:目标设定、风险分析、开发、有效性验证评审,强调其他模型忽视的风险分析。但是执行风险分析将会影响项目的利润。

  • 敏捷模型(Agile):敏捷开发以人为本,而非以过程为本。

    • XP:Extreme Programming,极限编程。高效、低风险、测试先行。
    • 水晶系列方法:不同项目,不同策略
    • Scrum:并列争球法,侧重于项目管理
    • 🌟FDD:Feature Driven Development,特征驱动开发方法,将开发人员分为首席程序员(项目的协调者、设计者和指导者)、类程序员(源码编写)
  • 🌟开放式源码开发方法适用于程序员在地域上分布很广的开发团队。

  • ASD:Adaptive Software Development,自适应软件开发,核心是三个非线性的、重叠的开发阶段:猜测、合作、学习

  • 🌟ABSD:Architecture Based Software Development,基于架构的软件开发

    • 🌟采用视角与类图来描述软件架构
    • 🌟采用用例来描述功能需求,采用质量场景来描述质量需求
    • 三个基础:功能分解、选择架构风格实现质量及商业需求、软件模板的使用。
    • 🌟包含六个子过程:需求、设计、文档化、复审、实现和演化。
      • 文档化:不要求随时保证文档是最新的,最终输出结果是架构规格说明书和架构质量说明书
  • RUP:Rational Unified Process,统一软件开发过程。3 个核心特点

    • 以架构为中心
    • 用例驱动
    • 增量与迭代:在软件开发的早期就可以对关键的、影响大的风险进行处理
  • RE:Requirement Engineering,需求工程,包含需求获取、需求分析、形成需求规格(需求文档化)、需求确认与验证、需求管理 5 个阶段

  • SRS:Software Requirement Specification,需求规格说明书,是需求开发和需求管理之间的桥梁。

  • 需求管理的活动包括变更控制、版本控制和需求跟踪,但不包括文档管理

  • CCB:Cange Control Board,变更控制委员会,是决策机构,不是作业机构,通过评审手段来决定项目是否能变更,但不提出变更方案。

  • SA:Structured Analysis,结构化分析,主要手段有数据流图(DFD)、数据字典、结构化语言、判定表和判定树。结构化程序设计是自顶向下、逐步求精、模块化的,通过顺序、分支和循环三种基本的控制结构构造出任何单入口单出口的程序。

  • OOD:Object-Oriented Design,面向对象设计方法,类可以分成三种类型

    • 实体类:Entity
    • 控制类:Service,对特有的控制行为进行封装
    • 边界类:Controller,用于对系统外部环境与内部运作之间的交互进行建模。
  • Mybatis:主流持久化技术框架,提供手动的 ORM 实现,优点是可以结合特定的数据库特性深度优化

  • 测试阶段可以分为单元测试、集成测试、系统测试(是否满足 SRS)、验收测试

    • 在单元测试中,驱动模块用来调用被测模块,桩模块用来模拟被测模块所调用的模块。
  • 动态测试:通过运行程序发现错误

    • 黑盒测试:等价类划分、边界值分析法、错误推测法
      • 无效等价类:用来测试非正常输入的数据,也需要设计测试用例。
    • 白盒测试:各种类型的覆盖测试
  • 静态测试:人工测试,包括桌前(桌面)检查、代码走查、代码审查

  • 🌟CSE:Cleanroom Software Engineering,净室软件工程,是一种形式化方法,理论基础主要是函数理论和抽象理论,使用盒子结构规约进行分析和设计建模,并将正确性验证作为发现和排除错误的主要机制,缺点是太理论化、忽视测试、带有传统软件工程的弊端。

  • 🌟形式化开发方法是建立在严格的数学基础上的软件开发方法。

  • CBSE:Component-Based Software Engineering,基于构件的软件工程,模型要素为接口、使用信息、部署信息

  • 需求分析阶段:数据流图

  • 🌟概要设计阶段:模块结构图、层次图、HIPO 图

  • 详细设计阶段:程序流程图、伪代码、盒图

  • 系统移植工作中,计划阶段需要最终确定移植方法。

8 数据库设计

  • 候选码:能唯一标识一个元组的属性

  • 主码:候选码之一

  • 主属性:包含在任何候选码中的属性

  • X->Y:X 决定 Y,若 Y 属于 X,则称为平凡的函数依赖,不属于则非平凡。

  • 1NF:每一个分量都不可再分

  • 2NF:非主属性完全依赖主码

  • 3NF:消除非主属性对主码的传递依赖

  • BCNF:每个属性都不传递依赖于候选码

  • 事务操作

    • BEGIN TRANSACTION 开始
    • COMMIT 提交
    • ROLL BACK 回滚
  • 数据库设计

    • 用户需求分析
    • 概念结构设计:ER 图
      • 实体 —— 矩形
      • 属性 —— 椭圆形
      • 实体之间的联系 —— 菱形框
    • 逻辑结构设计
    • 物理结构设计
    • 应用程序设计
    • 运行维护
  • BI:Business Intelligence,商业智能,三大组成部分是数据仓库、联机分析处理(OLAP)、数据挖掘

  • 🌟数据仓库关键特征:面向主题、集成的、非易失的(相对稳定性,指的是主要用于查询,只有少量修改)、时变的

  • NoSQL 泛指非关系型数据库

    • 列式存储:键指向多列
    • 键值对:Redis
    • 文档型:MongoDB
    • 图数据库:RedisGraph
  • NoSQL 框架:接口层、数据逻辑模型层、数据分布层、数据持久层

  • 分布式数据库特点:共享性、自治性、可用性、分布性

  • 分布透明性的三个层次:

    • 操作全局关系

      • 分片透明性
    • 考虑数据分片

      • 位置透明性
    • 考虑片段的存储场地

      • 局部数据模型透明性
    • 考虑数据模型

  • MySQL 通过 binlog 进行主从复制,基于 SQL 语句复制,可能会造成不一致,基于行的复制可以保证强一致性,但影响效率,所以一般可以根据业务混合复制。

  • Redis 读数据:根据 key 读缓存,成功返回,失败读数据库,写缓存,返回。

  • Redis 写数据:根据 key 写数据库,成功后更新缓存,返回。

  • 过期策略和淘汰机制:

    • 定期删除:每隔一段时间
    • 惰性删除:查询 key 的时候
    • volatile 针对已设置过期时间的 key
    • allkeys 针对所有 key
    • lru、lfu、random
    • volatile-ttl 根据剩余生存时间淘汰
  • Redis 持久化方式

    • RDB:Redis Data Base内存快照
    • AOF:Append Only File 增量持久化,类似 MySQL 的 binlog
  • 缓存穿透、雪崩、击穿

    • 穿透:请求不存在的 key
      • 应对恶意攻击:校验 key,IP 黑名单,布隆过滤器
      • 初始化问题:通过批处理脚本预热 Redis,写入值为空的 key
    • 雪崩:大量 key 同时过期
      • 应对 Redis 故障:服务降级、熔断、限流
      • 过期时间加上一个随机值
    • 击穿:少量热点 key 缓存时间失效
      • 热 key 增加过期时间
      • 使用分布式锁,热点 key 失效的时候,只允许一个请求去访问数据库,取出最新 key,放到 Redis

三、架构设计高级知识

9 系统架构设计基础

  • 体系结构风格 = 词汇表 + 约束
  • DSSA:Domain Specific Software Architecture,特定领域软件架构。
    • 🌟领域设计活动主要目的是为了获得 DSSA(特定领域软件架构)
    • 🌟领域分析的主要目的是获得领域模型
    • 🌟领域实现是为了开发和组织可重用信息,对基础软件架构进行实现
    • 该活动参加人员中,领域专家的主要任务是提供关于领域中系统的需求规约和实现的知识。
    • 垂直域关注行业特性,水平域关注行业共性。
    • DSSA 通常有三个层次的系统模型
      • 领域开发环境
      • 领域特定应用开发环境 —— 应用工程师
      • 应用执行环境
  • 系统架构的给出必须建立在需求明确的基础之上。

架构经典风格:反映了共有的结构和语意特征

  • 据流:

    • 处理
    • 📖道/过滤器
      • 优点:简单、可并行、可扩展
      • 缺点:不适合用来设计交互式应用系统
      • 场景:消息封装、转发
  • 用返回:程序/程序、面向对象、层次风格

  • 立构件风格

    • 程通信风格
    • 件驱动风格:新闻系统,根据用户的注册兴趣,向用户推送其感兴趣的新闻内容。
  • 拟机风格:释器(自定义规则)、则系统(专家系统)

  • 以数据为中心风格

    • 📖黑板风格
      • 场景:语音识别、知识推理
      • 优点:针对问题复杂、解空间很大、求解过程不确定的系统,启发式解决。
      • 缺点:不能确保期望结果,效率低,不支持并行,共享空间的访问需要同步。
    • 仓库风格:中央数据结构 + 一组独立构件(操作中央数据)
  • C2 风格:构件之间无连接

    • 系统中的构件和连接件都有一个顶部和一个底部
    • 构件中的顶/底部应连接到某连接件的底/顶部,而构件之间的连接是不允许的
    • 一个连接件可以和其他任意数目的其他构件和连接件连接
    • 当两个连接件进行直接连接时,必须顶、底相接

10 系统质量属性与架构评估

  • ATAM:Architecture Tradeoff Analysis Method,架构权衡分析法,强调以属性作为架构评估的核心概念。
    • 是在基于场景的架构分析基础上发展起来的,该方法要求在系统开发之前,首先对这些质量属性进行评价和折中。🌟主要包括4个阶段:
      • 场景和需求收集
      • 架构视图和场景实现
      • 属性模型构造和分析
      • 属性模型折中
    • 可用性:Ping/Echo、心跳、主动冗余、被动冗余、选举
    • 性能:队列调度、资源调度资源仲裁、引入并发机制
      • 🌟性能评估的目的是找出系统可能存在的性能瓶颈。(而不是性价比)
    • 可修改性:信息隐藏、可维护性、可扩展性、结构重构、可移植性
    • 安全性:入侵检测、认证授权、追踪审计
  • SAAM:Software Architecture Analysis Method,软件架构分析方法,主要分析可修改性,应用于空中交通管制系统、嵌入式音频系统、修正控制系统。
  • 敏感点:一个或多个构件的特性。
    • e.g. 对交易请求处理时间的要求将影响传输协议和业务过程的设计
  • 权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
    • e.g. 加密级别
    • e.g. 性能和安全性都产生影响
  • 软件确认测试也称为有效性测试,主要验证软件功能、性能及其他特性是否与用户需求一致。

11 软件可靠性

  • 双机热备技术:采用心跳保证连通性
  • 服务器集群技术:自动接管故障节点服务器
  • 🌟检错设计技术的 4 个考虑要素:检测对象、检测延时、实现方法、处理方式。

12 软件架构的演化和维护

  • 🌟软件架构维护过程:架构知识管理、架构修改管理、架构版本管理。(不包括架构构件管理)
  • 有限制运行时演化:只发生在某些特定约束满足时
  • 软件动态演化:属性改名、行为变化、拓扑结构改变、风格变化
  • 软件正确性维护:改正产生于系统开发阶段而在系统测试阶段尚未发现的错误。

网站架构演化

  • 单体架构
  • 垂直架构:应用、文件、数据 3 台服务器
  • 引入缓存改善性能
  • 服务集群改善并发
  • 数据库读写分离:主数据库写、从数据库读
  • 反向代理和 CDN 加速网站响应
  • 分布式文件系统和分布式数据库系统
  • 引入NoSQL和 ElasticSearch等搜索引擎
  • 业务拆分微服务,每个应用独立部署
  • 分布式服务

13 未来信息综合技术

  • CPS:Cyber-Physical System,信息物理系统,本质是构建一套信息空间与物理空间之间基于数据自动流动的状态感知、实时分析、科学决策、精准执行的闭环赋能体系,解决生产制造、应用服务过程中的复杂性和不确定性问题,提高资源配置效率,实现资源优化。包含四大核心技术:
    • “一硬”:感知和自动控制(硬件支撑)
    • “一软”:工业软件(核心)
    • “一网”:工业网络(载体)
    • “一平台”:工业云和只能服务平台(基础)
  • 边缘计算特点:联接性、数据第一入口、约束性、分布性

14 系统规划

  • 固定成本

    • 酌量性:广告费、员工培训费、技术开发经费
    • 约束性:固定资产折旧费、房屋和设备租金、管理人员的工资
  • 变动成本:直接材料费、产品包装费、外包费用、开发奖金

  • 混合成本:质量保证人员的工资、设备动力费

计算题:盈亏平衡点

Q:某厂生产的某种电视机,销售价为 2500 元/台,去年总销量 25000 台,固定成本总额 250 万元,可变成本总额 4000 万元,税率为 16%,求盈亏平衡点为几台?

A:设盈亏平衡点的销售量为 N

  1. 单位可变成本 = 4000 万元/25000 台 = 1600 元
  2. 销售额 = 2500N *(1-16%) = 2100N (元)
  3. 成本 = 固定成本+单位可变成本*销量 = 250 万元+1600N 元
  4. 临界点 => 销售额 = 成本 => 2100N = 250*10000 + 1600N => N = 5000(台)

四、架构设计实践知识

15 信息系统架构

  • MVC 模型:Model 数据库,View 浏览器,Controller 中间件、应用层。强制把一个应用的输入、处理、输出分离。
  • ESB :企业服务总线,是由中间件技术实现并支持 SOA 的一组基础架构,它提供了一种基础设施,其优势在于消除了服务请求者与服务提供者之间的直接链接。有以下特征:
    • 提供服务代理功能和服务注册表
    • 按照协议消息头进行数据、请求、回复的接收和分发
    • 可以基于消息中间件、事务中间件、CORBA/IIOP 协议开发构建
  • 挂接在总线上的多个部件,只能分时向总线发送数据,但可同时从总线接收数据
  • ISA:Information System Architecture,信息系统的架构,4 个方面:
    • 战略系统:决策支持能力
    • 业务系统
    • 应用系统
    • 企业信息基础设施:EII,Enterprises Information Infrastructure,是指根据企业当前业务和可预见的发展趋势等,构筑环境。
  • 信息化架构有两种模式:数据导向、流程导向
  • 🌟CSF:Critical Success Factors,关键成功因素法。通过对关键成功因素的识别,确定系统开发的优先次序,通过对组织的目标分解和关键成功因素识别、🌟性能指标识别,一直到产生数据字典。
  • SST:Strategy Set Transformation,战略目标集转化法。反映了各种人的要求。
  • BSP:Business System Planning,企业系统规划法。通过自上而下识别系统目标、企业过程和数据,自下而上设计信息系统。
  • 信息化建设生命周期:规划、分析、设计、实施、运行和维护
  • 软件生命周期:软件定义、软件开发、软件运行、软件维护
  • 常用的架构模型:单体应用架构、C/S架构、B/S 架构、SOA 架构、ESB 企业服务总线架构
    • B/S架构是一种用户界面和服务器之间的架构
    • SOA架构是一种将应用程序功能拆分为可重用服务的方式
    • ESB架构是一种中间件层,用于管理不同系统之间的通信和数据流

16 层次式架构

  • 层次式体系结构:每一层为上层服务,并作为下层客户,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。
  • 污水池反模式(层次式架构教条化):请求流简单地穿过几个层,每层里面基本没有做任何业务逻辑,让应用变得庞大但没必要。
  • MVVM 模式:Model-View-View-Model,View 和 Model 不能直接交互,而是通过 ViewModel 来间接交互。
  • ORM:Object-Relation Mapping,在关系型数据库和对象之间作一个映射,这样就不需要编写复杂的 SQL,而是面向对象编程即可。
  • 物联网层次架构
    • 感知层:识别物体、采集信息,类似于人体的皮肤和五官
      • e.g. GPS、摄像头、扫描仪
      • 指纹是人的特征属性,而不是感知层设备。
    • 网络层:传递信息、处理信息,类似于人体的神经中枢和大脑
    • 应用层:广泛智能化,物联网与也专业技术深度融合,结合行业需求实现行业智能化,类似于人们的社会分工
  • 工作流参考模型的组件:过程定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具

17 云原生架构

  • 云原生架构特点
    • 代码结构发生巨大变化:旨在将云应用中的非业务代码部分进行最大化地剥离
    • 非功能特性大量委托给云原生架构来解决:弹性、韧性、安全、可观测性、灰度发布能力等
    • 高度自动化的软件交付
  • 🌟云原生原则:服务化、弹性、可观测、韧性、所有过程自动化、零信任(依赖认证和授权)、架构持续演进
  • 分布式事务模式
    • XA - 2PC:需要量词网络交互,所以性能差
    • BASE:基本可用(BA)、软状态(S)、最终一致性(E)
    • TCC:Try-Confirm-Cancel,事务隔离性可控、高效,但对业务侵入性强,开发维护成本高
    • SAGA:每个正向事务都对应一个补偿事务,开发维护成本高
    • SEATA(开源项目)- AT:将 TCC 模式中的二阶段委托给底层代码框架,并且取消了行锁,所以高性能
    • 可观测架构:Logging 记录日志、Tracing 链路跟踪、Metrics 量化性能(并发度、耗时、可用时长、容量)
    • EDA:Event Driven Architecture,事件驱动架构
      • 对服务状态有影响的命令用事件发起
      • 对服务状态无影响的才同步调用 API 接口
  • 微服务模式
    • 横向关系:可发现性(自动感知其他服务的变化),可交互性(服务相互调用的方式)
    • 纵向约束:提倡数据存储隔离,对于数据的访问必须通过相应的微服务提供的 API 来访问
    • 微服务分布式约束:CI/CD 流水线,蓝绿、金丝雀发布策略,来满足业务发布的稳定性诉求
  • 微服务架构围绕业务领域将服务进行拆分,每个服务可以独立进行开发、管理和迭代,彼此之间使用统一接口进行交流。
  • 无服务技术特点:全托管的计算服务(无需关注开发、运维、安全、高可用)、通用性、自动弹性伸缩、按量计费
  • 服务网格 Mesh:将微服务间的通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦,总控在控制平面(Control Plane) 上配置 e.g. Consul

18 面向服务架构

  • BPEL:Business Process Execution Language,业务流程与业务流程执行语言,通过组合、编排和协调Web 服务自上而下地实现面向服务的体系结构。
  • WSDL:Web Services Description Language,Web 服务器描述语言,描述了 Web 服务 3 个基本属性
    • 服务做些什么
    • 如何访问服务
    • 服务位于何处
  • SOA 的设计原则:无状态、单一实例、明确定义的接口、自包含和模块化、粗粒度、松耦合、重用能力、互操作性
  • SOA 架构构建时需要考虑的问题
    • 服务粒度:粗粒度用于暴露在系统外部的服务,细粒度用于企业系统架构的内部
    • 无状态服务:每个请求独立、自包含,不应该依赖于其他服务的上下文和状态

19 嵌入式系统架构

  • 鸿蒙操作系统层次:内核层、系统服务层、应用框架层、应用层
  • 鸿蒙技术4 个特性
    • 分布式架构用于终端操作系统
    • 确定时延引擎和高性能进程间通信
    • 基于微内核架构
    • 一次开发,多端部署
  • GENESYS:Generic Embedded System,面向安全攸关系统的跨领域系统架构
  • DARTS:Design Approach for Real-Time System,实时系统设计方法
    • 优势:将系统分解为并发任务,提供任务间接口的指南,强调任务架构图,提供实时结构化设计
    • 不足:信息隐藏技术,封装性差;依赖实时结构化分析阶段的完成质量

20 通信系统架构

  • 层次模型:核心层、汇聚层、接入层(优先设计)
  • SDN:Software Defined Network,软件定义网络,核心思想是控制与转发分离,架构包含:控制层、转发层和应用层。
  • IPv4 和 IPv6 的过渡技术:双协议栈、隧道技术、网络地址转换(NAT)技术

21 安全系统架构

  • 🌟BLP 模型:为数据规划机密性,依据机密级别划分安全级别,按安全级别强制访问控制
  • Biba 模型:建立在完整性级别上。
  • 陷阱门:某个系统或某个部件中设置了“机关”,使得的提供特定的输入时,允许违反安全策略。
  • SQL注入攻击的首要目标是:获得数据库权限
  • 在数据库的安全机制中,通过提交存储过程供第三方开发人员使用进行数据更新,从而保证数据库的关系模式不被第三方所获取。
  • PGP:Pretty Good Privacy,用来实现安全电子邮件的协议,基于RSA公钥加密体系。

22 大数据架构

  • Lambda 架构:存量数据和增量数据分别经过批处理层和加速层,在服务层汇总,产生查询视图
    • 批处理层:存储主数据集(周期性)
      • e.g. 每天凌晨将 Kafka 中浏览、下单等消息同步到 HDFS 中,将 HDFS 中数据解析为 Hive 表,然后使用 HQL 或 Spark SQL 计算分区统计结果,将 Hive 表转储到 MySQL 中作为批视图
    • 加速层:处理增量实时数据(持续)
      • e.g. 使用 Spark Streaming 实时监听 Kafka 中的消息,将实时结果存储在 Redis 中作为实时视图
    • 服务层:响应用户请求
      • e.g. 采用 Java Web 服务,对外提供 HTTP 接口
    • 适合预算充足的情况,海量历史数据
  • Kappa 架构:删除了批处理层,将数据通道以消息队列进行替代,本质上是改进 Lambda 架构中的加速层
    • 实时层:处理输入数据,生成实时视图
      • e.g. Flink
    • 服务层:响应用户请求
    • 适合预算有限的情况,小规模数据集

五、补充知识

23 知识产权

  • 🌟保护期受时间限制:发表权
  • 🌟人身权的保护期不受限制,受到永久保护:署名权、修改权、保护作品完整权
  • 软件著作权
    • 保护的对象不包括:开发软件的思想、处理过程、操作方法或数学概念。
    • 自软件开发完成之日生效。
    • 更改软件不叫盗版,复制传播才是盗版。
    • 合同未作明确约定或者没有订立合同的,著作权属于受托人
    • 作品原件所有权的转移,不改变作品著作权的归属。
    • e.g. 某人购买了一款有注册商标的应用 app,擅自复制光盘出售,其行为是侵犯软件著作权的行为
  • 软件商标权的保护对象是指:软件注册商标

24 应用数学

  • 数学模型在求解后,还需要进行灵敏性分析,对结果进行检验,分析计算结果对参数变化的反应程度。

  • 乐观主义准则:大中取大

  • 悲观主义准则:小中取大

  • 后悔值准则:计算后悔值,在每一方案中选取最大后悔值,在各方案的最大后悔值中选取最小值作为决策依据。

25 专业英语

  • components 构件
  • connector types 连接器
  • constraints 约束
  • semantic models 语义模型
  • refine…into 细化
  • tier 层
  • performance requirement 性能要求
  • reliablity 可靠性
  • intentional act 故意行为
  • detailed design, construction, and implementation详细设计、构造和实现
  • project objectives 项目目标
  • the feasibility of techniques used 所使用的技术的可行性
  • interpretive, interactive and iterative process 解释性、交互式和反复迭代的过程
  • view fusion 视图融合
  • reconcile, augment, and establish connections 理顺、加强并建立连接
  • reconstruction 重构
  • the former… the latter… 前者…后者…
  • facility 设施

案例分析

试题一:架构风格+架构评估

比较 C/S 架构和 B/S 架构

C/S 优点:

  1. 客户端与服务端分离,二者可以并行开发
  2. 技术成熟,允许网络分布操作,交互性强,具有安全的存取模式
  3. 网络压力小,响应速度快,有利于处理大量数据
  4. 模型思想简单,易于人们理解

C/S 缺点:

  1. 客户端与服务端的通信依赖于网络,服务器负荷重
  2. 开发成本高
  3. 部署、运维、升级复杂,工作量大
  4. 界面风格不一,软件移植和数据集成困难
  5. 数据库的安全性因客户机程序直接访问而降低

B/S 优点:

  1. 易于部署、维护、升级
  2. 开放性和可扩充性强,可以应用在广域网上
  3. 可跨平台操作
  4. 通过接口访问数据库,提高动态交互性、服务器的通用性和可移植性

B/S缺点:

  1. 不利于在线事务处理(OLTP)
  2. 数据查询响应速度慢
  3. 系统的安全性较难控制

C/S 与 B/S 混合架构

若项目资金不足,在各分支机构财务部门局域网中采用C/S架构,部署应用服务器及相关的数据库服务器,然后将集中处理的后期财务数据通过VPN技术上传至总部局域网的相应服务器中。

混合架构的优点:

  1. 冲分发挥了各自的优势,取长补短。客户请求和信息发布采用B/S架构,保持了瘦客户端的优点,客户端只利用浏览器即可完成所有的应用需求;数据库的请求和响应操作采用 C/S架构,通过MybatisPlus在Web应用程序和MySQL数据库之间建立ORM映射,完成大量数据的批量录入请求
  2. 系统的部署、维护及数据更新方便,不存在完全采用C/S架构带来的客户端工作量大等缺点。
  3. 对原基于C/S架构对应用,只需开发用于发布的Web界面,就能升级到这种混合架构系统中,从而最大限度地保护了原有投资。

电商项目分析(试题二)

题干要求

  1. 高并发
  2. 秒杀
  3. 高可用
  4. 涉及金额安全性

比较SOA方案和微服务方案的不同?

  1. 设计思路:SOA通过服务总线封装,从小到大形成应用系统;微服务把应用拆分成独立自治的小服务,从大到小。
  2. 消息传输:SOA 依赖基于XML的消息格式和基于SOAP的通信协议,微服务架构依赖于REST和JSON。
  3. 是否分布式:SOA 需要存在ESB总线,负责服务之间的通信转发和接口适配;微服务架构强调轻量级、迅速、去中心化的技术。
  4. SOA设计架构强调分层(展现层、业务层、总线层、数据层),微服务架构中的服务松散,易扩展,更强调自治性

由于平台业务规模体量会比较大,而考虑到微服务架构的可扩展性、去中心化和自治性,采用微服务架构更容易提升性能,并且适应研发团队的解耦。

分析MySQL采用分库分表、主从结构的原因?

  1. MySQL 开源,降低成本
  2. 主从结构:提高可用性,主数据出现异常,从节点可以及时代替主节点,继续提供服务。
  3. 分库分表:每个节点都能平摊数据存储量,提升性能和系统容量。

开设多个机房需要依赖什么技术?

DNS解析:根据用户的IP解析道该用户距离最近的机房,减少用户访问平台的时延和拥挤程度。

每条SQL都建立索引的坏处?

  1. 如果索引建立不当,优化器会选择不使用索引。
  2. 每次更新操作会重建表的索引,影响更新性能。
  3. 应当针对不同情况选择适当的索引类型,例如B+树索引更适合范围查询
  4. 应该将有利于大多数数据查询和更新的索引设为聚类索引

SQL优化策略?

  1. 只检索需要的列,避免 select *,主查询聚簇索引,子查询覆盖索引
  2. 将 HAVING 中部分条件提前到 WHERE 里
  3. 将 RR 降低为 RC,避免临键锁引发死锁,提高性能。
    1. 可以通过缓存第一次数据,来避免第二次查询,来保证几乎全部事务内部对某一数据都只读取一次
    2. 可以单独指定 Session 或者事务的隔离级别。
  4. 减小事务粒度,常 COMMIT,尽早释放锁
  5. **用 union all **代替 union(去重、排序消耗性能)
  6. where 语句中不使用表达式,防止索引失效
  7. 用 inner join(优先以小表驱动大表) 就不用 left/right join。
  8. 使用视图
  9. 用IN代替OR

ORM 对象关系映射的好处?

  1. 可以将业务逻辑与数据逻辑相分离
  2. 能够做到上层应用与底层具体数据库无关,两者解耦合
  3. 可以采用面向对象的方式非法底层关系型数据库

如何避免单点故障?

  1. 采用双链路连接Internet的备份方式
  2. 对数据中心的数据库服务器采用双机冗余热备方式,或多机集群Cluster和数据库并行处理技术等
  3. 对存储设备采用 RAID10 级别。

新闻社交类项目(试题四:数据库缓存设计和性能优化)

题干要求

  1. 推荐功能
  2. 评论互动功能
  3. 用户相互关注、推送消息

读写分离、主从复制的好处?

  1. 避免数据库单点故障
  2. 提高查询效率:主数据库写,从数据库读

通过binary log主从复制的过程?

  1. 主库提交,将 DDL 与 DML 数据写入 binlog;
  2. 从库上启动复制
  3. 创建IO线程连接主库
  4. 主库创建 binlog dump 线程读取数据库事件并发送给 IO线程
  5. 从库的IO线程获取到事件数据后,更新从库的中继日志 relay log
  6. 从库上的SQL线程读取中继日志 relay log中更新的数据库事件,并应用

主从复制中,同步、异步、半同步复制的特点?

  • 同步复制:主数据库等待所有备数据库都成功,才响应用户。强一致性,低可用性。
  • 异步复制:当用户请求更新数据后,主库先响应用户,从库异步进行数据同步,不会发生阻塞。高可用性,弱一致性。
  • 半同步复制:用户发出写请求后,主库执行写操作,并给从库发送同步请求,但不用等待所有从库都同步成功,就响应用户。

互联网金融项目(试题五)

题干要求

  1. 交易功能、统计功能
  2. SOA+微服务 = 基于分布式微服务的前后端分离体系

微服务架构的含义和关键原则?

微服务是一种软件开发技术,是SOA的变体,将应用程序构造为一组松散耦合的服务,单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。

微服务风格/RESTFul风格关键原则:

  1. 每个URI代表一种资源
  2. 客户端使用HTTPVerb表示操作方式的动词对服务端资源进行操作
  3. 通过操作资源的表现形式来操作资源(GET、POST、PUT、DELETE)
  4. 资源的表现形式是XML或HTML
  5. 客户端与服务端之间的交互是无状态的,客户端每个请求必须包含理解请求所必需的所有信息。

从组件耦合度、组件分工、对开发工程化的支持 3 方面比较 MVVM 模式和 MVC 模式?

组件分工组件耦合度对开发工程化的支持
MVCM:数据模型或仓库抽象
V:视图抽象
C:控制,处理控制逻辑
耦合度低、重用度高模版引擎技术实现代码工程的分离
MVVMM:数据模型或仓库抽象
V:视图抽象
VM:视图模型,双向绑定
事件传递,逻辑下沉
耦合度低、双向绑定提高可重用性Ajax技术实现静态工程与动态工程分离

影响Web应用系统性能的3个主要因素?

  1. 数据库的连接与销毁。可以采用数据库连接池缓存连接,实现连接复用,提高数据访问效率。
  2. 构件或中间件的加载与卸载。可以采用分布式对象池的方式缓存创建开销大的对象。
  3. 线程的创建与销毁。可以采用线程池的方式缓存已经创建的线程。

参考资料

  • 《系统架构设计师考试32小时通关》 薛大龙、邹月平
  • 希赛 app 每日一题解析
  • 软考高级系统分析师、软件架构师真题
0%