软件工程

架构设计

    1. 软件架构风格

    软件架构设计的一个核心问题是能否达到架构级的软件复用,也就是说,能否在不同的系统中使用同一个软件架构

    软件架构分为: ①数据流风格。数据流风格包括批处理序列和管道/过滤器两种风格。②调用/返回风格。调用/返回风格包括主程序/子程序、数据抽象和面向对象,以及层次结构。③独立构件风格。独立构件风格包括进程通信和事件驱动的系统。④虚拟机风格。虚拟机风格包括解释器和基于规则的系统。⑤仓库风格。仓库风格包括数据库系统、黑板系统和超文本系统

    1. 软件架构评估

    在架构评估过程中,评估人员所关注的是系统的质量属性

    在分析具体架构评估方法之前,我们先来了解两个概念,分别是 敏感点(Sensitivity Point)和权衡点(Trade-off Point)。敏感点是一个或多个构件(或之间的关系)的特性,权衡点是影响多个质量属性的特性,是多个质量属性的敏感点

    从目前已有的软件架构评估技术来看,可以归纳为三类主要的评估方式,分别是基于调查问卷(或检查表)的方式、基于场景的方式和基于度量的方式。这三种评估方式中,基于场景的评估方式最为常用

    基于场景的方式主要包括:架构权衡分析法(ATAM)、软件架构分析法(SAAM)和成本效益分析法(CBAM)中。在架构评估中,一般采用 刺激(Stimulus)、环境(Environment)和响应(Response)三方面来对场景进行描述。刺激是场景中解释或描述项目干系人怎样引发与系统的交互部分,环境描述的是刺激发生时的情况,响应是指系统是如何通过架构对刺激做出反应的

    基于场景的方式分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度

