软考高级-系统分析师

01-信息与信息系统

1. 信息的基本概念

1.1 信息的概念

  • 维纳(Norbert Wiener):信息就是信息,既不是物质也不是能量,但信息可转换为物质或能量。
  • 香农(C.E.Shannon):信息是不确定性的减少。

1.2 信息的特征(11个特性)

(1)客观性(2)普遍性(3)无限性(4)动态性(5)相对性(6)依附性(7)变换性(8)传递性(9)层次性(10)系统性(11)转化性

1.3 信息的功能(5个主要功能)

(1)为认识世界提供依据
(2)为改造世界提供指导
(3)为有序的建立提供保证
(4)为资源开发提供条件
(5)为知识的生产提供材料

1.4 信息的相关的两个概念

(1)信息与数据:信息是经过加工后的数据。
(2)信息与知识:知识是经过加工的信息。

2. 系统及相关理论

2.1 系统的特性(9个特性)

(1)整体性(2)层次性(3)目的性(4)稳定性(5)突变性(6)自组织性(7)相似性(8)相关性(9)环境适应性

2.2 系统论的任务(3个任务)

(1)改变人类的思维方式
(2)提供科学的理论和方法
(3)形成统一的系统科学体系

2.3 系统理论(8个基本原理)

(1)系统的整体性原理
(2)系统的整体突变原理(非加和原理)
(3)系统的层次性原理
(4)系统的开放性原理(开发系统)
(5)系统的目的性原理
(6)系统环境互塑共生原理
(7)系统的秩序原理
(8)系统的生命周期原理(演化原理)

2.4 信息系统

简单的说,信息系统就是输入数据,通过加工处理,产生信息的系统。管理模型、信息处理模型、系统实现条件三者的结合,产生信息系统。

3. 系统工程方法论

3.1 霍尔三维结构(硬系统方法论)

(1)逻辑维(2)时间维(3)知识维

3.2 软系统方法论(5个步骤)

(1)问题现状说明(2)理清问题的关联因素(3)建立概念模型(4)比较(5)实施

4. 信息系统工程

4.1 信息系统的分类

按应用层次分类:

(1)战略级(企业最高管理层)
(2)战术级(企业中层经理及其管理部门)
(3)操作级(服务型企业的业务部门)
(4)事务级(企业的管理业务人员)

按数据环境分类:

(1)数据文件
(2)应用数据库
(3)主题数据库
(4)信息检索系统(对应数据仓库)

4.2 信息系统的生命周期(5个阶段)

(1)系统规划
(2)系统分析
(3)系统设计
(4)系统实现
(5)系统运行与评价

4.3 信息系统建设的原则

(1)高层管理人员介入原则
(2)用户参与开发原则
(3)自顶向下规划原则
(4)工程化原则

02-企业信息化战略与实施

1. 企业信息化概述

1.1. 信息化的概念

信息化就是计算机、通信和网络技术的现代化。

信息化就是从物质生产占主导地位的社会向信息产业占主导地位的社会转变的发展过程。

信息化就是从工业社会向信息社会演进的过程。

1.2. 国家信息化体系(6个要素)

(1)信息资源
(2)信息网络
(3)信息技术应用
(4)信息产业
(5)信息化人才
(6)信息化政策法规和标准规范

1.3. 企业信息化方法(5种常见方法)

(1)业务流程重组方法
(2)核心业务应用方法
(3)信息系统建设方法
(4)主题数据库方法
(5)资源管理方法

2. 企业信息化规划

2.1. 信息化规划的内容

(1)信息化战略体系

img

(2)信息化规划涉及的主要内容和关系

img

  • 企业战略规划是用机会和威胁评价现在和未来的环境,用优势和劣势评价企业现状,进而选择和确定企业的总体和长远目标,制定和抉择实现目标的行动方案。(确定企业未来发展的大方向)
  • 信息系统战略规划关注的是如何通过信息系统来支撑业务流程的运作,进而实现企业的关键业务目标,其重点在于对信息系统远景、组成架构、各部分逻辑关系进行规划。(为企业战略开发支撑系统)
  • 信息技术战略规划通常简称为IT战略规划,是在信息系统规划的基础上,对支撑信息系统运行的硬件、软件、支撑环境等进行具体的规划,它更关心技术层面的问题。(为支撑系统运行环境做规划)
  • 信息资源规划是在以上规划的基础上,为开展具体的信息化建设项目而进行的数据需求分析、信息资源标准建立、信息资源整合工作。(数据与标准相关的规划)

(3)信息化规划的具体内容

  • 1)明确发展目标和实施重点
  • 2)成立领导机构
  • 3)做好企业业务信息化需求分析
  • 4)确定企业信息化不同发展阶段的投资预算
  • 5)制定必要的促进企业信息化建设的规章制度

2.2. 信息化规划与企业战略规划

(1)信息化战略与企业战略

(2)信息化规划与企业战略规划

(3)信息化战略与企业战略的集成
img

3. 信息系统开发方法(4种方法)

(1)结构化法

  • 用户至上
  • 严格区分用户阶段,每阶段有任务与结果
  • 强调系统开发过程的整体性和全局性
  • 系统开发过程工程化,文档资料标准化
  • 自顶向下,逐步分解(求精)

(2)原型法(需求阶段)

  • 适用于需求不明确的开发
  • 按功能分:水平原型(界面)、垂直原型(复杂算法)
  • 按最终结果分:抛弃式原型、演化式原型

(3)面向对象方法(自底向上)

  • 更好的复用性
  • 关键在于建立一个全面、合理、统一的模型
  • 分析、设计、实现三个阶段,界限不明确

(4)面向服务的方法

  • SO方法有三个主要的抽象级别:操作、服务、业务流程(抽象级别最高)。

SOAD分为三个层次:

  • 基础设计层(底层服务构件)
  • 应用结构层(服务之间的接口和服务级协定)
  • 业务组织层(业务流程建模和服务流程编制)
  • 服务建模:分为服务发现、服务现约和服务实现三个阶段

4. 信息系统战略规划方法

  • 第一阶段(以数据处理为核心,围绕职能部门需求)

(1)企业系统规划法(BSP)
(2)关键成功因素法(CSF)
(3)战略集合转化法(SST)

  • 第二阶段(以企业内部MIS为核心,围绕企业整体需求)

(1)战略数据规划法(SDP)
(2)信息工程方法(IE)
(3)战略栅格法(SG)

  • 第三阶段(以集成为核心,围绕企业战略需求)

(1)价值链分析法(VCA)
(2)战略一致性模型(SAM)

5. 信息资源管理(Information Resource Management,IRM)

5.1. 信息资源管理概述

5.1.1. IRM的内容(3个主题)

(1)资源管理的方向和控制,要从整个企业管理的层面来分析资源的管理。

(2)建立企业信息资源指导委员会,负责制订方针政策,控制和监督信息资源功能的实施。

(3)建立信息资源的组织机构,从事数据的计划和控制、数据获取以及数据的经营管理,并包括企业应用系统的开发。

5.1.2. 信息资源的分类

  • 从管理维度分类
  • 从信息来源维度分类
  • 从应用主题维度分类

5.2. 规范与标准

5.2.1. IRM基础标准

  • 数据元素标准
  • 信息分类编码标准
  • 用户视图标准
  • 概念数据库标准
  • 逻辑数据库标准

5.2.2. 制定和实施的原则

(1)不要把例外当成正规
(2)管理部门必须支持并乐于帮助执行标准
(3)标准必须从实际出发、有生命力的、切实可行的
(4)标准不是绝对的,必须有某种灵活的余地
(5)标准不应该迁就落后
(6)标准必须是容易执行的
(7)标准必须加以宣传推广,而不是靠强迫命令
(8)关于标准的细节本身并不重要,重要的是制订了某些标准
(9)标准应该逐渐的制订出来,不要企图把所有的数据管理标准一次搞定
(10)数据管理的最重要的标准是一致性标准,也就是数据命名、数据属性、数据设计和数据使用的一致性

5.3. 信息资源规划(Information Resource Planning,IRP)

信息资源规划是信息化建设的基础工程,是指对企业生产经营活动所需要的信息。对产生、获取、处理、存储、传输和利用等方面进行全面的规划。

IRP强调将需求分析与系统建模紧密结合起来,需求分析是系统建模的准备,系统建模是用户需求的定型和规划化表达。IRP的主要过程如下图所示。

img

  • IRP的过程
    IRP的过程大致可分为7个步骤,分别是定义职能域、各职能域业务分析、各职能域数据分析、建立整个企业的IRP基础标准、建立信息系统功能模型、建立信息系统数据模型和建立关联矩阵。IRP是按照业务和数据两条主线进行开展的。

6. 企业信息系统

6.1. 企业资源计划(Enterprise Resource Planning,ERP)

6.1.1. ERP的概念(3个角度)

  • 管理思想:他是管理思想的变革。
  • 软件产品:二但不是直接买来就用,需要个性化的开发与部署。
  • 管理系统:存在众多的子系统,这些子系统有统一的规划,是互联互通的,便于事前事中监控。

6.1.2. ERP的主要功能

  • 财会管理:包括会计核算和财务管理等模块。
  • 物流管理:包括分销管理、库存控制和采购管理等模块。
  • 生产控制管理:包括主生产计划、物料需求计划、能力需求计划、车间控制和制造标准等模块。
  • 人力资源管理:包括人力资源规划、招聘管理、工资核算、工时管理和差旅费核算等模块。

6.1.3. ERP的发展阶段

img

6.1.4. ERP生产管理的流程

(1)第一层:经营计划

经营计划是企业总目标的具体体现,企业的高层决策者根据市场调查和需求分析、国家有关政策、企业资源能力和历史状况、同行竞争对手的情况等有关信息,制定经营计划。

(2)第二层:生产计划大纲

生产计划大纲是根据经营计划的生产目标制定的,是对企业经营计划的细化用以描述企业在可用资源的条件下,在一定时期中的产量计划。生产计划大纲在企业决策层的三个计划中有承上启下的作用,一方面它是企业经营计划和战略规划的细化,另一方面它又用于指导企业编制主生产计划指导企业有计划地进行生产。

(3)第三层:主生产计划

主生产计划是对企业生产计划大纲的细化,说明在一定时期内的如下计划:生产什么,生产多少和什么时候交货。

(4)第四层:物料需求计划和能力需求计划

物料需求计划是对主生产计划的各个项目所需的全部制造件和全部采购件的网络支持计划和时间进度计划。它根据主生产计划对最终产品的需求数量和交货期,推导出构成产品的零部件及材料的需求数量和需求时期,再导出自制零部件的制作订单下达日期和采购件的采购订单发送日期,并进行需求资源和可用能力之间的进一步平衡。

能力需求计划是对物料需求计划所需能力进行核算的一种计划管理方法。旨在通过分析比较MRP的需求和企业现有生产能力,及早发现能力的瓶颈所在,为实现企业的生产任务而提供能力方面的保障。

(5)第五层:车间生产控制

车间作业计划在MRP所产生的加工制造订单的基础上,按照交货期的前后和生产优先级选择原则以及车间的生产资源情况(如设备、人员、物料的可用性、加工能力的大小等)将零部件的生产计划以订单的形式下达给适当的车间。

6.1.5. ERP的实施

(1)前期准备阶段

动员大会
基础数据的准备
系统的安装
程序演示和功能确认
期初数据的导入
(2)试运行阶段

确定用户清单,划分用户权限
加强培训
业务流程重组
系统使用问题的记录
(3)交付收尾阶段

工作成果审查
查核各项工作或活动是否已经完成

6.2. 客户关系管理(Customer Relationship Management,CRM)

6.2.1. CRM的理念

CRM理念是将客户看作资产,客户关怀是中心。目的是与客户建立长期和有效的业务关系。最大限度地增加利润。核心是客户价值管理,提高客户忠诚度和保有率。

6.2.2. CRM的功能(4个功能)

(1)客户服务:CRM的关键内容。

(2)市场营销:包括商机产生、商机获取和管理、商业活动管理和电话营销等。

(3)共享的客户资料库:它把市场营销和客户服务连接起来。

(4)分析能力:CRM的一个重要方面在于它具有使客户价值最大化的分析能力。

6.2.3. CRM的解决方案

一个有效的CRM解决方案应该具备以下要素:

(1)畅通有效的客户交流渠道(触发中心)。

(2)对所获信息进行有效分析(挖掘中心)。

(3)CRM必须能与ERP很好地集成。

6.2.4. CRM的实现过程

CRM实现过程包含三方面的工作:

(1)客户服务与支持:通过控制服务品质以赢得顾客的忠诚度,例如,对客户快速准确的技术支持、对客户投诉的快速反应、对客户提供产品查询等;

(2)客户群维系:通过与顾客的交流实现新的销售,例如,通过交流赢得失去的客户等;

(3)商机管理:利用数据库开展销售,例如,利用现有客户数据库做新产品推广测试,通过电话或电子邮件促销调查,确定目标客户群等。

6.3. 供应链管理(Supply Chain Management,SCM)

6.3.1. SCM的理念

SCM理念:强强联合,整合与优化“三流”,打通企业间“信息孤岛”,严格的数据交换标准。
img

6.3.2. SCM的内容

(1)计划(策略性)
(2)采购
(3)制造
(4)配送
(5)退货

6.3.3. 信息化的三流

(1)信息流 (核心)

需求信息流:如客户订单、生产计划、采购合同等;
供应信息流:如入库单、完工报告单、库存记录、可供销售量、提货发运单等;

(2)资金流

(3)物流

6.3.4. SCM实施的关键问题

  • 配送网络的重构
  • 配送战略问题
  • 供应链集成与战略伙伴
  • 库存控制问题
  • 产品设计
  • 信息技术和决策支持系统
  • 顾客价值的衡量

6.4. 产品数据管理(Product Data Management,PDM)

6.4.1. PDM的理念

PDM理念:用来管理所有与产品相关信息和与产品相关的过程。

  • 产品数据
  • 开发过程集成

6.4.2. PDM的发展过程

img
PDM的发展过程

6.4.3. PDM的核心功能

(1)数据库和文档管理

(2)产品结构与配置管理

(3)生命周期管理和流程管理

(4)集成开发接口

6.5. 产品生命周期管理(Product Life-Cycle Management,PLM)

6.5.1. 产品生命周期

产品的生命周期包括5个阶段:

(1)培育期(概念期)

(2)成长期

(3)成熟期

(4)衰退期

(5)结束期(报废期)

6.5.2. PLM的功能

(1)总体功能

(2)核心制造、协作和控制功能

(3)细化功能

6.6. 知识管理

6.6.1. 知识的分类

(1)显性知识:规范,系统,结构化,明确。(组织过程资产)

(2)隐性知识:未规范,零星,非正式,未编码,不易保存和传递。(个人经验)

6.6.2. 知识管理工具

(1)知识生成工具:知识获取、知识合成、知识创新。

(2)知识编码工具:通过标准形式表现知识。

(3)知识转移工具:使知识能在企业内传播和分享。

6.7. 业务流程重组(Business Process Reengineering,BPR)

6.7.1. BPR的概念

BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就。

6.7.2. BPR的实施

BPR遵循的原则(3个原则)、实施的流程(8个步骤)和系统的规划(5个规划)如下图所示:
img

6.8. 业务流程管理(Business Process Management,BPM)

6.8.1. BPM的概念

BPM是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。

6.8.2. PDCA闭环的管理过程(戴明环)

(1)明确业务流程所欲获取的成果

(2)开发和计划系统的方法实现以上成果

(3)系统地部署方法确保全面实施

(4)根据对业务的检查和分析以及持续的学习活动,评估和审查所执行的方法。并进一步提出计划和实施改进措施。

6.8.3. BPM的管理思想

BPM与BPR管理思想最根本的不同就在于流程管理并不要求对所有的流程进行再造。构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化的设计。

流程管理包含三个层面:规范流程、优化流程和再造流程。

6.9. 决策支持系统(Decision Support System,DSS)

6.9.1. DSS的分类

结构化决策
非结构化决策
半结构化决策

6.9.2. DSS的基本结构

DSS基本结构由4个部分组成:数据库子系统、模型子系统、推理部分和用户接口子系统,如下图所示。

img

6.10. 商业智能(Business Intelligence,BI)

6.10.1. BI基本概念

商业智能用于决策分析,数据仓库、联机分析处理(OLAP)和数据挖掘技术是BI的三大组成部分。

BI系统主要包括数据预处理、建立数据仓库、数据分析和数据展现4个主要阶段,如下图所示。
img

  • 数据预处理包括数据的抽取、转换和加载三个过程(ETL过程)。
  • 建立数据仓库是处理海量数据的基础。
  • 数据分析是体现系统智能的关键,一般采用OLAP和数据挖掘两大技术。
  • 数据展现主要保障系统分析结果的可视化展示。

6.10.2. BI的实施步骤

(1)需求分析

(2)数据仓库建模

(3)数据抽取

(4)建立BI分析报表

(5)用于培训和数据模拟测试

(6)系统改进和完善

6.10.3. 数据仓库的特点

  • 面向主题:数据按主题组织。
  • 集成的: 消除了源数据中的不一致性,提供整个企业的一致性全局信息。
  • 相对稳定的(非易失的): 主要进行查询操作,只有少量的修改和删除操作(或是不删除)。
  • 反映历史变化(随着时间变化): 记录了企业从过去某一时刻到当前各个阶段的信息,可对发展历程和未来趋势做定量分析和预测。

6.11. 数据挖掘

6.11.1. 数据挖掘方法

  • 决策树(构建树结构进行分析)
  • 神经网络(类似统计学中的判别、回归、聚类等功能)
  • 遗传算法(三个基本过程:繁殖(选择)、交叉(重组)、变异(突变))
  • 关联规则挖掘算法(关联规则是描述数据之间存在关系的规则)

6.11.2. 数据挖掘分类

  • 关联分析:挖掘出隐藏在数据间的相互关系。
  • 序列模式分析:侧重点是分析数据间的前后关系(因果关系)。
  • 分类分析:为每一个记录赋予一个标记再按标记分类。
  • 聚类分析:分类分析法的逆过程。

6.12. 企业门户(Enterprise Portal,EP)

6.12.1. EP的分类

  • 企业网站:注重单向信息传递,缺互动。
  • 企业信息门户(EIP):把各种应用系统、数据资源和互联网资源统一集成到企业门户之下。
  • 企业知识门户(EKP):企业网站的基础上增加知识性内容。
  • 企业应用门户(EAP):实际上是对企业业务流程的集成。它以业务流程和企业应用为核心,把业务流程中功能不同的应用模块通过门户技术集成在一起。
    企业通用门户:集以上四者于一身。

6.12.2. EP实施的关键问题

单点登录
业务流程整合
个性化配置
与企业应用系统的集成
知识转化

6.13. 电子政务和电子商务

  • 电子政务的四种模式:

政府对政府(G2G)(Government To Government)
政府对企业(G2B)或B2G(Government To Business)
政府对公民(G2C)或C2G(Government To Citizen)
政府对公务员(G2E)(Government To Employee)

  • 电子商务的四种形式:

企业对消费者(B2C)
企业对企业(B2B)
消费者对消费者(C2C)
线上对线下(O2O)

7. 企业应用集成(EI)

(1)表示集成

表示集成(界面集成),把各应用系统的界面集成起来,统一入口,产生“整体”感觉。

(2)数据集成

数据集成是应用集成和业务过程集成的基础。把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。ETL、数据仓库、联邦数据库都可视为数据集成。

(3)控制集成

控制集成(功能集成、应用集成)是业务逻辑层次集成,可以借助于远程过程调用或远程方法调用、面向消息的中间件等技术

(4)业务流程集成

