软考-高级系统架构师
2025-03-16 14:33:12 0 举报
AI智能生成
软考-高级系统架构师考试的知识要点整理。
作者其他创作
大纲/内容
系统规划与分析
企业信息化战略
信息系统概述
信息系统的发展
数据处理的发展
技术的进步
应用的拓展
计划和控制策略的变化
用户的状况
阶段
初始阶段
传播阶段
控制阶段
集成阶段
数据管理阶段
成熟阶段
信息系统分类
业务(数据)处理系统(TPS)
服务于最低层、最基础的信息系统,单独处理某一项事务
对日常事务数据进行输入、处理、输出
数据处理周期
输入
处理
数据库维护
文件报表生成
查询数据
数据处理方式
批处理
联机事务处理
管理信息系统(MIS)
在TPS基础上引入大量管理方法,对整体信息进行处理
利用信息进行预测、控制、计划,辅助企业管理
高度集成化的人机信息系统,职能明确、体系结构稳定、处理技术成熟
决策支持系统(DSS)
由语言系统、知识系统、问题处理系统组成
主要资源
数据
模型
支援用户决策而非代替
解决半结构化及非结构化问题
提高决策有效性
专家系统(ES)
基于知识、人工智能,能力来自专家知识
知识表示及推理提供应用机理
知识+推理=系统
办公自动化系统(OAS)
自动化办公
功能
事务处理
信息管理
辅助决策
组成
计算机设备
办公设备
数据通信及网络设备
软件系统
提高办公效率
企业资源规划(ERP)
对物流、资金流、信息流进行管理
支持决策
提供针对性IT方案
从企业内部供应链发展为全行业/跨行业供应链
政府信息化与电子政务
政府相关业务活动
围绕
政府
企事业单位
居民
互动
政府对政府
政府对企事业单位
政府对居民
企业对政府
居民对政府
客户关系管理系统(CRM)
将客户看作企业重要资源,管理与客户的交互
功能
销售管理
市场营销管理
客户服务与支持
客户数据分析
以客户为中心
信息系统生命周期
产生阶段
开发阶段
运行阶段
消亡阶段
建设原则
高层管理人员介入原则
获得决策指导和各类支持
用户参与开发原则
核心用户应参与全过程开发
自顶向下规划原则
达到信息一致性,不能取代系统详细设计
工程化原则
其他原则
创新性原则——先进性
整体性原则——完整性
发展性原则——超前性
经济性原则——实用性
开发方法
结构化方法
结构化系统分析和设计组成信息系统
过程
将系统生命周期划分为
系统调查
分析
设计
实施
维护
遵循系统工程原理,按照预定步骤,用开发工具完成规定文档
在结构化和模块化基础上开发,将系统功能看作大模块,进行模块分解或组合
场景
业务成熟、定型
特点
阶段明确
文档规范
灵活性较差
原型法
利用系统开发工具快速建立系统模型展示给用户,以此与用户交流
过程
需求分析
初步设计
调试
检测
场景
需求不明确
快速获取用户反馈
特点
开发周期短
快速响应用户需求
面向对象方法
将客观世界从概念上抽象为相互配合、协作的对象
过程
利用面向对象建模概念
实体
关系
属性
运行机制
封装
继承
多态
构造类库
场景
大型、复杂、需求变化较多
特点
封装、继承、多态
提高可维护性、可复用性
面向服务的方法
基于面向对象发展
按业务功能分组形成构件,以接口实现跨构件调用,将接口定义与实现解耦
场景
分布式、异构环境
特点
强调服务的独立性和可复用性
便于系统集成和扩展
信息化战略概念
企业战略规划
用机会和威胁评价现在和未来的环境
用优势和劣势评价企业现状
选择和确定企业的总体和长远目标,制定和抉择实现目标的行动方案
是其他规划的基础,所有规划围绕企业关键目标展开
信息系统战略规划
关注如何通过信息系统来支撑业务流程的运作
实现企业的关键业务目标,重点在于对信息系统远景、组成架构、各部分逻辑关系进行规划
基于企业战略规划,为信息技术战略规划等提供方向
信息技术战略规划(IT战略规划)
在信息系统战略规划的基础上
对支撑信息系统运行的硬件、软件、支撑环境等进行具体规划,关心技术层面的问题
基于信息系统战略规划,为信息资源规划提供技术支持
信息资源规划
在以上规划的基础上,为开展具体的信息化建设项目而进行
数据需求分析
信息资源标准建立
信息资源整合
基于企业战略规划、信息系统战略规划和信息技术战略规划,为信息化建设项目提供数据等资源层面的规划
业务流程重组
在信息化规划过程中,充分重视和发挥其与信息系统之间相互促进的作用
完成业务流程的优化,实现企业管理、组织配置与信息技术的结合
与信息系统、信息资源规划相互促进,影响企业信息化规划进程
信息资源规划(IRP)
对企业生产经营活动所需信息在产生、获取、处理、存储、传输和利用等方面进行全面规划,信息化建设基础工程
简单理解:就是数据方面的规划
步骤
业务主线
定义职能域
各职能域业务分析
建立信息系统功能模型
数据主线
各职能域数据分析
建立IRM基础标准
建立信息系统数据模型
建立关联矩阵
企业信息化规划
信息化初级阶段
业务部门依据现有业务流或管理需要直接提信息化需求,IT部门按需求实施(部门级)
信息化中级阶段
企业有整体战略规划,业务部门依战略改进业务流程和组织结构后,分别提信息化需求,IT部门独立实施(整体规划,部门实施)
信息化高级阶段
企业根据整体战略规划,通盘考虑业务部门信息化需求,制定整体信息化战略,统一规划、分布实施(整体规划、整体实施)
企业战略与信息化战略集成
业务与IT整合(BITA)
以业务为导向的全面IT管理咨询实施方法论
使IT更好地为企业战略和目标服务
适用:信息系统不能满足当前管理中的业务需要,业务和IT之间存在不一致的企业
企业IT架构(EITA)
分析企业战略,帮助制定IT战略并指导投资决策的方法
在技术、信息系统等方面建立原则规范、模式和标准,指出改进方面并制定行动计划
现有信息系统和IT基础架构不一致、不兼容;缺乏统一整体管理的企业
业务流程重组
Business Process Reengineering BPR
以流程为核心
原则
以流程为中心的原则
团队式管理原则(以人为本)
以顾客为导向原则
思路
对企业业务流程基本问题反思并彻底重新设计
企业应用集成
Enterprise Application Integration EAI
消除信息孤岛,将多个企业信息系统连接起来,实现无缝集成
EAI包括
表示集成
把用户界面作为公共集成点,将原有零散系统界面集中在新界面
解决系统界面的统一展示问题
数据集成
在集成前对数据标识、编码,确定元数据模型,保证数据在数据库系统分布和共享,为控制集成和业务流程集成做准备
解决数据和数据库的集成问题
控制集成
在业务逻辑层对应用系统进行集成
实现业务逻辑层的应用系统集成
业务流程集成
由一系列基于标准、统一数据格式的工作流组成
对业务信息交换进行定义、授权和管理
改进操作、降低成本、提高响应速度,解决业务流程层面的集成问题
企业间应用集成
用于企业之间的应用集成,使应用集成架构里的客户和业务伙伴可通过集成供应链内所有应用和数据库实现信息共享,让企业充分利用外部资源
实现企业与合作伙伴信息系统无缝及时通信
事件驱动架构
事件触发消息在独立的、非耦合的模块之间传递
事件源通常发送消息到中间件或消息代理,订阅者订阅这个消息
实现模块间低耦合通信,提高系统灵活性和可扩展性
系统规划与分析
系统规划是信息系统生命周期的开端,但是在软考中不重要,所以不细说
系统分析可以认为是信息系统的关键开始
与用户沟通分析信息系统的主要功能
最终产物编写在需求规格说明书中
过程
问题分析
不重要
业务流程分析
针对信息系统如何解决业务问题,了解各个部门的业务和业务交互
为系统的数据流程的变化提供支持
方法
价值链分析
考察企业优势,包含基本和辅助业务流程
客户关系分析
从客户的角度
供应链分析
从内外供应链的角度
基于ERP的分析
将业务流程看成供应链,对资源进行优化
业务流程重组
考察价值链,对业务流程进行优化
工具
业务流程图 TFD
分析描述现有系统,体现系统边界、环境等
反映业务处理过程、分工、联系、物流与信息流
适用于事务型业务
业务活动图 BAM
提高业务流程全面模型
用于业务流程调查时,识别、分析、优化流程
UML中的活动图
业务流程建模 BPM (Business Process Mapping)
通过特定符号和图形化语言
展示业务流程的各个环节、活动、参与者、输入输出与相互关系
方法
标杆瞄准
以领先企业的最佳实践作为本企业的标杆
研究流程、标杆对象、采集分析数据、选定标准、评估既有流程确定目标
DEMO
基于对话行为理论
核心是业务事务
要求、执行、结果阶段、发起者、执行者
Petri网
用于复杂系统建模
形式化语义、直观图形、丰富分析技术、基于状态表示
业务流程建模语言
文本类
BPEL
BPML
XPDL
图元类
BP MN
UML
基于服务的BPM
与服务思想结合
明确业务流程与服务的关系
数据与数据流程分析
使用数据流图
见需求工程
系统可行性分析
经济可行性
成本与收益
初期难以估量
技术可行性
功能、性能、技术约束
如果在开发阶段再调整就会产生比较大的成本
法律可行性
不能违法
用户使用可行性
管理可行性
领导的支持
运行可行性
IT基础设施、组织机构
进度可行性
时间估算与项目期限
强制期限、期望期限
成本分析
项目管理中,常考案例
需求工程
定义
创建和维护软件需求文档的过程
需求开发
需求获取
定义
确定和获取不同需求方的要求和约束
方法
用户访谈
准备问题
调查
整理材料
优点是比较灵活;缺点对访谈人员对专业性要求比较高
问卷调查
编写问题、确定格式
优势是高效低成本;缺点是不灵活、不详细
采样
公式:样本大小=启发因子 * (可信度系数/可接受错误)^2
启发因子一般是0.25
情节串联板
通过图片辅助叙述需求
被动、主动、交互
比较生动
联合需求计划
让客户参与到软件的设计和开发中
对于需求不明的项目比较适用,但对于会议组织者要求较高
收集资料
查阅各种论文、报告、行业标准等
获取文档
向相关人员获取项目的文档
参与业务实践
参与实际的业务流程
需求分析
定义
把混乱的用户要求整理成用户需求
过程
绘制系统上下文范围关系图
创建用户界面原型
分析需求可行性
确定需求优先级
建立需求分析模型
创建数据字典
使用QFD
方法
结构化分析方法(SA)
基本思想
自顶向下
逐层分解
核心是数据字典
数据模型
功能模型
行为模型(状态模型)
主要工具:数据流图DFD
通过数据流动表达系统功能
基本符号
数据流
带方向的箭头
表示数据的流向
数据存储
直线段
存储数据
加工
圆圈
对数据的处理
外部实体
矩形
数据源或数据终点
系统之外的参与者
层次
自上而下的分析
先绘制顶层图
将整个待开发的系统作为一个加工
将所有的外部实体与进出系统的数据画在一张图中
逐层分解
平衡原则
父图与子图的平衡
个数一致
两层数据流图中的数据流个数一致
方向一致
两层数据流图中的数据流方向一致
子图内部的平衡
黑洞
有输入无输出
灰洞
输入不足以产生输出
奇迹
有输出无输入
数据存储
整体必须既有输入数据流又有输出数据流
个别子图可能只有输入或者只有输出
状态转换图
描述系统对内部或外部事件响应的行模型
描述系统状态、事件、事件引起的状态转换
状态
初态
黑圆点表示
终态
黑圆点加一个圆
中间状态
圆角四边形
状态转换用箭头表示
面向对象分析方法
统一建模语言UML
是什么?
一种建模语言
将软件系统文档化和可视化
结构
构造块
规则
公共机制
分类
结构图
描述实体之间的关系
类图
类、接口、协作之间的关系
对象图
对象之间的关系
包图
包与包之间的依赖关系
组件图
某一部分的内部结构
部署图
构件在各节点上的部署
外廓图
构造型、元类等扩展机制的结构
行为图
描述用例与参与者之间的关系
用例图
一组用例、参与者及相互关系
用例模型
过程
识别参与者
与系统交互的所有事物
参与者一定在系统之外
人
其他系统
硬件设备
时钟
合并需求获得用例
将参与者与用例整合
生成用例图
细化用例描述
用例名称
简要说明
事件流
非功能需求
前置条件和后置条件
扩展点
优先级
调整用例模型
包含
从多个用例中提取公共行为,生成抽象用例
<<include>>
箭头指向抽象用例
扩展
一个用例混合多种场景
<<extend>>
箭头指向基本用例
泛化
多个用例有类似结构行为,抽取共性为父用例
实线空心箭头
指向父用例
元素
结构元素
用例
椭圆表示
参与者
小人
系统边界
矩形
注释
页签
关系元素
关联
直线
扩展
虚线箭头+extend
包含
虚线箭头+include
泛化
实线空心箭头
注释链接
虚线直线
活动图
事物执行的控制流或数据流,描述方法、机制或用例的内部行为
核心概念
活动、组合活动
某个内部的控制逻辑
对象、对象流
与活动相关的数据对象
转移、分支
控制活动之间的先后顺序
并发、同步
支持活动间的并发和同步
分区
描述活动的不同参与者
场合
业务建模、需求、类设计
状态图
对象所经历的状态转移
通信图
对象之间消息的交互
强调协作
时间图
对象之间消息的交互
强调真实信息
顺序图
对象之间消息的交互
强调消息顺序
核心概念
对象
矩形+object+class表示
生命线
对象符号下的虚线
执行发生
细长矩形
消息
同步消息
实线实心箭头
异步消息
实线箭头
返回消息
虚线箭头
创建消息
虚线箭头+object
交互片段
封装交互图中的片段
可施加选择、循环、并行等操作
矩形+condition
场景
用例分析、用例设计
交互概览图
交互图之间的执行顺序
4+1架构模型(RUP)
逻辑视图
表示类与对象
面向系统分析、设计人员
关注功能模块及其相互关系
展示系统的主要功能模块及其交互关系
实现视图
表示物理代码文件和组件
面向程序员
关注代码的模块化、层次化
指导开发人员对代码进行开发
进程视图
表示线程、进程、并发
面向系统集成人员
关注系统运行时的交互
体系系统运行时的动态特性
部署视图
表示软件到硬件的映射
面向系统和网络工程师
关注系统的物理结构
明确软件在物理层面的部署结构和拓扑结构
用例视图
表示需求分析模型
面向最终用户
系统如何被外部使用,关注用户交互与价值
从用户角度描述系统,为需求分析提供论证
分析模型
描述系统逻辑结构,展示类和对象的组成(静态模型),如何保持通信,实现系统行为(动态模型)
过程
定义概念类
确定类之间关系
添加类职责
给类添加属性和方法
建立交互图
多个对象的交互使用交互图表示
系统建模语言SysML
UML的一种扩展,专为系统工程领域创建
扩展了类图、活动图的功能
新增了
模块定义图
需求图
参数图
优缺点
学习起来比较困难
更为系统、全面的进行系统分析,兼顾功能性与非功能性需求,交互描述更好
面向问题域分析(PDOA)
需求定义(编写需求规格说明书)
方法
严格定义法
原型法
产物
软件需求规格说明书(SRS)
使项目干系人与开发团队对系统有一个共同的理解
需求验证
对需求规格说明书的正确性进行验证
又称需求确认
方法
需求评审
每个阶段结束前进行技术评审
对产品进行检查以发现问题,发现二义性或不确定性的需求
类型
评审
正式会议
检查
由非制作者本人的个人或小组检查工作产品
走查
评审过程,由开发人员领导团队成员对工作产品进行检查
需求测试
从需求定义开始,在早期制定测试计划和设计测试用例
基于文本需求的概念上的测试
需求管理
变更控制
需求基线
需求开发的结果:项目视图、范围文档、用例文档、SRS、分析模型
已通过正式评审和批准的规约或产品,作为进一步开发的基础,通过正式的变更控制进行变化
软件开发中的里程碑,标志一个或多个软件配置项的交付
需求变更
需求变更之前尽量减少变更
流程
变更申请
变更评估
通告评估结果
变更实施
变更验证与确认
变更发布
流程2
识别问题
问题分析与变更描述
变更分析和成本计算
变更实现
需求风险管理
有风险的做法
无足够用户参与
忽略用户分类
用户的需求不断增加
模棱两可的需求
不必要的特性
过于精简的SRS
不准确的估算
版本控制
需求跟踪
将单个需求和其他系统元素之间的依赖关系和逻辑关系建立跟踪
元素
需求
业务规则
系统架构和构件
源代码
测试用例
帮助文件
SRS中的每个软件配置项的需求到其涉及的系统需求都要具有双向可追踪性
确保所有需求都是被定义且实现的
双向可追踪性
正向跟踪
检查SRS中的每个需求是否都在后继工作成果中找到对应点
反向跟踪
检查设计文档、代码、测试用例等工作成果是否都能在SRS中找到出处
目的
需求状态跟踪
系统设计
系统架构设计
基本定义
是什么?
对整个信息系统从高层次进行整体性的设计(个人理解)
过程
数据设计
数据构件
面向对象中类的定义(封装属性和方法)
体系结构设计
软件构件的结构、属性和交互作用
4+1视图
体现关注点分离的思想
与RUP中的4+1视图不同,但本质是一样的
逻辑视图
开发视图
进程视图
物理视图
场景
软件架构设计与生命周期
需求分析阶段
从需求模型转换架构模型,保证可追踪性
如从用例图转换到类图
便于各阶段参与者沟通并维护可追踪性
设计阶段
架构模型描述相关内容
基本概念
构件
连接器
架构描述语言(ADL)
多视图表示法描述架构
4+1视图
Hofmeister模型
实现阶段
缩小架构设计与具体实现的差距
基于架构模型
引入编程概念
运用模型转换技术
基于中间件平台进行构件组装
测试
配置管理
构件组装阶段
基于架构模型进行构件组装
使用连接器组装构件实现系统
连接器实现以及检测,消除架构失配问题
部署阶段
基于架构模型描述软硬件部署及分析质量属性
后开发阶段
动态软件架构及遗留系统架构研究
动态软件架构(运行时体系结构可变)
遗留系统处理,恢复/重建架构
架构设计方法
基于架构的软件开发方法 ABSD
是什么
Architecture-Based Software Design ABSD
以体系结构驱动,有构成体系结构的商业、质量、功能需求组合驱动
基础
功能分解
基于模块的内聚与耦合
选择体系结构风格来实现质量和商业需求
软件模板,利用一些软件系统的结构
ABSD是递归的,每一步都有清晰定义,降低随意性
ABSD是自顶向下、递归细化的
体系结构不断细化,直到产生软件构件和类
最顶层分解
若干概念子系统
一个或若干个软件模板
2层
概念子系统
概念构件
一个或若干个附加软件模板
视图视角
静态视角:展示功能组织,判断质量特性
动态视角:展示并发行为,判断系统行为特性
逻辑视图
记录设计元素的功能和概念接口
设计元素定义了在系统中的角色
功能
性能
进程视图
实现视图
配置视图
用例和质量场景
用例:捕获功能需求
质量场景:捕获质量需求
变更场景
性能场景
可靠性场景
交互性场景
预期场景
非预期场景
设计边界条件
过程
体系结构需求
内容
需求相关概念
用户对目标软件在功能方面的期望
来源
系统质量目标
商业目标
开发人员目标
需求过程
获取用户需求并标识构件
利用需求库提高效率
需求评审
由不同代表组成小组审查需求及相关构件
设计
设计过程
体系结构需求激发和调整设计决策
通过不同视图表达质量目标信息
迭代过程
文档化
内容
文档作用
输出结果
要求
文档
系统演化各阶段人员交流沟通的媒介和设计验证的基础
体系结构规格说明
测试质量设计说明书
从使用者角度编写,分发所有相关开发人员并保证最新(但不是时刻最新)
复审
内容
复审安排
主版本之后安排外部人员参加复审
方式
搭建最小化可运行评估环境
目的
标识潜在风险,发现设计缺陷和错误
实现
以复审后的文档化体系结构说明书为基础
按设计结构,利用组装支持工具组装构件实现体,完成系统连接合成
测试包括构件功能及整体功能性能测试
演化
需求变动,修改体系结构
步骤
需求变化归类
制定演化计划
修改/删除/增加构件
更新构件相互作用
构件组装与测试
技术评审
特定领域软件体系结构 DSSA
Domain-Specific Sofeware Architecture
在一组相关的应用中共享软件体系结构
分类
垂直域
特定业务系统族
包含多个系统,是领域内可作为系统性解决方案的通用软件系统结构
常用于成熟、稳定的领域
水平域
多个系统和多个系统族中功能区域的共有部分
在子系统级涵盖多个系统族的特定部分功能
不局限于成熟领域,有部分功能共性即可
基本活动
领域分析
获得领域模型,描述领域系统的共同需求
领域设计
获得DSSA(特定领域体系结构)
领域实现
开发组织可重用信息,实现DSSA
可重用信息从现有系统提取或新开发
依据领域模型和DSSA组织可重用信息
参与人员
领域专家
该领域系统的资深用户、从事需求分析、设计、实现及项目管理的软件工程师
领域分析师
具备知识工程背景的资深系统分析师
领域设计师
资深软件设计人员
领域实现人员
资深程序设计人员
建立过程
定义领域范围
确定感兴趣领域的范围及过程终止时间
定义领域特定元素
目标是编制领域词典和术语同义词词典
在上一阶段的高层模型基础上,增加更多细节,识别应用的共性和差异性
定义领域特定的设计和实现需求约束
目标是描述解空间中的差异特性
需识别约束、记录约束对设计实现决策的影响
讨论处理问题的方法
定义领域模型和体系结构
产生一般体系结构模型
产生、搜集可重用的产品单元
为特定领域软件架构增加可重用构件,可用于在该领域产生新应用
软件架构风格
描述某一特定应用领域中系统组织方式的惯用模式
定义一个系统家族
一个词汇表
构件和连接件类型
一组约束
指出系统如何将这些构件和连接件组合起来
反映了领域中众多系统所共有的结构和语义特征
指导各个模块和子系统如何有效地组织成一个完整的系统
数据流体系结构风格
内容
没有概念上的程序计数器
指令的可执行性和执行仅由指令输入参数的可用性确定
指令执行的顺序是不可预测的,行为是不确定的
批处理
每个步骤是单独的程序
每一步必须在前一步结束之后才能开始
数据是完整的,以整体的方式传递
基本构件是独立的应用程序
连接件是某种类型的媒介
常见应用
经典数据处理
程序开发
Windows下的BAT程序
管道-过滤器
把系统分解为多个步骤
步骤间通过数据流连接
一个步骤的输出是另一个步骤的输入
处理步骤由过滤器实现,步骤间传输由管道负责
基本构件是过滤器
连接件是数据流传输管道
常见应用
UNIX Shell编写的程序
传统编译器
调用/返回体系结构风格
内容
采用调用返回机制
是一种分治策略
将一个大系统分解为若干子系统
降低复杂度
增加可修改性
主程序/子程序
采用单线程控制
把问题划分为若干处理步骤
构件
主程序
子程序
可合并成模块
连接件
过程调用
调用关系具有层次性
子程序的正确性取决于它调用的子程序的正确性
递归
面向对象体系结构风格
基于数据抽象和面向对象
数据的表示和相应操作封装为一个抽象数据类型或对象
构件
对象
层次型
层次结构,每一层为上层提供服务,并作为下层的客户
构件在层上实现了虚拟机
连接件
层间交互协议
拓扑约束
每一层最多只影响两层
给相邻层提供相同的接口,允许每层用不同的方法实现
便于软件重用
客户端/服务器体系
基于资源不对等,且实现共享
两层CS体系
数据服务器
客户应用程序
网络
三层CS体系
增加应用服务器
应用逻辑驻留在应用服务器
应用功能
表示层
功能层
数据层
以数据为中心的体系风格
内容
以数据为中心
仓库体系风格
仓库是存储和维护数据的中心场所
构件
中央数据结构
说明当前数据状态
一组独立构件
对中央数据进行操作
连接件
仓库与独立构件之间的交互
黑板体系
问题求解模型
将问题的解空间组织成一个或多个应用相关的分级结构
分解结构的每一层信息由一个唯一的词汇来描述,代表问题的部分解
常见应用
信号处理领域:语音识别、模式识别
松耦合代理数据共享存取
虚拟机体系风格
内容
人为构件一个运行环境,解析与运行自定义语义,增加灵活性
解释器
包括
解释引擎
完成解释工作
存储区
包含将被解释的代码
数据结构
记录解释引擎当前工作状态
数据结构
记录源代码被解释执行的进度
缺点
执行效率较低
常见应用
专家系统/在线游戏系统
业务灵活组合
规则系统
基于规则的系统
包括
规则集
规则解释器
规则/数据选择器
工作内存
常见应用
决策支持系统
独立构件体系风格
强调每个构件都是相对独立的个体,构件之间不直接通信
降低耦合度,提升灵活性
进程通信体系风格
构件是独立的过程
连接件是消息传递
特点
构件通常是命名过程
消息传递
点对点
异步
同步
远程过程调用
事件系统体系风格
基于事件的隐式调用
构件不直接调用一个过程,而是触发或广播一个或多个事件
当一个事件被触发,系统自动调用在这个事件中注册的所有过程
常见应用
编程集成工具
数据库管理系统
语法检查
C2
通过连接件绑定在一起,按照一组规则运作的并行构件网络
构件和连接件都有顶部和底部
构件的顶部连接到连接件的底部,构件的底部连接到连接件的顶部
构件之间不允许直接连接
连接件可以连接任意数量的构件和其他连接件
当两个连接件直接相连时,必须一个的底部连接到另一个的顶部
闭环控制(过程控制)
软件与硬件表示为一个反馈循环,反馈循环接收一定输入,确定一系列输出,最终使环境达到一个新的状态
常见应用
空调控温
定速巡航
软件架构复用
定义
系统化的软件开发过程
开发一组基本的软件构造模块
覆盖不同的需求/体系结构之间的相似性,提高系统开发的效率、质量、性能
分类
机会复用
开发过程中,只要发现可复用的资产,就进行复用
系统复用
开发之前,提前规划,决定哪些需要复用
过程
构造/获取可复用的软件资产
明确可复用资产的特性
可靠性
广泛适用性
易理解性
易修改性
管理可复用资产
形成构件库
构件存储
管理
检索
库的浏览与维护
构件分类
构建检索
使用可复用资产
修改
扩展
配置
组装
集成
软件产品线
定义
一组软件密集型系统
共享一个公共的、可管理的特性集
满足特定的需要
以规定的方式用公共核心资产集成开发
围绕核心资产库进行管理、复用、集成
核心资产库
软件架构及可裁剪元素
设计方案及其文档
用户手册
项目管理历史记录(预算和进度)
软件测试计划
测试用例
系统质量属性与架构评估
软件质量属性
描述系统的质量属性
描述系统满足利益相关者需求的程度
开发期质量属性
易理解性
可扩展性
可重用性
可测试性
可维护性
可移植性
运行期质量属性
性能
安全性
可伸缩性
互操作性
可靠性
可用性
鲁棒性
质量属性场景
精确描述软件系统的质量属性
对利益相关者与系统交互的简短陈述,描述了一个具体的质量属性需求
组成部分
刺激源
生成刺激的实体
刺激
到达系统时需考虑的条件
环境
刺激发生的条件
制品
被激励的对象
响应
激励到达后采取的行动
响应度量
对响应进行度量的方式
质量属性
可用性
刺激源:系统内部/外部
刺激:疏忽、错误、崩溃、时间
环境:正常操作、降级模式
制品:系统处理器、通信信道、持久存储器、进程
响应:检测事件,记录并通知相关方,禁止错误或故障源
可修改性
刺激源:最终用户、开发人员、系统管理员
刺激:希望增加、删除、修改功能、质量属性、容量
环境:系统设计时、编译时、构建时、运行时
制品:系统用户界面、平台、环境或与目标系统交互的系统
响应:查找需修改位置,修改且不影响其他功能,测试并部署修改
性能
刺激源:用户请求、其他系统触发
刺激:定期事件到达、随机事件到达、偶然事件到达
环境:正常模式、超载模式
制品:系统
响应:处理刺激、改变服务级别
可测试性
刺激源:开发人员、增量开发人员、系统验证人员、客户验收测试人员、系统用户
刺激:已完成的分析、架构、设计、类和子系统集成;所交付的系统
环境:设计时、开发时、编译时、部署时
制品:设计、代码段、完整的应用
响应:提供对状态值的访问,提供所计算的值,准备测试环境
易用性
刺激源:最终用户
刺激:学习系统特性、有效使用系统、使错误影响最低、适配系统、对系统满意
环境:系统运行时、配置时
制品:系统
响应:提供支持学习、有效使用、降低错误影响、适配系统、使客户满意的响应
安全性
刺激源:正确识别、非正确识别、身份位置的来自内部/外部的个人或系统、经过了授权/未授权访问了有限的/大量资源
刺激:试图显示数据,改变/删除数据,访问系统服务,降低系统服务的可用性
环境:在线或离线、联网或断网、连接有防火墙或直接连接网络
制品:系统服务、系统中的数据
响应:对用户身份进行认证、隐藏用户的身份、阻止/允许访问、授予/收回许可、记录访问、存储数据、识别高需求、通知并限制服务可用性
架构质量属性
面向系统架构设计的质量属性
性能
系统的响应能力
处理事务所需时间或单位时间内处理事务的梳理
使用基准测试程序进行测试
可靠性
在应用错误、意外错误使用情况下,维持功能特性的能力
通过平均失效时间(MTTF/MTBF)衡量
容错性
故障时确保正常行为
健壮性
错误输入时按预定义方式结束
可用性
系统正常运行的时间比例
表现为两次故障间时长或故障时恢复正常速度
安全性
向合法用户提供服务同时阻止非授权访问或拒绝服务的能力
机密性
完整性
不可否认性
可控性
可修改性
快速、高性价比地变更系统的能力
可维护性
可扩展性
结构重组
可移植性
功能性
系统完成所期望工作的能力,需要系统中多个构件相互协作
可变性
架构扩充或变更为新架构的能力
新架构需符合预定规则,但某些方面不同于原架构
互操作性
与其他系统或环境交互
为外部功能和数据结构设计入口
系统架构评估
在架构分析、评估的基础上,对架构策略的选取进行决策
方法
基于调查问卷或检查表
基于场景
基于场景的架构分析方法(SAAM)
目标
通过场景验证架构假设和原则
评估架构固有风险
评估技术
采用场景技术
将质量属性具体化为场景描述
质量属性
可修改性
也可扩展到其他属性
协调不同利益相关者的关注点,达成架构共识
针对最终架构而非详细设计进行评估
过程
场景开发
架构描述
单场景评估
场景交互评估
总体评估
架构权衡分析法 ATAM
基于SAAM
针对
性能
适用性
安全性
可修改性
过程
场景和需求收集
收集场景以及约束等需求信息
架构视图和场景实现
描述体系结构图,实现场景
属性模型构造和分析
基于优秀单一理论进行特定属性分析,构造属性模型并分析
权衡
标志折中情况,识别敏感点
一次ATAM实践
演示
评估团队介绍ATAM过程、业务目标和要评估的体系结构
调查和分析
深入探讨架构方法,生成质量属性效用树
分析架构方法
测试
头脑风暴和优先场景理解质量属性要求
分析架构方法
报告
向利益相关者呈现评估结果、效用树、场景、分析问题、风险和非风险及架构方法的发现
为架构改进提供指导
效用树
对质量属性进行分类和优先级排序
结构
树根
质量属性
属性分类
质量属性场景(叶子节点)
主要关注
性能
安全性
可修改性
可用性
初始效用树
保留重要场景(不超过50个)
对场景按重要性给定优先级排序(H/M/L)
按场景实现的难易度确定优先级(H/M/L)
对每个场景都有一个优先级对(重要度、难易度)
基于度量
CBAM方法
架构策略会影响系统的质量属性
质量属性的变化会为系统的相关方带来收益
协助相关方根据投资回报率(ROI)来选择最优架构策略
其他方法
SAEM方法
兼顾产品属性与过程属性,从内外部质量属性评估,构件通用评估框架
SAABNet方法
借助专家知识,利用贝叶斯信念网络实现定性评估
SACMM方法
聚焦架构修改
以图内核定义准则度量架构变化
SASAM方法
对比预期与实际架构进行静态评估
ALRRA方法
综合复杂度因素与失效后果严重性评估可靠性风险
AHP方法
多准则决策流程解决评估冲突并排名
COSMIC+UML方法
基于面向对象系统
关联二者组件图度量可维护性
重要概念
敏感点
一个或多个构件的特性
权衡点
影响多个质量属性的特性,是多个敏感点的综合
风险承担者/利益相关人
涉及到的利益相关者
会试图影响架构决策以实现自己的目标
场景
从风险承担者的角度对系统的交互简短描述
一般采用
刺激
环境
响应
系统设计
概述
在软件开发过程中,对需求工程的结果进行分析和设计,制定出系统的整体设计方案
概要设计
对系统进行高层次的规划和设计
关注系统的大体框架和基本功能
详细设计
对系统中各个模块的具体实现方式进行确定
关注系统内部的细节实现,着重解决系统应该如何完成某个具体任务、如何处理某个具体的数据等问题
界面设计
流程设计
应用设计
针对特定业务场景进行设计
用户界面设计
置于用户控制之下
减轻用户的记忆负担
保持界面一致性
处理流程设计
设计出系统所有模块以及它们之间的相互关系,具体设计出每个模块内部的功能和处理过程,为开发人员提供详细的技术资料
基本要素
输入资源
如要开通服务的注册用户名
活动
如开通业务的具体逻辑
活动的相互作用(结构)
如开通服务与其他活动的相互关系
输出结果
如开通服务后获取的通知
用户
如已注册的用户
价值
如用户获得的功能
工作流管理系统 WFMS
功能
对工作流建模
定义活动和规则,对应现实业务处理过程
工作流执行
创建和执行实际工作流
业务过程管理和分析
监控管理执行中的业务
通过软件定义、创建工作流并管理其执行
允许在一个或多个工作流引擎上
工作流参考模型 WRM
基本模块
工作流执行服务
工作流引擎
流程定义工具
客户端应用
调用应用
管理监控工具
为WFMS提供功能描述,描述模块间的交互
工具
图像工具
程序流程图 PFD
用图框表示各种操作
独立于任何程序设计语言
缺点
符号不规范
随意转移控制
控制结构
顺序型
选择型
多分支选择型
当型循环
直到型循环
N-S图(盒图)
以方框代替传统PFD
具有强烈的结构化特征
控制结构
顺序型
选择型
WHILE循环型
UNTIL循环型
多分支选择型
IPO图
描述模块的输入、输出和数据加工
结构清晰,用于系统设计文档
问题分析图 PAD
支持结构化程序设计
执行顺序明确,适合嵌套和层次关系表示
控制结构
顺序型
选择型
多分支选择型
当型循环
直到型循环
判定树
用树形结构表示逻辑判断
条件和处理流程直观,适合复杂条件判断
语言工具
过程设计语言 PDL
伪代码,混合自然语言和程序设计语言
描述处理过程,灵活
表格工具
判定表
结构清晰、简明
使用表格表示逻辑判断
适合多个互相联系的条件和多种结果的描述
面向对象设计
基本思想
抽象
封装
可扩展性
继承
多态
数据结构和在数据结构上定义的操作算法封装在一个对象中
类分类
实体类
映射需求中的每个实体,保存需永久存储在存储体中的信息
采用业务领域术语命名为名词
代表业务领域的实际对象,呈现业务模型重要元素
具有永久性,只要业务存在其信息就持续保存
一定有属性,操作看业务需求,不一定存在
控制类
控制用例工作,对用例特有的控制行为建模
由动宾结构短语转化而来的名词
协调用例执行时不同对象间的交互,确保用例按逻辑推进
系统执行用例时产生,用例执行完毕后消亡
通常没有属性,但一定有操作
边界类
封装用例内网流动的信息或数据流,位于系统与外界交界处
与系统接口紧密相关,无固定规则但能体现外部交互功能
实现系统与外界交互,隔离外部环境变更对系统内部的影响
随系统运行一直存在,在系统与外部交互时发挥作用
可以既有属性又有操作
窗口、通信协议、打印机接口、报表等
设计原则
单一职责原则 S
每个类只有一个设计目的
开闭原则 O
可扩展系统并提供新行为,通过添加抽象层实现,是其他原则的基础
里氏替换原则 L
软件实体使用基类对象时适用于子类对象,反之不一定
设计时将变化类设计为抽象类或接口
接口隔离原则 I
将接口视为角色
接口提供客户端需要的行为,将大接口分至小接口
依赖倒置原则 D
抽象不依赖于细节
针对接口编程,是实现开闭原则的主要机制
组合/聚合复用原则
通过组合或聚合关系复用已有对象
比继承更灵活,耦合度低
最少知识原则(迪米特法则)
软件实体应尽量少与其他实体相互作用
狭义
降低类耦合但可能影响通信效率
广义
控制信息相关方面,利用子系统解耦和复用
结构化设计
Structured Design SD
面向数据流的方法
基础
软件需求规格说明 SRS
系统分析阶段产物
数据流图
数据字典
自顶向下、逐步求精和模块化的过程
活动
数据设计
体系结构设计
人机界面设计(接口设计)
过程设计
模块划分
模块大小适中
过大模块可能分解不充分,功能不单一
过小模块增加系统复杂度,调用频繁,独立性降低
模块扇入扇出合理
扇出指模块直接调用下级模块个数,扇出大则复杂度高,需控制协调下级模块
过大因缺少中间层次可增加控制模块
过小可分解下级模块或合并到上级模块
扇入指直接调用该模块上级模块个数,扇入大复用程度高
平均扇入和扇出系数为3或4,不超过7
深度和宽度适当
深度指模块层数,过多考虑简单模块合并
宽度指同一层次模块总数最大值,宽度大系统复杂,模块产出对宽度影响大
信息隐蔽
采用封装技术隐藏模块实现细节,使接口简单
模块设计成“黑盒”,仅通过接口交互,相对独立,易实现、理解和维护
抽象原则抽取事物基本特性和行为,忽略细节,分层次抽象控制开发复杂性
过程抽象
数据抽象
控制抽象
耦合
表示模块间联系程度
非直接耦合(低)
两个模块之间没有直接关系
完全通过主模块的控制和调用实现联系
数据耦合
一组模块借助参数表传递简单数据
标记耦合
一组模块通过参数表传递记录信息(数据结构)
控制耦合
模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合
一组模块访问同一全局简单变量而不是同一全局数据结构
不是通过参数表传递该全局变量信息
公共耦合
多个模块都访问同一个公共数据环境
公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区
内容耦合(高)
一个模块直接访问另一个模块的内部数据
一个模块不通过正常入口转到另一模块的内部
两个模块有一部分代码重叠
一个模块有多个入口
内聚
表示模块内部各成分之间的联系程度
功能内聚(高)
完成一个单一功能,各部分协同工作,缺一不可
顺序内聚
处理元素相关,必须顺序执行
通信内聚
所有处理元素集中在一个数据结构的区域上
过程内聚
处理元素相关,必须按特定次序执行
瞬时内聚(时间内聚)
所包含的任务必须在同一时间间隔内执行
逻辑内聚
完成逻辑上相关的一组任务
偶然内聚(低)
完成一组没有关系或松散关系的任务
设计模式
创建型
工厂方法
定义一个接口用于创建对象,但由子类决定实例化哪个类
抽象工厂
提供一个接口以创建相关或依赖对象的家族,无需明确指定具体类
建造者
将一个复杂对象的构建与表示分离,相同的构建过程可以创建不同的表示
原型
通过复制现有对象创建新对象,无需从头开始
单例
确保一个类只有一个实例,提供全局访问点
结构型
适配器
将一个类的接口转换为客户希望的另一个接口,使原本接口不兼容的类可以一起工作
桥接
将抽象部分与它的实现部分分离,使它们都可以独立变化
组合
将对象组合成树形结构以表示“部分-整体”的层次结构,使客户可以统一处理单个对象和组合对象
装饰
动态地给对象添加职责,而不改变其接口
外观
为子系统中的一组接口提供一个统一的高层接口,使子系统更容易使用
享元
通过共享技术来有效支持大量细粒度对象的复用
代理
为另一个对象提供一个代理或占位符以控制对它的访问
行为型
责任链
使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合
命令
将请求封装成对象,以便使用不同的请求、队列或日志来参数化其他对象
迭代器
提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部表示
中介者
用一个中介对象封装一系列对象交互,使对象不需要显式的相互引用,降低耦合度
备忘录
在不破坏封装的前提下,捕获并外部化对象的内部状态,以便以后恢复到该状态
观察者
定义对象间一种一对多的依赖关系,使得当一个对象改变状态,所有依赖它的对象都会得到通知并自动更新
状态
允许对象在内部状态改变时改变其行为,对象看起来好像修改了其类
策略
定义一系列算法,将每个算法封装其类,使其可以互换
模板方法
在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中,使子类可以不改变算法结构即可重定义该算法的某些步骤
访问者
表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素类的前提下定义作用于这些元素的新操作
解释器
给定一个语言,定义其文法的一种表示,并定义一个解释器,用于处理该语言中的句子
软件工程
软件工程
定义
组成
方法
工具
过程
PDCA
Plan:软件规格说明
规定软件的功能及运行时限制
Do:软件开发
开发满足需求规格的软件
Check:软件确认
确认开发的软件满足用户的需求
Action:软件演进
在运行过程中不断改进以满足客户新的需求
方法
开发风格
自顶向下
先定义系统整体结构
逐步细化为更具体的模块和功能
自底向上
从具体模块开始逐步构建整个系统
性质
形式化方法
具有坚实数学基础的方法
缺陷
人员培训难度大
正确性验证难且耗时
缺乏传统模块测试
非形式化方法
不把严格性作为主要着眼点
适应范围
整体性方法
适用于软件开发全过程的方法
局部性方法
适用于开发过程中某个具体阶段的方法
逆向工程
重构
在同一抽象级别上转换系统描述形式
设计恢复
借助工具从已有程序中抽象出数据设计、总体结构设计和过程设计等信息
再工程
在逆向工程基础上,修改或重构已有系统产生新版本
步骤
逆向工程
分析程序,在比源代码更高抽象层次上建立程序表示
是设计恢复过程
新需求考虑
正向工程
从现有系统恢复设计信息,用此信息改变或重构系统,改善整体质量
抽象层次
实现级
程序的抽象语法树、符号表等信息
结构级
反映程序分量相互依赖关系的信息,如调用图、结构图
功能级
反映程序段功能及程序段之间关系的信息
领域级
反映程序分量或实体与应用领域概念对应关系的信息
基于构件的软件工程 CBSE
Component-Based Software Engineering
通过复用可重用的软件构件来构造高质量、高效率的应用软件
强调将软件系统分解为独立的构件,每个构件都有明确定义的功能和接口,可以独立开发、测试、部署
构件特性
可组装性
外部交互通过公开定义的接口进行
提高对自身信息的外部访问,如方法和属性
可部署性
构件是自包含的,可以作为独立实体在提高其构件模型实现的构件平台上运行
构件总是二进制形式且无须在部署前编译
一个构件实现为一项服务,则由服务提供者来部署
文档化
构件必须是完全文档化的
用户能确定构件是否满足需要,应定义构件接口的语法、语义
独立性
构件是独立的,可以在无其他特殊构件的情况下进行组装和部署
需要外部服务时,应在“请求”接口描述中显式声明
标准化
构件必须符合某种标志化的构件模型
模型定义了构件接口、构件元数据、文档管理、组成以及部署
可见性
没有外部可见状态
主要活动
面向复用的开发
开发将被复用在其他应用程序中的构件或服务
对已存在的构件进行通用化处理
基于复用的开发
复用已存在的构件和服务来开发新的应用程序
过程
需求描述
完整识别复用构件
根据发现的构件细化修改需求
体系结构设计
构件搜索与设计细化
构件集成组装
基础设施集成
开发适配器
组装方式
顺序组装
按顺序调用已有构件创造新构件,先调用构件A服务,用A结果调用构件B服务
构件间不相互调用,可能被外部程序调用,需特定胶水代码确保接口兼容
层次组装
一个构件直接调用另一个构件提供的服务,被调用构件“提供”接口与调用构件“请求”接口需兼容
接口匹配无需额外代码,不匹配需转换代码,构件作为网络服务时不能用
接口不兼容
参数不兼容
接口两侧操作名相同,但参数类型或数目不同
操作不兼容
“提供”接口和“请求”接口操作名不同
操作不完备
一个构件的“提供”接口是另一个构件的“请求”接口的子集,或相反
叠加组装
多个构件叠加创建新构件,新构件接口是原构件接口组合,通过外部接口分别调用原构件
A 和 B 不相互依赖和调用
软件过程/生命周期模型
定义软件开发活动各阶段之间的关系
使软件生命周期的各项任务能够有序进行,对各项任务进行规程约束的工作模型即软件过程开发模型
过程
软件定义
软件开发
软件运行
软件维护(软件生命周期方法学)
软件淘汰
分类
软件需求完全确定
瀑布模型
过程
需求分析和定义
系统和软件设计
实现和单元设计
集成和系统测试
运行维护
缺点
依赖早起的需求调查,不适应需求的变化
软件需求的完整性、正确性很难确定
软件开发初始阶段仅能提供基本需求
喷泉模型
以用户需求为动力,以对象为驱动的模型,主要描述面向对象的软件开发过程
自下而上各阶段相互重叠和多次反复
过程
分析
设计
实现
维护
演化
螺旋模型
=瀑布模型+快速原型+风险分析
融合瀑布模型与演化模型,并加入风险分析的软件开发模型
适用于庞大、复杂并具有高风险的系统,支持用户需求的动态变化
缺点:过多的迭代会增加开发成本,延迟提交时间
统一开发过程
Rational Unified Process RUP
将项目管理、业务建模、分析与设计等统一起来,贯穿整个开发过程
特点
用例驱动的
以体系结构为中心的
迭代和增量的
4+1视图
逻辑视图
实现视图
进程视图
部署视图
用例视图
生命周期
一个二维的软件开发模型
业务建模
需求
分析与设计
实现
测试
部署
配置与变更管理
项目管理
环境
敏捷方法
强调开发团队与用户之间的紧密协作、面对面沟通、频繁交互新的版本、紧凑而自我组织型的团队
是适应型的而非可预测型的
以人为本而非以过程为本
迭代增量式的开发过程
敏捷宣言
个体和交互胜过过程和工具
可工作的软件胜过大量的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
适用场景
规模较小的项目
需求萌动并且快速改变的情况
如果系统有比较高的关键性、可靠性、安全性的要求,则不完全合适
敏捷方法
极限编程(XP)
轻量级、灵巧且严谨周密
强调通过短开发周期和频繁发布提高软件质量和开发团队生活质量
原则
交流、朴素、反馈、勇气
强调团队合作、客户满意度和应对变化
遵循YAGNI和DRY原则
水晶系列方法
提倡“机动性”的方法,包含具有共性的核心元素
原则
以人为中心
Scrum
侧重于项目管理的迭代式增量软件开发过程
原则
注重团队协作、响应变化、关注商业价值
特征驱动开发方法(FDD)
迭代的开发模型,强调人、过程和技术三要素
演化模型/原型模型
过程
建立原型目标
定义原型功能
开发原型
评估原型
适用于事先需求难完整定义的软件开发,基于快速开发的原型,依据用户反馈改进,不断迭代直至形成最终产品
优点
功能开发后可及时测试以验证需求
缺点
用户过早接触不稳定功能,对开发人员和用户造成负面影响
分类
抛弃型原型
演化型原型
V模型
过程
测试
单元测试
对象:可独立编译或汇编的程序模块、软件构件或OO软件中的类(统称为模块)
目的
检查每个模块能否正确实现设计说明中的功能、性能、接口和其他设计约束等条件
发现模块内差错
依据
软件详细设计说明书
集成测试
对象:模块之间以及模块和已集成的软件之间的接口关系
目的
检查接口关系,并验证已集成的软件是否符合设计要求
依据
软件概要设计文档
系统测试
测试对象:完整的、集成的计算机系统
目的
在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求
依据
用户需求或开发合同
验收测试
依据
用户需求
W/H/X模型
W模型
基于V模型,测试和开发同步
特点
测试对象包括需求、功能和设计
测试和开发并行
优点
早起介入测试,发现初期缺陷,修复成本低
局限性
开发和测试线性关系
不支持迭代和变更调整
H模型
测试活动独立,贯穿整个软件生命周期
特点
测试独立,与其他流程并发
灵活,可尽早测试
优点
测试活动独立,灵活性强
可尽早测试
局限性
对团队协作和测试工程师能力要求高
X模型
针对单独程序片段进行编码和测试,频繁交接集成
特点
强调测试设计和回溯
提出探索性测试
优点
能够发现更多软件错误
局限性
可能造成资源浪费
对测试人员熟练度要求高
以形式化开发方法为基础
变换模型
基于形式化规格说明语言和程序变化的开发模型
需要严格的数学理论和一整套开发环境的支持
软件过程管理
软件能力成熟度模型 CMM
Capability Maturity Model for Software
评估和改进软件开发过程的框架
目的
对软件过程进行管理和改进
增强开发与改进能力
成熟级别
初始级
软件开发过程缺乏结构化
项目依赖于个人经验和口头指令
可重复级
定义和文档化软件过程
已定义级
定义了软件过程
对软件过程进行了标准化和文档化
已管理级
监控和量化软件过程
优化级
动态调整软件过程适应不同项目需求
能力成熟度模型集成 CMMI
CMM的升级版,强调系统工程与软件工程的整合,适合信息系统集成企业
成熟级别
初始级
过程是随意且混乱的
已管理级
确保策划、文档化、执行、监督和控制项目级的过程
已定义级
根据自身情况定义企业和项目的标准流程
体系与流程制度化
量化管理级
建立产品质量、服务质量以及过程性能的定量指标
优化级
动态调整软件过程适应不同项目需求
软件测试
被测程序是否可见
黑盒测试
功能测试
着重软件功能性需求
将程序看作黑盒,不考虑内部结构和特性,从用户角度基于输入输出关系测试
发现功能、数据结构的错误
用例设计方法
等价类划分法
在系统和确认测试中尤为重要
白盒测试
结构测试
全面了解程序内部逻辑结构,对所有逻辑路径测试
覆盖标准
逻辑覆盖
循环覆盖
基本路径测试
具体覆盖标准
语句覆盖
每条语句至少执行一次
判定覆盖
每个判定的每个分支至少执行一次
条件覆盖
每个判定的每个条件应取到各种可能的值
判定/条件覆盖
同时满足判定覆盖和条件覆盖
条件组合覆盖
每个判定中各条件的每一种组合至少出现一次
修改条件判断覆盖
每一个判断的所有可能结果都出现过
每一个判断中所有条件的所有可能结果都出现过
每一个进入点及结束点都执行过
判断中每一个条件都可以独立影响判断结果
遵循特定原则,三步法结合多种测试方式
用于:军工、航天等可靠性要求高的领域
灰盒测试
介于白盒和黑盒之间,多用于集成测试
即关注输入输出正确性,也关注程序内部情况
通过表征性现象判断内部运行状态
由特定方法和工具组成,结合白盒和黑盒测试要素
是否执行被测程序
静态测试
不运行被测程序
分析源程序语法、结构、过程、接口等检查正确性
包括
代码检查
静态结构分析
代码质量度量
优点
人工或借助工具自动运行,能发现如不匹配参数等问题
发现缺陷早
缺点
耗时长
对技术能力要求高
动态测试
运行被测程序
检查运行结果与预期结果差异,分析运行效率、正确性和健壮性等性能
组成
构造测试用例
执行程序
分析程序输出结果
测试对象
功能测试
根据产品特性、操作描述和用户场景测试产品功能,确保程序按预期方式运行
步骤
需求分析
编写测试用例
准备数据
执行测试
对比结果
报告
性能测试
在不同情况下的响应时间,检查是否满足性能要求
负载测试
压力测试
并发测试
容量测试
可靠性测试
通过自动化工具模拟多种负载场景
安全测试
验证程序安全等级,识别潜在安全缺陷
程序本身安全性
数据安全
目的
查找安全隐患
检测防范能力
渗透测试
兼容性测试
测试软件之间、软硬件之间能否协调工作
内容
软件在不同操作系统平台及版本
自身前后兼容
与其他软件兼容
数据兼容性
界面测试
测试用户界面功能模块布局、整体风格、控件位置、操作便捷性、导航、页面元
素可用性、文字正确性等
素可用性、文字正确性等
检查界面是否美观
易用性测试
用户体验测试
交互的适应性、功能性和有效性的集中体现
流程
裁剪出易用性检查清单
项目组成员达成一致
按清单排查并管理
评估并记录结果
稳定性测试
长时间运行软件,观察软件和系统在多次测试、开启关闭、业务切换、长时间开启不操作以及日常用户操作等情况下是否正常运行
检查内存占用等方面是否出现问题
测试阶段
单元测试
对软件中最小可测试单元检查验证
以白盒技术为主,黑盒技术为辅
开发人员在组长监督下完成,使用数据多为非真实数据
测试阶段在编码前后
测试内容
模块接口
局部数据
集成测试
将软件集成起来后进行测试,又叫子系统测试
针对软件高层设计,以模块和子系统为单位
层次
模块内
子系统内
系统集成
测试阶段在单元测试之后
测试内容
模块间数据传输
系统测试
对整个系统进行测试
将软硬件、系统人员看作整体,检验是否满足系统说明书
发现系统分析和设计错误
内容
恢复测试
安全测试
压力测试
测试阶段在集成测试之后
测试方法
黑盒测试
测试内容
功能
性能
系统维护
系统可靠性
软件可靠性设计
容错设计技术
恢复快设计
将程序划分为恢复块,每个恢复块含多个功能相同但设计不同的程序块,检测到故障时切换备用程序块
N版本程序设计
设计多个不同软件版本,对同样输入采用多数表决方式,各版本使用不同算法、编程语言、测试方法等确保相互独立
冗余设计
在主系统外设计备用软件模块,主模块故障时切换,可提高可靠性但增加额外开销
检错技术
在软件中设置检测点和检测机制,通过监测返回结果、运行时间等方式检测软件运行状态,发现故障后停止软件并报警
降低复杂度设计
模块内部复杂性
模块间关联复杂性
过高复杂度是软件缺陷根源,通过简化软件结构、优化数据流等方式降低复杂度以提高可靠性
系统配置技术
双机热备
采用主备服务器模式,通过 “心跳” 检测切换
服务器集群
多台服务器组成单一系统,某台服务器故障时其他服务器可接管
软件可靠性定量描述
MTBF
平均故障间隔时间,是指可修复系统在两次相邻故障之间的平均工作时间,用于衡量系统的可靠性和稳定性
MTTR
平均修复时间,是指系统从发生故障到恢复正常运行所需要的平均时间
MTTA
平均确认时间,是指从系统发出故障警报到相关人员确认故障的平均时间
MTTF
平均故障前时间,是指不可修复系统或者产品从开始使用到出现故障的平均时间
MTTD
即平均故障检测时间,是指从故障发生到故障被检测到的平均时间
一般 MTTR,MTTD 很小,所以通常认为 MTBF 约等于 MTTF
影响因素
运行剖面(环境)
软件规模
软件内部结构
软件的开发方法和开发环境
软件的可靠性投入
系统运行与维护
运维技术指标
MTTR
系统可修复故障的平均维修时间,从系统故障发生到恢复正常状态所花费时间的平均值,含故障通知、排查诊断、修复测试等时间
MTTR = 给 定时间段内消耗在系统修复上的总时间 / 维修次数
衡量运维团队故障修复进度,过长会导致维修效率低,影响业务与客户关系;平均恢复时间指设备或系统从故障恢复所需平均时间,表明恢复速度;平均响应时间衡量运维团队或系统消除系统攻击效率;平均解决时间衡量应对意外事件及处置的反应能力
MTBF
系统两次故障之间的平均运行时间,从系统开始正常运行或故障恢复后到下次故障发生的累计运行时间相对故障次数的平均值
MTBF = 多次故障之间系统总运行时间 / 故障总数
衡量系统可靠性,值越大系统越可靠,可作系统升级或硬件维护参考,增大此值间接说明维护能力提升,不包括计划内维护导致的系统退出服务时间
MTTF
可更换或不可修理系统或部件提供正常功能的平均持续时间,多个同类系统或部件从开始正常运行到出现故障的持续时间相对同种系统或部件数量的平均值
MTTF = 给 定时间周期内系统可正常运行总时间 / 故障总数
衡量不可修复系统或部件的可靠性,表明系统在失效前可运行时间,其历史数据可作为运维人员掌握硬件预期寿命、安排系统检查
维护工作的参考;MTTF 短意味着系统频繁宕机、业务中断
维护工作的参考;MTTF 短意味着系统频繁宕机、业务中断
MTTA
运维团队响应业务部门投诉、业务中断或异常事件所花费的平均时间
MTTA = 给定时间周期内系统出现告警到告警确认之间累计的总时间 / 事件总数
体现告警管理系统效率和运维团队响应能力,可监视运维团队响应性,时间过长说明事件研判效率不高,缩短可提升客户满意度、降低运维成本
系统运行管理
对信息系统运行管控,记录状态,修改扩展,为管理和决策支持
包括
日常运行管理
系统运行情况记录
系统运行情况检查与评价
系统故障管理
尽可能快恢复系统运行,减少对业务运营不利影响,确保服务质量和可用性
过程
基本活动故障监视
故障调查
故障排查和恢复处理
故障收尾
确认与更新
与用户确认故障是否成功解决,更故障信息和记录
软件系统维护
在软件交付使用后,到淘汰之前到整个时期内,为改正错误或满足新需求而修改软件
分类
改正性维护
识别纠正软件错误
改正软件性能缺陷
排除实施中的误用
进行诊断和改正错误的过程
适应性维护
为使软件适应这些变化而修改软件的过程
使用过程中,外部环境(新软硬件配置)或数据环境(数据库、数据格式等)发生变化
完善性维护
软件使用过程中,用户提出新的功能和性能需求
修改或再开发软件以扩充功能、增强性能、改进效率、提高可维护性
预防性维护
预先提高软件等可维护性、可靠性等,为日后改进软件打基础
采用先进软件工程方法对需维护等软件或部分进行重新设计、编码和测试
如何提高可维护性
从软件工程的角度出发,使用软件开发过程规范,产生文档丰富维护资源,增加软件可维护性
需求分析阶段
为后续开发和维护明确方向,提取考虑软件在不同平台的适应性
方法
明确未来改进和可能修改的部分
讨论软件跨平台可移植性并形成解决方案
设计阶段
提高软件模块独立性,便于修改和扩充,增强软件的通用性和可复用性
方法
遵循“高内聚,低耦合”原则
对可能修改处采用灵活可扩充设计
考虑跨平台可移植性设计
加大可复用构件设计力度
编码阶段
便于维护人员理解代码逻辑,提高代码复用率,减少重复开发
方法
采用科学代码规范
强化注释力度,保证注释质量
加大可复用构件使用力度
测试阶段
保证软件质量,为维护后的回归测试提供基础,确保维护质量
方法
做好测试以减少维护工作量
完善测试相关文档(测试计划、用例、报告)
维护阶段
保证系统一致性,避免因文档不同步导致的问题,使用户能正确使用软件,减少因使用问题导致的误解
方法
严格的配置管理,维护后同步更新系统和用户文档
大维护交付前做好用户培训
遗留系统处置
Legacy System
任何基本上不能进行修改和演化以满足新变化的业务需求的系统
四象限评价法
第一象限
高水平高价值
技术含量高,业务价值高,满足企业业务和决策需求
改造策略
系统功能增强(在原系统基础上增加新应用要求,不改变遗留系统本身)
数据模型改造(将旧数据模型转化为新模型)
第二象限
高水平低价值
技术含量高,业务价值低,完成局部业务管理,形成信息孤岛
集成策略
对遗留系统进行集成
第三象限
低水平低价值
技术含量低,业务价值低
淘汰策略
全面开发新系统代替遗留系统
适用于
业务根本变化,遗留系统不适应企业运作
维护人员和文档丢失
开发新系统成本更合算
第四象限
低水平高价值
技术含量低,价值高,企业以来该系统
继承策略
开发新系统时完全兼容遗留系统的功能模型和数据模型
新老系统同时运行一段时间后逐渐切换到新系统
新旧系统转换
运用某种方式,由现有系统的工作方式向新系统工作方式的转换
即系统设备、数据、人员等的转换过程
分类
直接转换策略
在原有系统停止运行的某一时刻,新系统立即投入运行,中间无过渡阶段
适用于
新旧系统不太复杂
现有系统完全不能使用
并行转换策略
新系统和现有系统并行工作一段时间,试运行后新系统正式替换现有系统
适用于
较大的系统
处理过程复杂、数据重要的系统
分段转换策略
直接转换和并行转换方式结合,分期分批逐步转换
适用于
较大的系统
现有系统稳定能适应业务发展
新旧系统转换风险大
信息安全
信息安全
信息系统安全体系
系统安全分类
实体安全
保护计算机设备等实体,分环境、设备、媒体安全
避免经济损失,防止信息丢失破坏
信息安全
分为
操作系统安全
数据库安全
网络安全
病毒防护
访问控制
数据加密
认证
确保信息保密、完整、可用、可控
运行安全
分为
系统风险管理
审计跟踪
备份与恢复
应用
保障系统正常、可靠、连续运行
人员安全
涉及人员安全意识、法律意识、安全技能
从人员角度保障系统安全
等级保护
用户自主保护级(第一级)
通过隔离用户与数据实现自主安全保护,对用户实施访问控制,保护用户和用户组信息
适用于
普通内联网用户
系统审计保护级(第二级)
实施更细粒度自主访问控制,用户通过登录规程等对自身行为负责
适用于
通过内联网或国际网进行商务活动,需保密的非重要单位
安全标记保护级(第三级)
具备第二级功能,提供安全策略模型、数据标记等,能准确标记输出信息并消除测试错误
适用于
地方各级国家机关、金融机构等众多重要单位
结构化保护级(第四级)
基于形式化安全策略模型,访问控制扩展到所有主体与客体,考虑隐蔽通道,抗渗透能力强,加强鉴别机制等
适用于
中央级国家机关
广播电视部门等关键部门与机构
访问验证保护级(第五级)
满足访问监控器需求,仲裁主体对客体全部访问,抗篡改且复杂性低,扩充审计机制,抗渗透能力很高
适用于
国防关键部门和依法需特殊隔离的单位
数据加密技术
对称加密算法
AES、DES、3DES
RC-5、IDEA
非对称加密算法
RSA、ECC
商用密码
国产商业密码
认证技术
数字签名
附加在数据单元上的数据或密码变换,用于确认数据来源、完整性和防止伪造
基于非对称加密算法,有普通和特殊数字签名算法
主要功能是保证信息传输完整性、发送者身份认证和防止抵赖
杂凑算法
利用散列函数加密,如MD5将任意长度字节串变成定长大数,产生128位消息摘要
SHA家族算法对长度不超过264位消息产生160位消息摘要,SHA有5个算法
数字证书
由认证中心签发对用户公钥的认证,内容包括CA及用户信息、公钥、时间等
国际上遵从X509体系标准
不同CA发放证书需证书链通信,CA维护证书吊销列表
身份认证
口令认证
用户名/密码,简单常用但不安全,易泄漏和被截获
动态口令认证
密码按时间或使用次数变化,一次一密较安全,但可能存在同步问题和输入不便
生物特征识别
通过身体或行为等生物特征认证,分为身体和行为特征,又有高级、次级和深奥生物识别技术分类
密钥管理体系
处理密钥从产生到销毁全过程的相关问题
KMI机制
封闭网
设KDC发密钥,有静态和动态分发,基于秘密信道,静态含点对点、一对多、网格状分发,动态有对称和非对称加密分发
PKI机制
开放网
遵循标准的密钥管理平台,解决依赖秘密信道问题,含CA等组件,基于加密等技术
SPK机制
规模化专用网
两种实现方式
LPK用RSA算法,有缺陷
CPK用DLP或ECC实现,克服LPK缺点
通信与网络安全技术
防火墙
虚拟专用网
安全协议
SSL
传输层安全协议,由握手、记录、警报协议组成
用于Internet传输机密文件,提供身份认证、数据加密与完整性保护
使用40位RC4算法,实现分接通等6阶段,可用于安全邮件
HTTPS
HTTP等安全版,应用SSL于HTTP应用层,使用特定端口
建立安全通道保障数据传输,确认网站真实性
难窃听,防中间人攻击,支持X509认证
PGP
基于RSA的邮件加密软件
对邮件保密与签名,防非授权阅读,确认发件人,也用于文件加密
采用独特加密流程,承认两种证书格式
IPSec
工业标准网络安全协议,针对IPv4/6
为IP网络通信提供透明安全服务,保护数据,抵御攻击
基于端对端模式,支持IP级流量加密认证
单点登录技术
Single Sign-On SSO
通过用户的一次性认证登录,即可获得需要访问系统和应用软件的授权
Kerberos机制
Kerberos为单点登录提供基于信任第三方的身份认证方法,是实现单点登录的重要技术手段,保障在开放网络环境下的安全认证
员工在登录办公系统时,向 Kerberos 服务器进行身份验证,验证通过后,服务器会为员工颁发票据。当员工访问邮件系统和文件共享系统时,无需再次输入账号密码,只需出示之前获得的票据,系统通过与 Kerberos 服务器验证票据的有效性,即可确认员工身份并授权访问
外壳脚本机制
通过原始认证进入系统外壳激活目标平台访问,简化登录流程,契合单点登录理念,但在口令同步等管理方面有欠缺,可在单点登录实施中改进或与其他机制配合
员工通过原始用户名和密码登录系统外壳,外壳脚本会根据员工权限,激活对应的办公软件(专用脚本)的访问权限。员工登录一次即可使用这些集成的软件。
系统访问控制技术
访问控制是策略和机制等集合,允许对限定资源对授权访问,是系统安全保障机制核心,实现数据保密性和完整性等主要手段
分类
自主访问控制 DAC
依主体身份和所属组,主体指定其他主体对自身资源对访问及类型
给用户或组分配权限规则集,主体可自主授权,但需求变化时授权频繁
适用于多用户环境
强制访问控制 MAC
主体和客体有既定安全属性,访问取决于两者关系,常需满足BLP模型特性
同DAC分配权限,安全性高但管理员工作重,易出漏洞
适用于安全性要求高的系统
基于角色的访问控制 RBAC
用户关联角色,角色关联访问许可权
有4种模型,灵活、方便、安全,能描述多种安全策略
适用于大型系统,如大型DBMS权限管理
基于任务的访问控制 TBAC
权限随任务上下文变化,是动态安全模型
由工作流等4部分组成,支持最小特权和最小泄漏原则,动态管理权限
适用于工作流、分布式处理等系统
基于对象的访问控制 OBAC
ACL关联受控对象及属性,设计访问控制选项,允许策略复用、继承、派生
可控制对象及属性,派生对象继承访问设置,减轻权限管理工作量
适用于信息量大,且变化频繁的管理系统
访问控制模型
从访问控制的角度出发,描述系统安全,建立安全模型的方法
Bell - Lapadula模型
第一个正式的安全模型,基于强制访问控制(MAC)系统,是典型的信息保密性多级安全模型,主要应用于军事系统,将数据和用户安全等级划分为公开、受限、秘密、机密和高密 5 个等级
上读:主体不可读取安全级别高于它的数据;下写:主体不可写入安全级别低于它的数据
Lattice模型
通过划分安全边界对 BLP 模型进行扩充,将用户和资源分类,允许它们之间交换信息,注重形成 “安全集束”,执行访问控制功能时本质与 BLP 模型相同,遵循 BLP 模型的上读和下写原则,但需各对象位于相同的安全集束中
上读(同 BLP 模型,但需在相同安全集束):主体不可读取安全级别高于它的数据;下写(同 BLP 模型,但需在相同安全集束):主体不可写入安全级别低于它的数据
Biba模型
类似于 BLP 保密性模型,也使用 MAC 系统,对数据提供分级别的完整性保证,模仿 BLP 模型的信息保密性级别定义信息完整性级别,避免越权和篡改行为发生
下读:主体不能读取安全级别低于它的数据;上写:主体不能写入安全级别高于它的数据
项目管理
项目管理
范围管理
确定项目的边界,确定哪些工作是项目应该做的,哪些工作不应该包括在项目中
用于确保项目干系人对作为项目结果的产品(或服务),以及开放这些产品所确定的过程有一个共同理解
过程
编制范围管理计划
对定义、确认和控制项目范围的过程进行描述
定义范围
详细描述产品与项目范围,编制项目范围说明书作为项目决策基础
输入
项目章程
项目范围管理计划
组织过程资产
批准的变更申请
创建工作分解结构 WBS
将整个项目工作分解为较小、易管理的组成部分,形成由上而下的分解结构,持续分解至可管理的工作包,其总和即项目所有工作范围
确认范围
正式验收已完成的可交付成果
范围控制
监督项目和产品的范围状态,管理范围基准变更
进度管理
采用合适的方法,确定进度目标,编制进度计划和资源供应计划,进行进度控制
过程
活动定义
确定完成项目各项可交付成果而需开展的具体活动
将项目工作分解为具体活动,为后续进度管理提供基础
活动排序
识别和记录各项活动之间的先后关系和逻辑关系
明确活动开展顺序,构建项目进度逻辑框架
活动资源估算
估算完成各项活动所需要的资源类型和数量
为活动提供资源保障,合理分配资源
活动历时估算
估算完成各项活动所需的具体时间
为项目进度计划制定提供时间参数
进度计划编制
分析活动顺序、活动持续时间、资源要求和进度制约因素,制定项目进度计划
确定项目活动的执行时间安排,指导项目按计划推进
进度控制
根据进度计划开展项目活动,如果发现偏差,则分析原因或进行调整
确保项目按既定进度计划执行,及时纠正偏差
单代号网络图
Activity On Vertex AOV
以顶点表示活动,弧表示活动之间的先后关系
节点编号表示工作
双代号网络图
Activity On Edge AOE
以顶点表示事件,以弧表示活动
以弧及两端的节点编号表示工作
三点估算法
乐观时间:在任何事情都很顺利的情况下,完成某项工作的时间
最可能时间:在正常情况下,完成某项工作的时间
悲观时间:在最不利的情况下,完成某项工作的时间
期望 = (乐观时间+4*最可能时间+悲观时间)/6
成本管理
确保项目在批准的预算条件下尽可能保质按期完成,对各个过程进行管理控制
成本估算
对完成项目所需成本的估计和计划,是项目计划中重要、关键且敏感的部分
基本估算方法
自顶向下估算
自底向上估算
差别估算
成本预算
把估算的总成本分配到项目的各个过程,建立成本基准计划以衡量项目绩效
成本控制
保证各项工作在各自预算范围内进行
配置管理
在技术文档中明确说明并最终组成软件产品的功能或物理属性,包括即将受控的所有产品特性,其内容及相关文档、软件版本、变更文档、软件运行的支持数据,以及其他一切保证软件一致性的组成要素
编制软件配置管理计划
项目启动时,项目经理制订整个项目开发计划,配置管理计划是其一部分,是软件开发工作基础
配置标识
确定进入配置管理的内容形成配置项,明确配置项命名方式及描述信息,是配置管理基础与前提
变更管理和配置控制
对配置项变更加以控制和管理,防止复杂无形的软件在多次变更下失控混乱
配置状态说明(配置状态报告)
有效地记录、报告管理配置所需信息,及时准确给出配置项当前状况,供相关人员了解以加强管理
配置审核
验证配置项对配置标识的一致性,确保软件配置管理有效,杜绝混乱现象
质量管理
确立质量方针及实施质量方针的全部职能及工作内容,并对其工作效果进行评价和改进
ISO 9000 系列标准
组成
计划
控制
文档
原则
以顾客为关注焦点
领导作用
全员参与
过程方法
管理的系统方法
持续改进
以事实为基础进行决策
与供方互利的关系
人力资源管理
编制人力资源计划
决定、记录和分配项目角色、职责及报告关系的过程
明确所需人员类型与技能,如确定优秀系统分析师、一流项目经理等需求;分配任务,基于 “适合优先” 原则
层次结构图、责任分配矩阵(RAM)、文本格式的角色描述
组建项目团队
根据项目开发计划,获取完成项目工作所需的人力资源
物色成员,纳入符合要求人员;明确成员角色、责任及配合、汇报和从属关系;人员可来自企业内外部
项目团队建设
提高项目团队成员个人技能、凝聚力,创建团队文化
提高成员技能,降低成本、缩短工期、改进质量、提高绩效;增强信任和凝聚力,降低冲突,促进合作;创建团队文化,鼓励交叉培训和经验知识共享
培训、集中办公、团队建设活动、奖励表彰;形成期、震荡期、正规期、表现期
管理项目团队
跟踪个人和团队的绩效,提供反馈,解决问题和协调变更,以提高项目的绩效
观察团队行为、管理冲突、解决问题、评估成员绩效;处理资源冲突,合理分配资源
资源负荷、资源平衡
沟通管理
及时而适当地创建、收集、发送、储存和处理项目的信息
项目经理进行内外部沟通,系统分析师对内协助技术管理,对外获取用户需求
正式沟通、非正式沟通;会议
风险管理
风险管理计划编制
描述如何安排与实施项目风险管理,是项目开发计划的从属计划,内容包括角色与职责、预算、风险类别、风险概率和影响的定义、汇报格式、风险跟踪等;很多项目还有应急计划(风险发生时采取的预先确定措施)和应急储备(项目范围或质量变更时用于减少成本或进度风险的资金)
风险识别
采用系统化方法识别项目中已知和可预测的风险,是反复过程,项目团队应参与;包括确定风险来源、产生条件,描述风险特征,确定影响整个项目的风险事件;在项目生命周期自始至终定期进行,分为收集资料、估计项目风险形势、识别潜在风险三步
风险定性分析
对已识别风险进行优先级排序,包括风险可能性与影响分析(确定风险发生可能性及对项目时间、成本、范围等各方面影响)、确定风险优先级(反映风险对项目综合影响)、确定风险类型
风险定量分析
在不确定情况下进行决策的量化方法,采用灵敏度分析、期望货币价值分析、决策树分析、蒙特卡罗模拟等技术;蒙特卡罗方法将多元函数取值范围问题分解为参数概率问题,用统计方法处理得到综合概率,分析取值范围可能性,关键是找随机数,适用于复杂模型,步骤包括选取变量、分析概率分布、选取样本、模拟价值结果、分析结果
风险应对计划编制
风险应对策略分防范策略(风险发生前采取措施防范)和响应策略(风险发生后采取措施降低损失);消极风险防范策略常用,目的是降低风险发生概率或减轻损失,如避免、转移、减轻策略;正向风险应对策略有开拓、分享和强大(提高);风险防范策略需体现在项目计划中,风险响应策略是事件触发,风险发生后执行
风险监控
跟踪已识别风险,监测残余风险和识别新风险,保证风险计划执行,评价计划对减轻风险的有效性
信息文档管理
软件文档标准
规范软件文档编制
标准为《计算机软件文档编制规范》(GB/T 8567—2006),适用于各软件产品开发与管理过程,规定文档过程、25 种文档格式及面向对象软件需编制的文档
数据需求说明
提供数据描述与采集技术信息
含引言、引用文件、数据逻辑描述(分动态和静态数据)、数据采集方式、注解、附录
技术报告
总结技术研究工作,保存成果
引言说明编写目的与背景并解释术语;阐述项目解决的技术问题、系统主要功能、研发中的技术问题及解决方法、系统现状与问题及解决方案、项目总结,还有注解和附录
项目开发报告
总结开发经验,评价开发工作
包括引言、引用文件、实际开发结果(产品、功能性能等)、开发工作评价(效率、质量等)、缺陷与处理、经验教训、注解、附录
计算机体系结构
数据库系统
数据库模式
三级模式
外模式
面向用户(程序员和终端用户)
描述组成用户视图的各个记录的组成、相互关系、数据项的特征、数据的安全性和完整性的约束条件
是局部数据的逻辑结构和特征的描述
概念模式
面向数据库管理员
数据库中全体数据的逻辑结构和特征的描述
描述现实世界中的实体及其性质与联系,定义记录、数据项、数据的完整性约束条件及记录之间的关系
内模式
面向系统程序员
描述存储记录的类型、存储域的表示和存储记录的物理顺序,以及索引和存储路径等数据的存储组织
是数据在数据库内部的表示方式
两级映射
物理独立性
用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的
逻辑独立性
用户的应用程序与数据库中的逻辑结构式相互独立的,当数据的逻辑结构改变时,应用程序不需要改变
关系模型
术语
关系(表文件):一个二维表,由行和列组成,对应数据库中的一张表
元组(记录):表中的一行
属性(字段):表中的一列,定义了数据的意义和数据类型
属性值:行和列交叉点的值,代表特定记录的特定属性的具体数据
主码(主键):用于唯一确定表中一个元组的数据,可以是一个或多个字段
域:属性的取值范围,定义了字段可以存储的数据类型和可能的值
关系模式:关系的逻辑描述,一般表示为:关系名(属性1,属性2,属性3,...,属性n)
关系运算基础
并:计算两个关系在集合理论上的并集
差:计算两个关系的区别
交:计算两个关系集合理论上的交集
笛卡尔积:计算两个关系的笛卡尔乘积
投影:从一个关系中抽取指明的属性(列),即SELECT
选择:从关系中抽取出满足给定限制条件的记录,即WHERE
自然连接:先做笛卡尔积然后筛选出满足条件的元组,并在结果中将重复的属性去掉
元组演算基础
t是元组变量,表示一个元数固定的元组
P是公式,即条件表达式
R(s),R是关系名,s是元组变量,s是关系的一个元组
s[i]θu[j]
s和u是元组变量,θ是算术比较运算符
元组 s 的第 i 个分量与元组 u 的第 j 个分量之间满足θ运算
{t|P(t)},表示满足公式P的所有元组t的集合
数据库设计与建模
需求分析
了解和分析用户需求,合作明确系统总体设计方案
是整个设计过程的基础,结果影响后续阶段实施效率
任务
编写需求说明书:数据流图、建立数据字典
概要设计
将需求分析得到的用户需求建立抽象的信息模型(概念模型)
是现实世界的模型,便于与不熟悉计算机的用户交流,是数据库设计的关键
任务
选择局部应用、逐一设计分ER图和ER图合并
过程
自顶向下方法进行需求分析
自底向上方法设计概念结构
首先设计局部ER模型
ER图
描述概念世界,建立概念模型的工具
实体
用矩形表示,标注实体名称
如用户、商品等实体
属性
单值属性
用椭圆表示,用连线与实体连接起来
如用户实体的姓名属性
多值属性
用双实线椭圆表示,多值属性可以有一个或两个以上的值
如学员实体的兴趣爱好属性
派生属性
用虚线椭圆表示,从基本属性计算出
如总成绩、平均成绩
实体之间的关系
用菱形框表示,框内标注联系名称
用连线将菱形框与有关实体相连,并在连线上注明联系类型(1:1,1:n,或m:n)
弱实体
依赖于某个实体而存在,依赖对象为强实体
订单号依赖于用户实体
弱关系
一般与弱实体一起使用,仅弱实体才会涉及的关系
不完全概化
父实体的实例可以是子实体的实例,也可能不是任何子实体的实例
即父实体的部分实例不是于任何子实体
全部概化
父实体的所有实例必须是某个子实体的实例,不存在独立的父实体实例
将各个局部ER图合并起来形成全局ER模型
合并
确定各个局部ER图的公共实体类型,以其为单位合并
直至所有相同实体类型合并起来,得到全局ER图
消除冲突
局部ER图存在的不一致问题,需要消除冲突形成统一概念模式
属性冲突
属性域冲突
取值冲突
各部门协商解决
命名冲突
同名异义
异名同义
通过讨论、协商等行政手段解决
结构冲突
同一对象在不同应用中的抽象不同
同一实体在不同局部ER图中属性个数或排列次序不同
实体间关系在局部ER图中联系类型不同
消除冗余
冗余属性:可由基本数据导出的数据
冗余联系:可由其他联系导出的联系
优化全局ER模型
逻辑设计
用具体的DBMS实现用户需求,将概念结构转换为相应数据模型
根据用户处理要求、安全性考虑建立必要视图并优化数据模型
任务
数据模型设计
ER图转换为关系模式
1:1关系
转换为独立关系模式
关系的属性由联系相连各实体的主码以及联系本身的属性组成,主码是每个实体的主码
班长(学号,姓名,专业)
班级(班级号,班级人数)
管理(学号,班级号)
班级(班级号,班级人数)
管理(学号,班级号)
与联系一端实体的关系模式合并
将另一个实体的主码和联系本身的属性加入到该端实体关系模式的属性中
班长(学号,姓名,专业,班级号)
班级(班级号,班级人数)
班级(班级号,班级人数)
1:n关系
转换为独立关系模式
关系的属性由与该联系相连的各实体的主码以及联系本身的属性转换而来,主码是 n 端实体的主码
学生(学号,姓名,专业)
班级(班级号,班级人数)
组成(学号,班级号)
班级(班级号,班级人数)
组成(学号,班级号)
与n端实体对于关系模式合并
将联系本身的属性和 1 端实体的主码加入 n 端对应关系模式中
学生(学号,姓名,专业,班级号)
班级(班级号,班级人数)
班级(班级号,班级人数)
m:n关系
关系的属性由与该联系相连的各实体的主码以及联系本身的属性转换而来
各实体主码的组合是该关系的主码或关系主码的一部分
学生(学号,姓名,专业)
课程(班级号,授课教师)
选修(学号,课程号)
课程(班级号,授课教师)
选修(学号,课程号)
关系模式规范化
函数依赖
设一个职工关系为(职工号,姓名,性别,年龄,职务)
职工号函数决定姓名,或姓名函数依赖于职工号,记作“职工号→姓名”,职工号为该函数依赖的决定因素
类型
平凡函数依赖
非平凡函数依赖
完全函数依赖
部分函数依赖
传递函数依赖
Armstrong公理
自反性
若 X⊇Y,则存在 X→Y
增广性
若 X→Y,则存在 XZ→YZ
传递性
若 X→Y 和 Y→Z,则存在 X→Z
合并性
若 X→Y 和 X→Z,则存在 X→YZ
分解性
若 X→Y,且 Y⊇Z,则存在 X→Z
伪传递性
若 X→Y 和 WY→Z,则存在 WX→Z
复合性
若 X→Y 和 Z→W ,则存在 XZ→YW
自增性
若 X→Y,则存在 WX→Y
无损连接分解
分解后的关系通过自然连接可以恢复成原来的关系
设 ρ = {R1, R2}是 R 的一个分解,F 是 R 上的函数依赖集。那么分解ρ相对于 F 是无损级联分解的充要条件(R1 ∩ R2) → (R1−R2)或(R1 ∩ R2) → (R2−R1)
保持函数依赖
分解后的函数依赖合并起来与原函数依赖是等价的
规范化意义
数据冗余
相同数据在关系中多次重复出现
某课程有 100 个学生选修,课程的任课教师姓名和地址在关系 R 中重复出现 100 次
修改异常
因数据冗余,修改数据时需多处修改,否则会导致数据不一致
插入异常
因部分信息缺失,导致相关数据无法正常插入数据库
删除异常
删除某类数据时,会意外删除其他不应删除的数据
键/码/属性
主键
用于在同一实体集中区分不同实体的候选码
应选从不或极少变化的属性
一个实体集仅有一个主码
超码
一个或多个属性的集合,能在实体集中唯一标识一个实体,可能含多余属性
可唯一标识实体,但可能存在冗余属性
候选码
若超码的任意真子集不能成为超码,则为候选码
不包含多余属性
图示法
将关系模式的函数依赖关系,用有向图的方式表示,其中顶点表示属性,弧表示属性之间的依赖关系
找出入度为 0 的属性集,并以该属性集为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
若入度为 0 的属性集不能遍历图中所有结点,则需要尝试性地将一些中间顶点(既有入度,也有出度的顶点)并到入度为 0 的属性集中,直至该集合能遍历所有顶点,则该集合为候选键
主属性
包含在任一候选码中的属性
非主属性
不包含在任一候选码中的属性
五大范式
1NF
无重复
所有属性只包含原子值,每个分量不可再分
2NF
主键独
满足 1NF,且不存在非主属性对候选码的部分函数依赖;若每一个候选码都是单码则也满足
是否存在非主属性对候选码的部分函数依赖
3NF
无传递
满足 1NF,不存在非主属性对候选码的传递函数依赖;非主属性既不依赖也不传递依赖于任何候选码
不存在非主属性的关系模式一定为 3NF
是否存在非主属性对候选码的传递依赖
BCNF
传递无
满足 1NF,不存在任何属性对候选码的传递函数依赖,关系模式中任何函数依赖的左侧必须是码
函数依赖左侧是否为码
4NF
多值除
是 BCNF 的推广,针对有多值依赖的关系模型,需将一个表中多个多值依赖拆分开
是否存在多个多值依赖
确定完整性约束
确定用户视图
反规范化设计
物理设计
为给定的逻辑数据模型选择高效、最合适的物理结构(数据库的存储结构和存储方法)
对物理结构进行时间和空间效率方面的评价
数据库控制功能
并发控制
多用户共享系统中,许多事务可能同时对同一数据进行操作
DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏
事务
用户定义的一个数据库操作序列,要么全做,要么全不做
DBMS运行的基本单位
原子性(Atomicity)
事务是数据库的逻辑工作单位
事务包含的一组更新操作是原子不可分的,是一个整体
一致性(Consistency)
使数据库从一个一致性状态变到另一个一致性状态
隔离性(Isolation)
一个事务的执行不能被其他事务干扰
一个事务内部的操作及使用的数据对并发的其他事务是隔离的
并发执行的各个事务之间不能互相干扰
也称可串行性
持久性(Durability)
也称永久性
事务一旦提交,改变就是永久性的,无论发生何种故障,都不应该对其有任何影响
数据一致性问题
丢失修改(写覆盖)
事务 A 与事务 B 从数据库中读入同一数据并修改,事务 B 的提交结果破坏了事务 A 提交的结果,导致事务 A 的修改被丢失
A 事务回滚时,把已经提交的 B 事务的更新数据覆盖了
A 事务覆盖 B事务已经提交的数据,造成 B 事务所做操作丢失
读脏数据(读回滚)
事务 A 修改某一数据,并将其写回磁盘,事务 B读取同一数据后,事务 A由于某种原因被撤销,这时事务 A 已修改过的数据恢复原值,事务 B 读到的数据就与数据库中的数据不一致,是不正确的数据,称为 “脏数据”
不可重复读(读更新)
事务 A 读取数据后,事务 B 执行了更新操作,事务 A 前后两次读取结果就发生变化,造成了数据不一致性
幻读(读插入)
T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和第一次读取的结果不同
本质上也属于不可重复读的情况。只不过是插入导致的
封锁技术
封锁类型
排他型(X封锁)
事务 T 对数据对象 A 实现 X 封锁
只允许一个事务独锁某个数据,具有排他性
事务 T 可读取和修改数据 A;其他事务在 T 解除 X 封锁前,不能对数据 A 进行任何类型的封锁
事务 T 完成对数据 A 的操作后解除
共享型(S封锁)
事务 T 对数据 A实现 S 封锁
允许并发读,但不允许修改
事务 T 只能读取数据 A,不能修改;在所有 S 封锁解除前,任何事务不能对数据 A 实现 X 封锁
所有对数据 A 加S 封锁的事务完成读取操作后解除
封锁协议
一级封锁协议
事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放
防止丢失修改,保证事务 T 可恢复
不能保证可重复读和不读 “脏数据”,存在事务 T1 读数据 → 事务T2 加 X 锁并改数据释放锁 → 事务 T1 再读数据导致的问题
二级封锁协议
一级封锁协议基础上,事务 T在读取数据 R 之前先对其加 S锁,读完后即可释放 S 锁
防止丢失修改、防止读 “脏数据”
不能保证可重复读
三级封锁协议
一级封锁协议基础上,事务 T在读取数据 R 之前先对其加 S锁,直到事务结束才释放
防止丢失修改、读“脏数据”,能保证可重复读
两段锁协议
所有事务必须分两个阶段对数据项加锁和解锁
扩展阶段:对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁
收缩阶段:释放一个封锁之后,事务不能再申请和获得任何其他封锁
若并发执行的所有事务均遵守,则任何并发调度策略都是可串行化的
遵守该协议的事务可能发生死锁
封锁粒度
被封锁数据对象的大小
封锁粒度小则并发性高,但开销大
封锁粒度大则并发性低但开销小
性能优化
反规范化
将常用的计算属性(如总计、最大值等)存储到数据库实体中
重新定义实体,以减少外部属性数据或行数据的开支
将关系进行水平或垂直分割,以提升并行访问度
问题
数据冗余增加,相同数据在多个地方重复存储
更新异常,因数据冗余,更新一处数据可能遗漏其他重复存储处,导致数据不一致
插入异常,为满足反规范化结构要求,可能需先插入不必要数据
删除异常,删除某些数据可能意外删除其他有用信息
索引优化
索引选用属性原则
选用经常作为查询,不常更新的属性建立索引
避免对常更新属性建立索引,因其严重影响性能
索引数量影响
关系上索引过多会影响 UPDATE、INSERT 和 DELETE 性能,因关系更新时所有索引都需相应调整
索引优化策略
分析每个重要查询使用频度,找出使用最多的索引并进行优化
小数据量关系处理
数据量非常小的关系不必建立索引,关系扫描更快且消耗系统资源更少
完整性约束
可以通过 DBMS 或应用程序来实现,基于 DBMS 的完整性约束作为关系模式的一部分存入数据库中
实体完整性
实体完整性规则(Entity Integrity Rule)是指关系的主属性,即主码(主键)的组成不能为空,也就是关系的主属性不能是空值(NULL)。
参照完整性
若基本关系中含有与另一基本关系 S 的主键 PK 相对应的属性组 FK(FK 称为 R 的外键),则参照完整性要求,对及中的每个元组在 FK 上的值必须是 S 中某个元组的 PK 值,或者为空值。
插入删除问题( 级联/受限/置空/递归)
触发器
触发器是一个数据库对象,当指定数据操作语言操作发生时(触发事件),该对象可以自动执行一个或多个 SQL 语句(触发操作)
可以在一个表上定义一个或多个触发器以便在 SELECT、INSERT、UPDATE 或 DELETE 触发事件发生之后进行操作
用户定义完整性
针对特定数据库应用所定义的约束条件,由用户根据实际业务需求来制定。它可以对表中的列数据进行各种限制,如数据类型、取值范围、数据格式等,以确保数据满足业务规则
如在员工信息表中,规定员工的年龄必须在 18 - 60 岁之间,或者规定某一列只能输入特定的值等
备份恢复
物理备份
指直接拷贝数据库的数据文件、日志文件等物理文件来进行备份。比如在关系
型数据库中,将存储数据的 .mdf(SQL Server 数据文件)、dbf(部分数据库
表文件)等文件以及日志文件复制到其他存储位置。这种备份方式与数据库的
物理存储结构紧密相关,恢复时也是通过这些物理文件来恢复数据库到特定状
态,恢复速度相对较快,常用于需要快速恢复数据库的场景
型数据库中,将存储数据的 .mdf(SQL Server 数据文件)、dbf(部分数据库
表文件)等文件以及日志文件复制到其他存储位置。这种备份方式与数据库的
物理存储结构紧密相关,恢复时也是通过这些物理文件来恢复数据库到特定状
态,恢复速度相对较快,常用于需要快速恢复数据库的场景
逻辑备份
通过数据库的导出工具,将数据库中的数据以逻辑对象(如表、视图、存储过
程等)的形式导出为特定格式的文件,如 SQL 脚本文件等。它不直接操作数
据库的物理文件,而是按照数据库的逻辑结构来备份数据。恢复时需执行这些
逻辑文件中的指令来重建数据和对象,相对物理备份恢复速度可能较慢,但灵
活性较高,可跨平台和数据库版本使用,常用于数据迁移、数据子集备份等场
景
程等)的形式导出为特定格式的文件,如 SQL 脚本文件等。它不直接操作数
据库的物理文件,而是按照数据库的逻辑结构来备份数据。恢复时需执行这些
逻辑文件中的指令来重建数据和对象,相对物理备份恢复速度可能较慢,但灵
活性较高,可跨平台和数据库版本使用,常用于数据迁移、数据子集备份等场
景
完全备份
对整个数据库进行完整的备份,包括所有的数据表、索引、视图、存储过程等
数据库对象以及数据。它是最基础的备份方式,恢复时可以直接从完全备份中
恢复整个数据库到备份时的状态,但备份所需时间长、占用存储空间大,因为
每次都要备份全部数据
数据库对象以及数据。它是最基础的备份方式,恢复时可以直接从完全备份中
恢复整个数据库到备份时的状态,但备份所需时间长、占用存储空间大,因为
每次都要备份全部数据
增量备份
只备份自上次备份(可以是完全备份或上一次增量备份)以来发生变化的数据。
相比完全备份,它备份的数据量较小,备份速度快,占用空间少。但恢复时需
要依次使用完全备份以及后续的所有增量备份来恢复数据,恢复过程相对复杂
且耗时,如果其中某个增量备份损坏,可能影响恢复
相比完全备份,它备份的数据量较小,备份速度快,占用空间少。但恢复时需
要依次使用完全备份以及后续的所有增量备份来恢复数据,恢复过程相对复杂
且耗时,如果其中某个增量备份损坏,可能影响恢复
差异备份
备份自上次完全备份以来发生变化的数据。它介于完全备份和增量备份之间,
备份的数据量比增量备份大,但比完全备份小,备份速度也相对较快。恢复时,
只需使用完全备份和最近一次的差异备份即可恢复数据,恢复过程比增量备份
简单,在数据恢复和备份效率上取得一定平衡
备份的数据量比增量备份大,但比完全备份小,备份速度也相对较快。恢复时,
只需使用完全备份和最近一次的差异备份即可恢复数据,恢复过程比增量备份
简单,在数据恢复和备份效率上取得一定平衡
分布式数据库
数据库高级主题
分布式事务
主从复制/读写分离
冷热分离
分区与分片技术
NOSQL
MongoDB
Redis
ElasticSearch
数据仓库技术
联机分析处理 OLAP
多维分析
钻取
改变维的层次,变换分析粒度,包括向上钻取和向下钻取
切片和切块
在部分维选定值后,关注度量数据在剩余维分布,剩余两维为切片,三维及以上为切块
旋转
变换维的方向,重新安排维的放置(如行列互换)
操作系统
进程管理
进程(Process)是计算机系统中正在运行的程序实例
是操作系统进行资源分配和调度的基本单位
进程模型
三态模型
就绪态
进程已获取除 CPU 外的所有必需资源,处于随时可运行状态,但因 CPU 资源有限,需在就绪队列中等待系统分配处理器
运行态
进程获得处理器资源,正在执行。同一时刻,单 CPU 系统中只有一个进程处于运行态
阻塞态
又称等待态或睡眠态。进程因等待某一事件(如I/O 操作完成、等待特定资源等)而暂停运行,此时即便有空闲 CPU 也无法运行,需等到事件完成才会转为就绪态
五态模型
新建态
进程刚被创建时所处状态,系统正在为其分配资源、进行初始化等操作,尚未进入就绪队列
就绪态
进程准备好运行,等待 CPU 调度
运行态
进程正占用 CPU 执行
阻塞态
进程因等待特定事件而暂停,不具备运行条件
终止态
进程执行完毕正常结束,或因错误异常终止,又或被其他有权限的进程或操作系统终止。进入该状态后,进程不再执行,但系统会保留部分内核区数据用于善后处理,用户区数据通常被删除,一旦其他进程抽取完相关信息,操作系统就会彻底删除该进程
PV操作
前驱图
前趋图是一个有向无环图,用于描述进程之间的执行顺序
每个结点可以表示一个进程、程序段或一条语句
结点间的有向边则表示两个结点之间存在的偏序或前驱关系
同步与互斥
同步(按顺序)
在多个进程之间协调执行顺序,以保证它们按照既定的顺序共享资源
注重进程执行的先后顺序,通过协调使进程按特定顺序访问资源
互斥(独占)
不同进程间对某些关键资源进行独占访问,某一时刻只有一个进程可访问该资源,其他进程需等待资源释放
聚焦于资源的独占性,保证资源在同一时刻不被多个进程同时使用
PV操作
P操作
信号量S值减一
若 S≥0,执行 P 操作的进程继续执行
若 S<0,则该进程为阻塞状态,将其插入阻塞队列
申请资源,当资源足够时进程继续运行,资源不足时进程被阻塞
V操作
信号量S值加一
若 S>0,执行 V 操作的进程继续执行
若 S≤0,从阻塞状态唤醒一个进程,将其插入就绪队列,然后执行 V 操作的进程继续
释放资源且唤醒等待资源的进程
死锁
互斥条件
任一时刻只允许一个进程使用资源,难改变且应保证
不剥夺条件
进程已占用的资源不会被强制剥夺,实现复杂且有弊端
请求与保持条件
进程请求其余资源时,不主动释放已占有的资源,简单但可能资源浪费和进程延迟
环路条件
环路中每一条边是进程在请求另一个进程已占有的资源,主要缺点是资源分配序号问题和限制编程
内存管理
将系统的内存资源划分为多个逻辑空间,并在逻辑空间和物理内存之间建立映射关系
内存映射
程序逻辑地址到物理地址的转换
页式管理
理将主存空间和程序逻辑地址划分为固定大小的页面
使用页表将虚拟地址与物理地址进行转换
每个页面在物理内存中占据一个连续的内存块,称为页帧
逻辑地址=页号+页内地址
段式管理
把程序逻辑地址空间按段划分,每段是一个独立的逻辑实体
每个段分配一个连续的内存区,各段之间不要求连续
逻辑地址= 段号+段内地址
虚拟内存
程序运行前不必全装入内存,可先装入部分启动,其他留外存,根据需要调入内存,内存满时置换
可使大程序在小内存运行,多进程并发,系统具有请求调入和置换功能
淘汰算法
随机算法
随机地从内存中的页面中选择一个进行淘汰
轮转算法
按照一定的顺序(如页面在内存中的存储顺序)依次循环选择页面进行淘汰,就像一个环形队列,每次轮到的页面被淘汰
先进先出(FIFO)
优先淘汰最早进入内存的页面。它把页面按进入内存的先后顺序排成队列,当需要淘汰页面时,选择队首的页面
最近最久未使用(LRU)
当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。它认为过去一段时间内久未使用的页面,在未来一段时间内也很可能不会被使用。
最近没有使用页面置换算法(NUR)
为内存中的每个页面设置一个访问位,定期检查这些页面的访问位。如果页面的访问位为 0(表示最近没有被访问过),则将其淘汰;如果访问位为 1(表示最近被访问过),则将访问位清零,让其留在内存中继续观察
最优置换算法
淘汰在未来最长时间内不会被访问的页面。这是一种理想情况下的算法,在实际中很难实现,因为很难准确预知页面未来的访问情况,但可以作为衡量其他算法性能的一个参考标准
时钟页面替换算法(Clock)
循环缓冲区算法,它将内存中的页面组织成一个环形队列,类似于时钟的指针在环形队列上移动。每个页面都有一个访问位,当需要淘汰页面时,从当前指针位置开始扫描,若页面的访问位为 0,则淘汰该页面;若访问位为 1,则将其访问位清零并将指针移动到下一个页面,直到找到一个访问位为 0 的页面进行淘汰
文件系统
直接索引
适用于文件少且大小固定场景,查找速度快
间接索引
间接索引节点存储指向其他索引节点指针
适用于文件多或大小变化大的场景
一级间接索引
指向单层索引表
二级间接索引
通过一级索引找中间索引表再找数据块地址
磁盘空闲区管理
空闲文件目录
空闲块链
位示图
成组链接法
计算机网络
数据通信
单工
数据只能在一个固定方向传输,不能反向传输
无线电广播、电视广播
半双工
通信双方都能发送和接收信息,但不能同时进行,需交替进行
对讲机
全双工
两个方向的传输能同时进行,有独立的发送和接收信道
一般电话系统、交换式以太网、计算机之间的通信、手机
网络体系结构与协议
开放系统互联参考模型 OSI/RM
应用层
为应用软件提供网络服务
HTTP
超文本传输协议
用于网页浏览
80端口
FTP
文本传输协议
用于文件上传下载
20数据端口
21控制端口
SMTP
简单邮件传输协议
用于邮件发送
25端口
POP3
邮局协议版本3
用于邮件接收
110端口
Telnet
远程登录协议
用于远程控制
23端口
DNS
域名系统
用于域名与IP地址转换
53端口
SNMP
简单网络管理协议
用于网络管理
161管理端
162代理端
DHCP
用于自动分配IP地址等网络配置参数
67服务端
68客户端
TFTP
用于简单的文件传输,常用于设备初始化时的文件传输等场景
比FTP简单,占用资源少
60端口
表示层
数据格式转换、数据加密解密、数据压缩解压等
SSL/TLS
安全套接字层 / 传输层安全
会话层
建立、管理和终止应用程序之间的会话
NetBIOS
网络基本输入输出系统
用于在局域网中实现会话管理
RPC
远程过程调用
允许程序调用另一台计算机上的程序或服务
传输层
提供端到端的数据传输入服务
TCP
传输控制协议,面向连接,提供可靠数据传输
采用了重发技术,提供可靠、面向连接、全双工的数据传输
用于传输数据量少,且可靠性要求高的场合
UDP
用户数据报协议,无连接,传输速度快但不保证可靠性
用于传输数据量大,对可靠性要求不是很高,但要求速度快的场合
网络层
负责数据包从源到目的地的传输和路由选择
IP
网际协议
用于数据包寻址和路由
不保证可靠性
ICMP
互联网控制报文协议
用于网络诊断和控制
辅助IP协议运行
IGMP
互联网组管协议
用于组播管理
ARP
地址解析协议
用于将IP地址解析为物理地址
RARP
反向地址解析协议
用于将物理地址解析为IP地址
数据链路层
传输有地址的帧,错误检测和纠正,流量控制
PPP
点到点协议
用于拨号上网等场景
HDLC
高级数据链路控制协议
用于广域网连接
Ethernet
以太网协议
用于局域网通信
VLAN
虚拟局域网协议
用于在局域网内划分虚拟子网
MAC
媒体访问控制协议
定义数据链路层的访问控制方式
物理层
定义物理设备标准,如电缆规范和信号传输速率
RS-232
串行通信接口标准
RJ-45
以太网接口标准
IEEE 802.3
以太网物理层标准
光纤标准
光纤通道协议FC
用于光纤通信
TCP/IP模型
解决网络互联和数据传输问题
简单实用高效
应用层
为终端用户的应用提供网络服务
HTTP
FTP
SMTP
DNS
传输层
负责在网络中提供端到端的数据传输服务
TCP
UDP
互联网层
负责将数据包从源路由到目的地
IP
ICMP
IGMP
网络接口层
负责在物理网络媒介上进行数据传输
包括数据链路层和物理层的功能
以太网
Wi-Fi
地址类型
网络地址
用于标识一个网络
在 Internet 上,每个节点都依靠唯一的 IP 地址互相区分和相互联系
网络中的所有主机都属于这个网络,网络地址的主机位全为 0
如192.168.1.0/24
IPv4
IP 地址是一个 32 位的二进制数逻辑地址
组成
网络号
用于唯一标识一个网络
主机号
确定了某个网络上的某一台主机
主机地址
用于标识网络中的具体主机
在一个网络中,主机地址是分配给每台主机的唯一地址,主机位不全为 0 和全为 1
如在 192.168.1.0/24 网络中,192.168.1.1 到 192.168.1.254
广播地址
用于向同一网络中所有主机发送消息
主机位全为 1
如在 C 类网络 192.168.1.0/24 中,广播地址为 192.168.1.255
当发送数据到这个地址时,该网络中的所有主机都会接收并处理这条消息
子网地址
当对一个大网络进行子网划分后,用于标识各个子网
是在网络地址的基础上,根据子网掩码进一步划分出来的,用于区分不同的子网
如将 192.168.1.0/24 划分为多个子网,每个子网都有自己的子网地址
CIDR
Classless Inter-Domain Routing 无分类域间路由
消除了传统 IP 地址的分类和划分子网的概念,可以更加有效地分配 IPv4 的地址空间
把 32 位的 IP 地址划分为两个部分
前面的部分为网络前缀,用来指明网络
后面的部分用来表示主机
记法为在 IP 地址后加上斜线,然后在后面写上网络前缀所占的位
128.2.3.4/20 表示网络前缀为高 20 位,主机号为低 12 位
组播地址
用于标识一组主机,实现组播通信
可以让数据发送到一组特定的主机,而不是整个网络中的所有主机
D 类地址就是组播地址,范围是 224.0.0.0 到 239.255.255.255
常用于视频会议、在线直播等应用场景,多个接收者可以加入同一个组播组来接收数据
回环地址
用于本地主机进行自我测试和通信
主要是 127.0.0.1,它始终指向本地主机自身
当应用程序使用回环地址发送数据时,数据不会发送到网络中,而是直接在本地主机的网络协议栈中进行处理,常用于测试网络应用程序、本地进程间通信等
局域网与广域网
广域网
长距离下相关技术集合
用于大区域设备和通信设备互联成资源共享通信网络
局域网
地理分布范围小、数据传输速率高、误码率低
以PC等为主体、协议简单
拓扑结构
星型
总线型
环型
网络结构
载波监听算法
非坚持型监听算法
站点在发送数据前先监听信道,若信道空闲则立即发送;若信道忙,则随机等待一段时间后再监听,而不是持续监听信道状态
减少了站点间的冲突概率,但可能会增加信道的空闲时间,降低信道利用率
1-坚持型监听算法
站点在发送数据前先监听信道,若信道空闲则立即发送;若信道忙,则持续监听,直到信道空闲后立即发送数据
只要信道空闲就会马上发送数据,提高了信道的利用率,但当有多个站点同时监听到信道空闲时,容易产生冲突
P-坚持型监听算法
站点在发送数据前先监听信道,若信道空闲,则以概率 P 发送数据,以概率(1 - P)推迟到下一个时间片再监听;若信道忙,则持续监听,直到信道空闲后再按照上述概率规则决定是否发送数据
综合非坚持型和 1 - 坚持型算法的特点,在一定程度上平衡了冲突概率和信道利用率
冲突检测
边发边听
站点在发送数据的同时,持续监听信道上的信号
如果监听到的信号与自己发送的信号不一致,则说明发生了冲突
一旦检测到冲突,站点会立即停止发送数据,并发送一个拥塞信号通知其他站点,然后等待一段随机时间后重新尝试发送数据
帧结构
IEEE 802.3 MAC帧格式
一种标准的以太网帧格式
前导码、帧起始定界符
前导码和帧起始定界符用于同步接收方的时钟
目的地址、源地址
表示帧的接收和发送站点
长度 / 类型字段
指示数据字段的长度或使用的上层协议类型
数据字段
包含要传输的实际数据
帧校验序列
检测帧在传输过程中是否发生错误
以太网帧格式
与 IEEE 802.3 MAC 帧格式类似,但在某些细节上可能存在差异
通常也包含目的 MAC 地址、源 MAC 地址、类型字段、数据字段和帧校验序列等部分
类型字段用于标识上层协议,不同的以太网标准可能对帧格式有一些细微的调整
网络互联与常用设备
设备类型
物理层
中继器
对接收信号进行再生和发送
扩展传输距离
对高层协议透明
使用个数有限(以太网最多4个)
集线器
多端口中继器
数据链路层
网桥
根据MAC地址进行网络间信息转发,缓解网络通信繁忙,提高效率
连接相同MAC层的网络
二层交换机
传统意义上的交换机
多端口网桥
网络层
路由器
通过逻辑地址进行网络间信息转发,完成异构网络互联互通
连接使用相同网络层协议的子网
选择协议
内部网关协议
如 RIP、OSPF、IGRP、EIGRP 等,在一个自治系统内运行
外部网关协议
如 BGP,在两个自治系统间使用,控制路由策略
核心网关协议
主干网中核心网关交换路由信息时使用
协议算法
距离向量协议
计算链路矢量和距离确定最佳路径,定期发送路由表
链路状态协议
创建拓扑数据库计算最短路径形成路由表,定期发送链路状态信息
平衡型协议
结合距离向量和链路状态协议优点
三层交换机
带路由功能的二层交换机
高层(4-7)
网关
最复杂的网络互联设备
连接网络层以上执行不同协议的子网
交换类型
电路交换
数据传送前先设通路,通路被一对用户独占
报文交换
存储转发,需缓冲存储和排队,不能满足实时通信
分组交换
类似报文交换,但报文分组,规定最大分组长度
数据网络中使用最广泛的交换技术
数据报分组交换
虚电路分组交换
网络工程
网络规划
需求分析
可行性研究
对现有网络的分析与描述
网络设计
确定网络总体目标和设计原则
通信和资源子网设计
设备选型
网络操作系统与服务器资源设备选择
网络安全设计
网络实施
编制工程实施计划
网络设备到货验收
设备安装
系统测试
系统试运行
用户培训
系统转换
校验码
CRC(Cyclic Redundancy Check,循环冗余校验)
用于数据传输差错控制的校验码
例题
计算机组成原理
计算机系统层次结构
硬联逻辑级
计算机的内核,由门、触发器等逻辑电路组成
微程序级
机器语言是微指令集,微程序一般直接由硬件执行
微指令集
传统机器级
机器语言是该机的指令集,程序可由微程序解释
指令集
操作系统级
一方面直接管理传统机器中的软硬件资源,另一方面是传统机器的延伸
汇编语言级
机器语言是汇编语言,由汇编程序完成翻译工作
高级语言级
机器语言是各种高级语言,通过编译程序完成翻译
应用语言级
为使计算机满足某种用途专门设计,机器语言是各种面向问题的应用语言
Flynn分类
单指令流单数据流(SISD)
指令部件对单条指令译码和对单个操作部件分配数据
传统单处理器计算机
单指令流多数据流(SIMD)
并行处理机包括多个重复的处理单元,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同数据
并行处理机(矩阵处理机)
多指令流单数据流(MISD)
有 n 个处理单元对同一数据流按不同指令处理
少见,流水线有时被视为 MISD
多指令流多数据流(MIMD)
能实现作业、任务、指令等各级全面并行的多机系统
高性能服务器、超级计算机
存储器系统
分类
寄存器
可被 CPU 快速访问,是 CPU 内部存储单元
最快(比 Cache 还快)
容量极小
暂存 CPU 运算过程中的数据、指令和地址等
作为 CPU 运算时的高速数据暂存区域,提升运算速度
Cache
可快速向 CPU 提供指令和数据
速度很快
容量更小
存放当前最急需处理的程序和数据
确保获得高存取速率
主存
可由CPU直接访问
速度快
容量较小
存放当前正在执行的程序和数据
作为CPU直接处理数据和指令的存储区域
辅存
CPU不可直接访问,需要传送到主存
速度较慢
容量大
存放暂时不参与运行的程序和数据,作为主存的补充和后援
以较低成本提供大容量存储
磁盘调度
例题1
例题2
RAID
为缩小CPU速度与磁盘存储器速度差距,用多个小磁盘替换大磁盘,合理分布数据以支持多磁盘同时读写
提升系统IO性能和可靠性
级别
Cache原理
时间局部性
如果一个存储单元被访问,则可能该单元会很快被再次访问
程序存在着循环,比如程序中的循环体部分,其中的指令和数据会被反复使用
空间局部性
如果一个存储单元被访问,则该单元邻近的单元也可能很快被访问
程序中大部分指令是顺序存储、顺序执行的,数据一般也是以向量、数组、树、表等形式簇聚地存储在一起
例题
替换算法
当Cache存满数据后,新数据必须替换Cache中的某些旧数据
随机算法
根据随机数选择 Cache中要替换的块,不考虑数据的使用情况
实现简单,不需要记录数据的使用历史等额外信息
缺乏对数据访问模式的考虑,可能会替换掉即将被再次访问的数据,导致命中率较低
先进先出 FIFO
按照数据进入 Cache 的先后顺序,先进入的块优先被替换
实现相对容易,只需要记录数据进入的顺序
可能会把一些经常被访问但较早进入Cache 的常用块替换掉,因为它没有考虑数据的使用频率和近期使用情况
近期最少使用算法 LRU
通过记录数据的使用情况,将近期最少使用的块替换出去
从理论上来说,比较符合程序的局部性原理,能够较好地适应数据的访问模式,命中率相对较高
实现较为复杂,需要为每个 Cache 块设置年龄计数器等机制来记录使用情况,硬件开销较大
网络存储技术
输入输出系统
工作方式
程序控制方式
CPU控制
CPU 执行 I/O 程序实现数据传送,分无条件传送和程序查询方式
简单,CPU 参与度高,效率低
程序中断方式
CPU控制
CPU 执行现行程序时,遇异常或特殊请求,暂时中止程序处理紧急事件,处理后返回原程序
提高 I/O 能力和 CPU 效率,CPU需处理中断
DMA工作方式
DMA控制器控制
在主存与外设间实现高速、批量数据交换,DMAC 控制管理数据传输
高速批量传输,减少 CPU 干预
通道方式
通道控制
在一定硬件基础上利用软件手段实现 I/O 控制和传送
主机和外设并行程度高,减少 CPU 介入
IO处理机
I/O 处理机(专用或通用)
具有丰富指令系统和完善中断系统,独立处理 I/O 操作
高度自治,分担 CPU I/O 处理任务
总线
一组能为多个部件分时共享的公共信息传送线路
总线上可以挂接多个部件,各个部件之间相互交换的信息都可以通过这组公共线路传送
同一时刻只允许有一个部件向总线发送信息,如果出现两个或两个以上部件同时向总线发送信息,势必导致信号冲突
在同一时刻,允许多个部件同时从总线上接收相同的信息
总线宽度
总线宽度指的是总线的线数,它决定了总线所占的物理空间和成本
32 位的 PCI 总线允许寻址的主存空间的大小为 2^32=4G 个单元
总线带宽
总线的最大数据传输速率,即每秒传输的字节
总线带宽 = 总线宽度×总线频率
指令系统
指示计算机执行某些操作的命令,一台计算机的所有指令的集合构成指令系统,也称为指令集
CISC 复杂
数量多,使用频率差别大,可变长格式
支持多种寻址方式
基于微程序控制技术(微码)
研制周期长
RISC 精简
数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store 操作内存
支持方式少
增加通用寄存器;硬布线逻辑控制为主;适合采用流水线
优化编译,有效支持高级语言
流水线技术
把一项任务分解为若干项顺序执行的子任务,不同的子任务由不同的操作部件负责执行,而这些部件可以同时并行工作
在任一时刻,任一任务只占用其中一个操作部件
流水线执行时长
第一条指令顺序执行时间+(指令条数 - 1)* 周期
吞吐率
平均吞吐率或实际吞吐率,是指在单位时间内流水线所完成的任务数量或输出的结果数量
吞吐率 TP = n / Tk其中, n 为任务数,Tk为处理完成 n 项任务所用的时间
最大吞吐率:TP = 1 / max(t1, t2, tk)
加速比
顺序执行所用的时间为 T0 ,使用流水线的执行时间为 Tk:S = T0 / Tk
实际加速比:TP = (n * (t1 + t2 + ... + tk) / ((t1 + t2 + ... + tk) + (n - 1) * max(t1, t2, ... ,tk))
多条流水线时
阿姆达尔解决方案
系统性能评估
把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序
基准程序法是目前一致承认的测试系统性能的较好方法
公共基础
法律法规
概述
知识产权是指民事权利主体(自然人、法人)基于创造性的智力成果
知识产权具有无形性、专有性、地域性和时间性四大特点
《著作权法》、《计算机软件保护条件》、《专利法》、《商标法》和《反不正当竞争法》
中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权
开发软件所用的思想、处理过程、操作方法或者数学概念不受保护,软件作品并不是指代码,而是指带有特定业务逻辑的程序以及软件文档
著作权法不适用于下列情形:法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;时事新闻;历法、通用数表、通用表格和公式
保护对象
保护期限
职务作品
侵权判定
专利法
客体是发明创造
发明
发明是指对产品、方法或者其改进所提出的新的技术方案
实用新型
实用新型是指对产品的形状、构造及其组合,提出的适于实用的新的技术方案
外观设计
外观设计是指对产品的形状、图案及其组合,以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计
英文
数学
0 条评论
下一页