需求分析

    1. 需求的层次

    需求是多层次的,包括业务需求、用户需求和系统需求,这三个不同层次从目标到具体,从整体到局部,从概念到细节。

    质量功能部署(QFD)是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD将软件需求分为三类,分别是常规需求、期望需求和意外需求

    1. 需求过程

    需求过程主要包括需求获取、需求分析、需求规格说明书编制、需求验证与确认等

    • 需求获取

      需求获取只有与用户的有效合作才能成功。常见的需求获取方法包括用户访谈、问卷调查、采样、情节串联板、联合需求计划等

    • 需求分析

      一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性,因此,需要分析人员把杂乱无章的用户要求和期望转化为用户需求,这就是需求分析的工作

      需求分析对已经获取到的需求进行提炼、分析和审查,以确保所有的项目干系人都明白其含义并找出其中的错误、遗漏或其他不足的地方

      使用结构化分析(SA)方法进行需求分析,其建立的模型的核心是数据字典。围绕这个核心,有三个层次的模型,分别是 数据模型、功能模型和行为模型(也称为状态模型)

      在实际工作中,一般使用 **实体关系图(E-R 图)**表示数据模型,用 **数据流图(DFD)**表示功能模型,用 **状态转换图(STD)**表示行为模型。

      E-R图主要描述实体、属性,以及实体之间的关系;DFD从数据传递和加工的角度利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系统所完成的功能;STD通过 描述系统的状态和引起系统状态转换的事件,来表示系统的行为,指出作为特定事件的结果将执行哪些动作(例如,处理数据等)

      面向对象的分析 (OOA)的基本任务是运用面向对象的(OO)方法,OOA模型包括用例模型和分析模型

      用例是一种描述系统需求的方法,使用用例的方法来描述系统需求的过程就是用例建模;分析模型描述 系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及它们如何保持通信,实现系统行为(动态模型)

    • 需求规格说明书编制

      软件需求规格说明书(SRS)是需求开发活动的产物编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础

      SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少

    • 需求验证与确认

      在实际工作中,一般通过需求评审和需求测试工作来对需求进行验证。

      需求评审就是对SRS进行技术评审,SRS的评审是一项精益求精的技术,它可以发现那些二义性的或不确定性的需求,为项目干系人提供在需求问题上达成共识的方法。需求的遗漏和错误具有很强的隐蔽性,仅仅通过阅读 SRS,通常很难想象在特定环境下系统的行为。只有在业务需求基本明确,用户需求部分确定时,同步进行需求测试,才可能及早发现问题,从而在需求开发阶段以较低的代价解决这些问题

    1. UML

    统一建模语言(UML)的结构包括构造块、规则和公共机制三个部分。如下图所示:

    • UML中的事物

      UML中的事物也称建模元素,包括 结构事物、行为事物(也称动作事物)、分组事物和注释事物(也称注解事物)

    • UML中的关系

      UML用关系把事物结合在一起,主要有四种关系,分别为:

      • 依赖:依赖是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义

      • 关联:关联描述一组对象之间连接的结构关系

      • 泛化:泛化是一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的对象

      • 实现:实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约

    • UML2.0中的图

      种类 说明
      类图(Class Diagram) 类图描述一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图
      对象图(Object Diagram) 对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的
      构件图(Component Diagram) 构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体
      组合结构图(Composite Structure Diagram) 组合结构图描述结构化类(例如,构件或类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画出结构化类的内部内容
      用例图(Use Case Diagram) 用例图描述一组用例、参与者及它们之间的关系。用例图给出系统的静态用例视图。这些图在对系统的行为进行组织和建模时是非常重要的
      顺序图(Sequence Diagram,也称序列图) 顺序图是一种交互图(Interaction Diagram),交互图展现了种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图
      通信图(Communication Diagram) 通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。在UML 1.X版本中,通信图称为协作图(Collaboration Diagram)
      定时图(Timing Diagram,也称计时图) 定时图也是一种交互图,它强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序
      状态图(State Diagram) 状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模
      活动图(Activity Diagram) 活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程
      部署图(Deployment Diagram) 部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图
      制品图(Artifact Diagram) 制品图描述计算机中一个系统的物理结构。制品包括文件、数据库和类似的物理比特集合。制品图通常与部署图一起使用。制品也给出了它们实现的类和构件
      包图(Package Diagram) 包图描述由模型本身分解而成的组织单元,以及它们之间的依赖关系
      交互概览图(Interaction Overview Diagram) 交互概览图是活动图和顺序图的混合物
    • UML视图

      • 逻辑视图:逻辑视图也称为设计视图,它表示了设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集

      • 进程视图:进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构

      • 实现视图:实现视图对组成基于系统的物理代码的文件和构件进行建模

      • 部署视图:部署视图把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构

      • 用例视图:用例视图是最基本的需求分析模型

    1. 面向对象分析

    OOA的任务是“做什么”,OOD的任务是“怎么做”。

    面向对象分析阶段的核心工作是建立系统的用例模型与分析模型

    • 用例模型

      在OOA方法中,构建用例模型一般需要经历四个阶段,分别是识别参与者、合并需求获得用例、细化用例描述和调整用例模型

      可以利用用例之间的关系来调整用例模型,这些关系包括:

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

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

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

    • 分析模型

      建立分析模型的过程大致包括定义概念类,确定类之间的关系,为类添加职责,建立交瓦图等,其中有学者将前三个步骤统称为类责任协作者 (CRC)建模。类之间的主要关系有关联、依赖、泛化、聚合、组合和实现等

软件设计

    1. 结构化设计

    结构化设计(SD)是一种面向数据流的方法,它以SRS和SA阶段所产生的DFD和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计又称为总体结构设计

    在SD中,需要遵循一个基本的原则:高内聚,低耦合。内聚表示模块内部各成分之间的联系程度,耦合表示模块之间联系的程度

    1. 面向对象设计

    面向对象设计(OOD)是OOA方法的延续,其基本思想包括抽象、封装和可扩展性

    1. 设计模式

    设计模式是前人经验的总结,它使人们可以方便地复用成功的软件设计

    设计模式包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素

    根据处理范围不同,设计模式可分为类模式和对象模式。类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,属于静态关系;对象模式处理对象之间的关系,这些关系在运行时刻变化,更具动态性

    根据目的和用途不同,设计模式可分为创建型(Creational)模式、结构型 (Structural)模式和行为型(Behavioral)模式三种:①创建型模式主要用于创建对象,包括工厂方法模式、抽象工厂模式、原型模式、单例模式和建造者模式等;②结构型模式主要用于处理类或对象的组合,包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式等;③行为型模式主要用于描述类或对象的交互以及职责的分配,包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式等

软件实现

    1. 软件配置管理

    软件配置管理通过标识产品的组成元素、管理和控制变更、验证、记录和报告配置信息来控制产品的演进和完整性

    软件配置管理活动包括软件配置管理计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付等活动

    软件配置管理计划的制订需要了解组织结构环境和组织单元之间的联系,明确软件配置控制任务。软件配置标识活动识别要控制的配置项,并为这些配置项及其版本建立基线。软件配置控制关注的是管理软件生命周期中的变更。软件配置状态记录标识、收集、维护并报告配置管理的配置状态信息。软件配置审计是独立评价软件产品和过程是否遵从已有的规则、标准、指南、计划和流程而进行的活动。软件发布管理和交付通常需要创建特定的交付版本,完成此任务的关键是软件库

    1. 软件编码

    编码就是把软件设计的结果翻译成计算机可以“理解和识别”的形式——用某种程序设计语言书写的程序

    • 程序设计语言

    • 程序设计风格

      程序设计风格包括4个方面:源程序文档化、数据说明、语句结构和输入 /输出方法

    • 程序复杂性度量

      程序的定量的复杂程度可以作为模块规模的精确限度

    • 编码效率

      主要包括:①程序效率。程序的效率是指程序的执行速度及程序所需占用的内存空间。②算法效率。算法效率反映为程序的执行速度和存储容量的要求。③存储效率。提高存储效率的关键是程序的简单化。④I/O效率。输入/输出可分为两种类型:一种是面向人(操作员)的输入/输出;另一种是面向设备的输入/输出

    1. 软件测试

    软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等规定的软件质量要求。通过测试发现软件缺陷,为软件产品的质量测量和评价提供依据

    软件测试方法可分为静态测试和动态测试。静态测试是指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试一般采用桌前检查 (Desk Checking)、代码走查和代码审查。动态测试是指在计算机上实际运行程序进行软件测试,一般采用白盒测试和黑盒测试方法。白盒测试也称为结构测试,主要用于软件单元测试中。它的主要思想是,将程序看作是一个透明的白盒,测试人员完全清楚程序的结构和处理算法,按照程序内部逻辑结构设计测试用例,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试方法主要有控制流测试、数据流测试和程序变异测试等。另外,使用静态测试的方法也可以实现白盒测试。例如,使用人工检查代码的方法来检查代码的逻辑问题,也属于白盒测试的范畴。白盒测试方法中,最常用的技术是逻辑覆盖,即使用测试数据运行被测程序,考查对程序逻辑的覆盖程度。主要的覆盖标准有语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、修正的条件/判定覆盖和路径覆盖等。黑盒测试也称为功能测试,主要用于集成测试、确认测试和系统测试中。黑盒测试将程序看作是一个不透明的黑盒,完全不考虑(或不了解)程序的内部结构和处理算法,而只检查程序功能是否能按照SRS的要求正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如,文件和数据库等)的完整性等。黑盒测试根据SRS所规定的功能来设计测试用例,一般包括等价类划分、边界值分析、判定表、因果图、状态图、随机测试、猜错法和正交试验法等

