第一章 计算机系统基础知识
1 计算机系统组成
1.1 存储系统
时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型原因是由于程序中存在着大量的循环操作。
空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。
工作集理论:工作集是进程运行时被频繁访问的页面集合。

1.2 计算机系统组成

1.3 处理器体系结构
| 体系结构分类 | 定义 | 特点 | 典型应用 |
| 冯·诺依曼结构 | 冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 | 指令与数据存储器合并在一起。 指令与数据都通过相同的数据总线传输。 | 一般用于PC处理器,如I3、I5、I7处理器。 注:常规计算机属于冯·诺依曼结构 |
| 哈佛结构 | 哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。 | 指令与数据分开存储,可以并行读取,有较高的数据吞吐率。 有4条总线:指令和数据的数据总线与地址总线。 | 一般用于嵌入式系统处理器。 注:DSP属于哈佛结构 |

1.4 总线
总线的基本概念:总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。
特点:
挂接在总线上的多个部件只能分时向总线发送数据,但可同时从总线接收数据。通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息。
总线分类:
(1)从功能上来对总线进行划分:数据总线、地址总线和控制总线(2)从数据传输的方式划分为并行总线和串行总线
2 操作系统
2.1操作系统概述
操作系统(OS,OperatingSystem)

$\diamond$ 人机之间的接口 $\diamond$ 应用软件与硬件之间的接口 $\diamond$ 为应用程序的开发和运行提供一个高效率的平台 $\diamond$ 管理系统的硬件、软件、数据资源 $\diamond$ 控制程序运行

2.2特殊的操作系统
| 分类 | 特点 |
| 批处理操作系统 | 单道批:一次一个作业入内存,作业由程序、数据、作业说明书组成 多道批:一次多个作业入内存,特点:多道、宏观上并行微观上串行 |
| 分时操作系统 | 采用时间片轮转的方式为多个用户提供服务,每个用户感觉独占系统 特点:多路性、独立性、交互性和及时性 |
| 实时操作系统 | 实时控制系统和实时信息系统 交互能力要求不高,可靠性要求高(规定时间内响应并处理) |
| 网络操作系统 | 方便有效共享网络资源,提供服务软件和有关协议的集合 主要的网络操作系统有:Unix、Linux和Windows Server系统 |
| 分布式操作系统 | 任意两台计算机可以通过通信交换信息 是网络操作系统的更高级形式,具有透明性、可靠性和高性能等特性 |
| 微机操作系统 | Windows:Microsoft开发的图形用户界面、多任务、多线程操作系统 Linux:免费使用和自由传播的类Unix操作系统,多用户、多任务、多线程和多CPU的操作系统 |
| 嵌入式操作系统 | 运行在智能芯片环境中 特点:微型化、可定制(针对硬件变化配置)、实时性、可靠性、易移植性(HAL和BSP支持) |
2.3进程管理

运行:当一个进程在CPU上运行时。
(单处理机处于运行态的进程只有一个,多进程在CPU上交替运行)
就绪:一个进程获得了除CPU外的一切所需资源,一旦得到处理机即可运行。
阻塞:阻塞也称等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O、等待I/O完成等)而暂时停止运行,此时即使把CPU分配给进程也无法运行,故称进程处于阻塞状态。

2.4 进程同步与互斥
临界资源:诸进程间需要互斥方式对其进行共享的资源。(进程中访问临界资源的那段代码称为临界区)

互斥:如千军万马过独木桥

同步:速度有差异,在一定情况停下等待。
间接制约关系
直接制约关系
信号量:是一种特殊的变量。
信号量可以表示资源数量;信号量为负数时还可以表示排队进程数。P是荷兰语的Passeren,V是荷兰语的Verhoog。

前驱图的表示:
1个箭头表示1个前驱关系
A有箭头指向D,则记录为(A,D)没有前驱进程的节点是起始进程,没有后继进程的节点是终结进程。
技巧:
并发图中某活动有后继就有V操作释放资源并通知后继活动,有前驱就有P操作检查资源是否足够。实现并发的信号量初值一般为0。有几个箭头就有几个信号量。
2.5死锁

