目录

本文是各类软考复习资源中,客观题等基础概念内容的学习笔记

计算机组成原理

  • 组成部件

    • 主存储器,内存
    • 辅助存储器,外存
    • 总线:地址总线、数据总线
    • CPU
      • 运算器:算术逻辑单元ALU、累加寄存器AC、通用寄存器GR、数据缓冲寄存器DR(写内存时暂存指令和数据)、状态条件寄存器PSW(条件状态字,也可以归类为控制器部件)
      • 控制器:程序计数器PC(下一条指令的地址)、指令寄存器IR(即将执行的指令)、指令译码器ID(对操作码字段进行分析解释)、地址寄存器AR(操作数据的内存地址)、时序部件

      实际上运算器和控制器是可以不集成的

  • 结构

    • 冯诺依曼结构(普林斯顿结构):一套数据、地址总线,用于通用PC处理器
    • 哈佛结构:两套数据、地址总线,指令和数据吞吐率能更高,用于嵌入式等专用领域
  • 嵌入式

    • DSP:只负责特定需求的数字信号处理器,实时快速
    • SoC:片上系统,微小型系统,可以包含必要的软件内容,是能够完成某个功能的完整系统
    • MPU:微处理器,控制微型计算机工作,是缩减版的CPU
    • MCU:微控制单元,单片微型计算机,将内存、计数器、USB、AD转换等各类设备都集成到一个芯片上,形成芯片级的计算机
  • 分级存储结构:解决存储容量、价格和速度之间的矛盾

    • CPU寄存器
    • 高速缓存Cache:相联存储器。利用时间局部性(循环执行)、空间局部性(顺序执行)原理加速对主存访问,对程序员透明,由硬件完成。
      • 平均访问时间:cache命中率$h$,cache的访问周期时间$t_1$,主存的访问周期时间$t_2$,则整体平均访问周期时间$t_3=h \times t_1 + (1-h) \times t_2$
    • 内存(主存):DRAM
    • 外存(辅存)
  • Cache(硬件直接完成)

    • 直接映像:将Cache等分为若干块,主存也等分一样大小的块,并组成若干个区(每个区的整体大小和Cache相等)。只有相同块号(取模)之间进行映射。硬件会保存每一个映射的区号和块号。存在块冲突。例如Cache共8块,主存8个区,每个区8块(共64块),则主存第0、8、16块可以映射到Cache第0块,1、9、17到Cache第1块,以此类推。
    • 全相联:主存的任意一块可以调入Cache的任意一块。硬件复杂,适合小容量Cache。
    • 组组相联:两者都先分块再分组,主存中一组内的块数必须和Cache的组数相等(这一步是直接映像)。结合了直接映像和全相联。假设Cache共8组,每组组内2块,共16块。主存共8组,每组组内8块。则主存的第0、8、16块,映射到Cache的第一组,但组内的2块可以随机(由全相联控制)。
    • 替换算法:随机、先进先出、最近最少使用、优化

      参考:Cache直接映射、组相连映射以及全相连映射

  • 主存编址计算

    • 存储单元:若干个一次性放置的bit位,是最小的地址单元
    • 编址内容:按字编址,或者按字节编址,分别代表存储单元是字、或者是字节
    • 总容量:存储单元个数$\times$编址内容
  • 磁盘管理

    • 扇区(最小的读取单位)、磁道(一圈扇区)、柱面(柱面数和一个盘面上的磁道数是相等的)、盘面(盘面数和磁头数相等)
    • 存取时间(访问时间):寻道时间(磁头移动到磁道) + 等待时间(也称旋转延迟时间,等待指定扇区转到磁头下方)。存取时间只考虑磁头找到指定数据的平均时间。
    • 磁盘优化分布
      • 缓冲区:磁盘读取后,需要等待系统对数据缓冲区进行处理(从缓冲区送到用户进程),连续读取时可能会影响后续读取。
        • 单缓冲区时必须等待系统处理结束。注意当数据到达用户区之后,磁盘就可以继续向缓冲区中写入数据了。
        • 双缓冲区,前一个缓冲区处理未结束,可以先读入数据到另一个缓冲区。但是如果另一个缓冲区也满了,则也需要等待。

        时间计算方法:构建流水线的时间 + 流水线时间 * 周期。可以画图帮助理解

    • 磁盘移臂调度算法:先来先服务(FCFS)、最短寻道优先(SSTF)、扫描算法(SCAN,也称电梯算法)、循环扫描(CSCAN,单向扫描,结束后立刻回到原点)
  • 数据传输

    • 传输控制方式:
      • 程序控制(查询)方式:由CPU主动查询。简单,硬件需求低,I/O能力不高,影响CPU利用率。
      • 程序中断方式:CPU无需等待,响应快速。发生中断时,为CPU断点信息保存现场(保存到栈空间),查询中断向量表,执行I/O中断服务程序。鼠标键盘
      • DMA:直接内存存取,硬件实现主存与外设通信,无需CPU介入。DMAC向总线裁决逻辑提出总线请求,等CPU释放总线控制权后,DMA就可以开始工作。硬盘
      • 通道方式、I/O处理机:硬件实现,效率更高。
    • 总线:一组能为多个部件分时共享的公共信息传送线路。同一时间只能有一个部件发送信息到总线,但允许多个部件同时接收。
      • 串行适合长距离、并行适合短距离
      • 数据总线DB、地址总线AB、控制总线CB
  • CPU架构

    • Flynn分类法:根据指令流和数据流的组合,将计算机分为四类。(单/多指令,单/多数据)。主流多核处理器是MIMD(多指令多数据)。
    • CISC(复杂):指令数量多,使用频率差别大,可变长格式,寻址方式多样,微码,研制周期长,微程序控制器为主(为了兼容性和可修改性)
    • RISC(精简):指令数量少,使用频率接近,定长格式,大部分是单周期指令,寻址一般只提供Load/Store,增加了通用寄存器(降低访存次数),硬布线逻辑控制为主(为了尽量提高译码速度),适合流水线
    • 流水线:多条指令重叠操作的一种准并行技术。不同部件同时为多条指令的不同流程部分进行工作。有超流水线、超标量、超长指令字三种技术。
      • 流程:取指令、分析指令、执行指令
      • 流水线周期$t$是各部件执行时间最长的一段
      • 流水线计算公式:一条指令的执行时间 + 剩余指令 * 流水线周期。即理论$t_1+t_2+…+t_k+(n-1) \times t$、或者$k \times t + (n-1) \times t$
      • 流水线吞吐率(Though Put rate,TP):单位时间内流水线完成的任务数量。$TP = \frac{指令条数}{流水线执行时间}$
      • 流水线最大吞吐率:$TP_{max} = \lim\limits_{n\to \infty} \frac{n}{(k + n-1)t } = \frac{1}{t}$
      • 流水线加速比:$S = \frac{不用流水线的执行时间}{使用流水线的执行时间}$
    • 指令寻址方式:顺序寻址、跳跃寻址
    • 指令操作数的寻址方式:立即寻址(在指令内)、直接寻址、间接寻址、寄存器寻址、基址寻址、变址寻址
  • 校验码

    • 码距:二进制位的差异位数。($00_2$到$11_2$的码距是2)
    • 奇偶校验码:若干位有效信息 + 一bit校验位,组成校验码。只能检错(仅错1位),不能纠错。
      • 奇校验:整个校验码(包括有效信息和校验位)中‘1’的个数为奇数。
      • 偶校验:整个校验码‘1’的个数为偶数
    • CRC校验:校验位的位数由生成多项式的最高次幂决定。可检错,不能纠错。
      • 模2除法:在除法过程中不计算借位和进位(相当于异或)
      • 生成多项式:用来表示二进制系数,如$G(x)=x^4+x+1$,则代表二进制系数$10011_2$,校验位为4位(因为最高幂$x^4$)
      • 编码:用原始报文左移校验位长度,再模2除生成多项式的二进制系数,并将计算的余数拼接到原始报文后。
      • 解码:用校验码模2除生成多项式的二进制系数,没有余数则没问题,否则有错误。

      信息码$111000110_2$,生成多项式$G(x)=x^5+x^3+x+1$,系数为$101011_2$。校验位数为5。则用$11100011000000_2 \div 101011_2$。余数为$11001_2$

    • 海明校验:校验位的位数满足$2^r\ge m + r +1$,其中$m$是信息位的位数,$r$是校验位的数量,校验码插入到信息位的各$2^k$位置。是分组奇偶校验,能检错能纠错

操作系统

  • 概述:
    • 三大作用:管理程序分配软硬资源、提供友善的人机接口、为程序开发运行提供高效平台
    • 特征:并发性、共享性、虚拟性、不确定性
    • 分类:批处理(单道、多道)、分时、实时(对交互性要求不高,要求可靠响应)、网络、分布式、微型计算机系统(Linux、Windows)
  • 进程管理
    • 进程:程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。由程序块、进程控制块(PCB)、数据块三部分组成。
      • PCB:进程存在的唯一标志。包含进程标识符、状态、控制信息、优先级、现场保护区等。
      • 线程:可调度的基本单位,但不是分配资源的基本单位。拥有独立的程序计数器、寄存器、栈。和同进程其他线程共享内存地址空间、代码、数据、文件资源等。
    • 进程状态:
      • 三态模型:运行、就绪、阻塞。
      • 五态模型:运行、活跃就绪、活跃阻塞(活跃阻塞可以挂起到静止阻塞,或者进入活跃就绪)、静止就绪、静止阻塞(静止阻塞需要先恢复到静止就绪,才能进一步恢复到活跃就绪)

      只有就绪状态,才能被调度到运行状态

    • 同步和互斥
      • 临界资源:进程间需要互斥访问的共享资源。如缓冲区、打印机。
      • 临界区:访问临界资源的代码
      • 信号量:一种特殊的变量
        • PV操作:P(S),将S-1,如果S<0,放入阻塞队列。V(S),将S+1,如果S<=0,从阻塞队列唤醒一个。PV操作必须成对出现
      • 生产者消费者模型:用PV操作时,需要用三个信号量表示,分别代表生产队列是否空闲和是否有资源,以及缓冲区繁忙的标志。
      • 前驱图:描述进程之间的依赖关系。几个箭头就需要几个信号量。
        • PV操作:一般需要先用V操作,表示前驱进程产生了某个资源。后续依赖进程,才可以通过P操作获取资源并使用
        • 直接制约:必须前后顺序执行的
        • 间接制约:依赖同一种资源,需要互斥等待的
      • 进程资源图:表示进程和资源之间的分配、请求关系。资源$\to$进程代表分配,进程$\to$资源代表请求。
        • 当进程资源图中所有的进程都是阻塞节点,即产生死锁
      • 死锁:互斥、请求和保持、不剥夺、循环等待。
      • 策略:死锁预防、死锁避免、死锁检测(银行家算法)、死锁解除
      • 死锁资源计算:系统内有n个进程,每个进程需要R个资源,那么仍会发生死锁的最大资源数是$n\times(R-1)$,一定不会发生死锁的最小资源是$n\times(R-1)+1$
    • 进程调度
      • 调度方式:当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺两种
      • 高级中级低级调度,分别代表具备进入主系统、进入内存、占用CPU
      • 调度算法:先来先服务、时间片轮转、优先级调度、多级反馈(时间片轮转和优先级结合)
    • 内存管理
      • 方式:
        • 分区存储管理:固定分区(静态分区,内部碎片)、可变分区(动态分区,外部碎片)、可重定位分区(一定程度上解决碎片问题)。适应法(首次、最佳、最差、循环首次)
        • 分页存储管理
          • 分页存储也可算是固定分区的一种,会产生内部碎片(页内)
          • 逻辑页:逻辑地址包括页号、页内地址。页内地址就是物理偏移地址。而页号和物理块号(页框号)的对应关系需要先查询页表
          • 页面置换:最优算法(理论,无法实现)、先进先出算法、最近最少使用、淘汰原则
          • 快表:存储在cache(相联存储器)内的部分页表,一般是最常用的部分页表
        • 分段存储管理:每段也有段号和段内地址。但分段是可变分区,所以段表内存储的是段号、段长和分段基址。
        • 段页式存储:先分段后分页
  • 设备管理
    • 分类:
      • 按数据:字符设备、块设备
      • 资源分配:独占、共享、虚拟
      • 速率:低速、中速、高速
    • I/O软件:隐藏底层实现细节,方便用户使用设备
      • 层次:用户进程、设备无关软件、设备驱动、中断处理程序、硬件
    • SPOOLING(外围设备联机操作设备):在外设建立多个数据缓冲区(输入井、输出井)。多个进程的提交都会进入缓冲队列,而不是等待。能够完成物理设备的虚拟化,实现设备共享。
  • 文件管理
    • 文件:具有符号名,逻辑意义完整的一组信息项的集合。包含文件体和文件说明
    • 逻辑结构:有结构、无结构
    • 物理结构:连续、链接、索引、多个物理块的索引表
    • 索引文件结构的计算
      • 结构:直接索引(逻辑号直接到物理块)、一级/二级/三级间接索引
      • 计算方式:核心是算出每级索引能表示多少个逻辑号
    • 文件目录
      • 文件控制块:基本信息、存取控制、使用信息
      • 文件目录:文件控制块的有序集合
      • 全文件名:绝对路径+文件名
    • 文件存储空间管理:存取方法是读写文件存储器(外存)上一个物理块的方法。顺序读和随机读两种。
      • 空闲区表,将连续的未分配空间称为空闲区。适用于存储连续文件结构。
      • 位示图:一个bit代表一个物理块,0空闲,1占用。
      • 其他:空闲块链、成组链接法(成组的空闲块链)
  • 存储管理
  • 作业管理
  • 微内核操作系统
  • 嵌入式操作系统:微型化、可定制、实时性、可靠性、易移植性。