部署交付

软件部署是一个复杂过程,包括从开发商发放产品,到应用者在他们的计算机上实际安装并维护应用的所有活动。这些活动包括软件打包、安装、配置、测试、集成和更新等。同时,需求和市场的不断变化导致软件的部署和交付不再是一个一劳永逸的过程,而是一个持续不断的过程,伴随在整个软件的开发过程中

    1. 软件部署与交付

    软件部署与交付是软件生命周期中的一个重要环节,属于软件开发的后期活动,即通过配置、安装和激活等活动来保障软件制品的后续运行。部署技术影响着整个软件过程的运行效率和成本投入,软件系统部署的管理代价占到整个软件管理开销的大部分

    1. 持续交付

    为解决部署与交付常存在的问题,持续交付应运而生,持续交付是一系列开发实践方法,用来确保让代码能够快速、安全地部署到生产环境中。持续交付是一个完全自动化的过程,当业务开发完成的时候,可以做到一键部署。持续交付提供了一套更为完善的解决传统软件开发流程的方案,主要体现在:

    • 在需求阶段,抛弃了传统的需求文档的方式,使用便于开发人员理解的用户故事

    • 在开发测试阶段,做到持续集成,让测试人员尽早进入项目开始测试

    • 在运维阶段,打通开发和运维之间的通路,保持开发环境和运维环境的统一

    持续交付具备的优势主要包括:

    • 持续交付能够有效缩短提交代码到正式部署上线的时间,降低部署风险

    • 持续交付能够自动、快速地提供反馈,及时发现和修复缺陷

    • 持续交付让软件在整个生命周期内都处于可部署的状态

    • 持续交付能够简化部署步骤,使软件版本更加清晰

    • 持续交付能够让交付过程成为一种可靠的、可预期的、可视化的过程

    1. 持续部署
    • 持续部署方案

      容器技术目前是部署中最流行的技术,常用的持续部署方案有Kubermetes+Docker和Matrix系统两种。

    • 部署原则

    • 部署层次

      部署层次的设置对于部署管理来说也是非常重要的。首先要明确部署的目的并不是部署一个可工作的软件,而是部署一套可正常运行的环境。完整的镜像部署包括三个环节:Build——Ship——Run

      • Build:跟传统的编译类似,将软件编译形成RPM包或者Jar包

      • Ship:则是将所需的第三方依赖和第三方插件安装到环境中

      • Run:就是在不同的地方启动整套环境

      制作完成部署包之后,每次需要变更软件或者第三方依赖以及插件升级的时候,不需要重新打包,直接更新部署包即可

    • 不可变服务器

      不可变服务器是一种部署模式,是指除了更新和安装补丁程序以外,不对服务器进行任何更改

    • 蓝绿部署和金丝雀部署

      在部署原则中提到两大部署方式为蓝绿部署和金丝雀部署。蓝绿部署是指在部署的时候准备新旧两个部署版本,通过域名解析切换的方式将用户使用环境切换到新版本中,当出现问题的时候,可以快速地将用户环境切回旧版本,并对新版本进行修复和调整。金丝雀部署是指当有新版本发布的时候,先让少量用户使用新版本,并且观察新版本是否存在问题。如果出现问题,就及时处理并重新发布;如果一切正常,就稳步地将新版本适配给所有的用户

    1. 部署与交付的新趋势

    持续集成、持续交付和持续部署的出现及流行反映了新的软件开发模式与发展趋势,主要表现为:

    • 工作职责和人员分工的转变:软件开发人员运用自动化开发工具进行持续集成,进一步将交付和部署扩展,而原来的手工运维工作也逐渐被分派到了开发人员的手里。运维人员的工作也从重复枯燥的手工作业转化为开发自动化的部署脚本,并逐步并入开发人员的行列之中。

    • 大数据和云计算基础设施的普及进一步给部要带来新的飞跃:云计算的出现使得计算机本身也可以进行自动化创建和回收,这种环境管理的范畴将得到进一步扩充。部署和运维工作也会脱离具体的机器和机房,可以在远端进行,部署能力和灵活性出现了质的飞跃。

    • 研发运维的融合:减轻运维的压力,把运维和研发融合在一起。

过程管理

软件过程能力是组织基于软件过程、技术、资源和人员能力达成业务目标的综合能力。包括治理能力、开发与交付能力、管理与支持能力、组织管理能力等方面

    1. 成熟度模型

    软件过程能力成熟度模型(CSMM)由4个能力域、20个能力子域、161个能力要求组成,如下图所示:

    • 治理:包括战略与治理、目标管理能力子域,用于确定组织的战略、产品的方向、组织的业务目标,并确保目标的实现。

    • 开发与交付:包括需求、设计、开发、测试、部署、服务、开源应用能力子域,这些能力子域确保通过软件工程过程交付满足需求的软件,为顾客与利益干系人增加价值。

    • 管理与支持:包括项目策划、项目监控、项目结项、质量保证、风险管理、配置管理、供应商管理能力子域,这些能力子域覆盖了软件开发项目的全过程,以确保软件项目能够按照既定的成本、进度和质量交付,能够满足顾客与利益干系人的要求。

    • 组织管理:包括过程管理、人员能力管理、组织资源管理、过程能力管理能力子域,对软件组织能力进行综合管理。

    1. 成熟度等级

    CSMM定义了5哥等级,包括:1级:初始级;2级:项目规范级;3级:组织改进级;4级:量化提升级;5级:创新引领级等

    能力域的等级要求如下图所示:

数据工程

数据工程是信息系统的基础工程。围绕数据的生命周期,规范数据从产生到应用的全过程,目标是为信息系统的运行提供可靠的数据保障和服务,为信息系统之间的数据共享提供安全高效的支撑环境,为信息系统实现互连、互通、互操作提供有力的数据支撑。它是实现这些目标的一系列技术、方法和工程建设活动的总称。数据工程的主要研究内容包括数据建模、数据标准化、数据运维、数据开发利用和数据安全等理论和技术

数据建模

数据建模是对现实世界中具体的人、物、活动和概念进行抽象、表示和处理,变成计算机可处理的数据,也就是把现实世界中的数据从现实世界抽象到信息世界和计算机世界

    1. 数据模型

    根据模型应用目的不同,可以将数据模型划分为三类:概念模型、逻辑模型和物理模型

    • 概念模型

      概念模型也称信息模型,它是按用户的观点来对数据和信息建模,也就是说,把现实世界中的客观对象抽象为某一种信息结构,这种信息结构不依赖于具体的计算机系统,也不对应某个具体的DBMS,它是概念级别的模型

    • 逻辑模型

      逻辑模型是在概念模型的基础上确定模型的数据结构,目前主要的数据结构有层次模型、网状模型、关系模型、面向对象模型和对象关系模型。其中,关系模型成为目前最重要的一种逻辑数据模型

      关系数据模型的数据操作主要包括查询、插入、删除和更新数据,这些操作必须满足关系的完整性约束条件。关系的完整性约束包括三大类型:实体完整性、参照完整性和用户定义的完整性

    • 物理模型

      物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放。物理数据模型的内容包括确定所有的表和列,定义外键用于确定表之间的关系,基于性能的需求可能进行反规范化处理等内容。在物理实现上的考虑,可能会导致物理数据模型和逻辑数据模型有较大的不同。物理数据模型的目标是如何用数据库模式来实现逻辑数据模型,以及真正地保存数据。物理模型的基本元素包括表、字段、视图、索引、存储过程、触发器等,其中表、字段和视图等元素与逻辑模型中基本元素有一定的对应关系。

    1. 数据建模过程

    数据建模过程包括数据需求分析、概念模型设计、逻辑模型设计和物理模型设计等过程

    • 数据需求分析。简单地说,数据需求分析就是分析用户对数据的需要和要求

    • 概念模型设计。将需求分析得到结果抽象为概念模型的过程就是概念模型设计,其任务是确定实体和数据及其关联

    • 逻辑模型设计。逻辑模型设计的任务就是将概念模型中实体、属性和关联转换为关系模型结构中的关系模式

    • 物理模型设计。经过概念模型设计和逻辑模型设计,数据模型设计的核心工作基本完成,如果要将数据模型转换为真正的数据库结构,还需要针对具体的DBMS进行物理模型设计,使数据模型走向数据存储应用环节

数据标准化

数据标准化是实现数据共享的基础。数据标准化主要为复杂的信息表达、分类和定位建立相应的原则和规范,使其简单化、结构化和标准化,从而实现信息的可理解、可比较和可共享,为信息在异构系统之间实现语义互操作提供基础支撑。数据标准化的主要内容包括元数据标准化、数据元标准化、数据模式标准化、数据分类与编码标准化和数据标准化管理

    1. 元数据标准化

    元数据最简单的定义是:元数据是关于数据的数据(Data About Data)。在信息界,元数据被定义为提供关于信息资源或数据的一种结构化数据,是对信息资源的结构化描述。其实质是用于描述信息资源或数据的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式等有关的信息

    1. 数据元标准化

    随着国际电子商务和贸易的快速发展,需要一个互连、互通、互操作的开放系统互连环境(OSIE)。OSIE四个基本要素(硬件、软件通信和数据)中的三个要素(硬件、软件和通信)。

    • 数据元

      数据元是数据库、文件和数据交换的基本数据单元。数据库或文件由记录或元组等组成而记录或元组则由数据元组成

      数据元一般来说由三部分组成:①对象。②特性。③表示

    • 数据元提取

      目前常用的数据元提取方法有两种:自上而下(Tp-Down)提取法和自下而上(Down-Top)提取法。对于新建系统的数据元提取,一般适用“自上而下”的提取法

    • 数据元标准

    1. 数据模式标准化

    数据模式是数据的概念、组成、结构和相互关系的总称在数据共享过程中,这种差异对人们进行信息的共享与交换形成了障碍。为了保证能够顺畅进行信息的共享,对特定领域而言,需要一个统一的数据模式作为数据共享与交换的基础。同时也保证该领域的相关人员对统一的数据模型有准确的、无歧义的理解

    1. 数据分类与编码标准化

    所谓数据分类与编码标准化就是把数据分类与编码工作纳入标准化工作的领域,按标准化的要求和工作程序,将各种数据按照科学的原则进行分类以编码,经有关方面协商一致,由主管机构批准、注册,以标准的形式发布,作为共同遵守的准则和依据,并在其相应的级别范围内宣贯和推行

    1. 数据标准化管理

    数据标准化阶段的具体过程包括确定数据需求、制定数据标准、批准数据标准和实施数据标准四个阶段。

    • 确定数据需求。本阶段将产生数据需求及相关的元数据、域值等文件。在确定数据需求时应考虑现行的法规、政策,以及现行的数据标准。

    • 制定数据标准。本阶段要处理“确定数据需求”阶段提出的数据需求。如果现有的数据标准不能满足该数据需求,可以建议制定新的数据标准,也可建议修改或者封存已有数据标准。推荐的、新的或修改的数据标准记录于数据字典中。这个阶段将产生供审查和批准的成套建议。

    • 批准数据标准。本阶段的数据管理机构对提交的数据标准建议、现行数据标准的修改或封存建议进行审查。一经批准,该数据标准将扩充或修改数据模型

    • 实施数据标准。本阶段涉及在各信息系统中实施和改进已批准的数据标准