2.6银行家算法
(1)当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程;
(2)进程可以分期请求资源,但请求的总数不能超过最大需求量;
(3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
2.7存储管理
(1)页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。
优点:利用率高,碎片小,分配及管理简单
缺点:增加了系统开销;可能产生抖动现象
(2)段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
优点:多道程序共享内存,各段程序修改互不影响
缺点:内存利用率低,内存碎片浪费大
(3)段页式存储:段式与页式的综合体。先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同。
优点:空间浪费小、存储共享容易、存储保护容易、能动态连接
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降
2.8磁盘管理
(1)存取时间 $\equiv$ 寻道时间 $^+$ 等待时间,寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。
(2)读取磁盘数据的时间应包括以下三个部分:
找磁道的时间。
找块(扇区)的时间,即旋转延迟时间。
传输时间。
(3)磁盘移臂调度算法:
先来先服务FCFS(谁先申请先服务谁);最短寻道时间优先SSTF(申请时判断与磁头当前位置的距离,谁短先服务谁);扫描算法SCAN(电梯算法,双向扫描);循环扫描CSCAN(单向扫描)。
3文件系统

4 系统性能
| 方法 | 描述 | 特点 |
| 时钟频率法 | 以时钟频率高低衡量速度 | 仅考虑CPU |
| 指令执行速度法 | 表示机器运算速度的单位是MIPS | 仅考虑CPU |
| 等效指令速度法(含首森混合法) | 通过各类指令在程序中所占的比例(Wi)进行计算得到的。 | 仅考虑CPU,综合考虑指令比例不同的问题。 |
| 数据处理速率法(PDR) | PDR值的方法来衡量机器性能,PDR值越大,机器性能越好。 | PDR=L/R 仅考虑CPU+存储 |
| 综合理论性能法(CTP) | CTP用MTOPS表示。CTP的估算方法是,首先算出处理部件每个计算单元的有效计算率,再按不同字长加以调整,得出该计算单元的理论性能,所有组成该处理部件的计算单元的理论性能之和即为CTP。 | 仅考虑CPU+存储 |
| 基准程序法 | 把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序(benchmark)。 | 综合考虑多部分,基准程序法是目前一致承认的测试系统性能的较好方法。 |
【测试精确度排名】真实的程序 $>$ 核心程序 $>$ 小型基准程序 $>$ 合成基准程序
常见的Web服务器性能评测方法有基准性能测试、压力测试和可靠性测试。
系统监视:进行系统监视通常有3种方式:一是通过系统本身提供的命令,如UNIX/Linux系统中的W、ps、last,Windows中的netstat等;二是通过系统记录文件查阅系统在特定时间内的运行状态;三是集成命令、文件记录和可视化技术的监控工具,如Windows的Perfmon应用程序。
第二章 嵌入式系统
1 嵌入式系统概述
1.1 嵌入式系统基本概念
(1)嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。
(2)从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中。
(3)一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。
嵌入式系统初始化过程:片级初始化 $\rightarrow$ 板级初始化 $\rightarrow$ 系统级初始化
1.2 嵌入式系统的分类
(1)根据不同用途可将嵌入式系统划分为:
嵌入式(非实时)系统嵌入式实时系统(如混成系统)强实时系统弱实时系统
(2)从安全性要求看,嵌入式系统还可分为:
安全攸关系统
非安全攸关系统
2 嵌入式硬件
2.1 嵌入式微处理器分类
通常嵌入式处理器的选择还要根据使用场景不同选择不同类型的处理器,从处理器分类看,大致可分为MPU、MCU、DSP、GPU、SoC
(1)微处理器(MicroProcessorUnit,MPU):将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。微处理器一般以某一种微处理内核为核心,每一种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置和封装。
(2)微控制器(MicroControlUnit,MCU):又称单片机。与MPU相比MCU的最大优点在于单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。
(3)信号处理器(DigitalSignalProcessor,DSP):DSP处理器对系统结构和指令进行了特殊设计(通常,DSP采用哈佛结构),使其适合于执行DSP算法,编译效率高,指令执行速度也高。
(4)图形处理器(GraphicsProcessingUnit,GPU):
GPU是图形处理单元的缩写,是一种可执行渲染3D图形等图像的半导体芯片(处理器)。
GPU可用于个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。
它可减少对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理中,GPU采用了核心技术(如:硬件T&L、纹理压缩等)保证了快速3D渲染能力。
GPU目前已广泛应用于各行各业,GPU中集成了同时运行在GHz的频率上的成千上万个core,可以高速处理图像数据。最新的GPU峰值性能可高达100TFlops以上。
(5)片上系统(SystemonChip,SoC):
追求产品系统最大包容的集成器件。
它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。减小了系统的体积和功耗、提高了可靠性和设计生产效率。
2.2嵌入式微处理器工作温度范围
嵌入式微处理器主要用于处理相关任务。由于嵌入式系统通常都在室外使用,可能处于不同环境,因此选择处理器芯片时,也要根据不同使用环境选择不同级别的芯片。其主要因素是芯片可适应的工作环境温度。通常,我们把芯片分为民用级、工业级和军用级。
民用级器件的工作温度范围: $0\sim 70^{\circ}C$ 工业级器件的工作温度范围: $- 40\sim 85^{\circ}C$ 军用级器件的工作温度范围: $- 55\sim 150^{\circ}C$
3嵌入式操作系统
3.1嵌入式操作系统的定义及特点
嵌入式操作系统(EmbeddedOperatingSystem,EOS)是指用于嵌入式系统的操作系统。
嵌入式操作系统与通用操作系统相比,具备以下主要特点: $①$ 可剪裁性 $(2)$ 可移植性 $(3)$ 强实时性 $(4)$ 强紧凑性 $(5)$ 高质量代码 $(6)$ 强定制性 $(7)$ 标准接口 $(8)$ 强稳定性、弱交互性 $(9)$ 强确定性 $(10)$ 操作简洁、方便 $(11)$ 较强的硬件适应性 $(12)$ 可固化性。
嵌入式操作系统通常分为两类:
(1)嵌入式实时操作系统(面向控制、通信等领域)
兼具嵌入式操作系统的特点和实时操作系统的特点。实时操作系统的最核心特点是实时性强。如WindRiver公司VxWorks、ATI公司Nucleus等;
(2)非实时嵌入式操作系统(面向消费电子产品)如Google公司的Android、Apple公司的iOS,以及Microsoft公司的WinCE等。
3.2嵌入式实时操作系统调度算法
时间片轮转调度算法:为每个任务提供确定份额的CPU执行时间。
优先级调度算法:静态- 系统为每个任务分配一个相对固定的优先顺序。动态- 优先级可以动态改变。
抢占式优先级调度算法:任何时候运行的任务都是所有就绪任务中具有最高优先级的任务。大多数RTOS调度算法都是抢占方式(可剥夺方式)。
单调速率调度算法(RMS算法):是一种静态优先级调度算法,是经典的周期性任务调度算法。RMS的基本思路是任务的优先级与它的周期表现为单调函数的关系,任务的周期越短,优先级越高;任务的周期越长,优先级越低。
最早截止期调度算法(EDF算法):根据任务的截止时间来确定其优先级,对于时间期限最近的任务,分配最高的优先级。
最低松弛度优先(LLF)算法:根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,使之优先执行。
3.3操作系统内核架构
内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。
目前从内核架构来划分,可分为宏内核(Monolithic Kernel)和微内核(Micro Kernel)。

宏内核嵌入式操作系统结构

宏内核嵌入式操作系统结构
操作系统内核对比
| 客户 进程 | 客户 进程 | 进程 服务器 | 终端 服务器 | 文件 服务器 | 存储器 服务器 | 用户态 核心态 |
| 请求 | 核心 | |||||
| 实质 | 优点 | 缺点 | |
| 宏内核 | 高度集成。用户服务和内核服务在同一空间中实现。 | 实时性高;结构比较简单,易于设计。 | 代码耦合度高,缺少移植性。 |
| 微内核 【鸿蒙操作系统】 | 模块化。用户服务和内核服务不在同一空间中实现。 | 结构清晰,有利于协作开发;有良好的移植性,代码量非常少;有相当好的伸缩性、扩展性;可用于分布式系统。 | 系统性能偏低。 |
鸿蒙(HarmonyOS)整体采用分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层。
4 嵌入式数据库
(1)与传统的数据库相比,嵌入式数据库系统有以下几个主要特点:嵌入式、实时性、移动性、伸缩性
(2)嵌入式数据库分类
按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:
基于内存方式(MainMemoryDatabase,MMDB)
基于文件方式(FileDatabase,FDB)
基于网络方式(NetwareDatabase,NDB)
关于嵌入式网络数据库:
实际上,嵌入式网络数据库是把功能强大的远程数据库映射到本地数据库,使嵌入式设备访问远程数据库就像访问本地数据库一样方便。
嵌入式网络数据库主要由三部分组成:客户端、通信协议和远程服务器。客户端主要负责提供接口给嵌入式程序,通信协议负责规范客户端与远程服务器之间的通信,还需要解决多客户端的并发问题,远程服务器负责维护服务器上的数据库数据。
这里要说明的是,由嵌入式网络数据库、嵌入式本地数据库(内存或文件)和嵌入式Web服务器等构成了综合的嵌入式综合信息系统。
5 嵌入式系统开发与设计
5.1 嵌入式系统开发

JTAG(JointTestActionGroup,联合测试工作组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试和调试。
5.2 嵌入式系统软硬件设计
嵌入式系统设计一般要考虑功耗问题,低功耗设计是嵌入式系统设计中的难点,是一个系统化的综合问题,必须从软件和硬件两个方面全面考虑。
| 基于硬件的低功耗 | 基于软件的低功耗 |
| 板级电路低功耗设计 选择低功耗处理器 总线的低功耗设计 接口驱动电路的设计 分区分时供电技术 | 算法优化 编译优化技术 软件与硬件的协同设计 |
第三章 计算机网络
1 数据通信基础

【模拟信道】
带宽 $W = f2 - f1$
【数字信道:离散值】
波特率:单位时间内传递的码元数量。 $B = 1 / T$ ,单位Baud
奈奎斯特定理定义:最大码元速率 $B = 2W$ ,例如,带宽3000Hz,则最大码元速率为6000Baud。
码元携带的信息量:码元k位信息,码元种类即为其离散值 $N = 2k_{0}$
反过来,已知码元种类数N,其携带的信息(位)为 $k = \log 2N_{0}$
最大数据速率:单位时间内在信道上传递的信息量(位数)。
$R = B^{\star}\log 2N = 2W^{\star}\log 2N$
引入噪声参数:信号的平均功率S,噪声的平均功率N,信噪比S/N,比值太大,故取其分贝数(dB)。 $dB = 10\log 10$ (S/N),例如,当 $S / N = 1000$ 时, $dB = 30dB$
香农定理:有噪声信道的极限数据速率达不到2W,可由以下公式计算得出:
信道容量 $C = W\log 2$ $(1 + S / N)$
无论何种调制方式和信号离散值定义,只要给定信噪比和带宽,则单位时间内最大的信息传输量就确定了。
| 类型 | 描述 |
| 模拟信道 传模拟数据 | 调制方式:调幅(AM)、调频(FM)、调相(PM)等 |
| 数字信道 传模拟数据 | 脉码调制(PCM)过程:取样(2倍最高频率)-量化-编码 |
| 模拟信道 传数字数据 | 调制方式:幅移键控(ASK)、频移键控(FSK)、相移键控(PSK)等 |
| 数字信道 传数字数据 | 编码方式:归零性编码(RZ)、不归零编码(NRZ)、曼彻斯特编码(ME)、差分曼彻斯特编码(DME)、多电平编码、4B/5B编码等 |
2组网技术
| 层次 | 名称 | 主要功能 | 主要设备及协议 |
| 7 | 应用层 | 实现具体的应用功能 | POP3、FTP、HTTP、Telnet、SMTP DHCP、TFTP、SNMP、DNS |
| 6 | 表示层 | 数据的格式与表达、加密、压缩 | |
| 5 | 会话层 | 建立、管理和终止会话 | |
| 4 | 传输层 | 端到端的连接 | TCP、UDP |
| 3 | 网络层 | 分组传输和路由选择 | 三层交换机、路由器 ARP、RARP、IP、ICMP、IGMP |
| 2 | 数据链路层 | 传送以帧为单位的信息 | 网桥、交换机(多端口网桥)、网卡 PPTP、L2TP、SLIP、PPP |
| 1 | 物理层 | 二进制传输 | 中继器、集线器(多端口中继器) |
3通信系统架构
3.1 网络分类
局域网 (LAN)
局域网是指在有限地理范围内将若干计算机通过传输介质互联成的计算机组(即通信网络),通过网络软件实现计算机之间的文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的。
城域网 (MAN) 广域网 (WAN) 因特网 (Internet)
局域网专用性非常强,具有比较稳定和规范的拓扑结构。常见的局域网拓扑结构有星状结构、树状结构、总线结构和环形结构。

| 特点 | 缺点 |
| 星状结构 | 网络中的每个结点设备都以中心结点为中心,通过连接线与中心结点相连,如果一个结点设备需要传输数据,它首先必须通过中心结点;中心结点是控制中心,任意两个结点间的通信最多只需两步;传输速度快、网络结构简单、建网容易、便于控制和管理 | 可靠性低,网络共享能力差,并且一旦中心结点出现故障则导致全网瘫痪。 |
| 树状结构 | 被称为分级的集中式网络;网络成本低,结构简单;在网络中,任意两个结点之间不产生回路,每个链路都支持双向传输,结点扩充方便、灵活,方便寻查链路路径 | 除叶结点及其相连的链路外,任何一个工作站或链路产生故障都会影响整个网络系统的正常运行 |
| 总线结构 | 网络是将各个结点设备和一根总线相连;网络中所有的结点设备都是通过总线进行信息传输的 | 作为数据通信必经的总线的负载能力是有限度的,这是由通信媒体本身的物理性能决定的;它的故障将影响总线上每个结点的通信 |
| 环状结构 | 网络中各结点通过一条首尾相连的通信链路连接起来,形成一个闭合环形结构网;网络中各结点设备的地位相同,信息按照固定方向单向流动,两个节点之间仅有一条通路,系统中无信道选择问题 | 网络不便于扩充,系统响应延时长,且信息传输效率相对较低,任一结点的故障将导致物理瘫痪 |
| 网状结构 | 任何结点彼此之间均存在一条通信链路,任何结点故障不会影响其他结点之间的通信(可靠性高) | 网络布线较为繁琐,且建设成本高,控制方法复杂 |
3.2 5G技术
5G网络的主要特征
(1)服务化架构:5G核心网中引入了SBA服务化架构,实现网络功能的灵活定制和按需组合。
(2)网络切片:通过网络切片技术在单个独立的物理网络上切分出多个逻辑网络,从而避免了为每一个服务建设一个专用的物理网络,极大地降低了建网和运维成本。
4 TCP/IP协议簇
4.1 常见协议及功能

网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络并使分组独立地传向目标。
POP3:110端口,邮件收取
SMTP:25端口,邮件发送
FTP:20数据端口/21控制端口,文件传输协议
HTTP:80端口,超文本传输协议,网页传输
DHCP:67端口,IP地址自动分配
SNMP:161端口,简单网络管理协议
DNS:53端口,域名解析协议,记录域名与IP的映射关系
TCP:可靠的传输层协议,TCP协议可以依据端口号将报文交付给上层的某一进程,可以对应用层进程进行寻址。
UDP:不可靠的传输层协议
ICMP:因特网控制协议,PING命令来自该协议
IGMP:组播协议
ARP:地址解析协议,IP地址转换为MAC地址
RARP:反向地址解析协议,MAC地址转IP地址
4.2 DNS用法
递归查询:服务器必须回答目标IP与域名的映射关系。
选代查询:服务器收到一次选代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。
在Linux系统中,DNS配置文件resolv.conf的关键字主要有四个,分别是:
nameserver:定义DNS服务器的IP地址
domain:定义本地域名
search:定义域名的搜索列表
sortlist:对返回的域名进行排序
5网络规划与设计
5.1网络构建关键技术
SDN技术
控制平面技术数据平面技术转发规则一致性更新技术
IPv4与IPv6融合组网
双协议栈
隧道技术
网络地址翻译技术
高可用
网络部件(设备和线路)
网络连接模型
网络协议及配置
双协议栈:IPv4/IPv6 双协议栈机制就是使IPv6网络节点具有一个IPv6协议栈和一个IPv4协议栈,同时支持IPv4和IPv6协议的处理。
隧道技术:为了保持现有IPv4网络的投资成本,以及现有业务提供的持续性,需在现有IPv4网络基础上实现IPv6网的构建。在IPv4和IPv6融合组网时通常采用ISATAP隧道、6to4隧道、4over6隧道等。
网络地址翻译技术:网络地址技术将IPv4地址和IPv6地址分别看作内部地址和外部地址,或者相反,以实现地址转换。
5.2 网络构建关键技术

5.3 层次化网络设计

核心层:主要是高速数据交换,实现高速数据传输、出口路由,常用冗余机制。
汇聚层:网络访问策略控制、数据包处理和过滤、策略路由、广播域定义、寻址。
接入层:主要是针对用户端,实现用户接入、计费管理、MAC地址认证、MAC地址过滤、收集用户信息。
第四章 系统工程与信息系统基础
1 系统工程
1.1 系统工程方法
| 系统工程方法 | 关键点 |
| 霍尔三维结构 “硬科学”方法论 | 逻辑维:逻辑维即解决问题的逻辑过程。 【明确问题-确定目标-系统综合-系统分析-优化-系统决策-实施计划】 时间维:时间维即工作进程。 【规划阶段-拟定方案-研制阶段-生产阶段-安装阶段-运行阶段-更新阶段】 知识维:知识维即专业科学知识。【工程、医药、建筑、商业、法律、管理等】 应用场景:组织和管理大型工程建设项目 |
| 切克兰德方法 “软科学”方法论 | 核心不是“最优化”,而是“比较”和“探寻” 7步骤:认识问题、根底定义、建立概念模型、比较及探寻、选择、设计与实施、评估与反馈 |
| 并行工程方法 | “制造过程”与“支持过程”并行 强调三个方面:产品设计开发期间,最快速度按质完成;各项工作问题协调解决;适当的信息系统工具。 |
| 综合集成法 | 钱学森命名,【简单系统】和【巨系统】 四原则:整体论原则、相互联系原则、有序性原则、动态原则 |
| WSR系统方法 | 实践准则:【懂物理】-【明事理】-【通人理】 |
1.2 系统工程生命周期阶段

1.3 系统工程生命周期方法
计划驱动方法:需求 $\rightharpoonup$ 设计 $\rightharpoonup$ 构建 $\rightharpoonup$ 测试 $\rightharpoonup$ 部署
渐进迭代式开发:提供连续交付以达到期望的系统
精益开发:起源于丰田,是一个动态的、知识驱动的,以客户为中心的过程
敏捷开发:更好的灵活性
2 信息系统生命周期

2.1信息系统建设原则

3信息系统的分类
| 信息系统的分类 | 关键点 |
| 业务处理系统 [TPS] | 早期最初级的信息系统【20世纪50-60年代】。 功能:数据输入、数据处理【批处理、OLTP】、数据库维护、文件报表产生。 |
| 管理信息系统 [MIS] | 高度集成化的人机信息系统。 金字塔结构:分多个层级。 |
| 决策支持系统 [DSS] | 由语言系统、知识系统和问题处理系统组成。 用于辅助决策、支持决策。 |
| 专家系统[ES] | 知识+推理=专家系统。人工智能的一个重要分支。 |
| 办公自动化系统 [OAS] | 由计算机设备、办公设备、数据通信及网络设备、软件系统组成。 |
| 企业资源计划 [ERP] | 打通供应链,集成,整合。 |
3.1 业务处理系统【TPS】
【业务处理系统(Transaction Processing System,TPS)】又可称为电子数据处理系统(Electronic Data Processing System,EDPS),是计算机在管理方面早期应用的最初级形式的信息系统。

TPS是服务于组织管理层次中最低层、最基础的信息系统。
3.2 管理信息系统【MIS】
【管理信息系统(Manage Information System,MIS)】是由业务处理系统发展而成的,是在TPS基础上引进大量管理方法对企业整体信息进行处理,并利用信息进行预测、控制、计划、辅助企业全面管理的信息系统。
MIS系统四大部件:信息源、信息处理器、信息用户和信息管理者。


【闭环结构】
闭环结构在决定过程中,不断收集信息,不断发送给决策者。
批处理系统属于【开环系统】
计算机实时处理系统属于【闭环系统】
3.3 决策支持系统【DSS】
【决策支持系统(Decision Support System,DSS)】是一个由语言系统、知识系统和问题处理系统3个互相关联的部分组成的,基于计算机的系统。
【DSS应具有的特征】
(1)数据和模型是DSS的主要资源。(2)DSS用来支援用户做决策而不是代替用户做决策。(3)DSS主要用于解决半结构化及非结构化问题。(4)DSS的作用在于提高决策的有效性而不是提高决策的效率。
3.4 专家系统【ES】
【专家系统(Expert System,ES)】是一个智能计算机程序系统,其内部含有某个领域具有专家水平的大量知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域的问题。
知识表示 $^+$ 知识推理技术 $=$ 专家系统

知识库:存储求解实际问题的领域知识
综合数据库:存储问题的状态描述、中间结果、求解过程的记录等信息。
推理机:实质是【规则解释器】。
知识获取:两方面功能:知识的编辑求精及知识自学习。
解释程序:面向用户服务的。
4政府信息化与电子政务
电子政务主要有3类角色:政府(Government)、企(事)业单位(Business)及公民(Citizen)。如果有第4类就是公务员(Employee)。
| 类型 | 应用 |
| G2G | 基础信息的采集、处理和利用,如:人口信息、地理信息。及政府间:计划管理、财务管理、通 信系统、各级政府决策支持。 |
| G2B | 政府给企业单位颁发【各种营业执照、许可证、合格证、质量认证】。 |
| B2G | 企业向政府缴税; 企业向政府供应各种商品和服务【含竞/投标】; 企业向政府提建议,申诉。 |
| G2C | 社区GA和水、火、天灾等与公共安全有关的信息; 户口、各种证件和牌照的管理。 |
| C2G | 个人应向政府缴纳的各种税款和费用; 个人向政府反馈民意【征求群众意见】; 报警服务(盗贼、医疗、急救、火警等)。 |
| G2E | 政府内部管理系统。 |
5企业信息化与电子商务
5.1信息化概念
信息化是指在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大限度地利用信息资源以满足全社会的信息需求,从而加速社会各个领域的共同发展以推进信息社会的过程。
信息化的主体是全体社会成员(政府、企业、团体和个人),时域是一个长期过程,空域是经济和社会的一切领域,手段是先进社会生产工具。
5.2企业信息化涉及三类创新
【技术创新】在生产工艺设计、产品设计中使用计算机辅助设计系统,并通过互联网及时了解和掌握创新的技术信息,加快从技术向生产的转化。还有,生产技术与信息技术相结合,能够大幅度地提高技术水平和产品的竞争力。
【管理创新】按照市场发展的要求,要对企业现有的管理流程重新整合,从作为管理核心的财务、资金管理,转向技术、物资、人力资源的管理,并延伸到企业技术创新、工艺设计、产品设计、生产制造过程的管理,进而扩展到客户关系管理、供应链的管理乃至发展到电子商务。
【制度创新】那些不适应企业信息化的管理体制、管理机制和管理制度必须得到创新。
5.3信息化需求的3个层次
组织对信息化的需求是【组织信息化的原动力】。
一是战略需求。组织信息化的目标是提升组织的竞争能力、为组织的可持续发展提供一个支持环境。从某种意义上来说,信息化对组织不仅仅是服务的手段和实现现有战略的辅助工具;信息化可以把组织战略提升到一个新的水平,为组织带来新的发展契机。特别是对于企业,信息化战略是企业竞争的基础。
二是运作需求。组织信息化的运作需求是组织信息化需求非常重要且关键的一环,它包含三方面的内容:一是实现信息化战略目标的需要;二是运作策略的需要。三是人才培养的需要。
三是技术需求。由于系统开发时间过长等问题在信息技术层面上对系统的完善、升级、集成和整合提出了需求。也有的组织,原来基本上没有大型的信息系统项目,有的也只是一些单机应用,这样的组织的信息化需求,一般是从头开发新的系统。
5.4 企业信息化方法
业务流程重构方法:“彻底的、根本性的”重新设计流程。
核心业务应用方法:围绕核心业务推动信息化。
信息系统建设方法:建设信息系统作为企业信息化的重点和关键。
主题数据库方法:建立面向企业的核心业务的数据库,消除“信息孤岛”。
资源管理方法:切入点是为企业资源管理提供强大的能力。如:ERP、SCM。
人力资本投资方法:人力资本理论【注意不是人力资源管理】把一部分企业的优秀员工看作是一种资本,能够取得投资收益。
5.5 信息系统战略规划 (ISSP)
信息系统战略规划(Information System Strategic Planning,ISSP)是从企业战略出发,构建企业基本的信息架构,对企业内、外信息资源进行统一规划、管理与应用,利用信息控制企业行为,辅助企业进行决策,帮助企业实现战略目标。
ISSP方法经历了三个主要阶段,各个阶段所使用的方法也不一样。
5.5.1 第一个阶段
主要以数据处理为核心,围绕职能部门需求的信息系统规划,主要的方法包括:
(1)企业系统规划法(BSP)- - CU矩阵:自上而下识别系统目标,自下而上设计信息系统,对组织机构的变动具有适应性。
(2)关键成功因素法(CSP):找出实现目标的关键信息集合,从而确定开发优先次序。
(3)战略集合转化法(SST):把战略目标看成“信息集合”,把战略目标转变成信息系统的战略目标。
(4)其它方法包括:投资回收法、征费法、零线预算法、阶石法。
5.5.2 第二个阶段
主要以企业内部管理信息系统为核心,围绕企业整体需求进行的信息系统规划,主要的方法包括战略数据规划法(SDP)、信息工程法(IE)和战略栅格法(SG)。
5.5.3 第三个阶段
在综合考虑企业内外环境的情况下,以集成为核心,围绕企业战略需求进行的信息系统规划,主要的方法包括价值链分析法(VCA)和战略一致性模型(SAM)。
5.6 企业资源计划 (ERP)
ERP是将企业所有资源(企业三大流:物流、资金流、信息流)进行集成整合,全面一体化管理的管理信息系统。
包括三方面:生产控制(计划、制造)、物流管理(分销、采购、库存管理)和财务管理(会计核算、财务管理)。这三个系统本身就是一个集成体,它们相互之间有相应的接口,能够很好地整合在一起。
5.7 客户管理CRM
CRM(Customer Relationship Management)理念:将客户看作资产;客户关怀是中心,目的是与客户建立长期和有效的业务关系,最大限度地增加利润;核心是客户价值管理,提高客户忠诚度和留存率。
CRM的主要模块:销售自动化;营销自动化;客户服务与支持;商业智能。
CRM的价值:提高工作效率,节省开支;提高客户满意度;提高客户的忠诚度。
5.8 商业智能BI
(1)过程
需求分析 $\twoheadrightarrow$ 数据仓库建模 $\twoheadrightarrow$ 数据抽取 $\twoheadrightarrow$ 建立BI分析报表 $\twoheadrightarrow$ 用户培训和数据模拟测试 $\twoheadrightarrow$ 系统改进和完善
(2)相关技术:数据仓库 $^+$ 数据挖掘 $+\mathsf{OLAP}$
(3)用途:决策分析【分析历史数据预判未来】
(4)数据仓库
| 数据库 | 数据仓库【特点】 |
| 面向应用:应用组织数据 | 面向主题:主题组织数据 |
| 零散的:一个应用对应一个数据库 | 集成的:整个企业对应一个数据仓库 |
| CRUD:增删改查是常态 | 相对稳定的(非易失的): 查询为主、基本无修改与删除 |
| 解决当下应用问题 | 反映历史变化(时变的): 各个阶段信息都有,并可预测未来趋势 |
(5)数据挖掘方法:
关联分析:挖掘出隐藏在数据间的相互关系。
序列模式分析:侧重点是分析数据间的前后关系(因果关系)。
分类分析:为每一个记录赋予一个标记再按标记分类。
聚类分析:分类分析法的逆过程。
(6)数据湖
概念:数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。
特点:数据湖从企业的多个数据源获取原始数据,并且针对不同的目的,同一份原始数据还可能有多种满足特定内部模型格式的数据副本。因此,数据湖中被处理的数据可能是任意类型的信息,从结构化数据到完全非结构化数据。
区别:数据仓库仅支持分析处理,数据湖既支持分析处理,也支持事务处理。
5.9 企业应用集成
5.9.1 企业集成分类
按传输方式分:
按集成点分:
| 集成点 | 效果 | 解题关键点 | |
| 界面集成 | 界面 | 统一入口,产生“整体”感觉 | “整体”感觉 最小代价实现一体化操作 |
| 数据集成 | 数据 | 不同来源的数据逻辑或物理上“集中” | 其他集成方法的基础 |
| 控制集成 | 应用逻辑 | 调用其他系统已有方法,达到集成效果 | |
| 业务流程集成(过程集成) | 应用逻辑 | 跨企业,或优化流程而非直接调用 | 企业之间的信息共享能力 |
| 门户集成 | 将内部系统对接到互联网上 | 发布到互联网上 |
| 特点 | |
| 消息集成 | 数据量小,交互频繁,立即地,异步 |
| 共享数据库 | 交互频繁,立即地,同步 |
| 文件传输 | 数据量大,交互频度小,即时性要求低(月末,年末) |
EAI提供4个层次的服务(从高层到低层):
| EAI提供4个层次的服务 | 功能 |
| 流程控制服务 | 解决人工参与的长期的工作流程控制问题 |
| 应用连接服务 | 应用连接适配器将应用接口连接至EAI平台 |
| 信息传递与转化服务 | 负责传递消息和转化消息 |
| 通讯服务 | 通过通讯中间件进行消息的路由 |
企业集成技术的架构层次(从高层到低层):
| 企业集成技术的架构层次 | 说明 |
| 会聚集成 | 集成化运行 |
| 应用集成 | 语用互操作 模式:集成适配器、集成信使、集成面板和集成代理4种 |
| 数据集成 | 语义互通 模式:数据联邦、数据复制、基于接口的数据集成 |
| 网络集成 | 语法互联 |
5.9.2 企业门户
企业信息门户(Enterprise Information Portal,EIP):使员工/合作伙伴/客户/供应商都能够访问企业内部网络和因特网存储的各种自己所需的信息。【统一访问入口】
企业知识门户(Enterprise Knowledge Portal,EKP):企业网站的基础上增加知识性内容。【企业知识库】
企业应用门户(Enterprise Application Portal,EAP):以商业流程和企业应用为核心,把商业流程中功能不同的应用模块通过门户技术集成在一起。【企业信息系统的网上集成界面】
垂直门户:为某一特定的行业服务的,传送的信息只属于人们感兴趣的领域。
第五章 信息安全技术基础知识
1信息安全基础
信息安全包括5个基本要素:
| 名称 | 说明 |
| 机密性 | 机密性是指网络信息不泄露给非授权的用户、实体或程序,能够防止非授权者获取信息。 |
| 完整性 | 完整性是指网络信息或系统未经授权不能进行更改的特性。 |
| 可用性 | 可用性是指合法许可的用户能够及时获取网络信息或服务的特性。 |
| 可控性 | 可控性是指可以控制授权范围内的信息流向及行为方式。 |
| 可审查性 | 可审查性是指对出现的信息安全问题提供调查的依据和手段。 |
信息安全的范围包括设备安全、数据安全、内容安全和行为安全。
2信息加解密技术
2.1对称加密
对称加密(又称为私人密钥加密/共享密钥加密):加密与解密使用同一密钥。
特点:加密强度不高,但效率高;密钥分发困难(大量明文为了保证加密效率一般使用对称加密)
常见对称密钥加密算法:
DES:替换 $^+$ 移位、56位密钥、64位数据块、速度快、密钥易产生
3DES(三重DES):两个56位的密钥K1、K2
加密:K1加密 $\cdot >k2$ 解密 $\cdot >k1$ 加密
解密:K1解密 $\cdot >k2$ 加密 $\cdot >k1$ 解密RC- 5
IDEA:128位密钥、64位数据块、比DES的加密性好、对计算机功能要求相对低,PGP。
RC- 5算法:RSA数据安全公司的很多产品都使用了RC- 5。
AES算法:高级加密标准,又称Rijndael加密法,是美国政府采用的一种区块加密标准
2.2非对称加密
概念:
非对称加密(又称为公开密钥加密):密钥必须成对使用(公钥加密,相应的私钥解密)。
特点:加密速度慢,但强度高。密钥分发容易。
常见非对称密钥加密算法
RSA:2048位(或1024位)密钥、计算量极大、难破解
ECC- 椭圆曲线算法
Elgamal:安全性依赖于计算有限域上离散对数这一难题
2.3国产密码算法
| 算法名称 | 算法特性描述 | 备注 |
| SM1 | 对称加密,分组长度和密钥长度都为128比特 | 广泛应用于电子政务、电子商务及国民经济的各个应用领域 |
| SM2 | 非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法 | 国家标准推荐使用素数域256位椭圆曲线 |
| SM3 | 杂凑算法,杂凑值长度为256比特 | 适用于商用密码应用中的数字签名和验证 |
| SM4 | 对称加密,分组长度和密钥长度都为128比特 | 适用于无线局域网产品 |
| SM9 | 标识密码算法 | 不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障 |
2.4 数字签名技术
(1)信息摘要:单向散列函数【不可逆】、固定长度的散列值。
摘要用途:确保信息【完整性】,防篡改。
常用的消息摘要算法有MD5,SHA等,市场上广泛使用的MD5,SHA算法的散列值分别为128和160位,由于SHA通常采用的密钥长度较长,因此安全性高于MD5。
(2)数字签名的过程:发送者使用自己的私钥对摘要签名,接收者利用发送者的公钥对接收到的摘要进行验证。
3 安全架构概述
(1)被动攻击:收集信息为主,破坏保密性
| 攻击类型 | 攻击名称 | 描述 |
| 被动攻击 | 窃听(网络监听) | 用各种可能的合法或非法的手段窃取系统中的信息资源和敏感信息。 |
| 业务流分析 | 通过对系统进行长期监听,利用统计分析方法对诸如通信频度、通信的信息流向、通信总量的变化等参数进行研究,从而发现有价值的信息和规律。 | |
| 非法登录 | 有些资料将这种方式归为被动攻击方式。 |
(2)主动攻击:主动攻击的类别主要有:中断(破坏可用性),篡改(破坏完整性),伪造(破坏真实性)。
| 攻击类型 | 攻击名称 | 描述 |
| 主动攻击 | 假冒身份 | 非法用户冒充成为合法用户,特权小的用户冒充成为特权大的用户。 |
| 抵赖 | 否认自己曾经发布过的某条消息、伪造一份对方来信等。 | |
| 旁路控制 【旁路攻击】 | 密码学中是指绕过对加密算法的繁琐分析,利用密码算法的硬件实现的运算中泄漏的信息。如执行时间、功耗、电磁辐射等,结合统计理论快速的破解密码系统。 | |
| 重放攻击 | 所截获的某次合法的通信数据拷贝,出于非法的目的而被重新发送。加【时间戳】能识别并应对重放攻击。 | |
| 拒绝服务 (DOS) | 破坏服务的【可用性】,对信息或其他资源的合法访问被无条件的阻止。 |
| XSS 跨站脚本攻击 | 通过利用网页【开发时留下的漏洞】,通过巧妙的方法注入恶意指令代码到网页。 | |
| CSRF 跨站请求伪造攻击 | 攻击者通过一些技术手段欺骗用户的浏览器与访问一个自己曾经认证过的网站并执行一些操作(如转账或购买商品等)。 | |
| 缓冲区溢出攻击 | 利用【缓冲区溢出漏洞】所进行的攻击。在各种操作系统、应用软件中广泛存在。 | |
| SQL 注入攻击 | 攻击者把 SQL 命令插入到 Web 表单,欺骗服务器执行恶意的 SQL 命令。SQL 注入攻击的方式:【恶意拼接查询】、【利用注释执行非法命令】、【传入非法参数】、【添加额外条件】。抵御 SQL 攻击的方式包括:【使用正则表达式】、【使用参数化的过滤性语句】、【检查用户输入的合法性】、【用户相关数据加密处理】、【存储过程来执行查询】、【使用专业的漏洞扫描工具】。 |
(3)其他安全威胁
| 其他安全威胁 | 描述 |
| 特洛伊木马 | 软件中含有一个察觉不出的或者无害的程序段,当它被执行时,会破坏用户的安全。这种应用程序称为特洛伊木马(Trojan Horse) |
| 陷阱门 | 在某个系统或某个部件中设置了“机关”,使得当提供特定的输入数据时允许违反安全策略。 |
| 计算机病毒 | 所谓计算机病毒,是一种在计算机系统运行过程中能够实现传染和侵害的功能程序。一种病毒通常含有两个功能:一种功能是对其他程序产生“感染”:另外一种或者是引发损坏功能或者是一种植入攻击的能力。 |
4安全模型
分类:

(1)BLP模型
Bell- LaPadula模型是符合军事安全策略的计算机安全模型,简称BLP模型。BLP模型的安全规则如下:
简单安全规则:安全级别低的主体不能读安全级别高的客体; 星属性安全规则:安全级别高的主体不能往低级别的客体写;
强星属性安全规则:不允许对另一级别进行读写;
自主安全规则:使用访问控制矩阵来定义说明自由存取控制。
(2)Biba模型
BiBa模型主要用于防止非授权修改系统信息,以保护系统的信息完整性。该模型同BLP模型类似,采用主体、客体、完整性级别描述安全策略要求。BiBa模型能够防止数据从低完整性级别流向高完整性级别,其安全规则如下:
星完整性规则:表示完整性级别低的主体不能对完整性级别高的;
简单完整性规则:表示完整性级别高的主体不能从完整性级别低的客体读取数据;
调用属性规则:表示一个完整性级别低的主体不能从完整性级别高的客体调用程序或服务。
(3)CWM模型
Clark- Wilson模型是一种将完整性目标、策略和机制融为一体的模型,实现了成型的事务处理机制,常用于银行系统中以保证数据完整性。
CWM的主要特征是:
采用Subject/Program/Object三元素的组成方式。Subject要访问Object只能通过Program进行;
权限分离原则:将要害功能分为有2个或多个Subject完成,防止已授权用户进行未授权的修改;
要求具有审计能力(Auditing)。
(4)ChineseWall模型
ChineseWall模型的安全策略的基础是客户访问的信息不会与当前他们可支配的信息产生冲突。其访问客体控制的安全规则如下:
与主体曾经访问过的信息属于同一公司数据集合的信息,即墙内信息可以访问;
属于一个完全不同的利益冲突组的可以访问;
主体能够对一个客体进行写的前提是主体未对任何属于其他公司数据集进行过访问。
定理1:一个主体一旦访问过一个客体,则该主体只能访问位于同一公司数据集的客体或在不同利益组的客体。
定理2:在一个利益冲突组中,一个主体最多只能访问一个公司数据集。
5网络安全体系架构设计
(1)信息安全体系架构设计
通过对网络应用的全面了解,按照安全风险、需求分析结果、安全策略以及网络的安全目标等方面开展安全体系架构的设计工作。
物理安全:保障设备设施免受物理环境破坏与人为事故影响
系统安全:强化网络结构、操作系统、应用系统等核心组件的基础安全
网络安全:部署访问控制、入侵检测、防病毒等关键安全技术措施。
应用安全:管控共享资源访问与敏感信息存储操作的安全风险。
管理安全:建立制度、技术平台与人员培训三位一体的安全保障体系。
(2)认证框架
鉴别的基本目的是防止其他实体占用和独立操作被鉴别实体的身份。
鉴别的方式如下:(1)已知的;(2)拥有的;(3)不改变的特性;(4)相信可靠的第3方建立的鉴别;(5)环境。
鉴别信息的类型包括交换鉴别信息、申请鉴别信息和验证鉴别信息。
(3)访问控制框架
访问控制类型
| 控制类型 | 说明 |
| 基于对象的访问控制 | OBAC 访问控制系统是从信息系统的数据差异变化和用户需求出发,有效地解决了信息数据量大、数据种类繁多、数据更新变化频繁的大型管理信息系统的安全管理。控制策略和控制规则是 OBAC 访问控制系统的核心所在。 |
| 基于角色的访问控制 | RBAC 就是指根据完成某些职责任务所需要的访问权限来进行授权和管理。RBAC 由用户(U)、角色(R)、会话(S)和权限(P)四个基本要素组成。 |
| 基于任务的访问控制 | TBAC 是从应用和企业层角度来解决安全问题,以面向任务的观点,从任务(活动)的角度来建立安全模型和实现安全机制,在任务处理的过程中提供动态实时的安全管理。TBAC 模型由工作流、授权结构体、受托人集和许可集四部分组成。其一般用五元组(S,O,P,L,AS)来表示,其中 S 表示主体,O 表示客体,P 表示许可,L 表示生命期,AS 表示授权步。 |
| 基于属性的访问控制 | ABAC 是根据主体的属性、客体的属性、环境的条件以及访问策略对主体的请求操作进行授权许可或拒绝。 |
6区块链技术
(1)【区块链】 $\neq$ 比特币,比特币底层采用了区块链技术。比特币交易在我国定性为【非法运用】。
(2)区块链的特点:
去中心化:由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。
开放性:系统是开放的,如:区块链上的【交易信息是公开的】,不过【账户身份信息是高度加密的】。
自治性:区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。
安全性(信息不可篡改):数据在多个节点存储了多份,篡改数据得改掉 $51%$ 节点的数据,这太难。同时,还有其它安全机制,如:比特币的每笔交易,都由付款人用私钥签名,证明确实是他同意向某人付款,其它人无法伪造。
匿名性(去信任):由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方对自己产生信任,对信用的累积非常有帮助。
(3) 区块链分类
公有链(PublicBlockChains)
公有链是一种完全开放、无需许可、高度去中心化的区块链网络。如比特币、以太坊等。
联盟链(ConsortiumBlockChains)
联盟链是一种由预先选定的一组组织(联盟)共同管理、需要许可才能加入、部分去中心化的区块链网络。如蚂蚁链、腾讯云区块链TBaaS(联盟链模式)等
私有链(PrivateBlockChains)
私有链是一种由单一组织完全控制、严格限制参与权限、高度中心化或弱中心化的区块链网络。如大型企业内部的资产追踪链等。
(4)区块链的四大基础技术支柱
分布式存储:简单来说,就是一种将数据分散存储到多个地方的数据储存技术,而且存储的数据可在多个参与者之间共享,人人可以参与,并具有相同的权力,一起记录数据,主要起到了数据储存的功能。
共识机制:因为区块链的分布式网络中,没有中央权威。因此,网络需要一个决策机制来促成参与者达成一致。而共识机制就是一种协调大家处理数据的机制。共识机制就决定了这些数据中,谁获得数据的记账权。
智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约可以在没有第三方的情况下,也能进行可信的交易,而且这些交易可追踪且不可逆转。所以,智能合约在系统中,主要起到了数据的执行作用。【执行智能合约的机制:去中心化网络+共识机制+受激励的矿工】
密码学:是一种特殊的加密和解密技术,区块链系统中,应用了多种多样的密码学技术,包括哈希算法、公钥私钥、数字签名等等,以此来保证整个系统的数据安全,并且证明了数据的归属。
(5)区块链的关键支撑技术
区块结构(BlockStructure):区块链中存储批量交易数据及验证信息的基本数据单元,由区块头和区块体组成,通过密码学方法链接形成不可篡改的链式结构。
P2P网络(Peer- to- PeerNetwork):一种去中心化的网络架构,其中所有节点(Peer)以平等地位互联,每个节点既能作为客户端请求服务,也能作为服务器提供资源或服务,不依赖中央服务器进行协调。
默克尔树(MerkleTree):一种基于密码学哈希函数构建的树形数据结构,通过逐层聚合子节点的哈希值,最终生成一个唯一的根哈希(MerkleRoot),用于高效验证大规模数据的完整性。
第六章 软件工程
1 软件开发方法
(1)结构化开发方法
特点:自顶向下,逐步分解(求解),严格区分工作阶段,每阶段有任务与成果,强调系统开发过程的整体性和全局性,系统开发过程工程化,文档资料标准化。
优点:
理论基础严密,它的指导思想是用户需求在系统建立之前就能被充分了解和理解。由此可见,结构化方法注重开发过程的整体性和全局性。
缺点:
开发周期长;文档、设计说明繁琐,工作效率低;
要求在开发之初全面认识系统的信息需求,充分预料各种可能发生的变化,但这并不十分现实;若用户参与系统开发的积极性没有充分调动,就会造成系统交接过程不平稳,使系统运行与维护管理难度加大。
阶段固化,应变能力差,适用于需求明确的开发场景。
(2)原型法开发方法
适用于需求不明确的开发,按功能分为水平原型(界面)、垂直原型(复杂算法);按最终结果分为抛弃式原型、演化式原型。原型法的特点在于原型法对用户的需求是动态响应、逐步纳入的,系统分析、设计与实现都是随着对一个工作模型的不断修改而同时完成的,相互之间并无明显界限,也没有明确分工。系统开发计划就是一个反复修改的过程。适于用户需求开始时定义不清、管理决策方法结构化程度不高的系统开发,开发方法更易被用户接受;但如果用户配合不好,盲目修改,就会拖延开发过程。
抛弃型原型,此类原型在系统真正实现以后就放弃不用了。
演化型原型,此类原型的构造从目标系统的一个或几个基本需求出发,通过修改和追加功能的过程逐渐丰富,演化成最终系统。
(3)面向对象方法
最早来源于仿真领域,其特点是系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流和沟通,缩短开发周期,提供系统开发的准确性和效率。具有更好的复用性,关键在于建立一个全面、合理、统一的模型,分析、设计、实现三个阶段界限不明确。
OMT是面向对象建模技术(UML前身)。用OMT方法开发软件,通常需要建立三种形式的模型:对象模型(描述系统数据结构)、动态模型(描述系统控制结构)、功能模型(描述系统功能)。
(4)面向服务的方法
以粗粒度、松散耦合的系统功能为核心,强调系统功能的标准化和构件化,加强了系统的灵活性、可复用性和可演化性。
从概念上讲,SO方法有三个主要的抽象级别:操作、服务、业务流程。
操作:代表单个逻辑工作单元(LUW)的事务。
服务:代表操作的逻辑分组。
业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。
2 软件过程模型
2.1 原型模型

典型的原型开发方法模型。适用于需求不明确的场景,可以帮助用户明确需求。可以分为【抛弃型原型】
与【演化型原型】
原型模型两个阶段:
1、原型开发阶段;2、目标软件开发阶段。
2.2 瀑布模型

瀑布模型是将软件生存周期中的各个活动规定为以线性顺序连接的若干阶段的模型,包括需求分析、软件设计、程序设计、编码实现、单元测试、集成测试、系统测试、运行维护。
瀑布模型的特点是严格区分阶段,每个阶段因果关系紧密相连,只适合需求明确的项目。
缺点:软件需求完整性、正确性难确定;
严格串行化,很长时间才能看到结果;
瀑布模型要求每个阶段一次性完全解决该阶段工作,这不现实。
2.3 增量模型
2.3 增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,可以有多个可用版本的发布,核心功能往往最先完成,在此基础上,每轮迭代会有新的增量发布,核心功能可以得到充分测试。强调每一个增量均发布一个可操作的产品。
2.4 螺旋模型

2.4 螺旋模型以快速原型为基础+瀑布模型,典型特点是引入了风险分析。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,它最初从概念项目开始第一个螺旋。
2.5V模型和W模型
V模型强调测试贯穿项目始终,而不是集中在测试阶段。是一种测试的开发模型。
W模型强调测试和开发【并行进行】。
2.6 快速应用开发RAD
概念:RAD是瀑布模型的一个高速变种,适用比传统生命周期快得多的开发方法,它强调极短的开发周期,通常适用基于构件的开发方法获得快速开发。
过程:业务建模 $\rightharpoondown$ 数据建模 $\rightharpoondown$ 过程建模 $\rightharpoondown$ 应用生成 $\rightharpoondown$ 测试与交付
适用性:RAD对模块化要求比较高,如果某项功能不能被模块化,则其构件就会出问题;如果高性能是一个指标,且必须通过调整结构使其适应系统构件才能获得,则RAD也有可能不能奏效;RAD要求开发者和客户必须在很短的时间完成一系列的需求分析,任何一方配合不当都会导致失败;RAD只能用于管理信息系统的开发,不适合技术风险很高的情况。
2.7 构件组装模型

【优点】易扩展、易重用、降低成本、安排任务更灵活。
【缺点】构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其它指标(如性能)、第三方构件质量难控制。
2.8 统一过程(在软考中UP、RUP都指统一过程)

典型特点是用例驱动、以架构为中心、选代和增量。
统一过程把一个项目分为四个不同的阶段:
构思阶段(初始/初启阶段):定义最终产品视图和业务模型、确定系统范围。
细化阶段(精化阶段):设计及确定系统架构、制定工作计划及资源要求。
构造阶段:开发剩余构件和应用程序功能,把这些构件集成为产品,并进行详细测试。
移交阶段:确保软件对最终用户是可用的,进行β测试,制作产品发布版本。

9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。
2.9 敏捷开发

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。常见的敏捷开发方法有极限编程法、水晶法、并列争球法和自适应软件开发方法。
极限编程(XP):在一些对费用控制严格的公司中的使用,非常有效,近螺旋式的开发方法。四大价值观(沟通【加强面对面沟通】、简单【不过度设计】、反馈【及时反馈】、勇气【接受变更的勇气】),十二大最佳实践(简单设计、测试驱动、代码重构、结对编程、持续集成、现场客户、发行版本小型化、系统隐喻、代码集体所有制、规划策略、规范代码、40小时工作机制)。
水晶方法:提倡“机动性”的方法,拥有对不同类型项目非常有效的敏捷过程。
开放式源码:程序开发人员在地域上分布很广【其他方法强调集中办公】。
SCRUM:明确定义了可重复的方法过程。
特征驱动开发方法(FDD):认为有效的软件开发需要3要素【人、过程、技术】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。
ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
动态系统开发方法(DSDM):倡导以业务为核心。
3基于构件的软件工程 (CBSE)
CBSE体现了“购买而不是重新构造”的哲学。
CBSE的构件应该具备的特征:
1、可组装性:所有外部交互必须通过公开定义的接口进行。2、可部署性:构件总是二进制形式的,能作为一个独立实体在平台上运行。3、文档化:用户根据文档来判断构件是否满足需求。4、独立性:可以在无其他特殊构件的情况下进行组装和部署。5、标准化:符合某种标准化的构件模型。
【构件的组装】:
1、顺序组装:按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件。2、层次组装:被调用构件的“提供”接口必须和调用构件的“请求”接口兼容。3、叠加组装:多个构件合并形成新构件,新构件整合原构件的功能,对外提供新的接口。组装可能出现3种不兼容:参数不兼容、操作不兼容、操作不完备。构件模型要素:接口、使用信息、部署。
4逆向工程

实现级:包括程序的抽象语法映射、符号表、过程的设计表示
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型领域级:包括反映程序分量或程序实体体与应用领域概念之间对应关系的信息,例如实体体系模型
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。
(1)重构/重组(Restructuring)。重构是指在【同一抽象级别】上【转换系统描述形式】。
(2)设计恢复(Designrecovery)。设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)逆向工程(Reverseengineering):逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。
(4)正向工程(Forwardengineering)。正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
(5)再工程/重构工程(Re- engineering)。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。
5 净室软件工程
强调以合理的成本开发出高质量的软件。理论基础主要是函数理论和抽样理论。它提倡开发者不需要进行单元测试(但还是需要传统的模块测试),而是进行正确性验证和统计质量控制。因为高质量改进管理,降低风险及成本,满足用户需求,提供竞争优势。
技术手段:
统计过程控制下的增量式开发:控制迭代
基于函数的规范和设计:盒子结构
定义3种抽象层次:行为视图(黑盒)- >有限状态机视图(状态盒)- >过程视图(明盒)
正确性验证:净室工程的核心,它使软件质量有了极大提高。
统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法
缺点:太理论化,正确性验证的步骤比较困难且耗时。
开发小组不进行传统的模块测试,这是不现实的。
脱胎于传统软件工程,不可避免带有传统软件工程的一些弊端。
6 需求工程
6.1 需求工程阶段划分
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。
需求开发包括:需求获取、需求分析、形成需求规格、需求确认与验证
需求管理包括:变更控制、版本控制、需求跟踪、需求状态跟踪
6.2 需求开发
6.2.1 需求获取

| 方法 | 特点 |
| 用户面谈 | 1对1-3,有代表性的用户,了解主观想法,交互好。成本高,要有领域知识支撑。 |
| 联合需求计划 (JRP) | 高度组织的群体会议,各方参与,了解想法,消除分歧,交互好,成本高。 |
| 问卷调查 | 用户多,无法一一访谈,成本低。 |
| 现场观察 | 针对较为复杂的流程和操作。 |
| 原型化方法 | 通过简易系统方式解决早期需求不确定问题。 |
| 头脑风暴法 | 一群人围绕新业务,发散思维,不断产生新的观点。 |
6.2.2 需求分析

结构化需求分析(SA)
结构化分析工具- 数据流图DFD:
| 元素 | 说明 | 图元 |
| 数据流 | 由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词,反映数据流的含义 | → |
| 加工 | 加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流 | ○ |
| 数据存储(文件) | 用来表示暂时存储的数据,每个文件都有名字。流向文件的数据流表示写文件,流出的表示读文件 | □ |
| 外部实体 | 指存在于软件系统外的人员或组织 | □ |
面向对象需求分析
(1)面向对象基本概念
对象:属性(数据)+方法(操作)+对象ID
类(实体类/控制类/边界类)
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。
控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”)转化来的名词,例如,用例“身份验证”可以对应于一个控制类“身份验证器”,它提供了与身份验证相关的所有操作。
边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。
6.2.3 UML
(1)UML图概念