业务流程集成(过程集成)是进行业务流程集成时,企业必须对各种业务信息的交换进行定义、授权和管理,以便改进操作、减少成本、提高响应速度。

还有其他会用到的集成方式,如下:

消息集成:适用于数据量小、但要求频繁地、立即地、异步地数据交换场合。

共享数据库:实时性强、可以频繁交互,数据的交换属于同步方式。

文件传输:适用于数据量大、交换频度小、即时性要求低的情况

03-系统规划

1. 系统规划的主要步骤

根据系统规划的主要任务,可以按照以下步骤开展系统规划的工作:

(1)初步调查:根据企业战略目标,分析企业现状以及系统运行状况。

(2)确定系统目标:确定系统的服务范围质量等。

(3)分析子系统的组成:做系统划分并指定子系统功能。

(4)拟定系统的实施方案:分析子系统优先级,确定开发顺序。

(5)进行可行性研究:编写可行性研究报告,召开可行性论证会。

(6)制订系统建设方案:对可研报告提出的各项技术指标进行分析、比较,落实各项假设的前提条件,制订系统建设方案,形成系统设计任务书作为系统建设的依据。

2. 项目的提出与选择

项目的提出和选择包括项目立项目标和动机、立项价值判断、项目选择和确定、初步调查和可行性分析等过程。具体如下图所示:

3. 可行性研究

可行性研究也称为可行性分析,是所有项目投资、工程建设或重大改革在开始阶段必须进行的一项工作。

3.1. 可行性评价准则

(1)经济可行性

成本收益分析,包括建设成本、运行成本和项目建设后可能的经济收益。

(2)技术可行性

技术风险分析,现有的技术能否支持系统目标的实现,现有资源(员工,技术积累,构件库,软硬件条件)是否足以支持项目的实施。

(3)法律可行性(社会可行性)

不能与国家法律或政策相抵触。

(4)用户使用可行性

执行可行性,从信息系统用户的角度评估系统的可行性。

管理可行性:系统与现有管理机制的一致性,改革的可能性。

运行可行性: 用户方便使用的程度。

3.2. 可行性研究的步骤

可行性研究工作可以分为以下8个步骤:

(1)复查系统目标和规模

(2)分析现有系统

(3)导出新系统的高层逻辑模型

(4)用户复核

(5)提出并评价解决方案

(6)确定最终推荐的解决方案

(7)草拟开发计划

(8)编制和提交可行性研究报告

3.3. 可行性研究报告

在国家标准GB/T 8567-2006中,提供了一个可行性研究报告的文档模板和编写指南,其中规定了在可行性研究报告中应该包括如下内容:

(1)引言

(2)引用文件

(3)可行性研究的前提

(4)可选的方案

(5)所建议的系统

(6)经济可行性

(7)技术可行性

(8)法律可行性

(9)用户使用可行性

4. 成本效益分析

4.1 成本

  • 按照投资时间分类:

(1)基础建设成本:如房屋和设施、办公设备、平台软件、必须的工具软件等。

(2)其他一次性投资:如研究咨询成本、调研费、培训费、差旅费以及其他一次性杂费。

(3)其他非一次性投资:主要是指系统的运行和维护成本,如设备租金和定期维护成本、定期消耗品支出、房屋租金、公共设施维护等。

  • 按照成本性态分类:

(1)固定成本:管理人员的工资、办公费、固定资产折旧费、员工培训费、广告费、技术开发经费等

(2)变动成本:直接材料费、产品包装费、外包费用、开发奖金等。

(3)混合成本:水电费、电话费、质量保证人员的工资、设备动力费等。

同时,还可按照直接和间接分类:

(1)直接成本:项目组人员工资,材料费用。

(2)间接成本:水电费,员工培训费。

4.2. 收益

收益可以分为有形收益和无形收益。

(1)有形收益:也称为经济收益,可以用货币的时间价值、投资回收期、投资回收率等指标进行度量。有形收益又可分为一次性经济收益和非一次性经济收益。

(2)无形收益:也称为不可定量的收益,主要是从性质上、心理上进行衡量,很难直接进行量上的比较。如服务的改进、由操作失误引起的风险的减少、企业形象的改善等。

4.3. 盈亏临界分析

盈亏临界分析又称为损益平衡分析,它主要研究如何确定盈亏临界点、有关因素变化对盈亏临界点的影响等问题。

盈亏临界点也称为盈亏平衡点或保本点,是指项目收入和成本相等的经营状态,也就是既不盈利也不亏损的状态。

有关计算公式如下:

销售额=固定成本+可变成本+利润(正常情况下)

销售额=固定成本+可变成本(盈亏平衡时)

盈亏平衡点销售量=总固定成本/(销售单价-单位变动成本)

盈亏平衡点销售额=总固定成本/(1-总变动成本/销售收入)

4.4. 净现值分析

货币的时间价值与银行利率和利息的计算方式有关。根据这一概念可以得到现值(n年后的价值折现成现在的价值)的公式为:

其中P为本金,n为年期,i为利率,F为P元钱在n年后的价值。

净现值是指项目在生命周期内各年的净现金流量按照一定的、相同的折现率折现到初时的现值之和,公式为:

其中 为第t年的净现金流量,CI为现金流入,CO为现金流出,i为折现率。

净现值表示在规定的折现率i的情况下,方案在不同时间点发生的净现金流量,折现到期初时,整个生命周期内所能得到的收益。

净现值率的公式为:

其中 为第t年的投资额。因为P>0,对于单一方案评价而言,若NPV≥0,则NPVR≥0;若NPV<0,则NPVR<0。因此,净现值与净现值率是等效的评价指标。

4.5. 投资回收期与投资回报率

(1)静态投资回收期

实用公式为:T=累计净现金流量开始出现正值的年份数-1+|上年累计净现金流量|/当年净现金流量

(2)动态投资回收期

实用公式为: =累计折现值开始出现正值的年份数-1+|上年累计折现值|/当年折现值

(3)投资收益率

投资收益率又称为投资利润率,是指投资收益占投资成本的比率。投资收益率反映投资的收益能力。其公式为:

投资收益率=投资收益/投资成本×100%

其他相关公式:

投资收益率=100%+净现值率

投资回收率=1/投资回收期×100%

投资收益率=投资回报率

总投资收益率=投资收益/投资总额×100%

(Lifetime Return of Investment)

年均投资收益率=运营期年均净收益/投资总额×100%

(Annual Return of Investment)

04-软件工程

软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的提高软件生产率、提高软件质量、降低软件成本。IEEE对软件工程的定义是:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。

1. 软件生命周期

1.1. 信息系统生命周期

信息系统的生命周期包括立项阶段、开发阶段、运维阶段和消亡阶段。其中在单个系统开发中,开发阶段又可细分为总体规划、系统分析、系统设计、系统实施和系统验收等步骤。具体如下图所示。
img

单个系统的各个阶段需要开展的工作和输出的文档如下图所示。

img

1.2. 软件的生命周期

软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生命周期或生存周期。

根据国家标准GB/T 8566-2007,软件生命周期可以划分为可行性研究、需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用、维护、退役十个阶段,各自分别对应于软件生存周期的基本过程,具体如下图所示。
img

软件生命周期与5个基本过程的对应关系

2. 软件开发方法

2.1. 形式化方法

(1)形式化方法概述

提高软件可靠性的一种重要技术是使用形式化方法。形式化方法是建立在严格数学基础上、具有精确数学语义的开发方法。广义的形式化方法是指软件开发过程中分析、设计和实现的系统工程方法,狭义的形式化方法是指软件规格和验证的方法。

(2)净室软件工程

净室软件工程(Cleanroom Software Engineering,CSE)是软件开发的一种形式化方法,可以开发较高质量的软件。净室软件工程的特点如下:

净室即无尘室、洁净室。也就是一个受控污染级别的环境。
使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制。
使用统计的测试来获取认证被交付的软件的可靠性所必需的出错率信息。

2.2 逆向工程

逆向工程(reverse engineering)术语源于硬件制造业相互竞争的公司为了了解对方设计和制造工艺的机密,在得不到设计和制造说明书的情况下,通过拆卸实物获得信息,软件的逆向工程也基本类似,不过,通常“解剖”的不仅是竞争对手的程序,而且还包括本公司多年前的产品。软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。

一般认为,凡是在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动都可称为逆向工程。逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述。逆向工程过程能够导出多个级别的内容,随着抽象层次增高,完备性就会降低。具体包括:

实现级(底层的抽象):包括程序的抽象语法树、符号表、过程的设计表示。

结构级(稍高层次的抽象):包括反映程序分量之间相互依赖关系的信息例如调用图、结构图、程序和数据结构。

功能级(相对高层的抽象):包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。

领域级(高层抽象):包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系摸型。

3. 软件开发模型

软件开发模型大体上可分为三种类型。

第一种是以软件需求完全确定为前提的瀑布模型;第二种是在软件开发初始阶段只能提供基本需求时采用的迭代式或渐进式开发模型,例如,喷泉模型、螺旋模型、统一开发过程和敏捷方法等;第三种是以形式化开发方法为基础的变换模型。

3.1. 瀑布模型

瀑布模型是一种严格定义方法,它将软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,形如瀑布流水,最终得到软件产品,如下图所示。

img

3.2. 演化模型

演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复这一过程,直到演化成最终的软件产品。

主要优点:任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助导引出高质量的产品要求。

主要缺点:如果不加控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面的影响。

3.3. 增量模型

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程

img

3.4. 螺旋模型

螺旋模型是瀑布模型与演化模型相结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。螺旋模型是一种演化软件过程模型,它将原型实现的迭代特征与线性顺序模型中控制的和系统化的方面结合起来,使软件的增量版本的决速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。

img

3.5. V模型

V模型是在快速应用开发模型基础上演变而来,由于将整个开发过程构造成一个V字形而得名。V模型应用在软件测试方面的开发过程和测试行为,和瀑布模型有着一些共同的特征。V模型中的过程从左到右,描述了基本其价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程各阶段的对应关系,如下图所示。
img

3.6. 喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。

3.7. 构件组装模型

构件组装模型融合了螺旋模型的许多特征。它本质上是演化的支持软件开发的迭代方法。但是,构件组装模型是利用预先包装好的软件构件(有时称为“类”)来构造应用程序的。构建组装模型的过程如下图所示。
img

3.8. 统一过程

  • 统一过程(Unified Process,UP)是一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。UP是基于构件的,在为软件系统建模时,UP使用的是UML。与其他软件过程相比,UP具有三个显着的特点,即用例驱动、以架构为中心、迭代和增量。

  • 统一过程包括四个阶段:初始阶段、细化阶段、构建阶段和交付阶段。各个阶段对应的工作内容如下图所示。
    img

3.9. 敏捷方法

  • 敏捷方法强调,让客户满意和软件尽早增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及整体精简开发。

目前主要的敏捷方法有极限编程(eXtreme Programming,XP )、自适应软件开发(Adaptive Software Development,ASD)、水晶方法(Crystal)、特胜驱动开发(Feature Driven Development,FDD)、动态系统开发方法(Dynamic Systems Development Method,DSDM)、测试驱动开发(Test-Driven Development,TDD)、敏捷数据库技术(Agile Database Techniques,AD)和精益软件开发(Lean Software Development)等。虽然这些过程模型在实践上有差异,但都是遵循了敏捷宣言或者是敏捷联盟所定义的基本原则。这些原则包括客户参与、增量式移交、简单性、接受变更、强调开发人员的作用和及时反馈等。

敏捷开发的4大价值观、5大原则和12大最佳实践如下图所示。

img