数据运维

    1. 数据存储

    数据存储就是根据不同的应用环境,通过采取合理、安全、有效的方式将数据保存到物理介质上,并能保证对数据实施有效的访问

    1. 数据备份

    数据备份是为了防止由于用户操作失误、系统故障等意外原因导致的数据丢失,而将整个应用系统的数据或一部分关键数据复制到其他存储介质上的过程。这样做的目的是保证当应用系统的数据不可用时,可以利用备份的数据进行恢复,尽量减少损失

    当前最常见的数据备份结构可以分为四种:DAS备份结构、基于LAN的备份结构、LANFREE备份结构和SERVER-FREE备份结构。常见的备份策略主要有三种:完全备份、差分备份和增量备份

    1. 数据容灾

    根据容灾系统保护对象的不同,容灾系统分为应用容灾和数据容灾两类。应用容灾用于克服灾难对系统的影响,保证应用服务的完整、可靠和安全等一系列要求,使得用户在任何情况下都能得到正常的服务;数据容灾则关注于保证用户数据的高可用性,在灾难发生时能够保证应用系统中的数据尽量少丢失或不丢失,使得应用系统能不间断地运行或尽快地恢复正常运行

    1. 数据质量评价与控制
    • 数据质量描述

      数据质量可以通过数据质量元素来描述,数据质量元素分为数据质量定量元素和数据质量非定量元素

    • 数据质量评价过程

      数据质量评价过程是产生和报告数据质量结果的一系列步骤,如下图所示:

    • 数据质量评价方法

      数据质量评价方法分为直接评价法和间接评价法

      • 直接评价法:通过将数据与内部或外部的参照信息,如理论值等进行对比。确定数据质量

      • 间接评价法:利用数据相关信息,如数据只对数据源、采集方法等的描述推断或评估数据质量

    • 数据质量控制

      数据产品的质量控制分成前期控制和后期控制两个大部分。前期控制包括数据录入前的质量控制、数据录入过程中的实时质量控制;后期控制为数据录入完成后的后处理质量控制与评价

    • 数据清理

      数据清理主要包括数据分析、数据检测和数据修正三个步骤。如下图所示:

      • 数据分析:是指从数据中发现控制数据的一般规则,比如字段域、业务规则等,通过对数据的分析,定义出数据清理的规则,并选择合适的清理算法

      • 数据检测:是指根据预定义的清理规则及相关数据清理算法,检测数据是否正确,比如是否满足字段域、业务规则等,或检测记录是否重复

      • 数据修正:是指手工或自动地修正检测到的错误数据或重复的记录

数据开发利用

    1. 数据集成

    数据集成就是将驻留在不同数据源中的数据进行整合,向用户提供统一的数据视图(一般称为全局模式),使得用户能以透明的方式访问数据

    数据集成的目标就是充分利用已有数据,在尽量保持其自治性的前提下,维护数据源整体上的一致性,提高数据共享利用效率。实现数据集成的系统称为数据集成系统,它为用户提供了统一的数据源访问接口,用于执行用户对数据源的访问请求

    1. 数据挖掘

    数据挖掘是指从大量数据中提取或“挖掘”知识,即从大量的、不完全的、有噪声的、模糊的、随机的实际数据中,提取隐含在其中的、人们不知道的、却是潜在有用的知识

    数据挖掘的目标是发现隐藏于数据之后的规律或数据间的关系,从而服务于决策。数据挖掘常见的主要任务包括数据总结、关联分析、分类和预测、聚类分析和孤立点分析。数据挖掘流程一般包括确定分析对象、数据准备、数据挖掘、结果评估与结果应用五个阶段。

    1. 数据服务

    数据服务主要包括数据目录服务、数据查询与浏览及下载服务、数据分发服务

    • 数据目录服务。对于需要共享数据的用户来说,往往存在不知道有哪些数据、不知道想要的数据在哪里、不知道如何获取想要的数据等困难。数据目录服务就是要解决这些问题,是用来快捷地发现和定位所需数据资源的一种检索服务,是实现数据共享的重要基础功能服务之一

    • 数据查询与浏览及下载服务。数据查询、浏览和下载是网上数据共享服务的重要方式用户使用数据的方式有查询数据和下载数据两种

    • 数据分发服务。数据分发是指数据的生产者通过各种方式将数据传送到用户的过程

    1. 数据可视化

    可视化技术是指将抽象的事物或过程变成图形图像的表示方法。科学计算可视化(Visualizationin Scientifc Computing)的基本含义是运用图形学的原理和方法,将科学与工程计算等产生的大规模数据转换为图形、图像,以直观的形式表示出来

    可视化的表现方式也多种多样,主要可分为七类:一维数据可视化、二维数据可视化、三维数据可视化、多维数据可视化、时态数据可视化、层次数据可视化和网络数据可视化

    1. 信息检索

    信息检索的主要方法包括:①全文检索。②字段检索。③基于内容的多媒体检索。④数据挖掘

    信息检索的常用技术包括布尔逻辑检索技术、截词检索技术、临近检索技术、限定字段检索技术、限制检索技术等