UML包括两组公共分类,分别是类与对象(类表示概念,而对象表示具体的实体)、接口与实现(接口用来定义契约,而实现就是具体的内容)
结构事物:结构事物在模型中属于最静态的部分,代表概念上或物理上的元素。UML有七种结构事物,分别是类、接口、协作、用例、活动类、构件和节点。类是描述具有相同属性、方法、关系和语义的对象的集合,一个类实现一个或多个接口;接口是指类或构件提供特定服务的一组操作的集合,接口描述了类或构件的对外的可见的动作;协作定义了交互的操作,是一些角色和其它事物一起工作,提供一些合作的动作,这些动作比事物的总和要大;用例是描述一系列的动作,产生有价值的结果。在模型中用例通常用来组织行为事物。用例是通过协作来实现的;活动类的对象有一个或多个进程或线程。活动类和类很相似,只是它的对象代表的事物的行为和其他事物是同时存在的;构件是物理上或可替换的系统部分,它实现了一个接口集合;节点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合一般来说位于一个节点,但有可能从一个节点转到另一个节点。
行为事物:行为事物是UML模型中的动态部分,代表时间和空间上的动作。UML有两种主要的行为事物。第一种是交互(内部活动),交互是由一组对象之间在特定上下文中,为达到特定目的而进行的一系列消息交换而组成的动作。交互中组成动作的对象的每个操作都要详细列出,包括消息、动作次序(消息产生的动作)、连接(对象之间的连接);第二种是状态机,状态机由一系列对象的状态组成。
分组事物:分组事物是UML模型中组织的部分,可以把它们看成是个盒子,模型可以在其中进行分解。UML有两种分组事物,分别是包和构件。包是一种将有组织的元素分组的机制。与构件不同的是,包纯粹是一种概念上的事物,只存在于开发阶段,而构件可以存在于系统运行阶段。
注释事物:注释事物是UML模型的解释部分。
(2)UML图关系
用例关系包括:包含关系、扩展关系、泛化关系。
包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例,当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。
类图/对象图关系:
依赖关系:一个事物发生变化影响另一个事物。
泛化关系:特殊/一般关系
关联关系:描述了一组链,链是对象之间的连接。
聚合关系:整体与部分生命周期不同。
组合关系:整体与部分生命周期相同。
实现关系:接口与类之间的关系
其中继承关系可分为:
【取代继承(Replacement Inheritance)】指子类可以替换父类(如遵循Liskov替换原则),但子类的能力通常与父类相同或兼容,并不强调添加新内容导致能力扩展。
【受限继承(Restricted Inheritance)】子类继承父类,但限制了某些功能(如缩小方法范围或值域),导致子类的能力小于父类。
【特化继承(Specialization Inheritance)】子类完全继承父类的所有特性(属性和方法),并在此基础上添加新的特性或修改行为,从而使子类的能力大于或等于父类。这体现了“is- a”关系,子类是父类的特化或扩展。
【包含继承(Inclusion Inheritance)】通常指子类包含父类的所有特性,但更侧重于类型包含或子类型关系(如接口继承),并不强调添加新内容。
6.3 需求定义
严格定义法:所有需求都能够被预先定义开发人员与用户之间能够准确而清晰地交流采用图形/文字可以充分体现最终系统原型法:并非所有的需求都能在开发前被准确的说明
项目参加者之间通常都存在交流上的困难
需要实际的、可供用户参与的系统模型
有合适的系统开发环境
反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
6.4 需求确认与验证