以下介绍几种常见的敏捷方法:

  • XP (Extreme Programming,极限编程)。
  • Cockburn的水晶系列方法,水晶系列方法是由Alistair Cockburn提出的。它与XP方法一样,都有以人为中心的理念,但在实践上有所不同。Alistair考虑到人们一般很难严格遵循一个纪律约束很强的过程,因此,与XP的高度纪律性不同,Alistair探索了用的最少纪律约束而仍能成功方法,从而在产出效率与易于运作上达到一种平衡。也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。
  • 开放式源码,这里提到的开放式源码指的是开放源码界所用的一种运作方式。开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广,这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。开放源码的一个突出特点就是查错排障(debug)的高度并行性,任何人发现了错误都可将改正源码的“补丁”文件发给维护者。然后由维护者将这些“补丁”或是新增的代码并入源码库。
  • SCRUM。 SCRUM己经出现很久了,像前面所论及的方法一样,该方法强调这样一个事实,即明确定义了的可重复的方法过程只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用,去解决明确定义了的可重复的问题。
  • Coad的功用驱动开发方法(FDD-Feature Driven Development) FDD是由Jeff De Luca和大师Peter Coad提出来的。像其他方法一样,它致力于短时的迭代阶段和可见可用的功能。在FDD中,一个迭代周期一般是两周。在FDD中,编程开发人员分成两类:首席程序员和“类”程序员((class owner)。首席程序员是最富有经验的开发人员。他们是项目的协调者、设计者和指导者,而“类”程序员则主要做源码编写。
  • ASD方法,ASD (Adaptive Software Development)方法由Jim Highsmith提出,其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。

4. 软件过程管理

4.1. 软件能力成熟度模型

(1)CMM的等级(5个等级)

  • 初始级
  • 可重复级
  • 已定义级
  • 以管理级
  • 优化级

(2)关键过程域

(3)能力成熟度模型集成

4.2. 软件过程评估

软件过程能力评估是根据过程模型或其他模型对组织的软件过程所进行的规范的评估。主要参考的方法有以下几种:

(1)CMM模型
(2)Trillum模型
(3)Bootstrap方法
(4)ISO/IEC 15504标准
(5)SJ/T 11234-2001标准

05-软件需求工程

1. 软件需求工程概述

1.1 概述

软件需求工程是包括创建和维护软件需求文档所必需的一切活动的过程,可分为需求开发和需求管理两大工作。

需求开发包括需求获取、需求分析、编写需求规格说明书(需求定义)和需求验证四个阶段。需求管理通常包括定义需求基线、处理需求变更和需求跟踪等方面的工作。这两个方面是相辅相成的需求开发是主线是目标;需求管理是支持是保障。如下图所示:

img
软件需求概念:

软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。

1.2. 需求的分类

需求可以从技术维度(需求的层次)和管理维度(质量功能部署QFD)两方面进行分类,具体如下图所示:
img

PIECES框架:

PIECES框架是系统非功能性需求分类的技术。主要内容如下:

性能(Preformance):性能用于描述企业当前的运行效率,可以分析当前业务的处理速度

信息(Information):信息和数据指标用于描述业务数据的输入、输出以及处理方面存在跳各种问题。

经济(Economics):经济指标主要是从成本和收益的角度分析企业当前存在的问题。

控制(Control):提高信息系统的安全和控制水平。

效率(Efficiency):提高企业的人、财、物等的使用效率。

服务((Service):提高企业对客户、供应商、合作伙伴、顾客等的服务质量。

2. 需求获取

需求获取的方法:

  • 用户访谈:1对1-3,有代表性的用户。
  • 问卷调查:用户多,无法一一访谈。
  • 现场观摩:针对较为复杂的流程和操作。
  • 联合需求计划(JRP):高度组织的群体会议,各方参与,成本较高。
  • 情节串联板:一系列图片,通过这些图片来讲故事。
  • 收集资料:把与系统有关的、对系统开发有益的信息收集起来。
  • 参加业务实践:有效地发现问题的本质和寻找解决问题的办法。
  • 阅读历史文档:对收集数据性的信息较为有用。
  • 抽样调查:降低成本。样本大小=α*(可信度系数/可接受的错误)²
    • 注:α一般取0.25。

可信度系数表如下所示:
img

例如,如果希望订单样本集包含所有情况具有90%的可信度,那么样本大小计算如下:

样本大小=0.25×(1.65/(1-0.90))²=68.0625

3. 需求分析

在软件工程实践过程中,人们提出了许多种需求分析的方法,其中主要有结构化(SA)方法、面向对象分析(OOA)方法和面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法。另外还有一些形式化方法例如VDM ( Vienna Design Method)和Z等。

3.1. 结构化分析方法(SA)

SA方法的基本思想是自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。经过逐层分解,每个最低层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。在SA方法中导出的分析模型如下图所示。

img
SA方法分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)。在实际工作中,一般使用E-R图表示数据模型,用数据流图(DFD)表示功能模型用状态转换图(State Transform Diagram,STD)表示行为模型。这三个模型有着密切的关系,它们的建立不具有严格的时序性,而是一个迭代的过程。

3.1.1. 数据字典

数据字典中一般有六类条目,分别是数据元素、数据结构、数据流、数据存储、加工逻辑和外部实体。不同类型的条目有不同的属性需要描述。

(1)数据元素。数据元素也称为数据项,是数据的最小组成单位,例如,课程号、课程名等。对数据元素的描述,应该包括数据元素的名称、编号、别名、类型、长度、取值范围和取值的含义等。

(2)数据结构。数据结构用于描述某些数据元素之间的关系,它是一个递归的概念,一个数据结构可以包括若干个数据元素或(和)数据结构。数据结构的描述重点是数据元素之间的组合关系,即说明数据结构包括哪些成分。这些成分中有三种特殊清况,分别是任选项、必选项和重复项

(3)数据流。数据流由一个或一组数据元素组成,对数据流的描述应包括数据流的名称、编号、简要说明、来源、去处、组成和流通量(含高峰时期的流通量)。

(4)数据存储。数据存储的条目主要描写该数据存储的结构,以及有关的数据流和查询要求。

(5)加工逻辑。需要描述加工的编号、名称、功能的简要说明、有关的输入数据流和输出数据流。对加工进行描述,目的在于使相关人员能有一个较明确的概念,了解加工的主要功能。

(6)外部实体。外部实体是数据的来源和去向,对外部实体的描述应包括外部实体的名称、编号、简要说明、外部实体产生的数据流和系统传给该外部实体的数据流,以及该外部实体的数量。

3.1.2. 数据流图(DFD)

(1)数据流图(DFD)基本概念
img

(2)数据流图(DFD)的层次

SA方法的思路是依赖于DFD进行自顶而下的分析。这也是因为系统通常比较复杂,很难在一张图上就将所有的数据流和加工描述清楚。因此,DFD提供一种表现系统高层和低层概念的机制。也就是先绘制一张较高层次的DFD,然后在此基础上,对其中的加工进行分解,分解成为若干个独立的、低层次的、详细的DFD,而且可以这样逐一的分解下去,直至系统被清晰地描述出来。如下图所示。

img
(3)数据流图的平衡原则

数据流图的平衡原则如下图所示。

img

3.1.3. 状态转换图(STD)

大多数业务系统是数据驱动的,所以适合使用DFD。但是,实时控制系统却主要是事件驱动的,因此,行为模型是最有效的描述方式。STD通过描述系统的状态和引起系统状态转换的事件,来表示系统的行为。此外,STD还指出了作为特定事件的结果将执行哪些动作(例如,处理数据等)。

在STD中从一个状态到另一个状态的转换用箭头线表示,箭头表明转换方向,箭头线上标上事件名。必要时可在事件名后面加一个方括号,括号内写上状态转换的条件。也就是说,仅当方括号内所列出的条件为真时,该事件的发生才引起箭头所示的状态转换。如下图为一个在线课程学习的STD示例。

img

3.1.4. 实体联系图(E-R图)

E-R图提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的3个基本要素是实体型、属性和联系。具体如下图所示。
img

3.2. 面向对象分析方法(OOA)

面向对象分析的基本任务是运用面向方法对问题域进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系。最终产生一个符合用户需求,并能直接反映问题域和系统功能的面向对象分析模型及其详细说明。

3.2.1. 相关概念

(1)对象:属性(数据)+方法(操作)+对象ID

(2)类:(实体类/控制类/边界类)

  • 实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如在线教育平台系统可以提取出学员类和课程类它们都属于实体类。
  • 控制类是用于控制用例工作的类一般是由动宾结构的短语(“动词+名词”或‘名词+动词”)转化来的名词,例如用例“身份验证”可以对应于一个控制类“身份验证器”它提供了与身份验证相关的所有操作。
  • 边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口。
    (3)继承与泛化:复用机制

(4)封装:隐藏对象的属性和实现细节,仅对外公开接口

(5)多态:不同对象收到同样的消息产生不同的结果

(6)接口:一种特殊的类,他只有方法定义没有实现

(7)重载:一个类可以有多个同名而参数类型不同的方法

3.2.2. 统一建模语言(UML)

UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言,它融入了软件工程领域的新思想、新方法和新技术,它的作用域不限于支持OOA和OOD,还支持从需求分析开始的软件开发的全过程。

(1)UML的结构

从总体上来看,UML的结构包括构造块、规则和公共机制三个部分。

  • 构造块。UML有三种基本的构造块分别是事物(thing )、关系( relationship)和图( diagram )。事物是UML的重要组成部分关系把事物紧密联系在一起图是多个相互关联的事物的集合。
  • 公共机制。公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制四种。
  • 规则。规则是构造块如何放在一起的规定,包括范围、可见性、完整性和执行四个方面。
    具体关系如下图所示:
    img

(2)UML事物

UML中的事物也称为建模元素包括结构事物(structural things )、行为事物(behavioral things动作事物)、分组事物(grouping things)和注释事物(annotational things注解事物)。这些事物是UML模型中最基本的OO构造块。

(3)UML关系

UML用关系把事物结合在一起,主要有下列四种关系:

  • 依赖(dependency)。依赖是两个事物之间的语义关系其中一个事物发生变化会影响另一个事物的语义。
  • 关联(association)。关联描述一组对象之间连接的结构关系。
  • 泛化(generalization)。泛化是一般化和特殊化的关系描述特殊元素的对象可替换一般元素的对象。
  • 实现(realization )。实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。
    (4)UML图

UML2.0包括14种图,分别如下图所示:

img

3.2.2.1. UML-4+1视图

UML的4+1视图是指用例视图和逻辑视图、实现视图、进程视图和部署视图

  • 用户侧重于逻辑视图
  • 系统工程师侧重于部署视图

img

3.2.2.2. 用例图

用例图是描述一组用例、参与者及它们之间的关系。主要包括参与者、用例和通信关联三种元素。

用例图的特点如下:

用户角度描述系统功能;

  • 参与者是外部触发因素;
    (包括用户、组织、外部系统,时间);
  • 用例是功能单元。
  • 用例图的关系包括:包含关系、扩展关系和泛化关系。

包含关系: 其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。图例如下所示:
img

扩展关系: 如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。图例如下所示:
img

泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。图例如下所示:
img

三种关系的示例如下所示:
img

用例建模的流程如下:

  • 识别参与者(必须);
  • 合并需求获得用例(必须);
  • 细化用例描述(必须);
  • 调整用例模型(可选)

3.2.2.3. 类图与对象图

类图(class diagram):类图描述一组类、接口、协作和它们之间的关系。

对象图(object diagram):对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。

四种关系及图例如下所示:

img

3.2.2.4. 顺序图

顺序图(sequence diagram,序列图)。顺序图是一种交互图(interaction diagram),它强调对象之间消息发送的顺序,同时显示对象之间的交互。如下图所示。

img

3.2.2.5. 通信图(协作图)

通信图(communication diagram)。通信图也是一种交互图,它强调对象之间存在的消息收发关系,而不专门突出这些消息发送的时间顺序。如下图所示。
img

3.2.2.6. 定时图

定时图也叫计时图,也是一种交互图,用于展示交互过程中的真实时间信息,具体描述对象状态变化的时间点以及维持特定状态的时间段。如下图所示。
img

3.2.2.7. 状态图

状态图(state diagram)是对类描述的补充。用于展现此类对象所具有的可能状态,以及某些事件发生时其状态转移情况。如下图所示。
img

3.2.2.8. 活动图

活动图(activity diagram)是一种特殊的状态图。活动图描述一个操作中要进行的各项活动的执行流程。同时,也常被用来描述一个用例的处理流程或者某种交互流程。

活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。它强调对象间的控制流程。如下图所示。
img

3.2.2.9. 构件图

构件图(component diagram)。构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。如下图所示。
img

3.2.2.10. 部署图

部署图(deployment diagram)。部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。如下图所示。
img

3.2.3 需求建模

需求建模包括用例模型和分析模型,具体内容如下图所示。

img

4. 需求定义

需求定义的过程也就是形成需求规格说明书的过程,通常有两种需求定义的方法,分别是严格定义方法和原型方法。具体如下图所示:
img

5. 需求验证

需求验证的流程如下图所示。
img

6. 需求管理

6.1. 定义需求基线

基线是一个软件配置管理的概念,它帮助开发人员在不严重阻碍合理变化的情况下来控制变化。根据IEEE的定义,基线是指已经通过正式评审和批准的规约或产品,它可以作为进一步开发的基础,并且只能通过正式的变更控制系统进行变化。在软件工程范围内,基线是软件开发中的里程碑,其标志是有一个或多个软件配置项的交付,且已经经过正式技术评审而获得认可。

需求状态的变化如下图所示:
img

6.2. 需求跟踪

根据国家标准GB/T 8567-2006,软件需求规格说明书(SRS)中的每个软件配置项的需求到其涉及的系统(或子系统)需求都要具有双向可追踪胜。所谓双向跟踪,包括正向跟踪和反向跟踪,正向跟踪是指检查SRS中的每个需求是否都能在后继工作成果中找到对应点;反向跟踪也称为逆向跟踪,是指检查设计文档、代码、测试用例等工作成果是否都能在SRS中找到出处。具体来说,需求跟踪涉及五种类型,如下图所示。
img

6.3. 需求风险管理

以下为带有风险的做法:

  • 无足够用户参与
  • 忽略了用户分类
  • 用户需求的不断增加
  • 模棱两可的需求
  • 不必要的特性
  • 过于精简的软件需求规格说明书(SRS)
  • 不准确的估算

06-软件架构设计

1. 软件架构的概念

架构设计就是需求分配,即将满足需求的职责分配到组件上。如下图所示。
img

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包合一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件架构是项目干系人进行交流的手段j明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
软件架构是可传递和可复用的模型通过研究软件架构可能预测软件的质量。

2. 软件架构风格

(1)架构设计的一个核心问题是能否达到架构级的软件复用。

(2)架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。

(3)架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。

2.1. 经典架构风格

经典架构风格包括以下几种:

  • 数据流风格:批处理序列、管道-过滤器
  • 调用/返回风格:主程序/子程序、面向对象、层次结构
  • 独立构件风格:进程通信、事件驱动系统(隐式调用)
  • 虚拟机风格:解释器、基于规则的系统
  • 仓库风格:数据库系统、超文本系统、黑板系统

2.2. 层次架构风格

层次架构风格包括以下几种:

二层架构
三层C/S架构(包括表示层、功能层和数据层)
B/S架构

3. 面向服务的架构(Service-Oriented Architecture,SOA)

3.1. SOA概述

SOA是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。

典型的SOA的结构如下图所示:
img

3.2. SOA的设计原则

在SOA架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散稠合和复用能力的设计原则,对SOA架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:

明确定义的接口
自包含和模块化
粗粒度
松耦合
互操作性、兼容和策略声明

3.3. SOA的实现方法

3.3.1. Web Service

在Web Service(Web服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了SOA的一种实现架构,如下图所示。
img

在采用Web Service作为SOA的实现技术时,应用系统大致可以分为六个层次,分别是:

  • 底层传输层
  • 服务通信协议层
  • 服务描述层
  • 服务层
  • 业务流程层
  • 服务注册层

3.3.2. 服务注册表

服务注册表(service registry)虽然也具有运行时的功能但主要在SOA设计时使用。它提供一个策略执行点(Policy Enforcement Point , PEP)在这个点上服务可以在SOA中注册从而可以被发现和使用。

服务注册表可以包括服务注册、服务位置和服务绑定。

3.3.3. 企业服务总线(ESB)

ESB的概念是从SOA发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟对每个业务流程实施控制和跟踪、分析并改进流程和性能。

ESB是由中间件技术实现并支持SOA的一组基础架构,是传统中间件技术与XML,Web Service等技术结合的产物,是在整个企业集成架构下的面向服务的企业应用集成机制。如下图所示。

img
具体来说,ESB具有以下功能:

  • 提供位置透明性的消息路由和寻址服务
  • 提供服务注册和命名的管理功能
  • 支持多种的消息传递范型
  • 支持多种可以广泛使用的传输协议
  • 支持多种数据格式及其相互转换
  • 提供日志和监控功能

4. 微服务

4.1. 微服务概述

微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTfuI API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制。对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

4.2. 微服务特点

微服务的特点主要如下:

  • 小,且专注于做一件事情
  • 轻量级的通信机制
  • 松耦合、独立部署
  • 微服务架构和单块架构对比如下图所示:
    img

4.3. 微服务的优势和挑战

(1)微服务的优势

技术异构性
弹性!
扩展
简化部署
与组织结构相匹配
可组合性
对可替代性的优化
(2)微服务的挑战

分布式系统的复杂度
运维成本
部署自动化
DevOps与组织结构
服务间依赖测试
服务间依赖管理

4.4. 微服务和SOA的对比

微服务和SOA的对比如下表所示。
img

5. 模型驱动架构(Model Driven Architecture,MDA)

5.1. 基本概念

一Model?

客观事物的抽象表示

一Architecture?

构成系统的部件、连接件及其约束的规约

一Model Driven?

使用模型完成软件的分析、设计、构建、部署、维护等各开发活动

MDA起源于分离系统规约和平台实现的思想

5.2. MDA的主要目标

Portability(可移植性)
Interoperability(互通性)
Reusability(可重用性)

5.3. MDA的3种核心模型

平台独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型。
平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型。PIM会被变换成一个或多个PSM。
代码Code:用源代码对系统的描述(规约)。每个PSM都将被变换成代码。

img

07-系统设计

1. 系统设计概述

系统设计的目标是根据系统分析的结果,完成系统的构建过程。其主要目的是绘制系统的蓝图,权衡和比较各种技术和实施方法的利弊,合理分配各种资源,构建新系统的详细设计方案和相关模型,指导系统实施工作的顺利开展。

系统设计的主要内容包括概要设计和详细设计。概要设计又称为系统总体结构设计,主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。

在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。详细设计又可分为多种,包括:

网络设计
代码设计
输入/输出设计
处理流程设计
数据存储设计
用户界面设计
安全性和可靠胜设计

2. 结构化设计

2.1. 概述

结构化设计(Structured Design , SD)是一种面向数据流的方法,它以软件需求规格说明书(SRS)和结构化分析(SA)阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。

SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计详细设计两个阶段,其中概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系;详细设计的主要任务是为每个模块设计实现的细节。

img

2.2. 模块结构

系统是一个整体,它具有整体性的目标和功能,但这些目标和功能的实现又是由相互联系的各个组成部分共同工作的结果。人们在解决复杂问题时使用的一个很重要的原则,就是将它分解成多个小问题分别处理,在处理过程中,需要根据系统总体要求,协调各业务部门的关系。在SD中,这种功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。模块如下:

(1)信息隐蔽与抽象

信息隐蔽原则要求采用封装技术,将程序模块的实现细节(过程或数据)隐藏起来,对于不需要这些信息的其他模块来说是不能访问的,使模块接口尽量简单。

(2)模块化

在 SD方法中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:

  • 模块的大小要适中
  • 模块的扇入和扇出要合理
  • 深度和宽度适当
    (3)耦合

耦合表示模块之间联系的程度。紧密稠合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非耦合则表示模块之间无任何联系,是完全独立的。模块的耦合类型通常分为七种,根据藕合度从低到高排序如下表所示。
img

(4)内聚

内聚表示模块内部各成分之间的联系程度,是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做目标单一的一件事情。模块的内聚类型通常也可以分为七种,根据内聚度从高到低的排序如下表所示。
img

(5)模块类型

在系统结构图中不能再分解的底层模块称为原子模块。如果一个系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果SC是完全因子分解的,就是最好的系统。一般而言,在系统结构图(SC)中存在四种类型的模块如下图所示。
img

  • 传入模块:传入模块从下属模块中获取数据,经过某些处理,再将其传送给上级模块。
  • 传出模块:传出模块从上级模块中获取数据,进行某些处理,再将其传送给下属模块。
  • 变换模块:也称为加工模块,它从上级模块获取数据,进行特定的处理,然后转换成其他形式,再传送回上级模块。大多数计算模块(原子模块)都属于这一类。
  • 协调模块:协调模块是对所有下属模块进行协调和管理的模块。在系统的I/O部分或数据加工部分可以找到这样的模块,在一个好的系统结构图中,协调模块应在较高层出现。

2.3. 系统结构图(Structure Chart,SC)

系统结构图(Structure Chart,SC)又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。

在系统分析阶段,系统分析师可以采用SA方法获取由DFD、数据字典和加工说明等组成的系统的逻辑模型;

在系统设计阶段,系统设计师可根据一些规则,从DFD中导出系统初始的SC。

2.3.1. SC的组成

SC包括以下四个部分:

  • 模块
  • 模块之间的调用关系
  • 模块之间的通信
  • 辅助控制符号

2.3.2. SC的类型

常用的SC主要有以下三种:

  • 变换型
  • 事务型
  • 混合型

3. 面向对象设计

面向对象设计(OOD)是面向对象分析(OOA)方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。在OOD中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。由于现实世界中的事物都可以抽象出对象的集合,所以OOD方法是一种更接近现实世界、更自然的系统设计方法。

3.1. 设计软件类

类封装了信息和行为,是面向对象的重要组成部分,它是具有相同属性、方法和关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责是指类所担任的任务。一个类可以有多种职责,设计得好的类一般至少有一种职责,在定义类时,将类的职责分解为类的属性和方法,其中属性用于封装数据,方法用于封装行为。设计类是OOD中最重要的组成部分,也是最复杂和最耗时的部分。

在系统设计过程中,类可以分为三种类型,分别是实体类、控制类和边界类。

  • 实体类:实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。
  • 控制类:控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”)转化来的名词,例如,用例“身份验证”可以对应于一个控制类“身份验证器”,它提供了与身份验证相关的所有操作。
  • 边界类:边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口。

3.2. 对象持久化与数据库

在面向对象开发方法中,对象只能存在于内存中,而内存不能永久保存数据,如果要永久保存对象的状态需要进行对象的持久化(persistence),对象持久化是把内存中的对象保存到数据库或可永久保存的存储设备中。

目前关系数据库仍旧是使用最为广泛的数据库如DB2,Oracle,SQL Servr等关系数据库。

随着对象持久化技术的发展,诞生了越来越多的持久化框架,目前,主流的持久化技术框架包括CMP, Hibernate, iBatis和JDO等。

3.3. 面向对象设计的基本过程

面向对象设计的基本过程如下图所示。

需求模型作为输入,设计模型作为输出
img

3.4. 面向对象设计的原则

  • 单一职责原则:设计目的单一的类
  • 开放-封闭原则:对扩展开放,对修改封闭
  • 李氏(Liskov)替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
  • 迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解

4. 设计模式

4.1. 设计模式概述

设计模式包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素,其中的关键元素包括以下四个方面:

(1)模式名称。给模式取一个助记名,用一两个词语来描述模式待解决的问题、解决方案和使用效果,以便更好地理解模式并方便开发人员之间的交流。

(2)问题。描述应该在何时使用模式,即在解决何种问题时可使用该模式。

(3)解决方案。描述设计的组成成分、它们之间的相互关系及各自的职责和楠***乍方式。模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供一个问题的抽象描述和具有一般意义的元素组合(类或对象组合)。

(4)效果。描述模式应用的效果以及使用模式时应权衡的问题,即模式的优缺点。

设计模式相关的概念:

架构模式:软件设计中的高层决策。例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策。

设计模式:主要关注软件系统的设计,与具体的实现语言无关

惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法。

4.2. 设计模式的分类

根据目的和用途不同,设计模式可分为创建型(creational)模式、结构型(structural)模式和行为型(behavioral)模式三种。创建型模式主要用于创建对象,结构型模式主要用于处理类或对象的组合,行为型模式主要用于描述类或对象的交互以及职责的分配。

具体内容如下图所示:

img
(1)创建型模式

img
(2)结构型模式

img
(3)行为型模式

img
img

5. 人机界面设计

人机界面设计的内容如下图所示。
img

6. Web开发

Web开发相关技术如下:

从架构来看:MVC,MVP,MWM,REST,Webservice,微服务。

从缓存来看:MemCache, Redis, Squid。

从并发分流来看:集群(负载均衡)、CDN。

从数据库来看:主从库(主从复制),内存数据库,反规范化技术,NoSQL,分区(分表)技术,视图与物化视图。

从持久化来看:Hibernate,Mybatis。

从分布存储来看:Hadoop, FastDFS,区块链。

从数据编码看:XML,JSON。

从Web应用服务器来看:Apache,WebSphere,WebLogic,Tomcat,

JBOSS,IIS。

其它:静态化,有状态与无状态。响应式Web设计。

6.1. 负载均衡技术

基于特定软件的负载均衡(HTTP重定向)(应用层)
反向代理负载均衡(应用层)
基于DNS的负载均衡(传输层)
基于NAT的负载均衡(传输层)
混合型负载均衡

静态算法:轮转算法、加权轮转算法、源地址哈希散列算法、目标地址哈希散列算法、随机算法
动态算法:最小连接数算法、加权最小连接数算法、加权百分比算法

硬件负载均衡:F5
软件负载均衡:LVS、Nginx、HAproxy

6.1.1. 应用层负载均衡

1、HTTP重定向。HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。

特点:实现简单,但性能较差。

2、反向代理服务器。在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache, nginx都可以充当反向代理服务器。

特点:部署简单,但代理服务器可能成为性能的瓶颈。

6.1.2. 传输层负载均衡

1、DNS域名解析负载均衡。DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。

特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。

2、基于NAT的负载均衡。基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。

特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。

6.2. 有状态与无状态

无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任伺信息。

有状态服务(statefulservice)则相反,它会在自身保存一些数据,先后的请求是有关联的。

6.3. 缓存技术

MemCache:Memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcache通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Redis:Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Squid:Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP 协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/0驱动的进程来处理所有的客户端请求。

Redis与Memcache的差异如下:

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。他们都支持key-value数据类型。同时Memcache还可用于缓存其他东西,例如图片、视频等等,Redis还支持list、set、hash等数据结构的存储。

2、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Memcache挂掉之后,数据就没了。

3、灾难恢复-Memcache挂掉后,数据不可恢复;Redis数据丢失后可以恢复。

4、在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcache相比一个最大的区别。当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。

5、Redis在很多方面支持数据库的特性,可以这样说他就是一个数据库系统,而Memcache只是简单地K/V缓存。

所以在选择方面如果有持久方面的需求或对数据类型和处理有要求的应该选择Reddis。如果简单的key/value存储应该选择Memcache。

6.4. CDN(内容分发网络)

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

6.5. XML与JSON

扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

  • XML的优点:
格式统一,符合标准;
容易与其他系统进行远程交互,数据共享比较方便。
  • XML的缺点:
XML文件庞大,文件格式复杂,传输占带宽;
服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
服务器端和客户端解析XML花费较多的资源和时间。
JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
  • JSON的优点:
数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP,Python, Ruby等服务器端语言,便于服务器端的解析;
因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
  • JSON的缺点:

没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性。

6.6. WEB应用服务器

WEB应用服务器可以理解为两层意思:

(1)WEB服务器:其职能较为单一,就是把浏览器发过来的Request请求,返回Html页面。

(2)应用服务器:进行业务逻辑的处理。

Apache:Web服务器,市场占有率达60%左右。它可以运行在几乎所有的Unix、Windows、Linux系统平台上。

IIS:早期Web服务器,目前小规模站点仍有应用。

Tomcat:开源、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。

JBOSS:JBOSS是基于J2EE的开放源代码的应用服务器。一般与Tomcat或Jetty绑定使用。

WebSphere:一种功能完善、开放的Web应用程序服务器,它是基于Java的应用环境,用于建立、部署和管理Internet和Intranet Web应用程序。

WebLogic:BEA WebLogic Server是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。

Jetty:Jetty是一个开源的servlet容器,它为基于Java的web容器。

6.7. REST(表达性状态传递)

REST (Representational State Transfer,表述性状态转移)是一种只使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。

REST的5个原则:

(1)网络上的所有事物都被抽象为资源。

(2)每个资源对应一个唯一的资源标识。

(3)通过通用的连接件接口对资源进行操作。

(4)对资源的各种操作不会改变资源标识。

(5)所有的操作都是无状态的。

6.8. 响应式Web设计

响应式WEB设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。

方法与策略:

(1)采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。

(2)响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。

08-系统测试与维护

1. 软件测试概念与方法

1.1. 软件测试概述

软件测试是在将软件交付给客户之前所必须完成的重要步骤。目前,软件的正确性证明尚未得到根本的解决,软件测试仍是发现软件错误(缺陷)的主要手段。软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等规定的软件质量要求。通过测试,发现软件缺陷,为软件产品的质量测量和评价提供依据。

1.1.1. 测试自动化

自动化测试通常需要构建存放程序软件包和测试软件包的文件服务器、存储测试用例和测试结果的数据库服务器、执行测试的运行环境、控制服务器、Web服务器和客户端程序。自动化测试的主要实现方法包括代码的静态与动态分析、测试过程的捕获与回放、测试脚本技术、虚拟用户技术和测试管理技术等。

  • 自动化测试具有如下优点:

(1)提高测试执行的速度

(2)提高工作效率

(3)保证测试结果的准确性

(4)连续运行测试脚本

(5)模拟现实环境下受约束的情况

  • 自动化测试工具:

(1)单元测试工具

(2)负载和性能测试工具

(3)GUI功能测试工具

(4)基于Web应用的测试工具

1.1.2. 软件调试

软件调试(排错)与成功的测试形影相随。测试成功的标志是发现了错误,根据错误迹象确定错误的原因和准确位置,并加以改正,主要依靠软件调试技术。

软件调试方法:

  • 蛮力法:主要思想是“通过计算机找错”,低效,耗时。
  • 回溯法:从出错处人工沿控制流程往回追踪,直至发现出错的根源。复杂程序由于回溯路径多,难以实施。
  • 原因排除法:主要思想是演绎和归纳,用二分法实现。
  • 软件调试与软件测试的区别:

(1)测试的目的是找出存在的错误,而调试的目的是定位错误并修改程序以修正错误。

(2)调试是测试之后的活动测试和调试在目标、方法和思路上都有所不同。

(3)测试从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的条件开始,结束的过程不可预计。

(4)测试过程可以事先设计,进度可以事先确定;调试不能描述过程或持续时间。

1.2. 软件测试方法

1.2.1. 静态测试(纯人工)

(1)桌前检查

(2)代码审查

(3)代码走查

(4)静态分析

1.2.2. 动态测试(机器运行)

(1)白盒测试

白盒测试也称为结构测试,主要用于软件单元测试阶段。它的主要思想是,将程序看作是一个透明的白盒,测试人员完全清楚程序的结构和处理算法,按照程序内部逻辑结构设计测试用例,检测程序中的主要执行通路是否都能按预定要求正确工作。

白盒测试方法主要有:

  • 控制流测试
  • 数据流测试
  • 程序变异测试

(2)黑盒测试

黑盒测试也称为功能测试,主要用于集成测试、确认测试和系统测试阶段。黑盒测试将软件看作是一个不透明的黑盒,完全不考虑(或不了解)程序的内部结构和处理算法,而只检查软件功能是否能按照SRS的要求正常使用,软件是否能适当地接收输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如,文件和数据库等)的完整性等。