数据库系统

  • 概述:
    • 数据:是数据库中存储的基本对象,是描述事物的符号记录。文本、图形、图像、音频、视频
    • 数据库:长期存储在计算机内的有组织的数据的集合
    • 数据库系统DBS:存储数据的计算机系统。包括数据库、硬件、软件、人员
    • 数据库管理系统DBMS:数据库系统中的软件部分
  • 理论
    • 模式:内模式(存储)、模式(概念模式,表)、外模式(视图)
    • 映像:外模式-模式映像、模式-内模式映像
  • 设计
    • 需求分析:产出信息要求、处理要求、系统要求
    • 概念结构设计:产出E-R图(实体-联系图)。对各个局部应用设计分E-R图,最终将各个分E-R图合并
    • 逻辑结构设计:将E-R图转为关系模式。
    • 物理设计:确定数据分布、存储结构、访问方式
    • 数据库实施:建立数据库,组织数据
    • 运行和维护
  • 数据模型:三要素(数据结构、数据操作、数据的约束条件)
    • 关系模型:二维表形式下的E-R联系模型,开发人员建模
    • 概念模型:从用户角度进行的建模
  • E-R模型图
    • 图形:椭圆(属性,一般不画)、长方体(实体)、菱形(联系)

      1对1,1对多,多对多

    • 术语:实体、强/弱实体(弱实体依赖于强实体,不能单独出现)、实体集、属性(实体的特性)、简单/复合属性、域(属性的取值范围)、码(可区分实体的属性集)
    • 两个实体以上的联系:仍按照两两实体联系去看
  • 关系模型
    • 术语:行(元组)、列(属性)
    • 从E-R模型转换:
      • 每个实体都是一个关系模式
      • 对联系的转换:1对1、1对多、多对多(两个实体同时做联合主键)
  • 关系代数:表和表之间的逻辑运算
    • 运算:并、交、差、笛卡尔积$\times$、投影$\Pi$(选出某些列)、选择(选择某些行)$\sigma$、自然连接$\bowtie$(所有同名列的内连接)
    • 关系代数的列号从1开始数
  • 函数依赖:
    • 依赖:给定X能唯一确定Y,X确定Y,Y依赖于X。$X \to Y$
    • 部分函数依赖、传递函数依赖
    • 公理系统:自反、增广、传递、合并、伪传递、分解
  • 键和约束
    • 术语:超键(能唯一标识的属性组合)、候选键(去除超键中的冗余属性,也称为码)、主键(任何一个候选键)、外键(其他表中的主键)、主属性(候选键内的属性)
    • 约束:
      • 实体完整性(主键约束):主键不能为空也不能重复
      • 参照完整性(外键约束):外键必须是已存在的值,或者为空
      • 用户自定义约束:属性值不能离谱
    • 范式:
      • 1NF:属性不可分
      • 2NF:满足1NF,且非主属性都完全函数依赖于任何一个候选码。(不能有对候选码的部分函数依赖)
      • 3NF:满足2NF,且不存在非主属性对码的传递依赖
      • BCNF:满足3NF,且主属性对于码也不存在部分函数依赖和传递依赖。

      如果没有非主属性,则至少满足3NF。解题时先求候选键,进而得知主属性和非主属性

    • 模式分解:通过对属性集拆分,去除冗余依赖(传递依赖,部分依赖)
      • 保持函数依赖分解:分解后,和原有依赖集能保持等价
      • 无损分解:是具有无损连接性的分解。充分必要条件是,分解的属性集的交集,可以推出属性集的差集(两种中的一种)。对于3个及以上的关系模式。用表格求解。实际上就是看能否恢复到原有的表。

      注意无损分解和保持函数依赖并不等价。无损可能不保持。

  • 并发控制
    • 事务:原子、一致、隔离、持续
    • 问题:丢失更新、不可重复读、读脏数据
    • 锁:排他锁(写锁、X锁)、共享锁(读锁、S锁)。
    • 封锁协议:
      • 一级:修改前必须加X锁,事务结束释放(提交或回滚)
      • 二级:一级封锁,且读取前加S锁,读完就释放
      • 三级:一级封锁,且在读前加锁,事务结束释放
  • 其他
    • 基础
      • 数据库安全:用户标识鉴定、存取控制、密码、审计
      • 故障:软硬件
      • 备份:静态转储(冷备份)、动态转储(热备份)、完全备份/差量备份(上一次完全备份)/增量备份(上一次备份)
      • 日志文件:事务处理的历史操作记录,可恢复到事务开始。
    • 分布式数据库
      • 定义:由一组数据组成,这组数据分布在网络上的不同计算机上,每个节点都有独立处理能力(场地自治)、可以执行局部应用,同时也可以通过网络通信子系统执行全局应用。
      • 特点:数据独立性(逻辑独立性、物理独立性、数据分布独立性)、集中与自治共享结合、适当增加冗余度、全局一致性/可串行性/可恢复性
      • 局部数据库位于不同的物理位置,使用全局的一个DBMC将所有数据库联网管理
      • 分片模式:水平分片、垂直分片
      • 分布透明性(数据分布独立性):用户或应用程序不需要知道逻辑表的具体存储方式。同理:位置透明性、逻辑透明性(数据模型)、复制透明性(数据来源)。
      • 优点:可以解决企业部门分散而数据需要联系的问题、方便机构扩充、满足负载均衡的需求、可以将已有数据库集成组织全局应用、可靠性较高(故障仅限于局部应用)
    • 数据仓库:
      • 特点:面向主题的、集成的、非易失的(相对稳定性)、随时间变化的数据集合(包含历史信息),用于支持管理决策。
      • 技术层次:数据源、数据存储和管理(核心)、OLAP(联机分析处理)服务器、前端工具
      • BI(商业智能)系统:数据预处理(抽取/转换/加载,ETL)、建立数仓、数据分析、数据展现
    • 反规范化:牺牲规范化、存储空间,来提高性能。另外还能降低连接、外码、索引的需求。减少表数目。
      • 手段:合并表、增加冗余列、增加派生列(避免重复计算)、水平分割(比如按月分表存储)、垂直分割
    • 大数据(PB级以上):大量、多样、价值密度低、快速。
    • SQL语言考察

嵌入式技术

  • 分类:
    • 按字长:4、8、16、32、64。一般将16位及以下的称为嵌入式微控制器,32位及以上称为嵌入式微处理器。
    • 用途分类:MCU(嵌入式微控制器)、MPU(和CPU相比去除了和嵌入式应用无关的硬件,强化安全性可靠性)、DSP、SOC
  • 多核处理器:单芯片多个微处理器内核。
    • 多内核工作协调实现:对称多处理SMP(可以执行相同的任务)、非对称处理AMP(各自处理特定任务)、边界多处理BMP(SMP但是可以限定任务只运行在特定核)
    • 多核CPU的调度:全局队列调度和局部队列调度。
  • 嵌入式软件:
    • 分类:系统软件、应用软件、支撑软件(开发工具,烧录工具)

      嵌入式系统中,操作系统其实不是必要的。但是设备驱动程序是必要的

    • 板级支持包BSP:介于主板硬件和操作系统中驱动程序之间。提供硬件初始化,初始化操作系统。具备硬件相关性,操作系统相关性。一般包括引导加载程序BootLoader和设备驱动程序。
    • BootLoader:硬件上电后第一段运行的代码。初始化硬件,建立内存空间,设置软硬件环境。流程:片级初始化(处理器)、板级初始化、系统初始化(加载内核)
  • 嵌入式系统:由嵌入式处理器、相关支撑软件、嵌入式操作系统、支撑软件和应用软件
    • 特性:专用性强、技术融合、软硬一体软件为主、资源少、代码固化、安全可靠要求、体积小价格低、实时性高
    • 层次:硬件层、抽象层、操作系统层、中间件、应用层
    • 分类:实时系统/非实时,强实时/弱实时,
  • 嵌入式数据库系统EDBMS:
    • 组成:主数据库、同步服务器、嵌入式数据库、连接网络
    • 特点:设备随时移动、网络频繁断接、网络条件多样、通信能力不对称(上下行能力)
  • 嵌入式操作系统EOS:
    • 特点:微型化、代码质量高、专业化、实时性强、可裁剪和可配置

    专业化不意味着不能进行通用任务、多任务。

  • 嵌入式实时操作系统:
    • 投入运行前具有确定性(确定时间)和可预测性(功能、特性、结果)
    • 特征:高精度计时系统、多级中断机制、实时调度机制
  • 软件设计
    • 交叉平台开发环境:宿主机&目标机交叉开发工具、嵌入式操作系统、通信连接方式
    • 开发过程:交叉编译(在一个平台上生成可以在另一个平台上执行的代码)、交叉调试(调试器和被调试进程位于不同系统)

计算机网络

  • 概述
    • 定义:利用通信技术将数据从一个结点传送到另一结点的过程
    • 功能:数据通信、资源共享、管理集中化、分布式处理、负载均衡
    • 性能指标:速率、带宽、吞吐量、时延、往返时间(RTT)、利用率
    • 分类:局域网LAN、城域网MAN、广域网WAN
    • 拓扑结构:总线型、星型(中央单元负荷大)、环型、树形、分布式(任意连接)
    • 网络协议要素:语法(传输格式)、语义(功能描述)、时序(操作顺序)
    • 通信技术:
      • 信道:逻辑信道和物理信道。前者建立在后者上。
      • 物理信道:由传输介质和设备组成。分有线和无线。
      • 信号处理术语:信源编码、信道编码、交织、脉冲成型和调制,解调、去交织、信道译码、信源译码
      • 同时传输多路数据:复用技术(同时传输多路数据)、多址技术(同时传输多个用户的数据)
  • OSI七层模型
    • 物理(单位是比特,中继器/集线器)、数据链路(单位是帧,用差错控制/流量控制建立可靠信道,交换器/网桥)、网络(单位是IP分组,拥塞控制/互连,路由器)、传输(单位是报文段,提供端到端完整正确数据传输,网关)、会话、表示、应用
    • 局域网
      • 以太网
        • 一种局域网组网技术,IEEE 802.3是最重要的局域网协议
        • 以太帧是数据链路层的数据结构。最小帧长64字节。
      • 无线局域网:IEEE 802.11
    • 广域网
      • 相关技术:同步光网络、数字数据网、帧中继、异步传输
  • TCP/IP
    • 网络层协议:IP(无连接不可靠)、ICMP、ARP(ip转物理)、RARP(物理转ip)、IGMP(网络组管理,组播)
    • 传输层协议:TCP(有连接、可靠)、UDP(不可靠无连接,但有助于提高传输速率)
    • 应用层协议:
      • 基于TCP:FTP(20/21)、HTTP(80)、SMTP(25)、POP3(110)、Telnet(23)
      • 基于UDP:TFTP(小文件传输,69)、SNMP(简单网络管理,161/162)、DHCP(动态主机配置,67/68)、DNS(53)
  • 细节技术
    • 交换技术
      • 功能:集线、中继、桥接、隔离冲突域(物理)
      • 实现:转发路径学习(MAC地址和物理端口)、数据转发、数据泛洪、链路地址更新
    • 路由技术
      • 功能:异种网络互连、子网协议转换、数据路由、速率适配、隔离网络(防止广播风暴)、报文分片和重组、备份和流量控制
      • 协议:内部网关协议(IGP)、外部网关协议(EGP)
      • 实现:路由表(下一跳)
    • 通信方式:单工、半双工、全双工
    • 同步方式:异步传输(在发送字符前后插入起始位和停止位)、同步传输(建立连接:同步帧,数据帧,结束帧)
    • 交换方式:
      • 电路交换:建立专用电路,实时性高,利用率低
      • 报文交换:以报文为单位,存储转发模式,先存储、差错校验再转发,有延时,可靠性高
      • 分组交换:对报文分组,以分组为单位,有数据报(主流,每个分组携带地址信息,路由路径可不同,接收方重组,无连接不可靠)、虚电路(建立虚拟通信线路,有连接,可靠)、信元交换(异步传输模式ATM,固定长度的虚电路转发)
  • 传输介质
    • 双绞线:无屏蔽双绞线UTP、屏蔽双绞线STP。
      • UTP:CAT3(10Mbps)、CAT4、CAT5(100Mbps)、CAT5E(1000Mbps)、CAT6(1000Mbps)
      • 两种安装标准(第1246根线顺序不同)
    • 光纤:光纤、多模光纤MMF(纤芯半径较大、用发光二极管LED、速率可靠性较低、适合短距离,可以同时传输多种不同信号)、单模光纤SMF(纤芯半径小、用激光二极管LD、传输距离远可靠性高、一般只能传一种信号、且需是激光)
    • 无线信道:无线电波、红外光波
  • 地址
    • ipv4:点分十进制。由网络号主机号组成的,叫分类IP地址:
      • A:固定前缀0。8+24
      • B:固定前缀10。16+16
      • C:固定前缀110。24+8
      • D类(组播):固定前缀1110。
      • E类保留
    • 无分类编制:不按照ABC类规则,自动规定网络号。例如128.168.1.11/10,网络号10位,主机号22位。
    • 特殊IP地址:公有地址、私有地址
      • 私有地址范围:A(10.0.0.0~10.255.255.255),B(172.16.0.0~172.31.255.255),C(192.168.0.0~192.168.255.255)
      • 其他特殊
        网络号 主机号 源地址使用 目的地址使用 含义
        全0 全0 可以 不可 本网络上的本主机
        全1 全1 不可 可以 本网络上广播
        Net-ID 全1 不可 可以 对Net-ID上所有主机广播
        127 非全0、全1 可以 可以 本地软件换回测试
        169.254 非全0、全1 可以 可以 Windows主机DHCP服务器故障分配
    • 子网划分:网络号、子网号、主机号。子网号可以全0、全1,主机号则不能。
    • 子网聚合(超网):从网络号里取几位作为主机号。
  • ipv6
    • 特点:128位、灵活且简化的报文头部(提高转发速度、吞吐量)、支持更多服务、提高安全性
    • 过渡阶段:双协议栈、隧道技术(将ipv6报作为数据装在ipv4报中)、翻译技术(对纯ipv4、ipv6进行转换)
  • 网络规划的三层模型:核心层(高速地数据转发)、汇聚层(将网络业务连接到接入层,提供安全/流量/负载/路由)、接入层(提供用户在本地网段访问能力,负责用户信息,如ip/mac地址的收集和管理)
    • 建筑物综合布线系统(结构化布线,PDS)6个子系统:工作区(终端设备到信息插座)、水平布线(一层的信息插座和管理子系统)、管理(连接各层的水平和垂直干线,不同子系统)、垂直干线(各楼层设备间子系统互联)、设备间(中央驻配线架和各种不同设备)、建筑群
  • 磁盘冗余阵列技术(RAID):分散冗余存储,并行读取,提高磁盘访问速度,保障数据安全性
    • RAID0:分散存储,磁盘利用率100%。但是没有冗余,不能错误修复。
    • RAID1:成对的硬盘上互为备份,磁盘利用率50%。
    • RAID2:数据条块化,海明校验
    • RAID3:奇偶校验,单块磁盘存储校验信息(无论有多少磁盘,只有一块磁盘有校验信息)
    • RAID5:交叉的存储数据和奇偶校验信息,校验信息总量是一块磁盘(这些信息被分散到各个磁盘中),比RAID3可靠。利用率$\frac{n}{n-1}$。
    • 组合:RAID0+1(2组RAID0,再组成RAID1),RAID1+0(2组RAID1,在组成RAID0,比前者更好)。
  • 网络存储技术:
    • 分类:直接附加存储(DAS,直接加硬盘,各方面均受限)、网络附加NAS(适合小文件级的共享,性能有限)、存储区域网(SAN,专用交换机将磁盘阵列和服务器连接,用块级别而非文件来进行存储,专用网络FC SAN/IP SAN/IB SAN)
  • 其他
    • NAT、默认网关(同网段的默认网关)
    • 虚拟局域网(VLAN,工作在OSI的2/3层,其内是一个广播域)
    • 虚拟专用网(VPN)
    • PPP(点对点安全认证协议)
    • 冲突域(一个物理层,可由交换机路由器阻断)、广播域(一个交换机下,可由路由器阻断)
    • URL:协议 + 服务/主机(www、mail) + 域名(xxx.xxx.com) + (路径)

      域名:本地缓存、本地域名服务器、权限域名服务器、顶级域名服务器、根域名服务器。