6.5 需求跟踪

6.6 需求变更管理过程

需求变更控制流程的十大步骤:1、明确问题;2、书面申请;3、判断变更需求类别;4、评估变更影响;5、判断变更的紧急级别;6、沟通确认;7、明确解决方案;8、审批管理;9、执行变更;10、版本控制。
6.7 软件系统建模

7 系统设计
7.1 界面设计
用户界面设计是指用户与系统之间架起一座桥梁,主要内容包括:定义界面形式、定义基本的交互控制形成、定义图形和符号、定义通用的功能键和组合键的含义及其操作内容、定义帮助策略等。
黄金三法则:置于用户控制之下、减少用户的记忆负担、保持界面的一致性。
7.2 结构化设计
(1)概要设计【外部设计】:功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块结构图。
(2)详细设计【内部设计】:为每个具体任务选择适当的技术手段和处理方法。
(3)结构化设计原则:
模块独立性原则(高内聚、低耦合);保持模块的大小适中;多扇入,少扇出;深度和宽度均不宜过高。
(4)模块四要素:
输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
处理功能:指模块把输入转换成输出所做的工作。
内部数据:指仅供该模块本身引用的数据。
程序代码:指用来实现模块功能的程序。
(5)模块独立性的度量
- 聚合:衡量模块内部各元素结合的紧密程度
| 内聚类型 | 描述 |
| 功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可。 |
| 顺序内聚 | 处理元素相关,而且必须顺序执行。 |
| 通信内聚 | 所有处理元素集中在一个数据结构的区域上。 |
| 过程内聚 | 处理元素相关,而且必须按特定的次序执行。 |
| 时间内聚 (瞬时内聚) | 所包含的任务必须在同一时间间隔内执行。 |
| 逻辑内聚 | 完成逻辑上相关的一组任务。 |
| 偶然内聚 (巧合内聚) | 完成一组没有关系或松散关系的任务。 |
- 稍合:度量不同模块间互相依赖的程度
| 耦合类型 | 描述 |
| 非直接耦合 | 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。 |
| 数据耦合 | 一组模块借助参数表传递简单数据。 |
| 标记耦合 | 一组模块通过参数表传递记录信息(数据结构)。 |
| 控制耦合 | 模块之间传递的信息中包含用于控制模块内部逻辑的信息。 |
| 外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息。 |
| 公共耦合 | 多个模块都访问同一个公共数据环境。 |
| 内容耦合 | 一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。 |
7.3 面向对象设计
类的分类:

面向对象设计原则:
单一职责原则:设计目的单一的类
开放- 封闭原则:对扩展开放,对修改封闭
李氏(Liskov)替换原则:子类可以替换父类
依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
接口隔离原则:使用多个专门的接口比使用单一的总接口要好组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
迪米特(Demeter)原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解
8 系统测试
(1)黑盒测试、白盒测试与灰盒测试
白盒测试【结构测试】:关注内部结构与逻辑。
| 控制流分析、数据流分析、路径分析、程序变异【错误驱动测试】 | |
| 【路径覆盖】(最强) | |
| 【逻辑覆盖】(由强到弱排列) | 条件覆盖 |
| 修正条件/判定条件组合条件/判定覆盖 | 递句覆盖 |
黑盒测试【功能测试】:关注输入输出及功能。
| 等价类划分:不同等价类,揭示不同问题;有效等价类/无效等价类。 |
| 边界值分析:1<=x<=10,可取x的值为0、1、10和11作为测试数据。 |
| 错误推测:依靠测试人员的经验和直觉。 |
| 判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行哪些不同的动作。 |
| 因果图:根据输入条件与输出结果之间的因果关系来设计测试用例。 |
灰盒测试。灰盒测试介于黑盒与白盒测试之间。灰盒测试除了重视输出相对于输入的正确性,也看重其内部的程序逻辑。但是,它不可能像白盒测试那样详细和完整。它只是简单地靠一些象征性的现象或标志来判断其内部的运行情况,因此在内部结果出现错误,但输出结果正确的情况下可以采取灰盒测试方法。
(2)其他测试:
| 其他测试 | 描述 |
| AB测试 | 多版本同时使用,利于收集各版本的用户反馈,评估出最好版本。故也算是一种【网页优化方法】。 |
| Web测试 | Web系统测试与其他系统测试测试内容基本相同,只是测试重点不同。 Web代码测试包括:源代码规则分析、链接测试、框架测试、表格测试、图形测试等方面。 |
| 链接测试 | 链接测试可分为3个方面: 1、测试所有链接是否按指示的那样确实链接到了该链接的页面。 2、测试所链接的页面是否存在。 3、保证Web应用系统上没有孤立的页面。 |
| 表单测试 | 验证服务器是否能正确保存这些数据,后台运行的程序能否正确解释和使用这些信息。测试提交操作的完整性。 |
| 回归测试 | 测试软件变更之后,变更部分的正确性和对变更需求的符合性。 |
(3)软件测试与软件调试
软件调试方法:
蛮力法:主要思想是“通过计算机找错”,低效,耗时。
回溯法:从出错处人工沿控制流程往回追踪,直至发现出错的根源。复杂程序由于回溯路径多,难以实施。
原因排除法:主要思想是演绎和归纳,用二分法实现。
软件测试与软件调试的区别:调试是测试之后的活动,测试和调试在目标、方法和思路上都有所不同。
| 软件测试 | 软件调试 |
| 目的是找出存在的错误 | 目的是定位错误并修改程序以修正错误 |
| 从一个已知的条件开始,使用预先定义的过程,有预知的结果 | 从一个未知的条件开始,结束的过程不可预计 |
| 测试过程可以事先设计,进度可以事先确定 | 调试不能描述过程或持续时间 |
9 系统运行与维护
9.1 遗留系统与系统转换计划
遗留系统演化策略:

开发新系统时,需要完全兼容遗留系统的功能模型和数据模型
新旧系统是转换策略:

9.2 软件维护
影响软件可维护性的因素:
【可理解性】是指通过阅读源代码和相关文档,了解软件的功能和如何运行的容易程度。
【可修改性】是指修改软件的难易程度。
【可测试性】是指验证软件程序正确的难易程度。可测试性好的软件,通常意味着软件设计简单、复杂性低。因为软件的复杂性越大,测试的难度也就越大。
【可靠性】一个软件的可靠性越高,需要维护的概率就会越低。
【可移植性】是指将软件从一个环境移植到新的环境下正确运行的难易程度。
软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率。
软件维护类型:
正确性维护【修BUG】:识别和纠正软件错误/缺陷,测试不可能发现所有错误。
适应性维护【应变】:指使应用软件适应环境变化【外部环境、数据环境】而进行的修改。
完善性维护【新需求】:扩充功能和改善性能而进行的修改。
预防性维护【针对未来】:为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使系统适应各类变化而不被淘汰。经典实例:【专用】改【通用】。
第七章 项目管理
1 盈亏平衡分析
【正常情况下】销售额 $\equiv$ 固定成本 $^+$ 可变成本 $^+$ 税费 $^+$ 利润
【盈亏平衡时】销售额 $\equiv$ 固定成本 $^+$ 可变成本 $^+$ 税费
2 进度管理
进度管理:为了确保项目按期完成所需要的管理过程。

2.1 进度网络图-关键路径法 (PERT)
(1)总时差(松弛时间):
含义:在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。
(2)自由时差:
含义:在不影响紧后活动的最早开始时间前提下,该活动的机动时间。
对于有紧后活动的活动,其自由时差等于所有紧后活动最早开始时间减本活动最早完成时间所得之差的最小值。
对于没有紧后活动的活动,也就是以网络计划终点节点为完成节点的活动,其自由时差等于计划工期与本活动最早完成时间之差。
对于网络计划中以终点节点为完成节点的活动,其自由时差与总时差相等。此外,由于活动的自由时差是其总时差的构成部分,所以,当活动的总时差为零时,其自由时差必然为零,可不必进行专门计算。
2.2 进度网络图-单代号网络图 (PDM)

2.3 进度网络图-甘特图 (Gantt)
| 工作编号 | 工作名称 | 工作时间(M) | 项目进度 | |||||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
| 1 | 需求分析 | 3 | ||||||||||
| 2 | 设计思路 | 3 | ||||||||||
| 3 | 编码 | 3.5 | ||||||||||
| 4 | 测试 | 3 | ||||||||||
| 5 | 实施部署 | 2 | ||||||||||
检查日期
优点:甘特图直观、简单、容易制作,便于理解,能很清晰地标识出每一项任务的起始时间与结束时间,一般适用比较简单的小型项目,可用于WBS的任何层次、进度控制、资源优化、编制资源和费用计划。
缺点:不能系统地表达一个项目所包含的各项工作之间的复杂关系,难以进行定量的计算和分析,以及计划的优化等。
3 软件质量管理
影响软件质量的3组因素

3.1软件质量控制与质量保证
(1)质量保证一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。独特工具包括:质量审计和过程分析。
(2)质量控制是实时监控项目的具体结果,以判断它们是否符合相关质量标准,制定有效方案,以消除产生质量问题的原因。
(3)质量保证的主要目标
【事前预防】工作。
尽量在刚刚引入缺陷时即将其捕获,而不是让缺陷扩散到下一个阶段。
作用于【过程】而【不是最终产品】。
贯穿于【所有的活动之中】,而不是只集中于一点。
(4)软件能力成熟度模型集成(CMMI)成熟度等级:初始级、已管理级、已定义级、定量管理级、优化级。CMMI文件体系:顶层方针文件–过程文件–规程文件–模板类文件。
(5)数据管理能力成熟度模型(DCMM)
【DCMM的8个核心能力域】定义了数据战略、数据治理、数据架构、数据应用、数据安全、数据质量、数据标准和数据生存周期等
| 成熟度等级 | 描述 |
| 优化级【L5】 | 数据被认为是组织生存和发展的基础,相关管理流程能实时优化,能在行业内进行最佳实践分享 |
| 量化管理级【L4】 | 数据被认为是获取竞争优势的重要资源,数据管理的效率能量化分析和监控 |
| 稳健级【L3】 | 数据被当作绩效目标的重要资产,在组织层面制定了标准化管理流程,促进数据管理规范化 |
| 受管理级【L2】 | 组织意识到数据是资产,根据管理策略的要求制定管理流程,有相关人员初步管理 |
| 初始级【L1】 | 数据需求管理是项目级体现,没有统一管理流程,被动式管理 |
4软件配置管理
(1)产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器可读或人工可读)和各种版本的文档、计算机程序、部件及数据的集合。
(2)关于配置项
基线配置项(可交付成果):需求文档、设计文档、源代码、可执行代码测试用例、运行软件所需数据等。
非基线配置项:各类计划(如项目管理计划,进度管理计划)、各类报告。
软件配置管理核心内容包括【版本控制】和【变更控制】。
按软件过程活动将软件工具分为:
软件开发工具:需求分析工具、设计工具、编码与排错工具。
软件维护工具:版本控制工具(VSS、CVS、SCCS、SVN)、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具等。
第八章 数据库系统
1 数据库概述
1.1 数据库模式
(1)三级模式:外模式对应视图,模式(也称为概念模式)对应数据库表,内模式对应物理文件。(2)两层映像:外模式-模式映像,模式-内模式映像;两层映像可以保证数据库中的数据具有较高的逻辑独立性和物理独立性。(3)物理独立性:即数据库的内模式发生改变时,应用程序不需要改变。(4)逻辑独立性:即逻辑结构发生改变时,用户程序不需要改变。(逻辑独立性比物理独立性更难实现)(5)聚簇索引会影响内模式

1.2 分布式数据库

(1)分布式数据库特点:
数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他场地来说,数据仍然是可用的,从而保证数据的完备性。
- 全局的一致性、可串行性和可恢复性。
(2)分布式透明性
分片透明性:分不分片,用户感受不到(不关心如何分片存储)。
(水平分片:按记录分;垂直分片:按字段分;混合分片)
位置透明性:数据存放在哪里,用户不用管(用户无需知道数据存放的物理位置)。
局部数据模型透明性(逻辑透明):用户或应用程序无需知道局部场地使用的是哪种数据模型。
两阶段提交协议2PC:
2PC事务提交的两个阶段:
表决阶段,目的是形成一个共同的决定。
执行阶段,目的是实现这个协调者的决定。
两条全局提交规则:
只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。只有所有参与者都同意提交事务,协调者才能做出全局提交决定。
(3)分库分区分表

| 分区 | 分表 | |
| 共性 | 1、都针对数据表 2、都使用了分布式存储 3、都提升了查询效率 4、都降低了数据库的频繁I/O压力值 | |
| 差异 | 逻辑上还是一张表 | 逻辑上已是多张表 |
分区的常见方式
希赛
| 分区策略 | 分区方式 | 说明 |
| 范围分区 【RANGE】 | 按数据范围值来做分区 | 例:按用户编号分区,0-999999映射到分区 A; 1000000-1999999映射到分区 B。 |
| 散列分区 【HASH】 | 通过对 key 进行 hash 运算分区 | 例:可以把数据分配到不同分区,这类似于取余操作,余数相同的,放在一个分区上。 |
| 列表分区 【LIST】 | 根据某字段的某个具体值进行分区 | 例:长沙用户分成一个区,北京用户一个区 |
分区的优点:
1、相对于单个文件系统或是硬盘,分区可以存储更多的数据。2、数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。3、精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。4、可跨多个分区磁盘查询,来提高查询的吞吐量。5、在涉及聚合函数查询时,可以很容易进行数据的合并。
(4)分布式数据库管理系统组成:LDBMS、GDBMS、全局数据字典、通信管理(CM)
(5)分布式数据库管理系统结构
全局控制集中的DDBMS
全局控制分散的DDBMS
全局控制部分分散的DDBMS
1.3索引和视图
(1)关系的3种类型
基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。
查询表:查询结果对应的表。
视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。它是一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。
(2)视图(View)并不在数据库中实际存在,而是一种虚拟表。
学生信息表
| 学号 | 姓名 | 性别 |
| N001 | 张三 | 男 |
| N002 | 李四 | 女 |
课程信息表
| 课程号 | 课程名 | 授课老师 |
| C001 | 数据结构 | 王老师 |
| C002 | Java语言 | 李老师 |
选课关系表
| 学号 | 课程号 | 成绩 |
| N001 | C001 | 85 |
| N002 | C002 | 74 |

希翼网——专业的在线职业教育平台 客服热线:400- 111- 9811 55/96
(3)视图的优点:
1、视图能简化用户的操作
2、视图机制可以使用户以不同的方式查询同一数据
3、视图对数据库重构提供了一定程度的逻辑独立性
4、视图可以对机密的数据提供安全保护
(4)物化视图:它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。
(5)数据库索引:提升查询效率;降低添加、修改、删除效率;采用B树,B+树等。
2数据库设计过程

E- R模型

2.1概念结构设计过程

(1)E- R图集成的方法:
多个局部E- R图一次集成。
逐步集成,用累加的方式一次集成两个局部E- R。
(2)集成产生的冲突及解决办法:
属性冲突:包括属性域冲突和属性取值冲突。【同一对象】
命名冲突:包括同名异义和异名同义。【同一对象】
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E- R图中所包含的属性个数和属性排列次序不完全相同。
2.2逻辑结构设计

(1)任务
1、E- R图向关系模式的转换;
实体向关系模式的转换联系向关系模式的转换
2、关系模式的规范化;
3、确定完整性约束(保证数据的正确性);
实体完整性约束:规定基本关系的主属性不能取空值。
参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
用户自定义完整性约束:应用环境决定。
4、用户视图的确定(提高数据的安全性和独立性)。
根据数据流图确定处理过程使用的视图
根据用户类别确定不同用户使用的视图
5、应用程序设计
相关概念:
目或度:关系模式中属性的个数。
候选码(候选键)
主码 (主键)
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
外码 (外键)
全码(ALL- Key):关系模式的所有属性组是这个关系的候选码。
简单属性与复合属性、派生属性、多值属性
3 关系代数
3.1并、交、差
| 关系S1 | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0003 | Candy | IS |
| No0004 | Jam | IS |
| 关系S2 | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0008 | Katter | IS |
| No0021 | Tom | IS |
| 并交 差 | S1∩S2(交) | ||
| Sno | Sname | Sdept | |
| No0001 | Mary | IS | |
| S1-S2(差) | |||
| Sno | Sname | Sdept | |
| No0003 | Candy | IS | |
| No0004 | Jam | IS | |
| S1 U S2 (并) | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0003 | Candy | IS |
| No0004 | Jam | IS |
| No0008 | Katter | IS |
| No0021 | Tom | IS |
3.2投影、选择
投影[SELECT]:选择特定列
选择[WHERE]:选择特定行(元组)
| 关系S1 | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0003 | Candy | IS |
| No0004 | Jam | IS |
| T Sno, Sname (S1) (投影) | |
| Sno | Sname |
| No0001 | Mary |
| No0003 | Candy |
| No0004 | Jam |
| 0 Sno=1 No0003##x27; (S1) (选择) | ||
| Sno | Sname | Sdept |
| No0003 | Candy | IS |
3.3笛卡尔积
笛卡尔积:所有列保留,所有行全映射
| 关系S1 | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0003 | Candy | IS |
| No0004 | Jam | IS |
| 关系S2 | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0008 | Katter | IS |
| No0021 | Tom | IS |
| S1×S2(笛卡尔积) | ||||||
| Sno | Sname | Sdept | Sno | Sname | Sdept | |
| No0001 | Mary | IS | No0001 | Mary | IS | |
| No0001 | Mary | IS | No0008 | Katter | IS | |
| No0001 | Mary | IS | No0021 | Tom | IS | |
| No0003 | Candy | IS | No0001 | Mary | IS | |
| No0003 | Candy | IS | No0008 | Katter | IS | |
| No0003 | Candy | IS | No0021 | Tom | IS | |
| No0004 | Jam | IS | No0001 | Mary | IS | |
| No0004 | Jam | IS | No0008 | Katter | IS | |
| No0004 | Jam | IS | No0021 | Tom | IS | |
3.4 自然连接
| 关系S1 | ||
| Sno | Sname | Sdept |
| No0001 | Mary | IS |
| No0003 | Candy | IS |
| No0004 | Jam | IS |
| 关系S2 | |
| Sno | Age |
| No0001 | 23 |
| No0008 | 21 |
| No0021 | 22 |
| S1×S2(自然连接) | |||
| Sno | Sname | Sdept | Age |
| No0001 | Mary | IS | 23 |
4 规范化理论
4.1 非规范化存在的问题
非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常。
4.2 Armstrong 公理
对关系模式 $R< U$ , $F>$ 来说有以下的推理规则:
自反律(Reflexivity):若 $Y\subseteq X\subseteq U$ ,则 $X\rightarrow Y$ 成立。
增广律(Augmentation):若 $Z\subseteq U$ 且 $X\rightarrow Y$ ,则 $XZ\rightarrow YZ$ 成立。
传递律(Transitivity):若 $X\rightarrow Y$ 且 $Y\rightarrow Z$ ,则 $X\rightarrow Z$ 成立。
根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则:由 $X\rightarrow Y$ , $X\rightarrow Z$ ,有 $X\rightarrow YZ$ 。(A2,A3)伪传递规则:由 $X\rightarrow Y$ , $WY\rightarrow Z$ ,有 $XW\rightarrow Z$ 。(A2,A3)分解规则:由 $X\rightarrow Y$ 及 $Z\subseteq Y$ ,有 $X\rightarrow Z$ 。(A1,A3)
4.3 范式