数据库安全

    1. 数据库安全威胁
    1. 数据安全对策
    安全对策 说明
    防止非法的数据访问 这是数据库安全关键的需求之一。数据库管理系统必须根据用户或应用的授权来检查访问请求,以保证仅允许授权的用户访问数据库。数据库的访问控制要比操作系统中的文件访问控制复杂得多。首先,控制的对象有更细的粒度,如表、记录、属性等:其次,数据库中的数据是语义相关的,所以用户可以不直接访问数据项而间接获取数据
    防止推导 推导指的是用户通过授权访问的数据,经过推导得出机密信息,而按照安全策略,该用户是无权访问此机密信息的。在统计数据库中需要防止用户从统计聚合信息中推导得到原始个体信息,特别是统计数据库容易受到推导问题的影响
    保证数据库的完整性 该需求指的是保护数据库不受非授权的修改,以及不会因为病毒、系统中的错误等导致的存储数据破坏。这种保护通过访问控制、备份/恢复以及一些专用的安全机制共同实现。备份/恢复在数据库管理系统领域得到了深入的研究,它们的主要目标是在系统发生错误时保证数据库中数据的一致性
    保证数据的操作完整性 定位于在并发事务中保证数据库中数据的逻辑一致性。一般而言,数据库管理系统中的并发管理器子系统负责实现这部分需求
    保证数据的语义完整性 在修改数据时,保证新值在一定范围内符合逻辑上的完整性。对数据值的约束通过完整性约束来描述。可以针对数据库定义完整性约束(定义数据库处于正确状态的条件),也可以针对变换定义完整性约束(修改数据库时需要验证的条件)
    审计和日志 为了保证数据库中数据的安全,一般要求数据库管理系统能够将所有的数据操作记录下来。这一功能要求系统保留日志文件,安全相关事件可以根据系统设置记录在日志文件中,以便事后调查和分析,追查入侵者或发现系统的安全弱点。审计和日志是有效的威慑和事后追查、分析工具。与数据库中多种粒度的数据对应,审计和日志需要面对粒度问题。因为记录对一个细粒度对象(如一个记录的属性)的访问可能有用,但是考虑到时间和代价,这样做可能并不实用
    标识和认证 同计算机系统的用户管理类似,使用的方法也非常类似。与其他系统一样,标识和认证也是数据库的第一道安全防线。标识和认证是授权、审计等的前提条件
    机密数据管理 数据库中的数据可能有部分是机密数据,也有可能全部是机密数据(如军队的数据库)而有些数据库中的数据全部是公开的数据。同时保存机密数据和公开数据的情况比较复杂。对于同时保存机密和公开数据的数据库而言,访问控制主要保证机密数据的保密性,仅允许授权用户的访问。这些用户被赋予对机密数据进行一系列操作的权限,并且禁止传播这些权限。此外,这些被授权访问间机密数据的用户应该与普通用户一样可以访问公开数据,但是不能相互干扰。另一种情况是用户可以访问一组特定的机密数据,但是不能交叉访问。此外,还有一种情况是用户可以单独访问特定的机密数据集合,但是不能同时访问全部机密数据
    多级保护 多级保护表示一个安全需求的集合。现实世界中很多应用要求将数据划分不同保密级别。在多级保护体系中,进一步的要求是研究如何赋予多数据项组成的集合一个恰当的密级。数据的完整性和保密性是通过给予用户权限来实现的,用户只能访问拥有的权限所对应级别的数据
    限界 限界的意义在于防止程序之间出现非授权的信息传递。信息传递出现在“授权通道”“存储通道”和“隐通道”中。授权通道通过授权的操作提供输出信息,例如编辑或编译一个文件。存储通道是存储区,一个程序向其中存储数据,而其他程序可以读取。隐通道指的是使用系统中并非设计用来进行通信的资源在主体间通信的信道
    1. 数据库安全机制

    数据库安全机制是用于实现数据库的各种安全策略的功能集合,正是由这些安全机制来实现安全模型,进而实现保护数据库系统安全的目标。数据库安全机制包括用户的身份认证、在取控制、数据库加密、数据审计、推理控制等内容

系统集成

集成基础

系统集成的工作在信息系统项目建设中非常重要,它通过硬件平台、网络通信平台、数据库平台、工具平台、应用软件平台将各类资源有机、高效地集成到一起,形成一个完整的工作台面。系统集成工作的好坏对系统开发、维护有极大的影响。因此,在技术上需要遵循的基本原则包括:开放性、结构化、先进性和主流化

网络集成

  • 传输子系统。目前主要的传输介质分为无线传输介质和有线传输介质两大类。常用的无线传输介质主要包括无线电波、微波、红外线等,常用的有线传输介质主要包括双绞线、同轴电缆、光纤等

  • 交换子系统。网络按所覆盖的区域可分为局域网、城域网和广域网,由此网络交换也可以分为局域网交换技术、城域网交换技术和广域网交换技术

  • 安全子系统。网络安全主要关注的内容包括:使用防火墙技术,防止外部的侵犯;使用数据加密技术,防止任何人从通信信道窃取信息;访问控制,主要是通过设置口令、密码和访问权限保护网络资源

  • 网管子系统。由于网络规模的扩大,通常会出现网络“瓶颈”问题,使系统的速度变慢。网管的职责便是找出瓶颈并解决它。

  • 服务器子系统。选择网络服务器时要考虑以下因素:①CPU的速度和数量;②内存容量和性能;③总线结构和类型;④磁盘容量和性能;⑤容错性能;⑥网络接口性能;⑦服务器软件等。

  • 网络操作系统。网络操作系统的主要任务是调度和管理网络资源,并为网络用户提供统一、透明使用网络资源的手段。网络资源主要包括网络服务器、工作站、打印机、网桥、路由器、交换机、网关、共享软件和应用软件等

  • 服务子系统。网络服务主要包括互联网服务、多媒体信息检索、信息点播.信息广播、远程计算和事务处理以及其他信息服务等

