导图社区 架构师【软考高级】思维导图
关于架构师【软考高级】思维导图,软考架构师高级知识点梳理,包含计算机基础模块、操作系统模块、计算机网络模块等。
编辑于2023-11-09 18:36:18架构师
基础知识
计算机基础模块
第一章:计算机体系结构
计算机硬件组成【了解】
主机(CPU)
运算器
AC
ALU
PSW
控制器
PC
ID
IR
时序部件
存储器
I/O设备
指令系统
概念:机器所具有的全部指令的集合。包含:操作码字段OP、操作数地址码字段Addr
复杂指令系统(CISC)
指令数众多 指令使用频率相差悬殊 支持多种寻址方式 变长的指令 指令可对主存单元中的数据直接进行处理 以微程序控制为主
精简指令系统(RISC)
指令数量少 指令的寻址方式少 指令的长度是固定的,指令格式种类少 以硬布线逻辑控制为主 单周期指令执行,采用流水线技术 优化的编译器 CPU的通用寄存器数量多
流水线技术
流水线周期:执行时间最长的一段
流水线执行时间:(t1+t2+tk)+(n-1) * ▵t
吞吐率:指令条数 / 流水线执行时间 = 1/ ▵t
流水线加速比:不使用流水线的时间 / 使用流水线执行时间
存储系统
层次:寄存器(速度最快,容量最小)⇒Cache⇒主存⇒硬盘(速度最慢,容量最大)
主存:存放程序和数据的
磁盘阵列(RAID)
RAID 0级:无冗余和无校验的数据分块
RAID 1级:磁盘镜像阵列
RAID 2级:采用纠错海明码的磁盘阵列
RAID 3级和RAID 4级:采用奇偶校验码的磁盘阵列
RAID 5级:无独立校验盘的奇偶校验码磁盘阵列
当有N块阵列盘时,用户空间为N-1块盘容量【木桶原理】
RAID 6级:具有独立的数据硬盘与两个独立的分布式校验方案
当有N块阵列盘时,用户空间为N-2块盘容量【木桶原理】
RAID 7级:具有最优化的异步高I/O速率和高数据传输率的磁盘阵列
RAID 10级:高可靠性与高性能的组合
高速缓冲cache
主存地址到cache地址的变换由硬件完成,以提高速度
校验码
循环冗余校验码(CRC)
解题步骤: 1、化解多项式 2、信息码加0做模二运算(不进位加法) 3、得到的余数则为校验码
总线
按位置
内部总线
外部总线
按功能
数据总线
地址总线
控制总线
按数据线的多少
串行总线【系统总线】
并行总线【通信总线】
其他
三重DES采用"加密-解密-加密"的过程,密钥长度是112位,实际是168位
生成消息摘要的目的:防止篡改,对摘要进行加密的目的是:防止抵赖
第二章:系统性能评价
性能评价指标
主频:时钟频率
CPU 时钟周期:一个时钟脉冲所需的时间
机器周期:由若干个时钟周期组成
指令周期:由若干个机器周期组成
例题
2个时钟周期组成一个机器周期,平均3个机器周期可完成1条指令, 则执行一条指令需要2 * 3 = 6个时钟周期
CPI:每条指令执行所用的时钟周期数,IPC的倒数
MIPS:每秒百万条指令的执行速度
指令条数 / (执行时间 * 10的6次方)=主频/CPI=主频 * IPC
系统性能调整
(了解)阿姆达尔解决方案
阿姆达尔定律:采用了特定组件所取得的加速比 = 不使用改进的时间 / 改进后的时间
性能优化
数据应用系统:性能不好的原因(数据库连接方式、系统应用架构、数据库设计、数据库管理、网络通信等)
改进:修改应用模式、建立历史数据库、利用索引技术和分区技术
参数调整:CPU和主存使用情况、数据库设计、进程或线程状态、硬盘剩余空间、日志文件大小。
数据库管理系统评价:主要性能指标有(最大连接数、数据库所允许的索引数量和最大并发数)
WEB应用系统:性能瓶颈有(客户端程序、网关接口、数据库互联等)
改进:改善应用程序的性能、数据库连接、进行流量管理、负载均衡、使用WEB交换机和web缓存
参数调整:系统的可用性、响应时间、并发用户数、特定应用占用的系统资源。
性能评价方法
平价程序
真实程序:评测准确度最高的平均程序是
核心程序:最多、最频繁的那部分【称为基准测试程序】
小型基准程序:代码一般在100行以内,输出用户预知的结果
合成基准程序:认为合成的测试程序
准确度依次递减
计算机评价:主要有时钟频率(主频)、字长、存取周期、数据处理速率、运算精度和内存容量
系统安全与可靠性设计
集中式负载均衡的缺点:可扩展性不强、安全性较差、实现不够灵活。优点:比分布式简单
对摘要进行加密的目的:防止抵赖
其他
第三方认证服务的两种体制分别是kerberos和PKI
操作系统模块
进程管理
基本概念:由程序、数据集合、进程控制块PCB。
线性方式:每次都要扫描全表 链接方式:链接成一个队列 索引方式:同一状态归入一个索引表
运行态 就绪态 阻塞态
前驱图
进程的通信
互斥:多个进程争用领界资源而互斥执行
同步:需要互相合作,协同工作
PV操作
P操作:S=S-1
V操作:S=S+1
范围:初值共享k个设备 -(n个进程 - k台设备)
存储管理
地址的重定位:虚拟地址 变化成 真实地址(物理地址)
存储管理的方案
分区存储管理:是一个连续的区域
分页存储管理:将主存空间分成大小相同的物理块
分段存储管理:按大小进行划分不同的段长
段页式存储管理:由段号、段内页号、页内地址但部分组成
虚拟存储:将外存虚拟成内存,对用户是透明的
文件索引
直接索引:x个地址位 * 数据块大小 = 范围
一级间接索引:(数据块大小)/4B * 数据块大小 = 范围,块号 = 范围 / 数据块大小 + 直接索引的个数
二级间接索引:一级间接索引的块号 + 1 以上的范围
设备管理
中断:CPU与打印机是并行的
DMA技术
缓冲技术(计算题)
画图解题
单缓冲
双缓存
磁盘调度
磁盘调度分为:移臂调度、旋转调度,并且是先进行移臂调度,然后进行移臂调度
先看最近的柱面号,若有想同的再看扇区号的大小,由小到大
文件管理
文件结构:包含逻辑结构、物理结构
索引:
n = 索引块大小1kb / 4字节(4b)
文件存储空间管理(位示图)
总的字号 / 位数 = 位号 - 1 = 编号
计算机网络模块
概述:OSI七层模型
物理层:二进制传输
数据链路层:传输以帧为单位的信息
网络层:分组传输及路由的选择
传输层:端到端连接
会话层:互联主机通信
表示层:数据表示
应用层:处理网络应用
网络协议与标准
应用层协议
FTP协议:基于TCP之上的(21端口传控制信息,20端口传内容信息) TFTP协议:简单文件传输,基于UDP的,69端口
HTTP协议:超文本传输协议,基于TCP的,80端口 HTTPS协议:安全是基于SSL,443端口
DHCP:动态主机配置协议,可能存在多个,用命令:ipconfig/all查看
DNS协议:把域名解析成IP的地址系统(迭代查询【没怎么干活】、递归查询【干了实际的工作】) PTR:将IP映射到域名地址
邮局协议pop3:端口110
SMTP:电子邮件客户发送邮件,端口:25
MIME可发送多媒体数据,与电子邮箱安全无关
IMAP交互式邮件存取协议
传输层协议
TCP:可靠的,面向连接的。缺点:3次握手,增大时间成本,传输数据量少
UDP:不可靠的,面向报文的。优点:大数据量,速度快
网络层协议
IPV4:15个单位60字节,分配的网络数2的n次方,最大主机个数2的m次方-2
IPV6:64kb
两种协议过渡的技术
双协议栈技术:两种技术共存
隧道技术:在IPV4网络中部署隧道
NAT-PT技术:实现两种协议的转换翻译和地址的映射
网络设计
分层设计
接入层:直接面向用户连接,有用户管理功能和收集用户信息功能
汇聚层:完成网络访问控制、数据包处理、过滤、寻址及其他数据处理(需要更高的性能、更少的接口)
核心层:通过高速转发通信,采用双机冗余热备份技术
网络布线(综合布线系统)
工作区子系统:指终端设备连接到信息插座之间的设备组成
水平子系统:将垂直干线子系统与工作区子系统进行连接
管理子系统:安装有线路管理器及各种共用设备
垂直(干线)子系统:由主设备间至各层管理间的连接
设备间子系统:设备间的电缆及相关支撑硬件构成
建筑群子系统:将多个建筑物的数据通信信号连接在一起
交换机:是一种多端口网桥,一个端口就是一个冲突域
其他
IETF的区分服务:是根据IPV4协议头中的服务类型字段加上一个DS码点
路由协议可靠性从低到高255-0,管理距离约小,优先级约高,可信度可靠度越高
SQL注入不是利用TCP/IP发起攻击的
PTR记录是反向记录,通过IP查询域名,即:为该服务创建PTR记录
DHCP:DhcpDecline(已被使用时)、:DhcpOffer(正常工作时)
TLS协议是传输层的
TCP端口号的作用:对应用层进程的寻址
网络冗余设计:避免单点失效、通过并行链路提供流量分担、可以加入负载分担
IPSec为IP数据报文进行加密
查看端口状态、协议建立状态和EIA状态属于:物理层
交换机的初始MAC地址表为空
逻辑网络设计的主要任务是:根据用户需求,描述网络行为和性能
Internet网络核心采用的交换方式:分组交换(又叫:包交换)
数据库模块
数据库的体系结构
三级模式:外模式、概念模式(基本表)、内模式
两级映像:逻辑独立性(外模式与概念模式)、物理独立性(概念模式与内模式)
数据模型
概念数据模型(E-R模型)
基本数据模型(关系模型)
数据的约束条件
实体完整性:主属性不能取空值
参照完整性:外键参照的完整性
用户定义完整性:某一个具体应用所对应的数据必须满足一定的约束条件
关系代数运算
选择 σ (结果是【行】)
投影 π (结果是【列】)
笛卡尔积 R╳S
自然连接 R▷◁S,在等值连接基础之上去掉相同属性列
关系数据库的规范化
函数依赖
平凡的函数依赖:X→Y,Y包含于X 非平凡的函数依赖:X→Y,Y不包含于X
超键、候选键【只在左边出现过的】(没有多余属性的超键)、主键(用户挑出来的候选键)、主属性(任何一个候选键中的候选键)
完全依赖 部分依赖 传递依赖
Armsrong公理
规范化(拆分)
第一范式(1NF):每一个分量不可再分的数据项
第二范式(2NF):必须满足1NF,每个非主属性完全依赖主键
第三范式(3NF):必须满足2NF,消除了非主属性对主键的传递函数依赖
数据库的控制功能
事务管理
原子性:操作(要么全做,要么全不做)
一致性:数据(一个一致性的状态变到另一个一致性的状态)
隔离性:执行(不能被其他事务干扰)
持续性:变化(一旦提交,改变是永久的)
并发控制(针对事务的隔离性)
丢失更新
不可重复读
读脏数据
封锁技术解决
排他性封锁:X
共享型封锁:S
备份
物理备份: 冷备(关闭数据库)和热备(不关闭数据库)
完全备份 增量备份 差异备份
逻辑备份
故障恢复
事务的故障恢复:系统自动完成(扫描日志文件→执行逆操作→查找其他操作)
系统故障的恢复:对未完成的事务和已提交的事务(已提交的(重做),未完成的(撤销))
介质故障与病毒破坏的恢复:(三步:)
具有检查点的恢复技术:
数据库设计
需求分析(数据流图)
自顶向下,逐步分解
概念结构设计(E-R图)
消除冲突: 属性冲突:属性域的冲突、属性值的冲突 结构冲突:抽象不同、属性个数和排列次序不同 命名冲突:同名异义、异名同义(个数和排列相同)
逻辑结构设计(将E-R图转为关系模式)
转换规则: E-R图的实体转换为关系 E-R图的属性转换为关系的属性 E-R图的关键字转换为关系的关键字
复合属性:(比如出生日期) 多值属性:(比如所选课程) 派生属性:其他属性计算得到的 BLOB属性:存的是文件
联系的属性: 1:1的联系(合并) 1:n的联系(合并) n:m和多元的联系(独立成新的关系模式)
物理设计(针对存储结构)
分布式数据库
分布式数据库的体系结构
全局外模式:用户视图
全局概念模式:数据就如同根本没有分布一样
分片模式:分解成几个数据片
分布模式:数据分布在不同的物理位置
局部概念模式
局部内模式
分布式数据库特点
共享性:不同的结点的数据共享
自治性:每个结点对本地数据能独立管理
可用性:某个场地故障时,不至于使整个系统瘫痪
分布性:数据分布在不同场地上存储
分布透明性
分片透明性:只对全局关系进行操作,不必考虑数据的分片
位置透明性:应当知道分片,不必了解分片的存储场地
局部数据模型透明性:应当知道分片,也应当知道存哪里了,但不必了解使用的何种数据模型
noSQL(灵活的(扩展性、数据模型、与云计算结合))
关系型数据库的缺点
不满足高并发读写需求
不满足海量数据的高效率读写
不满足高扩展性和可用性(集群缺点:复杂、有延迟、扩容难)
CAP理论
CA:放弃分区容错,优先保证一致性和可用性
CP:优先保证一致性和分区容错性,放弃可用性
AP:优先保证可用性和分区容错性,放弃一致性
BASE理论
基本可用:允许分区失败的情形
软状态:状态可以有一段时间不同步
最终一致性:最终达到一个一致的状态
与sql数据库的比较
分类
键值数据库(key-value):redis
列族数据库(不能改,只能添加数据):hadoopDB
文档数据库:水平扩展性良好并发性良好
图形数据库:图结构
数据库优化技术(案例题)
集中式数据库(反规范化设计--提升性能)
提高数据的可操作性,存在重复数据浪费空间,存在数据不一致性
增加冗余列:避免连接操作
增加派生列:通过其他数据计算生成,减少查询计算量
重新组表:减少连接提高性能
水平分割表:按记录进行分割
垂直分割表:对表进行分割
保证数据一致性的方法: 1、触发器--有隐患 2、事务机制保证(单体数据库中)--推荐使用 3、应用保证(异构数据库之间) 4、批处理脚本--定时运行脚本
分布式数据库(主从复制)
优点:做数据的热备、架构扩展、读写分离
数据同步方式(binary log)
第一步:主库创建binary log二进制日志,第二步:从库连接主库请求binary log同步并读取binary log日志,第三步:主库将binary log日志内容发送到从库,当从库接收到日志信息后存放到relaylog中,第四步:从库读取relaylog中的日志信息,第五步:从数据库更新事件在存储引擎中执行
binary log三种模式
基于SQL语句的复制(适用量少时、数据有主从不一致)
基于行的复制(主从数据一致)
混合复制
mysql主从同步模式
全同步复制:数据一致、延迟大可用性差
半同步复制:可用性增强了,节约了时间
异步复制:延迟最低可用性强、一致性弱
分布式缓存技术(Redis)
Redis:基于内存的数据库,key-value形式,高性能
Redis数据类型:string、hash、set、list(双向链表【适用:点赞】)、zset(有序集合)、pud/sub(消息队列:发布订阅模式)
读:先度Redis缓存,读取成功直接返回,若Redis中没有key,则根据key查询数据库,读取成功后写入缓存,成功返回。 写:根据key直接写入数据库,成功后更新缓存key值,成功返回
过期策略
惰性删除:设置定时,达到时间就删除
定期删除:随机检查
内存淘汰机制:最近最少使用、最不经常使用、随机淘汰、生存时间淘汰
解决持久化
RDB内存快照:每隔一段时间写入磁盘,文件小、安全低、恢复快、刷新频率低
AOF日志:持续更新命令记录,文件大、安全高、恢复低、刷新频率高
缓存异常问题
恶意攻击
布隆过滤器:它不存在则一定不存在,它说存在则不一定,只能过滤一些数据
缓存雪崩:Redis宕机、key失效
缓存击穿:key设置时间太短
解决故障的万金油回答: 采用cluster集群(主从复制、读写分离) 服务降级、服务熔断、请求限流
主从复制
哨兵集群:监视、选主、通知、自我监控
cluster集群
切片:客户端分片、代理分片、服务器端分片
核心知识
软件工程模块(重点)
概述
传统的软件生命周期分为:软件定义(需求分析)、软件开发(概要设计(系统的总体结构和模块间的关系)、详细设计(模块逐步细化)、编码、测试)、软件运行与为何
软件开发方法分类
按开发风范
自顶向下
将一个大问题划分成多个可以解决的小问题,对最高层次中的问题进行定义、设计和编程
自底向上
从具体的器件、逻辑部件或者相似系统开始(根据经验)
按照性质
形式化
基于严密的、数学上的形式来开发的
净室软件工程:4个特点(使用盒结构规约进行分析和建模、正确性验证排除错误、统计测试、质量控制)
非形式化(各种开发模型)
结构化开发方法
(结构化的思维)组成包含:结构化分析、结构化设计、结构化程序设计
优点: 1、开发目标清晰化 2、开发工作阶段化 3、开发文档规范化 4、设计方法结构化
缺点: 1、开发周期长 2、难以适应需求变化 3、很少考虑数据结构
面向对象开发方法
面向对象分析(OOA)、面向对象的设计(OOD)、面向对象的程序设计(OOP)
Coad/Yourdon方法:强调OOA和OOD采用一致的概念和表示法
Booch方法:静态模型(逻辑模型 和 物理模型)、动态模型
OMT方法:使用建模的思想,采用对象模型、动态模型、功能模型来建立一个实际的应用模型
OOSE:使用用例(use case),取代了DFD
构件化开发方法(解决软件的复杂性)
构件:独立部署单元、作为第三方的组装单元、没有(外部可见)状态
对象:一个实例单元具有卫衣标志、可能具有外部可见的状态、封装了自己的状态和行为
构件的获取:从现有的构件中获取符合要求的构件、通过遗留工程获得、从市场上购买现场的、开发新的符合要求的构件
构件的分类:关键字分类法(分解为树形或有向无回路图结构)、刻面分类法(刻画构件特征的“刻面”)、超文本方法(任意跳转)
构件的复用方法:检索与提取构件、理解与评价构件、修改构件、构件组装
构件的检索方法:基于关键字的检索、刻面检索法、超文本检索法
面向服务的方法(SO)
抽象级别3个:操作(读/写)、服务(一组读写操作)、业务流程(最高层)
是将接口的定义与实现进行解耦,并将跨构件的功能调用暴露出来
原型法(快速原型法)
按功能实现划分
水平原型:用于界面,并未实现功能
垂直原型:用于复杂算法的实现,实现了部分功能
按最终结果划分
抛弃式:解决需求不确定性、二义性、不完整、含糊性等
演化式:逐步演化,用于易于升级和优化的场合
敏捷开发方法
是一种以人为核心、迭代、循序渐进的开发方法(重型方法)
适应性 而非 预设性,重文档,拒绝变化
面向人的 而非 面向过程的
核心思想:适应型、以人为本、迭代增量式开发
主要内容:4个核心价值观(沟通、简单、反馈、勇气),12个最佳实践(计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40个小时、现场客户(XP团队:极限编程)、编码标准)
分类:xp极限编程(测试先行)、Cockburn水晶方法(不同项目,不同策略)、SCRUM并列争求法(迭代,30天)、FDD功用驱动方法(并发人员分类)、开放式源码(虚拟团队)、ASD自适应方法(预测-协作-学习反思)
按照使用范围
整体性方法
局部性方法
软件开发模型
软件活动主要有:软件描述、软件开发、软件有效性验证、软件进化改进
瀑布模型:是结构化方法自顶向下,上一次的开发成果作为本次活动的输入,本次活动的成果输出给下次活动
缺点:需求很难确定、(串行)实现很长时间
流程:计划→需求分析、设计、编码、测试、运维
原型模型:确定用户需求,两个阶段(原型开发方法、完善成目标系统)
注意:用户对系统模糊不清,无法准确回答目标系统的需求 有一定的开发环境和工具支持 对原型的若干次修改,应收敛到目标范围 对大型软件来说不适用原型方法
螺旋模型:适合大型软件项目,每一个圈都是一个原型模型,且有瀑布模型(风险、大型复杂)
喷泉模型:采用面向对象方法,自底向上(无间隙、是迭代的)
分析→设计→实现→维护→演化
基于可重用构件的模型:构件化开发,复用性好
软件需求→标识构件→检索构件库(开发构件→存入构件库)(取出构件、集成目标系统)
RAD快速应用开发:瀑布模型的一个高速变种,但有迭代的思想,且基于构件的开发方法
规划→(设计、实现)→运行
RUP统一过程模型:重型开发模型、开发时间长,采用迭代和增量的方式
是将项目管理、业务建模、分析与设计统一起来
4个顺序阶段:初始阶段、细化阶段、构件阶段、移交阶段
优点
在软件开发的早期就可以对关键的、影响大的风险进行处理
可以提出一个软件体系结构来指导开发
可以更好的处理不可避免的需求变更
可以较早的得到一个可运行的系统,鼓舞开发团队的士气增强项目成功的信心
为开发人员提供一个能更有效工作的开发过程
软件重用与逆向工程
软件重用是指:在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程
横向重用
纵向重用
逆向工程:重构、设计恢复、再工程(修改或重构已有的系统【新版本】)和正向工程(从现有系统中恢复设计信息)
4个抽象层次:实现级别、结构级别、功能级别、领域级别
系统分析
结构化分析(面向数据流)【分解】
功能模型(数据流图DFD)
加工:要有输入输出 有输入没有输出(黑洞) 有输出没有输入(奇迹) 输入不足以产生输出(灰洞) 存储不能直接暴露给外部实体
行为模型(状态转换图STD)
数据模型(E-R图)
面向对象分析
面向对象建模主要使用UML图,实现步骤
1、利用用例及用例图表示需求
2、利用包图及类图表示目标软件系统的总体框架结构
面向对象分析主要由:顶层架构图、用例图与用例图、领域概念模型构成
用例图
组成:参与者(由人、物、其他系统、时钟)、用例(一系列动作、加工)
用例关系
包含关系(include):多个基用例中共用一个独立的子用例
扩展关系(extend):是对基用例的扩展,基用例是一个完整的用例
泛化关系(generalize):是继承发反关系,用于描述父类与子类之间的关系
类图
类图展现了一组对象、接口、协作和它们之间的关系
类之间的关系
关联关系:(实线箭头)它是一种拥有关系
聚合关系:(空心的菱形)它是一种整体与部分的关系,部分与整体的生命周期不同
组合关系:(实心的菱形)它是一种整体与部分的关系,部分与整体的生命周期相同
依赖关系:(虚线实心三角形)它是一种使用关系,谁使用了谁,通过参数传递过来
泛化关系:(实线空心三角形)继承的反关系,描述父类与之类之间的关系
实现关系:(虚线空心三角形)一个或多个类可以实现一个接口,并实现接口中的操作
包图
通过对包中各个包及包之间的关系,可以看做类图的一种
系统设计
系统设计概述(物理设计阶段)
概要设计:又称为系统总体结构设计,形成软件的模块结构图,即系统结构图。将需求转为:数据结构和软件的系统结构
主要使用:模块结构图、层次图、HIPO图
详细设计:对结构图进行细化,得到详细的数据结构与算法。
主要使用:程序流程图、伪代码、盒图
结构化设计
结构化设计的概念与特征(面向数据流)
主要包括:体系结构设计、接口设计(人机界面设计)、数据设计、过程设计
特征:通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性。(信息隐蔽、模块化、高内聚与低耦合)
模块的属性域划分原则
属性
外部特性:模块结构与功能
内部特性:局部数据、程序代码
原则
模块大小要适中
模块的扇入和扇出要合理
模块的深度与宽度要适当
模块要高内聚,低耦合
面向对象设计
设计过程
设计原则
单一职责原则:单一的类
开放-封闭原则:对扩展开放,对修改封闭
里氏替换原则:子类可以替换父类
依赖倒置原则:依赖于抽象,不是具体实践,对接口进行编程
接口隔离原则:使用多个专门的接口比使用单一的总接口好
组合重用原则:尽量使用组合而不是继承达到的重用
迪米特原则:一个对象应当对其他对象尽可能少的了解
设计模式
Factory Method工厂方法模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化
Abstract Factory抽象工厂模式:提供一个创建一系列相关或依赖对象的接口,而无需指定它们具体的类
Builder建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
prototype原型模式:用原型实例指定创建对象的种类,并通过拷贝这个原型来创建新的对象,系统中存在大量相同、相似的对象
Singleton单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点
Adapter适配器模式:将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
bridge桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化
Composite组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构
Decortor装饰模式:动态的给一个对象添加一些额外的职责,就扩展而言Decortor模式比生成子类方式更灵活
Facade外观模式:为子系统中的一组接口提供一个一致的界面
Flyweight pattern享元模式:运用共享技术有效的支持大量细粒度的对象
Proxy pattern代理模式:为其他对象提供一种代理以控制对这个对象的访问
责任链模式:避免请求发送者与接受者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并沿着这条链传递请求,直到有对象处理它为止
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
模板方法:定义一个操作中的算法骨架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可定义该算法的某些特定步骤
命令模式:将一个请求封装成一个对象,从而使得不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作
迭代器模式:提供一个方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部表示
中介者模式:用一个中介对象来封装一系列的对象交互,中介者使用各对象不需要显式的相互引用,从而使得耦合松散,而且可以独立的改变他们之间的交互
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以将该对象恢复到原先保存的状态
观察者模式:定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新
状态模式:对于对象内部的状态,允许其在不同的状态下,拥有不同的行为,对状态单独封装成类
策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换
访问者模式:表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作,即对于某个对象或者一组对象,不同的访问者,产生的结果不同,执行操作也不同。
其他
子主题
系统测试
测试方法
静态测试:被测程序不在机器上运行
文档测试:检查单
代码测试:桌前检查(程序员自己检查)、代码审查(审查小组)、代码走查(审查小组)
动态测试
通过运行程序发现错误
黑盒测试(功能测试【不考虑内部结构】),主要用于集成测试、确认测试和系统测试阶段
主要有:边界值分析、因果图、等价类划分法、正交实验法
白盒测试(结构测试)【单元测试】,常用逻辑覆盖。最强的是路径覆盖,最弱的是语句覆盖
测试类型
单元测试(模块测试),目的是:检查每个模块能否正确的实现设计说明书中的功能、性能、接口
集成测试(检查模块和已集成的软件之间的接口关系)
系统测试:在真实系统工作环境下验证完整的软件配置项能否和系统正确连接
配置项测试:检验软件配置项与SRS的一致性
验收测试:用于验证软件的功能、性能和其他特性是否与用户需求一致
回归测试:测试变更部分的正确性和对变更需求的符合性
系统运行维护
软件维护分类
改正性维护:修改软件错误和缺陷
适应性维护:在使用中,外部环境变化
完善性维护:扩充软件功能、增强软件性能
预防性维护:预先提高软件的可维护性、可靠性
遗留系统(演化策略)
淘汰策略:低水平、低价值,直接替代
继承策略:低水平、高价值,兼容遗留系统的功能后直接替换
改造策略:高水平、高价值,增强功能和数据模型的改造
集成策略:高水平、低价值
信息系统基础知识模块
系统工程
是对系统的结构、要素、信息和反馈等进行分析,以达到最优规划、最优设计、最优管理和最优控制等目的
三维结构:逻辑维(解决问题的逻辑过程)、时间维(工作进程)、知识维(专业科学知识)
信息化概述
信息化需求包括三个层次:战略需求(提升竞争力)、运作需求(人才、运营)、技术需求
信息化的典型应用
从作为管理核心的财务、物料管理,转向技术、物资、人力资源的管理,进而还要扩展到客户关系管理、供应链管理乃至发展到电子商务
企业信息化规划:企业战略规划(机会、威胁、优势、劣势、总体和长远目标)、信息系统战略规划(信息系统、业务目标)、信息技术战略规划(硬件、软件、支撑环境、技术层面)
信息系统战略规划
第一阶段:以数据处理为核心,主要包括(企业系统规划法、关键成功因素法、战略集合转化法)
第二阶段:以企业内部管理信息系统为核心,主要包括(战略数据规划法、信息工程法、战略栅格法)
第三阶段:以集成为核心,主要包括(价值链分析法、战略一致性模型)
信息系统战略规划具体方法
企业系统规划法:针对大型信息系统
关键成功因素法:找到关键信息集合
战略集合转化法:将战略看成一个“信息集合”
战略数据规划法:挖掘数据、信息的规律
信息工程法:以企业内部管理信息系统为核心
战略栅格法:栅格表
价值链分析法:输入、转换与输出的活动序列集合
战略一致性模型:将关系划分为内、外两大部分
ERP系统
(三流)即物流、资金流和信息流
客户关系管理(CRM)【提高收入】:将人力资源、业务流程与专业技术进行有效的整合
CRM以客户为中心,包括:销售自动化、营销自动化、客户服务与支持、商业智能
最大程度的帮助企业实现其经营目标,是开发的主要目标
供应链管理:优化供应链中的(信息流、物流和资金流)
电子政务:政府企(事)业单位及居民
包括:政府对政府、政府对企业、政府对居民、企业对政府、居民对政府
商业智能
数据仓库:是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策
BI系统的四个阶段:预处理、建立数据仓库、数据分析和数据发展
数据仓库、OLAP和数据挖掘技术是BI的三大组成部分
信息系统
概述
定义:处理信息流是核心目的
功能:输入、存储、处理、输出、控制
生命周期:产生(概念产生、需求分析)、开发(总体规划、系统分析、系统设计、系统实施、系统验收)、运行(系统运维)、消亡(归档存储、切换过滤)
开发方法
结构化开发方法
原型开发方法
面向对象方法
面向服务方法
建设原则:高层管理人员介入、用于参与开发、自顶向下规划、工程化、其他原则(发展性、创新性、经济性、整体性)
信息系统类型
业务处理系统TPS(业务过程)
特点:最初级和基础的系统、日常和周期新业务操作、企业级系统的下边界与外边界、变更频率高,业务处理相似度高
功能:数据输入、数据处理、文件和报表产生、查询处理、数据库维护
管理信息系统MIS(辅助管理)
功能:横向(战略计划、管理控制、运行控制、业务执行)、纵向(高层管理、市场 &销售、生产、财务&会计、后勤、人事、信息处理)
决策支持系统DSS
功能:整理和提供数据、收集、存储和提供外部信息、收集和提供活动反馈信息、决策模型存储和管理、运用数学统计学运筹学方法的存储和管理、运用模型和方法进行数据加工、人机对话窗口和图形化加工输出、支持分布式使用
特点:面向决策者为决策者服务、支持半结构化问题决策、辅助和支持决策者、体现决策过程动态性、提倡交互式处理
建模方法:穷举法、算法模型、启发式、模拟仿真
专家系统ES
传统程序 = 数据结构 + 算法 知识系统 = 知识 + 推理
特点:超越时间限制、操作成本低、易于传递和复制、处理手段一致、善于克服难题、适用特定领域
组成:知识库、知识获取、综合数据库、推理机、解释程序、人机接口
办公自动化系统OAS
功能:事务处理、信息管理、辅助决策
企业资源规划ERP
企业资源:物流、资金流、信息流
功能:支持决策、针对性方案
典型信息系统模型
政府信息化与电子政务:政府对政府G2G、政府对居民G2C、居民对政府C2G、政府对企事业单位G2B、企事业单位对政府B2G
企业信息化与电子商务
目的:技术创新、管理创新、制度创新
信息系统架构设计(案例分析与论文)
概念
信息系统架构分类
物理结构:集中式结构、分布式结构
逻辑结构:横向综合、纵向综合、纵横综合
分布式:一般分布式、客户端/服务器
服务器:文件服务器、打印服务器、数据库服务器
成熟型特征:多维度、分层次、可集成、开放式
常见的4种架构模型
单体应用架构:数据存储、数据传输、数据查询、数据展示、数据安全
客户端/服务器架构:二层C/S架构、三层C/S架构或三层B/S架构、MVC架构
面向服务的架构:web服务(技术标准:SOAP、WSDL、XML)
企业数据交换总线:企业服务总线、企业事件总线、企业数据交换总线(技术标准:UDDI、CORBA IIOP)
企业信息系统架构
管理:战略管理、战术管理、运行管理
参考架构:第一层(战略系统)、第二层(业务系统+应用系统)、第三层(信息基础设施)
信息系统架构设计方法
TOGAF ADM方法
思想:模块化架构、内容框架、扩展指南、架构风格
迭代过程
准备阶段
架构愿景、设计(业务架构、信息系统脚骨、技术架构)、机会和解决方案、迁移规划、实施治理、架构变更管理
需求管理
信息化总体架构方法
信息化六要素
开发利用信息资源
建设国家信息网络
推进信息技术应用
发展信息技术和产业
培育信息化人才
制定和完善信息化政策
信息化生产力
信息网络体系
信息产业基础
社会运行环境
效用积累过程
信息化特征:易用性、健壮性、平台化、灵活性、拓展性、安全性、门户化、整合性、移动性
架构模式
数据导向架构:重点在数据中心、关注数据模型和数据质量
流程导向架构:关键方法和技术在SOA、关注端到端流程整合
生命周期:产生、发展、成熟、消亡(更新)
方法论
关键成功因素法CSF:识别关键成功因素、确定系统开发优先次序
战略目标集转化法SST:将整个战略目标视为“信息集合”
企业系统规划法(自上而下)BSP:识别系统目标,分析并设计信息系统
系统架构设计模块(重点)
软件架构基本概念
软件架构:主要关注软件的(构件的结构、属性和交互作用,并通过多种视图来全面描述)非功能性需求
架构设计与生命周期
6个阶段:需求分析、设计阶段、实现阶段、构件组装阶段、部署阶段、后开发阶段
需求分析【用例图】:主要关注(1、如何根据需求模型构建软件架构模型【类图】,2、如何保证模型转换的可追踪性)
设计阶段:主要包括(软件架构模型的描述、软件架构模型的设计与分析方法,以及对软件架构设计经验的总结与复用)
实现阶段:主要包括(1、组织结构配置管理,2、设计语言,3、测试技术)
构件组装阶段:主要包括(1、复用构件的互联,2、组装过程中失配问题(由构件引起的失配、由连接子引起的失配、由系统成分对全局体系结构的假设存在冲突引起的失配))
部署阶段:主要包括(1、硬件模型,2、选择合理的部署方案)
基于架构的软件开发方法
基于体系结构的软件设计ABSD【体系结构驱动】,采用视角与视图来描述软件架构
ABSD是:自顶向下,递归细化的方法
ABSD的三个基础:功能的分解、实现质量和商业需求、软件模板的使用
基于体系结构的开发模型ABSDM
体系结构需求
包括:需求获取、标识构件(生成类图、对类进行分组、把类打包成构件)、需求评审
体系结构设计
包括:提出体系结构模型、映射构件、分析构件相互作用、产生体系结构、设计评审
体系结构文档化
输出结果是:体系结构规格说明和测试体系结构需求的质量设计说明书
体系结构复审
目的:标识出潜在的风险,发现设计中的缺陷和错误,有 用户代表和领域专家参与复审
体系结构实现
包括:复审 后的文档化的体系结构、分析与设计、构件实现、构件组装、系统测试、体系结构演化
体系结构演化
包括:需求变化归档、体系结构演化计划、构件变动、更新构件的相互作用、构件组装与测试、技术评审、演化后的体系结构
软件架构风格
概述
架构风格:描述某一特定应用领域中系统组织方式的惯用模式(既一个体系结构:定义一个词汇表【构件】和一组约束【结构和语义特性】)
经典架构风格(构件与连接件组成)
数据流风格
批处理:数据必须是完整的,比如:日志分析、数据仓库(整体传输、构件粒度大、延迟高实时性差、无并发)
管道过滤:增量、构件粒度小、实时性好、可并发
传统编译器:是批处理 + 管道过滤的风格
调用/返回风格
主程序/子程序:单线程控制,主程序的正确性由子程序决定(如:开发语言)
面向对象:数据与操作被封装起来(类)
层次:每层都为上一层提供服务,修改时不会影响太多层次(如:SaaS层、PaaS层、Iaas层)
独立构件风格
进程通信:消息传递,点对点、异步或同步
事件驱动:不直接调用一个过程,由事件触发,隐式驱动(如:断点调试)
虚拟机风格
解释器:解释执行,执行效率低(如:JVM、自定义灵活的游戏)
基于规则的系统:基于规则库,规则引擎与业务解耦(如:人工只能领域)
需要根据自身状态和外界环境进行动态调整
仓库风格(数据共享风格)
数据库系统:构件控制中央共享数据单元(如:IDE集成开发环境)
黑板:由知识源、黑板和控制三部分,是被动触发的(如:语音识别、信号处理)
超文本系统:由网状链接方式
闭环(过程)控制【是:数据流风格的特殊情况】它运行闭环(如:温度自动控制器、巡航系统)
C2风格(分层风格的特例):构件与连接件都有一个顶部和一个底部,而构件与构件之间不允许直接连接,必须由其中一个的底部到另一个的顶部
C/S结构与B/S结构(分层风格)
二层C/S架构:缺点(服务器负荷太重、数据安全性差)
三层C/S架构:表示层(用户接口)、功能层、数据层。优点(合理划分三层逻辑上相对独立、灵活选择相应的应用和硬件系统、各层可以并行开发、隔离表示层与数据层的访问)
B/S架构:如页游
其他
体系结构风格反映了领域中众多系统所共有的结构和语义特征
中间件的使用是提供特定的功能:会减少开发者软件设计的复杂度,从而提高效率,提高软件可移植性
轻量级架构
概念
基于j2EE,分为三层:表现层(收集用户需求)、业务逻辑层(满足用户功能需求)、持久层(存数据、取数据)
持久层优点:1、屏蔽数据库平台的变化对业务逻辑层的影响,2、对业务逻辑层提供统一的接口,3、代码可重用性高能完成所有的数据库访问操作
SSH
Struts2(前端控制器)+Spring(管理各层的组件)+Hibernate(负责持久化层)
SSM
SpringMVC(前端控制器)+Spring(管理各层的组件)+mybatis(负责持久化层)
H与M的区别
开发方面: hibernate开发中sql语句已经被封装,直接可以使用 mybatis属于半自动,sql需要手工完成
sql优化方面: 对复杂查询的SQL语句进行人工调优时,Mybatis更方便
可移植性方面: hibernate使用时自动生成响应sql语句,具备良好的数据库移植性 Mybatis中要手动编写sql语句,针对不同厂商的数据库时需要进行修改,移植性差
SOA架构
概述
面向服务的架构SOA:针对业务的服务与服务之间的,通过注册表来完成的
设计原则:明确定义的接口、自包含和模块化、粗粒度、松耦合、互操作性
SOA紧密相关的技术:UDDI、WSDL、SOAP等,都以XML为基础
UDDI:提供了一种服务发布、查找定位的方法,是服务的信息注册规范
WSDL:是对服务进行描述的语言,它有一套基于XML的语法定义(重点是服务)
SOAP:定义了服务请求者和服务提供者之间的消息传输规范,用XML来格式化消息
RWST:是一种只使用HTTP和XML进行基于web通信的技术,可降低开发复杂性,提高系统的可伸缩性
实现方式
服务注册表模式:三大块(服务注册中心、提供者、消费者)
企业服务总线模式(ESB):四大块(业务方、业务总线ESB、提供者、消费者)
ESB的作用
是SOA的一种实现方式,起到的是总线作用
描述服务的元数据和服务注册管理
在服务请求者和提供者之间传递数据与转换能力
发现、路由、匹配和选择的能力
微服务架构
概述
微服务是一种架构风格,将单体应用划分成一组小的服务,服务之间进行协作,每个服务独立运行,自动化独立部署
优势
1、通过分解巨大单体式应用为多个服务解决了复杂性问题
2、让每个服务独立开发
3、每个微服务独立部署
4、微服务每个服务独立扩展
挑战
1、并非所有的系统都能转为微服务
2、部署比以往架构更复杂
3、性能问题,可能产生延迟或出错
4、数据一致性问题比传统架构更困难
其他架构模式
MVC
M模型(执行业务流程及存数据)、V视图(展示模型中的数据)、C控制器(把模型接受的事件和用户输入的数据转为模型方法)
优点:
运行多种用户界面的扩展
易于维护
用户界面功能强大
问题点
controller即处理业务又拼接视图
视图依赖过多,又依赖controller,又依赖model,破坏的分层的思想
model既处理业务,又处理后端数据库的访问
MVP
优点
低耦合
更高效的使用模型
复用性好
可测试性好
MVVM
是由MVP进化而来,模式与MVP相同,实现了数据一致性
特定领域的软件架构DSSA
领域分类
垂直域:一个特定的系统族
水平域:多个系统与多个系统族
系统模型
领域开发环境(领域架构师)
特定领域的应用环境(应用工程师)
应用执行环境(操作员)
基本活动
领域分析:获得领域的模型,即:领域的需求
领域设计:获得特定领域软件架构
领域实现:依据领域模型和DSSA开发和组织可重用信息
参与角色:领域专家、领域分析人员、领域设计人员、领域实现人员
架构评估
质量属性(非功能性需求,会相互制约)
性能:处理任务所需的时间
提升性能的策略:资源的需求(减少资源占用、控制资源的使用)、资源管理(并发、增加资源)、资源仲裁(先来先服务、优先级、静态调度)
可用性:正常运行的时间比例
提升可用性的策略:错误检测(心跳、ping、异常)、错误恢复(表决、冗余、内测、检查点/回滚)、错为避免(服务下线、事务、进程监控器)
安全性:阻止非法用户的能力
提升安全性的策略:抵抗攻击(用户验证、授权、完整性、限制暴露、限制访问)、检测攻击(入侵检测系统)、从攻击中恢复(恢复状态、识别攻击者)
可修改性:子特性(可维护性、可扩展性、结构重组、可移植性)
提升可修改性的策略:局部化修改(高内聚低耦合、预测变更、模块通用)、防止连锁反应(信息隐蔽、维持现有接口、限制通信路径、使用中介)、推迟绑定时间(运行时注册、多态、配置文件)
易用性:易于使用,被理解、学习
质量场景
刺激源:谁造成的
刺激:一个响应系统的情况
制品:系统被刺激的部分
环境:刺激发生时,系统处在的状态
响应:刺激产生的结果
响应度量指标:如何评估响应
其他质量特性
敏感点:质量属性,一个或多个构件所共有具有的特定特性【传输协议、处理过程】
权衡点:影响多个质量特性【改变业务数据编码方式】
风险:不以标准术语出现,可能出现一些隐患【部分功能模块的重复】
非风险:某些做法可行的可接受的【业务处理时间小于30毫秒是可以接受的】
架构评估方法
基于调查问卷或检查表的方式
基于场景的方式
架构权衡分析法ATAM(以属性为核心)
主要在系统开发之前:针对性能、可用性、安全性和可修改性等质量属性进行评价和折中
主要包括:需求收集、架构视图描述、属性模型构造和分析、架构决策与折中
以前的
阶段一:需求收集
阶段二:体系结构视图和场景实现
阶段三:属性模型结构和分析
阶段四:折中
现在的
1、描述和介绍阶段
描述ATAM方法
描述业务动机
描述架构确定架构方法
2、调查和分析阶段
确定架构方法
生成质量属性效用树(性能、安全性、可用性、可修改性)
分析架构方法
3、测试阶段
讨论场景和对场景分级
分析架构方法
4、报告阶段
描述评估结果
软件架构分析法SAAM
主要输入:问题描述、需求说明和架构描述
主要包括:场景开发、架构描述、单个场景评估、场景交互和总体评估
成本收益分析方法CBAM
基于度量的方式:如代码行数
其他
JTAG是一个调试接口,用来供开发人员调试CPU的工作状态
软件质量属性
可用性:Ping/echo、
安全性:限制访问
可修改性:运行时注册、接口实现分离、信息隐藏
可靠性:主动冗余
性能:队列调度
可测试性:记录回放
补充内容
系统工程
系统工程学
概述
系统:由交互的元素组织起来的组合,用以实现一个或多个特定的目的,一组综合的元素、子系统或组件,用以完成一个确定的目标
系统元素:硬件、软件、人员、数据等等
系统工程:运用系统方法,的组织管理技术,从整体出发,系统工程核心:分析和设计与其部分截然不同的整体
系统工程方法论
霍尔三维结构:系统化、综合化、最优化、程序化、标准化
时间维7步:规划、拟定方案、研制、生产、安装、运行、更新
逻辑维7阶段:明确问题、确定目标、系统综合、系统分析、优化、决策、实施
知识维n领域:工程、医学、建筑、商业、法律、管理、社会科学、艺术等
切克兰德方法
解决问题:硬科学到软科学,最优化到比较与探索
逻辑维7阶段:认识问题、根底定义、建立概念模型、比较及探寻、选择、设计与实施、评估与反馈
并行工程方法
目的:提高质量、降低成本、缩短产品开发周期和产品上市时间
综合集成方法
钱学森方法:简单系统→简单巨系统→巨系统→复杂巨系统
主要性质:开放性、复杂性、进化和涌现性、层次性、巨量性
主要特点:
1、定性研究与定量研究有机结合,贯穿全过程
2、科学理论与经验知识结合
3、应用系统思想把多种学科结合
4、把宏观研究与微观研究统一起来
5、有大型计算机系统支持,有综合集成的功能
WSR系统方法
物理、事理、人理
7步骤:理解意图、制定目标、调查分析、构造策略、选择方案、协调关系、实现构想
系统工程生命周期
探索性研究阶段、概念阶段、开发阶段、生产阶段、使用阶段、保障阶段、退役阶段
系统工程开发方法
计划驱动开发方法(瀑布模型)
始终遵守规定流程、特别关注文档、特别关注需求、特别关注事后验证
渐进迭代开发方法(逐步迭代)
优缺点:适合需求不清晰、不明确。较小的不太复杂的系统、灵活性高、通过裁剪突出产品开发的核心活动
精益开发方法(以客户为中心)
准时性高、交互最大价值摒弃不合理的需求,动态的知识驱动的
敏捷开发方法
工作:尽早、拥抱变化、持续交付
沟通:一起工作、面对面、产品度量进度
个人:可持续、简洁艺术
团队:自组织团队、定期反思
MBSE基于模型的系统工程
概述
核心思想:采用形式化、图形化、关联化的建模语言及响应的建模工具,改造系统工程的技术过程
三阶段工具
需求分析:需求图、用例图、包图
功能分析与分配:顺序图、活动图、状态图
设计综合:模块定义图、内部块图、参数图
三支柱
建模语言:SysML
建模工具:以建模软件为核心的计算机和网络环境
建模思路:如何利用建模语言研究合适自身的工作流程
系统性能
性能指标
计算机:可扩充性、兼容性、可靠性、可用性、可维护性、完整性、安全性
操作系统:可靠性、可移植性、资源利用率
数据库:
应用系统:资源占用、可用性、响应时间、并发用户数
web服务器:可移植性、可靠性、吞吐率、吞吐量、响应时间、资源利用率
性能计算
计算方法:定义法、公式法、程序检测法、仪器检测法
性能设计
性能瓶颈与调整
阿姆达尔定律(定量原理)
负载均衡
静态算法(随机算法、轮循算法、源地址哈希算法)
动态算法(最少连接数算法、响应时间算法、自适应算法--基于资源的算法)
性能评估
评估方法
时钟频率法
指令执行速度法
等效指令速度法
数据处理速率法
综合理论性能法
基准程序法:依次【准确度高】真实程序、核心程序(最耗时)、小型基准程序(代表性)、合成基准程序(人为合成)、基准测试程序组(通用合集)【准确度低】
web服务器性能评估:基准性能测试、压力测试、可靠性测试
系统监视:压力测试、响应延迟(系统管理命令、系统日志记录、系统管理应用)
层次式架构设计理论与实践(案例五分析)
云原生架构设计理论与实践
云原生架构内涵
技术部分依赖于:基础设施IAAS、平台服务PAAS、软件服务SAAS
代码结构发生巨大变化、非功能性特性大量委托、高度自动化的软件交付
原则
服务化原则:从架构层面抽象化业务模块之间的关系,标准化服务流量的传输
弹性原则:系统的部署规模可以随着业务量的变化而自动伸缩,无需事先规划
可观测原则:主动通过日志、链路跟踪和度量等手段,使得调用链清晰可见
韧性原则:提升软件的平均无故障时间
所有过程自动化原则:通过IAC和大量自动化交付工具在CICD流水线中的实践
零信任原则:以身份为中心进行访问控制
架构模式
服务化架构模式:把代码模块关系和部署关系进行分离,每个接口可以部署不同数量的实例,从而使整体的部署更经济
Mesh化架构模式:是把中间件架构从业务进程中分离,都由Mesh完成进程通信
Serverless架构模式:适合于事件驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务
存储计算分离模式:把各类暂态数据、结构化和非结构化持久数据都采用云服务(mysql、Redis)来保存,从而实现存储计算分离
分布式事务模式:会有数据不一致的问题
传统XA模式:有很强的一致性,但性能差
基于消息的最终一致性:BASE,通常有很高的性能,但通用性有限
TCC模式由应用层来控制事务:入侵性强,设计开发维护成本高
SAGA模式:开发维护成本高
开源项目SEATA的AT模式:无代码开发自动执行滚操作,使用场景有限制
可观测架构:是对服务进行度量,从而优化SLA,因此架构设计需要各个组件定义清晰的SLO,包括并发度、耗时、可用时长、容量等
事件驱动架构:本质上是一种应用/组件的集成架构模式
增强服务韧性
CQRS
数据变化通知
构建开放式接口
事件流处理
反模式
庞大的单体应用:缺乏依赖隔离
单体应用硬拆:微服务服务的拆分需要适度
小规模软件的服务拆分
数据依赖
性能降低
缺乏自动化能力的微服务:发布时间变长、故障处理时间变长
云原生架构相关技术
容器技术
容器技术的背景与价值:Docker容器基于操作系统虚拟化技术,共享操作系统的资源
容器编排:kubernetes是容器编排的事实标准,被广发用于自动部署,应用管理的核心能力:
资源调度
应用部署与管理
自动修复
服务发现与负载均衡
弹性伸缩:k8s可以监测业务上所承担的负载
声明式API
可扩展性架构
可移植性
云原生微服务
将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能
微服务设计约束
微服务个体约束:单一职责原则
微服务与微服务之间的横向关系:可发现性(注册中心)、可交互性、面向失败设计的原则
微服务与数据层之间的纵向约束:数据存储隔离
全局视角下的微服务分布式约束
主要微服务技术:Apache Dubbo、spring Cloud、Eclipse MicroProfile、Tars、SOFAStack、DAPR
无服务技术
特征:全托管的计算服务、通用性、自动弹性伸缩、按量计费
关注点:计算资源弹性调度(白盒)【容错、资源利用率、性能、数据驱动】、负债均衡和流控、安全性
服务网格
实现应用与平台基础设施的解耦,实现应用轻量化
除了Istio外,也有Linkerd、Consul相对小众的ServiceMesh解决方案
案例
未来信息综合技术
信息物理系统
信息物理系统概念:构建了物理空间和信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的复杂系统,实现系统内资源配置和运行的按需响应、快速迭代、动态优化
信息物理系统实现
体系结构:单元级、系统级、SOS级
技术体系:总体技术(顶层设计)、支撑技术(应用支撑)、核心技术(基础技术)
四大核心技术要素:硬件(感知和自动控制)、软件(工业软件)、网络(工业网络)、平台(工业云和智能服务平台)
信息物理系统应用场景:智能设计、智能生产、智能服务、智能应用
人工智能
人工智能概述:通过计算机控制机器模拟、延伸和扩展人的智能。产出一种新的能以人类智能相似的方式做出反应的智能机器
是否能实现推理、思考和解决问题【强人工智能、弱人工智能】
关键技术:自然语言处理、计算机视觉、知识图谱、人机交互、虚拟实现、增强现实、机器学习
机器学习
学习模式:1、监督学习:利用已有标记的有限训练。2、无监督学习:利用无标记的有限训练。3、半监督学习:利用少量有标记和大量无标记训练数据集。4、强化学习:利用随机行为和奖励策略
学习方法:传统机器学习、深度学习
常见算法:迁移学习、主动学习、演化学习
机器人4.0
把云端大脑分布在各个地方,充分利用边缘计算的优势,提供高性价比的服务,实现规模化部署
特别强调机器人除了具有感知能力实现智能协作,还应该具有一定理解和决策能力,进行更自主的服务
云计算和大数据
云计算内涵:平台(基础设施)、应用(可扩展应用程序)
云计算服务方式:软件即服务、平台即服务【最关键、支撑作用、系统软件】、基础设施即服务 部署模式:公有云(公开)、社区云(社区组织)、私有云(单个)、混合云(组合)
大数据特征:大规模、低密度、可变性、多样化、高质量、复杂性、高速度 主要挑战:规模、隐私性、复杂性、异构性、时间性
大数据分析步骤:数据获取和记录、信息抽取和清洗、数据集成聚集和表示、查询处理数据建模和分析、解释
边缘计算
边缘计算概念:云边缘、边缘云、云化网关
边缘计算特点:联接性(基础)、数据第一入口(桥梁)、约束性(多样性场景)、分布性(分布式)
云边端协同:资源协同、数据协同、智能协同、应用管理协同、业务管理协同、服务协同
边缘计算安全:可信的基础设施、可信赖的安全服务、安全的接入和协议转换、可信的网络及覆盖
边缘计算应用场景:智慧园区、安卓云与云游戏、视频监控、工业联网、VR
数字孪生
数字孪生概念定义:将由的物理实体对象的数字模型,通过实测、仿真和数据分析来实时感知
数字孪生关键技术:建模、仿真、其他技术(VR、数字线程、系统工程、物联网、云计算、大数据)
数字孪生应用:制造、产业、城市、战场
通信系统架构设计理论与实践(选择题)
通信系统网络架构
局域网网络架构
拓扑结构:星型、总线型、环型、树型
单核心架构:优点(结构简单接入方便)、缺点(地理范围受限,扩展能力有限,端口密度要求高)
双核心架构:优点(结构可靠接入较为方便)、缺点(投资高,端口密度要求较高)
环型架构:RPR具备自愈保护,节约光纤资源、缺点(投资高,核心端口密度要求较高)
层次型架构:易于扩展,分级排查网络故障便于维护
广域网网络架构
单核心广域网:结构简单,节约。缺点(单点故障扩展能力差、核心端口密度要求较高)
双核心广域网:优点(结构可靠接入较为方便)、缺点(投资高,端口密度要求较高)
环型广域网:接入方便。缺点(投资高,核心端口密度要求较高)
对等子域广域网架构:路由控制灵活。缺点(实施难度比较高)
半/全冗余架构:结构灵活,路由灵活方便扩展可靠性高。缺点(结构零散,不便管理,不便排障)
层次子域广域网架构:易于扩展,控制灵活。缺点(实施难度大)
存储网络架构
直连式存储DAS:单机存储、总线
网络连接的存储NAS:共享存储
存储区域网络SAN:共享存储
软件定义网络SDN:通过对网络设备的控制面与数据面进行分离,包含:控制层、转发层、应用层
网络构建和设计方法
网络需求与设计
网络需求:业务需求、用户需求、应用需求、计算机平台需求和网络需求
设计:接入层、汇入层、核心层
网络需求分析包括:网络总体需求分析、综合布线需求分析、网络可用性与可靠性分析、网络安全性需求分析和工程造价估算
网络安全控制技术
防火墙、虚拟专用网络技术、访问控制技术、网络安全隔离、网络安全协议(SSL、PGP、IPSec、SET、HTTPS)、网络安全审计
绿色网络设计原则:标准化、集成化、虚拟化、智能化
安全架构设计理论与实践
安全模型
状态机模型(安全状态模型):只允许主体以和安全策略相一致的安全方式访问资源
BLP模型(强制访问控制):简单规则(低往高受限)星形规则(高往低受限)强星形规则()自主规则
Biba模型(保密):星完整性规则、简单完整性规则、调用属性规则
CWM模型(职责分离):具有审计能力
Chinese Wall模型(混合策略):主体对客体写入受限
系统安全体系架构规划框架:管理体系、组织体系、技术体系
信息安全整体架构设计
WPDRRC信息安全体系架构模型:6个环节(预警、保护、检测、响应、回复反击),3个要素(人员、策略、技术)
信息安全体系架构设计
系统安全保障体系:由安全服务、协议层次和系统单元
物理安全、系统安全、网络安全、应用安全、安全管理
网络安全体系架构设计
OSI安全体系架构:网络通信(7层)、安全机制、安全服务 3种方式:多点技术防御、分层技术防御、支撑性基础设施
认证框架
访问控制框架
机密性框架
完整性框架(保证数据完整性)
抗抵赖框架
系统架构的脆弱性分析
分层架构:层间脆弱性、层间通信脆弱性
CS架构:客户端脆弱性、网络开放性脆弱性、网络协议脆弱性
BS架构:http容易病毒入侵
事件驱动架构:组件脆弱性、组件间交换数据的脆弱性、组件间逻辑关系的脆弱性、事件驱动容易死循环、高并发脆弱性、固定流程脆弱性
MVC架构:复杂性脆弱性、视图与控制器连接紧密脆弱性、视图对模型低效率访问脆弱性
微内核架构:整体优化脆弱性、进程通信开销脆弱性、通信损失脆弱性
微服务架构:分布式结构复杂性脆弱性、服务间通信脆弱性、服务管理复杂性脆弱性
大数据架构设计
大数据带来的挑战
大数据的特性:数据量大、变化性、数据价值密度相对较低、种类和来源多样化、数据的准确性和可信赖度高、时效性要求高、处理速度快、数据增长速度快
传统数据处理系统问题:工作负载过大、容错性降低、持续变更、
大数据处理系统
面临的挑战:数据复杂性、不确定性
架构特征:鲁棒性和容错性、延展性、低延迟读取和更新能力、即席查询能力、横向扩容、最少为何能力、通用性、可调试性
Lambda架构
简介:用于同时处理离线和实时数据的分布式系统,融合不可变性、读写分离和复杂性隔离,整合离线计算和实时计算
应用场景:机器学习、物联网、流处理
查询的本质:查询时应用于数据集上的函数,几乎囊括了数据库和数据系统的所有领域
三层架构:批处理层(离线处理主数据集)、加速层(联机处理实时增量数据)、服务层(联机处理最终数据集)
优点:容错性好、查询灵活度高、易伸缩、易扩展
缺点:全场景覆盖带来的编码开销、离线训练一遍益处不大、重新部署和迁移成本高
Kappa架构
概念:数据特性(数据产生时间、数据本身),数据存储(简单、应对错误)
二层架构
实时层:处理输入数据,生成实时视图。架构实现:kafka回访数据、flink或spark Stresming处理
服务层:使用实时视图中的结果数据集响应用户请求
优点(离线和实时处理代码统一、方便维护)缺点(消息中间件有性能瓶颈、数据关联时处理开销大、抛弃了离线计算的可靠性)
常见变形:Kappa+(解决存储问题、直接读取数据、实时计算和历史数据)、 混合分析Kappa(解决分析能力不足、利用kafka对接ES实时分析引擎、属于Kappa和lambda的折中方案)
架构对比与应用案例
特性对比
架构设计选择
应用案例
其他知识
嵌入式系统模块
嵌入式微处理体系结构
冯诺依曼体系结构
程序和数据共用一个存储空间(指令和数据在同一个存储器上)
单一的地址及数据总线,总线宽度相同
串行执行,在传输上会有瓶颈
哈弗体系结构
程序和数据采用不同的存储空间
独立的地址及数据总线
并行执行提高速度
嵌入式系统的硬件系统
组成:微处理器是核心,由控制单元、运算器、寄存器组成
1、嵌入式微控制MCU(CPU+片内内存+片内外设),典型代表是单片机,体积小功耗低成本低
2、嵌入式微处理器MPU(CPU)【节约成本和功耗、简化硬件设计】,不适合高并发大型计算机
3、嵌入式数字信号处理器DSP(哈弗结构):以数字信号处理,能大量计算
嵌入式片上系统SOC(system-Chip)【片内可再编辑】
soc是一种技术,到软硬件划分其中包括完整系统,不具有运算能力的处理芯片,将系统关键部件集成在一块芯片上,是面向特定用途的标准产品
多核处理器
全局队列调度:是操作系统委会一个全局的任务等待队列【优点:CPU核心利用率较高】
局部队列度:指操作系统为每个CPU内核维护一个局部的任务等待队列【优缺点:提高CPU核心局部缓存命中率;CPU利用率太低】
嵌入式实时操作系统RTOS【硬实时操作系统--在规定时间内必须完成】【软实时操作系统--按任务优先级完成即可】
调度算法大多数采用:抢占式(可剥夺方式)
嵌入式操作系统EOS的特点:微型化、代码质量高、专业化、实时性强、可裁减和可配置
嵌入式系统设计【低功耗设计】【交叉编译器】:编译优化技术、软硬件系统设计、算法优化
嵌入式系统的软件【硬件抽象层】:实现是通过板级支持包BSP
软件低功耗设计:编译优化技术、硬件协同设计和算法优化
总结:
嵌入式实时性评价指标:中断响应和延迟时间、任务切换时间、信号量混洗时间(任务执行时间:不反应实时性)
嵌入式操作系统不涉及的领域有:办公系统。
NDB需要支持可裁剪性和代码可重用
嵌入式系统中采用中断方式输入输出的主要原因是:能对突发事件做出快速响应(断点信息存入栈中)
知识产权模块
著作权法
作品创作即拥有,不论是否发表,依法享有著作权
不适用:司法性质的文件、官方正式译文
可以全部或部分转让,并依照约定或本法有关规定获得报酬
职务作品:有署名权
谁提供的物质技术条件创作的,谁承担责任的作品,合同约定的都是属于职务作品
受托创作的作品:以合同为准,没有合同就是谁创作的就是谁的著作权
作者的署名权、修改权、保护作品完整权的保护期不受限制
著作权、发表权:保护期为作者终身及其死亡后的50年的12月31日
(无盈利)为个人学习、研究或欣赏时,作品中适当引用,可不经著作权人许可,不支付报酬
计算机保护条例
计算机程序及其有关文档
开发者独立开发,并已固定在某种有形物体上
软件的复制品持有人不知道该软件是侵权复制品,则不承担赔偿责任,但应停止使用,也可向软件著作权人支付合理费用后继续使用
专利权法
同样的发明创造只能授予一项专利权
不授予专利权:智力活动的规则和方法
商标法
谁申请谁获得,谁先使用谁获得,也可抽签决定
商业秘密权
可以对软件的技术信息、经营信息提供保护
运筹学模块
进度网络图问题【先画前驱图】找到时间最长的
线性规划问题【列二元一次方程】
工序问题【窍门:第一道工序时间最短的排在第一位,最后一道工序所需时间最短的放在最后一位,中间的可画图依次带入】
考试技巧
选择题重点
软件工程
软件架构设计
案例分析与论文
真题练习
背
主题
次方
2⁵=32 2⁶=64 2⁷=128 2⁸=256 2⁹=512 2¹⁰=1024
2¹¹=2048 2¹²=4096 2¹⁶=65536
主题
主题
题
计算机基础模块
2个时钟周期组成一个机器周期,平均3个机器周期可完成1条指令, 则执行一条指令需要多少个时钟周期?
主题
主题
每日一练
选择题
子主题
主题
主题