第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
第二范式(2NF)- - 消除非主属性对码的部分函数依赖:当且仅当关系模式R是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式R是第二范式。
第三范式(3NF)- - 消除非主属性对码的传递函数依赖:当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时,则称关系模式R是第三范式。
BC范式(BCNF)- - 根据定义判断:设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
(可以理解为在3NF基础上,消除主属性之间的传递函数依赖和部分函数依赖)
第四范式(4NF)是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。
4.4规范化过程-模式分解
保持函数依赖分解:设数据库模式 $\rho = {\mathsf{R}1$ ,R2,,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果{F1,F2,,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD。
无损分解:指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式。
定理:如果R的分解为 $\rho = {\mathsf{R}1$ ,R2},F为R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件是:
$$ \mathsf{R}1\cap \mathsf{R}2\rightarrow (\mathsf{R}1 - \mathsf{R}2) $$
或 $\mathsf{R}1\cap \mathsf{R}2\rightarrow (\mathsf{R}2 - \mathsf{R}1)$
其中,R1∩R2表示模式的交,为R1与R2中公共属性组成,R1- R2或R2- R1表示模式的差集,R1- R2表示R1中去除R1和R2的公共属性所组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能函数决定R1中或R2中的其他属性,这样的分解就具有无损连接性。
4.5反规范化

(1)反规范化手段
| 技术手段 | 说明 |
| 增加派生性冗余列 | 已有单价和数量列,增加“总价”列 |
| 增加冗余列 | 已有学号列,增加“姓名”列 |
| 重新组表 | 把拆分的表重新组表 |
| 分割表 | 把用户表做水平分割,长沙的用户存在长沙,上海的用户存在上海 |
(2)反规范化的优缺点
优点:连接操作少,检索快,统计快,需要查的表减少,检索容易。
缺点:
| 反规范化的缺点 | 解决方案 |
| 数据冗余,需要更大存储空间 | 无解 |
| 插入、更新、删除操作开销更大 | 无解 |
| 数据不一致 可能产生添加、修改、删除异常 | 1、触发器数据同步 2、应用程序数据同步 3、批处理 |
| 更新和插入代码更难写 | 无解 |
5数据控制
数据控制功能包括:安全性、完整性、并发控制、故障恢复
5.1并发控制

事务的特性:原子性、一致性、隔离性、持久性。
5.2 故障恢复
冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
完全备份:备份所有数据。
差量备份:仅备份上一次完全备份之后变化的数据。
增量备份:备份上一次备份之后变化的数据。
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。
5.3 数据库性能优化

第九章 软件架构设计
1软件架构的概念
架构设计就是需求分配,即将满足需求的职责分配到组件上。
软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
架构的本质:
软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。
软件架构的生命周期:

2软件架构风格
2.1软件架构风格概述
架构风格定义了用于描述系统的术语表和一组指导构建系统的规则
| 五大架构风格 | 子风格 |
| 数据流风格 【Data Flow】 | 批处理【Batch Sequential】、管道-过滤器【Pipes and Filters】 |
| 调用/返回风格 【Call/Return】 | 主程序/子程序【Main Program and Subroutine】 面向对象【Object-oriented】、分层架构【Layered System】 |
| 独立构件风格 【Independent | 进程通信【Communicating Processes】、 事件驱动系统(隐式调用)【Event system】 |
| Components] | |
| 虚拟机风格 [Virtual Machine] | 解释器 [Interpreter]、规则系统 [Rule-based System] |
| 以数据为中心 [Data-centered] | 数据库系统 [Database System]、黑板系统 [Blackboard System]、超文本系统 [Hypertext System] |
2.2 数据流风格

2.3 调用/返回风格

2.4 分层架构风格

2.5 独立构件风格

2.6 虚拟机风格

2.7 解释器体系结构风格

2.8 规则系统体系结构风格

2.9 仓库风格

2.10 闭环控制架构

2.11 C2 风格

3 典型架构应用
3.1 层次架构

层次架构是最通用的架构,常作为初始架构,【关注分离】每层只负责本层的工作。

(1) MVC
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
J2EE体系结构中:
视图(View):JSP控制(Controller):Servlet模型(Model):EntityBean、SessionBean
(2) MVP

MVP与MVC关系:MVP是MVC的变种。
MVP的优点:
模型与视图完全分离,我们可以修改视图而不影响模型
可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部。
我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。
3.2 富互联网应用(RIA)
RIA结合了C/S架构反应速度快、交互性强的优点,以及B/S架构传播范围广及容易传播的特性。
RIA简化并改进了B/S架构的用户交互。
数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。
优点:反应速度快、易于传播、交互性强。
3.3 基于服务的架构(SOA)
服务是一种为了满足某项业务需求的操作、规则等的逻辑组合,它包含一系列有序活动的交互,为实现用户目标提供支持。
关键技术:

| 发现服务 | UDDI、DISCO |
| 描述服务 | WSDL、XML Schema |
| 消息格式层 | SOAP、REST |
| 编码格式层 | XML (DOM, SAX) |
| 传输协议层 | HTTP、TCP/IP、SMTP等 |
其中:
【UDDI】是Web服务集成的一个体系框架,包含了服务描述与发现的标准规范。
【WSDL】服务描述语言,三个基本属性(服务做些什么/如何访问服务/服务位于何处)。
【SOAP】基于XML的协议,在分布式环境中交换信息。4个部分:SOAP封装(消息内容,谁发的,谁接收)、SOAP编码规则(数据类型实例)、SOAPRPC(远程过程调用和应答协定)、SOAP绑定(使用底层协议交换信息)。
3.4 REST
REST含义:REST(Representational State Transfer,表述性状态转移)是一种通常使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
REST的5个原则:
网络上的所有事物都被抽象为资源。每个资源对应一个唯一的资源标识。通过通用的连接件接口对资源进行操作。对资源的各种操作不会改变资源标识。所有的操作都是无状态的。
RESTAPI:
| 命令 | 用途 |
| GET | 从指定的资源请求数据,只进行数据检索,不进行其他操作 |
| POST | 将数据发送到服务器进行创建,通常用于上传文件或提交表单 |
| PUT | 更新目标资源的所有当前表示,使用上传的内容进行替换 |
| DELETE | 删除指定的资源 |
| HEAD | 与GET方法类似,但只传输状态行和头部信息 |
| PATCH | 对资源进行部分修改 |
3.5 微服务-混合风格
(1)什么是微服务
微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。
(2)微服务的优势
| 优点 | 解读 |
| 【复杂应用解耦】 | 小服务(且专注于做一件事情) |
| 化整为零,易于小团队开发 | |
| 【独立】 | 独立开发 独立测试及独立部署(简单部署) 独立运行(每个服务运行在其独立进程中) |
| 【技术选型灵活】 | 支持异构(如:每个服务使用不同数据库) |
| 【容错】 | 故障被隔离在单个服务中,通过重试、平稳退化等机制实现应用层容错 |
| 【松耦合,易扩展】 | 可根据需求独立扩展 |
(3)微服务面临的挑战
分布式环境下的数据一致性【更复杂】
测试的复杂性【服务间依赖测试】
运维的复杂性
(4)微服务与SOA的对比
| 微服务 | SOA |
| 能拆分的就拆分 | 是整体的,服务能放一起的都放一起 |
| 纵向业务划分 | 是水平分多层 |
| 由单一组织负责 | 按层级划分不同部门的组织负责 |
| 细粒度 | 粗粒度 |
| 两句话可以解释明白 | 几百字只相当于SOA的目录 |
| 独立的子公司 | 类似大公司里面划分了一些业务单元(BU) |
| 组件小 | 存在较复杂的组件 |
| 业务逻辑存在于每一个服务中 | 业务逻辑横跨多个业务领域 |
| 使用轻量级的通信方式,如HTTP | 企业服务总线(ESB)充当了服务之间通信的角色 |
| 微服务架构实现 | SOA 实现 |
| 团队级,自底向上开展实施 | 企业级,自顶向下开展实施 |
| 一个系统被拆分成多个服务,粒度细 | 服务由多个子系统组成,粒度大 |
| 无集中式总线,松散的服务架构 | 企业服务总线,集中式的服务架构 |
| 集成方式简单(HTTP/REST/JSON) | 集成方式复杂(ESB/WS/SOAP) |
| 服务能独立部署 | 单块架构系统,相互依赖,部署复杂 |
3.6 云原生架构风格
(1)云计算基本概念:
云计算是集合了大量计算设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的。
云计算优点:超大规模、虚拟化、高可靠性、高可伸缩性、按需服务、成本低【前期投入低、综合使用成本也低】。
(2)分类
按服务类型分类:
| SaaS【软件即服务】 | 基于多租户技术实现,直接提供应用程序 |
| PaaS【平台即服务】 | 虚拟中间件服务器、运行环境和操作系统 |
| IaaS【基础设施即服务】 | 包括服务器、存储和网络等服务 |
按部署方式分类:
公有云:面向互联网用户需求,通过开放网络提供云计算服务 私有云:面向企业内部提供云计算服务 混合云:兼顾以上两种情况的云计算服务
(3)云计算架构
【云原生】是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。

【管理层】提供对所有层次云计算服务的管理功能。
【用户访问层】方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。
【应用层】提供软件服务,如:财务管理,客户关系管理,商业智能。
【平台层】为用户提供对资源层服务的封装,使用户可以构建自己的应用。
【资源层】提供虚拟化的资源,从而隐藏物理资源的复杂性。如:服务器,存储。
3.7边缘计算
边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。
边缘计算的本质:计算处理职能的本地化。
边云协同的分类:
【资源协同】边缘节点有基础设施资源的调度管理能力,可与云端协同。
【数据协同】边缘节点采集数据并初步分析,再发给云端做进一步处理。
【智能协同】分布式智能,云端做集中式模型训练,再将模型下发到边缘节点。
【应用管理协同】边缘节点提供应用部署与运行环境,云端主要提供应用开发、测试环境。
【业务管理协同】边缘节点提供模块化、微服务化的应用/数字孪生/网络等应用实例;云端主要提供按照客户需求实现应用/数字孪生/网络等的业务编排能力。
【服务协同】边缘节点按照云端策略实现部分ECSaaS服务,通过ECSaaS与云端SaaS的协同实现面向客户的按需SaaS服务;云端主要提供SaaS服务在云端和边缘节点的服务分布策略,以及云端承担的SaaS服务能力。
4特定领域软件架构 (DSSA)
定义:特定领域软件架构以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,支持一个特定领域中多个应用的生成。

垂直域:某一个狭小领域或者说某个行业的共性抽象。
水平域:多个行业可通用的一些共性的抽象。
参与人员:
(1)领域专家:有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。领域专家的主要任务包括提供关于领域中系统的需求规约和实现的知识。
(2)领域分析人员:领域分析人员应由具有知识工程背景的有经验的系统分析员来担任。
(3)领域设计人员:领域设计人员应由有经验的软件设计人员来担任。
(4)领域实现人员:领域实现人员应由有经验的程序设计人员来担任。
5基于架构的软件开发方法
5.1架构的“4+1”视图

5.2 基于架构的软件设计 (ABSD)
ABSD能很好的支持软件重用。
ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计。
ABSD方法有三个基础。第一个基础是功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择架构风格来实现质量和业务需求;第三个基础是软件模板的使用。软件模板利用了一些软件系统的结构。
视角与视图:从不同的视角来检查,所以会有不同的视图。
用例用来捕获功能需求、特定场景【刺激、环境、响应】用来捕获质量需求。


6架构评估
6.1架构设计重点关注非功能设计 (质量属性)
软件系统质量属性是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者需求的程度。基于软件系统的生命周期,可以将软件系统的质量属性分为开发期质量属性和运行期质量属性2个部分。
开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含6个方面:
易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性。
运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含7个方面:
性能、安全性、可伸缩性、互操作性、可靠性、可用性、鲁棒性。
(1)性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。例如:a.同时支持1000并发;b.响应时间小于1s;c.显示分辨率达到4K。
代表参数:响应时间、吞吐量 设计策略:优先级队列、资源调度

(2)可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。例如:a.主服务器故障,1分钟内切换至备用服务器;b.系统故障,1小时内修复;c.系统支持 $7\times 24$ 小时工作。
代表参数:故障间隔时间 设计策略:冗余、心跳线

(3)安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性【信息不泄漏给未授权的用户】、完整性【防止信息被篡改】、不可否认性【不可抵赖】及可控性【对信息的传播及内容具有控制的能力】等特性。例如:a.可抵御SQL注入攻击;b.对计算机的操作都有完整记录;c.用户信息数据库授权必须保证 $99.9%$ 可用。
设计策略:追踪审计

(4)可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。(可扩展性与之相近)例如:a.更改系统报表模块,必须在2人周内完成;b.对Web界面风格进行修改,修改必须在4人月内完成。
主要策略:信息隐藏(二义性:良好的封装能够做到信息隐藏,一般归于可修改性策略;信息隐藏也能够体现在安全性当中)

(5)易用性
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。例如:a.界面友好;b.新用户学习使用系统时间不超过2小时。
(6)可测试性
软件可测试性是指通过测试揭示软件缺陷的容易程度。例如:a.提供远程调试接口,支持远程调试。

6.2软件架构评估方法
(1)相关概念
风险点:系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
非风险点:是指不会带来隐患,一般以“XXX要求是可以实现【或接受】的”方式表达。
敏感点:敏感点是一个或多个构件(和/或构件之间的关系)的特性,它能影响系统的某个质量属性。
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
场景:场景是从风险承担者的角度与系统交互的简短描述。场景可从六个方面进行描述:刺激源、刺激、制品、环境、响应、响应度量。

刺激源(Source):这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
刺激(Stimulus):该刺激是当刺激到达系统时需要考虑的条件。
环境(Environment):该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
制品(Artifact):某个制品被激励。这可能是整个系统,也可能是系统的一部分。
响应(Response):该响应是在激励到达后所采取的行动。
响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。
(2)基于场景的评估方法
软件架构分析法(SAAM)
(最初用于分析架构可修改性,后扩展到其它质量属性。)

架构权衡分析法(ATAM)
(在SAAM的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。)
ATAM四个阶段:场景和需求收集、架构视图和场景实现、属性模型构造与分析、折中。
质量效用树
ATAM方法采用效用树(Utility tree)这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)。
得到初始的效用树后,需要修剪这棵树,保留重要场景(通常不超过50个),再对场景按重要性给定优先级(用H/M/L的形式),再按场景实现的难易度来确定优先级(用H/M/L的形式),这样对所选定的每个场景就有一个优先级对(重要度、难易度),如(H、L)表示该场景重要且易实现。

