系统架构师上午题知识点
系统架构师
计算机组成与体系结构
计算机系统组成
计算机硬件组成
控制器
- 计算机的指挥中心,负责决定执行程序的顺序,给出执行指令时机器各部分所需要的操作控制命令
- 程序计数器、指令寄存器、指令译码器、时序产生器、操作控制器
运算器
- 最少包括3个寄存器和1个算术逻辑单元
主存储器
- 内存
辅助存储器
- 硬盘
输入设备
- 键盘、鼠标、触摸板等
输出设备
- 显示器、指示灯等
计算机体系结构分类
冯诺依曼
- 指令地址和数据地址在一起
哈佛结构
- 指令地址和数据地址分开
Flynn分类法
- 单指令单数据流 SISD
- 单指令多数据流 SIMD
- 多指令单数据流 MISD
- 多指令多数据流 MIMD
复杂指令集系统与精简指令集系统
CICS复杂指令系统
- 指令数据众多
- 指令使用频率相差悬殊
- 支持多种寻址方式
- 变长指令
- 指令可以对主存储单元中的数据直接处理
- 以微程序控制为主
RICS精简指令系统
- 指令数量少
- 指令寻址方式少,指令格式种类少
- 指令长度固定
- 以硬布线控制逻辑为主
- 单周期指令执行,采用流水线技术
- 优化的编译器
- CPU中通用的寄存器数量多,一般32个多则上千个
总线
- 地址总线
- 数据总线
- 控制总线
存储器系统
主存储器
- RAM随机存储器
- ROM只读存储器
辅存储器
- 硬盘
cache存储器
流水线
流水线周期
- 将流水线分割成N段,最耗时的那一段即为流水线的生命周期
流水线执行时间计算
- 流水线周期T,花费时间最长的步骤
执行100条指令
- 100T+其他步骤的1次时间
流水线吞吐量
- 单位时间内流水线完成的任务量或者数据的结果量
流水线加速比
- 不使用流水线执行时间 / 使用流水线的执行时间
操作系统
操作系统的类型与结构
操作系统的定义
- 管理计算机硬件和软件资源的系统软件,是计算机的内核和基石
操作系统的分类
- 批处理操作系统
- 分时操作系统
- 实时操作系统
- 网络操作系统
- 分布式操作系统
操作系统的基本原理
- 进程管理
- 存储管理
- 设备管理
- 文件管理
- 作业管理
数据库系统
数据库管理系统的类型
数据库的模式与范式
数据库的结构与模式
外模式/用户模式
- 用户与数据库之间的接口,对用户使用数据的表示,类如数据库的表
概念模式
- 概念模式反映了数据库系统的整体观
内模式
- 数据库中全体数据的内部表示或底层描述
数据模型
概念数据模型
- 按照用户的观点对数据和信息进行建模,主要用书数据库设计
基本数据模型
层次模型
- 优点:查询效率高 1:n
- 缺点:对 n:n需要辅助实现,且逻辑复杂
网状模型
- 优点:m:n查询效率高
- 缺点:编写应用程序过于复杂
关系模型
NoSQL
- Not only SQL
关系代数
并
- 相当于SQL中的union,A∪B
交
- 相当于SQL中的intersect,A∩B
差
- 相当于SQL中的except,A-B
投影
- 相当于SQL中的select
笛卡尔乘积
- 等价于SQL中两个表进行笛卡尔积全匹配得到的结果AXB
自然连接
- 相当于SQL语句中的natural join,A⋈B
除
数据的规范化
第一范式
- 属性具有原子性,不可再分
第二范式
- 记录的唯一性,消除非主键依赖
第三范式
- 字段的冗余,消除传递依赖
BCNF
- 鲍尔斯-科得范式
反范式化
- 没有冗余的数据库未必是最好的数据库,增加冗余,以空间换时间
- 增加冗余列
- 增加派生列
- 重新主表
数据库设计
数据库设计方式
直观设计法
- 又称单步逻辑设计法,依赖于设计者的知识、经验和技巧
规范设计法
- 数据库设计规范,把数据设计分为需求分析,概念结构设计,逻辑结构设计和物理设计4个阶段
自动化设计法
数据设计的基本步骤
需求分析
- 收集和分析用户对系统的信息需求和处理需求,需求说明文档
数据字典
- 数据项
- 数据结构
- 数据流
- 数据存储
- 处理过程
概念结构设计
- 对需求说明书提供的所有数据和处理要求进行抽象与综合处理。E-R模型,与DBMS无关
逻辑结构设计
- 将概念数据模型转换成DBMS支持的数据模型,E-R图向关系模型转换
物理结构设计
- 逻辑模型在物理上实现
事物管理
- 并发控制
- 故障与恢复
备份与恢复
- 事物故障
- 系统故障
- 介质故障
- 计算机病毒
分布式数据库系统
分布式数据库的概念
- 分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库
分布式数据的架构
数据仓库
数据仓库的概念
- 主要用于数据分析
数据仓库的步骤
- 抽取
转换
- 切片、切块
- 旋转
- 上卷和下钻
加载
数据仓库的实现方法
- MOLAP
- ROLAP
- HOLAP
数据挖掘
数据挖掘的概念
- 从大量的数据中,挖掘出未知的且具有价值的信息和知识的过程
数据挖掘的功能
数据挖掘的常用技术
- 关联分析
- 序列分析
- 分类
- 预测
- 聚类分析
- 时间序列分析
数据挖掘的流程
- 问题定义
- 建立数据挖掘库
- 调整数据
- 模型化
- 评价和解析
NoSQL
- Not only SQL,泛指非关系型数据库
- 解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题
大数据
- 无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合
计算机网络
网络架构与协议
网络互联模型
OSI/RM模型
- 应用层
- 表示层
- 会话层
- 传输层 - 数据段
- 网络层 - 分组数据包
- 数据链路层 - 数据帧(Frame)
- 物理层 - 比特(bit)
TCP/IP结构模型
- 应用层
- 传输层
- 网络互联层
- 网络接口层
常见的网络协议
应用层协议
- HTTP、FTP、TELNET、SMTP
- DNS、RIP、DHCP
传输层协议
- TCP、UDP
网络层协议
- IP、ARP
IPV6
- 128位,分为8组,每组4位,2001:0DB8:02de:0000:0000:0000:0000:0e13
- 每组的前导0,可以省略。2001:DB8:2de:0:0:0:0:e130:0e13 -> 2001:DB8:2de::e13
局域网与广域网
- 局域网基础知识
- 无线局域网LAN
- 广域网技术WAN
网络接入技术
- PSTN接入
- ISDN接入
- ADSL接入
- FTTx+LAN接入
- 同轴电缆
光纤接入
- 多模光纤
- 单模光纤,大容量长距离
网络互连与常用设备
网络工程
- 网络规划
- 网络设计
- 网络实施
网络存储技术
直连式存储 DAS
- 直接与主机系统相连的存储设备
网络存储设备 NAS
- 采用直接与网络介质相连的特殊设备实现数据存储机制。跨平台的文件共享功能
存储区域网 SAN
- 通过专用高速网将一个或多个网络存储设备(如磁盘阵列RAID)和服务器连接起来的专用存储系统
综合布线
- 工作区
- 配线子系统
- 干线系统
- 建筑群子系统
- 设备间
- 管理
系统性能与评价
性能指标
计算机
- 时钟频率
- 高速缓存
- 运算速度
- 运算精度
- 内存的存储容量
- 存储器的存取周期
- 数据处理速率
- 响应时间
- RASIS特性
- 平均故障响应时间
- 兼容性
网络
- 设备级性能指标
- 网络级性能指标
- 应用级性能指标
- 用户级性能指标
- 吞吐量
操作系统
- 系统的可靠性
- 系统的吞吐量
- 系统的相应时间
- 系统的资源利用率
- 可移植性
数据管理系统
- web服务器
性能计算
性能设计
阿木达尔定律
- 在并行计算中用多处理器的应用加速受限于程序所需的串行时间百分比
负载均衡
性能评估
- web服务器性能评估
基准测试程序
- 把应用程序中用得最多、最频繁的核心程序作为评价计算机性能的标准程序。
系统监视
开发方法
软件的生命周期
- 软件生命周期分为八个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、集成测试、确认测试、使用和维护
软件开发方法
结构化方法SP
介绍
- 结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机结合而成。
- 自顶向下、逐步求精、采用模块化技术和功能抽象将系统按功能分解为若干模块
结构化分析
- 着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型
- 分析当前情况,制作反应当前物理模型的数据流图DFD(dataflow diagram)
- 2.推到出等价的逻辑模型DFD
- 设计新的逻辑系统、生成数据字典和基元描述
- 建立人机接口,提供可供选择的目标系统的物理DFD
- 建立各种方案的成本和风险等级,并据此分析
- 选择一种方案
- 建立完成的需求规约
结构化设计
SD方法步骤
- 评审和细化数据流图
- 确定数据流图的类型
- 数据流图映射到软件模块结构,设计模块结构的上层
- 基于数据流图逐步分析高层模块,设计中下层模块
- 对模块结构进行优化,得到更合理的软件结构
SD方法设计原则
- 每个模块执行一个功能
- 模块使用过程语句或函数方式调用其他模块
- 模块间传送参数作为数据使用
- 4.尽量减少模块间共用信息
缺点
- 开发周期长
- 早期结构化方法注重系统功能,对数据结构兼顾较少
- 结构化程度较低的系统,在开发初期难于锁定功能要求
面向对象方法
Coad/Yourdon方法(Object-Oriented Analysis and Disign)
- Coad/Yourdon的方法是建立在信息模型化、面向对象的程序设计和知识库系统基础之上的。
面向对象的分析(OOA)
- 顶层架构图、用例和用例图、领域概念模型图构成
- 确定类与对象
- 标识结构
- 定义主题
- 定义属性
- 定义服务
面向对象的设计(OOD)
- 设计问题域(细化分析结果)
- 设计人机交互部分(设计用户界面)
- 设计任务管理部分(确定系统资源的分配)
- 设计数据管理部分(确定持久对象的存储)
Booch方法(Object Oriented Design)
- 面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启发性的过程式建议
- 在一定抽象层次上表示类与对象
- 表示类与对象的语义
- 表示类与对象之间的关系(继承、实例化、使用等)
- 实现类与对象
OMT方法-对象建模技术(Object Modeling Technique)
- 4个活动:分析、系统设计、对象设计和实现
OOSE-面向对象的软件工程(Object-Oriented Software Engineering)
- 使用事例驱动的面向对象开发方法。OOSE方法采用5类模型来建立目标系统
需求模型
- 领域对象模型和界面描述支持
分析模型
- 在需求模型基础上建立的,建立在系统生命期中可维护、有逻辑、健壮的结构
设计模型
- 精化分析模型并考虑当前的实现环境
实现模型
- 实现块的代码
测试模型
- 从底层的单元测试延申到高层的系统测试
原型方法
- 明确并完善需求、探索设计选择方案、发展为最终的产品
逆向工程
逆向工程:
- 分析程序,力图在比源代码更高的抽象层次上建立程序的表示过程
实现级
- 程序的抽象语法树、符号表等信息
结构级
- 程序间的关系,调用图、结构图、视图等
功能级
- 功能及程序段之间关系的信息
领域级
- 实体与应用领域概念之间关系
再工程
- 修复和改造工程
软件重构
- 不改变软件的功能和外部可见性的情况下,改善软件的结构,提高软件的清晰性、可拓展性和可重用性
软件开发模型
瀑布模型
- 从一个特定阶段流向下一个阶段
- 适合于需求明确的项目
缺点:
- 上一个阶段的错误会流转到下一个阶段,放大错误
- 难以适应变化
- 结果需要等所有阶段完成后才知道
演化模型
- 演化模型可以看做若干个瀑布模型的迭代
螺旋模型
- 螺旋模型分为四个阶段:需求定义,风险分析,功能实现和评审
- 适合用于庞大而复杂、具有高风险的系统
缺点
- 需要具有想当丰富的风险评估经验和专业知识
- 过多的迭代次数会增加开发成本,延时交付时间
增量模型
适用
- 在系统架构成熟,风险较低的适合,可以用增量的方式进行系统开发。
介绍
- 增量开发模型开发中,每一个版本都是一个完整的版本,版本的时间增量要均匀
原型法
适用
- 用户需求不明确或者技术架构中存在很多不可知因素的适合
介绍
- 每一个迭代都是一个完整的生命周期
构件组装模型
- 适用
介绍
构件的开发过程
- 需求分析和定义
- 体系结构设计
- 构件库建立
- 应用软件构建
- 测试和发布
优点
- 构件让系统的拓展变得更加容易;设计良好的构件容易被重用,降低软件开发成本
缺点
- 对构件的设计需要经验丰富的架构师;考虑软件重用时往往在其他方面做出让步,如性能。
统一过程UP
UP二维模型
- 4个阶段,初始、细化、构建、交付
UP生命周期
- 4个里程碑:目标里程碑、架构里程碑、能力里程碑、发布里程碑
UP的 特点
- UP时一个迭代的二维模型,在生命周期的每一个阶段都可以进行需求、设计等活动
- 可以采用演化模型或者增量模型
- UP的迭代容易控制开发风险
- 虽然UP时一个迭代开发模型,但是本身不属于敏捷开发
- 在实践应用中可以根据具体问题对UP进行裁剪,从而适应各种软件规模和开发团队
- 最核心:用例驱动,以架构为中心,迭代和增量
敏捷开发
极限编程
- 价值观:沟通、简单、反馈、勇气
水晶方法Crystal
- 强调不同的项目,采用不同的策略
Scrum并列争球
- 迭代,30天一个迭代周期,按需求优先级实现
- 产品代办事项列表梳理,Sprint计划会议、每日scrum会议、Srpint评审会议、Sprint回顾会议
功能驱动开发FDD
- 将开发人员分类
软件重用
横向重用
不同应用领域中的软件元素
- 标准函数库
纵向重用
- 共性应用领域间的软部分
基于架构的软件设计ABSD
ABSD(Architecture-Based Software Design)方法
- 强调由商业、质量和功能需求的组合驱动软件架构设计
- ABSD自顶向下、递归细化的软件开发方法,以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架构设计过程中使用软件架构模板
基于架构的软件开发模型
架构需求
- 明确用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
- 需求获取
- 标识构件活动,获得系统基本结构,分组,打包成构件
- 架构需求评审
架构设计
- 迭代的过程,利用架构需求生成并调整架构策略
- 提出架构模型
- 将已标识的构件映射到架构中
- 分析构件之间的相互作用
- 产生系统架构
- 设计评审
架构文档化
- 架构规格说明书
- 测试架构需求的质量设计说明书
架构复审
- 评价架构是否能够满足需求、质量属性需求是否在架构中得以体现,层次是否清晰,构件划分是否合理等。(客户代表和领域专家)
架构实现
- 架构分析和设计
- 构件实现
- 构件组装
- 系统测试
演化
- 解决用户在系统开发过程中发生的需求变更问题
- 架构演化计划
- 构件变动
- 更新构件的相互作用
- 构件的组装与测试和技术评审
形式化方法
- 形式化方法式借助数据的方法来解决软件工程领域问题,主要包括建立精确的数学模型以及对模型的分析活动。
- 基础概念
- 形式化方法与面向对象方的结合
- 工具开发
系统规划
项目的提出与选择
项目的立项目标和动机
- 基础研究并获取技术
- 进行应用研发并获取产品
- 提供技术服务
- 信息技术产品的使用者
项目的选择和确定
- 项目的提出和选择结果
可行性研究和效益分析
可行性研究内容
- 经济可行性
- 技术可行性
- 法律可行性
- 执行可行性
- 方案选择
成本效益分析
- 可行性分析报告
方案的制定和改进
新旧继续的分析和比较
遗留系统的评价方法
- 商业价值评价
- 外部环境评价
- 应用软件评价
遗留系统的演化策略
- 淘汰策略 - 低水平低价值
- 继承策略 - 低水平高价值
- 改造策略 - 高水平高价值
- 集成策略 - 高水平低价值
系统分析与设计方法
定义问题与归结模型
问题分析
- 目标是在开发之前对要解决的问题有一个更透彻的理解
在问题定义上达成共识
- 问题概述
- 问题影响
- 问题结果
- 问题优点
理解问题本质
- 鱼骨图
- 帕累托图分析问题的本质
确定项目干系人和用户
定义系统的边界
- 系统的边界指解决方案系统和现实世界之间的边界
上下文范围图
- 数据流图中的顶层图,反应领域信息模型,能够让读者宏观的了解系统
- 用例模型
确定系统实现的约束
问题定义
目标
- 目标是构建系统的原因,他是最高层的用户需求,是业务上的需要
功能需求
- 指明系统必须要做的事情,只有这些行为的存在,才有系统的存在的价值
非功能需求
- 指观感需求、易用性需求、性能需求、可操作性需求、可维护性和可移植性需求、安全性需求、文化和正常需求、法律需求
需求分析与软件设计
需求分析的任务与过程
问题识别
- 发现需求、描述需求
分析与综合
- 对问题今昔分析,然后在此基础上整合出解决方案
编制需求分析文档
- 需求规格说明书:对已确定的需求进行稳定化描述
需求分析评审
- 对功能的正确性、完整性和清晰性,以及其他需求进行评价
需求获取方法
- 用户访谈
- 用户调查
- 现场观摩
- 阅读历史文档
- 联合讨论会
需求定义
- 严格定义方法
原型方法
- 先实现一个满足用户基本需求的原型,再由用户在开发过程中提出更好的需求,根据用户要求不断对系统进行改进。这里面有迭代的思想
编写软件需求说明书SRS
如何进行系统设计
- 组件的独立性:例外的识别和处理;防错和容错
软件设计的任务与活动
- 概要设计、详细设计
常用的分析方法
面向数据流 - 结构化分析与设计
- 一种面向数据流的需求分析和设计方法,适用于分析和设计大型数据处理系统,是一种简单的方法
结构化分析
- 基本思想是自顶向下逐层分解
结构化设计
- 架构设计
- 接口设计
- 数据设计
- 过程设计
模块设计
- 模块独立化原则
- 信息隐藏原则
面向对象 - 面向对象的分析与设计
面向对象的基本概念
对象和类
- 实体类:映射需求中的每个实体
- 边界类:用于封装用例内、外的信息或数据流
- 控制类:用于控制用例工作的类
继承和范化
- 多态
模板类
- 类属类,用来实现参数多态机制
消息和消息通信
- 消息:向对象发出的服务请求
面向对象分析
介绍
- 面向对象分析的目标是开发一系列模型,这些模型描述计算机软件,当它工作时以满足一组客户定义的需求
OOA/OOD方法
- Booch方法
- OMT方法
- OOSE方法
统一建模语言UML
用例图
- 从用户角度描述了系统的功能,并指出各个功能的执行者
类图
- 用例图抽象成类,描述类的内部结构和类与类之间的关系
- 泛化:继承关系
- 实现:类与接口
- 关联:拥有关系
- 聚合:整体与部分,部分离开整体而单独存在
- 组合:整体与部分,部分不能离开整体
- 依赖
对象图
- 各个对象在交互过程中某一时刻的状态
序列图
- 交互图的一种,对象之间消息发送的先后顺序
协作图
- 交互图的一种,收发消息的对象的组织关系
状态图
- 一种由状态、变迁、事件和活动组成的状态机
活动图
- 状态图的一种特殊情况
构件图
- 系统中构件与构件之间,类或接口与构件之间的关系图
部署图
- 物理设备以及之间的连接关系
面向数据结构 - jackson方法
- 结构化数据系统开发 - DSSD方法
用户界面设计
- 用户界面设计原则
- 用户界面设计过程
工作流设计
工作流设计概念
- 工作流是一类能够完全或者部分自动执行的过程,根据一系列过程规则、文档、信息或任务在不同的执行者之间传递、执行
工作流管理系统 WFMC
- 在工作流形式化表示的驱动下,通过软件的执行而完成工作流定义、管理及执行的系统,其主要目标是对业务过程中各活动发生的先后次序及与活动相关的相应人力或信息资源的调用进行管理,而实现业务过程的自动化
简单分布式计算机应用系统设计
系统运行环境的集成与设计
集中式系统
- 所有的操作都集中于一台主机中,而操作员必须在主机的附近操作,结果也在附近给出
分布式系统
- C/S结构
- 多层结构
系统过渡计划
- 直接过渡
- 并行过渡
- 阶段过渡
软件架构设计
软件架构概述
软件架构的定义
- 软件架构是指一个系统的基础组织,它具体体现在:系统的构件,构件之间、构件与环境之间的关系,以及指导其设计和演化的原则
软件架构的重要性
- 项目关系人之间的交流平台
- 早期设计决策
- 在较高层面实现软件复用
- 架构对开发的指导与规范意义
架构的模型
结构模型
- 这种方法以架构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质
框架模型
- 框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构
动态模型
- 动态模型是对结构或框架模型的补充,研究系统”大颗粒“的行为性质
过程模型
- 过程模型研究构造系统的步骤和过程
功能模型
- 功能模型:架构由一组功能构件按层次组成,且下层向上层提供服务
4+1视图模型
场景视图
- 从用户角度、识别业务需求,描述业务场景,是架构设计的起点和终点
逻辑视图
- 从对象角度,构建对象模型,用以确立逻辑分层、模块划分、模块功能、模块间依赖关系等
开发/实现视图
- 从开发角度,描述软件在开发环境下的静态组织(程序包、应用的统一框架,引用的类库、SDK和中间件等),并规范和约束开发环境的结构
过程/进程视图
- 从进程角度,描述系统的并发和同步设计。旨在解决进程、线程、并发、同步、通信等方面的问题
物理视图
- 从部署的角度,描述软硬件的映射关系,以及系统在分布/部署上的设计
架构需求与软件质量属性
- 软件质量属性
6个质量属性及实现
可用性
- 错误检测:命令/响应;心跳;异常
- 错误恢复:表决;主动冗余
- 错误预防:从服务中删除;事务;进程监视
可修改性
- 局部化修改
- 防止连锁反应;信息隐藏、限制通信路径;仲裁者使用
性能
- 资源需求:控制资源使用
- 资源管理:引入并发,增加可用资源
- 资源仲裁:固定优先级资源调度、动态优化级调度
安全性
- 抵抗攻击:对用户身份验证、对用户进行授权、维护数据的机密性、维护完整性。
- 检测攻击
- 从攻击中恢复
可测试性
- 易用性
软件架构风格
- 软件架构风格分类
数据流风格
批处理风格
- 批处理风格,每一步都是独立的,且每一步都是顺序执行的。例如BAT程序
管道-过滤器风格
- UNIX Sheel程序
调用返回风格
- 主程序-子程序
- 面向对象风格
- 层次结构风格
独立构件风格
进程通信
- 构件是独立的,连接件传递消息
事件驱动
- 构件不直接调用一个过程,而是触发或者广播一个或多个事件驱动
虚拟机风格
解释器
- 通常包括解析工作的解析引擎,一个包含被解析的代码存储区,一个记录解析引擎当前工作状态和数据结构,以及记录源代码被解析执行的进度的数据结构
基于规则
仓库风格
数据库系统
- 重要数据共享,保存当前系统的数据状态
- 多个独立处理元素,处理元素对数据进行操作
超文本系统
黑板风格
- 主要应用与信号处理领域或者松耦合代理数据共享存取
层次系统架构风格
- 二层及三层C/S架构风格
- B/S架构风格
MVC架构风格
Model
- 应用状态和业务功能的封装,可以裂解为同时包含数据和行为的领域模型
View
- 实现可视化界面的呈现,并捕捉最终用户的交互逻辑
Controller
- 完成响应的UI逻辑,设计业务功能的调用,调用对应的Model
面向服务的架构
SOA(Service Oriented Architecture)概述
- 所有的功能都定义成了独立的服务。所有的服务通过服务总线或者流程管理器来连接。SOA是一种架构设计模式
设计原则
- 明确定义的接口
- 模块化
- 3.. 粗粒度
- 松耦合
- 互操作性,兼容和策略声明
SOA关键技术
UDDI
UDDI(Universal Description and Integration)统一描述、发现和集成。
- 注册和查找服务
WSDL
Web服务描述语言
- WSDL是一个XML文档,用于说明一组SOAP消息以及如何交换这些消息
SOAP
简单对象访问协议(http+xml)
- SOAP是Web service的通信协议,用于在网络应用程序之间进行结构化数据交换
REST
- http+json:表示状态转移;是一种用http和xml进行基于web通信的技术,降低开发的复杂性、提供可伸缩性。
SOA的实现方法
- Web Service
- 企业服务总线ESB
- 服务注册表
微服务
- 微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值
架构设计
软件架构文档化
- 记录软件架构的活动,架构编档的过程
软件架构评估
简介
- 对架构分析、评估的技术,对架构策略的选取和决策
架构评估的方法
- 基于调查列表
- 基于场景的方式
- 基于度量的方式
架构的权衡分析法ATAM
3个概念
软件质量属性
- 性能
- 可靠性
- 可用性
- 安全性
- 可修改性
- 敏感点和权衡点
- 风险承担者
步骤
- 描述ATAM方法
- 描述商业动机
- 描述架构体系结构
- 确定架构体系结构方法
- 生成质量属性效用树
分析架构方法
- 确定架构上的有风险决策,无风险决策、敏感点和权衡点
- 集体讨论,确定场景优先级
- 分析架构方法,重复6
- 结果描述
成本效益分析法
构件及复用
商用构件标准化规范
- 三大主流中间件技术平台
- CORBA
- J2EE
- DNA
应用系统簇与构件系统
- 基于复用开发的组织结构
产品线及系统演化
- 复用与产品线
- 基础产品线的架构
- 产品线的开发模型
特定领域的软件架构DSSA
领域分析
- 获得领域模型
领域设计
- 获得DSSA
领域实现
- 依据领域模型和DSSA开发于组织可复用信息
软件及系统的演化
- 需求变动归类
- 2.制定架构演化计划
- 修改、增加或删除构件
- 更新构件的相互作用
- 构件组装与测试
- 技术评审
- 产生演化后的架构
软件架构视图
- 软件视图的分类
- 模块视图类型
- C&S视图及其风格
- 分配视图类及其风格
- 各视图类型间的映射关系
设计模式23种
创建型
工厂方法 Factroy
- 动态生产对象
抽象工厂 Abstract Factory
- 生产成系列对象
构建器/生成器 Builder
- 复杂对象构造
原型模式 Prototype
- 克隆对象
单例模式 Singleton
- 单实例
结构型
适配器 Adapter
- 转换接口
桥接模式 Bridge
- 将抽象部分和它的实现部分分离
组合模式 Composite
- 表示“整体-部分”的层次结构
装饰器 Decorator
- 动态附加职责
外观模式 Facade
- 对外统一接口
享元模式 Flyweight
- 提供大量细粒度对象共享的方式
代理模式 Proxy
- 快捷方式
行为型
责任链 Chain of Responsibility
- 传递职责
命令模式 Command
- 请求封装成对象,日志记录
解释器 Interpreter
- 虚拟机机制,根据文法表示来解释语言中句子
迭代器 Iterator
- 顺序访问一个聚合对象中的各个元素
中介者 Mediator
- 用一个中介对象来封装一系列的对象交互
备忘录Memento
- 在不破坏封装性的前提下,捕获一个对象的内部状态,游戏存档
观察者 Observer
- 当一个对象的状态发生改变,所有依赖它的对象都得到通知并自动更新
状态模式 State
- 允许一个对象在其内部状态改变时改变它的行为
策略模式 Strategy
- 多方案切换
模板方法 Template
- 子类不改变算法结构,即可重新定义
访问者 Visitor
- 数据与操作分离,使得在不改变个元素的类的前提下定义作用于这些元素的新操作
测试评审方法
完全评审
- 对整个项目中的所有测试用例进行评审
有选择性的评审
- 只对部分测试用例进行评审
指标评审法
- 测试用例的评审覆盖率达到多少
嵌入式系统设计
开发管理
项目管理
- 概念阶段
- 开发阶段
- 实施阶段
- 结束阶段
范围管理
创建工作分解结构(WBS)
- 管理层
- 技术层
成本管理
成本估算
- 自顶向下的估算法
- 自底向上的估算法
- 差别估算法
成本预算
- 净值分析
时间管理
- 活动排序
活动历时估算
- 软件项目的工作量
- 德尔菲法
- 类比估算法
- 功能点估算法
关键路径法
- 计划评审技术
- 甘特图和时间网络图
- 进度控制
配置管理
质量管理
风险管理
软件运行与评价
软件过程改进
CMM-软件过程能力成熟模型
初始级
- 软件工程管理制度缺乏,过程缺乏定义、混论无序
可重复级
- 基于类似的项目经验,建立了基本的项目管理制度,采取了一定的资源控制手段
已定义级
- 软件过程文档化、标准化、可按照需求改进开发过程,采用评审方法保证软件质量
已管理级
- 所有过程建立相应的度量方式和明确的度量指标,度量式详尽且可用于理解和控制软件过程的
优化级
- 可根据执行过程的反馈来改善下一步的执行过程,优化执行步骤,指令和效率稳步提升和改进
CMMI-能力成熟模型集成
信息系统的基础知识
基于中间件的开发
中间件是基础软件的一大类,属于可复用软件的范畴。操作系统/网络/数据 -> 中间件 -> 应用程序
RPC-远程调用过程
- 使应用程序中的过程,调用远程应用程序的过程,就像本地调用一样
MOM-面向消息的中间件
- 使分布式应用程序可以通过发送和接收消息来进行通信和交换数据
ORB-对象请求代理
- 使应用程序的对象能够在异类网络之间分布和共享
安全性和保密性设计
信息系统安全体系
安全系统架构
安全服务
- 认证
- 访问控制
- 数据机密性
- 数据完整性
- 不可否认服务
特定的安全机制
- 机密机制
- 数字签名
- 访问控制机制
- 数据完整性
- 认证交换机制
- 流量填充机制
- 路由控制机制
- 公证机制
普遍性的安全机制
- 可信功能度
- 安全标记
- 事件检测
- 安全审计跟踪
- 安全恢复
安全保护等级
- 用户自主保护级
- 系统审计保护级
- 安全标记保护级
- 结构化保护级
- 访问验证保护级
信息安全保障系统
- MIS+S系统
- S-MIS系统
- S2-MIS系统
可信计算机系统
D类
- 最小保护
C类
- 自主保护,自主访问控制和审计跟踪
B类
- 强制安全保护
A类
- 验证设计
数据安全与保密
加密体制
对称加密
- FEAL、IDEA、DES
非对称加密
- RSA
PKI与数字签名
- 数字信封
- PGP
- 数字水印
计算机网络安全
网络安全设计
- 木桶原则
- 整体性安全
- 安全性评价与平衡原则
- 标准化与一致性原则
- 技术与管理相结合原则
- 筹划规划
- 等级性原则
- 动态发展原则
- 易操作性原则
单点登录技术
- 无线设备安全性
防火墙
- 网络级防火墙
- 应用级防火墙
入侵检测
虚拟专用网(VPN)
- 安全隧道技术
- 加解密技术
- 密钥管理技术
- 身份认证技术
- 访问控制技术
电子商务安全
- SSL-传输层安全协议
- SET-安全电子交易协议
安全管理
- 安全策略
安全体系
- 病毒与木马扫描
- 安全扫描
- 日志审计系统
- 安全审计
- 个人信息控制
- 安全管理制度
计算机操作安全
系统备份与恢复
业务持续规划
- 灾难恢复规划
- 业务恢复规划
- 危机管理规划
系统可靠性分析与设计
可靠性定义
- 系统在规定的时间及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率
可靠性指标
- 平均无故障时间(MTTF)
- 平均故障修复时间(MTTR)
- 平均故障间隔时间(MTBF)
- 系统可用性
可靠性计算
串联系统
- R1xR2XR3
并联系统
- 1-(1-R1)(1-R2)
可靠性设计
冗余设计
结构冗余
静态冗余
- 表决和比较来屏蔽系统中出现的错误
动态冗余
- 多模块待机储备,检查到工作模块出问题,就备用模块来顶替
混合冗余
信息冗余
- 除正常功能所需信息外,添加一些信息保证信息完整性
时间冗余
- 重复执行指令或程序
软件容错
恢复块方法
- 一种动态的故障屏蔽技术,采用后向恢复策略
N版本程序设计
- 一种静态的故障屏蔽技术,采用向前恢复测率(表决)
防卫式程序设计
- 程序中包含错误检查代码和错误恢复代码
集群技术
- 两台以上的节点机(服务器)构成的一种松散耦合的计算节点集合
软件知识产权与法律法规
著作权法
计算机软件保护条例
招投标法
专利权
不正当竞争
商标法
标准化知识
国际标准IEC、ISO
国家标准GB
行业标准(NY农业,JC建材)
地方标准
企业标准 Q
应用数学
图论
最小生成树
- 普利姆算法
- 克鲁斯卡尔算法
最短路径
- 关键路径
运筹学
- 线性规划
- 对策论(竞赛论/博弈论)
- 决策论