数据集成

数据集成的目的是运用一定的技术手段将系统中的数据按一定的规则组织成为一个整体使得用户能有效地对数据进行操作。数据集成处理的主要对象是系统中各种异构数据库中的数据。数据仓库技术是数据集成的关键

    1. 数据集成层次

    数据集成是将参与数据库的有关信息在逻辑上集成为一个属于异构分布式数据库的全局概念模式,以达到信息共享的目的。数据集成可以分为基本数据集成、多级视图集成、模式集成和多粒度数据集成四个层次。

    • 基本数据集成

      通用标识符问题是数据集成时遇到的最难的问题之一。由于同一业务实体存在于多个系统源中,并且没有明确的办法确认这些实体是同一实体时,就会产生这类问题。处理该问题的办法包括:

      • 隔离:保证实体的每次出现都指派一个唯一标识符

      • 调和:确认哪些实体是相同的,并且将该实体的各次出现合并起来

    • 多级视图集成

      多级视图机制有助于对数据源之间的关系进行集成:底层数据表示方式为局部模型的局部格式,如关系和文件;中间数据表示为公共模式格式,如扩展关系模型或对象模型;高级数据表示为综合模型格式。视图的集成化过程为两级映射:①数据从局部数据库中,经过数据翻译、转换并集成为符合公共模型格式的中间视图;②进行语义冲突消除、数据集成和数据导出处理,将中间视图集成为综合视图

    • 模式集成

      实际应用中,数据源的模式集成和数据库设计仍有相当的差距,如模式集成时出现的命名、单位、结构和抽象层次等冲突问题

    • 多粒度数据集成

      多粒度数据集成是异构数据集成中最难处理的问题,理想的多粒度数据集成模式是自动逐步抽象。数据综合(或数据抽象)指由高精度数据经过抽象形成精度较低但是粒度较大的数据。其作用过程为从多个较高精度的局部数据中,获得较低精度的全局数据。在这个过程中,要对各局域中的数据进行综合,提取其主要特征。数据综合集成的过程实际上是特征提取和归并的过程。数据细化指通过由一定精度的数据获取精度较高的数据,实现该过程的主要途径有:时空转换,相关分析或者由综合中数据变动的记录进行恢复。数据集成是最终实现数据共享和辅助决策的基础

    1. 异构数据集成

    数据集成的目的是为应用提供统一的访问支持,因此集成后的数据必须保证一定的完整性包括数据完整性和约束完整性

    • 异构数据集成的方法

      异构数据集成方法归纳起来主要有两种,分别是过程式方法和声明式方法

    • 开放数据库互联标准

    • 基于XML的数据交换标准

    • 基于JSON的数据交换格式

软件集成

软件构件标准: 公共对象请求代理结构(CORBA)、COM、DCOM与COM+、.NET、J2EE应用架构等标准。

    1. CORBA

    对象管理组织(OMG)是CORBA规范的制定者,OMG的目的则是为了将对象和分布式系统技术集成为一个可相互操作的统一结构,此结构既支持现有的平台也将支持未来的平台集成

    1. COM

    COM 技术要达到的基本目标是:即使对象是由不同的开发人员用不同的编程语言实现的,在开发软件系统时,仍能够有效地利用已经存在于其他已有软件系统中的对象;同时,也要使当前所开发的对象便于今后开发其他软件系统时进行重用

    1. DCOM与COM+

    DCOM作为COM的扩展,不仅继承了COM优点,而且针对分布环境还提供了一些新的特性,如位置透明性、网络安全性、跨平台调用等

    COM+为COM的新发展或COM更高层次上的应用,其底层结构仍然以COM为基础,几乎包容了COM的所有内容。COM+倡导了一种新的概念,它把COM组件软件提升到应用层而不再是底层的软件结构,通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统。因此,COM+与操作系统的结合更加紧密

    1. .NET

    .NET 开发框架在通用语言运行环境基础上,给开发人员提供了完善的基础类库、数据库访问技术及网络开发技术,开发者可以使用多种语言快速构建网络应用

    1. J2EE

    J2EE为搭建具有可伸缩性、灵活性、易维护性的组织系统提供了良好的机制。J2EE的体系结构可以分为客户端层、服务器端组件层EJB层和信息系统层

应用集成

应用集成或组织应用集成(EAI)是指将独立的软件应用连接起来,实现协同工作。借助应用集成,组织可以提高运营效率,实现工作流自动化,并增强不同部门和团队之间的协作

对应用集成的技术要求大致有:

  • 具有应用间的互操作性:应用的互操作性提供不同系统间信息的有意义交换,即信息的语用交换,而不仅限于语法交换和语义交换。此外,它还提供系统间功能服务的使用功能,特别是资源的动态发现和动态类型检查

  • 具有分布式环境中应用的可移植性:提供应用程序在系统中迁移的潜力并且不破坏应用所提供的或正在使用的服务。这种迁移包括静态的系统重构或重新安装以及动态的系统重构

  • 具有系统中应用分布的透明性:分布的透明性屏蔽了由系统的分布所带来的复杂性。它使应用编程者不必关心系统是分布的还是集中的,从而可以集中精力设计具体的应用系统,这就大大减少了应用集成编程的复杂性