ATAM方法架构评估实践:
$①$ 描述和介绍阶段
介绍ATAM方法
描述商业目标(主要利益相关者包括:最终用户、架构师和应用程序开发人员)
描述体系结构(侧重于体系结构、时间可用性以及体系结构的质量要求。关键问题包括:技术约束及与当前系统交互的其它系统)
$(2)$ 调查和分析阶段
标识体系结构步骤
产生质量属性树
分析体系结构步骤(四个阶段:调查架构方法、创建分析问题、分析问题的答案、找出风险、非风险、敏感点和权衡点)
$(3)$ 测试阶段
讨论质量需求的次序(使用头脑风暴的三种场景:【用例场景】在这种情况下,利益相关者就是最终用户。【增长情景】代表了架构发展的方式。【探索性场景】代表架构中极端的增长形式。)
分析体系结构步骤
$(4)$ 报告阶段
提交结果
7产品线
7.1特点
核心资源、产品集合、过程驱动、特定领域、技术支持、以架构为中心。

7.2 成功实施产品线主要取决因素
- 对该领域具备长期和深厚的经验
- 一个用于构建产品的好的核心资源库
- 好的产品线架构
- 好的管理(软件资源、人员组织、过程)支持
8 大型网站系统架构演化
8.1 维度
| 维度 | 涉及技术内容 |
| 从架构来看 | MVC, MVP, MVVM, REST, Webservice, 微服务 |
| 从并发分流来看 | 集群(负载均衡)、CDN |
| 从缓存来看 | MemCache, Redis, Squid |
| 从数据来看 | 主从库(主从复制),内存数据库,反规范化技术,NoSQL,分区(分表)技术,视图与物化视图 |
| 从持久化来看 | Hibernate, Mybatis |
| 从分布存储来看 | Hadoop, FastDFS, 区块链 |
| 从数据编码来看 | XML, JSON |
| 从 Web 应用服务器来看 | Apache, WebSphere, WebLogic, Tomcat, JBOSS, IIS |
| 从安全性来看 | SQL 注入攻击 |
| 其它 | 静态化,有状态与无状态,响应式 Web 设计,中台 |
8.2 缓存
(1)MemCache:MemCache 是一个高性能的分布式的内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。MemCache 通过在内存里维护一个统一的巨大的 hash 表,能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
(2)Redis:Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key- Value数据库,并提供多种语言的API。
(3)Squid:Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
(4)Redis和MemCache对比:
| 工作 | MemCache | Redis |
| 数据类型 | 简单 key/value 结构 | 丰富的数据结构 |
| 持久性 | 不支持 | 支持 |
| 分布式存储 | 客户端哈希分片/一致性哈希 | 多种方式,主从、Sentinel、Cluster等 |
| 多线程支持 | 支持 | 支持(Redis5.0及以前版本不支持) |
| 内存管理 | 私有内存池/内存池 | 无 |
| 事务支持 | 不支持 | 有限支持 |
| 数据容灾 | 不支持,不能做数据恢复 | 支持,可以在灾难发生时,恢复数据 |
(5)Redis集群切片方式
| 集群切片方式 | 核心特点 |
| 客户端分片 | 在客户端通过 key 的 hash 值对应到不同的服务器。 |
| 中间件实现分片 | 在应用软件和 Redis 中间,例如:Twemproxy、Codis 等,由中间件实现服务到后台 Redis 节点的路由分派。 |
| 客户端服务端协作分片 | Redis Cluster 模式,客户端可采用一致性哈希,服务端提供节点的重定向到 slot 上。不同的 slot 对应到不同服务器。 |
(6)Redis分布存储方案
| 分布式存储方案 | 核心特点 |
| 主从(Master/Slave)模式 | 一主多从,故障时手动切换。 |
| 哨兵(Sentinel)模式 | 有哨兵的一主多从,主节点故障自动选择新的主节点。 |
| 集群(Cluster)模式 | 分节点对等集群,分 slots,不同 slots 的信息存储到不同节点。 |
(7)Redis分片方案
| 分片方案 | 分片方式 | 说明 |
| 范围分片 | 按数据范围值来做分片 | 例:按用户编号分片,0-999999 映射到实例 A; 1000000-1999999 映射到实例 B。 |
| 哈希分片 | 通过对 key 进行 hash 运算分片 | 可以把数据分配到不同实例,这类似于取余操作,余数相同的,放在一个实例上。 |
| 一致性哈希分片 | 哈希分片的改进 | 可以有效解决重新分配节点带来的无法命中问题。 |
(8)Redis持久化
RDB:传统数据库中快照的思想。指定时间间隔将数据进行快照存储。
AOF:传统数据库中日志的思想,把每条改变数据集的命令追加到AOF文件末尾,这样出问题了,可以重新执行AOF文件中的命令来重建数据集。
| 对比维度 | RDB持久化 | AOF持久化 |
| 备份量 | 重量级的全量备份,保存整个数据库 | 轻量级增量备份,一次只保存一个修改命令 |
| 保存间隔时间 | 保存间隔时间长 | 保存间隔时间短,默认1秒 |
| 还原速度 | 数据还原速度快 | 数据还原速度慢 |
| 阻塞情况 | save会阻塞,但bgsave或者自动不会阻塞 | 无论是平时还是AOF重写,都不会阻塞 |
| 数据体积 | 同等数据体积:小 | 同等数据体积:大 |
| 安全性 | 数据安全性:低,容易丢数据 | 数据安全性:高,根据策略决定 |
(9)淘汰机制
| 淘汰作用范围 | 机制名 | 策略 |
| 不淘汰 | noeviction | 禁止驱逐数据,内存不足以容纳新入数据时,新写入操作就会报错。系统默认的一种淘汰策略。 |
| 设置了过期时间的键空间 | volatile-random | 随机移除某个key |
| volatile-lru | 优先移除最近未使用的key | |
| volatile-ttl | ttl值小的key优先移除 | |
| 全键空间 | allkeys-random | 随机移除某个key |
| allkeys-lru | 优先移除最近未使用的key |
8.3 服务集群
(1)应用层负载均衡
http重定向。HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。
特点:实现简单,但性能较差。
反向代理服务器。在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache,nginx都可以充当反向代理服务器。
特点:部署简单,但代理服务器可能成为性能的瓶颈
(2)传输层负载均衡
DNS域名解析负载均衡。DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。
特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
基于NAT的负载均衡。基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。
特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
(3)硬件负载均衡:F5(4)软件负载均衡:LVS、Nginx、HAproxy(5)算法分类
静态算法(不考虑动态负载):
静态算法(不考虑动态负载):(1) 轮转算法:轮流将服务请求(任务)调度给不同的节点(即:服务器)。(2) 加权轮转算法:考虑不同节点处理能力的差异。(3) 源地址哈希散列算法:根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。(4) 目标地址哈希散列算法:根据请求目标IP做散列找出对应节点。(5) 随机算法:随机分配,简单,但不可控。
动态算法(考虑动态负载)
动态算法(考虑动态负载)(1) 最小连接数算法:新请求分配给当前活动请求数量最少的节点,每个节点处理能力相同的情况下。(2) 加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。(3) 加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。
Session有状态和无状态问题
无状态服务(statelessservice)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
有状态服务(statefulservice)则相反,它会在自身保存一些数据,先后的请求是有关联的。
8.4数据库读写分离
主从数据库结构特点:
一般:一主多从,也可以多主多从。
主库做写操作,从库做读操作。
主从复制步骤:
主库(Master)更新数据完成前,将操作写入binlog日志文件。从库(Slave)打开I/O线程与主库连接,做binlogdumpprocess,并将事件写入中继日志。从库执行中继日志事件,保持与主库一致
8.5响应式Web设计
(1)概念
响应式WEB设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。
(2)方法与策略
采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。
8.6 中台
概念:中台是一套结合互联网技术和行业特性,将企业核心能力以共享服务形式沉淀,形成“大中台、小前台”的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。中台又可以进一步细分,比如业务中台,数据中台,XX中台。本质上,都是对企业通用能力在不同层面的沉淀,并对外能力开放。
业务中台:提供重用服务,例如学员中心、课程中心之类的开箱即用可重用能力。
数据中台:提供数据整合分析能力,帮助企业从数据中学习改进,调整方向。
技术中台:提供技术重用组件能力,帮助解决基础技术平台的复用。如:中间件,分布式存储,AI,负载均衡等基础设施。
数据中台必备的4个核心能力
1、数据汇聚整合能力2、数据提纯加工能力3、数据服务可视化4、价值变现方面
8.7 JWT
JWT(JSONWebToken)是一种用于身份验证和授权的开放标准。
它是一种轻量级的、基于JSON的令牌,可以在客户端和服务器之间传递信息。
JWT由三部分组成:
【头部】包含令牌类型和所使用的算法
【载荷】包含用户信息和其他元数据
【签名】用于验证令牌的完整性和真实性
9软件架构复用
【软件复用】是一种系统化的软件开发过程,通过识别、分析、分类、获取和修改软件实体,以便在不同软件开发过程中重复使用它们。
软件开发过程中重复使用相同或相似【软件元素】的过程。
| 软件架构 复用类型 | 机会复用 | 开发过程中,只要发现有可复用资产,就对其进行复用 |
| 系统复用 | 开发之前,要进行规划,以决定哪些需要复用 |
软件架构复用的基本过程:复用的基本过程主要包括3个阶段:首先构造/获取可复用的软件资产,其次管理这些资产,最后针对特定的需求,从这些资产中选择可复用的部分,以开发满足需求的应用系统。
可复用资产范围:需求、架构设计、元素、建模与分析、测试、项目规划、过程、方法和工具、人员、样本系统、缺陷消除。
第十章 未来信息综合技术
1 信息物理系统 CPS
(1)CPS的建设路径:CPS体系设计 $\rightharpoonup$ 单元级CPS建设 $\rightharpoonup$ 系统级CPS建设 $\rightharpoonup$ SoS级CPS建设

| 级别 | 基本组成 | 说明 | 其他 |
| 单 元 级 | 单元级 CPS 是具备可感知、可计算、可交互、可延展、自决策功能的CPS 最小单元。 | 一个智能部件、一个工业机器人或一个智能机床都可能是一个CPS 最小单元。 | SoS级CPS主要功能包括:数据存储、数据融合、分布式计算、大数据分析、数据服务,并在数据服务的基础上形成了资产性能管理和运营优化服务。SoS级CPS可以通过大数据平台,实现跨系统、跨平台的互联、互通和互操作,促成了多源异构数据的集成、交换和共享的闭环自动流动,在全局范围内实现信息全面感知、深度分析、科学决策和精准执行。 |
| 系 统 级 | 系统级 CPS 基于多个单元级CPS 的状态感知、信息交互、实时分析,实现了局部制造资源的自组织、自配置、自决策、自优化。 | 多个最小单元(单元级)通过工业网络(如工业现场总线、工业以太网等),实现更大范围、更宽领域的数据自动流动,实现了多个单元级CPS 的互联、互通和互操作,进一步提高制造资源优化配置的广度、深度和精度。 | |
| SoS级 | 多个系统级CPS 的有机组合构成SoS级CPS。 | SoS级CPS主要实现数据的汇聚,从而对内进行资产的优化和对外形成运营优化服务。 |
2 机器人
机器人分类:如果按照要求的控制方式分类,机器人可分为操作机器人、程序机器人、示教再现机器人、智能机器人和综合机器人。
如果按照应用行业来分,机器人可分为工业机器人、服务机器人和特殊领域机器人。
3 数字孪生技术
(1)概述
从美军军方和各企业的定义后,我们可以得到数字孪生体的定义如下:数字孪生体是现有或将有的物理实体对象的数字模型,通过实测、仿真和数据分析来实时感知、诊断、预测物理实体对象的状态,通过优化和指令来调控物理实体对象的行为,通过相关数字模型间的相互学习来进化自身,同时改进利益相关方在物理实体对象生命周期内的决策。
数字孪生体的三项核心技术:建模、仿真和基于数据融合的数字线程。
能够做到统领建模、仿真和数字线程的系统工程和MBSE,则称为数字孪生体的顶层框架技术。
物联网是数字孪生体的底层伴生技术。
云计算、机器学习、大数据、区块链则称为数字孪生体的外围使能技术。
(2)数字孪生生态系统
| 行业应用层 | 包括智能制造、智慧城市在内的多方面应用 |
| 共性应用层 | 包括描述、诊断、预测、决策四个方面 |
| 模型构建与仿真分析层 | 包括数据建模、数据仿真和控制 |
| 数据互动层 | 包括数据采集、数据传输和数据处理等内容 |
| 基础支撑层 | 由具体的设备组成 |
4大数据技术
4.1大数据处理系统概述
(1)大数据特点
4个V:
大规模 (Volume)
高速度 (Velocity)
多样化 (Variety)
价值密度低 (Value)
真实性 (Veracity) 【可选】
大数据的应用领域:制造业的应用、服务业的应用、交通行业的应用、医疗行业的应用等。
(2)大数据面临的问题
大数据面临着5个主要问题,分别是异构性(Heterogeneity)、规模(Scale)、时间性(Timeliness)、复杂性(Complexity)和隐私性(Privacy)。
(3)大数据分析步骤
大数据分析的分析步骤大致分为5个主要阶段:
数据获取/记录【实时数据+离线数据】
信息抽取/清洗/注记
数据集成/聚集/表现
数据分析/建模
数据解释
4.2 Hadoop 技术生态
| Abarri(安装、部署、配置、管理工具) | |||||
| Zookeeper(分布式调服务) | Oozie(工作流调度系统) | ||||
| Hbase(列式数据库) | Hive(数据仓库工具) | Pig(数据分析) | Mahout(机器学习) | Flume(日志收集) | |
| MapReduce(分布式计算框架) | |||||
| YARN(资源管理组件) | |||||
| HDFS(分布式文件系统) | |||||
4.3 Spark 技术生态

4.4 Lambda架构
(1)Lambda架构介绍
批处理层(Batch Layer):两个核心功能:存储数据集和生成Batch View。加速层(Speed Layer):存储实时视图并处理传入的数据流,以便更新这些视图。服务层(Serving Layer):用于响应用户的查询请求,合并Batch View和Real- time View中的结果数据集到最终的数据集。
(2)Lambda架构优缺点
| 优点 | 缺点 |
| (1) 容错性好。 (2) 查询灵活度高。 (3) 易伸缩。 (4) 易扩展。 | (1) 全场景覆盖带来的编码开销。 (2) 针对具体场景重新离线训练一遍益处不大。 (3) 重新部署和迁移成本很高。 |
4.5 NoSql
NoSql数据库的分类与特点:
| 类型 | 典型产品 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
| 键值对存储数据库 | Memcached、Redis | 缓存、日志等 | key-value/键值对 | 扩展性好,灵活性强,大量操作时性能高 | 数据无结构化 |
| 列式存储 | BigTable、Hbase、Cassandra | 分布式数据存储和管理 | 列簇式存储 | 可扩展性强,查找速度快,复杂度低 | 功能相对局限,不支持事务强一致性 |
| 文档型 | MongoDB、CouchDB | Web应用 | key-value,value为结构化或半结构化数据 | 结构灵活,可以根据value构建索引 | 查询性能不高,缺乏统一语言 |
| 图数据库 | Neo4j、OrientDB | 社交网络、推荐系统、知识图谱等 | 图存储三个字段:节点,关系和属性 | 支持复杂的图形算法 | 复杂度高,只能支持一定数据规模,实现困难 |
NoSql数据库的体系框架:
| 接口层 (Interface) |
| 数据逻辑层 (Data Logical Model) |
| 数据分布层 (Data Distribution Model) |
| 数据持久层 (Data Persistence) |
NoSQL数据库在以下这几种情况比较适用:数据模型比较简单;需要灵活性更强的IT系统;对数据库性能要求较高;不需要高度的数据一致性;对于给定key,比较容易映射复杂值的环境。
4.6Kappa架构
(1)Kappa架构介绍
输入数据直接由实时层的实时数据处理引擎对源源不断的源数据进行处理;再由服务层的服务后端进一步处理以提供上层的业务查询。而中间结果的数据都是需要存储的,这些数据包括历史数据与结果数据,统一存储在存储介质中。
(2)Kappa架构优缺点
| 优点 | 缺点 |
| (1)将实时和离线代码统一起来了。 (2)方便维护而且统一了数据口径。 (3)避免了Lambda架构中与离线数据合并的问题。 | (1)消息中间件缓存的数据量和回溯数据有性能瓶颈。 (2)在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。 (3)Kappa在抛弃了离线数据处理模块的时候,同时抛弃了离线计算更加稳定可靠的特点。 |
(3)Kappa架构与Lambda的对比
| 对比内容 | Lambda架构 | Kappa架构 |
希赛
| 复杂度与开发、维护成本 | 需要维护两套系统(引擎),复杂度高,开发、维护成本高 | 只需要维护一套系统(引擎),复杂度低,开发、维护成本低 |
| 计算开销 | 需要一直运行批处理和实时计算,计算开销大 | 必要时进行全量计算,计算开销相对较小 |
| 实时性 | 满足实时性 | 满足实时性 |
| 历史数据处理能力 | 批式全量处理,吞吐量大,历史数据处理能力强 | 流式全量处理,吞吐量相对较低,历史数据处理能力相对较弱 |
| 使用场景 | 直接支持批处理,更适合对历史数据分析查询的场景,期望尽快得到分析结果,批处理可以更直接高效地满足这些需求。 | 不是 Lambda 的替代架构,而是简化,Kappa 放弃了对批处理的支持,更擅长业务本身为增量数据写入场景的分析需求 |
| 选择依据 | 根据两种架构对比分析,将业务需求、技术要求、系统复杂度、开发维护成本和历史数据处理能力作为选择考虑因素。 计算开销虽然存在一定差别,但是相差不是很大,所以不作为考虑因素。 | |
第十一章 人工智能
1人工智能概述
定义:人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
目标:了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。【图灵测试】
分类:弱人工智能和强人工智能【是否能真正实现推理、思考和解决问题】
关键技术:自然语言处理、计算机视觉、知识图谱、人机交互、虚拟现实/增强现实、机器学习。
| 关键技术 | 描述 | 说明 |
| 自然语言处理NLP | 人与计算机之间用自然语言进行有效通信的各种理论和方法 | 机器翻译、语义理解和问答系统 |
| 计算机视觉Computer Vision | 模仿人类视觉系统的科学,让计算机拥有类似人类提取、处理、理解和分析图像以及图像序列的能力,将图像分析任务分解为便于管理的小块任务。 | 自动驾驶、机器人、智能医疗等领域均需要通过计算机视觉技术从视觉信号中提取并处理信息。近年来随着深度学习的发展,预处理信息。近年来随着深度学习的发展,预处理、特征提取与算法处理渐渐融合,形成端到端的人工智能算法技术。 |
| 知识图谱Knowledge Graph | 本质上是结构化的语义知识库,是一种由节点和边组成的图数据结构,以符号形式描述物理世界中的概念及其相互关系。知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络,提供了从“关系”的角度去分析问题的能力。 | 知识图谱可用于反欺诈、不一致性验证、组团欺诈等对公共安全保障形成威胁的领域,需要用到异常分析、静态分析、动态分析等数据挖掘方法。知识图谱在搜索引擎、可视化展示和精准营销方面有很大的优势,已成为业界的热门工具。 |
| 人机交互HCI | 人机交互主要研究人和计算机之间的信息交换,包括人到计算机和计算机到人的两部分信息交换,是人工智能领域的重要外围技术。人机交互是与认知心理学、人机工程学、多媒体技术、虚拟现实技术等密切相关的综合学科的交叉。 | 传统的人与计算机之间的信息交换主要依靠交互设备进行,主要包括键盘、鼠标、操纵杆、数据服装、眼动跟踪器、位置跟踪器、数据手套、压力笔等输入设备,以及打印机、绘图仪、显示器、头盔式显示器、音箱等输出设备。人机交互技术除了传统的基本交互和图形交互外,还包括语音交互、情感交互、体感交互及脑机交互等技术。 |
| 虚拟现实/增强现实VR/AR | 虚拟现实或增强现实是以计算机为核心的新型视听技术。结合相关科学技术,在一定范围内生成与真实环境在视觉、听觉等方面高度近似的数字化环境。 | 用户借助必要的装备与数字化环境中的对象进行交互,相互影响,获得近似真实环境的感受和体验,通过显示设备、跟踪定位设备、触觉交互设备、数据获取设备、专用芯片等实现。 |
| 机器学习ML | 是一门涉及统计学、系统辨识、逼近理论、神经网络、优化理论、计算机科学、脑科学等诸多领域的交叉学科。其最初的研究动机是为了让计算机系统具有人的学习能力以便实现人工智能。 | 具体来说,机器学习是以数据为基础,通过研究样本数据寻找规律,并根据所得规律对未来数据进行预测。目前,机器学习广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别等领域。 |
| 机器学习分类 首先,按照学习模式的不同,机器学习可分为监督学习、无监督学习、半监督学习、强化学习。其中,监督学习需要提供标注的样本集,无监督学习不需要提供标注的样本集;半监督学习需要提供少量标注的样本,而强化学习需要反馈机制。 按照学习方法的不同,机器学习可分为传统机器学习和深度学习。区别在于,传统机器学习的领域特征需要手动完成,且需要大量领域专业知识;深度学习不需要人工特征提取,但需要大量的训练数据集以及强大的GPU服务器来提供算力。 机器学习的常见算法还包括迁移学习、主动学习和演化学习。 | ||
2 人工智能芯片
人工智能(Artificial Intelligence,AI)芯片的定义:从广义上讲只要能够运行人工智能算法的芯片都叫做AI芯片。但是通常意义上的AI芯片指的是针对人工智能算法做了特殊加速设计的芯片,现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其它机器学习算法。
人工智能芯片四大类(按技术架构分类):
GPU、FPGA(现场可编程门阵列)、ASIC(专用集成电路)、类脑芯片
AI芯片的关键特征:
新型的计算范式:AI计算既不脱离传统计算,也具有新的计算特质
训练和推断:AI系统通常涉及训练和推断过程
大数据处理能力:满足高效能机器学习的数据处理要求
数据精度:降低精度的设计
可重构的能力:针对特定领域而不针对特定应用的设计,可以通过重新配置,适应新的AI算法、架构和任务
开发工具:AI芯片需要软件工具链的支持
3 人工智能的应用场景
(1) 教育行业
| 关键技术 | 应用场景 |
| 自然语言处理 NLP | 语言学习助手、智能辅导、自动作业批改 |
| 计算机视觉 Computer Vision | 课堂行为监控、在线考试监考、AR教学 |
| 知识图谱 Knowledge Graph | 学科知识体系、知识点关系呈现、课程推荐 |
| 人机交互 HCI | 智能白板、语言交互学习系统 |
| 虚拟现实/增强现实 VR/AR | 虚拟实验室、历史场景沉浸式教学 |
| 机器学习 ML | 学习行为预测、个性化学习计划、知识点掌握度分析 |
(2) 医疗行业
| 关键技术 | 应用场景 |
| 自然语言处理 NLP | 医疗问答、智能导诊、病历分析 |
| 计算机视觉 Computer Vision | CT/MRI影像分析、手术辅助、患者监控 |
| 知识图谱 Knowledge Graph | 疾病-基因-药物关系网络构建 |
| 人机交互 HCI | 智能诊断界面、患者自助系统 |
| 虚拟现实/增强现实 VR/AR | 手术模拟、康复训练 |
| 机器学习 ML | 慢性病风险预测、药物分子筛选 |
(3) 政府办公系统
| 关键技术 | 应用场景 |
| 自然语言处理 NLP | 智能政策咨询、信访内容自动分类 |
| 计算机视觉 Computer Vision | 人脸识别安防、档案数字化、城市监控、证件真伪识别 |
| 知识图谱 Knowledge Graph | 跨部门数据关联分析(如企业信用评估) |
| 人机交互 HCI | 智能政务终端、语音交互系统 |
| 虚拟现实/增强现实 VR/AR | 城市规划模拟、应急演练 |
| 机器学习 ML | 舆情风险预警、反欺诈 |
(4) 电商行业
| 关键技术 | 应用场景 |
| 自然语言处理 NLP | 智能客服、评论情感分析 |
| 计算机视觉 Computer Vision | 商品图像识别、物流监控 |
| 知识图谱 Knowledge Graph | 商品属性关系推理(如搭配推荐) |
| 人机交互 HCI | 智能搜索界面、语音购物助手 |
| 虚拟现实/增强现实 VR/AR | 虚拟商店、AR商品展示、虚拟试穿 |
| 机器学习 ML | 销量预测、动态定价 |
(5) 军事系统
| 关键技术 | 应用场景 |
| 自然语言处理 NLP | 语音指挥、多语种情报分析、战报自动生成 |
| 计算机视觉 Computer Vision | 卫星图像目标识别、无人机自主导航、战场感知 |
| 知识图谱 Knowledge Graph | 作战知识库构建(地形/装备/敌情) |
| 人机交互 HCI | 智能指挥界面、语音控制系统 |
| 虚拟现实/增强现实 VR/AR | 作战模拟、战术训练 |
| 机器学习 ML | 战场态势预测、装备故障预判 |
4 相关技术和解决方案
大模型:如基于Transformer的通用语言模型,能解决多任务语言处理问题(DeepSeek、ChatGPT)。用途:对话、翻译、文本生成、代码生成。
提示词:引导模型输出的指令,解决任务定制和输出控制问题。
智能体(AI Agent)平台:自主决策系统,解决自动化任务和复杂决策问题Coze、Dify、FastGPT、Manus。
MCP:MCP(Model Context Protocol,模型上下文协议)多模态处理技术,解决跨模态理解和复杂场景推理问题(CLIP、Flamingo)。
模型微调:是指在预训练大模型(如GPT- 4、Llama等)的基础上,用特定领域或任务的数据进行二次训练,使模型适应新场景的过程。它是迁移学习的核心方法,解决了通用大模型在垂直领域表现不足的问题。
RAG(检索增强生成引擎):结合检索与生成,解决知识更新和领域特定问答问题(RAGFlow)。用途:建立本地知识库,优先用本地知识库解决问题,以解决AI幻觉问题。
第十二章 知识产权与标准化【拓展】
1保护范围与对象
知识产权是权利人依法就下列客体享有的专有的权利:
(一)作品(著作);(二)发明、实用新型、外观设计(专利);(三)商标;(四)地理标志;(五)商业秘密;(六)集成电路布图设计;(七)植物新品种;(八)法律规定的其他客体。
注:知识产权法属于民法范畴
| 法律法规名称 | 保护对象及范围 | 注意事项 |
| 著作权法 | 著作权 文学、绘画、摄影等作品 | 1、不需要申请,作品完成即开始保护 2、绘画或摄影作品原件出售(赠予)著作权还归原作者,原件拥有者有:所有权、展览权 |
| 软件著作权法 计算机软件保护条例 | 软件著作权 软件作品 | 1、不需要申请,作品完成即开始保护 2、登记制度便于举证(中国版权保护中心登记) |
| 专利法 | 专利权 | 1、需要申请,专利权有效期是从申请日开始计算 2、专利申请文件的核心:权利要求书 |
| 商标法 | 商标权 | 1、需要申请,核准之日起商标受保护 2、无特殊含义的行政名不能作为商标注册,比如:湖南 |
| 反不正当竞争法 | 商业秘密权 | 1、商业秘密包括技术与经营两个方面 2、必须有保密措施才能认定商业秘密 |
使用许可:
按照被许可使用权的排他性强弱不同,可以将使用许可分为以下三种:独占使用许可- 仅1个授权对象可用,著作权人不可用排他使用许可- 仅1个授权对象和著作权人可用普通使用许可- 多个授权对象和著作权人可用
2保护期限
| 客体类型 | 权利类型 | 保护期限 |
| 公民作品 | 署名权、修改权、保护作品完整权 | 没有限制 |
| 发表权、使用权和获得报酬权 | 作者终生及其死亡后的50年(第50年的12月31日) | |
| 单位作品 | 发表权、使用权和获得报酬权 | 50年(首次发表后的第50年的12月31日) |
| 公民软件产品 | 署名权、修改权 | 没有限制 |
| 发表权、复制权、发行权、出租权、信息网络传播权、翻译权、使用许可权、获得报酬权、转让权 | 作者终生及其死后50年(第50年的12月31日) | |
| 单位软件产品 | 发表权、复制权、发行权、出租权、信息网络传播权、翻译权、使用许可权、获得报酬权、转让权 | 50年(首次发表后的第50年的12月31日) |
| 权利类型 | 保护期限 |
| 注册商标 | 有效期10年(若注册人死亡或倒闭1年后,未转移则可注销,期满后6个月内必须续注) |
| 发明专利权 | 保护期为20年(从申请日开始) |
| 实用新型和外观设计专利权 | 保护期为10年(从申请日开始) |
| 商业秘密 | 不确定,公开后公众可用 |
3知识产权人确定
| 情况说明 | 判断说明 | 归属 | |
| 专利权 | 职务作品 | 本职工作中做出的发明创造 | 单位享有专利权 |
| 履行本单位交付的本职工作之外的任务所做出的发明创造 | 单位享有专利权 | ||
| 离职、退休或调动工作后1年内,与原单位工作相关的发明创造 | 单位享有专利权 | ||
| 情况说明 | 判断说明 | 归属 | |
| 作品软件 | 委托创作 | 有合同约定,著作权归委托方 | 委托方 |
| 合同中未约定著作权归属 | 创作方 | ||
| 合作开发 | 只进行组织、提供咨询意见、物质条件或者进行其他辅助工作 | 不享有著作权 | |
| 共同创作的 | 共同享有,按人头比例。成果可分割的,可分开申请。 | ||
| 商标 | 谁先申请谁拥有(除知名商标的非法抢注) 同时申请,则根据谁先使用(需提供证据) 无法提供证据,协商归属,无效时使用抽签(但不可不确定) |
| 专利 | 谁先申请谁拥有 同时申请则协商归属,协商不成则同时驳回双方的专利申请 |
4 侵权判断
第二十五条对下列各项,不授予专利权:
(一)科学发现;(二)智力活动的规则和方法;(三)疾病的诊断和治疗方法;(四)动物和植物品种;(五)用原子核变换方法获得的物质;(六)对平面印刷品的图案、色彩或者二者的结合作出的主要起标识作用的设计。对前款第(四)项所列产品的生产方法,可以依照本法规定授予专利权。
适用情景:
中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权。
知识产权具有地域性的特征,按照一国法律获得承认和保护的知识产权,只能在该国发生法律效力,即知识产权受地域限制,只有在一定地域内知识产权才具有独占性(专用性)。
开发软件所用的思想、处理过程、操作方法或者数学概念不受著作权保护。
(注:著作权不保护算法,专利权可以作为著作权的补充,用专利权保护算法。)
著作权法不适用于下列情形:
法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;时事新闻;历法、通用数表、通用表格和公式。
5 标准化
标准的分类:
国际标准:ISO、IEC等国际标准化组织;
国家标准:GB—中国、ANSI—美国、BS—英国、JIS—日本;
区域标准:又称为地区标准,如PASC—太平洋地区标准会议、CEN—欧洲标准委员会、ASAC—亚洲标准咨询委员会、ARSO—非洲地区标准化组织;
行业标准:GJB—中国军用标准、MIT- S—美国军用标准、IEEE—美国电气电子工程师协会;
地方标准:国家的地方一级行政机构制订的标准;
企业标准;
项目规范。
标准代号的识别:
国际、国外标准代号:标准代号+专业类号+顺序号+年代号;
我国国家标准代号:强制性标准代号为GB、推荐性标准代号为GB/T、指导性标准代号为GB/Z、实物标准代号为GSB;
行业标准代号:由汉语拼音大写字母组成(如电子行业为SJ);地方标准代号:由DB加上省级行政区划代码的前两位组成;企业标准代号:由Q加上企业代号组成。