黑盒测试根据SRS所规定的功能来设计测试用例,一般包括:

  • 功能分解
  • 等价类划分
  • 边界值分析
  • 判定表
  • 因果图
  • 状态图
  • 随机测试
  • 猜错法
  • 正交试验法

黑白盒测试的常用的方法如下图所示:
img

1.2.3. 测试的阶段

(1)测试的阶段如下图所示:
img

(2)系统测试活动和步骤如下:

  • 制定系统测试计划:进行人员以及任务的确定,明确测试范围,测试方法,测试环境与辅助工具。
  • 设计系统测试用例:如等价类划分、边界值分析等测试方法的应用。
  • 执行系统测试:执行设计好的测试用例,并记录结果。
  • 缺陷管理与改错:消除已发现的错误。
    (3)狭义性能测试分类如下:

负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

压力测试:通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试。

强度测试:在系统资源特别低的情况下考查软件系统运行情况。

并发测试:并发测试也称为容量测试,主要用来确定系统可处理的同时在线的最大用户数。

(4)V模型测试过程

V模型的测试过程如下图所示:

img

  • 单元测试:模块测试模块功能、性能、接口等。
  • 集成测试:模块间的接口。
  • 确认测试:验证软件与需求的一致性。内部确认测试、Alpha测试、Beta测试,验收测试。
  • 系统测试:真实环境下验证完整的软件配置项能否和系统正确连接。
  • 回归测试:测试软件变更之后,变更部分的正确性对变更需求的符合性。

1.2.4. 面向对象系统的测试

面向对象系统的测试包括以下方面内容:

  • 算法层(单元测试):包括等价类划分测试、组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试。
  • 类层(模块测试):包括不变式边界测试、模态类测试和非模态类测试。
  • 模板层/类树层(集成测试):包括多态服务测试和展平测试
  • 系统层(系统测试)

1.3. 软件的评审

软件评审需注意的内容如下:

  • 不应以测试代替评审
  • 评审人员应关注产品而不应评论开发人员
  • 评审人员应关注于实质性问题
  • 评审会议不应变为问题解决方案讨论会
  • 评审应被安排进入项目计划
  • 评审参与者应了解整个评审过程
  • 评审人员事先应对评审材料充分了解
  • 应重视评审的组织工作

1.4. 软件的过程改进(CMMI)

软件阶段式的组织能力成熟度和连续式软件过程能力如下图所示:
img

2. 系统运行与评价

2.1. 遗留系统演化策略

2.1.1. 评价结果分析

遗留系统按照技术水平和业务价值的高低可分为如下情况:

img

2.1.2. 演化策略

(1)淘汰策略

遗留系统的技术含量较低且具有较低的业务价值。对遗留系统的完全淘汰是企业资源的根本浪费系统分析师应该善于“变废为宝”通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计降低新系统开发的风险。

(2)继承策略

遗留系统的技术合量较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。

(3)改造策略

遗留系统具有较高的业务价值基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。

(4)集成策略

遗留系统的技术含量较高但其业务价值较低可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。

2.2. 新旧系统的转换策略

新旧系统的转换策略通常有三种:直接策略、并行策略和分段转换策略,如下图所示。
img

  • 直接转换策略:直接转换就是在原有系统停止运行的某一时刻,新系统立即投入运行,中间没有过渡阶段。
  • 并行转换策略:并行转换就是新系统和现有系统并行工作一段时间,经过这段时间的试运行后,再用新系统正式替换下现有系统。
  • 分段转换策略:分段转换策略也称为逐步转换策略,这种转换方式是直接转换方式和并行转换方式的结合,采取分期分批逐步转换。

2.3. 数据的转换与迁移

数据转换和迁移是新旧系统转换交接的主要工作之一。为使数据能平滑迁移到新系统中,在新系统设计阶段就要尽量保留现有系统中合理的数据结构,这样才能尽可能降低数据迁移的工作量和难度。数据转换和迁移过程如下图所示:

2.4. 系统运行与维护

系统维护就是在系统运行过程中,为了改正错误或满足新的需求而修改系统的活动,包括软件维护(程序维护)、数据维护、代码维护、设备维护,以及机构和人员的变动等。

软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等二交付后的活动包括软件修改、培训、帮助资料等。其可维护性和维护类型如下图所示:

软件维护的分类(4种):

  • 正确性维护:指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。
  • 适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。
  • 完善性维护:扩充功能和改善性能而进行的修改。对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。
  • 预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。

09-项目管理

1. 范围管理

范围管理:确定项目的边界,即哪些工作是项目应该做的,哪些工作不应该包括在项目中。

WBS:工作分解结构(Work Breakdown Structure),创建WBS是把项目工作按阶段可交付成果分解成较小的,更易于管理的组成部分的过程。WBS的基本定义 :以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。

范围管理的流程和WBS的分层结构如下图所示。
img

2. 时间管理(进度管理)

时间管理:也叫进度管理,就是采用科学的方法,确定进度目标,编制进度计划和资源供应计划,进行进度控制,在与质量、成本目标协调的基础上,实现工期目标。

时间管理的流程如下图所示。
img

2.1. 前导图法(Precedence Diagramming Method,PDM)

前导图法(Precedence Diagramming Method , PDM)也称为单代号网络图法(Active on the Node,AON),它用方格或矩形(节点)表示活动用箭线表示依赖关系。在PDM中每项活动都有唯一的活动号注明了预计工期。每个节点的活动有最早开始时间(Early Start,ES),最迟开始时间(Late Start,LS)、最早结束时间(Early Finish,EF)和最迟结束时间(Late Finish,LF)。PDM节点的几种表示方法如图所示。

img
PDM包括四种依赖关系或先后关系:

(1)完成对开始(FS):后一活动的开始要等到前一活动的完成。

(2)完成对完成(FF):后一活动的完成要等到前一活动的完成。

(3)开始对开始(SS):后一活动的开始要等到前一活动的开始。

(4)开始对完成(SF):后一活动的完成要等到前一活动的开始。

2.2. 箭线图法(Arrow Diagramming Method,ADM)

箭线图法(Arrow Diagramming Method,ADM)也称为双代号网络图法(Active On the Arrow,AOA)它用节点表示事件用箭线表示活动并在节点处将其连接起来以表示依赖关系。在ADM中,给每个事件而不是每项活动指定一个唯一的号码。活动的开始(箭尾)事件叫做该活动的紧前事件(precede event)活动的结束(箭头)事件叫做该活动的紧后事件(successor event)。

ADM只使用FS关系,因此可能要使用虚活动才能正确地定义所有的逻辑关系,用虚箭线表示。在复杂的ADM中,为避免多个起点或终点引起的混淆,也可以用虚活动来解决,如下图所示。
img

2.3. 关键路径法(Critical Path Method,CPM)

关键路径法(Critical Path Method,CPM),又称关键线路法。一种计划管理方法。

关键路径法是在制订进度计划时使用的一种进度网络分析技术。关键路线法沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早开始与完成日期、最迟开始与完成日期,不考虑任何资源限制。

相关概念如下:

(1)总时差(松弛时间):在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。

(2)自由时差:在不影响紧后活动的最早开始时间前提下,该活动的机动时间。

对于有紧后活动的活动,其自由时差等于所有紧后活动最早开始时间减本活动最早完成时间所得之差的最小值。
对于没有紧后活动的活动,也就是以网络计划终点节点为完成节点的活动,其自由时差等于计划工期与本活动最早完成时间之差。

(3)对于网络计划中以终点节点为完成节点的活动,其自由时差与总时差相等。此外,由于活动的自由时差是其总时差的构成部分,所以,当活动的总时差为零时,其自由时差必然为零,可不必进行专门计算。

2.4. 甘特图(Gantt)

甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。如下图所示。
img

甘特图的优缺点如下:

优点:甘特图直观、简单、容易制作,便于理解,能很清晰地标识出直到每一项任务的起始与结束时间,一般适用比较简单的小型项目,可用于WBS的任何层次、进度控制、资源优化、编制资源和费用计划。
缺点:不能系统地表达一个项目所包含的各项工作之间的复杂关系,难以进行定量的计算和分析,以及计划的优化等。

3. 成本管理

成本管理:在整个项目的实施过程中,为确保项目在批准的预算条件下尽可能保质按期完成,而对所需的各个过程进行管理与控制。

成本管理的过程及相关方法如下图所示:
img

挣值管理的相关概念如下:

计划工作量的预算成本(PV)
PV=计划工作量×预算定额

(2)已完成工作量的实际成本(AC)

(3)已完成工作量的预算成本(EV)

EV=已完成工作量×预算定额

(4)完工预算(BAC)

BAC=完工时的PV总和

相关计算公式如下:

进度偏差:SV=EV-PV
成本偏差:CV=EV-AC
进度绩效指数:SPI=EV/PV
成本绩效指数:CPI=EV/AC
剩余工作的成本(ETC)
ETC=BAC-EV

ETC=(BAC-EV)/CPI

完工估算(EAC)
EAC = AC + ETC

4. 软件质量管理

相关概念如下:

质量保证一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。
质量控制是实时监控项目的具体结果,以判断它们是否符合相关质量标准,制订有效方案,以消除产生质量问题的原因。
一定时间内质量控制的结果也是质量保证的质量审计对象。质量保证的成果又可以指导下一阶段的质量工作。包括质量控制和质量改进。

5. 软件配置管理

5.1. 配置项

IEEE对配置项的定义为硬件、软件或二者兼有的集合,为配置管理指定的,在配置管理过程中作为一个单独的实体对待,可作为配置项管理的有:外部交付的软件产品和数据、指定的内部软件工作产品和数据、指定的用于创建或支持软件产品的支持工具、供方/供应商提供的软件和客户提供的设备/软件。

典型配置项包括项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各种数据,它们经评审和检查通过后进入软件配置管理(SCM)。

每个配置项的主要属性有:名称、标识符、文件状态、版本、作者和日期等。所有配置项都被保存在配置库里,确保不会混淆、丢失。配置项及其历史记录反映了软件的演化过程。

5.2. 配置库

配置库也称为配置项库,是用来存放配置项的工具。配置库记录与配置相关的所有信息,其中存放受控的配置项是很重要的内容,利用配置库中的信息可评价变更的后果,这对变更控制有着重要的意义。配置库有三类:

-开发库:(动态库、程序员库、工作库;动态系统、开发者系统、开发系统、工作空间)
-受控库(主库、系统库;主系统、受控系统)
-产品库(备份库、静态库、软件仓库;静态系统)

相关概念:

(1)检查点:指在规定的时间间隔内对项目进行检查,比较实际与计划之间的差异,并根据差异进行调整。

(2)里程碑:完成阶段性工作的标志,不同类型的项目里程碑不同。

(3)基线:指一个(或一组)配置项在项目生命周期的不同时间点上通过正式评审而进入正式受控的一种状态。基线是一些重要的里程碑,但相关交付成果要通过正式评审,并作为后续工作的基准和出发点。基线一旦建立后其变化需要受控制。

5.3. 变更控制

变更是指在项目的实施过程中,由于项目环境或者其他的各种原因对项目的部分或项目的全部功能、性能、体系结构、技术、指标、集成方法和项目进度等方面做出改变。项目变更是正常的、不可避免的。

  • 变更控制的流程如下图所示:
    img

  • 利用配置库实现变更控制,配置项的状态变化过程如下图所示:
    img

5.4. 版本控制

在配置管理中,所有的配置项都应列入版本控制的范畴。对于软件产品的版本有两个方面的意思,一是为满足不同用户的不同使用要求,如用于不同运行环境的系列产品。如适合Linux,Windows,Solaris用户的软件产品分别称为Li nux版Windows版和Solaris版。它们在功能和性能上是相当的,原则上没有差别,或者说,这些是并列的系列产品。对于这类差别很小的不同版本,互相也称为变体(variant)。

另一种版本的含义是在软件产品投入使用后,经过一系列的变更(例如,纠错、增加功能、提高性能的更改等),而形成的一系列的顺序演化的产品,这些产品也称为一个版本,每个版本都可说出它是从哪个版本导出的演化过程。

版本控制的流程如下所示:
img

处于草稿状态的配置项的版本号格式为:0.YZ,其中YZ数字范围为01~99。随着草稿的不断完善。YZ的取值应递增。YZ的初值和增幅由开发者自己把握。
处于正式发布状态的配置项的版本号格式为:X.Y。其中X为主版本号,取值范围为1~9。Y为次版本号,取值范围为1~9。配置项第一次正式发布时,版本号为1.0。
如果配置项的版本升级幅度比较小,一般只增大Y值,X值保持不变。只有当配置项版本升级幅度比较大时,才允许增大X值。
处于正在修改状态的配置项的版本号格式为:X.YZ。在修改配置项时,一般只增大Z值,X.Y值保持不变。

6. 项目管理工具

(1)能做什么(项目管理相关的工作辅助):任务调度、成本估算、资源分配、预算跟踪、人时统计、配置控制,确定关键路径、松弛时间、超前时间和滞后时间,生成一定格式的报表和报告。

(2)不能做什么(开发技术相关辅助工作):不能指导软件设计人员按软件生存周期各个阶段的适用技术进行设计工作。

10-计算机组成与体系结构

1. 编码及浮点数运算

(1)浮点数表示:

(2)运算过程:

对阶>尾数计算>结果格式化

(3)特点:

  • 一般尾数用补码,阶码用移码
  • 阶码的位数决定数的表示范围,位数越多范围越大
  • 尾数的位数决定数的有效精度,位数越多精度越高
  • 对阶时,小数向大数看齐
  • 对阶是通过较小数的尾数右移实现的

2. 计算机体系结构分类—Flynn

Flynn分类如下表所示:
img

3. CISC与RISC

在计算机系统结构发展的过程中,指令系统的优化设计有两个截然相反的方向,一个是增强指令的功能,设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统来实现,这种计算机系统称为复杂指令系统计算机(Complex Instruction Set Computer,CISC);另一种是尽量简化指令功能,只保留那些功能简单,能在一个节拍内执行完成的指令,较复杂的功能用一段子程序来实现,这种计算机系统称为精简指令系统计算机(Reduced Instruction Set Computer,RISC)。

CISC和RISC的对比如下表所示:
img

4. 流水线

4.1. 流水线概念

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。

指令顺序执行和流水线执行的过程如下图所示:
img

4.2. 流水线计算

流水线计算公式如下:
img

一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指= 、分析时间t执行= 、执行时间t执行= 的情况下,若按串行方式执行,则10条指令全部执行完需要(90) ;若按流水线的方式执行,流水线周期为(4) ,则10条指令全部执行完需要 (45) 。

4.3. 超标量流水线

在标准状态下,一个处理器含一条指令流水线,超标量就是一个处理器中有多条指令流水线。如下图所示:

img
例题:

设每条指令由取指、分析、执行3个子部件完成,并且每个子部件的执行时间均为 。若采用常规标量单流水线处理机(即该处理机的度为1),连续执行16条指令,则共耗时(18) 。若采用度为4的超标量流水线处理机,连续执行上述16条指令,则共耗时(6) 。

4.4. 流水线吞吐率计算