可以帮助协调连接各种应用的组件有:

  • 应用编程接口(API):API是定义不同软件交互方式的程序和规则,可以支持应用之间相互通信。API利用特定的数据结构,帮助开发人员快速访问其他应用的功能

  • 事件驱动型操作:当触发器(即事件)启动一个程序或一组操作时,系统就会执行事件驱动型操作。例如:在订单提交后,进行计费并向客户开具发票;管理从ERP系统到CRM系统的“业务机会到订单”工作流

  • 数据映射:将数据从一个系统映射到另一个系统,可以定义数据的交换方式,从而简化后续的数据导出、分组或分析工作。例如,用户在一个应用中填写联系信息表,那么这些信息将被映射到相邻应用的相应字段

安全工程

工程概述

信息安全系统工程就是要建造一个信息安全系统,它是整个信息系统工程的一部分,而且最好是与业务应用信息系统工程同步进行,主要围绕“信息安全”内容

安全系统

一个“宏观”三维空间图来反映信息安全系统的体系架构及其组成,如下图所示:

  • X轴是“安全机制”。安全机制可以理解为提供某些安全服务,利用各种安全技术和技巧,所形成的一个较为完善的结构体系

  • Y轴是“OSI网络参考模型”。信息安全系统的许多技术、技巧都是在网络的各个层面上实施的,离开网络信息系统的安全也就失去意义

  • Z轴是“安全服务”。安全服务就是从网络中的各个层次提供给信息应用系统所需要的安全服务支持。如对等实体认证服务、访问控制服务、数据保密服务等

X、Y、Z三个轴形成的信息安全系统三维空间就是信息系统的“安全空间”。随着网络的逐层扩展,这个空间不仅范围逐步加大,安全的内涵也就更丰富, 达到具有认证、权限、完整、加密和不可否认五大要素,也叫作“安全空间”的五大属性。

  • 1.安全机制

    安全机制包含基础设施实体安全、平台安全、数据安全、通信安全、应用安全、运行安全管理安全、授权和审计安全、安全防范体系等。

    1. 安全服务

    安全服务包括对等实体认证服务、数据保密服务、数据完整性服务、数据源点认证服务禁止否认服务和犯罪证据提供服务等。

    • 对等实体认证服务。对等实体认证服务用于两个开放系统同等层中的实体建立链接或数据传输时,对对方实体的合法性、真实性进行确认,以防假冒

    • 数据保密服务。数据保密服务包括多种保密服务,为了防止网络中各系统之间的数据被截获或被非法存取而泄密,提供密码加密保护。数据保密服务可提供链接方式和无链接方式两种数据保密,同时也可对用户可选字段的数据进行保护

    • 数据完整性服务。数据完整性服务用以防止非法实体对交换数据的修改、插入、删除以及在数据交换过程中的数据丢失

    • 数据源点认证服务。数据源点认证服务用于确保数据发自真正的源点,防止假冒

    • 禁止否认服务。禁止否认服务用以防止发送方在发送数据后否认自己发送过此数据,接收方在收到数据后否认自己收到过此数据或伪造接收数据,由两种服务组成:不得否认发送和不得否认接收

    • 犯罪证据提供服务。指为违反国内外法律法规的行为或活动,提供各类数字证据、信息线索等

    1. 安全技术

    安全技术主要涉及加密、数字签名技术、防控控制、数据完整性、认证、数据挖掘等,详见第二章-信息技术发展#信息安全。

工程基础

信息安全系统的建设是在OSI网络参考模型的各个层面进行的,因此信息安全系统工程活动离不开其他相关工程,主要包括: 硬件工程、软件工程、通信及网络工程、数据存储与灾备工程、系统工程、测试工程、密码工程和组织信息化工程等。

信息安全系统建设是遵从组织所制定的安全策略进行的。而安全策略由组织和组织的客户和服务对象、集成商、安全产品开发者、密码研制单位、独立评估者和其他相关组织共同协商建立。因此信息安全系统工程活动必须要与其他外部实体进行协调

信息安全系统工程应该吸纳安全管理的成熟规范部分,这些安全管理包括物理安全、计算机安全、网络安全、通信安全、输入/输出产品的安全、操作系统安全、数据库系统安全、数据安全、信息审计安全、人员安全、管理安全和辐射安全等。

工程体系架构

    1. ISSE-CMM基础

    信息安全系统工程能力成熟度模型(ISSE-CMM)是一种衡量信息安全系统工程实施能力的方法,是使用面向工程过程的一种方法

    ISSE-CMM主要适用于工程组织、获取组织和评估组织。信息安全工程组织包含系统集成商、应用开发商、产品提供商和服务提供商等,这些组织可以使用ISSE-CMM对工程能力进行自我评估。信息安全的获取组织包含采购系统、产品以及从外部/内部资源和最终用户处获取服务的组织,这些组织可以使用ISSE-CMM来判别一个供应者组织的信息安全系统工程能力,识别该组织供应的产品和系统的可信任性,以及完成一个工程的可信任性。信息安全的评估组织包含认证组织、系统授权组织、系统和产品评估组织等,这些组织可以使用ISSE-CMM作为工作基础,以建立被评组织整体能力的信任度。

    1. ISSE过程

    ISSE将信息安全系统工程实施过程分解为: 工程过程、风险过程和保证过程三个基本的部分。

    1. ISSE-CMM体系结构

    能力级别代表工程组织的成熟度级别,如下图所示: