1 计算机硬件(小概率考)
- 计算机的基本硬件系统
- 运算器、控制器(PC->IR->ID->AR)
- 码距、奇偶校验
- CRC 校验
- 指令寻址、指令操作数寻址方式
- 指令集(CISC/RISC)
- 流水线时间计算
- cache替换算法
- cache命中率及平均时间
- 磁盘结构和读取时间
- 磁盘调度算法计算
- 计算机与外设数据交互方式及响应时机
- 总线
2 操作系统知识(3-5分必考)
- 操作系统特征与功能
- 操作系统的分类
- 嵌入式操作系统
2.1 进程管理
- 进程的组成
- 进程三态图
- 前趋图、资源图,进程同步与互斥,信号量问题
- 进程调度算法
- 死锁的必要条件
- 死锁的解决措施
- 死锁资源计算,银行家算法
- 线程
2.2 存储管理
- 分区存储
- 分区方式
- 分页存储
- 逻辑地址与物理地址
- 进制转换
- 分段存储
- 逻辑地址与物理地址
- 段页式存储
2.3 设备管理
- IO软件层次,每一层功能
- 设备管理技术
2.4 文件管理
- 逻辑结构和物理结构
- 索引文件解构
- 文件树目录
- 文件存储空间管理:空闲区表、位示图、空闲块链、成组链接
3 数据库技术基础(5、6分,必考)
3.1 基本概念
3.2 规范化和并发控制
3.3 数据库新技术
- 数据库安全措施和故障
- 分布式数据库
- 数据仓库
- BI
- 反规范化
- SQL
4 嵌入式技术(3-5分,偶尔考拓展)
4.1 嵌入式处理器
- 冯诺依曼结构和哈佛结构
- 微处理器分类(MCU/MPU/DSP/SOC)
- 多核的调度
4.2 嵌入式软件
- 软件分类
- BSP
- 初始化层级
- 设备驱动程序 基本功能
4.3 嵌入式系统
- 组成、特性、分类、分层
- EDBMS 特性、组成
- EOS 特点
- RTOS 特点(及时响应、高可靠性)、特征
4.3.1 嵌入式软件设计
- 开发环境
- 编码、交叉编译、交叉调试
5 计算机网络(3-5分必考拓展)
5.1 IP地址表示
- 类别(ABCDE) 网络号和主机号
- 无分类编址
- 特殊IP地址
- 子网划分
- 超网汇聚
- IPV6
5.2 网络规划与设计
5.3 网络存储技术
- DAS/NAS/SAN
5.4 其它考点
- NAT/默认网关/VLAN
- VPN/PPP
- 冲突域和广播域
- URL
6 其他计算机系统基础知识(几乎不考)
- 系统工程
7 系统配置与性能评价(偶尔1-2分)
7.1 性能指标
- 计算机
- 路由器
- 交换机
- 网络
- 操作系统
- 数据库管理系统
- WEB服务器
7.2 性能评价方法
- 时钟频率
- MIPS
- 等效指令速度法
- 数据处理速率PDR
- 基准程序法(Benchmark)
7.3 阿姆达尔解决方法
- 加速比
- 总加速比
8 信息系统基础知识(3分拓展)
8.1 概述
8.2 开发方法
- 结构化方法
- 原型化方法
- 面向对象方法
- 面向服务方法
- 业务系统层次
8.3 电子政务
- G2G
- G2B
- G2C
- B2G
- C2G
8.4 企业信息化
- 具体目标:优化企业业务活动
- 实现:
- 企业战略层面
- 业务运作层面
- 管理运作层面
- 方法
- 业务流程重构
- 核心业务应用
- 信息系统建设
- 主题数据库
- 资源管理
- 人力资本投资
8.5 信息化战略体系
- 企业战略规划
- 如何实现目标
- SWOT
- 企业信息化战略规划
- 支撑战略
- 信息系统战略规划
- 如何通过信息系统支撑业务
- 信息技术战略规划
- 具体规划,更关注技术
- 硬件、软件、支撑环境
- 信息资源规划
- 系统规划
- 信息系统的生命周期第一阶段
8.6 电子商务
- B2B
- B2C
- C2C
- O2O
9 信息安全基础(2-4分)
9.1 基础知识
- 基本要素
- 机密性:不暴露给未授权实体
- 完整性:得到允许的人才能修改,能够判别是否已篡改
- 可用性:需要时可访问
- 可控性:控制信息流向和行为方式
- 可审查性:信息安全问题提供依据(日志等)
- 范围
- 设备安全
- 数据安全
- 内容安全
- 行为安全
- 存储安全
- 网络安全
- 组成框架
- 基础安全设备
- 计算机网络安全
- 操作系统安全
- 数据库安全
- 终端安全设备
9.2 信息安全技术
- 加密技术
M C K Ke Kd E D - 对称加密技术
- 速度快,用来加密大量数据。
常见算法: ...
- 速度快,用来加密大量数据。
- 非对称加密技术
- 安全性高
常见算法:RSA, Elgamal, ECC ...
- 安全性高
- 数字信封
对对称加密的密钥进行非对称加密,结合两者优点。 - 信息摘要
哈希函数生成,检查是否被修改
常见算法:MD5, SHA-1 - 数字签名
唯一标识发送方
发送时用私钥加密,接收用公钥解密确定身份、 - 公钥基础设施PKI
- 数字证书
- 签证机构CA
- 访问控制
主体、客体、控制策略- 访问控制矩阵ACM
- 访问控制表ACL
- 能力表
- 授权关系表
9.3 抗攻击技术
9.3.1 拒绝服务攻击(DOS)
-
内外部用户都可发动。
-
分布式(DDOS):不受网络资源限制、隐蔽
-
防御方式:
- 加强识别
- 防火墙监视
- 通信统计
- 修漏洞
强化TCP/IP堆栈,修改注册表防御:
- 同步包风暴(SYN Flooding):不进行第三次握手。
- ICMP攻击:死亡之PING不分包
- SNMP攻击:接管网络
9.3.2 ARP欺骗
通过IP请求MAC地址时错误的对象响应映射关系。
- 防御方式:
- 固化ARP表
- 使用ARP服务器
- 双向绑定
- 防护软件
9.3.3 DNS欺骗
冒充域名服务器,把查询的IP地址设为攻击者的IP。
- 检测方式:
- 旁路监听,对应结果不同。
- 虚假报文探测
- 交叉检查
9.3.4 TCP/IP欺骗
- 使被冒充的B暂时瘫痪;
- C多次连接到A的端口来猜测ISN值和规律;
- C伪装源地址为B,发送SYN标志请求连接;
- A向B发送回复握手,无法接收;
- C分析得出正确ISN值,再次伪装并发送连接请求;
- 连接建立;
9.3.5 端口扫描
- 全TCP连接
- 半打开式连接(SYN扫描):只进行前两次握手
- FIN扫描(秘密扫描):发送结束信号量
- 第三方扫描
9.4 保证体系和评估方法
9.4.1 GB17859-999
- 用户自主保护级:自主访问控制
- 系统审计保护级:粒度更细的自主
- 安全标记保护级:强制访问控制
- 结构化保护级:扩展到所有主体和客体,全体范围强制访问控制
- 访问验证保护级:访问监控器
9.4.2 风险评估
- 基本要素:脆弱性、资产、威胁、风险、安全措施
9.4.3 风险计算
- 过程
9.5 网络安全技术
9.5.1 防火墙
隔离内外网的大门。
- 网络级防火墙
- 应用级防火墙
9.5.2 入侵检测系统IDS
- 第二道屏障,监听设备,没有跨接在任何链路上
- 挂接在所关注流量必须流经的链路
9.5.3 入侵防御系统IPS
9.5.4 杀毒软件
9.5.5 蜜罐
9.6 网络攻击和威胁
9.6.1 被动攻击
- 窃听
- 业务流分析
- 非法登录
9.6.2 主动攻击
- 假冒身份
- 抵赖
- 旁路控制
- 重放攻击:截获合法通信数据的拷贝重新发送
- 拒绝服务DOS
9.6.3 网络安全协议的防御
-
物理层:物理隔离
-
数据链路层:链路加密、PPTP、L2TP
-
网络层:防火墙、IPSec
-
传输层:TLS、SET、SSL
-
会话层: ↓ ↓
-
表示层: ↓ ↓
-
应用层:PGP、SET、HTTS
-
SSL:安全套接字协议
-
SSH:安全外壳协议
-
SET:安全电子交易协议
-
Kerberos:网络身份认证协议,和PKI都为第三方认证服务的体制
-
PGP:RSA公钥认证身份,IDEA数据加密,MD5验证完整性
10 软件工程(12-15分,重点)
10.1 概述
10.1.1 软件开发生命周期
- 软件定义时期
- 软件开发时期
- 软件运行和维护
10.1.2 软件系统的文档
- 用户文档
- 系统文档
10.1.3 软件工程过程
- PDCA
10.1.4 软件系统工具
- 开发工具
- 维护工具
- 管理和支持工具
10.1.5 软件设计
- 数据设计
- 架构设计
- 人机界面设计
- 过程设计
10.2 能力成熟度模型CMM
- 初始级
- 可重复级
- 已定义级
- 已管理级
- 优化级
10.3 能力成熟度模型集成CMMI
若干过程模型的综合和改进。
- 阶段式模型
- 初始级
- 已管理级
- 已定义级
- 定量管理
- 优化级
- 连续式模型
10.4 软件过程模型
10.4.1 瀑布模型
- 不回头
- 需求明确
10.4.2 螺旋模型
- 周期性重复的螺旋线
- 强调风险分析
10.4.3 V模型
- 测试贯穿整个项目
- 适用于需求明确,需求变更不频繁的项目
- 编码 - 单元测试
- 详细设计 - 集成测试
- 概要设计 - 系统测试
- 需求分析 - 验收测试
10.4.4 原型化模型
- 创建一个快速模型
- 适用于需求不明确的情况
10.4.5 增量模型
- 分期开发,先开发核心模块
- 难点在于如何分
10.4.6 路边模型
- 喷泉模型:适用于面向对象
- CBSD:预先包装的构件,复用性
- 形式化方法模型:严格数学基础
10.4.7 敏捷模型
- 适应性,面向人,迭代增量
敏捷开发方法
- 极限编程XP:近螺旋式,测试先行
- 水晶系列方法:以人为中心,每个过程都有独特的模式
- 并列争球法Scrum:一次迭代为一个冲刺
- 特性驱动开发FDD:人、过程、技术、
10.4.8 统一过程模型RUP
- 重量级过程
- 核心工作流:
- 业务建模
- 需求
- 分析与设计
- 实现
- 测试
- 部署
- 配置与变更管理
- 项目管理
- 环境
- 生命周期
- 初始
- 细化
- 构造
- 移交
- 特点
- 用例驱动
- 体系结构为中心
- 典型4+1模型:
- 逻辑视图:最终用户,系统的功能
- 实现视图:程序员,
- 进程视图:系统集成人员
- 部署视图:系统工程师
- 用例视图:分析、测试人员,系统的行为
- 迭代与增量
10.5 逆向工程
分析程序,在比源代码更高抽象层次上建立程序表示。
- 实现级
- 结构级
- 功能级
- 领域级
- 重构:同一级别上转换
- 设计恢复:从已有程序中抽象信息
- 再工程:从逆向获得信息基础上产生一个新版本
- 正向工程:使用信息去改变或重构现有系统
10.6 软件需求
10.6.1 过程
- 需求开发
- 需求获取
- 需求分析
- 数据流图
- 数据流的流向必须经过加工
- 三种加工错误:黑洞、奇迹、灰洞
- 分层
- 数据字典DD
- 加工逻辑:结构化语言、判定表、判定树
- 数据流图
- 需求定义
- 严格定义
- 原型方法
- 需求验证(评审)
- 需求基线(评审通过后的规格说明书。此时开发结束,转到需求管理)
- 需求管理
- 变更控制
- 变更请求
- 评估
- 通知结果
- CCB审批
- 执行变更
- 记录变更
- 分发
- 版本控制
- 需求跟踪
- 双向跟踪:需求是否都实现,实现的是否都是需求
- 需求状态跟踪
- 变更控制
10.6.2 分类
- 业务需求:高层次的目标
- 用户需求:用户的具体目标
- 系统需求
- 功能需求:开发人员必须在系统中实现的软件功能
- 非功能需求:软件质量属性,性能、可靠性等
- 设计约束:要求国产、unix等
10.7 流程设计
10.7.1 表示工具
- 程序流程图:顺序、选择、循环结构
- IPO图:输入输出数据加工
- N-S图(盒图):表示嵌套和层次关系,不适合复杂程序
- 问题分析图:结构化程序设计
10.7.2 业务流程重组BPR
根本性思考,彻底性再设计。
基本原则
- 流程为中心
- 团队管理(以人为本)
- 客户为导向
10.7.3 业务流程管理BPM
优化改革。
三个层面:规范流程、优化流程、再造流程
10.8 系统设计
- 设计方法:结构化设计方法、面向对象设计方法。
- 主要内容:
- 概要设计:模块之间如何调用,形成系统结构图
- 详细设计:模块内的设计
- 基本原理和设计原则
- 多扇入(被别人调用),少扇出(调用别人)
10.8.1 内聚和耦合
属于基本原理。
必考。
内聚
- 偶然内聚:无直接关系
- 逻辑内聚:逻辑相似,参数决定功能(如switch case)
- 时间内聚:同时执行的功能组成的模块
- 过程内聚:任务必须按指定过程顺序执行
- 通信内聚:在同一个数据结构上,或者输入输出相同
- 顺序内聚:各个处理元素顺序执行,输入为前一个元素的输出
- 功能内聚:所有元素共同作用
耦合
- 无直接耦合:无直接关系
- 数据耦合:模块间数据传值
- 标记耦合:传递数据结构
- 控制耦合:传递控制变量控制功能
- 外部耦合:通过软件外部环境联合
- 公共耦合:公共数据结构相互作用
- 内容耦合:内部关联
10.8.2 人机界面设计
三大黄金原则:
- 置于用户控制之下(不卡死等)
- 减少用户记忆负担(简洁)
- 保持界面的一致性
10.9 测试
10.9.1 静态测试和动态测试
- 静态测试:人工检测、计算机辅助
- 桌前检查:直接看
- 代码审查:开会,专家review
- 代码走查:程序员肉眼观察思考
- 动态测试:
- 黑盒测试:功能性测试
- 白盒测试:结构性测试
10.9.2 测试阶段
- 单元测试:依据软件详细设计说明书
- 集成测试:依据软件概要设计文档
- 确认测试:依据需求文档
- 内部确认测试
- Alpha测试
- Beta测试
- 验收测试
- 系统测试:在确认测试之前
- 配置项测试
- 回归测试
10.9.3 测试策略
- 自底向上
- 自顶向下
- 三明治
10.9.4 测试用例设计
黑盒测试用例
- 等价类划分:数据分类,每类里面选一个;每次设计新用例时尽可能多覆盖有效等价类,少覆盖无效等价类;
- 边界值划分:取边界值(边界值两端内外)
- 错误推测
- 因果图
10.9.5 白盒测试用例
按照覆盖级别从低到高
- 语句覆盖SC:所有语句执行一遍
- 判定覆盖DC:所有真假分支
- 条件覆盖CC:每一个真假判断里面的每一个独立条件执行一遍真和假(比真假更细)
- 条件判定组合覆盖CDC:同时满足两者
- 路径覆盖:覆盖所有可行路径
10.9.6 调试
蛮力法,回溯法、原因排除法
外部属性一般为性能指标,可直接测量,内部属性如可靠性间接测量
10.9.7 McCabe度量法(常考)
计算有向图的环路复杂度m-n+2。
有向边数m,节点数n。
10.10 系统转换
10.10.1 遗留系统
没法进行改革的系统。
根据业务价值和技术水平:
- 高水平高价值:改造
- 高水平低价值:集成
- 低水平高价值:继承
- 低水平低价值:淘汰
10.10.2 转换方式
- 直接转换:风险大
- 并行转换:并行工作一段时间
- 分段转换:分期分批逐步转换
数据转换:切换前工具迁移、手工录入,切换后通过新系统生成
10.11 系统维护
可维护性:维护人员理解、改正、改动、改进软件的难易程度
1. 易分析性:容易找出原因
2. 易改变性:好不好改
3. 稳定性:改完稳不稳定
4. 易测试性:能不能测试
5. 维护的依从性:不考
- 硬件维护
- 软件维护
- 正确性维护:发现Bug了修改
- 适应性维护:外部发生变化适应
- 完善性维护:用户提出新的需求
- 预防性维护:字面意思
- 数据维护
10.12 净室软件工程CSE
严格按照数学和统计学理论,强调预防。
基于函数理论和抽样理论。
10.13 基于构件的软件工程CBSE
可复用构件;复用而非开发;
接口、实用信息、部署。
- 平台服务:允许分布式环境下通信和操作
- 支持服务:中间件实现
主要活动:
- 系统需求概览
- 识别候选构件
- 根据发现的构件修改需求
- 体系结构设计
- 构件定制与适配
- 组装构件创造系统
特点:- 早期需要完整的需求
- 根据可利用构件修改和细化需求
- 系统结构设计完成后进一步精化构件搜索和设计
- 开发就是将找到的构件组装的过程
10.13.1 构件组装
使用胶水代码整合。
组装方式:
- 顺序组装:按顺序调用
- 层次组装:两个构件之间接口匹配,直接调用
- 叠加组装:多个一起来创造一个新构件
问题:
1. 参数不兼容
2. 操作不兼容
3. 操作不完备
11 面向对象技术(3-5分)
11.1 基本概念
- 对象
- 对象名、属性、方法
- 类
- 对象是类的实例,类是对象的模板
- 实体类、接口类、控制类
- 抽象
- 封装
- 继承
- 多态
- 接口
- 消息
- 覆盖(
@override
) - 函数重载
- 绑定
- 静态绑定:编译时
- 动态绑定:运行时
11.2 面向对象开发
11.2.1 需求分析
11.2.2 需求建模(UML初步)
- 用例模型
- 识别参与者
- 获得用例
- 细化用例描述
- 调整用例模型(非必要)
- 分析模型
- 定义概念类
- 识别类之间关系
- 为类添加职责
- 建立交互图
11.3 面向对象设计
设计分析模型和实现相应源代码。
-
用例模型
- 顶层架构图
- 用例与用例图
- 领域概念模型
-
分析模型
- 软件体系架构图(包图)
- 用例实现图(交互图)
- 完整精确的类图
- 状态图、活动图等
-
设计原则:
- 单一责任:只有一个变化原因
- 开放-封闭原则:实体可扩展,不可修改
- 里氏替换:子类能够替换父类
- 依赖倒置:抽象不依赖于细节,细节依赖于抽象
- 接口分离:不依赖于具体实现
11.4 面向对象测试
- 算法层:测试类中每个方法(单元测试)
- 类层:测试类中所有方法与属性之间的相互作用
- 模板层:一组系统工作的类之间相互作用
- 系统层:子系统组装成完整系统中测试
11.5 统一建模语言UML
构造块(事物、关系、图)、规则、公共机制
11.5.1 事物
- 结构事物:类、接口等
- 行为事物
- 分组事物
- 注释事物
11.5.2 关系
- 依赖:一个事物依赖于另一个变化而变化
- 关联
- 组合:事物之间关系更强,有共同的生命周期(人和大脑)
- 聚合:没有共同声明周期(大雁和雁群)
- 都代表了整体和部分的关系
- 泛化:一般和特殊
- 实现:
记符号:
- 关联关系:实线
- 依赖关系:虚线+实心箭头
- 泛化关系:实线+空心箭头
- 聚合关系:实线+空心菱形
- 组合关系:实线+实心菱形
- 实现关系:虚线+空心箭头
11.5.3 UML2.0图
- 类图:系统的静态设计图,一组对象接口等和它们之间的关系
- 对象图:类图的快照
- 用例图:静态图,展现用例、参与者和之间的关系(扩展、包含、泛化)
- 序列图(顺序图):动态图。时间顺序。同步消息、异步消息、返回消息三种箭头。
- 通信图(协作图):动态图。强调参加交互对象的组织,即消息传递,有编号。
- 状态图:动态图。强调单个对象在多个用例中的行为。实心圆点为起点和终点。
- 活动图:动态图。特殊的状态图。展现从一个活动到另一个活动的流程。牢记并发分岔、并发汇合、监护表达式、分支、流等含义。
- 构件图(组件图):静态图。系统静态实现视图,一组构件之间的组织和依赖。供接口和需接口。
- 部署图:静态图。物理模块的节点分布。
11.5.4 UML 4+1视图
可见 10.4.8 统一过程模型RUP。
- 逻辑视图:设计视图,架构方面。
- 实现视图:程序员,物理代码的文件和构件进行建模。
- 进程视图:系统集成人员,逻辑视图的执行实例,进程的并发和同步。
- 部署视图:系统工程师,软件到硬件物理节点的机构。
- 用例视图:分析、测试人员,系统的行为,最基本的需求分析模型。
11.6 设计模式(论文会用到)
- 架构模式:高层决策,基本设计决策
- 设计模式:不断重复发生的问题以及解决问题的核心。四要素:模式名称、问题、解决方案、效果。
- 惯用法:最底层的模式,关注软件系统的设计与实现,软件语言等
考法:
- XXX属于哪种模式
- 给出定义或者场景,应该用哪种设计模式
- 设计模式的图形(较少)
11.6.1 创建型模式
- 抽象工厂模式
提供一个抽象接口 - 构建器模式
类和构造分离 - 工厂方法模式
子类决定实例化 - 原型模式
拷贝原型 - 单例模式Singleton
一个类只有一个实例
11.6.2 结构型模式
- 适配器模式Adapter
转换,兼容接口 - 桥接模式Bridge
抽象和实现分离 - 组合模式Composite
整体-部分,树形结构 - 装饰模式Decorator
动态附加额外职责 - 外观模式Facade
对外统一接口 - 享元模式Flyweight
细粒度,共享 - 代理模式Proxy
代理控制
11.6.3 行为型模式
- 职责链模式Chain of Responsibility
传递请求、职责、链接 - 命令模式Command
日志记录、可撤销 - 解释器模式Interpreter
虚拟机,自定义文法 - 迭代器模式Iterator
顺序访问,不暴露内部细节 - 中介者模式Mediator
不直接引用 - 备忘录模式Memento
保存&恢复 - 观察者模式Observer
一对多关系、所有依赖会自动更新。(订阅者模式) - 状态模式State
改变状态,行为随之改变 - 策略模式Strategy
算法封装替换 - 模板方法模式Template Method
模板 - 访问者模式Visitor
数据和操作分离
12 项目管理
13 系统架构设计(最重要,20分以上,案例、论文必考)
13.1 软件架构概述
- 需求分析到软件设计之间的过渡过程
- 软件架构就是需求分配
- 为软件系统提供了一个结构、行为、属性的高级抽象,
- 制定了系统的组织结构和拓扑结构,显示了系统需求和构件之间的对应关系
- 根本目的:软件级别的复用
- 过程:提出架构模型,产生架构设计,进行设计评审
- 便于技术和非技术人员就软件设计进行交互
- 进行交流的手段
- 简化
- 可传递、可复用,预测软件的质量
13.2 软件架构设计与生命周期
- 需求分析阶段
- 设计阶段
- 实现阶段
- 构件组装阶段
- 部署阶段
- 后开发阶段
13.3 构件
-
独立可交付的功能单元
-
原子构件组成大构件
-
模块:不带单独资源的原子构件
-
对象:一个实例单元
-
对象->模块->构件->服务
-
接口标准化
-
COP
13.3.1 构件标准
- EJB
- 会话Bean
- 实体Bean
- 消息驱动Bean
- COM
- CORBA
- 对象请求代理ORB:分布对象中的软总线
- 公共对象服务
- 公共设施:定义了组件框架
13.4 软件架构风格
定义要考。
- 描述某一特定应用领域中系统组织方式的惯用模式
- 包含一个架构定义、一个词汇表和一组约束。词汇表包含构件和连接件类型。约束指出系统如何将构件和连接件组合。
- 架构风格反映了领域中众多系统所共有的结构和语义特性
- 核心问题:能否达到架构级的软件复用
- 风格定义了用于描述系统的术语表和一组指导构建系统的规则
理解
13.4.1 五大类
- 数据流风格
- 批处理、管道-过滤器
- 调用/返回风格
- 主程序/子程序:主子程序为构件,过程调用为连接件
- 面向对象:对象为构件,对象间交互方式为连接件
- 层次结构:构件组成层次结构,连接件为层间交互协议
- 独立构件风格
- 进程通信:独立的进程为构件,消息传递为连接件
- 事件驱动(隐式调用):匿名的过程为构件,过程间的隐式调用为连接件
- 虚拟机风格
- 解释器
- 规则系统
- 仓库风格
- 数据库系统
- 黑板系统
- 超文本系统
- 闭环控制
- C2
13.5 层次架构风格(案例分析较多)
- 两层C/S
- 表示层 - 数据层
- 三层C/S
- 表示层 - 功能层 - 数据层
- 三层B/S
- RIA
- 小程序,快应用
- 结合了BS和CS的优点
- MVC
- View - Controller - Model
- MVP
- View - Presenter - Model
- MVVM
- View - ViewModel - Model
- SOA
- ESB
- 实现IT资产重用的最大化
- 特征
- 关键技术
- 发现服务:UDDI、DISCO
- 描述服务:WSDL、XML Schema
- 消息格式层:SOAP、REST
- 编码格式层:XML
- 传输协议层:HTTP、TCP/IP、SMTP等
- 实现方式:Web Service、服务注册表、ESB
13.6 软件架构复用
- 软件产品线
- 机会复用、系统复用
13.7 特定领域软件架构DSSA
- 特定领域软件构件的集合
- 支持一个领域多个应用的生成
- 垂直域、水平域
13.7.1 DSSA的基本活动(常考)
- 领域分析:识别信息源,建立领域模型
- 领域设计:获得DSSA
- 领域实现:开发和组织可重用信息
13.7.2 角色人员(常考)
- 领域专家:有经验的技术和业务专家
- 领域分析人员:系统分析员
- 领域设计人员:软件设计人员
- 领域实现人员:程序设计人员
13.7.3 建立DSSA过程
- 定义领域范围
- 定义领域特定的元素
- 定于领域特定的设计和实现需求的约束
- 定义领域模型和架构
- 产生、搜集可复用的产品单元
13.7.4 三层次模型
- 领域开发环境
- 领域特定的应用开发环境
- 应用执行环境
13.8 基于架构的软件开发ABSD(考六个过程)
- 架构驱动,由业务、质量和功能需求组合驱动
- 视角和视图描述软件架构
- 用例和质量属性场景描述需求
- 设计活动从项目总体框架明确就开始
- 三个基础
- 递归
13.8.1 基于架构的软件开发过程
- 体系结构需求
- 标识构件的三步:生成类图、分组类、类打包成构件
- 体系结构设计
- 标识构件映射成构件,产生架构
- 体系结构文档化
- 架构(体系结构)规格说明
- 测试架构(体系结构)需求的质量设计说明书
- 体系结构复审
- 外部人员进行复审
- 体系结构实现
- 实现构件,构件组装成系统
- 体系结构演化
- 按需求增删构件,使架构可复用
13.9 软件系统的质量属性
- 开发期质量属性
- 运行期质量属性
13.10 软件架构评估
13.10.1 质量属性(重要,10+送分,背)
- 性能
- 定义:系统的响应能力
- 指标:响应时间、吞吐量
- 设计策略:优先级队列、增加计算资源、减少资源开销、引入并发机制、采用资源调度
- 可靠性
- 出错时维持软件系统功能特性的能力
- MTTF、MTBF、MTTR(平均无故障时间、平均故障间隔时间、平均故障修复时间)
- 心跳、Ping/Echo、冗余、选举
- 可用性
- 系统能够正常运行的时间比例
- 与可靠性相同
- 与可靠性相同
- 安全性
- 向合法用户提供服务同时阻止非授权用户使用的企图或拒绝服务的能力。
- 保密性、完整性、不可抵赖性、可控性
- 入侵检测、用户认证、用户授权、追踪审计
- 可修改性
- 较高性价比变更系统
- 无
- 接口-实现分类、抽象、信息隐藏(各种结构设计原则)
- 功能性
- 完成所期望工作的能力
- 可变性
- 体系结构经扩充或变更成为新体系结构的能力
- 互操作性
- 系统组成部分的软件不独立存在,经常与其他系统或自身环境相互作用
- 精心设计的软件入口
13.10.2 质量属性场景
- 面向特定质量属性的需求
- 刺激源:用户、开发等
- 刺激:增删改...
- 环境:设计时、编译时、构件时、运行时
- 制品:操作的对象,界面、平台、系统...
- 响应:修改、动作
- 响应度量:修改是否成功,成本,对其他部分的影响...
13.10.3 软件架构评估
- 敏感点:某一种特定的质量属性
- 权衡点:多个质量属性的敏感点
- 风险点、非风险点
- 评估在架构设计之后,系统设计之前
- 目的是为了评估所采用的架构能否解决软件系统需求 And More。
评估方式
- 基于调查问卷(检查表)
- 基于度量:定量的指标
- 基于场景
- 确定功能
- 设计对应场景:刺激、环境、响应
- 分析软件架构对于场景的支持程度
基于场景的架构评估方法SAAM
架构权衡分析法ATAM
- 让架构师(评估小组、项目决策者、其他项目相关人)明确如何权衡多个质量目标
- 四个主要的活动领域
- 场景和需求收集
- 体系结构视图和场景实现
- 属性模型构造和分析
- 架构决策与折中
- 以质量属性为核心概念,重点关注性能、可用性、安全性、可修改性
- 描述和介绍阶段
- 描述ATAM方法
- 描述业务动机
- 描述架构
- 调查和分析阶段
- 确定架构方法
- 生成质量属性效用树
- 分析架构方法
- 测试阶段
- 讨论场景和对场景分级
- 分析架构方法
- 报告阶段
- 描述评估结果
成本效应分析法CBAM
其他方法
SAEM SAABNet SACMM SASAM ALRRA AHP COSMIC+UML
13.11 中间件
- 分布式系统环境中,操作系统和应用程序之间的软件
- 突出特点:网络通信功能
13.11.1 典型中间件
- 数据库访问中间件:JDBC
- 远程过程调用RPC:
- 面向消息中间件MOM:IBM的MQSeries
- 分布式对象中间件:COBRA,EJB,DCOM
- 事务中间件,事务处理监控器(TPM),完成负载均衡、失效恢复等
13.11.2 典型架构
J2EE
- 客户层
- Web层
JSP Servlet - 业务层
EJB - 信息系统层
数据库
- JSP+Servlet+JavaBean+DAO
- 轻量级框架、重量级框架
14 软件可靠性基础
15 软件架构演化维护
16 未来信息综合技术
17 知识产权
- 普通作品
- 软件产品
- 商标
- 专利
- 商业秘密
18 数学与经济管理
18.1 最小生成树
n个节点用n-1条边联通,同时不生成环路。
解法:一次找出最短的边连起来。
可能连法不唯一。
18.2 最短路径
A-F最短路径=A-B+B-F||.......||A-E+E-F||A-F
18.3 网络与最大流量
运输能力由短板决定。
并发运输,可以同时走多条路,后面流量需要相应减少
18.4 线性规划
- 约束条件下寻找极值
- 数学模型通常由线性目标函数、线性约束条件、变量非负条件组成
- 最优解0、1、无穷个
18.5 动态规划
- 穷举
18.6 伏格尔法
- 先选最优,不行选次优
- 得出每一行和列最小和次小的差值
- 选出最大差值,该行/列用最优,差值相同的看具体值,具体值还相同就任取
- 供应/需求完成的行/列划掉
- 重复1-4
18.7 博弈论
18.8 状态转移矩阵
18.9 排队论
放水出水问题
18.10 决策论
- 确定型决策
- 风险决策
- 不确定型决策
- 要素:决策者、方案、准则、时间、每一事件发生产生的结果、决策者的价值观
18.10.1 不确定型决策方案
- 悲观主义准则: 最差可能中最大值
- 乐观主义准则:最好可能中最大
- 折中主义准则
折中系数a,每个方案最大收益a+最小收益(1-a) - 等可能性准则
- 后悔值准则
不同环境中,获得的最大收益-当前收益=后悔值,选择每个方案最大后悔值中最小的