流水线的吞吐率(Though Put rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。计算流水线吞吐率的最基本的公式如下:

流水线最大吞吐率:

4.5. 流水线加速比计算

完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比。计算流水线加速比的基本公式如下:

5. 存储系统

5.1. 层次化存储结构

层次化存储架构如下图所示:

img

5.2. Cache存储器

5.2.1. Cache概念

Cache的功能:提高CPU数据输入输出的速率。突破冯诺依曼瓶颈。即CPU与存储系统间数据传送带宽限制。
在计算机的存储系统体系中,Cache是访问速度最快的层次。
使用Cache改善系统性能的依据是程序的局部性原理。
如果以h代表对Cache的访问命中率, 表示Cache的周期时间, 表示主存储器周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为 ,则: 。其中,(1-h)又称为失效率(未命中率)。

5.2.2. 局部性原理

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

5.2.3. Cache的页面淘汰算法与读写过程

Cache的页面淘汰算法和读写过程如下图所示:

img

5.2.4. Cache的映像机制

Cache的映像机制如下:

  • 直接相联映像:硬件电路较简单,但冲突率很高
  • 全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低
  • 组相联映像:直接相联与全相联的折中。

5.3. 主存-编址

不同位的存储器编址如下图所示:
img

例题:

内存按字节编址,利用8Kx4bit的存储器芯片构成84000H到8FFFFH的内存,共需12片。

计算过程如下:
img

5.4. 磁盘结构与参数

磁盘结构如下图所示:

img
存取时间=寻道时间+等待时间(平均定位时间+转动延迟)
注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。

5.5. 磁盘移臂调度算法

磁盘移臂调度算法有如下几种:

先来先服(FCFS)
最短寻道时间优先(SSTF)
扫描算法(SCAN)
循环扫描(CSCAN)算法

5.6. 网络存储技术

目前,主流的网络存储技术主要有三种,分别是直接附加存储(Direct Attached Storage,DAS)、网络附加存储(Network Attached Storage,NAS)和存储区域网络(Storage Area Network,SAN)。

5.6.1. 直接附加存储(DAS)

DAS是将存储设备通过SCSI(Small Computer System Interface小型计算机系统接口)电缆直接连到服务器,其本身是硬件的堆叠,存储操作依赖于服务器,不带有任何存储操作系统。因此有些文献也把DAS称为SAS ( Server Attached Storage服务器附加存储)。

DAS的适用环境为:

(1)服务器在地理分布上很分散,通过SAN或NAS在它们之间进行互连非常困难时;

(2)存储系统必须被直接连接到应用服务器(例如Microsoft Cluster Server或某些数据库使用的“原始分区)上时;

(3)包括许多数据库应用和应用服务器在内的应用,它们需要直接连接到存储器上时。

由于DAS直接将存储设备连接到服务器上,这导致它在传递距离、连接数量、传输速率等方面都受到限制。因此,当存储容量曾加时,DAS方式很难扩展,这对存储容量的升级是一个巨大的瓶颈;另一方面由于数据的读取都要通过服务器来处理必然导致服务器的处理压力增加数据处理和传输能力将大大降低;此外,当服务器出现宕机等异常时,也会波及到存储数据,使其无法使用。目前DAS基本被NAS所代替。

5.6.2. 网络附加存储(NAS)

采用NAS技术的存储设备不再通过I/O总线附属于某个特定的服务器,而是通过网络接口与网络直接相连由用户通过网络访问。NAS存储系统的结构如下所示。

img

  • NAS存储系统的结构

NAS存储设备类似于一个专用的文件服务器,它去掉了通用服务器的大多数计算功能,而仅仅提供文件系统功能,从而降低了设备的成本。并且为方便存储设备到网络之间以最有效的方式发送数据,专门优化了系统硬软件体系结构。NAS以数据为中心,将存储设备与服务器分离,其存储设备在功能上完全独立于网络中的主服务器,客户机与存储设备之间的数据访问不再需要文件服务器的干预,同时它允许客户机与存储设备之间进行直接的数据访问,所以不仅响应谏度快,而且数据传输速率也很高。

NAS技术支持多种TCP/IP网络楠议主要是NFS(Net File System,网络文件系统)和CIFS(Common Internet File Syste,通用Internet文件系统)来进行文件访问,所以NAS的性能特点是进行小文件级的共享存取。在具体使用时,NAS设备通常配置为文件服务器,通过使用基于Web的管理界面来实现系统资源的配置、用户配置管理和用户访问登录等。

NAS存储支持即插即用,可以在网络的任一位置津立存储。基于Web管理,从而使设备的安装、使用和管理更加容易。NAS可以很经济地解决存储容量不足的问题,但难以获得满意的性能。

5.6.3. 存储区域网络(SAN)

SAN是通过专用交换机将磁盘阵列与服务器连接起来的高速专用子网。它没有采用文件共享存取方式,而是采用块(block)级别存储。SAN是通过专用高速网将一个或多个网络存储设备和服务器连接起来的专用存储系统,其最大特点是将存储设备从传统的以太网中分离了出来,成为独立的存储区域网络SAN的系统结构如下图所示。

img
SAN存储系统结构
根据数据传输过程采用的协议,其技术划分为FC SAN和IP SAN。另外,还有一种新兴的IB SAN技术。

(1)FC SAN。FC(Fiber Channel,光纤通道)和SCSI接口一样,最初也不是为硬盘设计开发的接口技术,而是专门为网络系统设计的,随着存储系统对速度的需求,才逐渐应用到硬盘系统中。光纤通道的主要特胜有:热插拔性、高速带宽、远程连接、连接设备数量大等。它是当今最昂贵和复杂的存储架构,需要在硬件、软件和人员培训方面进行大量投资。

FC SAN由三个基本的组件构成,分别是接口(SCSI,FC)、连接设备(交换机、路由器)和协议(IP,SCSI)。这三个组件再加上附加的存储设备和服务器就构成一个SAN系统。它是专用、高速、高可靠的网络,允许独立、动态地增加存储设备,使得管理和集中控制更加简化。

FC SAN有两个较大的缺陷,分别是成本和复杂性,其原因就是因为使用了FC。在光纤通道上部署SAN,需要每个服务器上都要有FC适配器、专用的FC交换机和独立的布线基础架构。这些设施使成本大幅增加,更不用说精通FC协议的人员培训成本。

(2)IP SAN是基于IP网络实现数据块级别存储方式的存储网络。由于设备成本低配置技术简单,可共享和使用大容量的存储空间,因而逐渐获得广泛的应用。

在具体应用上,IP存储主要是指iSCSI(Internet SCSI)。作为一种新兴的存储技术,iSCSI基于IP网络实现SAN架构,既具备了IP网络配置和管理简单的优势,又提供了SAN架构所拥有的强大功能和扩展性。iSCSI是连接到一个TCP/IP网络的直接寻址的存储库,通过使用TCP/IP协议对SCSI指令进行封装,可以使指令能够通过IP网络进行传输,而过程完全不依赖于地点。

iSCSI优势的主要表现在于,首先,建立在SCSI、TCP/IP这些稳定和熟悉的标准上,因此安装成本和维护费用都很低;其次,iSCSI支持一般的以太网交换机而不是特殊的光纤通道交换机,从而减少了异构网络和电缆;最后,ISCSI通过IP传输存储命令,因此可以在整个Internet上传输,没有距离限制。

iSCSI的缺点在于,存储和网络是同一个物理接口同时协议本身的开销较大楠议本身需要频繁地将SCSI命令封装到IP包中以及从IP包中将SCSI命令解析出来,这两个因素都造成了带宽的占用和主处理器的负担。但是,随着专门处理ISCSI指令的芯片的开发(解决主处理器的负担问题),以及10G以太网的普及(解决带宽问题),iSCSI将有着更好的发展。

(3)IB SAN。IB(InfiniBand无限带宽)是一种交换结构I/O技术其设计思路是通过一套中心机构(IB交换机)在远程存储器、网络以及服务器等设备之间建立一个单一的连接链路,并由IB交换机来指挥流量。这种结构设计得非常紧密,大大提高了系统的性能、可靠胜和有效胜,能缓解各硬件设备之间的数据流量拥塞。而这是许多共享总线式技术没有解决好的问题,因为在共享总线环境中,设备之间的连接都必须通过指定的端口建立单独的链路。

IB要支持两种环境:模块对模块的计算机系统(支持I/O模块附加插槽);在数据中心环境中的机箱对机箱的互连系统、外部存储系统和外音喝域网/广域网访问设备。旧支持的带宽比现在主流的I/O载体(例如,SCSI、FC等)还要高,另外,由于使用IPv6的报头,IB还支持与传统Internet/Intranet设施的有效连接。用IB技术替代总线结构所带来的最重要的变化就是建立了一个灵活、高效的数据中心,省去了服务器复杂的I/O部分。

IB SAN采用层次结构,将系统的构成与接入设备的功能定义分开,不同的主机可通过HCA(Host Channel Adapter主机通道适配器)、RAID等网络存储设备利用TCA(Target Channel Adapter,目标通道适配器)接入IB SAN。

IB SAN主要具有如下特性:可伸缩的Switched Fabric互连结构;由硬件实现的传输层互连高效、可靠;支持多个虚信道;硬件实现自动的路径变换;高带宽,总带宽随IB Switch规模成倍增长;支持SCSI远程DMA(Direct Memory Access直接内存存取)协议;具有较高的容错性和抗毁性,支持热拔插。

6. 总线

6.1. 概念

总线是一组能为多个部件分时共享的公共信息传送线路。共享是指总线上可以挂接多个部件,各个部件之间相互交换的信息都可以通过这组公共线路传送;分时是指同一时刻只允许有一个部件向总线发送信息,如果出现两个或两个以上部件同时向总线发送信息,势必导致信号冲突。当然,在同一时刻允许多个部件同时从总线上接收相同的信息。一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。

6.2. 总线的分类

按总线功能来划分,总线可分为数据总线、地址总线、控制总线三类。

  • 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
  • 地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
  • 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备,一般常见的为USB Bus和1394 Bus。
    按总线在微机系统中的位置,可分为机内总线和机外总线两种。

7. 校验码

计算机系统运行时,各个部分之间要进行数据交换,为确保数据在传送过程正确无误,常使用检验码。我们常使用的检验码有三种, 分别是奇偶校验码、海明校验码和循环冗余校验码(CRC)。

(1)奇偶校验码

奇偶校验码最简单,但只能检测出奇数位出错,如果发生偶数位错误就无法检测。但经研究是奇数位发生错误的概率大很多,而且奇偶校验码无法检测出哪位出错,所以属于无法矫正错误的校验码。奇偶校验码是奇校验码和偶校验码的统称,它们都是通过在要校验的编码上加一位校验位组成。如果是奇校验加上校验位后,编码中1的个数为奇数个。如果是偶校验加上校验位后,编码中1的个数为偶数个。

(2)海明校验码

海明码也是利用奇偶性来校验数据的。它是一种多重奇偶校验检错系统,它通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错。

(3)循环冗余校验码

CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称(n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中。

例:循环冗余校验码(Cyclic Redundancy Check,CRC)是数据通信领中最常用的一种差错校验码,该校验方法中,使用多项式除法(模2除法)运算后的余数为校验字段。若数据信息为n位,则将其左移k位后,被长度为k+1位的生成多项式相除,所得的k位余数即构成k个校验位,构成n+k位编码。若数据信息为1100,生成多项式为 ,(即1011),则CRC编码是(010)。

8. 系统可靠性

8.1. 可靠性指标

平均无故障时间(MTTF):对于不可修复系统,系统的平均寿命指系统发生失效前的平均工作(或存储)时间或工作次数,也称为系统在失效前的平均时间,记为MTTF(Mean Time To Failure)。
img

平均故障间隔时间(MTBF):对于可修复系统,系统的寿命是指两次相邻失效(故障)之间的工作时间,而不是指整个系统的报废时间。平均寿命即是平均无故障时间,也称为系统平均失效间隔,记为MTBF(Mean Time Between Failure)。

平均故障修复时间(MTTR):可修复产品的平均修复时间,就是从出现故障到修复中间的这段时间记为MTTR(Mean Time To Repair)。MTTR越短表示易恢复性越好。

其相关计算如下图所示:
img

8.2. 串联系统与并联系统

(1)串联系统

串联系统是组成系统的所有单元中任一单元失效就会导致整个系统失效的系统。可靠性计算如下所示:
img

(2)并联系统

并联系统指的是组成系统的所有单元都失效时才失效的系统。可靠性计算公式如下:
img

8.3. 模冗余系统与混合系统

(1)N模冗余系统

N模冗余系统是一种计算机可靠性模型。N模冗余系统是由N个(N=2n+1)相同的子系统和一个表决器组成。表决器把N个子系统中占多数相同结果的输出作为系统的输出。如图所示:
img

在N个子系统中,只要有n+1个或n+1个以上的系统能正常工作,输出正确的结果。假设表决器是完全可靠的,每个子系统的可靠性为R0,则N模冗余系统的可靠性为:
img

(2)混合系统

混合系统的可靠性计算如下图所示:
img

11-系统配置与性能评价

1. 系统性能设计

1.1. 性能指标

系统的相关性能指标如下:

主频和CPU时钟周期(Clock Cycle):主频又称为时钟频率,时钟周期是时钟频率的倒数。

如主频为1GHz,则说明1秒钟有1G个时钟周期,每个时钟周期为100010001000/1G=1ns。

主频=外频*倍频

指令周期(Instruction Cycle):取出并执行一条指令的时间。

总线周期(BUS Cycle):也就是一个访存储器或I/0端口操作所用的时间。

指令周期、总线周期和时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期(也可说一个指令周期包含若干个时钟周期)。

MIPS:每秒处理的百万级的机器语言指令数,主要用于衡量标量机性能。

MFLOPS:每秒百万个浮点操作,不能反映整体情况,只能反映浮点运算情况,主要用于衡量t向量机性能。

1.2. 阿姆达尔(Amdahl)解决方案

阿姆达尔定律:对系统中某组件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于该组件被使用的频率,或所占总执行时间的比例。加速比计算公式如下:

其中, 表示不使用改进组件时完成整个任务的时间, 表示使用改进组件时完成整个任务的时间。加速比主要取决于两个因素:

(1)在原有的系统上,能被改进的部分在总执行时间中所占的比例。这个值称为改进比例,记为 ,它总是小于1。

(2)通过改进的执行方式所取得的性能提高,即如果整个系统使用了改进的执行方式,那么,系统的执行速度会有多少提高,这个值等于在原来的条件下系统的执行时间与使用改进组件后系统的执行时间之比,记为 ,它总大于1。

2. 性能评价方法

2.1. 经典评估方法

时钟频率法:以时钟频率高低衡量速度。
指令执行速度法:表示机器运算速度的单位是MIPS。
等效指令速度法(Gibson mix,吉普森混合法):通过各类指令在程序中所占的比例( )进行计算得到的。特点:考虑指令比例不同的问题。
数据处理速率法(PDR):PDR值的方法来衡量机器性能,PDR值越大,机器性能越好。PDR=L/R 特点:考虑CPU+存储
综合理论性能法(CTP):CTP用MTOPS(Million Theoretical Operations Per Second,每秒百万次理论运算)表示。CTP的估算方法是,首先算出处理部件每个计算单元的有效计算率,再按不同字长加以调整,得出该计算单元的理论性能,所有组成该处理部件的计算单元的理论性能之和即为CTP。

2.2. 基准程序法

把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序(benchmark)。基准程序法是目前一致承认的测试系统性能的较好方法。

真实的程序—》核心程序—》小型基准程序—》合成基准程序

(1)Dhrystone基准程序:它是一个综合性的整数基准测试程序,是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些典型指令综合起来形成的测试程序。

(2)Linpack基准程序:它是国际上最流行的用于测试高性能计算机系统浮点性能的测试。

(3)Whetstone基准程序:它是用Fortran语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成。

(4)SPEC基准程序一种是测试计算机完成单项任务有多快,称为速度测试;另一种是测试计算机在一定时间内能完成多少项任务,称为吞吐率测试。

(5)TPC基准程序:TPC(Transaction Processing Council,事务处理委员会)基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。该基准程序的评测结果用每秒完成的事务处理数TPC来表示。

TPC-A基准程序规范用于评价在OLTP环境下的数据库和硬件的性能;
TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境;
TPC-C测试的是联机订货系统;
TPC-D、TPC-H和TPC-R测试的都是决策支持系统,其中TPC-R允许有附加的优化选项;
TPC-E测试的是大型企业信息服务系统。
TPC-W是基于Web应用的基准程序,用来测试一些通过Internet进行市场服务和销售的商业行为,所以TPC-W可以看作是一个服务器的测试标准。

12-操作系统

1. 操作系统概述

1.1. 概述

操作系统是计算机系统中最重要、最基本的系统软件,它位于硬件和用户之间,一方面能向用户提供接口,方便用户使用计算机;另一方面能管理计算机软硬件资源,以便合理充分地利用它们。

从资源管理的角度来看,它是计算机系统中的资源管理器,负责对系统的软硬件资源实施有效的控制和管理,提高系统资源的利用率;从方便用户使用的角度来看,操作系统是一台虚拟机,它是计算机硬件的首次扩充,隐藏了硬件操作细节,使用户与硬件细节隔离,从而方便了用户的使用。

操作系统的作用可概括如下:

  • 管理系统的硬件、软件、数据资源
  • 控制程序运行
  • 人机之间的接口
  • 应用软件与硬件之间的接口

1.2. 操作系统的类型

一般来说,操作系统的类型可分为如下几种:

  • 单用户操作系统
  • 批处理系统(作业处理系统)
  • 分时操作系统
  • 网络操作系统
  • 分布式操作系统
  • 嵌入式操作系统

1.3. 操作系统的结构

从操作系统的结构来看,主要分为以下几种:

  • 整体结构
  • 层次结构
  • 客户/服务器结构
  • 面向对象结构

2. 进程管理

进程是一个具有独立功能的程序关于数据集合的一次可以并发执行的运行活动,是系统进行资源分配和调度的基本单位。相对于程序,进程是动态的概念,而程序是静态的概念,是指令的集合。进程具有动态胜和并发胜,需要一定的资源(例如,CPU寸间、内存、文件和I/O设备等)来完成其任务,这些资源在创建进程或执行时分配。

2.1. 进程的状态

一个进程从创建而产生至撤销而消亡的整个生命期间,有时占有处理器执行,有时虽可运行但分不到处理器,有时虽有空闲处理器但因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同它是活动的且有状态变化的。

2.1.1. 三态模型

进程具有三种最基本的状态,分别是运行、就绪和阻塞,如下图所示。

img
三态模型
(1)运行状态。运行状态是进程占用处理机正在执行其程序的状态。在单处理机系统中,某个时刻只能有一个进程处于运行状态;在多处理机系统中,可能有多个进程同时处于运行状态。

(2)阻塞状态。阻塞状态也称为等待状态或睡眠状态,是进程由于等待某个事件的发生而处于暂停执行的状态。例如,进程因等待I/O的完成或等待缓冲空间等。

(3)就绪状态。就绪状态是进程已分配到除处理机以外的所有必要资源,具备了执行的条件,等待处理机调度的状态。在系统中,同一时刻可能会有多个进程处于就绪状态,排成就绪队列。

2.1.2. 五态模型

由于进程的不断创建,系统资源特别是内存资源已不能满足所有进程运行的要求。这时就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以均衡负载。进程挂起的原因可能是系统出现故障,或者是用户调试程序,也可能是需要检查问题。下图是具有挂起状态的进程状态及其转换。

五态模型
活跃就绪是指进程在内存并且可被调度的状态。静止就绪是指进程被对换到外存时的就绪状态,是不能被直接调度的状态,只有当内存中没有活跃就绪态进程,或者挂起就绪态进程具有更高的优先级,系统才将把挂起就绪态进程调回内存,并转换为活跃就绪。
img
活跃阻塞状态是指进程已在内存,一旦所等待的事件发生,便进入活跃就绪状态;静止阻塞状态是指进程对换到外存时的阻塞状态,一旦所等待的事件发生,便进入静止就绪状态。

2.2. 信号量与PV操作

2.2.1. 概念

(1)信号量

信号量是一个二元组(S,Q),其中S是一个整形变量,初值为非负数,Q为一个初始状态为空的等待队列。在多道程序系统中,信号量机制是一种有效的实现进程同步与互斥的工具。信号量的值通常表示系统中某类资源的数目,若它大于0,则表示系统中当前可用资源的数量;若它小于0,则表示系统中等待使用该资源的进程数目,即在该信号量队列上排队的PCB的个数。信号量的值是可变的,由PV操作来改变。

(2)PV操作

PV操作是对信号量进行处理的操作过程,而且信号量只能由PV操作来改变。P操作是对信号量减1,意味着请求系统分配一个单位资源,若系统无可用资源,则进程变为阻塞状态;V操作是对信号量加1,意味着释放一个单位资源,加1后若信号量小于等于0,则从就绪队列中唤醒一个进程,执行V操作的进程继续执行。

(3)同步与互斥

互斥:如千军万马过独木桥,同类资源的竞争关系。

同步:速度有差异,在一定情况停下等待,进程间的协作关系。

2.2.2. PV操作

  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等。
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一种特殊的变量
    注:P是荷兰语的Passeren,V是荷兰语的Verhoogo。

P操作和V操作示意图如下所示:

img
未使用和使用了PV操作的区别如下:
img

例题:

img
答案为D、A、C。具体计算过程如下:
img

2.2.3. 死锁问题

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。

产生死锁的4个必要条件:

(1)互斥条件。任一时刻只允许一个进程使用资源。

(2)不剥夺条件。进程已经占用的资源,不会被强制剥夺。

(3)请求与保持条件。进程在请求其余资源时,不主动释放已经占有的资源。

(4)环路条件。环路中每一条边是进程在请求另一个进程已经占有的资源。

关于死锁的预防和死锁的避免如下图所示:

img
例题:

img
答案:B。不可能产生死锁的条件: 。

2.2.4. 银行家算法

银行家算法:分配资源的原则

当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
进程可以分期请求资源,但请求的总数不能超过最大需求量。
当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
银行家算法例题:

img
答案:B。解答过程如下:

img

3. 存储管理

3.1. 页式存储组织

页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。如下图所示:
img

优点:利用率高,碎片小,分配及管理简单。
缺点:增加了系统开销;可能产生抖动现象。
相关位含义如下图所示:
img

3.2. 段式存储组织

段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。如下图所示:

img
优点:多道程序共享内存。各段程序修改互不影响。
缺点:内存利用率低,内存碎片浪费大。

3.3. 段页式存储组织

段页式存储:段式与页式的综合体。先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同。如下图所示:
img

优点:空间浪费小、存储共享容易、存储保护容易、能动态连接。
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。

3.4. 快表

快表是一块小容量的相联存储器(Associative Memory),由高速缓存器组成,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。

快表:将页表存于Cache上;慢表:将页表存于内存上。

3.5. 页面置换算法

页面的置换算法有以下几种:

最优(Optimal,OPT)算法
随机(RAND)算法
先进先出(FIFO)算法:有可能产生“抖动”。例如,432143543215序列,用3个页面,比4个缺页要少
最近最少使用(LRU)算法:不会“抖动”,LRU的理论依据是“局部性原理”。
LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按照时间排序。
时间局部性:刚被访问的内容,立即又被访问。

空间局部性:刚被访问的内容,临近的空间很快被访问。

4. 文件管理

4.1. 索引文件结构

索引文件结构如下图所示。
img

4.2. 文件和树型目录结构

文件属性:

R只读文件属性
A存档属性
S系统文件
H隐藏文件
文件名的组成

驱动器号
路径
主文件名
扩展名
img
绝对路径:是从盘符开始的路径。
相对路径:是从当前路径开始的路径。
*若当前目前为:D1,要求F2路径,则绝对路径:/D1/W2/F2。相对路径:W2/F2。

4.3. 空闲存储空间的管理

空闲区表法(空闲文件目录)
空闲链表法
位示图法
成组链接法

5. 设备管理

5.1. 数据传输控制方式

数据传输控制方式及效率如下图所示:

img

5.2. 虚设备与SPOOLING技术

SPOOLING技术的应用场景和相应概念:SPOOLING是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。 SPOOLing技术通过磁盘实现。

 SPOOLING技术的过程如下图所示:

img

6. 微内核操作系统

微内核由一群尽可能将数量最小化的软件程序组成,它们负责提供实现一个操作系统所需要的各种机制与功能,微内核操作系统就是一种基于微内核架构的操作系统。

img

7. 嵌入式操作系统

嵌入式操作系统(Embedded Operating System,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

(1)嵌入式操作系统特点:

微型化
代码质量高
专业化
实时性强
可裁减、可配置
(2)实时嵌入式操作系统的内核服务有:异常和中断、计时器、I/O管理。

(3)常见的嵌入式RTOS(实时操作系统)VxWorks、RT-Linux、QNX和 pSOS。

VxWorks和RT-Linux的对比如下表所示:
img

13-数据库系统

1. 数据库模式

数据库是长期存储在计算机内的、有组织的、可共享的数据集合,数据库系统是指在计算机信息系统中引入数据库后的系统一般由数据库、数据库管理系统(DataBase Management System,DBMS)、应用系统、数据库管理员(DataBase Administrator,DBA)和用户构成。数据库系统的结构可以有多种不同的层次或不同的角度,其中典型的是三级划分法,其中包括三级模式和两级映射。

1.1. 三级模式

数据库系统的三级模式如下图所示,从图中可以看出,数据库系统由外模式、概念模式和内模式三级构成。
img

数据库系统结构层次图
外模式也称为子模式或用户模式,对应于用户级数据库。外模式用以描述用户(包括程序员和最终用户)看到或使用的那部分数据的逻辑结构,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。用户根据外模式用数据操作语句或应用程序去操作数据库中的数据。外模式主要描述组成用户视图的各个记录的组成、相互关系、数据项的特征、数据的安全性和完整性约束条件。一个数据库可以有多个外模式,一个应用程序只能使用一个外模式。

概念模式也称为模式或逻辑模式,对应于概念级数据库。概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,用以描述现实世界中的实体及其性质与联系,定义记录、数据项、数据的完整性约束条件及记录之间的联系。概念模式通常还包含有访问控制、保密定义和完整性检查等方面的内容,以及概念/物理之间的映射。一个数据库只有一个概念模式。

内模式对应于物理级数据库,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。内模式不同于物理层,它假设外存是一个无限的线性地址空间。内模式定义的是存储记录的类型、存储域的表示和存储记录的物理顺序,以及索引和存储路径等数据的存储组织。一个数据库只有一个内模式。

在数据库系统的三级模式中,模式是数据库的中心与关键;内模式依赖于模式,独立于外模式和存储设备;外模式面向具体的应用,独立于内模式和存储设备;应用程序依赖于外模式,独立于模式和内模式。

1.2. 两级独立性

数据库系统两级独立性是指物理独立性和逻辑独立性。三个抽象级别之间通过两级映射(外模式/模式映射和模式/内模式映射)进行相互转换,使得数据库的三级模式形成一个统一的整体。

物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,当数据的物理存储改变时,应用程序不需要改变。物理独立性存在于概念模式和内模式之间的映射转换,说明物理组织发生变化日寸应用程序的独立程度。

逻辑独立性是指用户的应用程序与数据库中的逻辑结构是相互独立的,当数据的逻辑结构改变时,应用程序不需要改变。逻辑独立性存在于外模式和概念模式之间的映射转换,说明概念模式发生变化时应用程序的独立程度。相对来说逻辑独立性比物理独立性更难实现。

1.3. 数据库视图概念

数据库视图:它是一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。

视图的优点:

(1)视图能简化用户操作

(2)视图使用户能以多种角度看待同一数据

(3)视图对重构数据库提供了一定程度的逻辑独立性

(4)视图可以对机密数据提供安全保护

物化视图:它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。

2. 数据库的设计

2.1. 数据库设计阶段

基于数据库系统生命周期的数据库设计可分为五个阶段,分别是规划、需求分析、概念结构设计、逻辑结构设计和物理设计。部分过程及内容如下图所示:
img

数据库设计过程

2.2. 实体联系模型(E-R模型)

E-R模型也称为E-R图,它是描述概念世界,建立概念模型的实用工具。在E-R图中,主要包括以下三个要素:

(1)实体(型)。实体用矩形框表示,框内标注实体名称。

(2)属性。单值属性用椭圆形表示,并用连线与实体连接起来。如果是多值属性,在椭圆形外面再套实线椭圆;如果是派生属性,则用虚线椭圆表示。其中,多值属性可以有一个或者两个以上的值,例如,学员信息数据库中可能包含关于他们个人兴趣的数据,一个学员可能有运动、电影、投资和烹调等多个兴趣;派生属性是从基本属性计算出来的属性,例如,学员的总成绩和平均成绩等。

(3)实体之间的联系。实体之间的联系用菱形框表示,框内标注联系名称,并用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。

例如,下图就是某在线教育平台系统的一个E-R图(为了简单起见,省略了部分实体的属性和联系的属性)。

img
某教学系统E-R图

2.2.1. 联系的类型

E-R图中的联系可以归结为三种类型,分别是:

(1)一对一联系(1:1)

(2)一对多联系(1:n)

(3)多对多联系(m: n)

一个实体型转换为一个关系模式
三个以上实体间的一个多元联系

2.2.2. E-R图的集成

在数据库的概念设计过程中,先设计各子系统的局部E-R图,其设计过程如下图所示:
img

(1)集成的方法:

多个局部E-R图一次集成。
逐步集成,用累加的方式一次集成两个局部E-R。
(2)集成产生的冲突及解决办法:

属性冲突:包括属性域冲突和属性取值冲突。
命名冲突:包括同名异义和异名同义。
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。

2.2.3. 关系代数

关系代数的基本运算主要有并、交、差、笛卡尔积、选择、投影、连接等运算。

(1)交并差运算

关系S1和关系S2的交并差运算如下图所示:
img

(2)笛卡尔积、投影、选择运算

关系S1和关系S2的笛卡尔积、投影、选择运算如下图所示:
img

(3)连接运算

关系S1和关系S2的连接运算如下图所示:
img

3. 规范化理论

3.1. 价值和用途

非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常。如下图:

img
(1)数据冗余:如果某门课程有100个学生选修,那么在R的关系中就要出现100个元组,这门课程的任课教师姓名和地址也随之重复出现100次。

(2)修改异常:由于上述冗余问题,当需要修改这个教师的地址时,就要修改100个元组中的地址值,否则就会出现地址值不一致的现象。

(3)插入异常:如果不知道听课学生名单,这个教师的任课情况和家庭地址就无法进入数据库;否则就要在学生姓名处插入空值。

(4)删除异常:如果某门课程的任课教师要更改,那么原来任课教师的地址将随之丢失。

3.2. 函数依赖

设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u, v,只要有u [X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。如下图所示:

img

3.3. 键

关系模式的键也称为码或关键字。在关系模式中,如果有X→ U在关系模式R(U)上成立,并且不存在X的任一真子集 使 成立,那么称X是R的一个候选键。也就是说,X值唯一决定关系中的所有元组。在关系模式中,用户正在使用的候选键称为主键。如果两个关系拥有公共属性(集),且公共属性在一个关系中是主键,则称公共属性是另一个关系的外键。例如,记录职工信息的属性有职工号(EMP_NO)、职工身份证号(EMP_CARDID)、职工姓名(EMP_NMAE)、职工性别(EMP_SEX)和所在部门编号(DEPT_NO)。则在此关系中,EMP_NO或EMP_CARDID是候选键,也可以是本关系的主键。一个关系的候选键有多个,但主键只能有一个。通常在候选键中选一个作为主键。候选键、主键和外键的关系如下图所示:

img

3.4. 求候选键

求关系模式的候选键是进行范式界定的基础,也是系统分析师应该掌握的基本技能。使用候选键的定义来求解一个简单关系模式的候选键尚能应对,但面对复杂一些的关系模式,这种方法就不管用了。在此,引入一种求候选键的决捷方法,即图示法。使用图示法求候选键,主要有两个步骤:

(1)将关系模式的函数依赖关系,用有向图的方式表示,其中顶点表示属性,弧表示属性之间的依赖关系。

(2)找出入度为0的属性集,并以该属性集为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键;若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间顶点(既有入度,也有出度的顶点)并到入度为0的属性集中,直至该集合能遍历所有顶点,则该集合为候选键。

3.5. 范式

为了设计一个好的数据库,人们定义了一些好的关系模式标准,称它们为规范的关系模式或范式(Normal Form,NF)。目前共定义了多个范式,分别为1NF,2NF,3NF,BCNF,4NF和SNF。但在实际应用中一般只要达到3NF。如下图所示:
img

3.5.1. 第一范式

第一范式(1NF):在关系模式R中,当且仅当所有属性只包含原子值,即每个分量都是不可再分的数据项,则称R满足1NF。例如,下表所示的教师职称清况关系就不茜足1NF。原因在于,该关系模式中的“高级职称人数”不是一个原子属性,若将其拆分为“教授”和“副教授”两个属性,则就满足1NF。
img

3.5.2. 第二范式

第二范式(2NF):当且仅当实体E是第一范式(1NF)。且每一个非主属性完全依赖候选键(不存在部分依赖)时,则称实体E是第二范式。

3.5.3. 第三范式

第三范式(3NF):当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于候选码时,则称实体E是第三范式。

3.5.4. BC范式

BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

3.6. 无损分解

(1)保持函数依赖分解

设数据库模式p={R1, R2,…,R日是关系模式R的一个分解,F是R上的函数依赖集。P中每个模式Ri上的FD集是Fi。如果{Fl, F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解P保持FD。

(2)无损分解

什么是有损,什么又是无损?

有损:不能还原。无损:可以还原。

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。

例题:

有关系模式:成绩(学号,姓名,课程号,课程名,分数)

函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→分数

若将其分解为:

成绩(学号,课程号,分数)

学生(学号,姓名)

课程(课程号,课程名)

请思考该分解是否为无损分解?

由于有:学号分姓名,所以:

成绩(学号,课程号,分数,姓名)

由于有:课程号、课程名,所以:

成绩(学号,课程号,分数,姓名,课程名)

(3)无损分解定理

定理:如果R的分解为 ={R1,R2},F为R所满足的函数依赖集合,分解 具有无损联接性的充分必要条件是:

R1∩R2→(R1—R2)

或R1∩R2→(R2—R1)

其中,R1 ∩R2表示模式的交,为R1与R2中公共属性组成,R1—R2或R2—R1表示模式的差集,R1—R2表示R1中去除R1和R2的公共属性所组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能函数决定R1中或R2中的其它属性,这样的分解就具有无损联接性。

(4)无损分解公理体系

关系模式R<U,F>来说有以下的推理规则:

A1.自反律(Reflexivity):若 ,则X→Y成立。

A2.增广律(Augmentation):若 且X→Y,则XZ→YZ成立。

A3.传递律(Transitivity):若X>Y且Y→Z,则X→Z成立。

根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:

合并规则:由X→Y,X→Z,有X→YZ。 (A2,A3)

伪传递规则:由X→Y,WY→Z,有XW→Z。(A2,A3)

分解规则:由X→Y及 ,有X→Z。 (A1,A3)

4. 数据库的控制功能

4.1. 并发控制

在多用户共享系统中,许多事务可能同时对同一数据进行操作,称为并发操作。此时,数据库管理系统(Database Management System,DBMS)的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时,避免用户得到不正确的数据。

4.1.1. 事务的基本概念

DBMS运行的基本工作单位是事务,事务是用户定义的一个数据库操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单位。事务具有以下特性:

(1)原子性 (Atomicity )。事务是数据库的逻辑工作单位事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说,这些操作是一个整体,不能部分的完成。

(2)一致性(Consistency)。一致性是指使数据库从一个一致性状态变到另一个一致性状态。例如,在转账的操作中,各账户金额必须平衡。一致性与原子性是密切相关的,一致性在逻辑上不是独立的,它由事务的隔离性来表示。

(3)隔离性(Isolation)。隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。它要求即使有多个事务并发执行,但看上去每个事务按串行调度执行一样。这一性质也称为可串行性,也就是说,系统允许的任何交错操作调度等价于一个串行调度。

(4)持久性(Durability)。持久性也称为永久性是指事务一旦提交改变就是永久性的无论发生何种故障,都不应该对其有任何影响。

4.1.2. 数据不一致问题

数据库的并发操作会带来一些数据不一致问题,主要如下:

丢失修改
读“脏数据”
不可重复读
并发产生的问题和解决方案如下图所示:
img

并发控制存在的问题示例如下图所示:

img

4.1.3. 封锁协议

处理并发控制的主要方法是采用封锁技术,主要有两种封锁,分别是X封锁和S封锁。

(1)排他型封锁(X封锁)。如果事务T对数据对象A(可以是数据项、元组和数据集,以至整个数据库)实现了X封锁锁,那么只允许事务T读取和修改数据A,其他事务要等事务T解除X封锁以后,才能对数据A实现任何类型的封锁。可见,X封锁只允许一个事务独锁某个数据,具有排他性。

(2)共享型封锁(S封锁)。X封锁只允许一个事务独锁和使用数据,要求太严。需要适当从宽,例如,可以允许并发读,但不允许修改,这就产生了S封锁的概念。S封锁的含义是,如果事务T对数据A实现了S封锁,那么允许事务T读取数据A,但不能修改数据A,在所有S封锁解除之前,决不允许任何事务对数据A实现X封锁。

在多个事务并发执行的系统中,主要采取封锁协议来进行处理,常见的封锁协议如下:

(1)一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可防止丢失修改,并保证事务T是可恢复的,但不能保证可重复读和不读“脏数据”。

(2)二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。二级封锁协议可防止丢失修改,还可防止读“脏数据”,但不能保证可重复读。

(3)三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。三级封锁协议可防止丢失修改、读“脏数据”,且能保证可重复读。

(4)两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。遵守两段封锁协议的事务可能发生死锁。

关于数据加锁的示例如下图所示:

(1)丢失更新加锁
img

(2)读脏数据加锁
img

(3)不可重复读加锁

img

4.2. 数据库完整性约束

数据库的完整性约束有以下几种方式:

实体完整性约束——主键
参照完整性约束——外键
用户自定义完整性约束——限定取值区间
触发器——脚本编程

4.3. 数据库的安全性

就整个信息系统的安全而言,数据的安全是最重要的。数据库系统的安全性在技术上依赖于两种方式,一种是DBMS本身提供的用户身份识别、视图、使用权限控制和审计等管理措施,大型DBMS均有此功能;另一种就是靠应用程序来实现对数据库访问进行控制和管理,也就是说,数据的安全控制由应用程序里面的代码来实现。目前,一些大型DBMS都提供了一些技术手段来保证数据的安全,如下表所示。

img

4.4. 数据库的备份

数据库备份有多种分类方式。按备份的实现方式,可分为物理备份与逻辑备份,而物理备份又可以分为冷备份与热备份;按备份数据量清况,可分为完全备份、增量备份与差异备份。其中,完全备份是指将整个数据库中的数据进行备份,增量备份是指备份上一次备份(包括完全备份、增量备份和差异备份)后发生变化的数据,差异备份是指备份上一次完全备份后发生变化的所有数据。

冷备份也称为静态备份,是将数据库正常关闭。在停止状态下,将数据库的文件全部备份(复制)下来。
热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
冷备份与热备份的优缺点如下表所示。
img

完全备份:备份所有数据
差量备份:仅备份上一次完全备份之后变化的数据
增量备份:备份上一次备份之后变化的数据
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

4.5. 分布式数据库

分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:

(1)数据独立性。

(2)集中与自治共享结合的控制结构。

(3)适当增加数据冗余度。

(4)全局的一致性、可串行性和可恢复性。

4.5.1. 分布式数据库的结构

分布式数据库的体系结构如下图所示。在分布式数据库中,局部DBMS中的内模式与概念模式与集中数据库是完全一致的,不同之处在于新增的全局DBMS,而整个全局DBMS,可以看作是相对于局部概念模式的外模式。由于外模式部分有一系列的分布模式、分片模式、全局概念模式和全局外模式,以及多级映射使得用户在使用分布式数据库时,可以用集中式数据库同样的方式来应用。
img

分布式数据库体系结构图

4.5.2. 分布式数据库的各种概念

(1)分布透明性

分片透明性:分不分片,用户感受不到
位置透明性:数据存放在哪里,用户不用管
局部数据模型透明性(逻辑透明):用户不用关系局部数据模型
(2)分布式数据库管理系统-组成

LDBMS
GDBMS
全局数据字典
通信管理(CM)
(3)分布式数据库管理系统-结构

全局控制集中的DDBMS
全局控制分散的DDBMS
全局控制部分分散的DDBMS
4.6. 联邦数据库
联邦数据库系统(FDBS)是一个彼此协作却又相互独立的成员数据库(CDBS)的集合,它将成员数据库系统按不同程度进行集成,对该系统整体提供控制和协同操作的软件叫做联邦数据库管理系统(FDBMS)。

(1)联邦数据库的特征

分布性
异构性
自治性
透明性
(2)联邦数据库分类

紧耦合
松耦合

4.7. NoSQL

NoSQL (Not-only SQL):随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展,关系型数据库和NoSQL非关系型数据库的对比如下表所示:
img

NoSQL数据库的应用场景和优缺点如下图所示:

img

4.8. 内存数据库

内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构。并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多:一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。

常见的内存数据库包括:Redis、eXtremeDB、TT、FastDB、 SQLite、Microsoft SQL Server Compact、MySQL的MEMORY存储引擎等。

4.9. 反规范化

由于规范化会使表不断的拆分,从而导致数据表过多。这样虽然减少了数据冗余,提高了增、删、改的速度但会增加查询的工作量。系统需要进行多次连接,才能进行查询操作,使得系统的效率大大的下降。

采用的技术手段有:

增加派生性冗余列
增加冗余列
重新组表
分割表

4.10. 数据表分区

表分区:就是将一个数据量比较大的表,用某种方法把数据从物理上分成若干个小表来存储,从逻辑来看还是一个大表。

4.10.1 分区与分表的区别与联系

(1)两者都针对数据表,将数据做到分布式,提高数据检索的效率,降低数据库的频繁I/0压力值。

(2)分表是真正的生成数据表,是将一张大数据量的表分成多个小表实现数据均衡。

(3)分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介质中,实际上还是一张表。

4.10.2 分区的优点

(1)相对于单个文件系统或是硬盘,分区可以存储更多的数据。

(2)数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。

(3)精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。

(4)可跨多个分区磁盘查询,来提高查询的吞吐量。

(5)在涉及聚合函数查询时,可以很容易进行数据的合并。

4.10.3 分区的策略

范围分区(RANGE):就是根据数据库表中某一字段的值的范围来划分分区。如:年份小于2016的分成一个区,其它分成另一个区。

散列分区(HASH):散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。

列表分区(LIST):列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。如:长沙、武汉分成一个区,北京一个区。

4.11. 数据库性能优化

针对集中式数据库和分布式数据库的优化方法如下图所示:

img

5. 大数据

大数据与传统数据的比较如下表所示:

img
大数据处理系统应该具有的重要特征如下:

高度可扩展性
高性能
高度容错
支持异构环境
较短的分析延迟
易用且开放的接口
较低成本
向下兼容性

14-计算机网络

1. 网络体系结构与协议

网络体系结构是指计算机网络的各层及其协议的集合。计算机之间要交换数据,就必须遵守一些事先约定好的规则,用于规定信息的格式以及如何发送和接收信息的一套规则就称为网络协议。为了减少网络协议设计的复杂性,网络设计者并不是设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而是将庞大而复杂的通信问题转化为若干个小问题,然后为每个小问题设计一个单独的协议。

计算机网络采用分层设计方法,按照信息的传输过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。

1.1. 互联参考模型(OSI/RM)

1977年,国际标准化组织为适应网络标准化发展的需求,制定了开放系统互联参考模型(Open system Interconnection/Reference Model,OSI/RM),从而形成了网络体系结构的国际标准。OSI/RM构造了由下到上的七层模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如下图所示:
img

在数据传输过程中,每一层都承担不同的功能和任务,以实现对数据传输过程中的各个阶段的控制。

(1)物理层。物理层的主要功能是透明地完成相邻节点之间原始比特流的传输。其中“透明”的意思是指物理层并不需要关心比特代表的具体含义,而要考虑的是如何发送“0”和“1”,以及接收端如何识别。物理层在传输介质基础上作为系统和通信介质的接口,为数据链路层提供服务。

(2)数据链路层。数据链路层负责在两个相邻节点之间的线路上无差错地传送以帧为单位的数据,通过流量控制和差错控制,将原始不可靠的物理层连接变成无差错的数据通道,并解决多用户竞争问题,使之对网络层显现一条可靠的链路。

(3)网络层。网络层是通信子网的最高层,其主要任务是在数据链路层服务的基础上,实现整个通信子网内的连接并通过网络连接交换网络服务数据单元(packet)。它主要解决数据传输单元分组在通信子网中的路由选择、拥塞控制和多个网络互联的问题。网络层建立网络连接为传输层提供服务。

(4)传输层。传输层既是负责数据通信的最高层又是面向网络通信的低三层(物理层、数据链路层和网络层)和面向信息处理的高三层(会话层、表示层和应用层)之间的中间层,是资源子网和通信子网的桥梁,其主要任务是为两台计算机的通信提供可靠的端到端的数据传输服务。传输层反映并扩展了网络层子系统的服务功能,并通过传输层地址为高层提供传输数据的通信端口,使系统之间高层资源的共享不必考虑数据通信方面的问题。

(5)会话层。会话层利用传输层提供的端到端数据传输服务,具体实施服务请求者与服务提供者之间的通信、组织和同步它们的会话活动,并管理它们的数据交换过程。会话层提供服务通常需要经过建立连接、数据传输和释放连接三个阶段。会话层是最薄的一层常被省略。

(6)表示层。表示层处理的是用户信息的表示问题。端用户(应用进程)之间传送的数据包含语义和语法两个方面。语义是数据的内容及其含义,它由应用层负责处理;语法是与数据表示形式有关的方面,例如,数据的格式、编码和压缩等。表示层主要用于处理应用实体面向交换的信息的表示方法,包括用户数据的结构和在传输时的比特流(或字节流)的表示。这样,即使每个应用系统有各自的信息表示法,但被交换的信息类型和数值仍能用一种共同的方法来描述。

(7)应用层。应用层是直接面向用户的一层,是计算机网络与最终用户之间的界面。在实际应用中,通常把会话层和表示层归入到应用层,使OSI/RM成为一个简化的五层模型。

1.2. TCP/IP结构模型

虽然OSI/RM已成为计算机网络体系结构的标准模型,但因为OSI/RM的结构过于复杂,实际系统中采用OSI/RM的并不多。目前,使用最广泛的可互操作白勺网络体系结构是TCP/IP (Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)结构模型。与OSI/RM结构不同,不存在一个正式的TCP/IP结构模型,但可根据已开发的协议标准和通信任务将其大致分成四个比较独立的层次,分别是网络接口层、网络互联层、传输层和应用层。

(1)网络接口层。网络接口层大致对应于OSI/RM的数据链路层和物理层,TCP/IP协议不包含具体的物理层和数据链路层,只定义了网络接口层作为物理层的接口规范。网络接口层处在TCP/IP结构模型的最底层,主要负责管理为物理网络准备数据所需的全部服务程序和功能。

(2)网络互联层。网络互联层也称为网络层、互联网层或网际层,负责将数据报独立地从信源传送到信宿,主要解决路由选择、阻塞控制和网络互联等问题,在功能上类似于OSI/RM中的网络层。

(3)传输层。传输层负责在信源和信宿之间提供端到端的数据传输服务,相当于OSI/RM中的传输层。

(4)应用层。应用层直接面向用户应用,为用户提供对各种网络资源的方便的访问服务,包含了OSI/RM会话层和表示层中的部分功能。

1.3. TCP/IP协议族

1.3.1. TCP/IP的相关协议介绍

POP3:110端口,邮件收取
SMTP:25端口,邮件发送
FTP:20数据端口/21控制端口,文件传输协议
HTTP:80端口,超文本传输协议,网页传输
DHCP:67端口,IP地址自动分配
SNMP:161端口,简单网络管理协议
DNS:53端口,域名解析协议,记录域名与IP的映射关系
TCP:可靠的传输层协议
UDP:不可靠的传输层协议
ICMP:因特网差错控制协议,PING命令来自该协议
IGMP:组播协议
ARP:地址解析协议,IP地址转换为MAC地址
RARP:反向地址解析协议,MAC地址转IP地址

1.3.2. DHCP协议

客户机/服务器模型
租约默认为8天
当租约过半时,客户机需要向DHCP服务器申请续租
当租约超过87.5%时,如果仍然没有和当初提供IP的DHCP服务器联系上,则开始联系其他的DHCP服务器。
分配方式包括:固定分配、动态分配和自动分配
DHCP租用失败分配的IP:169.254.X.X(Windows)和0.0.0.0(Linux)
img

1.3.3. DNS协议

递归查询:服务器必需回答目标IP与域名的映射关系。
迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。
示例1如下所示:
img

示例2如下所示:
img

1.4. 网络故障诊断

网络故障诊断常用的命令如下所示:

(1)ping:用于检查网络是否连通;

(2)tracert (linux: traceroute):用于确定IP数据包访问目标所采取的路径,若网络不通,能定位到具体哪个结点不通;

(3)ipconfig(linux: ifconfig):显示TCP/IP网络配置值,如:IP地址,MA地址,网关地址等;

(4)nslookup:查询DNS记录;

(5)Netstat:用于显示网络连接、路由表和网络接口信息;

LISTEN:侦听来自远方的TCP端口的连接请求。

SYN-SENT:在发送连接请求后等待匹配的连接请求。

SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认。

ESTABLISHED:代表一个打开的连接。

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认。

FIN-WAIT-2:从远程TCP等待连接中断请求。

CLOSE-WAIT:等待从本地用户发来的连接中断请求。

CLOSING:等待远程TCP对连接中断的确认。

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认。

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认。

CLOSED:没有任何连接状态。

2. 网络规划与设计

网络规划与设计的过程如下图所示:
img

2.1. 网络需求分析

需求分析通常采用自顶向下的结构化方法,主要从以下几个方面分析:

功能需求
通信需求
性能需求
可靠性需求
安全需求
运行与维护需求
管理需求
网络规划与设计的原则、任务和实施内容如下所示:

img

2.2. 逻辑网络设计

利用需求分析和现有网络体系分析的结果来设计逻辑网络结构,最后得到一份逻辑网络设计文档,输出内容包括以下几点:

逻辑网络设计图
IP地址方案
安全方案
招聘和培训网络员工的具体说明
对软硬件、服务、员工和培训的费用初步估计

2.3. 物理网络设计

物理网络设计是对逻辑网络设计的物理实现,通过对设备的具体物理分布、运行环境等确定,确保网络的物理连接符合逻辑连接的要求。输出如下内容:

网络物理结构图和布线方案
设备和部件的详细列表清单
软硬件和安装费用的估算
安装日程表,详细说明服务的时间以及期限
安装后的测试计划
用户的培训计划

2.4. 网络分层设计

网络的分层设计主要包括接入层、汇聚层和核心层。如下图所示:
img

接入层:主要是针对用户端,实现用户接入、计费管理、MAC地址认证、MAC地址过滤、收集用户信息,可以使用集线器来代替交换机。
汇聚层:网络访问策略控制、数据包处理和过滤、策略路由、广播域定义、寻址。
核心层:主要是高速数据交换,实现高速数据传输、出口路由,常用冗余机制。

3. 网络接入技术

网络的接入技术包括有线接入、无线接入、3G/4G/5G技术,具体如下所示:
img
img

4. IPv6

4.1. 概念

IPv6是设计用于替代现行版本IP协议(Ipv4)的下一代IP协议。主要有以下特点:

(1)IPv6地址长度为128位,地址空间增大了 倍;

(2)灵活的IP报文头部格式。使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段。IPv6中选项部分的出现方式也有所变化,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度;

(3)IPv6简化了报文头部格式,字段只有8个,加快报文转发,提高了吞吐量;

(4)提高安全性。身份认证和隐私权是IPv6的关键特性;

(5)支持更多的服务类型;

(6)允许协议继续演变,增加新的功能,使之适应未来技术的发展;

4.2. Ipv6地址

单播地址(Unicast):用于单个接口的标识符。
任播地址(Anycast):泛播地址。一组接口的标识符,IPv4广播地址。
组播地址(Multicast):IPv6中的组播在功能上与IPv4中的组播类似。
img
IPv6地址由8个16进制字段构成。例如:

2001:Odb8:85a3:0000:1319:8a2e:0370:7344

IPv6地址的省写,上面的IP地址等价于:

2001:Odb8:85a3::1319:8a2e:0370:73440

遵守这些规则,如果因为省略而出现了两个以上的冒号,则可以压缩为一个,但这种零压缩在地址中只能出现一次。因此:

2001:ODB8:0000:0000:0000:0000:1428:57ab

2001:ODB8:0:0:0:0:1428:57ab

2001:ODB8::1428:57ab

以上都是台法的地址,并且它们是等价的。同时前导的零可以省略,因此:2001:ODB8:02de::0e13等价于2001:DB8:2de::el3。

4.3. Ipv4/Ipv6过渡技术

IPv4/IPv6过渡技术有:

(1)双协议栈技术:双栈技术通过节点对IPv4和IPv6双协议栈的支持,从而支持两种业务的共存。

(2)隧道技术:隧道技术通过在IPv4网络中部署隧道,实现在IPv4网络上对IPv6业务的承载,保证业务的共存和过渡。隧道技术包括:6to4隧道;6over4隧道;ISATAP隧道。

(3)NAT PT技术:NAT-PT使用网关设备连接IPv6和IPv4网络。当IPv4和IPv6节点互相访问时,NAT-PT网关实现两种协议的转换翻译和地址的映射。

5. 综合布线系统

综合布线系统如下图所示:
img

工作区子系统由信息插座、插座盒、连接跳线和适配器组成。

水平子系统由一个工作区的信息插座开始,经水平布置到管理区的内侧配线架的线缆所组成。

管理子系统由交连、互连配线架组成。管理子系统为连接其它子系统提供连接手段。

垂直干线子系统由建筑物内所有的垂直千线多对数电缆及相关支撑硬件组成,以提供设备间总配线架与干线接线间楼层配线架之间的干线路由。

设备间子系统是由设备间中的电缆、连接器和有关的支撑硬件组成,作用是将计算机、PBX、摄像头、监视器等弱电设备互连起来并连接到主配线架上。

建筑群子系统将一个建筑物的电缆延伸到建筑群的另外一些建筑物中的通信设备和装置上,是结构化布线系统的一部分,支持提供楼群之间通信所需的硬件。它由电缆、光缆和入楼处的过流过压电气保护设备等相关硬件组成,常用介质是光缆。

6. 物联网

6.1. 物联网的概念与分层

物联网(The Internet of Things)是实现物物相连的互联网络,其内涵包含两个方面:第一,物联网的核心和基础仍然是互联网,是在互联网基础上延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物体与物体之间,使其进行信息交换和通信。
img

感知层:识别物体、采集信息。如:二维码、RFID、摄像头、传感器(温度、湿度)。
网络层:传递信息和处理信息。通信网与互联网的融合网络、网络管理中心、信息中心和智能处理中心等。
应用层:解决信息处理和人机交互的问题。

6.2. 物联网关键技术(RFID)

射频识别技术(Radio Frequency Identification,RFID),又称电子标签,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。该技术是物联网的一项核心技术,很多物联网应用都离不开它。

RFID的基本组成部分通常包括:标签、阅读器、天线。
img

6.3. 物联网关键技术(二维码)

二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。

二维条码中,常用的码制有:Data Matrix,Maxi Code,Aztec,QR Code,Vericode,PDF47,Ultracode,Code 49,Code 16K。

若采用扩展的字母数字压缩格式,可容纳1850个字符。
若采用二进制/ASCII格式,可容纳1108个字节。
若采用数字压缩格式,可容纳2710个数字。

7. 云计算的概念与特点

云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。云其实是网络、互联网的一种比喻说法。云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。

(1)云计算的特点:

集合了大量计算机,规模达到成千上万
多种软硬件技术相结合
对客户端设备的要求低
规模化效应
(2)云计算的服务类型:

软件即服务(SaaS)
平台即服务(PaaS)
基础设施即服务(IaaS)

15-系统安全分析与设计

1. 信息系统安全体系

1.1. 系统安全体系结构

作为全方位的、整体的系统安全防范体系也是分层次的,不同层次反映了不同的安全问题,根据网络的应用现状情况和结构,可以将安全防范体系的层次划分为物理层安全、系统层安全、网络层安全、应用层安全和安全管理。

(1)物理环境的安全性。物理层的安全包括通信线路、物理设备和机房的安全等。物理层的安全主要体现在通信线路的可靠性(线路备份、网管软件和传输介质)、软硬件设备的安全性(替换设备、拆卸设备、增加设备)、设备的备份、防灾害能力、防干扰能力、设备的运行环境(温度、湿度、烟尘)和不间断电源保障等。

(2)操作系统的安全性。系统层的安全问题来自计算机网络内使用的操作系统的安全,例如,Windows Server和UNIX等。主要表现在三个方面,一是操作系统本身的缺陷带来的不安全因素,主要包括身份认证、访问控制和系统漏洞等;二是对操作系统的安全配置问题;三是病毒对操作系统的威胁。

(3)网络的安全性。网络层的安全问题主要体现在计算机网络方面的安全性,包括网络层身份认证、网络资源的访问控制、数据传输的保密与完整性、远程接入的安全、域名系统的安全、路由系统的安全、入侵检测的手段和网络设施防病毒等。

(4)应用的安全性。应用层的安全问题主要由提供服务所采用的应用软件和数据的安全性产生,包括Web服务、电子邮件系统和DNS等。此外,还包括病毒对系统的威胁。

(5)管理的安全性。安全管理包括安全技术和设备的管理、安全管理制度、部门与人员的组织规则等。管理的制度化极大程度地影响着整个计算机网络的安全,严格的安全管理制度、明确的部门安全职责划分与合理的人员角色配置,都可以在很大程度上降低其他层次的安全漏洞。

1.2. 安全保护等级

《计算机信息系统安全保护等级划分准则》(GB17859-1999)规定了计算机系统安全保护能力的五个等级,即用户自主保护级、系统审计保护级、安全标记保护级、结构化保护级和访问验证保护级。系统安全保护能力随着安全保护等级的增高,逐渐增强。

(1)用户自主保护级(第一级)。第一级的计算机信息系统可信计算机通过隔离用户与数据,使用户具备自主安全保护的能力。它具有多种形式的控制能力,对用户实施访问控制,即为用户提供可行的手段,保护用户和用户组信息,避免其他用户对数据的非法读写与破坏。第一级适用于普通内联网用户。

(2)系统审计保护级(第二级)。与第二级相比,第二级的计算机信息系统可信计算机实施了粒度更细的自主访问控制,它通过登录规程、审计安全性相关事件和隔离资源,使用户对自己的行为负责。第二级适用于通过内联网或国际网进行商务活动,需要保密的非重要单位。

(3)安全标记保护级(第三级)。第三级的计算机信息系统可信计算机具有系统审计保护级的所有功能。此外,还提供有关安全策略模型、数据标记,以及主体对客体强制访问控制的非形式化描述;具有准确地标记输出信息的能力;消除通过测试发现的任何错误。第三级适用于地方各级国家机关、金融机构、邮电通信、能源与水源供给部门、交通运输、大型工商与信息技术企业、重点工程建设等单位。

(4)结构化保护级(第四级)。第四级的计算机信息系统可信计算机建立于一个明确定义的形式化安全策略模型之上,它要求将第三级系统中的自主和强制访问控制扩展到所有主体与客体。此外,还要考虑隐蔽通道。本级的计算机信息系统可信计算机必须结构化为关键保护元素和非关键保护元素。计算机信息系统可信计算机的接口也必须明确定义,使其设计与实现能经受更充分的测试和更完整的复审。加强了鉴别机制,支持系统管理员和操作员的职能,提供可信设施管理,增强了配置管理控制。系统具有相当的抗渗透能力。第四级适用于中央级国家机关、广播电视部门、重要物资储备单位、社会应急服务部门、尖端科技企业集团、国家重点科研机构和国防建设等部门。

(5)访问验证保护级(第五级)。第五级的计算机信息系统可信计算机满足访问监控器需求。访问监控器仲裁主体对客体的全部访问。访问监控器本身是抗篡改的,而且必须足够小,能够分析和测试。为了满足访问监控器需求,计算机信息系统可信计算机在其构造时,排除了那些对实施安全策略来说并非必要的代码;在设计和实现时,从系统工程角度将其复杂性降低到最小程度。支持安全管理员职能;扩充审计机制,当发生与安全相关的事件时发出信号;提供系统恢复机制。系统具有很高的抗渗透能力。第五级适用于国防关键部门和依法需要对计算机信息系统实施特殊隔离的单位。

1.3. 信息系统安全保障层次

信息系统安全的保障层次如下图所示:
img

2. 数据安全与保密

2.1. 数据加密技术

2.2.1. 对称加密算法

对称加密算法也称为私钥加密算法,是指加密密钥和解密密钥相同,或者虽然不同,但从其中的任意一个可以很容易地推导出另一个。其优点是具有很高的保密强度,但密钥的传输需要经过安全可靠的途径。对称加密算法有两种基本类型,分别是分组密码和序列密码。分组密码是在明文分组和密文分组上进行运算,序列密码是对明文和密文数据流按位或字节进行运算。

  • 对称加密算法的特点是:

(1)加密度不高,但效率高。

(2)密钥分发困难。

  • 常见对称密钥加密算法:

常见的对称加密算法包括瑞士的国际数据加密算法(International Data Encryption Algorithm,IDEA)和美国的数据加密标准(Date Encryption Standard,DES)。

DES:替换+移位、56位密钥、64位数据块、速度快、密钥易产生。
3DE5(三重DES):两个56位的密钥Kl、K2。

加密:K1加密→K2解密→K1加密

解密:K1解密→K2加密→K1解密

RC-5:RSA数据安全公司的很多产品都使用了RC-5。
IDEA算法:128位密钥、64位数据块、比DES的加密性好、对计算机功能要求相对低,PGP。

2.1.2. 非对称加密算法

非对称加密算法也称为公钥加密算法,是指加密密钥和解密密钥完全不同,其中一个为公钥,另一个为私钥,并且不可能从任何一个推导出另一个。它的优点在于可以适应开放性的使用环境,可以实现数字签名与验证。

非对称加密算法的特点是:加密速度慢。

常见非对称密钥加密算法:

最常见的非对称加密算法是RSA,该算法的名字以发明者的名字命名:Ron Rivest,AdiShamir和Leonard Adleman。RSA算法的密钥长度为512位。RSA算法的保密性取决于数学上将一个大数分解为两个素数的问题的难度,根据已有的数学方法,其计算量极大,破解很难。但是加密/解密时要进行大量指数模运算,因此加密/解密速度很慢,主要用在数字签名中。

RSA:512位(或1024位)密钥、计算量极大、难破解
ECC:椭圆曲线算法

2.2. 认证技术

认证(authentication)又称为鉴别或确认,它是证实某事物是否名符其实或是否有效的一个过程。认证和加密的区别在于,加密用以确保数据的保密性,阻止对手的被动攻击,例如,截取和窃听等;而认证用以确保数据发送者和接收者的真实性和报文的完整性,阻止对手的主动攻击,例如,冒充、篡改和重放等。认证往往是许多应用系统中安全保护的第一道设防,因而极为重要。

2.2.1. 数字签名

数字签名是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如,接收者)进行伪造。基于对称加密算法和非对称加密算法都可以获得数字签名,但目前主要是使用基于非对称加密算法的数字签名,包括普通数字签名和特殊数字签名。普通数字签名算法有RSA,EIGamal,Fiat-Shamir, Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等特殊数字签名算法有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名和具有消息恢复功能的签名等,它与具体应用环境密切相关。

2.2.2. 杂凑算法

杂凑算法是主要的数字签名算法,它是利用散列(Hash)函数(哈希函数、杂凑函数)进行数据的加密。单向Hash函数提供了这样一种计算过程:输入一个长度不固定的字符串,返回一串定长的字符串这个返回的字符串称为消息摘要(Message Digest , MD)也称为Hash值或散列值。

Hash函数主要可以解决以下两个问题,首先,在某一特定的时间内,无法查找经Hash操作后生成特定Hash值的原消息;其次,无法查找两个经Hash操作后生成相同Hash值的不同消息。这样,在数字签名中就可以解决验证签名、用户身份验证和不可抵赖性的问题。

(1)消息摘要算法

消息摘要算法。消息摘要算法(Message Digest algorithm 5 , MD5)用于确保信息传输完整一致,经MD2,,MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式,即将一个任意长度的字节串变换成一个定长的大数。不管是MD2,MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的消息摘要。MD5以512位分组来处理输入的信息,且每个分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后,将生成一个128位的散列值。

(2)安全散列算法

安全散列算法(Secure Hash Algorithm,SHA)能计算出一个数字信息所对应的长度固定的字符串(消息摘要),它对长度不超过264位的消息产生160位的消息摘要。这些算法之所以称作“安全”,是基于以下两点,第一,由消息摘要反推原输入信息,从计算理论上来说是很困难的;第二,想要找到两组不同的信息对应到相同的消息摘要,从计算理论上来说也是很困难的;任何对输入信息的变动,都有很高的概率导致其产生的消息摘要不同。

SHA家族的五个算法,分别是SHA-1,SHA-224,SHA-256,SHA-384和SHA-512,由美国国家安全局所设计,并由美国国家标准与技术研究院发布,是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协议中广为使用,包括TLS(Transport Layer Security传输层安全协议)和SSL(Secure Sockets Laye,安全套接字层)、PGP(Pretty Good Privacy)、SSH(Secure Shell,安全外壳)、S/MIME(Secure/Multipurpose Internet Mail Extensions,安全/多功能Internet邮件扩展)和IPsec ( Internet Protocol Security,IP协议安全性)等曾被视为是MD5的后继者。

2.2.3. 数字证书

数字证书又称为数字标识是由认证中心(Certificate Authority , CA)签发的对用户的公钥的认证。数字证书的内容应包括CA的信息、用户信息、用户公钥、CA签发时间和有效期等。目前,国际上对证书的格式和认证方法遵从X.509体系标准。

X.509数字证书内容包括:

证书的版本信息;
证书的序列号,每个证书都有一个唯一的证书序列号;
证书所使用的签名算法;
证书的发行机构名称,命名规则一般采用X.500格式;
证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950-2049;
证书所有人的名称,命名规则一般采用X.500格式;
证书所有人的公开密钥;
证书发行者对证书的签名。

2.2.4. 身份认证

用户的身份认证是许多应用系统的第一道防线,其目的在于识别用户的合法性,从而阻止非法用户访问系统。身份识别对确保系统和数据的安全保密是极其重要的,目前,计算机网络系统中常用的身份认证方式主要有以下几种:

(1)口令认证

(2)动态口令认证

(3)生物特征识别

2.2.5. 数字信封与PGP

(1)数字信封

发送方将原文用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。
接收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。
(2)PGP(Pretty Good Privacy)

PGP(Pretty Good Privacy,优良保密协议)是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用。

PGP可用于电子邮件,也可以用于文件存储。采用了杂凑算法,包括IDEA、RSA、MD5、ZIP数据压缩算法。
PGP承认两种不同的证书格式:PGP证书和X.509证书。
PGP证书包含PGP版本号、证书持有者的公钥、证书持有者的信息、证书拥有者的数字签名、证书的有效期、密钥首选的对称加密算法。
X.509证书包含证书版本、证书的序列号、签名算法标识、证书有效期、以下数据:证书发行商名字、证书主体名、主体公钥信意、发布者的数字签名。
例题:

请依据已学习的加密解密技术,以及信息摘要,数字签名技术解决以下问题。请设计一个安全邮件传输系统,要求:

该邮件以加密方式传输:邮件最大附件内容可达500MB,发送者不可抵赖,若邮件被第三方截获,第三方无法篡改。

解答过程如下所示:
img

2.3. 密钥管理体制

密钥是加密算法中的可变部分,在采用加密技术保护的信息系统中,其安全性取决于密钥的保护而不是对算法或硬件保护。密码机制可以公开密码设备可能丢失但同一型号的密码机仍可继续使用。然而,密钥一旦丢失或出错,不但合法用户不能提取信息,而且可能是非法用户窃取信息。因此密钥的管理是关键问题。

密钥管理是指处理密钥自产生到销毁的整个过程中的有关问题,包括系统的初始化、密钥的产生、存储、备份/恢复、装入、分配、保护、更新、控制、丢失、吊销和销毁等。当前,主要的密钥管理体制有三种分别是适用于封闭网、以传统的密钥管理中心为代表的KMI (Key Management Infrustructur,密钥管理基础设施)机制,适用于开放网的PKI (Public Key Infrustructure公钥基础设施)机制和适用于规模化专用网的SPK(Seeded public-Key,种子化公钥)机制。

2.3.1. KMI机制

KMI设定一个密钥分配中心(Key Distribution Center,KDC)来负责发放密钥,这种结构经历了从静态分发到动态分发的发展过程,是密钥管理的重要手段。静态分发是预配置技术,动态分发是“请求、分发”机制,即与物理分发相对应的电子分发,一般用于建立实时通信中的会话密钥,在一定意义上缓解了密钥管理规模化的矛盾。无论是静态发放或是动态发放,都基于秘密信道(物理通道)进行。

2.3.2. PKI机制

PKI是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等服务,以及所必需的密钥和证书管理体系。PKI机制解决了分发密钥时依赖秘密信道的问题。

完整的PKI系统必须具有CA、数字证书库、密钥备份及恢复系统、证书作废系统和应用接口等基本构成部分。PKI与KMI的比较如下表所示。

img
PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等。其中,数字信封是用加密技术来保证只有规定的特定接收人才能阅读通信的内容。在数字信封中,信息发送方采用对称密钥来加密信息内容,然后将此对称密钥用接收方的公钥加密(这部分称为数字信封)之后,将它和加密后的信息一起发送给接收方,接收方先用相应的私钥打开数字信封,得到对称密钥,然后使用对称密钥解开加密信息。这种技术的安全性相当高。

PKI的公钥体系如下图所示:
img

2.3.3. SPK机制

为了更好地解决密钥管理的问题,有研究人员提出了SPK体系。SPK机制可以通过以下两种方法实现:

(1)多重公钥(Lapped Public Key , LPK)用RSA算法实现。多重公钥有两个缺点,一是将种子私钥以原码形式分发给署名用户;二是层次越多,运算时间越长。

(2)组合公钥(Conbined Public Key , CPK)用DLP或ECC实现。CPK克服了LPK的两个缺点,私钥是经组合以后的变量,不暴露种子,公钥的运算几乎不占时间,是一种比较理想的密钥管理解决方案。

3. 网络安全技术

3.1. 防火墙

防火墙(firewall)是一种隔离控制技术,在不同网域之间设置屏障,阻止对信息资源的非法访问,也可以阻止重要信息从内部网络中非法输出。作为Internet的安全性保护措施,防火墙已经得到广泛的应用。通常,企业为了维护内部的信息系统安全,在企业网和Internet之间设立防火墙。企业信息系统对于来自Internet的访问,采取有选择的接收方式。它可以允许或禁止一类具体的IP地址访问,也可以接收或拒绝TCP/IP上的某一类具体的应用。

防火墙是位于两个或多个网络之间,执行访问控制策略的一个或一组系统,是一类防范措施的总称。防火墙通常放置在外部网络和内部网络的中间,执行网络边界的过滤封锁机制。在某些情况下,防火墙以专门的硬件形式出现,它是安装了防火墙软件,并针对安全防护进行了专门设计的网络设备,本质上还是软件在进行控制。

3.1.1. 防火墙的功能

访问控制功能
内容控制功能
全面的日志功能
集中管理功能
自身的安全性和可用性

3.1.2. 防火墙的分类

从总体上来说,防火墙技术可分为网络级防火墙和应用级防火墙两类。网络级防火墙用来防止整个网络出现外来非法的入侵;应用级防火墙是从应用程序来进行接入控制,通常使用应用网关或代理服务器来区分各种应用。

在实际应用中,可根据据不同的应用,对防火墙进行更加详细的划分,一般可以分为如下几种:

包过滤型防火墙
电路级网关型防火墙
应用网关型防火墙
代理服务型防火墙
状态检测型防火墙
自适应代理型防火墙

3.1.3. 防火墙的局限性

(1)为了提高安全性,限制或关闭了一些有用但存在安全缺陷的网络服务,给用户带来了使用上的不便。

(2)目前,防火墙对于来自网络内部的攻击还无能为力。作为一种被动的防护手段,防火墙不能阻止Internet不断出现的新的威胁和攻击,不能有效地防范数据驱动式攻击。

(3)防火墙不能防范不经过防火墙的攻击,例如内部网用户通过SLIP ( Serial Line Internet Protocol,串行线路网际协议)或PPP(Point to Point Protocol,点对点协议)直接进入Internet。

(4)防火墙对用户不完全透明,可能带来传输延迟、瓶颈和单点失效等。

(5)防火墙不能完全防止受病毒感染的文件或软件的传输,由于病毒的种类繁多,如果要在防火墙完成对所有病毒代码的检查,防火墙的效率就会降到不能忍受的程度。

防火墙只是整个网络安全防护的一个部分,它需要与其他防护措施和技术配合,例如,密码技术、访问控制、权限管理和病毒防治等,才能解决内部网安全问题,并最终提供一套一体化的解决方案。

3.2. 虚拟专用网(VPN)

虚拟专用网(Virtual Private Network,VPN)是企业网在Internet等公共网络上的延伸,通过一个私有的通道在公共网络上创建一个安全的私有连接。因此,从本质上说,VPN是一个虚信道,它可用来连接两个专用网,通过可靠的加密技术保证其安全性,并且是作为公共网络的一部分存在的。如下图是一个VPN构成的原理示意图。
img

VPN原理示意图

3.2.1. VPN的关键技术

目前,VPN主要采用四项技术来保证安全,它们分别是隧道技术、加解密技术、密钥管理技术、身份认证技术和访问控制技术。

(1)隧道技术。隧道技术是VPN的基本技术,类似于点对点连接技术,它在公用网建立一条数据通道(隧道),让数据包通过这条隧道传输。

(2)加解密技术。加解密技术是数据通信中一项较成熟的技术,VPN可直接利用现有技术。

(3)密钥管理技术。密钥管理技术的主要任务是如何在公用数据网上安全地传递密钥而不被窃取。

(4)身份认证技术。身份认证技术通常使用名称与密码或卡片式认证等方式。

(5)访问控制技术。访问控制技术是由VPN服务的提供者根据在各种预定义的组中的用户身份标识,来限制用户对网络信息或资源的访问控制的机制。

3.2.2. PPP会话过程

PPP拨号会话过程可以分成4个不同的阶段,分别是创建PPP链路、用户验证、PPP回叫控制和调用网络层协议。在用户验证阶段客户PC会将用户的身份发送给接入服务器(Network AccessServer,NAS)。该阶段使用一种安全认证方式,以避免第三方窃取数据或冒充远程客户接管与客户端的连接。大多数的PPP方案只提供了有限的认证方式,包括口令字认证协议(Password Authentication Protocol,PAP)和挑战握手认证协议(Challenge Handshake Authentication Protocol,CHAP)。

3.3. 安全协议

在保证计算机网络系统的安全中,安全协议起到主要核心作用,其中主要包括IPSec、SSL、PGP和HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,安全套接字层上的超文本传输协议)等。

各个网络层次的对应的安全协议如下图所示:

img

3.4. 单点登录技术

单点登录(Single Sign-On,SSO)技术是通过用户的一次性认证登录,即可获得需要访问系统和应用软件的授权,在此条件下,管理员不需要修改或干涉用户登录,就能方便地实现希望得到的安全控制。

单点登录系统采用基于数字证书的加密和数字签名技术,基于统一策略的用户身份认证和授权控制功能,对用户实行集中、统一的管理和身份认证,以区别不同的用户和信息访问者,并作为各应用系统的统一登录入口,同时,为通过身份认证的合法用户签发针对各个应用系统的登录票据(ticket),从而实现“一点登录,多点漫游了”。必要时,单点登录系统能够与统一权限管理系统实现无缝结合,签发合法用户的权限票据,从而能够使合法用户进入其权限范围内的各应用系统,并完成符合其权限的操作。

4. 病毒防治与闯入

4.1. 网络安全与攻击

4.1.1. WiFi网络安全接入

WiFi网络安全接入WPA (WPA/WPA2)

有WPA和WPA2两个标准
以一把128位元的钥匙和一个48位元的初向量(IV)的RC4来加密
使用了更安全的信息认证码MIC(信息完整性核查)
有WPA、WPA-PSK、WPA2、WPA2-PSK这四种认证方式,采用AES和临时密钥完整性协议TKIP两种加密算法
四种认证方式具体内容如下表所示:

img

4.1.2. 网络威胁与攻击

(1)被动攻击:收集信息为主,破坏保密性。

(2)主动攻击:主动攻击的类别主要有:中断(破坏可用性),篡改(破坏完整性),伪造(破坏真实性)。

具体的攻击类型及内容如下表所示:
img

img

4.2. 计算机病毒与木马

病毒:编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。

木马:计算机木马是一种后门程序,常被黑客用作控制远程计算机的工具。

病毒的分类如下:

(1)按病毒的存在的媒体分类

网络病毒
文件病毒
引导型病毒
(2)按病毒传染的方法分类

驻留型病毒
非驻留型病毒
(3)按病毒的危害分类

无危险型
危险型
伴随型病毒
寄生型病毒
常见的病毒如下:

系统病毒(前缀:Win32、PE、W32,如:KCOM——Win32.KCOM)
蠕虫病毒(如:恶鹰—Worm.BBeagle)
木马病毒、黑客病毒(如:QQ消息尾巴木马—Trojan.Q Q3344)
脚本病毒(如:红色代码—Script.Redlof)
宏病毒(如:美丽莎—Macro.Meiissa)
后门病毒(如:灰鸽子—Backdoor.Win32.Huigezi)
病毒种植程序病毒(冰河播种者—Dropper.BingHe2.2C)
破坏性程序病毒(杀手命令—Harm.Command.Kilier)
玩笑病毒(如:女鬼—Joke.Girl ghost)
捆绑机病毒(如:捆绑QQ—Binder.QQPass.QQBin)

posted @ 2023-05-05 15:13  PerfectLi  阅读(1089)  评论(0编辑  收藏  举报