其他系统基础

  • 计算机语言
    • 组成:表达式、流程控制、集合
    • 分类:机器语言、汇编语言(指令、伪指令对汇编过程进行控制、宏指令)、高级语言、建模语言(UML)、形式化语言
  • 媒体
    • 信息的表现形式:感觉、表示、显示、存储、传输
    • 多媒体:多维化、集成、交互、实时
      • 关键技术:视音频技术、通信技术、压缩技术(即时/非即时,无损/有损)
    • VR/AR:桌面式、分布式(多用户)、沉浸式、增强式
  • 系统工程
    • 定义:利用计算机作为工具,对系统的结构、元素、信息和反馈进行分析,达到最优规划、设计、管理、控制
    • 生命周期7个阶段:探索研究、概念、并发、生产、使用、保障、退役
    • 生命周期方法:计划驱动、渐进迭代、精益开发、敏捷开发
    • 基于模型的系统工程(MBSE):建模方法的形式化应用。让建模方法支持系统各开发阶段的活动。
      • 三种图形:需求分析阶段(需求图、用例图、包图)、功能分析与分配阶段(顺序图、活动图、状态机图)、设计综合阶段(模块定义图、内部块图、参数图)
      • 三大支柱:建模语言、建模工具、建模思路
    • 霍尔的三维结构(工程技术问题):时间维(规划、拟订、研制、生产、安装、运行、更新)、逻辑维(明确问题、确定目标、系统综合、系统分析、优化、决策、实施)、知识维
    • 切克兰德(社会经济问题):认识问题、根底定义、概念模型、比较及探寻、选择、设计和实施、评估和反馈
    • 并行工程方法:从设计开始就考虑产品生命周期的全过程。目标是提高质量、降低成本、缩短开发周期。
    • 综合集成法(开放的复杂巨系统):整体论原则、相互联系原则、有序性原则、动态原则。定性/定量,宏观/围观,多学科,理论和经验都相互结合。
    • WSR(物理-事理-人理)系统方法

系统配置和性能评价

  • 计算机性能指标:时钟频率(主频)、运算速度、运算精度、内存的存储容量、内存的存取周期、数据处理速率PDR、吞吐率、各类响应时间、各类利用率、RASIS特性(可靠/可用/可维护/完整性/安全性)、平均故障响应时间、兼容性、可扩充性、性能价格比
  • 路由器性能指标:设备吞吐量、端口吞吐量、丢包率、时延、时延抖动
  • 网络:设备级性能指标、网络级性能指标、应用级性能指标、用户级性能指标、吞吐量、支持协议和标准
  • 操作系统:可靠性、吞吐率(量)、响应时间、利用率、可移植性
  • 数据库管理系统:库大小、表数量、单表大小、表中允许的行数、单行大小、表/库允许的索引数量、最大并发事务能力、负载均衡、最大连接数等
  • WEB服务器:最大并发连接数、响应延迟、吞吐量
  • 性能评价方法
    • 常用:时钟频率、指令执行速度(KIPS、MIPS)、等效指令速度法(统计各类指令的比例,固定比例法)、数据处理速度(PDR、更准确)
    • 基准程序法:应用程序中用的最多、最频繁的部分核心程序,作为评价性能的标准程序
      • 整数测试程序(MIPS)
      • 浮点测试程序(MFLOPS)
      • SPEC基准程序(处理器基准程序集)
      • TPC基准程序(事务处理、数据库处理、企业管理决策支持系统性能):TPC-C用于OLTP(在线事务处理)、TPC-D(决策支持)、TPC-E(信息服务)
    • 准确度依次递减:真实程序、核心程序、小型基准程序、合成基准程序
  • 阿姆达尔解决方法:用于系统性能改进的计算
    • 阿姆达尔定律:计算机系统中对某一部件采用更快的执行方式所获得的系统性能改变程度,取决于该方式被使用的频率或所占总时间的比例。
    • 加速比:$加速比=\frac{不使用增强部件时完成整个任务的时间}{使用增强部件时完成整个任务的时间}$
    • 总加速比:$总加速比=\frac{原来的执行时间}{新的执行时间}=\frac{1}{(1-增强比例)+\frac{增强比例}{增强加速比}}$

信息系统

  • 概述
    • 以处理信息流为目的的人机一体化系统
    • 基本功能:输入、存储、处理、输出和控制
    • 以计算机为基础,人机交互
    • 诺兰模型(信息系统进化模型)6个阶段:初始、传播(盲目投入)、控制(整体上开始组织协调)、集成、数据管理、成熟
    • 分类:业务(数据)处理系统TPS/DPS(局部业务)、管理信息系统MIS(全局但企业内部)、决策支持系统DSS(半结构化决策、非结构化决策)、专家系统ES、办公自动化系统OAS

      TPS、DPS、MIS是相对初级的信息系统

    • 具体的系统:ERP(企业资源管理)、WMS(仓储管理)、MES/SFC(制造过程管理)、PDM(产品数据管理)
    • 生命周期:产生(概念、需求分析)、开发(总体规划、系统分析/设计/实施/验收)、运行、消亡(初期就应考虑)
    • 建设原则:管理人员介入、用户参与开发、自顶向下规划、工程化
  • 信息系统开发方法:
    • 结构化方法:结构化分析SA、结构化设计SD、结构化程序设计SP。自顶向下、逐步求精、模块化设计。
      • 特点:目标清晰、阶段明确、文档规范、设计方法结构化
      • 图形工具:数据流图、数据字典、结构化语言、判定表以及判定树
      • 缺点:开发周期长、难以适应需求变化、很少考虑数据结构

        结构化方法的思路是先将整体视作一个模块,再逐步分解成小模块,逐步求精

    • 原型化方法(快速原型法)
      • 快速建立系统模型,在此基础上跟用户交流
      • 分类:
        • 按功能:水平原型(行为界面)、垂直原型(结构化原型,实现部分功能)
        • 按最终结果:抛弃式、演化式
      • 特点:缩短开发周期、降低成本风险、较高的综合开发收益、以用户为中心、用户参与度高(有利于移交和用户使用)
      • 缺点:开发环境和管理能力要求更改
    • 面向对象方法
    • 面向服务SO:进一步将接口的定义和实现解耦。(类$\to$构件$\to$服务)

    当前大型信息系统开发一般是结合结构化方法和OO方法

  • 分类详解
    • 业务处理系统TPS:应对结构化程度很高(有清晰的定义和边界)的管理问题
      • 数据处理周期:数据输入、数据处理(批处理、实时处理OTLP)、数据库维护、文件报表生成、查询处理
    • 管理信息系统MIS:
      • 由业务处理系统发展而来,引入大量管理方法,对企业整体信息进行处理,利用信息进行预测、控制、计划、辅助企业全面管理。
      • 四大组件:信息源、信息处理器、信息用户、信息管理者
      • 三层(从高到低):战略计划、管理控制、运行控制
      • 功能结构表示:功能-过程(相关活动的集合)结构
      • 组成:用功能/层次矩阵表示
    • 决策支持系统DSS:解决非结构化管理问题提供支撑,改善决策质量
      • 基本结构:两库结构(数据库/模型库,以及对话子系统)、基于知识的结构
      • 基本模式:反应DSS的形式,以及DSS和“真实系统”(现实世界的业务系统),以及人和外部环境的关系
      • 总体功能:支持各种层次的人们进行决策
      • 组成:数据重组和确认、数据字典的建立、数据挖掘和智能体、模型建立
    • 专家系统ES:人工智能的一个重要分支
      • 特点:求解半结构/非结构化问题、模拟人类专家的推理、三要素(描述问题的综合数据库、存放启发式经验的知识库、对知识推理的推理机)、处理实际问题、专用性强、通用性差、没有时间限制、操作成本低廉、易于传递复制、结果可复现
      • 组成:知识库、综合数据库(动态知识库,运行时存储各种计算推理信息)、推理机、知识获取、解释程序(解答问题)、人机接口(和普通用户、和领域专家)

        人工智能是一个广泛的领域,主要分支有专家系统、机器人技术、视觉系统、自然语言处理、学习系统和神经网络

    • 办公自动化系统OAS:
      • 目的:办公信息处理手段的自动化。解决数据、文字、声音、图像的一体化处理问题。提高办公效率和办公质量。
      • 以行为科学为主导、系统科学为理论基础、综合运用计算机技术和通信技术
      • 功能:事务处理、信息管理、辅助决策
      • 组成:计算机设备、办公设备(传真、打印机)、数据通信和网络、软件系统
    • 企业资源规划ERP
      • 建立在信息技术基础上,用系统化的管理思想,为企业提供决策和运营手段的管理平台。EPR系统将企业所有资源进行集成整合。
      • 企业三大资源:物流、资金流、信息流。人力资源也可用说是第四资源。
      • 结构:生产预测、销售管理(计划)、经营计划、主生产计划、物种需求计划、能力需求计划、车间作业计划、采购和库存管理、质量和设备管理、财务管理
  • 典型信息系统架构(ISA)模型
    • 政府信息化和电子政务:对现有政府形态的一种改造(政府部门内部、部门之间、和居民citizen、和公务员Employee)。G2G、G2B、G2C、B2G、C2G、G2E。
      • 2个特征:以互联网为基础设施、强调政府服务功能的发挥和完善
    • 企业信息化和电子商务
      • 目标:优化企业业务活动、提高竞争能力。
      • 三个层面:企业战略、业务运作、管理运作
      • 建立在企业战略规划基础之上
      • 企业战略数据模型:数据库模型、数据仓库模型
    • 企业信息化方法:业务流程重构(BPR)方法、核心业务应用方法、信息系统建设方法、主题数据库方法、资源管理方法、人力资本投资方法
  • 信息化战略体系
    • 各类规划
      • 企业战略规划利用机会和威胁评价现在和未来的环境,评价企业现状优劣,选择并确定企业总体和长远目标
      • 信息系统战略规划关注如何通过信息系统来支撑业务流程的运作。重点在于对信息系统远景、组成架构、各部分逻辑关系进行规划。信息化战略是企业战略的一部分。
      • 信息技术战略规划:在信息系统规划的基础上,对支撑信息系统的硬件、软件、支撑环境等技术进行具体规划
      • 信息资源规划:在以上规划的基础上,进行数据需求分析、信息资源标准建立、信息资源整合
      • 系统规划:单个项目的规划
    • 企业信息系统战略规划的三个阶段:(自底向上)
      • 第一阶段:以数据处理为核心、围绕职能部门需求。企业系统规划法BSP、关键成功因素法CSF、战略集合转换法SST。
        • BSP:自上而下识别企业目标,自下而上设计系统。重视数据的创建和使用,最终建立CU矩阵(创建使用矩阵)。
      • 第二阶段:以企业内部MIS为核心,围绕企业整体需求。战略数据规划法SDP、信息工程法IE、战略栅格法SG。
        • SDP:面向业务主体,强调建立企业模型和主题数据库。
        • IE:第一次提出以工程的方法建立信息系统。三要素:企业各种信息,企业业务流程,企业采用的信息技术。
        • SG:建立2*2的矩阵,代表某个过程对数据的创建和使用。
      • 第三阶段:综合考虑企业内外环境,以集成为核心,围绕企业战略需求。价值链分析法VCA、战略一致性模型SAM。
        • VCA:分析对企业增值最大的信息
        • SAM:保证企业战略和信息系统战略一致
  • 客户关系管理CRM
    • 目的:以客户为中心,提高客户满意度,增加客户忠诚度
    • 概述:集成化的信息管理系统,存储了企业现有和潜在的客户信息,并自动处理以产生更好的市场管理策略
    • 要素:以信息技术为手段、以客户为中心的商业策略、注重和客户交流、提高满意度但也提高利润、要求企业对业务重新设计(BPR)以满足将业务中心转移到客户的需求
    • 主要模块:销售自动化、营销自动化、客户服务与支持、商业智能
    • 功能:客户服务、市场营销、共享客户资料库(将营销和客户服务联系起来)、分析能力(分析客户价值)。

      市场营销和客户服务是CRM的支柱性功能

    • CRM解决方案:客户交流渠道、对信息分析、和ERP紧密集成
    • 实现过程:客户服务和支持、客户群维系、商机管理
  • 供应链管理SCM:
    • 概述:有效地控制信息流、资金流、物流,以将正确数量的商品在正确时间内送到正确地点的管理方法
    • 特点:以客户为中心、集成化管理、扩展性管理、企业合作、多层次管理
    • 供应链节点:供应商、制造商、分销商、零售商、仓库、配送中心、客户
    • 基本内容:计划(资源管理策略)、采购、制造、配送、退货
  • 企业应用集成EAI:
    • 类型:表示集成(做一个统一的界面,但底层各系统独立,界面集成/黑盒集成)、数据集成(将不同系统数据进行收集/集中并共享,如数据仓库中间件,白盒集成)、控制继承(面向业务逻辑层次的集成,在中间件之上,功能集成、应用集成、黑盒集成)、业务流程集成(全流程,最彻底综合的集成)

      数据集成点不同:表示在最高层、数据最低、控制集成在中间。

    • 应用集成数据交换方式:共享数据库(实时/高频/同步,不安全易死锁)、消息传递(数据量小,频繁、可靠、异步)、文件传输(大数据量、低频)
    • 集成平台基本功能:通信服务、信息集成服务(对信息数据的一致访问)、应用集成服务(应用间数据交换和访问)、二次开发工具、平台运行管理工具
      • 企业信息集成:分内部和外部两种。
        • 内部:技术平台(系统底层软硬件操作系统平台)、数据(数据和数据库集成,数据共享)、应用系统(应用之间互操作)、业务过程(不同应用系统之间的连接协调)
        • 外部:门户网站、互联网、和合作伙伴信息系统
  • 电子商务
    • 三方面:广告选购交易、交易支付结算、售后服务
    • 实体:顾客、商户、银行、认证中心
    • 模式:B2B、B2C、C2C、O2O(线上买线下的服务或商品)
    • 基础设施:网络、多媒体、商业服务、政策法律技术标准

信息安全

  • 概述:
    • 信息安全的基本要素:机密性、完整性、可用性、可控性(授权范围内的信息流向和行为)、可审查性
    • 信息安全的范围:设备安全(首要问题,稳定性、可靠性、可用性)、数据安全(防泄漏/篡改/毁坏,秘密性、完整性、可用性)、内容安全(符合政治法律道德要求)、行为安全(用户操作行为、秘密性、完整性、可控性)
    • 信息的存储安全:信息使用的安全、系统安全监控、计算机病毒防治、数据的加密和防止非法攻击
    • 网络安全:隐患(物理安全性、软件安全漏洞、不兼容使用安全漏洞、安全哲理)、威胁(非授权访问、信息泄露丢失、完整性破坏、拒绝服务攻击、传播病毒)、安全措施目标(访问控制、认证、完整性、审计、保密)
    • 技术体系:基础安全设备(密码芯片、加密卡、身份识别卡)、计算机网络安全(信息传输过程中的安全防范)、操作系统安全(无错误配置、无漏洞无后门)、数据库安全(数据库管理系统和数据库应用系统)、终端安全设备(电信网终端设备)
  • 加密技术:
    • 密码系统(密码体制)组成部分:明文空间M、密文空间C、密钥空间K(加密密钥和解密密钥)、加密算法E、解密算法D
    • 对称加密:加密和解密的密钥相同。加密强度不高、密钥位数少、密钥分发困难、加密速度快、适合加密大数据。常见:DES、3DES、AES、RC-5、IDEA
    • 非对称加密(公开密钥加密算法):公钥和私钥。加密速度慢,安全性高,但无法保证完整性。常见:RSA、Elgamal、ECC、背包算法、Rabin、D-H
    • 数字信封:用非对称加密传输对称加密的密钥并传输。
    • 信息摘要:由哈希函数(散列函数)产生指定数据的一段固定长度的的特征信息,随数据改变而变化。用于保证完整性,只能单向生成,不能还原。常见:MD5、SHA-1
    • 数字签名:用发送者的私钥加密,其他人用公钥解密。用于唯一表示发送方。保证完整性(身份准确),不保证机密性。
  • 公钥基础设施PKI:以非对称加密为基础,以数据机密性、完整性、身份认证和行为不可抵赖为安全目的的,提供安全服务的安全基础设施
    • 数字证书:由权威机构签署的信息集合。
    • 签证机构CA:负责签发证书、管理和撤销证书。签证机构会在证书上添加自己的数字签名,任何用户都可以通过CA的公钥来验证数字签名。
  • 访问控制:
    • 主体依据某些控制策略或权限对客体本身或是其资源进行的不同授权访问。三要素:主体、客体、控制策略。
    • 内容:认证、控制策略实现、审计
      • 访问控制矩阵ACM:通过矩阵表示访问控制规则和授权用户权限。一个主体一行,各列是客体。
      • 访问控制表ACL:每个客体有一个访问控制表(保存各个主体对该客体的访问授权)。实际上是分列存储ACM。
      • 能力表:按行保存ACM
      • 授权关系表:每一个元组是ACM中的一个非空元素。是按单元格存储ACM。
  • 抗攻击技术:
    • 密钥生成:增大密钥空间(长度)、更复杂的密钥、增加密钥随机性
    • DoS、DDoS:
      • 拒绝服务攻击DoS:内部用户(长时间占用系统内存CPU)、外部用户(消耗资源、破坏更改配置、使服务失效)
      • 分布式拒绝服务DDoS攻击
      • 防御方式:加强对数据包的特征识别、设置防火墙监视本地端口、对通信数据量进行统计(位置和数量)、修正已经发现的问题和漏洞
      • 强化TCP/IP对战来防御:
        • 同步包风暴(SYN Flooding):两次握手后连接会处于等待状态,耗尽资源。可以修改系统配置来改善。
        • ICMP攻击:Ping of Death,发送大于64KB(超过ICMP最大尺寸规定)。可以修改系统配置。
        • SNMP:被控制后网络可被完全接管。
    • ARP欺骗:伪造ARP响应,篡改指定IP的MAC地址。
      • 防御方式:固化arp表、使用单独的ARP服务器(并保证服务器安全)、双向绑定、ARP防护软件。
    • DNS欺骗:冒充域名服务器,将查询IP替换为攻击者IP。
      • 检测方式:旁路监听(捕获DNS请求和应答,看应答是否超过一种)、虚假报文检测(主动发送报文给非DNS服务器)、交叉检测查询(收到DNS应答后反向查询该IP的DNS名字)
    • IP欺骗:先瘫痪被顶替主机的网络,再连接到目标机的端口来猜测ISN基值和增加规律。后续发送伪装地址、发送SYN的请求连接,后续伪装反馈SYN+ACK。
      • 防御:删除UNIX中的所有/etc/host.equiv、rhosts文件、inetd.conf文件,禁止RPC,并开设防火墙
    • 端口扫描:
      • 原理分类:全TCP连接、半打开式扫描(SYN)、FIN扫描(关闭端口回RST,活跃端口无反馈,秘密扫描)、第三方扫描(代理扫描)
  • 信息安全保证体系和评估方法:
    • 计算机系统安全保护能力的五个等级:用户自主保护级(隔离用户和数据,自主访问控制)、系统审计保护级(粒度更细的自主访问控制,控制访问权限扩散)、安全标记保护级(对主体能控制的客体,进行强制访问控制)、结构化保护级(所有主体客体的强制访问控制,考虑隐蔽通道)、访问验证保护级(满足访问监控器需求,监控主体对客体的所有访问)

      自主访问控制:指由客体的属主决定客体对外的可访问权限。强制访问控制:即主体能控制的,也不能自行决定,而受系统控制。

    • 评估
      • 考虑:评估范围、目标、组织结构、系统性的评估方法、管理者批准
      • 基本要素:脆弱性、资产、威胁、风险、安全措施
  • 网络安全技术:
    • 防火墙:内部网络和外部因特网的一道安全防护措施。无法防御来自内网的攻击。
      • 网络级防火墙:层次低、效率高。做包过滤和简单的状态检测。
      • 应用级防火墙:层次高、效率低。对包拆开检查。
    • 入侵检测系统IDS:在防火墙后进行补充。只检测。
      • 原理:监控当前系统、用户行为(内置行为数据库)。是一个监听设备,需要监听到所有关注流量。
      • 位置选择:尽可能靠近攻击源、受保护资源
    • 入侵防御系统IPS:在安全网络之前的链路上挂在IPS,实时监测入侵行为,并在攻击发生前提前阻断
    • 杀毒软件
    • 蜜罐系统:伪造蜜罐网络引诱攻击
  • 网络攻击和威胁
    • 分类:被动攻击(窃听、业务流分析、非法登录)、主动攻击(假冒身份、抵赖、旁路攻击、重放攻击拒绝服务
  • 网络安全协议:
    • 整体:物理层用物理手段屏蔽隔离物理设备,其他层用协议保证传输安全
      • 数据链路层:链路加密、PPTP、L2TP
      • 网络层:防火墙、IPSec
      • 传输层:TLS、SET、SSL
      • 应用层(应用、会话、表示):PGP、Https、SSL
    • 说明:SSH(安全外壳协议)、SET(安全电子交易协议、B2C模式)、Kerberos(网络身份认证协议,和PKI类似,其证书服务器叫KDC)、PGP(安全邮件,用RSA公钥做身份认证、用IDEA做数据加密、MD5做完整性验证)

软件工程 ⭐

  • 概述
    • 软件开发生命周期:软件定义时期(可行性研究和详细需求分析)、软件开发时期(设计和实现)、软件运行和维护
    • 软件系统文档:用户文档(描述系统功能和使用方法)、系统文档(描述系统设计、实现、测试)
    • 软件工程过程PDCA:Plan软件规格说明、Do软件开发、Check软件确认、Action软件演进
    • 软件系统工具:软件开发工具(需求、设计、编码、排错)、软件维护工具(版本控制、逆向工程)、软件管理和软件支持工具(项目管理、配置管理、评价工具)
    • 软件设计活动:数据设计、架构(体系结构)设计、人机界面(接口)设计和过程设计
  • 能力成熟度模型CMM:用于指导软件过程改进(提升公司的软件工程能力水平)
    • 能力等级:初始级(杂乱无章,靠个人英雄努力)、可重复级(基本项目管理,必要的过程准则)、已定义级(软件过程标准化文档化)、已管理级(定量的软件过程标准)、优化级(不断持续改进)
  • 能力成熟度模型集成CMMI:
    • 若干过程模型的综合和改进,支持多学科多领域
    • 表示方式:阶段式模型(初始级、已管理级、已定义级、定量管理、优化级)、连续式模型(关注每个过程域的能力,对不同过程域达到不同的能力等级)

      过程域是一些软件工程过程的组合,比如需求管理、项目计划、配置管理,这些都是软件工程中的一个过程。

  • 软件过程模型
    • 瀑布模型SDLC:可行性分析、需求分析、软件设计、编码(含单元测试)、测试、运行维护。特点:从上一项活动接收当前的活动输入,输出给下一项,严格按顺序,评审未通过则返工。
    • 螺旋模型:演化软件过程模型,是原型模型和瀑布模型的结合,适合需求不明确的复杂、高风险、大型场景,唯一能够进行风险分析的模型。四阶段:制定计划、风险分析、实施工程、客户评估。
    • V模型:用于需求明确或者变更不频繁的情形,强调测试。对应关系:编码-单元测试、详细设计-集成测试、概要设计-系统测试、需求分析-验收测试。
    • 原型化模型:创建快速原型,通过充分沟通,最终弄清需求。适合需求不明确,动态,逐步带入的。原型应实际可行,具有最终系统的基本特征,构造方便快速低廉。
    • 增量模型:首先开发核心模块功能。优先级最高的服务最先交付。难点在于需要将客户需求划分为若干个增量。每一个增量都是独立可操作的。
    • 敏捷模型:个体和交互比过程和工具更重要,可用的软件比文档更重要,客户合作比合同谈判更好,相应变化比遵循计划更好。
      • 特点:适应性、非预设性、面向人、以人为本、迭代增量
      • 敏捷方法:
        • 极限编程XP:交流、反馈、实事求是、测试先行、小周期螺旋式开发
        • 水晶系列方法:以人为中心,系列中的每个开发方法都有独特角色、过程模式、产品和实践
        • 并列争球Scrum:迭代增量开发。一段时间一次迭代称为一个冲刺(Sprint),按需求优先级实现,多个自治小组并行递增产品。
        • 特性驱动开发方法FDD:迭代开发。三要素:人、过程、技术。5个核心:开发整体对象模型、构造特征列表、计划特征开发、特征设计、特征构建。
    • 统一过程模型RUP:有效的利用商业的可靠的方法开发和部署软件。一种重量级过程。可以为所有方面和层次的程序开发提供指导方针、模板和事例支持。
      • 开发生命周期的核心工作流(9个):业务建模、需求、分析和设计、实现、测试、部署、配置和变更管理、项目管理、环境
      • 开发生命周期的循环(每个循环产生新版本):初始阶段、细化阶段、构造阶段、移交阶段
      • 核心概念:角色(项目参与人员的分类)、活动(有明确目的的工作单元)、制品(活动生成的内容)、工作流(有意义的连续的活动序列)
      • 特点:用例和风险驱动、以体系结构为中心(强调架构设计)、迭代和增量
      • 4+1视图模型:用例视图(QA和分析人员)、逻辑视图(用户)、实现视图(程序员)、进程视图(集成人员)、部署视图(系统工程师)

        用例视图将所有视图串联到一起。

    • 其他:喷泉模型(面向对象并迭代)、基于构建的开发模型CBSD(使用预包装的可复用的构件)、形式化方法(严格建立在数学基础上)
  • 逆向工程:
    • 软件复用:从代码级复用,到所有领域知识(经验、设计、架构、需求、文档)
    • 逆向工程:分析程序,恢复设计。四个级别:实现级(抽象级别最低、完备性最高)、结构级、功能级、领域级(抽象级别最高、完备性最低)。
      • 重构:在统一抽象级别上转换描述、实现形式
      • 设计恢复:从已有程序中抽象出设计信息
      • 正向工程:从系统中恢复设计,并重构改善质量
      • 再工程:在逆向工程信息基础上,修改并重构,包含以上三个步骤,并增加新的设计
  • 软件需求:
    • 定义:用户在功能、行为、性能、设计约束等方面的期望。
    • 过程:需求开发(获取、分析、定义、验证)、需求管理(变更、版本、跟踪)。需求开发阶段产出需求基线。
    • 分类:
      • 业务需求:客户的高抽象层次目标
      • 用户需求:客户的具体目标和任务
      • 系统需求:从系统技术角度说明需求(给开发人员看的,有专业术语),包括功能需求、非功能需求(可测试性、可维护性、可靠性、性能、操作性、文化多语言)、设计约束(其他限制条件)

        注意需求的递进关系,越来越具体,越来越技术

    • 需求获取方法:访谈、问卷(不适合逐个访谈时)、采样(数理统计)、情节串联板(画画)、联合需求计划、需求记录技术
    • 需求分析:将杂乱无章的要求和期望转换为需求
      • 任务:绘制上下文关系图、创建界面原型、分析可行性、确定优先级、建立模型、数据字典、QFD(质量功能部署)
      • 结构化:自顶向下、逐步分解、面向数据。三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R)、数据字典
        • 数据流图:外部实体(不在系统中的,数据发源地或归宿地)、加工(输入数据流到输出数据流的转换)、数据存储、数据流(两端必须有一个加工)。参考:一篇文章带你学会如何画数据流图(DFD)
        • 数据字典:解释数据流图中的每个成分。四类条目:数据流、数据项、数据存储、基本加工。加工逻辑描述有3种(结构化语言、判定表、判定树)
    • 需求定义(软件需求规格说明书SRS):
      • 方法:严格定义(预先假设,即所有需求能被预先定义,用户和研发能准确交流)、原型方法(迭代循环开发,对于不能预先定义的情况)
    • 需求变更:变更请求、评估影响、通知客户、变更控制委员会CCB(或称配置控制委员会)审批。
      • 风险:无足够用户参与、忽略用户分类、用户需求不断增加、不明确的需求、不必要的特性、过于精简的SRS、不准确的估算
    • 需求跟踪:
      • 双向跟踪:正向(原始需求是否都实现)、反向(实现的是否是用户需求)。通过需求-用例表格(需求跟踪矩阵)进行判断。
  • 处理流程设计
    • 流程表示工具:程序流程图(PFD)、IPO图(输入输出和加工)、N-S图(结构化,嵌套和层次,不适合复杂程序)、问题分析图(PAD,结构化程序设计)
    • 业务流程重组BPR:对业务流程进行彻底思考和根本性的再设计。
      • 基本原则:流程为中心、团队管理以人为本、以客户为导向
    • 业务流程管理BPM:以规范化的构造端到端的卓越业务流程为中心、持续提高业务绩效
      • 和BPR的区别:不要求对所有流程进行重构。根据现有情况,进行规范化设计
      • 三个层次:规范流程、优化流程、再造流程(如果实在无法优化)
  • 系统设计
    • 目的:制定蓝图,选择技术和实施方案,合理利用资源,给出详细设计方法
    • 方法:结构化设计、面向对象设计
    • 主要内容:概要设计(系统总体结构设计,给出模块结构图、系统结构图)、详细设计(模块内详细算法、数据结构、数据库、说明书、评审)
    • 基本原理:抽象化、自顶向下、逐步求精、信息隐蔽、模块独立(高内聚、低耦合)、模块化
    • 原则:模块大小适中、减少调用深度、多扇入少扇出、单入口单出口、模块作用域在模块之内、功能可预测
    • 内聚程度:内聚是模块内元素的关联程度
      内聚分类 关键字
      偶然内聚 无直接关系
      逻辑内聚 逻辑相似、由参数决定
      时间内聚 需要同时执行
      过程内聚 指定的过程顺序
      通信内聚 相同数据结构和输入输出
      顺序内聚 顺序执行、前者输出给后者输入
      功能内聚 共同作用、缺一不可
    • 耦合程度:
      耦合分类 关键字
      无直接耦合 无直接关系
      数据耦合 传递数据值
      标记耦合 传递数据结构
      控制耦合 控制变量,选择执行的功能
      外部耦合 模块间影响软件外部环境
      公共耦合 操作公共数据结构
      内容耦合 直接使用其他模块内部
  • 人机界面设计
    • 三大原则:置于用户控制之下、减少用户记忆负担、保持界面的一致性
  • 测试
    • 系统测试:为了发现错误而执行程序的过程。一个成功的测试是发现了至今尚未发现的错误的测试。
    • 测试原则:尽早不断测试、避免开发者承担、确定输入输出、有效合理和无效无理的用例、检测做了该做且没做不该做的
    • 测试方法:静态测试(不运行,人工检错或和静态分析)、动态测试(实际运行)
      • 黑盒测试:功能性测试。不了解代码,根据功能设计用例,测试软件功能。
      • 白盒测试:结构性测试,明确流程,根据逻辑设置用例,进行用例覆盖。
      • 灰盒测试
    • 测试阶段:
      • 单元测试:可独立编译汇编的程序模块(类)。软件详细设计说明书。
      • 集成测试:检查模块之间,模块和集成软件的接口。软件概要设计文档。
      • 系统测试:测试对象是完整、集成的计算机系统。依据用户需求或开发合同。包括功能、性能、界面、安全、安装卸载等。
      • 确认测试:验证软件功能、性能和其他特性和用户需求一致。
        • 内部确认:开发者根据SRS测试。
        • Alpha测试:用户在开发环境下测试。
        • Beta:用户在实际使用环境下测试
        • 验收测试:针对SRS,在交付前以用户为主的测试。
      • 其他:
        • 配置项测试:对软件配置测试。检测软件配置项和SRS的一致性。
        • 回归测试:测试软件变更后,变更部分的正确性,以及对原有功能等不产生损害。
    • 测试策略:自底向上(从底层模块开始,编写驱动程序)、自顶向下(从整个系统开始,编写桩程序)、三明治(前两者都有)
    • 测试用例设计方法
      • 黑盒测试用例:等价类划分(按数据特性划分类型,有效等价类/无效等价类,无效等价类最多只有一个)、边界值划分(边界值和边界之外的第一个值)、错误推测、因果图

        所谓等价类,就是指根据SRS设计用例时,一大类可以揭示同一个错误点的用例集合。

      • 白盒测试用例(层级从低到高):语句覆盖SC(所有语句执行一次,覆盖层次最低)、判定覆盖DC(所有判断语句的条件真假均覆盖一次)、条件覆盖CC(每一个判断条件的每一个独立条件都要执行一遍)、条件判定组合覆盖CDC(同时满足判定和条件覆盖)、路径覆盖(所有可行路径都覆盖,覆盖层级最高)。
    • 调试:确定错误的位置、原因并改正,改正后要做回归测试。方法有蛮力法、回溯法(从出错位置反向)、原因排除法(演绎、归纳、二分)

      抽象用例、具体用例,前者是从基础用例中抽取的公共部分,为了避免重复工作的优化用例,后者是从用户需求获得的,实实在在的用户用例。

  • 软件度量
    • 软件属性:外部属性(面向管理者和用户,如性能,可直接测量的)、内部属性(软件本身的属性,如可靠性,间接测量)
    • McCabe度量法:环路复杂度,有向边数为$m$,节点数$n$,复杂度为$m-n+2$。节点包括开始结束。
  • 系统转换:新系统开发完毕,取代现有系统的过程
    • 遗留系统:任何基本上不能进行修改和演化来满足新的变化的业务需求的信息系统。即不能完全满足要求、技术落后、维护困难,很难理解。
    • 根据技术水平和业务价值:改造(高水平高价值)、集成(高水平低价值,水平高所以不改直接集成)、继承(低水平高价值,水平低就要替代了)、淘汰(低水平低价值)
    • 转换方法:直接转换(风险大,成本低)、并行转换(耗费人力,数据控制困难)、分段转换(分期分批进行,耗时,需要协调接口,将大系统分为若干子系统)
    • 数据转换和迁移:系统切换前通过工具迁移、系统切换前手工录入、系统切换后新系统生成
  • 系统维护
    • 可维护性:维护人员理解、改正、改动和改进软件的难易程度
    • 评价指标:易分析性、易改变性、稳定性、易测试性、依从性
    • 维护类型:硬件维护、软件维护、数据维护
      • 软件维护:正确性维护(修正bug)、适应性维护(外部环境变化)、完善性维护(更多需求)、预防性维护(防止可能的bug)
  • 净室软件工程CES:
    • 定义:一种应用数学和统计学理论,以经济方式生产高质量软件的工程技术。通过严格的工程化的软件过程,达到开发中的零缺陷或接近零缺陷。
    • 强调在规约和设计中消除错误,以“净”的方式制作。增量开发,并在测试前验证增量的质量和正确性。
    • 理论基础:函数理论和抽样理论
    • 应用技术手段:统计过程控制下的增量开发、基于函数的规范和设计、正确性验证(核心)、统计测试和软件认证
    • 缺点:太理论化,抛弃传统模块测试是不现实的、也有传统软件工程的一些弊端
  • 基于构件的软件工程CBSE:
    • 定义:一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。体现了“购买而非重造”的哲学。将重点从编写程序转向基于已有构件的组装。
    • 特征:可组装性、可部署性(构件是二进制无需编译)、文档化、独立性(构件是独立不依赖其他构件的)、标准化
    • 构件模型要素:接口、使用信息、部署
    • 构建模型的通用服务:平台服务(允许构件通信和互操作)、支持服务(构件需要的共性服务,中间件)
    • 过程活动:系统需求概览、识别候选构件、根据发现的构件修改需求、体系结构设计、构件定制和适配、组装构件创建系统
    • 和传统软件开发的区别:CBSE早期需要完整的需求、根据构件来细化修改需求、体系结构设计完成后进一步搜索构件和设计精化、开发只是将构件组装
    • 构件组装:用胶水代码将构件整合为系统或构件
      • 组装方式:顺序组装(构件前后输入输出相关)、层次组装(构件间有层次化的调用)、叠加组装(内部整合多个构件,但互相不调用不依赖)
      • 不兼容问题:参数不兼容、操作不兼容(名称,含义有区别)、操作不完备(操作数据集合不等价)。通过编写适配器解决。

面向对象技术

  • 概述
    • 术语:
      • 对象:有数据及其操作构成的封装体。用来描述客观世界事务的一个实体。由对象名、属性和方法三部分组成。
      • 类:实体的形式化描述。对象是类的实例,类是对象的模板。三种:实体类、接口类(边界类,描述消息,提供交互方式)、控制类(作为协调者控制活动流)。
      • 抽象:对特定实例抽取共同特征并形成一个概念的过程。强调主要特征,忽略次要特征。
      • 封装:信息隐蔽技术
      • 继承:类之间的层次关系
      • 多态:不同对象收到同一个消息时产生完全不同的结果。分为参数多态(不同类型参数)、包含多态(父子类型)、过载多态(重载)、强制多态(强制类型转换)
      • 接口:描述操作,不定义
      • 消息:描述对象间的交互
      • 覆盖:子类在父类接口基础上,用适合自己要求的实现去置换父类的实现
      • 函数重载:同名但参数不同
      • 绑定:把过程调用和响应调用所需执行的代码加以结合。静态绑定(编译时决定),动态绑定(运行时决定)
  • 面向对象的分析
    • 目的:确定问题域,理解问题。
    • 活动:认定对象、组织对象、描述对象间的相互作用、确定对象操作、定义对象内部信息
    • 建模:用例模型(参与者和用例)、分析模型(概念类关系和职责,交互图)
      • 模型:顶层架构图、用例与用例图、领域概念模型
  • 面向对象的设计
    • 目的:设计分析模型和实现相应源代码
    • 设计模型:以包图表示的软件体系结构、以交互图表示的用例实现图、完整精确的类图、复杂对象的状态图、流程处理的活动图
    • 设计原则:单一责任、开放-封闭、里氏替换、依赖倒置原则(高层模块不依赖于低层,依赖于抽象)、接口分离原则(依赖抽象而非具体方法)
  • 面向对象的测试
    • 层次:算法层、类层、模板层、系统层
  • 统一建模语言UML
    • 定义:一种可视化的建模语言,而非程序设计语言。支持从需求分析开始的软件开发全过程。
    • 结构:构造块(事物、关系、图)、规则、公共机制
      • 事物:结构事物、行为事物、分组事物、注释事物。在不同的UML图中有不同的图形。
      • 关系:依赖、关联(组合和聚合,部分和整体)、泛化(一般和特殊)、实现(接口)。必背UML类图图例

        组合关系有共同的生命周期、聚合则不是

    • UML 2.0:静态图(结构图)、动态图(行为图)
      • 类图:静态图,展现对象、接口、协作、以及他们之间的关系
      • 对象图:静态图。展现某一时刻一组对象及他们的关系
      • 用例图:静态图。展现一组用例(操作需求,软件功能)、参与者和他们之间的关系。用例关系包括扩展、包含、泛化。
      • 构件图:组件图,是静态图。展现一组构件之间的组织和依赖。供接口、虚接口、依赖。
      • 部署图:静态图。展现系统物理模块的节点分布。
      • 序列图:即顺序图,是动态图。场景的图形化表示,描述以时间顺序组织的对象之间的交互活动。交互有同步消息(实心三角箭头)、异步消息(空心箭头)、返回消息(虚线箭头)
      • 通信图:即协作图,动态图。强调参加交互的对象的组织(即通信数据的组织情况)。
      • 状态图:动态图。展现一个状态机,描述单个对象在多个用例中的行为。简单状态、组合状态(多个子状态构成的)。通过事件触发器触发转换。状态(方框)、事件(箭头)、起点终点(实心圆)
      • 活动图:动态图。一种特殊的状态图。展示系统内从一个活动到另一个活动的流程。活动的分叉和汇合用水平粗线代表。并发分叉/汇合,监护表达式,分支,流。

        参考:UML各种图总结-精华

    • UML 4+1视图:视图是图的抽象。
      • 逻辑视图(设计视图):由类图、包图、用例图实现
      • 进程视图:可执行线程和进程作为活动类的建模。是逻辑视图的一次执行实例。描述并发和同步结构。
      • 实现视图:代码文件和组件
      • 部署视图:构件和节点的部署情况。表示软硬件映射和分布。
      • 用例视图:需求分析模型
  • 设计模式
    • 大分类:架构模式(高层决策,如C/S架构)、设计模式(不断重复的问题以及解决方案,名称、问题、方案、效果)、惯用法(最低层的模式,关注特定语言的设计和实现)
    • 设计模式的分类:创建型模式(创建对象)、结构型模式(结构转换/组合/共享/代理)、行为型模式(对象之间的运行时行为)。参考

项目管理

  • 进度管理:采用科学的方法,确定进度目标,编制进度计划,进行进度控制,实现工期目标
    • 过程:活动(为了完成项目需要开展的)定义、活动排序、活动资源估算、活动历时估算、进度计划编制、进度控制
    • 图形工具:Gantt图(甘特图)、PERT图(项目计划评审技术图)
    • 工具与技术:
      • 关键路径法:关键路径是项目的最短工期,是从开始到结束时间最长的路径。关键路径上的活动,最早开始时间=最晚开始时间
        • 术语:
          • ES(最早开始时间)、EF(最早结束时间)、LF(最迟结束时间)、LS(最迟开始时间)
          • 自由浮动时间:不延误任何紧后活动的最早开始时间且不违反制约下,活动可以从ES推迟或拖延的时间量。用紧后活动的最小ES-本活动的EF。
          • 总浮动时间:在不延误项目完工时间且不违反进度制约因素下,活动可以从ES推迟或拖延的时间量。计算方式可以用LS-ES、LF-EF、或关键路径时长-非关键路径时长
        • 计算方式:顺推(ES=所有前置活动EF的最大值)、逆推(LF=所有后续活动LS的最小值)
  • 软件配置管理
    • 定义:标识和说明配置项的功能和物理特征,控制变更,记录报告变更,并验证实现状态和规定需求的遵循性。
    • 配置管理目的:为了系统地控制配置变更。在系统的整个生命周期中维持配置的完整性和可跟踪性,标识系统在不同时间点上配置。
    • 活动:指定配置管理计划、配置标识、配置控制、配置状态报告、配置审计、发布管理和交付。
    • 配置项:为配置管理设计的硬件、软件或二者集合,在配置管理过程中作为一个单独的实体来对待。
      • 注意配置项的定义很广泛,如:外部交付的软件和数据,内部软件工作产品和数据,用于创建或支持软件产品的支持工具等等
      • 典型的配置项包括:项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各类数据。
      • 属性:名称、标识符、文件状态、版本、作者、日期
      • 分类:基线配置项(基线就是不能随便修改的,所有的设计文档和源程序)、非基线配置项(项目各类计划和报告)
      • 操作权限管理:配置管理员CMO。基线应只向开发人员开放读取,非基线向PM、CCB等开放。
      • 状态:草稿、正式、修改。修改需要进行变更控制,需要和草稿一样经过评审
      • 版本号(草稿0.YZ,正式X.YZ)、版本管理(不应丢弃任何修改)
  • 质量管理
    • 质量:软件产品特性的综合,表示软件产品满足需求的能力。
    • 过程:质量规划、质量保证(质量审计、过程分析)、质量控制(实时监控是否符合质量标准)
  • 风险管理
    • 目标:避开不利条件、少受损失,实现项目目标。完全避开或消除风险,只享受权益不承担风险是不可能的。
    • 过程:风险管理计划编制、风险识别、风险定性分析、风险定量分析、风险应对计划编制、风险监控
    • 风险分类:项目风险(潜在预算/进度/个人/组织/资源/用户/需求)、技术风险(设计/实现/接口/测试/维护,涉及质量和交付)、商业风险(威胁到待开发系统的生存能力,市场/策略/销售/管理/预算)

系统架构设计 ⭐ ⭐

  • 概述:
    • 软件架构:从需求分析到软件设计之间的过渡过程。为软件系统提供结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。
    • 价值:制定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系。
    • 架构设计:将需求分配,将满足需求的职责分配到组件上。
    • 根本目的:解决软件复用、质量和维护问题
  • 软件架构SA设计:
    • 活动:提出架构模型、产生架构设计、进行设计评审。是一个循序渐进的过程。
    • 关注:软件组件的结构、属性和交互作用,通过多种视图全面描述特定系统的架构。
    • 其他概述
      • 软件架构设计阶段,变更相对容易,便于技术人员和非技术人员就设计进行交互,展现软件的结构、属性、内在交互关系
      • 软件架构明确了系统实现的约束条件,决定开发和维护组织的组织结构,制约系统的质量属性
      • 软件架构使推理和控制的更改更加简单,有助于迭代的原型设计
      • 架构是可传递、可复用的模型,研究架构可以预测软件的质量
    • 生命周期:
      • 需求分析阶段:需求对应问题空间,架构设计对应解空间。根据需求模型构件SA模型,保证模型转换的可追踪性。
      • 设计阶段:SA研究关注的最早和最多的阶段。研究内容:SA模型的描述、SA模型的设计和分析方法,SA设计经验的总结和复用。研究层次:SA基本概念(构件和连接子)、体系结构描述语言ADL、SA模型的多视图表示。
      • 实现阶段:将SA设计向实现转换。表现方面:基于SA的开发过程支持(项目管理)、从SA向实现过渡的途径(模型映射,中间件复用)、基于SA的测试技术。
      • 构件组装阶段:SA设计模型作为系统蓝图指导在较高层次上组装系统
        • 支持可复用构件的互联
        • 检测并消除体系结构失配问题(构件、连接子、体系结构假设)
      • 部署阶段:提供高层的体系结构视图描述软硬件部署模型、基于SA模型分析部署方案的质量属性
      • 后开发阶段:部署安装之后,围绕维护、演化、复用。研究方向:动态软件体系结构、体系结构恢复与重建。
        • 动态软件体系结构:软件运行时,内部执行、外部请求导致对软件体系结构的改变和重配置。需要设计阶段支持,以及运行时基础设施的支持。
        • 体系结构恢复与重建:在开发时未考虑SA的情况,从这些系统中恢复或重构体系结构。
  • 构件
    • 定义:一个独立可交付的功能单元,外界通过接口访问其提供的服务。
    • 组成:由一组需要同时部署的原子构件组成。一个原子构件是一个模块和一组资源。原子构件通常成组的部署(以构件为单位),但原子构件是部署、版本控制、替换的最基本单位。
    • 构件特点:独立部署单元、作为第三方的组装单元、没有(外部)可见状态
    • 构件接口:
      • 接口标准化:对接口中消息的格式、模式、协议的标准化关注输入输出消息的标准化。
    • 面向构件的编程COP:
      • 需要一些支持:多态性(可替代性)、模块封装性(高层次信息隐蔽)、后期的绑定和装载(部署独立性)、安全性(类型和模块安全性)
    • 构件技术:利用某种编程手段,将一些细节封装,且对业务逻辑进行实现
      • EJB(Enterprise Java Bean):Sun公司。三大类:会话Bean(一个清晰解耦的任务)、实体Bean(代表一个数据库存储的业务实体)、消息驱动Bean(用于接收异步JMS消息)。
        • 一般来说JavaBean是本地的,相当于COM。EJB是用来支持分布式构件的,可用跨进程RMI访问,相当于DCOM。
      • COM、DCOM、COM+:微软。
      • COBRA标准:分层次(对象代理请求ORB、公共对象服务、公共设施)。最底层的是ORB(实现对象通信和互操作,是分布对象系统的软总线),在ORB上定义了很多公共服务,最上层的公共服务决定了组件框架,提供业务服务。
    • 其他概念:
      • 一个模块是不带单独资源的原子构件
      • 一个单独的包被编译成多个单独的类文件
      • 模块是一组类和可能的非面向对象的结构体
      • 对象、模块、构件、服务
      • 一个类一般只属于一个构件
      • 对象的特性:一个实例单元(有唯一的标志)、可能有状态(外部可见)、封装了自己的状态和行为
  • 软件架构风格 ⭐
    • 软件体系架构风格:描述某一特定应用领域中系统组织方式的惯用模式

      • 定义:定义了用于描述系统的术语表和一组指导构建系统的规则。
      • 组织方式描述构件和组织方式,惯用模式反映众多系统共有的结构和语义
      • 包含:一个架构定义、一个词汇表(构件和连接件类型)、一组约束(系统如何组合构件和连接件)。
      • 反映了领域中众多系统所共有的结构和语义特性。指导各个模块和子系统有效地组织成一个完整的系统。
    • 架构设计的核心问题之一:能否达到架构级的软件复用

    • 风格

      • 数据流风格:面向数据流,按照一定的顺序从前向后执行。例子:批处理序列、管道-过滤器、传统编译器
        • 批处理序列:构件是一系列固定顺序的计算单元。构件之间只能通过数据传递交互。前后不一定有关联,但一定要按前后顺序依次完整执行
        • 管道-过滤器:前一个构件输出是后一个构件的输入,但并不要求各组件依次执行(前面输出一部分,后面就可以开始)。管道是连接件、过滤器是构件。
      • 调用/返回风格:构件之间有互相调用(一般是显式)的关系。例子:主程序/子程序、面向对象、层次结构
        • 主程序/子程序:单线程控制,将问题划分为若干个处理步骤。主/子程序是构件,过程调用作为交互机制(连接件)
        • 面向对象:构件是对象,对象间交互就是连接件
        • 层次结构:构件组成一个层次结构。连接件由层间交互的协议决定。只能使用相邻的层。层次结构能将复杂问题分解为增量步骤序列,但如何分层是很难的。
      • 独立构件风格:构件之间不显式调用,通过事件触发、异步执行。例子:进程通信、事件驱动系统
        • 进程通信:构件是独立的进程,连接件是消息传递(点对点、同步异步、RPC)。
        • 事件驱动(隐式调用):构件触发或广播一个事件,构件的过程在事件中注册。适合复用、维护、演化,但构件缺少了对系统计算的控制。如现代IDE的语法高亮、语法错误提示。
      • 虚拟机风格:自定义一套规则供使用者使用,使用者可以自定义流程,业务灵活。例子:解释器、基于规则的系统
        • 解释器:包含解释引擎、存储区(代码)、记录解释引擎状态的数据结构、记录源代码执行进度的数据结构。适合业务灵活多变的场景,但执行效率低。
        • 基于规则的系统:规则集、规则解释器、规则/数据选择器、工作内存。用于人工智能领域和DSS。
      • 仓库风格(数据共享风格):以数据为中心,操作围绕数据中心进行,强调数据共享。例子:数据库系统、超文本系统、黑板系统、现代编译器IDE
        • 数据库系统:构件类型有中央共享数据源和独立处理单元
        • 黑板系统:知识源(“老师”)、黑板、控制。用于语音识别、知识推理等解空间很大,求解过程不确定的问题。
        • 超文本:互联网领域。网状链接方式互联。
      • 其他风格:
        • 闭环控制
          • 当软件被用来操作一个物理系统时,软件和硬件之间粗略的表示为一个反馈循环。例子:汽车巡航定速、空调温度调节
          • 构件对比
            • 开环:控制器、执行器、被控对象
            • 闭环:比较器、控制器、执行器、被控对象、反馈环节(回到比较器)
        • C2体系结构风格
          • 概述:通过连接件绑定在一起的,按照一组规则运作的并行构件网络。
          • 规则:
            • 构件和连接件都有底部和顶部
            • 构件之间必须通过连接件连接
            • 连接件可以和任意数量构件、连接件连接
    • 层次架构风格

      • 两层C/S架构:表示层、处理层。客户端和服务器都有处理功能,现已不常用。开发维护困难,安全性问题多。
      • 三层C/S架构(瘦客户端C/S):表示层、功能层、数据层。表示层只展示、数据层只存储。各层逻辑相对独立。可以灵活选用平台和硬件,各层可以并行开发。管理层次更合理可控,可修改性更强,缺点主要是各层通信效率压力大,整体性能有一定下降。
      • 三层B/S架构:又称0客户端架构,是三层C/S架构的变种。将客户端变为用户客户端上的浏览器,应用服务器变为网络上的WEB服务器。缺点:动态页面支持差、安全性难说、数据查询慢于C/S、以页面为单位(数据动态交互性不强,不利于OLTP)
      • 混合架构风格:内外划分(内部C/S、外部B/S)、查改划分(修改C/S、查询B/S)。实现困难,成本高。
      • 富互联网应用RIA:
        • 特点:弥补三层B/S缺点、利用网络快速打包传输一个客户端、是一种用户接口、本质还是网站模式
        • 优点:结合C/S架构速度快交互性强和B/S的传播容易、简化改进B/S交互,数据能缓存在客户端,本质还是0客户端(借助网速将必要插件在本地缓存,增强页面动态能力)
        • 例子:小程序
      • MVC架构:
        • 构成:Controller控制器(处理用户交互)、Model模型(处理应用程序数据逻辑)、View视图(处理数据显示,不做业务处理)。
        • 流程:模型$\to$视图$\to$控制器$\to$模型(环形)
      • MVP架构:避免了MVC中,模型直接暴漏给视图的潜在安全问题
        • 构成:Presenter(呈现,实现业务逻辑)、View(视图,非常薄,被动视图)、Model(模型,大部分功能也交给P实现)
        • 特点:M/P/V之间两两双向通信,M和V不直接通信,必须通过Presenter
      • MVVM架构:和MVC类似,两两通信,但分离了视图和模型(VM不通信)
        • 构成:View、ViewModel、Model
        • 优点:低耦合(组件间耦合降低)、 可重用(ViewModel复用)、可测试(针对ViewModel)

      参考:MVC、MVP、MVVM模式的概念与区别

    • 面向服务架构:

      • SOA:粗粒度松耦合的服务架构。
        • 定义:一个组件模型、将应用程序的不同单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口采用中立的方式定义,独立于实现服务的软硬件平台和语言。系统中的服务可以用统一和通用的方式进行交互。
        • 特点:服务间定义精确简单的接口(不涉及底层编程和通信模型)、服务是为了满足某项业务需求的操作/规则的逻辑组合、具有管理上的优点(相同服务可以一同管理、多个服务通过企业服务总线提出服务请求)
        • 关键目标:实现企业IT资产重用的最大化、可从企业外部访问、随时可访问、粗粒度接口、服务分级、松散耦合、可重用服务及服务接口设计管理、标准化接口(WSDL、SOAP、XML)、支持各种消息模式、精确定义的服务接口
        • 演化:基于对象、基于构件、基于服务。架构越来越松耦合、粒度越来越粗、接口越来越标准
        • 基于服务的构件和传统构件的区别:服务构件粗粒度、服务构件接口标准(WSDL)、传统构件多是API、服务构件的实现是语言无关性的、服务构件可以通过构件容器提供QoS服务(能给出网络安全、服务质量等数据)
        • 关键技术:发现服务(UDDI、DISCO)、描述服务(WSDL、XML Schema)、消息格式层(SOAP、REST)、编码格式层(XML、DOM、SAX)、传输协议层(HTTP、TCP/IP、SMTP)
        • 实现方式:
          • WEB Service:服务提供者、服务注册中心、服务请求者
          • 服务注册表:服务注册、服务位置、服务绑定
          • 企业服务总线ESB:一根管道,连接各个服务节点。可以集成基于不同协议的不同服务,做消息转化、解释、路由,让不同服务互联互通。
            • 构成:客户端(服务请求)、基础架构服务(中间件)、核心集成服务(提供服务)
            • 特点:ESB做总线作用来连接和整合服务、描述服务元数据、进行服务注册管理、传递数据并转换(支持同步异步)、发现/路由/匹配/选择、更高级的功能(负载、安全)
          • BPEL:面向Web服务的业务流程执行语言,组合编排协调服务,自上而下的实现SOA
  • 软件架构复用:
    • 概念
      • 软件产品线:一组软件密集型系统。共享一个公共的、可管理的特性集。在某个市场/任务需求下,围绕核心资产库管理集成复用,以公共的核心资产集成开发出来的。
      • 复用类型:机会复用(开发过程中发现一个用一个)、系统复用(开发之前就要规划)
      • 复用的基本过程:构造/获取可复用软件资产,管理资产(构件库)、针对需求选择复用并组成系统
  • 特定领域软件架构DSSA:
    • 定义:专用于一类特定类型的任务(领域)的、在整个领域中能有效使用、为类似应用系统限定了标准组合结构的软件构件的集合
      • 是在特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等内容组成的开发基础架构,支持一个特定领域中多个应用的生成
    • 方向:垂直域(一个特定领域中的完整、通用软件架构)、水平域(多个不同特定领域之间的相同的部分的小工具)
    • 基本活动:领域分析(识别信息源,分析并获得领域模型/需求)、领域设计(获得DSSA、描述领域模型需求的解决方案,不是单个系统而是适用多个系统的高层次设计)、领域实现(依据DSSA开发、组织可重用信息)
    • 参与人员:领域专家(特定领域的用户、管理者、工程师)、领域分析人员、领域设计人员、领域实现人员
    • 建立过程:定义领域范围(应用满足领域中的需求范围)、定义领域特定元素(建立领域字典归纳术语)、定义领域特定的设计和实现需求的约束(识别领域中的业务约束)、定义领域模型和架构、产生搜集可复用的产品单元。并发、递归、反复、螺旋进行。
    • 三层次模型:领域开发环境(由领域架构师产出参考结构、需求、架构、模型、开发工具)、领域特定的应用开发环境(应用工程师根据具体环境将核心架构实例化)、应用执行环境(操作员实现实例化后的架构)
  • 基于架构的软件开发ABSD
    • ABSD:架构驱动,强调由业务、质量和功能需求的组合来驱动架构设计。强调用视角和视图描述软件架构,用例描述功能需求,质量(属性)场景描述质量需求。
      • 特点:设计架构的活动可以从项目总体功能框架明确时开始(不需要等待获取和分析)
    • 基础:功能的分解、选择架构风格来实现质量和业务需求、软件模板的使用、ABSD方法是递归的
    • 步骤:架构需求、架构设计、架构文档化、架构复审(可以重新设计)、架构实现、架构演化(重新从需求开始)
      • 架构需求:需求获取、标识构件(生成类图、对类分组、把类打包成构件)、需求评审,产出架构模型
      • 架构设计:将需求阶段的标识构件映射成构件、分析构件的相互作用、产生架构、设计评审
      • 架构文档化主要产出两种:架构规格说明、测试架构需求的质量设计说明书
      • 架构复审:由外部人员参加复审
      • 架构实现:用实体来显示出架构。实现构建,组装系统。
      • 架构演化:对架构改变,按需求增删改构件,使架构能够复用。
  • 软件架构评估
    • 质量属性:开发期质量属性、运行期质量属性
      • 开发期质量属性:易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性
      • 运行期质量属性:性能、安全性、可伸缩性、互操作性、可靠性、可用性、鲁棒性
    • 详解
      • 性能:系统响应能力。设计策略:优先级队列、增加计算资源、减少计算开销、并发、资源调度
      • 可靠性:能在意外或错误使用下维持功能的基本能力。MTTF(平均故障时间)、MTBF(平均故障间隔)、MTTR(平均恢复时间)。设计策略:心跳、Ping/Echo、冗余、选举。
      • 可用性:系统能正常运行的时间比例,如故障间隔时间。设计策略和可靠性类似。考试同时出现,优先选可用性
      • 安全性:系统向合法用户提供服务,同时能阻止非授权用户使用。设计策略:入侵检测、用户认证、用户授权、追踪审计。
      • 可修改性:能够快速高性价比对系统进行变更的能力。设计策略:接口-实现分离、抽象、信息隐藏
      • 其他:功能性(系统所能完成所期望的工作的能力)、可变性(架构变更扩充为新架构的能力)、互操作性(和其他系统或自身环境交互)
    • 质量属性场景:面向特定质量属性的需求
      • 组成:
        • 刺激源(生成该刺激的实体):用户、开发人员
        • 刺激(当刺激到达系统时需要考虑的条件):增加、删除、修改、改变功能
        • 环境(刺激在某些条件内生成):设计时、编译时、构建时
        • 制品(某个制品被激励):系统界面、平台、环境
        • 响应(在激励到达后所采取的行动):查找架构中需要修改的位置
        • 响应度量:修改所影响元素的成本,对其他功能、质量属性的影响
    • 设计决策的评估要点
      • 敏感点:为了实现某个特定质量属性,若干构件具有的特性
      • 权衡点:影响多个质量属性的特性,是多个质量属性的敏感点
      • 风险点和非风险点:是否有隐患,是否可接受
    • 评估时间点:架构设计之后、系统设计之前。因此评估的目的是评估架构是否能满足软件系统需求,而与设计、实现、测试无关。
    • 评估方式:
      • 基于调查问卷或检查表:通用性调查、主观性强、实施阶段在早期(问卷)、中期(检查表)、要求评估者粗略了解架构(问卷)或无限制(检查表)
      • 基于度量(定量):用于特定系统、需要评估者中等了解系统、较为主观、实施阶段中期
      • 基于场景:确定功能和架构的映射、设计评估质量属性场景、分析架构。场景从三方面设计:刺激(事件)、环境(事件发生的环境)、响应(架构响应刺激的过程)。可以适应通用或特定领域,需要评估者精确了解架构,实施阶段中期,较为客观。
    • 基于场景的架构分析方法SAAM
      • 定义:一种非功能质量属性的架构分析方法,最早形成文档并广泛应用
      • 要点
        • 特定目标:对描述应用程序属性的文档,验证基本的架构假设和原则
        • 质量属性:将任何形式的质量属性都具体化为场景,尤其重点关注可修改性
        • 架构描述:用于架构的最后版本
        • 描述架构:功能、结构、分配
        • 方法活动:输入问题描述、需求声明和架构描述。过程包括:场景开发、架构描述、单场景评估、场景交互和总体评估
    • 架构权衡分析法ATAM
      • 特点:让架构师明确权衡多个质量目标,同时评估小组、决策着和相关项目人员都参与。
      • 活动领域:场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中
      • 强调:以(质量)属性作为架构评估的核心概念,主要关注性能、可用性、安全性、可修改性
      • 流程:
        • 描述和介绍阶段:描述ATAM方法、描述业务动机、描述架构
        • 调查和分析阶段:确定架构方法、生成质量属性效用树(系统-质量属性-质量属性子特性-具体规则约束)、分析架构方法
        • 测试阶段:讨论场景和对场景分级、分析架构方法
        • 报告阶段:描述报告结果
    • 成本效益分析法CBAM:
      • 特点:用来对架构建立成本进行设计和建模,让决策者根据投资收益率来选择合适架构
      • 步骤:整理场景、细化、确定优先级、分配效用、形成策略-场景-响应级别关系表、确定期望的质量属性响应级别的效用、计算架构策略收益、选择架构
    • 仅了解:SAEM方法(将架构看做中间产品,从内外部质量属性阐述评估模型)、SAABNet方法(定性评估、来自于人工智能)、SACMM方法(软件架构修改度量)、SASAM(预期架构和实际架构映射和评估)、ALRRA(可靠性风险评估)、AHP(层次分析、定性问题定量分析)、COSMIC+UML(度量模型,评估可维护性)
  • 中间件
    • 定义:一个分布式系统环境中处于操作系统和应用程序之间的软件,可以在不同的技术之间共享资源,将若干应用和系统结合成一个协同工作整体
    • 特点:
      • 位于客户机/服务器的操作系统之上,管理计算机资源和网络通信
      • 是一类软件,而不是一种软件
      • 实现互连、实现应用之间的互操作
      • 基于分布式处理、网络通信是突出特点
    • 任务:使应用程序开发更容易、隐藏异构系统和分布式系统下低级别编程的复杂度
    • 分类:
      • 数据库访问中间件:数据库访问的抽象层,如ODBC、JDBC
      • 远程过程调用
      • 面向消息的中间件MOM:高可靠消息传递机制进行平台无关、语言无关的数据交流,如IBMMQ
      • 分布式对象中间件:对象技术和分布式计算技术的结合。如CORBA、RMI EJB、DCOM
      • 事务中间件:事务处理监控器TPM,完成事务管理协调、负载均衡、失效恢复
    • 典型应用架构:
      • J2EE技术:多层分布式应用程序模型。四层结构:客户层、Web层、业务层、信息系统层。
      • JSP+Servlet+JavaBean+DAO:视图+业务逻辑层+数据封装+数据库操作
      • NET平台:操作系统和NET应用语言之间
    • 重量级和轻量级之争:重量级开发麻烦但性能高、轻量级开发简单但性能低
    • NET和J2EE之争:CLR(NET的核心技术,中间代码)和JVM(JAVA字节码虚拟机)、NET只支持微软、都能进行分布式应用程序开发、J2EE开源项目和代码更多(业务层)、安全性都很好、J2EE部署复杂、J2EE外部支持更多(厂家)

软件可靠性

  • 概述:
    • 可靠性:软件产品在规定的条件下和规定的时间区间完成规定功能的能力
    • 软件可靠性和硬件可靠性的区别:软件更复杂、硬件存在物理退化、软件是唯一的/硬件不可能完全一样、硬件更新慢/软件更新快
    • 软件可靠性的定量描述:规定时间(自然时间/运行时间/执行时间)、失效概率(初始为0,随时间趋近1)、可靠度(软件系统在规定条件下、规定时间内不失效的概率)、失效强度(单位时间内失效的概率)、MTTF、MTTR、MTBF、系统可用性($\frac{MTTF}{MTBF}$)
    • 串并联系统可靠性:对一系列系统的可靠性$R_i$
      • 串联:整体可靠性$R=R_1 \times R_2 \times R_3 … \times R_n$
      • 并联:整体可靠性$R=1 - (1-R_1) \times (1 - R_2) \times … \times (1- R_n)$
    • 可靠性测试的意义:避免失效(灾难性后果)、软件可靠性技术不成熟、失效比例高、可靠性问题带来成本问题
    • 可靠性测试的广义和狭义:
      • 广义:为了可靠性运用建模、统计、试验、分析、评价等一系列手段的测试
      • 狭义:为了获取可靠性数据,按预先确定的测试用例,在预期环境中实施的测试
  • 软件可靠性建模
    • 可靠性模型:为了预算估算软件的可靠性所建立的可靠性框图和数学模型
    • 影响软件可靠性的因素:运行环境、软件规模、软件内部结构、软件开发方法和开发环境、软件可靠性投入
    • 可靠性模型的组成:模型假设、性能度量、参数估计方法、数据要求
    • 模型假设:代表性假设(运行阶段的可靠性行为)、独立性假设(失效现象相互独立)、相同性假设(不区分失效严重程度)
    • 可靠性模型分类:种子法(抽样)、失效率类、曲线拟合(回归方法)、可靠性增长、程序结构分析(可靠性分析网络)、输入域分类、执行路径分析、非齐次泊松过程、马尔可夫过程、贝叶斯
  • 软件可靠性管理:软件工程管理的一部分
    • 目的:全面提高和保证软件可靠性,以软件可靠性活动为主要对象。
    • 管理内容:各个阶段的可靠性活动的目标、计划、进度、任务和修正措施
    • 可靠性管理任务阶段:可靠性需求分析、概要设计、详细设计、编码、测试、实施
  • 软件可靠性设计
    • 最有效的保障可靠性的方式,就是在软件设计阶段采取可靠性控制。在软件设计中全面满足软件可靠性要求。
    • 设计原则:可靠性设计是软件设计的一部分、以提高和保障软件可靠性为最终目标、确定可靠性目标(不能无限扩大,排在功能/用户需求/开发费用之后)
    • 设计技术:容错设计、检错设计、降低复杂度设计
      • 避错(排错):通过技术评审、系统测试和正确性证明,在正式运行前避免、发现并改正
      • 检错:通过返回值、通过运行时间。实现成本低,但是不能自动恢复,需要人工介入。
      • 容错:通过添加冗余,允许发生一定软硬件故障,仍能正确工作。主要方法是提供足够的冗余信息和算法程序,在运行时发现错误,采取补救措施。
        • 冗余技术:加入冗余资源(信息/时间/硬件/软件),主要分结构冗余、信息冗余(校验码)、时间冗余(重复执行,选相同结果最多的)、冗余附加(为了支持冗余附加的资源)
          • 结构冗余:静态(N个版本程序设计,如投票)、动态(恢复块方法,多重模块待机储备,通过验证测试判断是否有故障,如主备机,冷备热备)、混合
        • 防卫式程序设计:软件冗余,在程序中检查错误,如果发现,则撤销状态,恢复到正确状态
        • 双机容错技术:软硬件结合。两台服务器、采用心跳机制。工作模式有双机热备(主备,效率50%)、双机互备(提供不同服务,但可以接手对方的服务)、双机双工(负载均衡)
        • 集群技术:多台计算机组织起来协同。每台计算机承担部分计算和容错任务。
          • 负载均衡:集群系统的重要技术。目的是加快集群的响应速度,提高客户端访问成功的概率。技术:特定软件的负载均衡(应用层,如Http重定向)、基于DNS的负载均衡(传输层)、基于NAT的负载均衡(地址转换)、反向代理负载均衡(转发)、混合型
  • 软件可靠性测试和评价
    • 活动组成:可靠性目标确定、运行剖面开发、测试用例设计、测试实施、测试结果的分析
    • 测试步骤:定义软件运行剖面(使用行为建模)、设计可靠性测试用例、实施可靠性测试
    • 评价过程:选择可靠性模型、收集可靠性数据(软件失效数据)、可靠性评估和预测(判断是否达到可靠性目标)

软件架构演化和维护

  • 概述
    • 演化和维护:对架构进行修改和完善的过程。为了使软件能适应环境的变化进行的纠错性修改和完善性修改,是不断迭代的过程。
    • 架构的演化:软件整体结构的演化,过程涵盖软件架构的全生命周期。包括软件架构需求的获取、软件架构建模、软件架构文档、软件架构实现和软件架构维护。
    • 演化的重要性:架构是整个系统的骨架、软件架构为宏观管理软件系统的整体复杂性和变化性提供有效途径
    • 架构演化能降低软件演化成本:对架构的形式化和可视化提高了软件的可构造性、设计方案涵盖整体结构配置约束信息有助于考虑演化问题、架构设计时对软件组件的耦合描述有助于软件的动态调整
    • 架构定义三大要素:组件(构件)、连接件、约束。演化关注的就是这三者的添加、修改、删除。
  • 演化类型
    • 对象演化:顺序图中,组件的实体是对象。对架构设计产生影响的演化包括:添加对象(增加功能或将某功能独立出来)和删除对象(移除功能或将某些对象合并)
    • 消息(连接件)演化:添加消息AM(AddMessage)、删除消息DM、交换消息时间顺序SMO(SwapMessageOrder)、反转消息的收发方OM(OverturnMessage)、改变消息的发送或接收对象CMM(ChangeMessageModule)
    • 复合片段(连接件)演化:复合片段是对象交互关系的控制流描述。包括添加片段AF、删除片段DF、片段类型改变FTC、片段执行条件改变FCC(FragmentConditionChange)
    • 约束演化:对约束信息添加AF(AddConstraint)删除。
  • 演化方式的分类
    • 按照软件架构的实现方式和实施粒度分类:基于过程函数、面向对象、基于组件、基于架构
    • 按研究方法:对演化支持、版本和工程管理工具、架构变化的形式方式、架构演化的成本收益分析
    • 按演化时期:静态(设计时、运行前)、动态(有限制运行时演化、运行时演化)
      • 静态演化维护:更正性维护、适应性维护、完善性维护。步骤一般是:软件理解、需求变更分析、演化计划、系统重构、系统测试。
        • 静态演化过程:
          • 一次完整的演化过程由一系列原子演化操作组合而成。每演化一次形成一个中间版本。
          • 架构演化的评估:
            • 可维护性:基于组件图,从构件和构件间操作的变更结果角度来评估某个演化对整个架构的影响
            • 可靠性评估:基于用例图、部署图和顺序图,从连接件角度分析演化对交互场景的可靠程度的影响
      • 动态演化:
        • 需求:软件内部执行导致的体系结构改变(根据用户请求创建删除组件)、外部请求对软件的重配置
        • 动态性级别:交互动态性、结构动态性(实例增删)、架构动态性(结构重定义)
        • 动态演化的方面:属性改名、行为变化、拓扑结构改变、风格变化(一般只能改为衍生风格,如两层C/S变为三层C/S)
        • 动态演化技术:
          • 动态软件架构(DSA):将架构在系统中用有状态、有行为、可操作的实体显式表示出来
            • 系统需要提供SA动态演化的功能:保存架构信息、监控监控架构变化需求、保证演化操作原子化
            • 动态演化步骤:捕捉并分析需求、生成架构演化策略、选择演化策略并实施、演化评估和检测
          • 动态重配置(DR):软件部署后对配置修改
            • 可修改内容:简单任务的实现、工作流实例任务的增删、组合任务流程中的个体修改、任务输入来源的添加和删除、输入来源的优先级修改、组合任务输出目标的添加和删除
            • 模式:主从模式(主机发布配置,从机执行)、中央控制模式、客户端/服务器、分布式
  • 软件架构演化原则:成本可控、进度可控、风险可控、系统主体稳定、演化速率稳定、目标一致、模块独立、影响可控、复杂性可控、利于重构、利于复用、遵守设计原则、适应新技术新环境新需求、遵守各类标准、质量优化
  • 演化评估
    • 根据演化过程是否已知:演化过程已知的评估(知道每一次原子演化)、演化过程未知的评估(只知道起始和最终)
      • 演化过程已知的评估:目的在于通过基于对架构演化过程的度量,比较架构差异以及带来的质量属性的变化,对相关质量属性进行评估
        • 过程:架构修改影响分析、架构演化过程、分析关键演化过程
        • 形式化表示:软件架构版本$A_i$,对应的质量属性$Q_i$,对于演化过程$A_{i-1} \to A{i}$质量属性距离为$D(i-1,i)$
      • 演化过程未知的评估:只能根据度量结果,逆向推测架构的改变,并分析这些改变和架构相关质量属性的关联关系(比如性能增进,则推测架构演化内容和效果)
  • 举例:
    • 大型网站架构演化:解决大数据和高并发问题
    • 演化阶段:
      1. 单体架构:单服务器:
      2. 垂直架构:对业务垂直划分,应用服务器、文件服务器、数据库服务器
      3. 使用缓存改善
      4. 使用服务集群改善并发
      5. 数据库读写分离
      6. 反向代理、CDN加速(内容分发网络,依靠部署在各地的边缘缓存服务器)
      7. 分布式文件系统、分布式数据库
      8. NoSQL、搜索引擎
      9. 业务拆分
      10. 分布式服务
  • 软件架构维护
    • 维护过程:架构知识管理、架构修改管理、架构版本管理
      • 知识管理:对架构设计中所隐含的决策来源进行文档化表示,侧重静态演化的知识。架构知识=设计+决策。
      • 修改管理:建立隔离区,确保修改对其他部分的影响
      • 版本管理:为演化版本控制、使用、评价提供依据,为架构演化度量提供基础工具

未来信息综合技术

  • 信息物理系统CPS:控制系统、嵌入式系统的扩展和延伸。
    • 集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建物理空间和信息空间中人、机、物、环境、信息等要素的相互映射,交互、协同。是信息空间和物理空间的闭环赋能体系
    • 体系架构:单元级CPS(一个机器人、一个智能机床)、系统级CPS(多个单元级通过工业网络互联互通,并提供即插即用、边缘网关等系统功能)、SoS级(多个系统级CPS,实现数据汇聚,并进一步提供数据资产的存储、融合、分布式计算、大数据分析等服务)
    • 技术体系:
      • CPS总体技术:系统架构、异构系统集成、安全技术、实验验证技术
      • CPS支撑技术:智能感知、嵌入式软件、数据库、人机交互、中间件、SDN(软件定义网络)、物联网、大数据
      • CPS核心技术:虚实融合控制、智能装备、MBD、数字孪生、现场总线、工业以太网、CAX/MES/ERP/PLM/CRM/SCM
      • 四大核心技术要素:一硬(感知和自动控制)、一软(工业软件,业务核心)、一网(工业网络)、一平台(工业云和智能服务平台,数据汇聚、上层服务)
    • 典型应用场景:智能设计、智能生产、智能服务、智能应用
    • CPS建设路径:CPS体系设计、单元级建设、系统级建设、SoS级建设
  • 人工智能:
    • 定义:利用数字计算机或机器控制的机器模拟、延伸、扩展人的只能,感知环境、获取知识并使用知识获得最佳结果。根据是否能真正推理思考解决问题,分为弱人工智能和强人工智能。
    • 研究内容:机器人、自然语言处理、计算机视觉、专家系统等
    • 关键技术:
      • 自然语言处理NLP:机器翻译、语义理解、问答系统
      • 计算机视觉:模拟人类视觉系统,提取、处理、分析图像和视频
      • 知识图谱:将不同信息连接在一起得到关系网络,提供从“关系”的角度分析问题的能力
      • 人机交互HCI
      • 虚拟现实和增强现实:新型视听技术,生成高度逼真的数字化环境
      • 机器学习ML:以数据为基础,研究样本数据寻找规律
    • 按学习模式分类:监督学习、无监督学习(不标注样本)、半监督学习、强化学习(反馈机制)
      • 监督学习:擅长结构化问题,NLP、信息检索、手写体识别
      • 无监督学习:描述隐藏的结构和规律,适合非结构化问题,如经济预测、异常检测、数据挖掘
      • 半监督学习:减少标注代价,提高学习能力
      • 强化学习:学习环境状态到行为的映射
    • 按学习方法分类:
      • 传统机器学习:需要领域专业知识,手动完成领域特征分析
      • 深度学习:海量数据,特征自学习
    • 机器常见算法:
      • 迁移学习:当某些领域数据不足以模型训练,利用从其他领域数据获得的关系进行学习。适合变量有限的小规模应用。
      • 主动学习:用算法查询最有意义的未标记样本,并进一步由专家标记,进一步学习
      • 演化学习:基于演化算法提供的优化工具设计机器学习算法。维护一个解的集合,并通过启发式算法产生新的解,挑选更好的进入下一次循环。多用于分类、聚类、规则发现、特征选择
  • 机器人:目前已经准备进入4.0时代
    • 4.0时代:将云端大脑分布在各个地方,充分利用边缘计算的优势,实现规模化服务。而且机器人也将具备一定的理解和决策能力,拥有更强的自适应能力。
    • 核心技术:云-边-端的无缝协同计算、持续学习和协同学习(先用少量数据建立基本能力,再自主学习更多)、知识图谱(更动态和个性化的知识)、场景自适应、数据安全
    • 控制方式分类:操作机器人、程序机器人、示教再现机器人、智能机器人、综合机器人
    • 应用行业分类:工业机器人、服务机器人、特殊领域机器人
  • 边缘计算:将数据处理、程序运行、功能服务从网络中心下放到网络边缘的节点,边缘位置的智能网关上就近采集且处理数据,海量数据能就近处理。
    • 特点:联接性、数据第一入口、约束性(工况恶劣)、分布性
    • 本质:是云计算在数据中心之外汇聚节点的延伸和严谨。
    • 落地形态:云边缘、边缘云、云化网关
      • 云边缘:逻辑上仍是云服务
      • 边缘云:在边缘测构建中小规模云服务能力
      • 云化网关:以云化技术与能力重构原有嵌入式网关系统,在边缘侧提供协议接口转换、边缘计算,部署在云端的控制器提供边缘节点的资源调度、应用管理和业务编排能力
    • 发展方向:边云协同、边缘智能
    • 支持技术和理念:
      • 软件平台:云理念、云架构、云技术
      • 硬件平台:异构计算架构
    • 边云协同:边缘计算和云计算各有所长。
      • 对比
        • 云计算擅长:全局性、非实时、长周期、大数据处理和分析、长周期维护、业务决策支撑
        • 边缘计算:局部性、实时、短周期、本地业务实时智能化决策和执行
      • 协同方式
        • 资源协同:边缘节点有计算、存储、网络、虚拟化等基础设施,可以本地资源调度,也接收云端的协同调度
        • 数据协同:边缘负责采集数据,云端负责存储分析和价值挖掘
        • 智能协同:云端训练,边缘推理执行
        • 应用管理协同:边缘部署运行,云端开发测试管理
        • 业务管理协同:边缘做模块化微服务化,云端实现整体应用
        • 服务协同:边缘是ECSaas,云端是SaaS
      • 场景:智慧园区、安卓云和云游戏、视频监控、工业互联网、云VR
  • 数字孪生体
    • 数字孪生体技术:跨层级、跨尺度的现实世界和虚拟世界沟通的桥梁。将现有物理实体对象的数字模型,通过实测、仿真和数据分析来实时感知、诊断、预测物理对象实体的状态。
    • 关键技术:建模(减少对物理实体的依赖)、仿真(验证建模的正确性和有效性)、其他技术(VR、AR、物联网等)
    • 应用:制造、产业、城市、战场
  • 云计算
    • 内涵:平台和应用
    • 服务方式:软件即服务(SaaS)、平台即服务(PaaS)、基础设施即服务(IaaS)。从左至右,灵活性增强,方便性下降。
    • 部署模式:公有云、社区云、私有云、混合云
  • 大数据
    • 大小或复杂性无法通过现有常用的工具采集、存储、处理、搜索、共享、可视化
    • 特点:大规模、高速度、种类多样化、可变性、复杂性
    • 分析步骤:数据获取/记录、信息抽取/清洗/标记、数据集成/聚集/表现、数据分析/建模、数据解释
    • 应用:制造业、服务业、交通、医疗

知识产权和标准化

  • 知识产权:指公民、法人、非法人单位,对自己的创造性智力成果和其他科技成果依法享有的民事权的一个总称。包含著作权、专利权、商标权、商业秘密权、植物新品种权、集成电路布图设计权、地理标志权等。
    • 无体性:知识产权的对象是没有具体形体,是智力创造成果
    • 专有性:除权利人同意或法律规定外,权利人之外的任何人不得享有或使用
    • 地域性:只在授予国家内产生保护
    • 时间性:只在规定期限内保护
  • 知识产权根据产权主体、客体、具体权益,有不同的保护期限。
    • 署名权、修改权一般是永久的。收益相关的一般50年、20年、10年。
  • 知识产权人的确立:
    • 职务作品:作品、软件、专利权,权益基本都归单位享有
    • 委托作品:默认归创作方个人
    • 商标
    • 专利
  • 侵权判定
  • 标准划分
    • 国际标准:ISO、IEC、ITU
    • 国家标准:GB、GB/T、GB/Z、GJB。美国ANSI。
    • 行业标准:IEEE、GA、YD
    • 区域/地方标准:EN(欧洲)
    • 企业标准:一般以Q开头,Q/地区 企业代号 企业标准序号 年号

数学和经济管理

  • 最小生成树:参考算法章节
  • 最短路径:参考算法章节
  • 网络与最大流量:参考算法章节,建议直接看Python例程
  • 线性规划:画图、或者求解满足方程组的所有极值点(需要验证)
  • 动态规划:列表格穷举
    • 指派问题:
      • 匈牙利指派法:决策-费用表。行减列减后,选择每一行中为0的(没有就选最小的)。行减列减指行内每个值减去本行的最小值,之后再对每一列中的每个值减去本列中最小的。
  • 伏格尔法(差值法): 运筹学问题。先求解每一行成本(代表某种原料、需求)中,最小成本和次小成本的差值,选择所有行中差值最大的,并选择其最小成本分发资源。是一种贪心策略,不是严格精确求解。
  • 博弈论:状态转移矩阵
  • 排队论:列出未知数(已派队人数、单位时间检票人数、单位时间新增人数)
  • 决策论:决策矩阵、后悔值矩阵(每种环境下,当前决策的最大损失)。
    • 不确定型决策方案:悲观主义(小中取大,先取最小收益,再选最大的)、乐观主义(大中取大)、折中主义(折中系数$\alpha$,$最大收益\times\alpha + 最小收益\times(1-\alpha)$)、等可能性、后悔值准则(大中取小,选择每种决策的最大后悔值中最小的)
  • 决策树:计算不同决策的期望收益(成本)
  • 数学建模:直接分析、类比、数据分析(实验)、构想

术语大全

  • UDDI:基于WEB的分布式,信息注册中心的实现标准规范。
  • WSDL:Web Service描述语言,将Web服务描述为一组服务访问点
  • SOAP:简单对象访问协议,用于交换XML编码信息的轻量级协议,用于传递信息。用于实现Web服务远程调用。包括封装、编码规则、RPC、绑定四个部分。
  • XML:可扩展标记语言。是WebService平台中表示数据的基本格式,用于数据交换。格式统一标准,容易交互共享。但是文件庞大,格式复杂,传输量大。
  • JSON:轻量级的数据交换格式,良好的可读性,格式简单,占用带宽小。通用性稍差。
  • MTTF:Mean Time To Failure。平均无故障时间、平均失效前时间
  • MTTR:平均故障修复时间、平均恢复前时间
  • MTBF:平均故障间隔时间,注意$MTBF=MTTF+MTTR$

参考