@chendushuai
2018-08-18T00:27:18.000000Z
字数 218702
阅读 2418
软考 高级职称 系统架构师 学习笔记
根据指令流、数据流的多倍性特征对计算机系统进行分类。根据不同的指令流-数据流组织方式,将计算机系统分为以下四类:
大多数RISC采用了Cache方案,使用Cache来提高取指令的速度。而且,有的RISC使用两个独立的Cache来改善性能,一个称为指令Cache,另一个称为数据Cache。这样,取指令和取数据可以同时进行,互不干扰。
是一组能为多个部件分时共享的公共信息传输线路。共享是指总线上可以挂接多个部件,各个部件之间相互交换的信息都可以通过这组公共线路传送;分时是指同一时刻只允许有一个部件向总线发送信息,如果出现两个或两个以上部件同时向总线发送信息,势必导致信号冲突。当然,在同一时刻,允许多个部件同时从总线上接收相同的信息。
按总线相对于CPU或其他芯片的位置可以分为内部总线和外部总线两种。在CPU内部,寄存器之间和算数逻辑部件ALU与控制部件之间传输数据所用的总线称为内部总线;外部总线是指CPU与内存RAM、ROM和输入/输出设备接口之间进行通信的线路。由于CPU通过总线实现程序取指令、内存/外设的数据交换,在CPU与外设一定的情况下,总线速度是制约计算机整体性能的最大因素。
按总线功能来划分,又可以分为地址总线、数据总线、控制总线三类,人们通常所说的总线都包括这三个组成部分,地址总线用来传送地址信息,数据总线用来传送数据信息,控制总线用来传送各种控制信号。
用来存放程序和数据的部件。
传统的存储器系统一般分为高速缓冲存储器(Cache)、主存、辅存三级。
多层级的存储体系之所以能用低投入换来较高的存取速率,得益于局部性原理。局部性原理是指程序在执行时呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分。相应的,它所访问的存储空间也仅局限于某个区域。程序局限性包括时间局部性和空间局部性,时间局部性是指程序中的某条指令一旦执行,不久以后该指令可能再次执行。产生时间局部性的典型原因是由于程序中存在着大量的循环操作;空间局部性是指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。
存储器中常用的存储方式:
用来存放计算机运行期间所需要的程序和数据,CPU可以直接随机的进行读/写。主存具有一定容量,存取速度较高。由于CPU要频繁的访问主存,所以主存的性能在很大程度上影响了整个计算机系统的性能。主存可以分为随机存取存储器和只读存储器。
用于存放当前不需要立即使用的信息,一旦需要,再和主机成批交换数据。主机的外部设备,称为外存储器。存储容量大、可靠性高、价格低。
顺序存取的设备,特点为:存取时间较长,但存储容量大,便于携带,价格便宜。
在磁盘上进行信息的读写时,首先要定位到目标磁道,这个过程称之为寻道,寻道所消耗的时间成为寻道时间,定位到目标磁道后,需要定位到目标扇区,此过程通过旋转盘片完成,平均旋转半圈可到目标位置,故磁盘访问时间为:
功能是为了提高CPU数据输入输出的速率,即CPU与存储系统间数据传送带宽限制。通常在CPU和内存之间设置小容量的Cache。
Cache采用相联存储器CAM,是一种基于数据内容进行访问的存储设备。对其写入数据时,CAM能够自动选择一个未用的空单元进行存储;当需要读出数据时,而是直接给出该数据或该数据的一部分内容。CAM通过对所有存储单元中的数据同时进行比较,并标记符合条件的所有数据以供提取。比较是同时、并行进行的。
使用Cache改善性能的依据是程序的局部性原理。
根据局部性原理,可以爸目前常用或将要用到的信息预先放到Cache中,当CPU需要读取数据时,首先在Cache中查找是否有所需内容,如果有,则直接从Cache中读取;若没有,再从内存中读取该数据,然后同时送往CPU和Cache。如果CPU需要访问的内容大多都能在Cache中找到(称为访问命中),则可以大大提高系统性能。
如果以代表对Cache的访问命中率(称为失效率,或未命中率),表示Cache的周期时间,表示内存的周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为,则:
系统的平均存储周期与命中率有很密切的关系,命中率的提高即使很小也能导致性能的极大改善。
例如:设某计算机主存的读/写时间为100ns,有一个指令和数据合一的Cache,已知该Cache的读/写时间为10ns,取指令的命中率为98%,取数的命中率为95%,在执行某类程序时,约有指令需要存/取一个操作数。假设指令流水线再任何时候都不阻塞,则设置Cache后,每条指令的平均访存时间约为:
当CPU发出访存请求后,存储器地址先被送到Cache控制器以确定所需数据是否已在Cache中,若命中则直接对Cache进行访问。这个过程称为Cache的地址映射(映像)。在Cache的地址映射中,主存和Cache将均分成容量相同的块(页)。常见的映射方法有直接映射、全相联映射和组相联映射。
以随机存储器作为Cache存储器,硬件电路较简单。在进行映射时,主存地址被分成三个部分,从高到低一次为:区号、页号、页内地址。
| 区号 | 页号 | 页内地址 |
|---|---|---|
| 7位 | 4位 | 19位 |
| - | Cache地址 | Cache地址 |
例如:内存容量为1GB,Cache容量为8MB,页大小为512KB。直接映像中,先分区,再分页。一个区的大小就是Cache容量的大小,所以一共分:1GB/8MB=128个区,所以区号为7位。每个区分:8MB/512KB=16个页,所以页号为4位。
直接映射方式中,没个内存也只能复制到某一固定的Cache页中。映射规律为:主存中每个区的第0页,只能进入Cache的第0页。若当前时刻Cache中0号页已被占据,而1-15号页空闲,现在要将1区的第0页(即内存的16页)调入Cache是会发生冲突的。所以直接映射的块冲突率非常高。
在Cache中,为每一个页设立一个Cache标记,该标记用于识别当前的Cache块来自于哪个内存页。直接映像中,由于每个区的N号页,都必须进入到Cache的N号页,所以只需要记录区号即可。所以此时标记位的长度为7位。
直接映射方式的优点是比较容易实现,缺点是不够灵活,有可能使Cache的存储空间得不到充分利用。
使用相联存储器组成的Cache存储器。该方式中,主存中的每一页可以映射到Cache的任一页。如果淘汰Cache中某一页的内容,则可调入任一主存页的内容,因此比直接映射方式更为灵活。
在全相联映射方式中,主存地址分为两个部分,分别为地址部分(主存页标记)和数据部分(页内地址)。数据部分用来存放数据,而地址部分则存放该数据的存储器地址。
| 页号 | 页内地址 |
|---|---|
| 11位 | 19位 |
| 主存页号 |
因为Cache中某一页的内容都可以在主存中的任一页中存储,所以在Cache中也需要存储该页所对应的主存页号,所以,Cache标记信息位数增加,比较逻辑成本随之增加。
在全相联映射方式中,主存地址不能直接提取Cache页号,而是需要将主存页标记于Cache各页的标记诸葛比较,直到找到符合标记的页(访问Cache命中),或者全部比较完成仍无符合的标记(访问Cache失败)。因此这种映射方式速度很慢,是掉了高速缓存的作用,也是该方式的最大缺点。因此只适用于小容量Cache。
也称页组映射,介于直接映射和全相联映射之间,是这两种映射的折衷方案。全相联映射以页为单位,可自由映射,没有固定的对应关系,直接映射方式中,主存分组,主存组内的各页与Cache的页之间采取的是固定的映射关系,但各组均可映射到Cache中。在组相联映射中就,主存和Cache都分组,主存中的一个组内的页数与Cache的分组数相同。
| 区号 | 组号 | 组内页号 | 页内地址 |
|---|---|---|---|
| 7位 | 3位 | 1位 | 19位 |
| - | Cache地址 | Cache地址 | Cache地址 |
组关联映射的规则为:主存中的组于Cache中的组形成直接映射关系,而每个组内的页是全相联映射关系。如主存中1区0页,它在0组中,所以只能进入Cache中的0组中,至于进入到Cache中的0组0页还是0组1页,并无强制要求,可以任意放置。
如果Cache中每组只有一页,则组相联映射方式就变成了直接映射方式,如果Cache中每组页数为16页(即Cache只分一组),那就是全相联映射。
在组相联映射中,由于Cache中每组有若干可以选择的页,因而它在映射定位方面较直接映射方式灵活;每组页数有限,因此付出的代价不是很大,可以根据设计目标选择组内页数。
当Cache中产生了一次访问未命中之后,相应的数据应同时读入CPU和Cache。但是当Cache已存满数据后,新数据必须替换(淘汰)Cache中的某些旧数据。
最简单的替换算法。完全不管Cache块过去、现在及将来的使用情况,简单的根据一个随机数,选择一块替换掉。
按照调入Cache中的先后顺序决定淘汰的顺序,即在需要更新时,将最先进入Cache中的块最为被替换的块。该方法要求为每块做一记录,记下他们进入Cache的先后顺序。这种方法容易实现,而且系统开销小,缺点是可能会把一些需要经常使用的程序块(如循环程序)替换掉。
LRU算法是把CPU近期最少使用的块作为被替换的块。这种替换方法需要随时记录Cache中各块的使用情况,以便确定哪个块时近期最少使用的块。LRU算法相对合理,但实现起来比较复杂,系统开销较大。通常需要对每一块设置一个称为“年龄计数器”的硬件或软件计数器,用以记录其被使用的情况。
因为需要保证缓存在Cache中的数据与内存中的内容一致,相对读操作而言,Cache的写操作比较复杂。
当要写Cache时,数据同时写回内存,有时也称为写通。当某一块需要替换时,也不必把这一块写回到主存中去,新调入的块可以立即把这一块覆盖掉。这种方法实现简单,而且能随时保持主存数据的正确性,但可能增加多次不必要的主存写入,会降低存取速度。
CPU修改Cache中的某一块之后,相应的数据并不立即写回内存单元,而是当该块从Cache中被淘汰时,才把数据写回到内存中。在采用这种更新策略的Cache块表中,一般有一个标志位,当一块中的任何一个单元被修改时,标志位被置“1”。当需要替换掉这一块时,如果标志位为“1”,则必须先把这一块写回到主存中去之后,才能再掉入新的块;如果标识为“0”,则这一块不必写回内存,只要用新调入的块覆盖掉这一块即可。这种方法的优点是操作速度块,缺点是因主存中的字块会随时修改而有可能出错。
对Cache中的每一个数据设置一个有效位。当数据进入Cache后,有效位置“1”;而当CPU要对该数据进行修改时,数据只需要写入内存并同时将该有效位置“0“。当要从Cache中读取数据时需要测试其有效位,若为”1“则直接从Cache中取数,否则,从内存中取数。
流水线技术吧一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构负责执行,而这些机构可以同时并行工作。在任一时刻,任一任务只占用其中一个执行机构,这样就可以实现多个任务的重叠执行,以提高效率。
流水线应用过程中,会将需要处理的工作分为N个阶段,最耗时的那一段所消耗的时间为流水线周期。如:使用流水线技术执行100条指令,每条指令取指2ms,分析4ms,执行1ms,则流水线周期为4ms。
延续上面的场景,将一个任务的执行过程可以分为N个阶段,假设每个阶段的完成时间为t,则完成该任务所需的时间即为Nt。若以传统的形式,则完成k个任务所需的时间为kNt;而使用流水线技术执行,则花费的时间是Nt+(k-1)t。也就是说,除了第1个任务需要完整的时间外,其他都通过并行,节省下了大量的时间。所以流水线的执行时间可以通俗的表达为:
流水线执行时间=第1条指令的执行时间+(n-1)X流水线周期
n代表需要处理的任务数量。
在考试时,需要特别注意一个细节问题,流水线的执行时间计算,其实进一步可以分理论情况和实践情况两种不同的处理方式。下面以实例进行说明。
例:某计算机系统,一条指令的执行需要经历取指2ms,分析4ms,执行1ms三个阶段,现需要执行100条指令,利用流水线技术需要多长时间?
理论上来说,一条指令的执行时间为:2ms+4ms+1ms=7ms
所以理论上流水线的执行时间为:2ms+4ms+1ms+(100-1)X4ms=403ms
而实际上,真正做流水线处理时考虑到处理的复杂性,会将执行的每个阶段的时间都统一为流水线周期,即1条指令的执行周期为4ms+4ms+4ms=12ms。
所以,实际流水线的执行时间为4ms+4ms+4ms+(100-1)X4ms=408ms。考试时,80%以上的概率采用理论公式计算,所以考试时需要以理论公式计算,若计算的结果无正确选项,才考虑使用实际公式计算。
流水线的吞吐率(Though Put Rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。计算流水线吞吐率的最基本公示如下:
为任务数,是处理完成个任务所用的时间。
流水线的最大吞吐率为:
完成同样一批任务,使用流水线所用的时间与不使用流水线所用的时间之比成为流水线的加速比(speedup radio)。如果不使用流水线,则顺序执行所用的时间为,使用流水线的执行时间为,则计算流水线加速比的基本公式如下:
如果流水线各个流水段的执行时间都相等(设为),则一条段流水线完成个连续任务所需要的时间为。如果不使用流水线,即顺序执行这个任务,则所需的时间为。因此,各个流水段执行时间均相等的一条段流水线完成个连续任务的实际加速比为:
这种情况下的最大加速比为:
掌握操作系统原理的关键在于深入理解“一个观点,两条线索”。一个观点是以资源管理的观点来定义操作系统;两条线索是指操作系统如何管理计算系各类资源和控制程序的执行。
操作系统的基本类型有:批处理操作系统、分时操作系统和实时操作系统。从资源管理的角度看:操作系统主要是对处理器、存储器、文件、设备和作业进行管理。
OS是计算机系统中的核心系统软件,负责管理和控制计算机系统中的硬件和软件资源,合理的组织计算机工作流程和有效的利用资源,再计算机和用户之间起到接口的作用。
按照功能划分,可以分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统、嵌入式操作系统、微内核操作系统等。
主要功能是进行处理机与进程管理、存储管理、设备管理、文件管理和作业管理的工作。
进程是处理机管理中最基本、最重要的概念。进程是系统并发执行的体现。由于在多道程序系统中,众多的计算机用户都以各种各样的任务,随时随地争夺使用处理机。为了动态的看待操作系统,则以进程作为独立运行的基本单位,以进程作为分配资源的基本单位。处理机管理也称进程管理。
顺序程序是指程序中若干操作必须按照某种先后次序来执行,并且每次操作前和操作后的数据、状态之间都有一定的关系。在多道程序系统中,程序的运行环境发生了很大的变化,主要体现在:
实际上,在多道程序系统中,程序的并发执行和资源共享之间时相辅相成的。以方便,只有允许程序并行执行,才可能存在资源共享的问题;另一方面,只有有效的实现资源共享,才可能使得程序并行执行。
并发操作实际上是这样的:大多数程序段只要求操作在时间上是有序的,也就是有些操作必须在其他操作之前,这是有序的,但其中有些操作却可以同时进行。
进程至少具有以下三种状态:
进程状态的变化情况如下:
引入刮起状态的原因有:
综上所述,挂起状态具有以下三个属性:
进程互斥定义为:一组并发进程中一个或多个程序段,因为共享某一共有资源而导致必须以一个不允许交叉执行的单位执行。也就是说互斥是保证临界资源在某一时刻只被一个进程访问。
进程同步定义为:把异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步。也就是说进程之间时异步执行的,同步即是使各进程按一定的制约顺序和速度执行。
互斥时资源的竞争关系,同步是进程间的协作关系。
一次仅允许一个进程使用的资源称为临界资源。一个进程访问临界资源的那段程序代码称为临界区。由此互斥可以描述为:禁止两个或两个以上的进程同时进入访问同一临界资源的临界区。协调准则如下:
信号量可以有效的实现进程的同步和互斥。在操作系统中,信号量是一个证书。当信号量大于等于0时,代表可供并发进程使用的资源实体数,当信号量小于0时则表示正在使用临界区的近成熟。建立一个信号量必须说明所建信号量代表的意义和设置初值,以及建立相应的数据结构,以便指向那些等待使用该临界区的进程。
对信号量只能施加特殊的操作:P操作和V操作。P操作和V操作都是不可分割的原子操作,称为原语。因此,P操作和V操作执行期间不允许中断发生。
P(sem)操作的过程是将信号量sem值减1,若sem的值成负数,则调用P操作的进程暂停执行,直到另一个进程对同一信号量作V操作。V(sem)操作的过程是将信号量sem的值加1,若sem的值小于等于0,从相应队列(与sem有关的队列)中选择一个进程,唤醒它。操作的定义如下:
P操作
P(sem) {sem = sem - 1;if (sem < 0) 进程进入等待状态;else 继续执行;}
V操作
V(sem) {sem = sem + 1;if (sem <= 0) 唤醒队列中的一个等待进程;else 继续执行;}
设信号量mutex是用于互斥的信号量,初值为1,表示没有并发进程使用该临界区。于是各并发进程的临界区可以改写成下列形式的代码段:
P(mutex);临界区V(mutex);
要用P,V操作实现进程同步,需要引进私用信号量。私用信号量只与制约进程和被制约进程有关,而不是与整组并发进程有关。与此相对,进程互斥使用的信号量为公用信号量。首先为各并发进程设置私用信号量,然后为私用信号量赋初值,最后利用P、V原语和私用信号量规定各进程的执行顺序。
前趋图是一个由结点和有向边构成的有向无循环图。该图通常用于表现事务之间先后顺序的制约关系。图中的每一个节点可以表示一个语句、一个程序段或是一个进程,节点间的有向边表示两个节点之间存在的前趋关系。
没有前趋节点的称为开始节点,没有后继节点的,称为终止节点。
在前趋图中,执行先后顺序的制约关系可分为两种:直接制约和间接制约。
直接制约通常是指一个操作中,多个步骤之间的制约关系,也可以说是“同步的进程之间的制约关系”。
间接制约通常是指多个操作之间相同步骤的制约关系,也可以说是“互斥的进程之间的制约关系”。
进程调度即处理器调度,又称上下文转换,主要功能是确定在什么时候分配处理器,并确定分配给哪一个进程,即让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行。
引起进程调度的原因有以下几类:
进程调度的方式有两类:剥夺方式和非剥夺方式。非剥夺方式是指:一旦某个作业或进程占用了处理器,别的进程就不能把处理器从这个进程手中夺走,直到该进程自己因调用原语操作而进入阻塞状态,或时间片用完而让出处理机;剥夺方式是指:当就绪队列中有进程的优先级高于当前执行进程的优先级时,便立即发生进程调度,转让处理机。
进程调度算法如下:
当若干个进程互相竞争对方已占有的资源,无限期的等待,不能向前推进时会造成“死锁”。
系统中内存的使用一般分为两部分,一部分为系统空间,存放操作系统本身及相关的系统程序;另一部分为用户空间,存放用户的程序和数据。
存储管理主要是针对内存储器的管理,负责对内存的分配和回收、内存的保护和内存的扩充。目的是尽量提高内存的使用效率。
分页的基本思想是把程序的逻辑空间和内存的物理空间按照同样的大小划分成若干页面,并以页面为单位进行分配。在页式存储管理中系统中虚地址是一个有序对(页号,位移)。系统为每一个进程建立一个页表,其内容包含进程的逻辑页号于物理页号的对应关系、状态等。
页式系统的动态地址转换方式如下:当进程运行时,其页表的首地址已在系统的动态地址转换机构中的基本地址寄存器中。执行的指令访问虚存地址时,首先根据页号查询页表,若已调入内存,则得到该页的内存位置,然后,同页内位移值组合,得到物理地址。如果该页尚未调入内存,则产生缺页中断,以装入所需的页。
页式虚拟存储管理是在页式存储管理的基础上实现虚拟存储器的。
当装入一个当前需要的页面时,如果内存储器中无空闲块,则可选择一个已在内存储器中的页面,把它暂时调出内存。若在执行中该页被修改过,则把该页信息重新协会到磁盘上,否则不必重新写回磁盘。当一页被暂时调出内存后,让出的内存空间用来存放当前需要使用的页面。页面被调出或装入之后都要对页表中的相应表目作修改。这称之为页面调度。如果页面调度不合理,导致同一内容反复调出调入,称为“抖动”。
常见的页面调度算法有:
与页式存储管理相似。分段的基本思想是把用户作业按逻辑意义上有完整意义的段来划分,并以段为单位作为内外存交换的空间尺度。
分段系统中,允许程序(作业)占据内存中许多分离的分区。没个分区存储一个程序分段。分段系统中虚地址是一个有序对(段号,位移)。地址转换方式同页内存储管理方式相似。
是段式和页式两种管理方法的结合。根据程序模块分段,段内再分页,内存被划分成定长的页。虚地址形式为(段号、页号、页内位移)。
段页式虚拟存储管理结合了段式和页式的优点,但增加了设置表格(段表、页表)和查表等开销,段页式虚拟存储器一般只在大型计算机系统中使用。
主要任务之一是控制设备和内存或CPU之间的数据传送。选择和衡量控制方式的原则如下:
常用的数据传送方式主要有如下几种:
采用假脱机技术,可以将低速的独占设备改造成一种可独占的设备,而且一台物理设备可以对应若干台虚拟的同类设备。假脱机(SPOOLING)的意思是外部设备同时联机操作,又称为假脱机输入/输出操作,采用一组程序或进程模拟一台输入/输出设备。
SPOOLING技术必须有高速、大容量并且可随机存取的外存(如磁盘或磁鼓)支持。例如现在电脑中的多窗口技术。
操作系统对计算机的管理包括两个方面:硬件资源和软件资源。硬件资源的管理包括CPU的管理、存储器的管理、设备管理等。主要解决硬件资源的有效和合理利用问题。
软件资源包括各种系统程序、各种应用程序、各种用户程序,也包括大量的文档材料、库函数等。每一种软件资源本身都是具有一定逻辑意义的相关信息的集合,在操作系统中它们以文件形式存储。
文件系统是操作系统中组织、存取和保护数据的一个重要部分。
文件管理的功能包括:建立、修改、删除文件;按文件名访问文件;决定文件信息存放的位置、存放形式及存放权限;管理文件件的联系及提供对文档的共享、保护、保密等。允许多个用户协同工作又不引起混乱。文件的共享是指一个文件可以让多个用户共同使用,他可以减少用户的重复性劳动,节省文件的存储空间,减少输入/输出文件的次数等。文件的保护主要是为防止由于错误操作而对文件造成的破坏。文件的保密是为了防止未经授权的用户对文件进行访问。
文档的保护、保密实际上是用户对文件的存取权限控制问题。一般为文件的存取设置两级控制:第1级是访问者的识别,即规定哪些人可以访问;第2级是存取权限的识别,即有权参与访问者可对文件执行何种操作。
指文件的组织形式。一般可分文两种:无结构的字符流文件和有结构的记录文件。记录文件由记录组成,即文件内的信息划分成多个记录,以记录为单位组织和使用信息。
记录文件有顺序文件、索引顺序文件、索引文件和直接文件。
指的是文件在存储设备上的存储方法。文件的存储设备通常划分为大小相同的物理块,物理块是分配和传输信息的基本单位。文件的物理结构涉及文件存储设备的组块策略和文件分配策略,决定文件信息在存储设备上的存储位置。常用的文件分配策略有:
文件存储设备的管理实质上是对空闲块的组织和管理问题。它包括空闲块的组织,空闲块的分配与空闲块的回收等问题,空闲块管理方法如下:
在树形目录结构中,树的根节点为根目录,数据文件作为树叶,其他所有目录均作为树的结点。
根目录隐含在磁盘的一个分区中,根目录在最顶层,它包含的子目录是一级子目录,每一个一级子目录又可以包含二级子目录等,这样的目录结构称为目录树。
当前盘和当前目录是系统默认的操作对象。如果用户没有指明操作对象,那么系统就将用户命令指向当前盘和当前目录。
路径是指从根目录或者当前目录开始到访问对象(目录或文件),在目录树中路径的所有目录的序列。在树形目录结构中,从根目录到任何数据文件之间,只有一条唯一的通路,从树根开始,把全部目录文件名与数据文件名,依次用“/”(UNIX/Linux系统)或“\”(Windows系统)连接起来,构成该数据文件的路径名,且每个数据文件的路径名是唯一的。
从树根开始的路径为绝对路径。从当前目录开始,在逐级通过中间的目录文件,最后到达所要访问的数据文件。
绝对路径给出文件或目录位置的完全描述,通常由层级结构的顶端开始(根目录),通常第一个字符是“/”(UNIX/Linux系统)或盘符(Windows系统)。相对路径通常是由目录结构中的当前位置开始,一般都比绝对路径要短。
父目录是指当前路径的上一层目录。每个目录都有代表当前目录的“.”文件和代表当前目录父目录的“..”文件,相对路径名一般就是从“..”开始的。
从用户的角度看,作业是系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和。过程中的每一个步骤,成为作业步,作业步的顺序执行即完成了一个作业。
从系统的角度看,作业则是一个比程序更广的概念。它由程序、数据和作业说明书组成。系统通过作业说明书控制文件形式的程序和数据,使之执行和操作。而且,在批处理系统中,作业是占据内存的基本单位。
用户的作业可以通过直接的方式,由用户自己按照作业步骤顺序操作;也可以通过间接的方式,由用户率先编写的作业步依次执行的说明,一次交给操作系统,由系统按照说明依次处理。前者称为联机方式,后者称为脱机方式。
一个作业从交给计算机系统到执行结束退出系统,一般都要经历提交、后后备、执行和完成四个状态。
也称用户界面,其含义有两种,一种是指用户与操作系统交互的途径和通道,即操作系统的接口;另一种是指这种交互环境的控制方式,即操作环境。
通常有多个分类标准。如按数据模型分类、按用户数分类、按数据库分布站点分类等。我们需要了解的是按数据模型分类。
当前,主流数据模型为关系数据模型。常见的DBMS按数据模型划分,包括:关系型DBMS、文档型DBMS、键值型DBMS、对象型DBMS等。
数据库系统划分为三个抽象级:用户级、概念级、物理级。
三级模式为内模式、概念模式、内模式。
内模式、模式和外模式之间的关系如下:
指数据库独立性和逻辑独立性。三个抽象级间通过两级映射(外模式——模式映射,模式——内模式映射)进行相互转换,值得数据库的三级形成一个统一的整体。
逻辑独立性要比物理独立性更难实现。
主要有两大类,分别是概念数据模型(实体-联系模型)和基本数据模型(结构数据模型)
概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库设计。概念模型主要用实体——联系方法表示,所以也称E-R模型。
基本数据模型是按照计算机系统的观点来对数据和信息建模,主要用于DBMS的实现。基本数据模型是数据库系统的核心和基础。基本数据模型通常由数据结构、数据操作和完整性约束三部分组成。其中数据结构是对系统静态特性的描述,数据操作是对系统动态特性的描述,完整性约束是一组完整性规则的集合。
常用的基本数据模型有层级模型、网状模型、关系模型和面向对象模型。
层次模型用树形结构表示实体类型及实体间的联系。层次模型的优点是记录之间的联系通过指针来实现,查询效率较高。层次模型的缺点是只能表示1:n联系,虽然有多种辅助手段实现m:n联系,但比较复杂,用户不易掌握。由于层次顺序的严格和复杂,导致数据的查询和更新操作很复杂,应用程序的编写也比较复杂。
网状模型是用有向图表示实体类型和实体间的联系。网状模型的优点是记录之间的联系通过指针实现,m:n联系也容易实现,查询效率高。其缺点是编写应用程序的过程比较复杂,程序变必须数据数据库的逻辑结构。
关系模型用表格结构表达实体集,用外键表示实体间的联系。其优点有:
关系代数的基本运算主要有并、交、差、笛卡尔积、选择、投影、连接和除法运算。
关系模型满足的确定约束条件为范式,根据满足约束条件的级别不同,范式由低到高分为1NF(第一范式)、2NF(第二范式)、3NF(第三范式)、BCNF(BC范式)、4NF(第四范式)等。不同级别范式性质不同。
把一个低一级的关系模型分解为高一级关系模型的过程,称为关系模型的规范化。关系模型分解必须遵守两个准则。
规范化的基本思想是逐步消除不合适的函数依赖,使数据库中的各个关系模型达到某种程度的分离。规范化解决的主要是单个实体的质量问题,是对于问题域中原始数据展现的正规化处理。
规范化理论给出了判断关系模型优劣的理论标准,帮助预测模型可能出现的问题,是数据库逻辑设计的指南和工具。具体有:
就像是自变量x确定以后,相应的函数值f(x)也就唯一确定了一样,函数依赖就是衡量和调整数据规范化的最基础的理论依据。
关系,中的一个属性或一组属性,如果给定给一个则唯一确定中的一个元组,也就是函数完全依赖于,就称为的码。一个关系可能有多个码,选中其中一个作为主码。
包含在任一码中的属性称为主属性,不包含在任何码中的属性称为非主属性。
关系R中的属性或属性组X不是R的码,但X是另外一个关系模型的码,称X是R的外码。
主码和外码就是数据库中的主键和外键。
1NF是最低的规范化要求。如果关系R中所有属性的值域都是简单域,其元素(即属性)不可再分,是属性项而不是属性组,那么关系模型R是第一范式的,记作。
这一限制是关系的基本性质,所以任何关系都必须满足第一范式。第一范式是实际数据库涉及中必须先达到的,通常称为数据元素的结构化。
满足第一范式的关系模型会有许多重复值,并且增加了修改其数据时引起疏漏的可能性。为了消除这种数据冗余和避免更新数据的遗漏,需要更加规范的2NF。
如果一个关系R属于1NF,且所有的非主属性都完全依赖于主属性,则称之为第二范式,记作。
如果一个关系R属于2NF,且每个非主属性不传递依赖于主属性,这种关系是3NF,记作。
一般满足3NF的关系模型已经消除冗余和各种异常现象,获得比较满意的结果,但无论是2NF还是3NF都没有涉及主属性间的函数依赖,所以有时仍会引起一些问题。由此引入BC范式。通常认为是第三范式的改进。
定义:如果关系模型,且R中的每一个函数依赖关系中的决定因素都包含码,则R是满足BC范式的关系,记作。
当一个关系模型,则在函数依赖范畴内,救认为已彻底实现了分离,消除了插入、删除的异常。
结合1NF、2NF和3NF、BCNF的内涵可概括如下:
数据库中的数据规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O次数减少,同时加快了增删改查的速度,但是对完全规范的数据库查询,通常需要更多的连接操作,从而影响查询速度。因此,有时为了提高某些查询或应用的性能而破坏规范规则,即反规范化(非规范化处理)。常见的反规范化技术包括:
数据库设计的过程是将数据库系统与现实世界密切的、有机的、协调一致的结合起来的过程。数据库的设计质量与设计者的知识、经验和水平密切相关。
以数据库为基础的数据库应用系统与其他计算机应用系统相比往往具有数据量庞大、数据保存时间长、数据关联复杂、用户要求多样化等特点。
数据库设计中面临的主要困难和问题有:
目前已有的数据库设计方法可分为四类,即直观设计法、规范设计法、计算机辅助设计法和自动化设计法。直观设计法又称单步逻辑设计法,它依赖于设计者的知识、经验和技巧,缺乏工程规范的支持和科学依据,设计质量也不稳定,因此越来越不适应信息管理系统发展的需求。因此,将数据库设计规范分为需求分析、概念结构分析、逻辑结构设计和物理结构设计4个阶段。
基于3NF的数据库设计方法基本思想是在需求分析的基础上,识别并确认数据库模式中的全部属性和属性间的依赖,将它们组织成一个单一的关系模型,然后再分析模式中不符合3NF的约束条件,用投影和连接的办法将其分解,使其达到3NF条件。
分步设计法遵循自顶向下、逐步求精的原则,将数据库设计过程分解为若干相互独立又相互依存的阶段,每一阶段采用不同的技术与工具,解决不同的问题,从而将问题局部化,减少了局部问题对整体设计的影响。
在分步设计法中,通常将数据库的设计分为需求分析、概念结构设计、逻辑结构设计和数据库物理设计4个阶段。
指收集和分析用户对系统的信息需求和处理需求,得到设计系统所必需的需求信息,建立系统说明文档。其目标是通过检查研究,了解用户的数据要求和处理要求,并按一定格式整理成需求说明书。需求说明书是需求分析阶段的成果,也是今后设计依据,它包括数据库所涉及的数据、数据的特征、使用的频率和数据量的估计。这些关于数据的数据称为元数据。在设计大型数据库时,这些数据通常由数据字典来管理。
是数据库设计的第二阶段,目标是对需求说明书提供的所有数据和处理要求进行抽象和综合处理,按一定的方法构造反映用户环境的数据及其相互联系的概念模型,即用户的数据模型或企业数据模型。这个数据模型与DBMS无关。
设计目标是把上一阶段得到的与DBMS无关的概念数据模型转换成等价的,并为某个特定的DBMS所接受的逻辑模型所表示的概念模式,同时将概念设计阶段得到的应用视图转换成外部模式,即特定DBMS下的应用视图。该阶段的结果是DDL脚本。
把逻辑设计阶段得到的满足用户需求的已确定的逻辑模型在物理上加以实现,主要内容是根据DBMS提供的各种手段,设计数据库的存储形式和存取路径,即设计数据库的内模式或存储模式。
数据库设计的基本过程和任何复杂系统开发一样,在每一阶段设计基本完成后,都要进行认真的检查,看是否满足应用需求,是否符合前面已执行步骤的要求和满足后续步骤的需要,并分析设计结果的合理性。在每一步设计中,都可能发现前面步骤的遗漏或处理不当之处,此时,往往需要返回去重新处理并修改设计和有关文档。所以,数据库设计过程通常是一个反复修改,反复设计的的迭代过程。
需求分析是数据库设计过程中的第一步,是整个数据库设计的依据和基础。目标是通过对单位的信息需求和处理要求的调查分析得到设计数据库所需的数据集及其相互联系,形成需求说明书,作为后面各设计阶段的基础。因此,这一阶段的任务是:
该阶段所涉及的信息不依赖于任何实际实现时的环境,即计算机的硬件和软件系统。目标是产生一个用户易于理解的,反应系统信息需求的整体数据库概念结构。任务是,在需求分析中产生的需求说明书的基础上按照一定的方法抽象成满足应用需求的用户的信息结构,即通常所称的概念模型。概念结构的设计过程就是正确选择设计策略、设计方法和概念数据模型并加以实施的过程。
作用是:提供能够识别和理解系统要求的框架;为数据库提供一个说明性结构,作为设计数据库逻辑结构,即逻辑模型的基础。
设计策略主要有自底向上、自顶向下、由里向外和混合策略。在具体实现设计目标时有两种极端的策略或方案,一是建立一个覆盖整个单位所有功能域的全局数据库,称之为全局方案或全局策略;另一种则是对每一个应用都建立一个单独的数据库,称为应用方案或应用策略。
在视图分析法中,局部视图设计的第一步是确定其所属的范围,即它所对应的用户组,然后对每个用户组建立一个仅由实体、联系及他们的标识码组成的局部信息结构(局部数据模式)框架,最后再加入有关的描述信息,形成完整的局部视图(局部数据模式)。这样做的目的是为了集中精力处理好用户数据需求的主要方面,避免因无关紧要的描述细节而影响局部信息结构的正确性。整个过程可分为4个步骤:确定局部视图的范围;识别实体及其标识;确定实体间的联系;分配实体及联系的属性。
就是要将反映各用户组数据的局部数据模式综合成单位中某个确定范围内的单一数据视图,即全局数据模式,又称模式汇总。当所有局部视图设计完毕,就可开始试图集成,集成过程中会发生一些冲突,冲突的表现和处理策略如下:
实体变换为属性时通常需要满足一些特定条件,例如,该实体工厂只含有一个与同名属性具有共同特征的属性,且一定存在一个与该实体存在联系的另外的实体。
基本E-R模型主要包含实体和联系两个抽象概念,实体和联系本身还可能附有若干属性,其转换的基本原则是,实体和联系分别转换成关系,属性这转换成相应关系的属性。
优化的内容是改善数据库的性能和节省存储空间两个方面。
数据库在实际的物理设备上的存储结构和存取方法称为数据库的物理结构。数据库物理设计是利用已确定的逻辑结构及DBMS提供的方法、技术,以较优的存储结构、数据存取路径、合理的数据存储位置及存储分配,设计出一个高效的、可实现的物理数据库结构。数据库的物理设计完全依赖于给定的硬件环境和数据库产品。
为设计出一个较好的存储模式,设计者必须了解一下几个方面的问题,做到心中有数。
数据库系统运行的基本工作单位是事务。事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,要么全做,要么全不做。数据库具有以下特性:
数据库事务的使用方式,这里就不写了。
在多用户共享系统中,许多事务是可能同时对同一数据进行操作,称为“并发操作”。
数据库并发操作带来的问题有:丢失更新问题、不一致分析问题(读过时的数据)、依赖于未提交更新的问题(读了“脏”数据)。
处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X封锁)和共享型封锁(S封锁),分别介绍如下:
在多个事务并发执行的系统中,主要采取封锁协议来进行处理。
下面讨论封锁的粒度。所谓封锁的粒度即是被封锁数据目标的大小。在关系数据库中,封锁粒度有属性值、属性值集、元组、关系、某索引项(或整个索引)、整个关系数据库、物理页(块)等几种。
封锁粒度小则并发性高,但开销大;封锁粒度大则并发性低,但开销小。
采用封锁的方法会带来死锁问题。
数据库的故障可以用事务的故障来表示,主要分为四类:
在数据库系统中,恢复的基本含义就是恢复数据库本身。也就是说,在发生某种故障使数据库当前的状态已经不再正确时,把数据库恢复到已知为正确的某一状态。目前数据库中最常用的恢复方式是转储和登记日志文件。
DBA要做的基本操作是:
备份和恢复计划的制定要遵循以下两个原则:
数据库备份按照不同方式可分为多种,这里按备份内容可以分为物理备份和逻辑备份两类。
物理备份是在操作系统层面上对数据库的数据文件进行备份,物理备份分为冷备份和热备份两种。冷备份是将数据库正常关闭,在停止状态下利用操作系统的copy、cp、tar、cpio等命令将数据库的文件全部备份下来,当数据库发生故障时,将数据文件复制回来,进行恢复。热备份也分为两种,一种是不关闭数据库,将数据库中需要备份的数据文件依次置于备份状态,相对保持静止,然后再利用操作系统的copy、cp、tar、cpio等命令将数据库的文件备份下来,备份完毕后再将数据文件恢复为正常状态,当数据库发生故障时,恢复方法同冷备份一样。热备份的另外一种方式是利用备份软件在数据库正常运行的情况下,将数据库中的数据文件备份出来。
为了提高物理备份的效率,通常将完全、增量、累积三种备份方式相结合。完全备份是将数据库中的内容全部备份,作为增量、累积的基础;增量备份是只备份上次完全、增量或累积备份以来修改的数据;累积备份是备份自上次完全或累计备份以来修改过的数据。一个备份周期通常由一个完全备份和多个增量、累积备份组成。由于增量或累积备份导出的数据少,所以其导出的文件较小,所需要的时间较少。利用一个完全备份和多个增量、累积备份恢复数据库的步骤如下:
逻辑备份是指利用各数据库系统自带的工具软件备份和恢复数据库的内容。
是相对于集中式数据库系统而言的,是将数据库技术和网络技术向结合的产物。分布式数据库DDB比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力,称为场地自治,它可以执行局部应用,同时,每个结点也能通过网络通信子系统执行全局应用。负责分布式数据库的建立、查询、更新、复制、管理和维护的软件,称为分布式数据库管理系统DDBMS。分布式数据库管理系统保证分布式数据库中数据的物理分布对用户的透明性。一个计算机网络组成的计算机系统,在配置了分布式数据库管理系统,并在其上建立了分布式数据库和相应的应用程序后,救称其为分布式数据库系统DDBS。
与集中式数据库相比,分布式数据库具有下列优点:
同样同集中式数据库相比,分布式数据库也有集中式数据库所没有的问题。首先,异构数据库的集成问题是一项比较复杂的技术问题,目前还很难用一个通用的分布式数据库管理系统来解决这一问题。其次,如果数据库设计的不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。
一个分布式数据库系统,对于用户来说,应当看上去想一个非分布式系统。
模式从整体上可以分为两大部分:下半部分是集中式数据库的模式结构,代表了各局部场地上局部数据库系统的基本结构;上半部分是分布式数据库系统增加的模式级别。
在六层模式中,全局概念模式、分片模式和分布模式是与场地特征无关的,是全局的,因此他们不依赖于局部DBMS的数据模型。在低层次上,需要把物理映像映射成由局部DBMS支持的数据模型。这种映像由局部映射模式完成。
这种分层的模式结构为理解DDB提供了一种通用的概念结构。它有三个显著的特征:
相似点:它们都是通过网络连接各个数据处理结点的,整个网络中的所有结点构成一个逻辑上统一的整体,用户可以对各个结点上的数据进行透明存取等。区别有以下几个方面:
分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。
任务,首先就是把用户与分布式数据库隔离开来,使其对用户而言,整个分布式数据库就像是一个传统的集中式数据库。换句话说,一个分布式数据库管理系统和用户之间的接口,在逻辑上与集中式数据库管理系统是一致的,但是考虑到分布式数据库的特点,其物理实现上又与集中式数据库不同。
DDBMS由4部分组成:
DDBMS功能的分割和重复及不同的配置策略就导致了各种架构。
局部DBMS的一个重要性质是:局部DBMS是同构的还是异构的。同构和异构的级别可以有三级:硬件、操作系统和局部DBMS。
异构型DDBMS的设计和实现比同构性DDBMS更加复杂,他要解决不同的DBMS之间及不同的数据模型之间的转换。
数据仓库是一个面向主题的、集成的、相对稳定的、且随时间变化的数据集合,用于支持管理决策。
操作型数据库的数据组织面向事务处理任务(面向应用),各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面。一个主题通常与多个操作型信息系统相关。
最重要特性。面向事务处理的操作型数据库通常与某些特定的应用有关,数据库之间相互图例,而且往往是异构的。而数据仓库中的数据是咋对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
操作型数据库中的数据通常实时更新,数据根据需要及时发生变化。数据仓库的数据主要供企业决策分析,所涉及到的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但是修改和删除操作很少,通常只需要定期的加载、更新。
操作型数据库主要关心当前某一个时间段内的数据,而数据仓库内的数据通常包含历史信息,系统记录了企业从过去某一时刻点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
数据仓库反映历史变化的属性主要表现在:
数据仓库与传统数据库的比较
| 比较项目 | 传统数据库 | 数据仓库 |
|---|---|---|
| 数据内容 | 当前值 | 历史的、归档的、归纳的、计算的数据(处理过的) |
| 数据目标 | 面向业务操作程序、重复操作 | 面向主体域,分析应用 |
| 数据特性 | 动态变化、更新 | 静态,不能直接更新,只能定时添加、更新 |
| 数据结构 | 高度结构化,复杂,适合操作计算 | 简单、适合分析 |
| 使用频率 | 高 | 低 |
| 数据访问量 | 每个事务一般只访问少量记录 | 每个事务一般访问大量记录 |
| 对响应时间的要求 | 计时单位小,如秒 | 计时单位相对较大,除了秒,还有分钟、小时 |
数据仓库系统要包含数据源、数据准备区、数据仓库数据库、数据集市/知识挖掘库和各种管理工具和应用工具。数据仓库建立之后,首先要从数据源中抽取相关的数据到数据准备去,在数据准备去中经过净化处理后再加载到数据仓库数据库,最后根据用户的需求将数据导入数据集市和知识挖掘库中。当用户使用数据仓库时,可以利用包括OLAP在内的多种数据仓库应用工具向数据集市/知识挖掘库或数据仓库进行决策查询分析或知识挖掘。数据仓库的创建、应用可以利用各种数据仓库管理工具辅助完成。
由数据仓库基本功能层、数据仓库管理层和数据仓库环境支持层组成。
数据仓库的建立过程分为:需求分析、概念模型设计、逻辑模型设计、物理模型设计和数据仓库生成。
从整体的角度看,数据仓库的实现方法主要有自顶向下法、自底向上法和联合方法。
在该方法中,首先应找出数据仓库解决方案所要满足的商业需求,把商业需求视为实际数据仓库的首要任务。自顶向下法的优缺点如下表
| 优点 | 缺点 |
|---|---|
| 商业需求清楚的描绘出数据仓库实现的范围,因此是实现数据仓库解决方案的有效方法 | 有时会超出当前的业务范围 |
| 技术取决于商业 | 技术可以促进商业和竞争优势,但开始时对商业的促进是不明显的 |
| 易于向决策者提供数据仓库的收益情况 | 一旦数据仓库已经实现,可能就不再要求更公告的目标 |
该方法一般用于以下情况:
一般从实现和基于技术的原型入手。先选择一个特定的、众所周知的商业问题的子集,再为该子集制定方案。实现自底向上法一般是比较快的。优缺点如下表:
| 优点 | 缺点 |
|---|---|
| 实现的需求和开始时的需求远远超过自顶向下分析和长期考虑的范围 | 最初方案实现以后,最好回顾一下方案是如何服务于整个企业的。 |
| 在企业对数据仓库了解的初期,该方法使企业无需巨大投入就可见到效益 | 单个自底向上工程项目的失败可能推迟潜在技术的实现 |
| 少数人集中工作在一个部门范围,可以加速实现决策过程 | 早起的小组应不断发展为较大的小组,以扩充最初方案的覆盖范围。 |
自底向上法一般用于以下情况:
在以上两种方法的联合方法中,企业在保持自底向上的快速实现和基于应用的同时,还可以利用自顶向下方法的规划和决策性质。这种方法依赖于以下两个因素:
联合方法具有以上两种方法的优点,但是难以作为一个项目来管理,该方法一般有用于:
目前的数据库系统可以高效的实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。
三种基础技术分别为:海量数据搜集、强大的多处理器计算机和数据挖掘算法。
从技术角度来看,数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们实现不知道的、但又潜在有用的信息和知识的过程。这个定义包括好几层含义:数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用;并不要求发现放之四海皆准的知识,仅支持特定的发现问题。
从商业角度来看,数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库中的大量业务数据进行抽取、转换、分析和其他模型化处理,从中提取辅助商业决策的关键性数据。
简而言之,数据挖掘其实是一种深层次的数据分析方法。按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。
数据挖掘与传统的数据分析(如查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先知、有效和可实用三个特征。
数据挖掘技术从一开始就是面向应用的。它不仅是面向特定数据库的简单检索查询调用,而且要对这些数据进行微视、中观乃至宏观的统计、分析、综合和推理,以指导实际问题的求解,企图发现事件间的相互关联,甚至利用已有的数据对未来的活动进行预测。
数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识。主要有以下五类功能。
关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐含的关联网。
数据库中的记录可被划分为一系列有意义的子集,即聚类。聚类技术主要包含传统的模式识别方法和数学分类学。
是对某类对象的内涵进行描述,并概括这类对象的有关特征。分为特征性描述和区别性描述。前者描述某类对象的共同特征,后者描述不同对象之间的区别。生成一个对象的特征性描述只涉及该类对象中的所有对象的共性。生成区别性描述的方法很多,如决策树方法、遗传算法等。
基本方法是:寻找观测结果与参照值之间有意义的差别。
主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。重点在于快速发现那些有实用价值的关联发生的事件。主要依据是事件的发生概率和条件概率应该符合一定的统计意义。
主要用于发现一定时间间隔内接连发生的事件。这些事件构成一个序列,发现的序列应该具有普遍意义,其依据除了统计上的概率之外,还要加上事件的约束。
通过分析具有类别的样本的特点,得到决定样本属于各种类别的规则或方法。利用这些规则和方法对未知类别的样本分类时应该具有一定的准确度。其主要方法有基于统计学的贝叶斯方法、神经网络方法、决策树方法和支持向量机。
是根据物以类聚的原理,将本身没有类别的样本聚集成不同的组,并且对这样的组进行描述的过程。其主要依据是聚集到同一个组的样本应该彼此相似,而属于不同组的样本应该足够不相似。
与分类类似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程,而分类知识用于判别样本所属的离散类别而已。预测常用的技术是回归分析。
分析的是随时间变化的时间序列,目的是预测未来发展趋势,或者寻找相似发展模式或者是发现周期性发展规律。
数据挖掘的大致流程如下:
在开始数据挖掘之前,需要先弄清楚背景知识,即决定到底要干什么
将要挖掘的数据收集到一个数据库中,而不是采用原有的数据库或数据仓库。这是因为大部分情况下需要修改要挖掘的数据,而且还会遇到采用外部数据的情况;另外,数据挖掘还要对数据进行各种纷繁复杂的统计分析,而数据仓库可能不支持这些数据结构。
是通常所进行的对数据深入调查的过程,从数据集中找出规律和趋势,用聚类分析区分类别,最终要达到的目的就是搞清楚多因素相互影响的、十分复杂的关系、发现因素之间的相关性。
对分析的数据进行进一步的明确化和量化。针对问题的需求对数据进行增删,按照对整个数据挖掘的过程的新认识组合或生成一个新的变量,以体现对状态的有效描述。
在问题进一步明确,数据结构和内容进一步调整的基础上,救可以建立形成知识的模型。这一步是数据挖掘的核心环节,一般运用神经网络、决策树、数理统计、时间序列分析等方法来建立模型。
上面得到的数据模型,有可能是没有实际含义或者没有使用价值的,也有可能是其不能准确反映数据的真实意义,甚至在某些情况下是与事实相反的,因此需要评估,确定哪些是有效的、有用的模式。评估的一个办法是直接使用原先建立的挖掘数据库中的数据来进行检验,另一种办法是另找一批数据并对其进行检验,在一中办法是在实际运行的环境中取出新鲜数据进行检验。
数据挖掘过程的分布实现,不同的步骤需要不同专长的人员,他们大致可以分为三类;
由上可见,数据挖掘是一个多种专家合作的过程,也是一个在资金上和技术上高投入的过程,这一过程要反复进行,在反复过程中,不断地趋近事物的本质,不断地优选问题的解决方案。
即Not Only SQL,不仅仅是SQL。NOSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具有关系型数据库无法比拟的性能优势。
与关系型数据库相比,NOSQL数据库具有以下几个优点:
去掉关系数据库的关系型特征。数据之间无关系,这样就非常容易扩展,在架构的层面上带来了可扩展的能力。
具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关特性,数据库的结构简单。一般MySQL使用Query Cache,每次表一更新Cache就失效,它是一种大粒度的Cache,在针对Web2.0的交互频繁的应用,Cache性能不高。而NOSQL的Cache是记录级别的,是一种细粒度的Cache,所以NOSQL在这个层面上来讲性能就好很多。
无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
在不太影响性能的星空,就可以方便的实现高可用的架构,通过复制模型也能实现高可用
当然,NOSQL也存在很多缺点,例如:并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需要时间来检验,缺乏相关专家技术的支持等。
指无法在一定时间范围内用常规软件工具进行捕捉、管理、和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流动优化能力的海量、高增长和多样化的信息资产。
业界通常用4个V(即Volume、Variety、Value、Velocity)来概括大数据的特征。
| 比较维度 | 传统数据 | 大数据 |
|---|---|---|
| 数据量 | GB或TB级 | PB级或以上 |
| 结构化程度 | 结构化或半结构化数据 | 所有类型的数据 |
| 数据分析需求 | 现有数据的分析与检测 | 深度分析(关联分析、回归分析) |
| 硬件平台 | 高端服务器 | 集群平台 |
一般包括:大数据采集、大数据预处理、大数据存储及管理、大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大数据应用、大数据安全等)。
大数据可以在各行各业得到应用。
计算机网络是指由通信线路互相连接的许多独立自足工作的计算机构成的资源共享集合体,它是计算机技术和通信技术相结合的产物。
网络架构是指计算机网络的隔层及其协议的集合。计算机之间要交换数据,就必须遵守一些事先约定好的规则,用于规定信息的格式及如何发送和接受信息的一套规则就称为网络协议。
计算机网络采用分层设计方法,按照信息的传输过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。
开放系统互联参考模型OSI/RM,构造了由下到上的七层模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
传输控制协议/网际协议。
应用程序通过本层协议利用网络完成数据交互的任务。主要协议如下:
互联网协议的第6版
一个32位的IPv4地址以8个位为一段分成4段,每段之间用点“.”分开。而IPv6的地址的128位是以16位为一段,共分为8段,每段的16位转换为一个4位的16禁止数字,每段之间使用冒号“:”分开。例如
2001:0da8:d001:0001:0000:0000:0000:0001
在IPv6中,常见到使用包含一长串0的地址,为了方便书写,对于每一段中的前导0可以进行省略,如前面的手续按格式地址经过一次压缩,可以得到:
2001:da8:d001:1:0:0:0:1
对于连续2段以上都为0的字段可以使用“::”(两个冒号)来表示,这样再次压缩,变成:
2001:da8:d001:1::1
注意,每个IPv6地址只允许有一个“::”
这种表示法的第一部分使用十六进制表示,而IPv4部分采用10进制,这是过渡机制所采用的IPv6地址特有的表示法,如:
fe80:200:5efe:58.20.27.60
IPv4有单播、广播和组播地址类型,在IPv6里面,广播已经不再使用了,这对网络管理员来说,应该是个好消息,因为在传统的IP网络中,出现的很多问题都是由于广播引起的。IPv6仍有3种地址类型,分别是单播、多播(也成为组播)、泛播(也称作任意播)。
局域网LAN是将分散在有限地址范围内的多台计算机通过传输媒体连接起来的通信网络,通过功能完善的网络软件,实现计算机之间的相互通信和资源共享。广域网WAN是在传输距离较长的前提下所发展的相关技术的集合,用于将广大区域范围内的各种计算机设备和通信设备互联在一起,组成一个资源共享的通信网络。
局域网一般具有如下特点:
构成局域网的网络拓扑结构主要有星形结构、总线结构、环形结构和网状结构。
就像一个蜘蛛网,中间是一个枢纽(网络交换设备)。所有的结点都连接到这个枢纽上,最终组成一个星形的拓扑结构的网络。目前一般办公室的局域网便是该结构。
是由一条共享的通信线路将所有结点连接在一起。这条共享的通信线路可以是一根同轴电缆或其他介质。
与总线结构类似,也是由一条共享的通信线路将所有节点连接在一起,不同的是,环形结构中的共享线路是闭合的,即它将所有节点排列成一个环,每个节点只与其他两个邻居节点直接相连。若一个节点想要给另一个节点发送消息,消息报文必须经过它们之间的所有节点。
网状结构方式的网络就是任何节点彼此之间都会由一根物理通信线路相连,任何节点出现故障都不会影响到其他节点。采用这种拓扑方式的网络的布线比较复杂,而且网络建设的成本也很高,控制方式也很复杂。在实际应用中,一般很少见到这种网络。
无线局域网WLAN主要运用射频RF技术取代原来局域网系统中必不可少的传输介质(例如:同轴电缆、双绞线)来完成数据的传送人物,有了WLAN,用户不必因使用有线传输介质而破坏原有的工作环境,可根据需要调整网络节点的位置。
无线局域网可以分为两大类,分别是有接入点模式(基础设施网络)和无接入点模式(Ad hoc网络)。
定义了媒体访问控制层MAC层和物理层。物理层定义了工作在2.4GHz的ISM(工业、科学和医学)频段上的扩频通信方式,总数据传输速率设计为2Mbps。而MAC层采取了载波侦听多路访问/冲突避免协议CSMA/CA,级采用主动避免碰撞而非被动侦测的方式来解决冲突问题。
IEEE 802.11的业务主要限于数据存取,在速率和传输距离上都不能满足人们的需要,因此,IEEE在制定更高速度的标准时,救产生了802.11a和802.11b两个分支,后来又陆续推出了802.11g、802.11n、802.11ac的标准,主要是以物理层的不同作为区分,它们的区别直接表现在工作频段和数据传输率、最大传输距离等指标上。而工作在MAC层的标准又分为802.11h、802.11e和802.11i。802.11h是802.11a的扩展,目的是兼容其他5GHz频段的标准;802.11e是IEEE为满足QoS方面的要求而制定的标准,IEEE 802.11i规定使用802.1x认证和密码管理方式。
主流标准包括:WCDMA、CDMA2000和TD-SCDMA。
是第四代移动通信及其技术的简称,是集3G和WLAN与一体并能传输高质量视频图像且图像传输质量与高清晰度电视不相上下的技术产品。
4G标准主要有两大方向,即LTE与WiMAX,而LTE又可进一步分为TD-LTE和FDD-LTE。
主要提供面向通信的服务,支持用户使用计算机进行远距离的信息交换。
目前,接入Internet的主要方式又有PSTN、ISDN、ADSL、FTTx+LAN和HFC接入等五种
是指利用电话线拨号接入Internet,通常计算机需要安装一个Modem调制解调器,将电话线插入到Modem上,在计算机上利用拨号程序输入号码进行接入。PSTN速度较低,一般低于64Kbps。
是在电话网络的技术上构造的纯数字方式的综合业务数字网。
服务端设备和用户端设备之间通过普通的电话线连接,无需对入户线缆进行改造。特点是上行速度和下行速度不一样,并且往往是下行速度大于上行速度。
光纤通信指利用光导纤维传输光波信号的一种通信方法,相对于以电为媒介的通信方式而言,光纤通信的主要优点有传输频带宽、通信容量大、船速损耗小、抗电磁干扰能力强、线径细、重量轻、资源丰富等。
同轴光纤技术HFC是将光线铺设到小区,然后通过光电转换节点,利用有线电视CATV的总线式同轴电缆连接到用户,提供综合电信业务的技术。这种方式充分利用CATV原有的网络,由于其建网快、造价低等特点,逐渐成为最佳的接入方式之一。一般光线干线网采用星形结构,同轴电缆分配网采用树形结构。
网络互连是为了将两个以上具有独立自治能力、同构或异构的计算机网络连接起来,实现数据流通,扩大资源共享的范围,或者容纳更多的用户。
在网络互连时,各节点一般不能简单的直接相连,而是需要通过一个中间设备来实现。
| 互联设备 | 工作层次 | 内容 | 主要功能 |
|---|---|---|---|
| 中继器 | 物理层 | 实现物理层协议转换,在电缆间转换二进制信号 | 对接收信号进行再生和发送,只起到扩展传输距离的作用,对高层协议是透明的,但使用个数有限(例如,在以太网中只能使用4个) |
| 网桥 | 数据链路层 | 实现物理层和数据链路层协议转换 | 根据帧物理地址进行网络之间的信息转发,可缓解网络通信繁忙度,提高效率。只能够连接相同的MAC层的网络。 |
| 路由器 | 网络层 | 实现网络层和以下各层协议转换 | 通过逻辑地址进行网络之间的信息转发,可完成异构网络之间的互联互通,只能连接使用相同网络层协议的子网。 |
| 网关 | 高层(第4~7层) | 提供从最底层到传输层或以上各层的数据转换 | 最复杂的网络互联设备,用于连接网络层以上执行不同协议的子网。 |
| 集线器 | 物理层 | 多端口中继器 | |
| 二层交换机 | 数据链路层 | 是指传统意义上的交换机,多端口网桥 | |
| 三层交换机 | 网络层 | 带路由功能的二层交换机 | |
| 多层交换机 | 高层(第4~7层) | 带协议转换的交换机。 |
在计算机网络中,当用户较多而传输的距离较远时,通常不采用两点固定连接的专用线路,而是采用交换技术,使通信传输线路为各个用户公用,提高传输设备的利用率,降低系统费用。交换技术的分类和主要特点如下:
工作在Internet上的路由器也成为IP网关。
路由器的主要功能就是进行路由选择。当一个网络中的计算机要给另一个网络中的计算机发送分组时,它首先将分组送到同一个网络中用于网络之间连接的路由器,路由器根据目的地址信息,选择合适的路由,将该分组传递到目的网络用于网络之间连接的路由器中,然后通过目的网络中内部使用的路由选择协议,该分组最后被递交给目的计算机。
根据路由选择协议的应用范围,可以将其分为内部网关协议IGP、外部网关协议EGP和核心网关协议GGP三大类。
从路由协议使用的算法来看,所有的路由协议可以分为以下三类:
需求分析包含以下几个方面:
通常从技术可行性、经济可行性、法律可行性和用户使用可行性等方面进行论证。
如果是在现有网络系统的基础上进行升级,那么需要分析现有网络,分析包含以下几个方面:
综合对现有网络系统的调研与分析,并在其基础上进行新的网络规划,能够通过以下措施更有效的保证用户的原始投资:
网络设计的工作是在网络规划的基础上,设计一个能够解决用户问题的方案。在整个设计过程中,首先要确定网络总体目标和设计原则,然后设计网络的逻辑结构,再设计网络的物理结构。
是体现网络设计核心思想的关键阶段,在这一阶段根据需求规范和通信规范,选择一种比较适宜的网络逻辑结构,并基于该逻辑结构实施后续的资源分配规划、安全规划等内容。
在逻辑网络设计阶段,需要描述满足用户需求的网络行为和性能,详细说明数据是如何在网络上传输的,此阶段不涉及网络元素的具体网络位置。
此阶段最后应该得到一份逻辑网络设计文档,输出的内容包括以下几点:
是对逻辑网络设计的物理实现,通过对设备的具体物理分布、运行环境等的确定,确保网络的物理连接符合逻辑连接的要求。在这一阶段,网络设计者需要确定具体的软硬件、连接设备、布线和服务。
输出的内容如下:
三个关键层分别为:核心层、汇聚层和接入层。通常将网络中直接面向用户连接或访问网络的部分称为接入层,将位于接入层和核心层之间的部分称为分布层或汇聚层。
接入层的目的是允许终端用户连接到网络,因此,接入层交换机具有低成本和高端口密度特性。
汇聚层完成网络访问策略控制、数据包处理、过滤、寻址,以及其他数据处理的任务。汇聚层交换机是多台接入层交换机的汇聚点,它必须能够处理来自接入层设备的所有通信量,并提供到核心层的上行链路,因此,汇聚层交换机与接入层交换机比较,需要更高的性能,更少的接口和更高的交换速率。
网络主干部分称为核心层,主要目的在于通过高速转发通信,提供优化、可靠的骨干传输结构,因此,核心层交换机应拥有更高的可靠性、性能和吞吐量。在纯粹的分层设计中,核心层只完成数据交换的特殊任务。在主干网中,考虑到高可用性的需求,通常会使用双星(树)结构,即采用两台相同的交换机,与汇聚层交换机分别连接,并使用链路聚合技术实现双机互联。
是在网络设计的基础上进行设备的购买、安装、调试和系统切换工作。主要包括以下步骤:
是将存储设备通过SCSI(小型计算机系统接口)电缆直接连到服务器,其本身是硬件的堆叠,存储设备依赖于服务器,不带有任何存储操作系统。因此,DAS又称SAL(服务器附加存储)。DAS的适用范围为:
由于DAS直接将存储设备连接到服务器上,这导致它在传输距离、连接数量、传输速率方面都受到限制。因此,当存储容量增加时,DAS方式很难扩展,这对存储容量的升级是一个巨大的瓶颈;另一方面,由于数据库的读取都要通过服务器来处理,必然导致服务器的处理压力增大,数据处理和传输能力将大大降低。此外,当服务器出现宕机等异常状况时,也会波及存储数据,使其无法使用。目前DAS基本被NAS所代替。
采用NAS技术的存储设备不再通过I/O总线附属于某个特定的服务器,而是通过网络接口与网络直接相连,由用户通过网络访问。类似于一个专门的文件服务器。
NAS以数据为中心,将存储设备与服务器分离,其存储设备在功能上完全独立于网络中的主服务器,客户机与存储设备之间的数据访问不再需要文件服务器的敢于,同时它允许客户机与存储设备之间进行直接的数据访问,所以不仅响应速度快,而且数据传输速率也很高。
NAS支持多种TCP/IP协议,主要是NFS(网络文件系统)和CIFS(通用Internet文件系统)来进行文件访问,所以NAS的性能特点是进行小文件级的共享存取。在具体使用时,NAS设备通常配置为文件服务器,通过使用基于Web的管理界面来实现系统资源的配置、用户配置管理和用户访问登录等。
NAS存储支持即插即用,可以在网络的任一位置建立存储。基于Web管理,从而使设备的安装、使用和管理更加容易。NAS可以很经济的解决存储容量不足的问题,但难以获得满意的性能。
是通过专用交换机将磁盘阵列与服务器连接起来的高速专用子网。它没有采用文件共享存取方式,而是采用块(block)级别存储。是通过专用高速网络讲一个或多个网络存储设备和服务器连接起来的专用存储系统,其最大特点是将存储设备从传统的以太网中分离出来,称为独立的存储区域网络。
根据数据传输过程采用的协议,其技术划分为FC SAN和IP SAN。另外,还有一种新兴的IB SAN技术。
ISCSI优势的主要表现在于,首先,建立在SCSI、TCP/IP这样稳定和熟悉的标准上,安装成本和维护成本都很低;其次,ISCSI支持一般的以太网交换机而不是特殊的光纤通道交换机,减少了异构网络和电缆;最后,ISCSI通过IP传输存储命令,因此可以在整个Internet上传输,没有距离限制。
ISCSI缺点在于,存储和网络是同一个物理结构,同时协议本身的开销很大,协议本身需要频繁的将SCSI命令封装到IP包中以及从IP包中将SCSI命令解析出来,这两个因素都造成了贷款的占用和主处理器的负担。
是一种模块化的、灵活性极高的建筑物内或建筑物之间的信息传输通道。
综合布线系统可以分为七个部分:
对计算机评价的主要性能指标如下:
也就是主时钟的脉冲频率,现在还需要内核数。
单位一般用MIPS(百万条指令/秒)和MFLOPS(百万次浮点运算/秒)。MIPS用于描述计算机的定点运算能力;MFLOPS则用来标识计算机的浮点运算能力。
取计算机处理信息时能直接处理的二进制数据的位数,位数越多,精度救越高。参与运算的数据的基本位数通常用基本字长来表示。
内存的容量越大,可存储的数据和程序就越多,从而减少与磁盘信息交换的次数,使运行效率得到提高。
内存完成一次读(取)或写(存)操作所需要的时间称为存储器的存取时间或者访问时间,而连续两次读(或写)所需的最短时间称为存储周期,存储周期越短,表示从内存存取信息的时间越短,系统的性能也就越好。
数据处理速度PDR的计算公式为:。其中:
,
另外还规定,G>20位,H>30位;从主存中去一条指令的时间等于取一个字的时间;指令和操作数都存放在同一个主存,无变址或间址操作;允许有先行或并行取指令功能,此时选用平均取指令时间。
RASIS特性是可靠性(Reliability)、可用性(Availability)、可维护性(Serviceability)、完整性(Integraity)和安全性(Security)五者的统称。
TAT,即从出现故障到该故障得到确认修复前的这段是时间。该指标反映的是服务水平。
因此,衡量数据库管理系统的主要性能指标包括数据库本身和管理系统两部分。
数据库和数据库管理系统的性能指标包括数据库的大小、单个数据库文件的大小、数据库中表的数量、单个表的大小,表中允许的记录(行)数量、单个记录(行)的大小、表上所允许的索引数量、数据库所允许的索引数量、最大并发事务处理能力、负载均衡能力,最大连接数。
最大并发连接数、响应延迟、吞吐量(每秒处理的请求数)、成功请求数、失败请求数、每秒点击次数、每秒成功点击次数、每秒失败点击次数、尝试连接数、用户连接数等。
性能指标计算的主要方法有:定义法、公式法、程序检测法、仪器检测法。定义法主要根据其定义直接获取其理想数据,公式法一般适用于根据基本定义所衍生出的复合性能指标的计算,而程序检测法和仪器检测法则是通过实际的测试来得到其实际值。
公式中,为处理机的工作主频,CPI为每条指令所需的平均时钟周期数,IPC为每个时钟周期平均执行的指令条数。
衡量计算机性能的一个重要指标就是计算峰值或者浮点计算峰值,他是计算机每秒钟能够完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。
理论浮点峰值是该计算机理论上能够达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定。
CPU每个时钟周期执行浮点运算的次数是由处理器中浮点运算单元的个数及每个浮点运算单元在每个时钟周期能处理几条浮点运算决定的。
静态指令使用频度指的是程序中直接统计的计算机速度。动态指令使用频度指的是在程序执行过程中统计的指令速度。
阿姆达尔定律是这样的:系统中对某部件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于这种方式被使用的频率,或所占总执行时间的比例。
阿姆达尔定律定义了采用特定部件所取得的加速比。
加速比反映了使用增强部件之后完成一个任务比不使用增强部件完成同一任务加快了多少。加速比主要取决于两个因素:
由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。通过某种负载分担技术,将外部发来的请求均匀的分配到对称结构中的某一台服务器上,而接收到请求的服务器独立的回应客户的请求。
一般用于提供服务器的整体处理能力,并提高可靠性、可用性和可维护性,最终目的是加快服务器的响应速度,从而提高用户的体验度。
负载均衡从结构上分为本地负载均衡和全域负载均衡,前者是指对本地的服务器群做负载均衡,后者是指对分别放置在不同的地理位置、有不同的网络及服务器群之间做负载均衡。
全域负载均衡具有以下特点:
是对一个系统进行各项检测,并形成一份直观的文档。
把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序。称为基准测试程序。
在测试中,能够反应其性能的主要包括最大并发连接数、响应延迟和吞吐量几个参数。
现在常见的Web服务器性能评估方法有基准性能测试、压力测试和可靠性测试。基准测试即采用前面所提到的各种基准程序对其进行测试;压力测试则是采用一些测试工具来测试Web服务器的一些性能指标,如最大并发连接数,间接测试响应时间,以及每秒可以处理的请求数目。
目标是为了评估系统性能。要监视系统性能,需要收集某个时间段内的3中不同类型的性能数据。
软件生命周期划分为8个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、集成测试、确认测试、使用和维护。
开发过程中,软件要经过需求分析、总体设计、详细设计、编码、调试、集成调试和系统测试阶段才能被准确的实现。而且每个阶段都有回到前一级的反馈线,指的是,在软件开发中当在后续阶段发现缺陷的时候,可以把这个缺陷反馈到上一阶段进行修正。
瀑布模型的一个重要特点是:软件开发的阶段划分是明确的,一个阶段到下一个阶段有明显的界限。在每个阶段结束后,都会有固定的文档或源程序流入下一阶段。在需求分析阶段结束后,需要有明确的描述软件需求的文档;总体设计结束后,需要有描述软件总体结构的文档;详细设计结束后,需要有可以用来编码的详细设计文档;而编码结束后,代码本身被作为文档流到下一阶段。因此也成瀑布模型为面向文档的软件开发模型。
整个瀑布模型在编码与调试阶段转了个弯,形成了一个对称的V字。瀑布V模型同标准瀑布模型一样,在进行完需求分析后就将进入总体设计阶段,但是除总体设计外,需要分析还有一条虚线指向系统测试。这指的是,需求分析的结果将作为系统测试的准则,即需求分析阶段也将产生通软件需求一致的系统测试;同时软件产品是否符合最初的需求也将在系统测试阶段得到验证。以此类推,总体设计对应了集成测试,详细设计对应了单元测试。瀑布V模型不但保持了瀑布模型的阶段式文档驱动的特点,而且更强调了软件产品的验证工作。
首先,在瀑布模型中,需求分析阶段是一切活动的基础,设计、实现和验证活动都是从需求分析的结果到处的。一旦需求分析的结果不完全正确,存在偏差,那么后续的活动只能放大这个偏差。所以瀑布模型后期的维护工作相当繁重,而这些维护工作大多都是修正在需求分析阶段引入的缺陷。
其次,瀑布模型难以适应变化。在瀑布模型中精确地定义了每一个阶段的活动和活动结果,而每一阶段都紧密依赖于上一阶段的结果。如果在软件的后期出现了需求的变化,整个系统又要从头开始。
再次,使用瀑布模型意味着当所有阶段都结束才能最终交付软件产品,所以在提出需求后,需要相当长的一段时间的等待才能够看到最终结果,才能发现软件产品究竟能不能满足客户的需求。
最后,文档驱动型的瀑布模型除了制造出软件产品外还将产生一大堆的文档,大部分的文档对客户没有任何意义,但是完成这些对客户没有意义的文档却需要花费大量的人力。所以瀑布模型也是一种重载模型。
一般情况下,一个演化模型可以看做若干次瀑布模型的迭代,当完成一个瀑布模型后,重新进入下一个迭代周期,软件在这样的迭代过程中得以演化、完善。根据不同的迭代特点,演化模型可以演变为螺旋模型、增量模型和原型法开发。
螺旋模型将瀑布模型和演化模型结合起来,不仅体现了两个模型的优点,而且还强调了其他模型军忽略了的风险分析。螺旋模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段。
螺旋模型的基本做法实在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制。它把软件项目分解成一个个小项目,每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。
螺旋模型特别适用于庞大而复杂、具有高风险的系统。
与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高目标软件的适应能力,为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发风险。
但是,不能说螺旋模型绝对比其他模型优越,事实上,螺旋模型也有其自身的缺点:
对于增量模型,通常有两种策略。一个是增量发布的方法。即首先做好系统的分析和设计工作,然后将系统划分为若干不同的版本,每一个版本都是一个完整的系统,后一版本以前一个版本为基础进行开发,扩充前一版本的功能。在这种策略中,第一版本旺旺是系统的核心功能,可以满足用户最基本的需求,随着增量的发布,系统的功能逐步的丰富、完善起来。用户在很短的时间内救可以得到系统的初始版本并进行试用,试用中的问题可以很快的反馈到后续开发中,从而降低了系统的风险。在应用增量模型中需要注意:
另一种策略是原型法。同增量发布不同,原型法的每一次迭代都经过一个完整的生命周期,当用户需求很不明确或技术架构中存在很多不可知因素的时候,可以采用原型法。在初始的原型中,针对一般性的用户需求进行快速实现,并不考虑算法的合理性或系统的稳定性。这个原型的主要目的是获得精确的用户需求,或验证架构的可用性。一般情况下,会在后面的开发中抛弃这个原型,重新实现完整的系统。
在构件组装模型中,当经过需求分析定义出软件功能后,将对构件的组装结构进行设计,将系统划分成一组构件的集合,明确构建之间的关系。在确定了系统构件后,则将独立完成每一个构件,这是既可以开发软件构件,也可以重用已有的构件,当然也可以购买或选用第三方的构件。构件是独立的、自包容的,因此架构的开发也是独立的,构建之间通过接口相互合作。
优点如下:
缺点如下:
对于纵轴而言,业务建模、需求、分析设计、实施、测试、部署、配置与变更管理、项目管理、环境称为UP的9个核心工作流。可以把这9个核心工作流进行简单的分类以帮助理解,业务建模、需求、分析设计、实施、测试和部署是工程活动,而配置与变更管理、项目管理和环境是管理活动。
在经过这4个里程碑后,即为一个完整的生命周期,开发出一个新的版本。此时可以关闭该产品的开发,也可以迭代进入下一版本。
在UP中,架构设计师除了需要建立系统架构模型外,还需要:
具体的说,架构设计师不但需要设计系统架构,还需要定义设计方法、设计指南、编码指南、评审设计等工作。因此,也有人称UP是有一个以架构为中心的开发模型。
敏捷开发宣言内容:
XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。与其他方法论相比,其最大的不同在于:
XP由价值观、原则、实践和行为四个部分组成。
FDD是一个迭代的开发模型。FDD的每一步都强调质量,不断的交付可运行的软件,并以很小的开发提供精确的项目进度报告和状态信息。
FDD认为,有效的软件开发不可缺少的三个要素是人、过程和技术。软件开发不能没有过程,也不能没有技术,但软件开发中最重要的是人。FDD定义了6种关键的项目角色:
包括:领域对象建模、根据特征进行开发、类的个体所有、组成特征小组、审查、定期构造、配置管理、结果的可见性。
是一个用于开发和维持复杂产品的框架,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周。在Scrum中,使用产品Backlog来管理产品的需求,产品Backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint Backlog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。
主要包括:产品代办事项列表梳理、Sprint计划会议,每日Scrum会议、Sprint评审会议、Sprint回顾会议等五个活动
包括但不限于以下内容:保持产品代办事项列表有序、把看起来不再重要的事项移除或者降级、增加或提升涌现出来的或变得更重要的事项、将事项分解成更小的事项、将事项合并成更大的事项、对事项进行估算。
梳理时会特别关注那些即将被实现的事项。
整个团队都要参加Sprint计划会议。针对排好序的产品代办事项列表,产品负责人和开发团队成员讨论每个事项,并对该事项达成共识,包括根据当前的“完成的定义”,为了完成该事项所需要完成的所有事情。所有的Scrum会议都是限定市场的,推荐的市场是Sprint中的每周对应两小时或者更少。因为会议室定长的,Sprint计划会议的成功十分依赖于产品待办事项列表的质量。
在Scrum中,Sprint计划会议有两部分:
最终产生的待办事项列表就是“Sprint代办事项列表(Sprint Backlog)”
开发团队自组织的。开发团队通过每日Scrum会议来确认他们仍然可以实现Sprint的目标。这个会议每天在同样的时间和同样的地点召开。每一个开发团队成员需要提供一下三点信息:
从上一个每日Scrum到现在,我完成了什么;从现在到下一个每日Scrum,我计划完成什么;有什么阻碍了我的进展。
每日Scrum中可能有简要的问题澄清和回答,但是不应该有任何话题的讨论。通常,许多团队会在每日Scrum之后马上开会处理他们遇到的任何问题。
每日Scrum是Scrum中的一个关键组成部分,它可以带来透明性、信任和更好的绩效。它能帮助快速发现问题,并促成团队的自组织和自立。所有的Scrum会议都是限定时长的。每日Scrum通常不超过15分钟。
透明水晶方法具有以下七大体系特征:
项目主办者根据团队的工作进展获得重要反馈。用户有机会发现他们原来的需求是否是他们真正想要的,也有机会将观察结果反馈到开发当中。开发人员打破未解决问题的死结,从而实现对重点的持续关注。团队得以调整开发和配置的过程,并通过完成这些工作鼓舞团队的士气。
在迭代中及时反思和改进。
渗透交流就是信息流向团队成员的背景听觉,使得成员就像通过渗透一样获取相关信息。这种交流通常都是通过团队成员在同一间工作室内工作而实现的。
指的是当你指出困扰你的问题时,你不许担心受到报复。个人安全非常重要,有了它,团队可以发现和改正自身的缺点。没有它,团队成员们知而不言,缺点则愈发严重以至于损害整个团队。个人安全是迈向信任的第一步。
就是确定首先要做什么,然后安排时间,以平和的心态开展工作。确保团队成员清楚地了解他们自己最重要的任务是什么,确保他们能够有充分的时间去完成这些任务。
能够提给团队提供:对经常交付进行配置以及测试的地方,关于成品质量的快速反馈,关于设计理念的快速反馈,最新的(用户)需求。
最好的团队是将这三大技术结合成“持续测试集成技术”。
指的是利用已经存在的软件元素建立新的软件系统,这其中的软件元素既可以是软件产品、源程序,也可以使文档、设计思想甚至是领域知识。常用的软件重用形式包括;
构件又称为组件,是一个自包容、可复用的程序集。首先,构件是一个程序集,或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制的代码。这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问构件,而不能直接操作构件的内部。
构件的两个最重要的特性是自包容和可重用。自包容指的是构件本身是一个功能完整的独立体,构件内部与外部的功能界限清晰明确,可以独立配置与使用。而可重用即是构件的特点,也是构件出现的目的。
目前应用比较广泛的构件标准有CORBA、Java Bean/EJB、COM/DCOM。
是一种架构驱动方法,有三个基础:
软件模板是一个特殊类型的软件元素,包括描述所有这种类型的元素在共享服务和底层构造的基础上如何进行交互。软件模板还包括属于这种类型的所有元素的功能,这些功能有:每个元素都必须记录某些重大事件,每个元素必须为运行期间的外部诊断提供测试点等。在软件产品线系统中,软件模板显得格外重要,因为新元素的引入是一个通用的技术,这种技术用来使产品线架构适应一个特定的产品。
ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,架构总是清晰的,这有助于降低架构设计的随意性。
ABSD的输入由下列部分组成:
包括需求的粗略变化的描述和通用的需求。
用例是一个或多个最终用户与系统之间的交互的具体表述。
必须对待构建系统的质量和业务需求进行编号,每个质量属性都宝库啊一个特定的刺激,以及希望得到的响应。质量需求要尽量具体化。
质量场景是质量需求的特定扩充,使质量需求具体化。
把整个基于架构的软件过程划分为架构需求、设计、文档化、复审、实现、演化等6个子过程
需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。架构需求受技术环境和架构设计师的经验影响。需求过程主要是获取用户需求,标识系统中所要用到的构件。如果以前有类似的系统架构的需求,我们可以从需求库中取出,加以利用和修改,以节省需求获取的时间,减少重复劳动,提高开发效率。
架构需求一般来自三个方面,分别是系统的质量目标、系统的业务目标和系统开发人员的业务目标。软件架构需求获取过程主要是定义开发人员必须实现的软件功能,使得用户能够完成他们的任务,从而满足业务上的功能需求。与此同时,还需要获得软件质量属性,满足一些非功能需求。
这一过程又分为三步来实现
第一步:生成类图。
第二步:对类进行分组。一般的,与其他类隔离的类形成一个组,由泛化关联的类组成一个附加组,由聚合或组合关联的类形成一个附加组。
第三步:把类打包成构件。把在第二步得到的类簇打包成构件,这些构件可以分组合并成更大的构件。
组织一个由不同代表组成的小组,对架构需求及相关构件进行仔细的审查。审查的主要内容包括所获取的需求是否真实反映了用户的要求,累的分组是否合理,构建合并是否合理等。
架构文档化的主要输出结果是架构需求规格说明和测试架构需求的质量设计说明书两个文档。生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约。
在一个主版本的软件架构分析后,要安排一次由外部人员参加的复审。
复审的目的是标识潜在的风险,以及早发现架构设计中的缺陷和错误,包括架构能否满足需求,质量需求是否在设计中得到体现、层次是否清晰、构件的划分是否合理、文档表达是否明确、构件的设计是否能满足功能和性能的要求等。
所谓“实现”就是要用实体来显示出一个软件架构,既要符合脚骨所描述的结构性设计决策,分割成规定的构件,按规定方式互相交互。
整个实现过程是以复审后的文档化的架构说明书为基础的,每个构件必须满足软件架构中说明的对其他构件的责任。这些决定即实现的约束是在系统级或项目范围内作出的,每个构件上工作的实现者是看不见的。
在架构说明书中,已经定义了系统中构件与构件的关系。因为在架构层次上,构件接口约束对外唯一的代表了构件,所以可以从构件库中查找符合接口约束的构件,必要时开发新的满足要求的构件。
然后,按照设计提供的结构,通过组装支持工具把这些构件的实现体柱状起来,完成整个软件系统的连接与合成。
最后一步是测试,包括单个构件的功能性测试和被组装应用的整体功能和性能测试。
在构件开发过程中,最终用户的需求可能还有变动。在软件开发完毕,正常运行后,由一个单位移植到另一个单位,需求也会发生变化。在这两种情况下,就必须响应的修改软件架构,以适应新的软件架构。
架构演化是使用系统演化步骤去修改应用,以满足新的需求。主要包括以下七个步骤:
指采用严格的数学方法,使用形式化规约语言来精确定义软件系统。非形式化的开发方法是通过自然语言、图形或表格描述软件系统的行为和特性,然后基于这些描述进行设计和开发,而形式化开发则是基于数学的方式描述、开发和验证系统。
形式化方法包括形式化描述和基于形式化描述的形式化验证两部分内容。形式化描述就是用形式化语言进行描述,建立软件需求和特性,即解决软件“做什么”的问题。形式化验证是指验证已有的程序是否满足形式化描述的定义。形式化描述主要可以分为两类,一类是通过建立计算模型来描述系统的行为特征,另一类则通过定义系统必须满足的一些属性来描述系统。形式化描述又称之为形式化规约,相对于自然语言描述,形式化描述是精确的、可验证的,避免了模糊性与二义性,消除需求中相互矛盾的地方,避免需求定义人员和开发人员对需求的理解偏差。
形式化描述可以通过计算机技术进行自动处理,进行一致性的检查和证明,提高需求分析的效率和质量。通过形式化描述,需求分析的质量大大提高,很多自然语言描述无法避免的缺陷在序曲分析阶段就会被发现,并得到解决,从而降低后期开发和维护的成本,并提升软件的质量和可靠性。
系统项目的选择至少包含两种实用性目的,一个是软件开发公司在诸多的产品方向中选择适当的方向进行研究和开发,另一种是客户从诸多的产品中购买适合自己需要的产品或者选择自己需要的技术方案进行实施。
系统项目提出和选择的结果,最终会以“产品/项目建议书”的方式来体现。
产品/项目建议书是一个包含多种综合内容的报告,涉及的范围通常要比GB8567-1988标准中规定的标准——“项目可行性分析报告”的内容更全面。
虽然可行性研究不能指出项目最终的详细计划和方向,但是可行性研究可以在项目定义阶段用最小的代价识别出错误构思的系统,从而规避未来更多的资源投入的损失(时间、资金、人力、机会),或者因遭遇到无法逾越的技术障碍或环境障碍导致的不可避免的失败。
效益分析实际上包含了“成本——效益”的分析。从内容上看,效益分析是可以包含在可行性研究的经济可行性分析中的。但效益分析的目的在于,项目开发目标的成本及可度量的项目现金收入和无形收益进行一次专门化的评估。
项目的成本部分,包括:
项目的收益,通常可以分为一次性收益、非一次性收益和不可定量的收益三个部分。
a. 一次性收益
- 开支的缩减。包括改进了的系统的运行所引起的开支缩减。如资源要求的减少,运行效率的改进等。
- 价值的提升。包括由于一个应用系统的使用价值的增升所引起的收益,如资源利用的改进,管理和运行效率的改进及出错率的减少等。
- 其他。如多余设备的出售回收的收入等。
b. 非一次性收益
在整个系统生命周期内由于运行所建议系统而导致的按月的、按年的能用人民币表示的收益,包括开支的减少
c. 不可定量的收益
无法直接用人民币表示的收益。如服务的改进,由操作失误引起的风险的减少,信息掌握情况的改进等。有些不可捉摸的收益只能大概估计或进行极值估计
可行性分析报告最重要的内容应有以下几项:
可行性研究报告首先由项目负责人审查(审查内容是否可靠),再上报给上级主管审阅(评估项目的地位)。
关键性的实现要素通常包括:
关键性的实现手段通常包括:
通过同时参考系统概念模型,将前面得到的系统功能清单和系统实现的各种关键要素整理并分类,然后与现有的技术、标准的实现体系进行比较和匹配,就可以将系统概念模型定义的系统目标,进一步映射到真正可计算、可实现的系统架构上。这个过程可以理解为一种不断归纳、比较并匹配的过程。
归结系统实现要素到计算体系的时候,要点在于理解各种计算体系的大致分层和结构,比较实现要素的目标和实现手段之间的“适合程度”,而不是生搬硬套某种实现机制,或盲目追求某种“流行的”或“先进的”计算体系。
系统方案制定后,需要根据有关标准进行评价,找出不符合实际的地方,然后进行改进。
遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统。遗留系统应具有以下特点:
评价是为了获得对遗留系统的足够深度的理解,从技术、商业和企业角度对系统的理解为系统处理策略提供基础,开始评价前,需要了解以下问题:
商业价值评价的目标是判断遗留系统对企业的重要性。可以在概要和详细两个级别上对遗留系统的商业价值评价。
概要级评价将为更加详细的分析提供信息。包括:
系统的外部技术环境指硬件、支撑软件和企业基础设施的统一体。
应用软件评价也有两个级别
评价活动将产生硬件、支撑软件、企业基础设施和应用软件的特征值矩阵,这些矩阵值体现了遗留系统当前的技术因素,其加权平均值代表了系统的技术水平。计算公式如下:
其中ORA是硬件的评价值,ORS是支撑软件的评价值,ORF是企业基础设施的评价值,ORA是应用软件的评价值。分别是它们的权系数,即第个评价值对遗留系统的影响因子。
根据评价结果的分值,可以将评价结果分为四种类型
| 类型 | 处理方式 |
|---|---|
| 高水平低价值 | 集成 |
| 高水平高价值 | 改造 |
| 低水平高价值 | 继承 |
| 低水平低价值 | 淘汰 |
当遗留系统的评价很低,为低水平低价值时,就说明遗留系统的技术含量很低,且具有较低的商业价值。对于这种遗留系统的演化策略为淘汰,即全面重新开发新的系统以代替遗留系统。
完全淘汰是一种极端性策略,一般是企业的业务产生了根本的变化,遗留系统基本上不再适应企业运作的需要;或者是遗留系统的维护人员、维护文档都丢失了。经过评价,发现遗留系统完全淘汰,开发全新的系统比改造旧系统从成本上更合算。
当评价的结果为低水平、高价值时,说明遗留系统的技术含量较低,可满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业业务对该系统仍有很大的依赖性。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。
当评价结果为高水平、高价值时,说明遗留系统的技术含量较高,本身还有较大的生命力,且具有较高的商业价值,基本上能够满足企业业务运作和决策支持的要求。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。
这种改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变。数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型转化的过程。
当评价结果为高水平低价值时,说明遗留系统的技术含量较高,但是商业价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但从企业全局来看,多个这样的系统他们各自基于不同的平台,不同的数据模型,无法互联互通,数据还不一致,这就是很严重的问题了。
因此对这种遗留系统的演化策略为集成。
集成过程中,可采用由互连系统构成的系统的架构,遗留系统可作为从属系统来描述。
定义问题的过程包括:理解真实世界中的问题和用户的额需要,并提出满足这些需要的解决方案的过程。
目标就是在开发之前对要解决的问题有一个更透彻的理解。为了达到这一目标,通常需要经过在问题定义上达成共识,理解问题的本质,确定项目干系人和用户,定义系统的边界和确定系统实现的约束这五个步骤。
应当将问题用标准的格式写出来,根据UP的建议,应当包括以下几个方面的要素。
在问题定义上达成共识,能够有效的将开发团队的理解与用户的需求达成一致,这样就能够使得整个系统的开发沿着合理的方向发展。
一种技术是“根本原因”分析,这是一种提示问题或其表象的根本原因的系统化方法。在实际的应用中,长使用因果鱼骨图和累托图两种方法。
是一种有效的探寻问题根源的技术,它通过直观的图形找出问题或现象的所有潜在原因,从而追踪出问题的根源。提供了一种运用集体智慧解决问题的方法。在使用时,通常按照以下步骤进行。
是采用释放图的形式,根据问题的相对频率或大小从高往低将序排列,帮助设计师将精力集中在重要的问题上。它为80%的问题找到关键的20%的 原因,可以一目了然的显示出各个问题的相对重要程度,有助于预防在解决了一些问题后,却使另外一些问题变得更糟的现象发生。在使用时,通常按照以下步骤进行:
要想有效的解决问题,必须了解用户和其他相关的项目干系人(任何将从新系统或应用的实现中受到实质性影响的人)的需要。
系统的边界是指解决方案系统和现实世界之间的边界。在系统边界中,信息以输入和输出的形式流入系统并由系统流向系统外的用户,所有和系统的交互都是通过系统和外部的接口进行的。在定义系统边界时,将世界分为两个部分:系统及与系统进行交互的事物。
要描述系统的边界有两种方法:一种是结构化分析中的“上下文范围图”,另一种则是面向对象分析中的“用例模型”。
然后,在根据每个参与者的功能需求,识别出代表系统功能的用例,从而界定系统的边界。
由于各种因素的存在,会对解决方案的选择造成一定的限制,成这种限制为约束。每条约束都将影响到最后的解决方案的形成,甚至会影响是否能够提出解决方案。
对于一个问题的完整定义,通常应包括目标、功能需求和非功能需求三个方面。
指构建系统的原因,他是最高层次的用户需求,是业务上的需要,而功能、性能需求则必须是以某种形式对该目标作出贡献。在描述目标时,应该注意一下几个方面。
是用来指明系统必须做的事情,只有这些行为的存在,才有系统存在的价值。功能需求是在与用户或某个业务人员交谈时,他们所描述的内容是为了完成他们某部分的工作而必须做的事情。而在设计解决方案时,会遇到一些限制条件,这些东西也是“系统需求”的一部分,不过应该以设计约束或非功能需求形式指定。
需求的二义性主要体现在以下几个方面:
是系统必备的属性,这些属性可以看做是一些使产品更有吸引力、易用、快速或可靠的特征或属性。非功能需求并不改变产品的功能,它是为工作赋予特征的。功能需求是以动词为特征的,而非功能需求则是以副词为特征的。非功能需求主要包括以下几种。
需求分析主要就是确定待开发软件的功能、性能、数据、界面等要求。需求分析的实现步骤通常包括:获取当前系统的物理模型、抽象出当前系统的逻辑模型、建立目标系统的逻辑模型三个部分。具体来说,修分析阶段可以分成4个方面:
除了三种需求之外,还有业务需求、用户需求、系统需求这三个处于不同层面的概念
就是包括创建和维护系统需求文档所必须的一切活动的过程,主要包括需求开发和需求管理两大工作。
这两个方面是相辅相成的,需求开发是主线,是目标;需求管理是支持,是保障。换句话说,需求开发是努力更清晰,更明确的掌握客户对系统的需求;而需求管理管理则是对需求的变化进行管理的过程。
优秀的系统设计一般在以下几个方面都很出色。
软件设计是一个把软件需求变换成软件表示的过程,最初这种表示只是描绘出软件的总体框架,然后再进一步细化,并在此框架中填入细节。
结构化分析方法的基本思想是自顶向下逐层分解。分解和抽象是人们控制问题复杂性的两种基本手段。将一个大问题逐层逐级分解为最底层的问题,就是分解过程。
结构化分析与面向对象分析方法之间的最大差别是:结构化分析方法把系统看做一个过程的集合体,包括人完成的和电脑完成的;而面向对象方法则把系统看成一个相互影响的对象集。结构化分析方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。
结构化分析方法一般包括以下工具:数据流图DFD、数据字典DD、结构化语言、判定表、判定树。
结构化系统分析方法从总体上看是一种强烈依赖数据流图的自顶向下的建模方法。
DFD是一种图形化的系统模型,它在一张图中展示信息系统的主要需求,即输入、输出、处理(过程)、数据存储。DFD包括以下几个基本元素
实时连接:当过程执行时,外部实体与过程之间的来回通信。
为了更好的描述DFD的部件,结构化分析方法还引入了数据字典、结构化语言及决策树、决策表等方法。其中数据字典应用最为广泛。
数据字典技术是一种很实用、有效的表达数据格式的手段。他是对所有与系统相关的数据元素的一个有组织的列表和精确严格的定义。使得用户和系统分析员对于输入、输出、存储层粉和中间计算机有共同的理解。通常数据字典的每一个条目中包括以下信息。
=:由...构成+:和,代表顺序连接的关系。[|]:或,代表从中选一个{}*:n次重复():代表可选的数据项*...*:表示特定限制的注释结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。他是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶向下、逐步求精和模块化的过程。
概要设计阶段的主要任务是设计软件的结构、确定系统是由哪些模块组成,以及每个模块之间的关系。它采用结构图来描述程序的结构,此外还可以使用层次图和HIPO(层次图加输入/处理/输出图)。
整个过程主要包括:复查基本系统模型、复查并精化数据流图、确定数据流图的信息流类型(包括交换流和事务流)、根据流类型分别实施变换分析或事务分析、根据软件设计原则对得到的软件结构图进一步优化。
而详细设计阶段的主要任务则是确定应该如何具体的实现所要求的系统,得出对目标系统的精确描述。它采用自顶向下、逐步求精的设计方式和单入口单出口的控制结构。
结构图的基本成分包括模块、调用(模块之间的调用关系)和数据(模块间传递及处理数据信息)。
结构图是在需求分析阶段产生的数据流图的基础上进行进一步的设计。它将DFD图中的信息流分为两种类型。
程序流程图和盒图都是用来描述程序的细节逻辑的。
程序流程图的特点是简单、直观、易学,但它的缺点是由于其随意性而使得画出来的流程图容易成为非结构化的流程图。
盒图的主要特点是功能域明确、无法任意转移控制、容易确定全局数据和局部数据的作用域、容易表示嵌套关系、可以表示模块的层次结构。但它的缺点是修改相对比较困难。
PAD是问题分析图的缩写,它符合自顶向下、逐步求精的原则,也符合结构化程序设计的思想,最大的特点在于能够很方便的转换为程序语言的源程序代码。
PDL这是语言描述工具的缩写,它和高级程序语言很相似,也包括数据说明部分和过程部分,还可以带注释等成分,但它是不可执行的。PDL是一种形式化语言,其控制结构的描述是确定的,但内部的描述语法是不确定的。PDL通常也被称为伪码。
模块是执行某一特定任务的数据结构和程序代码。通常将模块的接口和功能定义为其外部特性,将模块的局部数据和实现该模块的程序代码称为内部特性。而在模块设计中,最重要的原则就是实现信息隐蔽和模块独立。
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐藏或封装在一个单一的设计模式中,并且尽可能少的暴露其内部的处理。通常将难的决策、可能修改的决策、数据结构的内部连接以及对它所做的操作细节、内部特征码、与计算机硬件有关的细节等隐蔽起来。
通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性。
模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系最简单。保持模块的高度独立性,也是设计过程中的一个很重要的原则。通常用耦合(模块之间联系的紧密程度)和内聚(模块内部各元素之间联系的紧密程度)两个标准来衡量,设计的目标是高内聚、低耦合。
模块的内聚类型如下图,根据内聚度从高到低排序
| 内聚类型 | 描述 |
|---|---|
| 功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
| 顺序内聚 | 处理元素相关,而且必须顺序执行 |
| 通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
| 过程内聚 | 处理元素相关,并且必须按特定的次序执行 |
| 瞬时内聚 | 所包含的任务必须在同一时间间隔内执行(如初始化模块) |
| 逻辑内聚 | 完成逻辑上相关的一组任务 |
| 偶然内聚 | 完成一组没有关系或松散关系的任务 |
模块的耦合类型如下图,根据耦合度从低到高排序
| 耦合类型 | 描述 |
|---|---|
| 非直接耦合 | 没有直接联系,互相不依赖对方 |
| 数据耦合 | 借助参数表传递简单数据 |
| 标记耦合 | 一个数据结构的一部分借助于模块接口来传递 |
| 控制耦合 | 模块间传递的信息中包含用于控制模块内部逻辑的信息 |
| 外部耦合 | 与软件以外的环境有关 |
| 公共耦合 | 多个模块引用同一个全局数据区 |
| 内容耦合 | 一个模块访问另外一个模块的内部数据 一个模块不通过正常入口转入到另一个模块的内部 两个模块有一部分程序代码重叠 一个模块有多个入口 |
除了满足以上两大基本原则外,通常在模块分解时还需要注意:保持模块的大小适中,尽可能减少调用的深度,直接调用该模块的个数应该尽量大,但调用其他模块的个数则不宜过大;保证模块是单入口、单出口的;模块的作用域应该在控制域之内;功能应该是可预测的。
对象是系统中用来描述客观事物的一个实体,它由对象标识(名称)、属性(状态、数据、成员变量)和服务(操作、行为、方法)三个要素组成,它们被封装为一个整体,以接口的形式对外提供服务。
类是对具有相同属性和服务的一个或一组对象的抽象。类与对象是抽象描述和具体实例的关系,一个具体的对象被称为类的一个实例。
在系统设计过程中,类可以分为三种类型,分别是实体类、边界类和控制类。
继承用来说明特殊类(子类)与一般类(父类)的关系,而通常用泛化来说明一般类和特殊类的关系,也就是说它们是一对多关系。
多态性(即多种形式)一般是指一般类中定义的属性被特殊类继承后,可以具有不同的数据类型或表现出不同的行为,通常是使用重载和改写两项技术来实现的
| 多态类型 | 描述 |
|---|---|
| 重载(专用多态) | 描述一个函数名称有多种不同实现方式,通常可以在编译时基于类型签名来区分各个重载函数的名称 |
| 改写(包括多态) | 是重载的一种特殊情况,只发生在有关父类和子类之间关系中。通常签名相同,内容不一样。 |
| 多态变量(赋值多态强制多态) | 声明为一种类型,但实际上却可以包含另一种类型数值的变量 |
| 泛型(模板,参数多态) | 它提供了一种创建通用工具的方法,可以在特定的场合将其特化 |
重载是编译时进行的(静态绑定),而改写则是运行时选择的(动态绑定)。
也称类属类,用来实现参数多态机制。一个类属类是关于一组类的特性抽象,强调的是这些类的成员特征中与具体类型无关的那些部分,而用变元来表示与具体类型有关的那些部分。
消息就是向对象发出的服务请求,通常包括提供服务的对象标识、消息名、输入信息和回答消息。消息通信则是面向对象方法学中的一个重要原则,它与对象的封装原则密不可分,为对象间提供了唯一合法的动态联系的途径。
OOA模型中包括主题、对象类、结构、属性和服务5个层次,需经过标识对象类、标识结构与关联、划分主题、定义属性、定义服务5个步骤来完成整个分析同坐。
OOD中将贯穿OOA中的5个层次和5个活动,它由人机交互部件、问题域部件、任务管理部件、数据管理部件4个部分组成,其主要的活动就是这4个部件的设计工作。
Booth任务软件开发是一个螺旋上升的过程,每个周期中包括标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现四个步骤。
| / | 静态模型 | 动态模型 |
|---|---|---|
| 逻辑模型 | 类图 对象图 |
状态转换图 时序图 |
| 物理模型 | 模块图 进程图 |
Booth方法的挨罚过程是一个迭代的、渐进式的系统开发过程,它可以分为宏过程和微过程两类。宏过程用于控制微过程,是覆盖几个月或几周所进行的活动。它包括负责建立核心需求的概念化,为所期望的行为建立模型的分析,建立架构的设计,形成实现的进化,以及管理软件交付使用的维护等5个主要活动。
而微过程则基本上代表了开发人员的日常活动,它由4个重要、没有顺序关系的步骤组成:在给定的抽象层次上识别出类和对象,识别出这些类和对象的语义,识别出类间和对详见的关系,实现类和对象。
OMT是对象建模技术的缩写,主要用于分析、系统设计和对象设计。包括对象模型(静态的、结构化的系统的“数据”性质,通常采用类图)、动态模型(瞬时的、行为化的系统“控制”性质,通常使用状态图)和功能模型(表示变化的系统的“功能”性质,通常使用数据流图)。OMT方法的三大模型如下表
| 模型 | 说明 | 主要技术 |
|---|---|---|
| 对象模型 | 描述系统中对象的静态结构、对象之间的关系、属性、操作。它表示静态的、结构上的、系统的“数据”特征 | 对象图 |
| 动态模型 | 描述与时间和操作顺序有关的系统特征,如激发事件、事件序列、确定事件先后关系的状态。它表示瞬时、行为上的、系统的“控制”特征 | 状态图 |
| 功能模型 | 描述与值的变换有关的系统特征:功能、映射、约束和函数依赖 | 数据流图 |
面向对象软件工程的缩写。它在OMT的基础上,对功能模型进行了补充,提出了“用例”的概念,最终取代数据流图进行需求分析和建立功能模型。
UML由构造快、公共机制和架构三个部分组成。
用例实例实在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。一个用例定义一组用例实例。
用例模型描述的是外部参与者所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。
<<include>>或者<<use>>表示;另一种是用于分离出不同的行为,用构造型<<extend>>表示。 在面向对象建模技术中,将客观世界的实体映射为对象,并归纳成一个个类。类、对象和它们之间的关联是面向对象技术中最基本的元素。对于一个想要描述的系统,其类型和对象模型揭示了系统的结构。在UML中,类和对象模型分别由类图和对象图表示。类图是OO方法的核心。
交互图是表示各组对象如何依赖某种行为进行写作的模型。通常可以使用一个交互图来表示和说明一个用例的行为。
用来描述一个特定对象的所有可能状态及其引起状态转移的事件。一个状态图包括一系列状态及状态之间的转移。
状态图包括以下部分:
- 状态:又称为中间状态,用圆角矩形框表示
- 初始状态:又称为初态,用一个黑色的实心圆圈表示,在一张状态图中只能够有一个初始状态。
- 结束状态:又称为终态,在黑色的实心圆圈外面套上一个空心圆,在一张状态图中可能有多个结束状态。
- 状态转移:用箭头说明状态的转移情况,并用文字说明引发这个状态变化的相应事件是什么。
一个状态也可能被细分成为多个子状态,那么如果将这些子状态都描绘出来的话,那么这个状态就是符合状态。
活动图是由状态图变化而来的。活动图依据对象状态的变化来捕获动作(将要执行的工作或活动)与动作的结果。活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。
构件图是面向对象系统的物理方面进行建模要用的两种图之一。它可以有效的显示一组构件,以及他们之间的关系。构件图中通常包括构件、接口及各种关系。
通常构件值得是源代码文件、二进制代码文件和可执行文件等。而构件图就是用来显示编译、链接或执行时构件之间的依赖关系的。通常来说,可以使用构件图完成以下工作:
在绘制构件图时,应该注意侧重于描述系统的静态实现视图的一个方面,图形不要过于简化,应该为构件图取一个直观的名称,在绘制时避免产生线的交叉。
也成为实施图,和构件图一眼个,是面向对象系统的物理方面建模的两种图之一。构件图说明构建之间的逻辑关系,而部署图是在此基础上更进一步的描述系统硬件的物理拓扑结构及在此结构上运行的软件构件,常用于帮助理解分布式系统。通常包括以下一些关键的组成部分:
接口设计主要包括三个方面的内容:一是设计软件构件间的接口;二是软件设计模块和其他非人的信息生产者和消费者(如外部实体)的接口;三是人(如用户)和计算机间的界面设计。
设计时必须遵从三个黄金法则
用户界面设计原则如下:
| 原则 | 描述 |
|---|---|
| 用户熟悉 | 界面所使用的术语和概念应该来自于用户的经验,这些用户是将来要使用系统最多的人。 |
| 意外最小化 | 永远不要让用户对系统的行为感到吃惊。 |
| 可恢复性 | 界面应该有一种机制来允许用户从错误中恢复 |
| 用户指南 | 在错误发生时,界面应该提供有意义的反馈,并有上下文感知能力的用户帮助功能。 |
| 用户差异性 | 界面应该为不同类型用户提供合适的交互功能 |
用户界面的设计过程也应该是迭代的,它通常包括4个不同的框架活动:
工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则、文档、信息或任务在不同的执行者之间传递、执行。
要分析现实中的处理流程,必须首先描述目标系统的流程,这个过程也可以称为建模。
是一种“在工作流形式化表示的驱动下,通过软件的执行而完成工作流定义、管理及执行的系统”,其主要目标是对业务过程中各活动发生的先后次序及与活动相关的相应人力或信息资源的调用进行管理,而实现业务过程的自动化。工作流管理系统的六个基本模块的参考模型如下:
所有操作都集中于一台主机中,而操作员必须在主机的附近操作。集中式系统常见于银行、保险、证券行业。集中式系统由以下几个部分组成:
这种结构是C/S结构的扩展,典型的分为由存储数据的数据库服务器作为数据层、实现商业规则的程序作为逻辑层、管理用户输入输出的视图层所组成的三层结构。
多层结构形式复杂、工鞥多余,实现多层结构常常需要来实现不同层次建通信的专门程序——管件,也称为中间件。中间件大多数实现远程程序调用、对象请求调度等功能。
Internet是全球的网络集合,使用通用的TCP/IP协议来相互连接。Internet提供了电子邮件、文件传输、远程登录等服务。Intranet是私有网络,只限于内部使用,也使用TCP/IP协议。Extranet是一个扩展的Intranet。它包括企业之外的和企业密切相关合作的其他企业。Extranet允许分离的组织交换信息并进行合作,这样就形成了一个虚拟组织,现在的VPN技术允许在公用网络上架构支队组织内部开发服务。
当新系统运行时,立即关闭原来的系统
让新系统和旧系统在一段时间里同时运行
适用于分阶段开发的系统。
定义1:软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构有软件元素、元素的外部可见属性及他们之间的关系组成。
定义2:软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式及这些模式的约束组成。
定义3:软件架构是指一个系统的基础组织,它具体体现在:系统的构件,构建之间、构件和环境之间的关系,以及知道其设计和烟花的原则上。
为更好的理解软件架构的定义,特作如下说明:
在设计软件架构时也必须考虑硬件特性和网络特性。架构设计师通常将架构的重点放在软件部分。
从技术角度看,软件架构的重要性表现为如下几个方面:
从软件开发过程来看,如果采用传统的软件开发模型(生命周期模型),则软件架构的建立应位于概要设计之前、需求分析之后。
基于架构的软件开发模型则明确的把整个软件过程划分为架构需求、设计、文档化、评审(评估)、实现、演化等6个子过程。
软件架构可以归纳为5种模型:结构模型、框架模型、动态模型、过程模型和功能模型。最常用的是结构模型和动态模型。
“4+1”的视图模型从5个不同的侧面,即逻辑视图、进程视图、物理视图、开发视图和场景来描述软件架构。每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件架构的全部内容。
软件属性包括功能属性和质量属性。但是,软件架构师重点关注的是质量属性。
软件质量特性包括功能性、可靠性、易用性、效率、可维护性、可移植性等六个方面,每个方面都包含若干子特性。
下表反映了质量属性之间的相互制约关系(正相关或负相关),其中“+”代表“行属性”能促进“列属性”;而“-”则相反。
| ~ | 性能 | 安全性 | 持续可用性 | 可互操作性 | 可靠性 | 鲁棒性 | 易用性 | 可测试性 | 可重用性 | 可维护性 | 可扩展性 | 可移植性 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 性能 | - | - | - | - | - | - | - | - | ||||
| 安全性 | - | - | - | - | - | |||||||
| 持续可用性 | + | + | ||||||||||
| 可互操作性 | - | - | + | + | ||||||||
| 可靠性 | - | + | + | + | + | + | + | |||||
| 鲁棒性 | - | + | + | + | ||||||||
| 易用性 | - | + | - | |||||||||
| 可测试性 | - | + | + | + | + | + | ||||||
| 可重用性 | - | - | + | - | + | + | + | + | ||||
| 可维护性 | - | + | + | + | + | |||||||
| 可扩展性 | - | - | + | + | + | + | ||||||
| 可移植性 | - | + | - | + | + | - | + |
从架构关注点角度,将质量属性分为六种:可用性、可修改性、性能、安全性、可测试性、易用性。
质量属性场景由以下六个部分组成:
需要将一般的质量属性场景与具体的质量属性场景区别开来,前者是指独立于具体系统、适合于任何系统的一般性场景;而后者是指适合于正在考虑的某个特定系统的场景,具体场景通常是指从一般场景中抽取特定的、面向具体系统的内容。
实现这些质量属性的基本设计决策,称为”战术“,而把战术的集合称为”架构策略“。这些架构策略工架构设计师选择。
| 场景的部分 | 可能的值 |
|---|---|
| 刺激源 | 系统内部、系统外部 |
| 刺激 | 错误:疏忽(构件对某输入未作出反应)、崩溃、时间不当(响应时间太早或太迟)、响应不当(以一个不正确的值来响应) |
| 制品 | 系统的处理器、通信通道、存储器、进程 |
| 环境 | 正常操作、降级模式 |
| 响应 | 系统应检测事件,并进行如下一个或多个活动: 使其记录下来 通知合适的各方,包括用户和其他系统 根据规则屏蔽导致错误或故障的事件源 不可用(进入修理状态) 继续在正常或降级模式下运行 |
| 响应度量 | 可用时间、修复时间、各种情况的时间间隔 |
目标是阻止错误发展成故障,至少能够把错误的影响限制在一定范围内,从而使修复称为可能。战术分为:错误检测、错误恢复、错误预防。
| 场景的部分 | 可能的值 |
|---|---|
| 刺激源 | 最终用户、开发人员、系统管理员 |
| 刺激 | 增加/删除/修改/改变:功能、质量属性、容量 |
| 制品 | 用户界面、平台、环境或关联系统 |
| 环境 | 运行时、编译时、构建时、设计时 |
| 响应 | 查找要修改的位置、进行修改(不影响其他功能)、进行测试、部署所修改的内容 |
| 响应度量 | 对修改的成本进行度量,对修改的影响进行度量 |
| 场景的部分 | 可能的值 |
|---|---|
| 刺激源 | 系统外部或内部 |
| 刺激 | 定期事件、随机事件、偶然事件 |
| 制品 | 系统 |
| 环境 | 正常模式、超载模式 |
| 响应 | 处理刺激、改变服务级别 |
| 响应度量 | 度量等待、期限、吞吐量、缺失率、数据丢失等 |
性能与时间相关,影响事件的响应时间有两个基本因素:
性能的战术有如下几种:
| 场景的部分 | 可能的值 |
|---|---|
| 刺激源 | 对敏感资源进行访问的人或系统(合法的、非法的) |
| 刺激 | 试图:显示数据、改变/删除数据、访问系统服务、降低系统服务的可用性 |
| 制品 | 系统服务,系统中的数据 |
| 环境 | 在线或离线、联网或断网、有或无防火墙 |
| 响应 | 对用户身份验证;阻止或允许对数据或服务的访问;授予可回收访问权;加密信息;限制服务的可用性;通知用户或系统 |
| 响应度量 | 增加安全性的成本;检测或确定攻击的可能性;降低服务级别后的成功率;恢复数据/服务 |
包括抵抗攻击、检测攻击和从攻击中恢复。
| 场景的部分 | 可能的值 |
|---|---|
| 刺激源 | 各类测试人员(单元测试、集成测试、验收、用户) |
| 刺激 | 一种测试 |
| 制品 | 设计、代码段、完整的应用 |
| 环境 | 设计时,开发时、编译时、部署时 |
| 响应 | 提供测试的状态值、测试环境与案例的准备 |
| 响应度量 | 测试成本、出现故障的概率、执行时间等。 |
| 场景的部分 | 可能的值 |
|---|---|
| 刺激源 | 最终用户 |
| 刺激 | 学习系统特性、有效使用系统、使错误的影响最低、适配系统、对系统满意 |
| 制品 | 系统 |
| 环境 | 运行时或配置时 |
| 响应 | 支持“学习系统特性”的响应:界面为用户所熟悉或使用帮助系统 支持“有效使用系统”的响应:数据/命令聚合或复用;界面是导航;操作的一致性;多个活动同时进行 支持“使错误的影响最低”的响应:撤销/取消;从故障中恢复;识别并纠正用户错误;验证系统资源 支持“适配系统”的响应:定义能力;国际化 支持“对系统满意”的响应:显示系统状态;与用户的节奏合拍 |
| 响应度量 | 从最终用户的角度进行度量,如:学习成本、错误数量、解决问题的数量、满意度等 |
软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义了一个系统家族,即一个架构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束支出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统所共有的结构和语义特征,并指导如何将各个模块和子系统有效的组织成一个完整的系统。按这种方式理解,软件架构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
架构风格最关键的四要素内容:提供一个词汇表,定义一套配置规则,定义一套语义解释原则和定义对基于这种风格的系统所进行的分析。通用架构风格的分类:
在该结构下,所有的数据按照流的形式在执行过程中前进,不存在结构的反复和重构,数据在流水点的各个结点上被加工,最终输出需要的结果。
批处理风格的每一步都是独立的,并且每一步是顺序执行的。只有当前一步处理完,后一步才能开始。数据传送在步与步之间作为一个整体。(组件为一系列固定顺序的计算单元,组件间只通过数据传递交互。每个处理步骤一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递)。
批处理的典型应用:
在该软件架构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出流。这个过程通常通过对输入流的变换和增量计算来完成,所以输入被完全消费之前,输出便产生了。因此,这里的构件被称为过滤器。这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。过滤器必须是独立的实体,不能与其他的过滤器共享数据,而且一个过滤器不知道他上游和下游的标识。一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。
一个典型是以UNIX shell编写的程序,另一个例子是传统的编译器。
管道/过滤器风格的软件架构具有很多很好的特点:
但是,也存在若干不利因素
共同点:把任务分成一系列固定顺序的计算单元(组件)。组件间指通过数据传递交互。
区别:批处理是全部的、高潜伏性的,输入时可随机存取,无合作性、无交互性。而管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈、可交互。批处理强调数据在步与步之间作为一个整体,而管道过滤器无此要求。
是结构化时期的经典架构风格。这种风格一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性,取决于它调用的子程序的正确性。
这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或是说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程调用来交互的。
这种风格的两个主要特征为:
面向对象的系统优点如下:
存在的问题如下:
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层课件。这样的系统中构件在一些层实现了虚拟机(在另一些层次结构中层是部分不透明的)。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间的交互的约束。
这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。
层次结构的优点如下:
层次结构的缺点如下:
主要强调系统中的每个构件都是相互独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。
构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步和同步方式以及远过程调用等。
基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。一同中的其他构建中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
从架构上来说,这种风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。
基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响,这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用。因此,许多隐式调用的系统也包含显示调用作为构件交互的补充形式。
隐式调用系统的主要优点有:
隐式调用系统的主要缺点:
基本思想是人为构建一个运行环境。在这个环境之上,可以解析与运行一些自定义的一些语言,这样来增加架构的灵活性。
一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。
具有解释器风格的软件中包含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。解释器通常被用来建立一个虚拟机以弥合程序语义与硬件语义之间的差异,其缺点是执行效率过低。典型的例子是专家系统。
基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内容。
在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化。
仓库风格包含的自风格有:数据库系统;超文本系统;黑板系统
数据库系统构件主要有两大类:一个是中央共享数据源,保存当前系统的数据状态;另一个是多个独立处理元素,处理元素对数据元素进行操作。而超文本系统的典型代表,就是早期的静态网页。三种架构子风格中,最复杂的是黑板系统。
黑板系统是在抽象与总结语言理解系统HEARSAY-11的基础上产生的,适合于复杂的非结构化的问题,能在求解过程中综合运用不同知识源,使得问题的表达、组织和求解都变得比较容易。黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架,它将问题的解,空间组织成一个或多个应用相关的分级结构,分级结构的每一层信息由一个唯一的词汇来描述,它代表了问题的部分解。领域相关的知识被分成不同知识表达方法、推理框架和控制机制的组合来实现,影响黑板系统设计的最大因素是应用问题本身的特性,但是支撑应用程序的黑板体系结构有许多相似的特征和构件。
对于特定应用问题,黑板系统可通过选取各种黑板、知识源和控制模块中的构件来设计,也可以利用关预先定制的黑板体系结构的编程环境。黑板系统的传统应用是信号处理领域,如语言和模式识别。另一个应用是松耦合代理数据共享存取。
黑板系统主要由三个部分组成:
C/S架构是基于资源不对等,且为实现共享而提出的。将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。
C/S软件架构具有强大的数据操作和事务处理能力,模型西乡简单,易于人们理解和接收,但是随着企业规模的日益扩大,软件的复杂程度不断提高,传统的C/S架构存在以下几个局限:
三层C/S架构将应用功能分为表示层、功能层和数据层三个部分。
表示层是应用的用户接口部分,它但负责用户与应用间的对话功能,它用于检查用户从键盘等输入的数据,并显示应用输出的接口。在变更用户接口时,只需要改写控制和数据检查程序,而不影响其他两层,检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。
功能层相当于应用的本体,他是将具体的业务处理逻辑编入程序中。而处理所需的数据则要从表示层或数据层取得。表示层和功能层之间的数据交往要尽可能简洁。
数据层就是数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。因此,一般从功能层传送到数据层的要求大都使用SQL语言。
浏览器/服务器风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/web服务器/数据库服务器。
B/S架构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大工鞥呢,并节约了开发成本。
与C/S架构相比,B/S架构也有不足之处,例如:
全名是模型-视图-控制器。
MVC各个部分的分工与协作是这样的。
Model-View-Presenter。Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。MVC中允许View与Model直接交流,这在MVP模式中是不允许的。它们之间的通信是通过Presenter,所有的交互都发生在Presenter内部。
MVP的优点包括:
MVP的缺点包括:
视图和Presenter的交互会过于频繁。如果Presenter过多的渲染了视图,往往会使得他与特定视图的联系过于紧密,一旦视图需要变更,那么Presenter也需要变更。
虽然基于SOA的系统并不排除使用OOD来够简单个服务,但是其整体设计却是面向服务的。由于SOA考虑到了系统内的对象,所以虽然SOA是基于对象的,但是作为一个整体,它却不是面向对象的。
SOA建立在XML等新技术的基础上,通过使用基于XML的语言来描述接口,服务已经转到更动态且更灵活的接口系统中。
在SOA系统中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务都通过服务总线或流程管理器来连接。各服务在交互的过程中无需考虑双方的内部实现细节,以及部署在什么平台。
服务模型的表示层从逻辑层分离出来,中间增加了服务对外的接口层。通过服务接口的标准化描述,使得服务可以提供给在任何异构平台或任何用户接口使用。
服务构件架构SCA是基于SOA的思想描述服务之间组合和写作的规范,它描述用于使用SOA构建应用程序和系统的模型。可以简化可用SOA进行应用程序的开发和实现工作。提供了构件粗粒度构件的机制,这些粗粒度构件由细粒度构件组装而成。SCA将传统中间件编程从业务逻辑中分离出来,从而使程序员避免受其复杂性的困扰。允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上。
SCA服务构件与传统构件的主要区别在于:服务构件旺旺是粗粒度的,而传统构件以细粒度居多;服务构件的接口是标准的,主要是服务描述语言接口,而传统构件常以具体API形式出现;服务构件的实现与语言是无关的,而传统构件常绑定某种特定的语言;服务构件可以通过构件容器提供QoS的服务,而传统构件完全由程序代码控制。
统一描述、发现和集成。提供一种服务发布、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。UDDI规范描述了服务的概念,同时也定义了一种编程接口。通过UDDI提供的标准接口,企业可以发布自己的服务供其他其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。
UDDI技术规范中,主要包含下面三个部分的内容:
Web语言描述对象是对服务进行描述的语言。有一套基于XML的语法定义。描述的重点是服务,包含服务实现定义和服务接口定义。
服务接口定义就是一种抽象的、可重用的定义,行业标准组织可以使用这种抽象的定义来规定一些标准的服务类型,服务实现者可以根据这些标准定义实现具体的服务。
服务实现定义描述了给定服务提供者如何实现特定的服务接口。服务实现定义中包含服务和端口描述。一个服务往往会包含多个服务访问入口而每个访问入口都会使用一个端口元素来描述,端口描述的是一个服务入口的部署细节。
简单对象访问协议。定义了服务请求者和服务提供者之间的消息传输规范。使用XML来格式化消息,用HTTP来承载消息。通过SOAP,应用程序可以在网络中进行数据交换和远程过程调用RPC。SOAP主要包括以下四个部分:
SOAP消息基本上是要从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求/应答的模式。所有的SOAP消息都使用XML进行编码。SOAP消息包括以下三个部分:
表述性状态转移。是一种只使用HTTP和XML进行基于web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。REST从根本上只支持几个操作(POST、GET、PUT和DELETE)。REST提出了如下一些设计概念和准则:
一共有三种工作角色,其中服务提供者和服务请求者是必需的,服务注册中心是一个可选的角色。
Web service模型中的操作如下,这些操作可以单次或反复出现;
在采用Web service作为SOA的实现技术时,应用程序大致可以分为六个层次,如下:
虽然也有运行时的功能能,但主要在SOA设计时使用。它提供了一个策略执行点PEP,在这个点上,服务可以在SOA中注册,从而可以被发现和使用。从理论上来说,任何帮助服务注册、发现和查找服务合约、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。
ESB,是一种为连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供一个可靠的、可度量和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程进行控制和跟踪、分析、并改进流程和性能。
ESB是由中间件技术实现并支持SOA的一组基础架构,是传统中间件技术与XML、Web Service等技术结合的产物,是在整个企业集成环境下的面向服务的企业应用集成机制。具体来说,ESB具有以下功能
微服务架构是一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。每个服务都围绕着具体业务进行构件,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构件。
核心特点是:小,且专注做一点事情、轻量级的通信机制、松耦合、独立部署。
在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术去实现。
主要讲的是系统中的一部分出现故障,会引起多大问题。微服务架构中,每个服务都可以内置可用性的解决方案与功能降级方案。
可以针对单个服务进行扩展
微服务架构中,每个服务的部署都是独立的。可以更快的对特定部分的代码进行部署。
微服务架构可以将架构与组织结构相匹配,避免出现过大的代码库,从而获得理想的团队大小及生产力。
在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构件应用。
在微服务架构中,我们可以在需要时轻易的重写服务,或删除不再使用的服务。
| 微服务 | SOA |
|---|---|
| 能拆分的就拆分 | 是整体的,服务能放到一起的都放到一起 |
| 纵向业务划分 | 是水平分多层 |
| 由单一组织负责 | 按层级划分不同部门的组织负责 |
| 细粒度 | 粗粒度 |
| 两句话可以解释明白 | 几百字只相当于SOA的目录 |
| 独立的子公司 | 类似大公司里面划分了一些业务单元 |
| 组件小 | 存在较复杂的组件 |
| 业务逻辑存于每一个服务中 | 业务逻辑横跨多个业务领域 |
| 采用轻量级的通信方式,如HTTP | 企业级服务充当了ESB充当了服务之间通信的角色 |
| 微服务架构实现 | SOA实现 |
|---|---|
| 团队级,自底向上开展实施 | 企业级,自顶向下开展实施 |
| 一个系统被拆分成多个服务,粒度细 | 服务由多个子系统组成,粒度大 |
| 无集中式总线,松散的服务架构 | 企业服务总线,集中式的服务架构 |
| 集成方式简单(HTTP/REST/JSON) | 集成方式复杂(ESB/WS/SOAP) |
| 服务能独立部署 | 单块架构系统,相互依赖、部署复杂 |
在生命周期模型中,架构设计就是从初步的需求分析开始逐步进行循环迭代。即:一方面在了解系统需求前,不能开始设计架构;另一方面,刚开始设计架构时并不需要等到全部需求都收集到。
是一种定义软件架构的方法,该方法将分解过程建立在软件必须满足的质量属性智商。
ADD的步骤如下。
是架构的项目关系人。编写技术文档的最基本的原则之一是要从读者的角度来编写。
文档组织结构包含七个部分:
包括如下内容:
软件架构重构就是研究及反向解析软件架构的工作。
软件架构重构由以下活动组成,这些活动以迭代方式进行。
是在对架构分析、评估的基础航,对架构策略的选取进行决策。他可以灵活的运用于软件架构进行评审等工作中。
从技术的角度对软件架构进行评估,旨在通过分析来遇见软件的质量,通过分析来创建、选择、评估与比较不同的架构。ATAM方法不但能够揭示架构如何满足特定的质量需求,而且还提供了分析这些质量需求之间交互作用的方法。使用ATAM方法评价一个软件架构的目的是理解架构设计满足系统质量需求的结果。ATAM产生如下结果。
ATAM的九个步骤如下:
CBAM是在ATAM上构建,用来对于架构设计决策的成本和收益进行建模,是优化此类决策的一种手段。CBAM协助项目管理人根据其投资回报ROI选择架构策略。CBAM在ATAM结束时开始,它实际上使用了ATAM评估的结果。步骤如下:
定义1:构件是指软件系统中可以明确辨识的构成成分。而可复用构件是指具有相对独立的功能和可复用价值的构件。
定义2:构件是一个组成单元,具有约定规范的接口及明确的依赖环境。
定义3:构件是软件系统中具有相对独立功能、可以明确辨识、接口由七月制定、和语境由明显依赖关系、可独立部署的可组装软件实体。
公共对象请求代理架构。主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层的对象请求代理ORB,规定了分布对象的定义(接口)和语言映射,实现对象间的通信和互操作,是分布对象系统中的“软总线”;在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了构件框架,提供可直接为业务对象使用的服务,规定业务对象有效写作所需的协定规则。
CORBA CCM(CORBA构件模型)是OMG组织制定的一个用于开发和配置分布式应用的服务器端构件模型规范,它主要包含以下三项内容。
在分布式互操作协议上,J2EE同时支持远程方法调用RMI和互联网内部对象请求代理协议IIOP。
EJB中的Bean可以分为会话Bean和实体Bean,前者维护会话,后者处理事务,通常由Servlet负责与客户端通信,访问EJB,并把结果通过JSP产生页面返回客户端。
Microsoft的COM+组件
一般情况下,构件系统只在开发单位内部使用,而应用系统提供给外部客户。与应用系统相比,构件系统具有通用性、可复用性。一个构件系统是能提供一系列可复用特性的系统产品。
与传统的开发组织结构不同,它需要有一部分用于开发可复用资产的资源,这部分资源应同具体引用系统的开发资源分开,以确保不被占用。
实质上是用架构技术构建产品线,并在此基础上借用复用技术持续演化,不断的推出新产品,满足市场追求产品升级换代的需求。
软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性及,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。
可复用的资产非常广,包括以下几点:
软件产品线架构是针对一系列产品而设计的通用框架,并在此基础上,进一步向系列产品公用的模块实现实现,供直接重用;将架构用框架的形式予以实现,供定制使用。这就是通常所说的“平台”。
产品线架构较之单个产品架构,有如下三点特别之处:
通常应在识别变化时,应考虑三个方面:
开发(确定)产品线的方法有两种模型:
架构的本质在于其抽象性。包括两个方面的抽象:业务抽象和技术抽象。其中业务抽象面向特定的技术领域
特定领域软件架构DSSA可以看做开发产品线的一个方法(或理论),它的目标就是在支持在一个特定领域中有多个应用的生成。
DSSA的必备特征有:
从功能覆盖的范围角度理解DSSA中领域的含义有两种方法L
DSSA的活动阶段如下:
领域模型的主要作用如下:
架构(系统)演化包含七个步骤:
结构是元素本身的集合,而视图则是捕获和表达结构(文档描述)
软件视图通常分为三种类型:
| 组别 | 架构风格 | 说明 | 应用于 |
|---|---|---|---|
| 模块视图类型 | 分解 | 大模块分解为小模块,小到容易理解 | 资源分配、项目结构化和规划;信息隐蔽、封装;配置控制 |
| 模块视图类型 | 使用 | 一个单元的正确性依赖于另一个单元的正确性(如版本) | 设计子集;设计扩展(增量开发) |
| 模块视图类型 | 分层 | 上层使用下层的服务;实现隐藏细节的抽象 | 增量式开发;基于“虚拟机”上的可移植性 |
| 模块视图类型 | 类或泛化 | “继承自”或“是一个实例”;共享访问方法 | 面向对象的设计(使用公共模板)。 |
| 构件-连接器视图类型 | 客户机-服务器 | 构件是客户机和服务器,连接件是协议及共享消息 | 分布式操作;关注点分离(支持可修改性);负载均衡 |
| 构件-连接器视图类型 | 进程或通信进程 | 通过通信、同步或排除操作形成进程或线程之间的关联 | 调度分析;性能分析 |
| 构件-连接器视图类型 | 并发 | 在相同的“逻辑线程”上运行 | 确定资源争用;分析线程 |
| 构件-连接器视图类型 | 共享数据 | 运行时产生数据,使用数据(共享数据存储库) | 性能;数据完整性;可修改性 |
| 分配视图类型 | 部署 | 软件功能分配给软件(进程)、硬件(处理器)和通信路径 | 性能、可用性、安全性说明。尤其是在分布式或并行系统中 |
| 分配视图类型 | 实现 | 模块映射到开发活动中 | 配置控制、集成、测试活动 |
| 分配视图类型 | 工作分配 | 将责任分配到适当的开发小组,特别是公共部分不是每个人去实现 | 项目管理、管理通用性,最好的专业技术安排。 |
模块将遵循某种方式将软件系统分解成可管理的功能单元。
架构模块视图是通过文档来枚举系统的主要实现单元或模块,及这些单元之间的关系。任务完整的架构文档必须包含有模块视图,它为源代码提供蓝图。
模块视图的四种风格如下:
能定义由具有某种运行时存在的元素模型,这些元素包括进程、对象、客机、服务器及数据存储器等。此外,它还包括作为元素的交互路径,如通信链路和协议、信息流及共享存储器访问。几种风格如下:
硬件、文件系统和团队结构都会与软件架构进行交互,将软件架构映射到其环境的一般形式称为“分配视图类型”。
分配视图类型的常见风格如下:
对被用来在特定场景下解决一般设计问题的类和互相通信的对象的描述,通俗的说,可以把设计模式理解为对某一类问题的通用解决方案。
设计模式解决的是一类问题。是一种通用的解决方案,而不是具体的,也不是唯一的。学习设计模式时需要注意一下两点:
在描述一个设计模式,至少要包含四个方面:模式名称、问题、解决方案、效果。
23个设计模式统称为GoF模式,这23个模式如下:
软件架构描述了软件的组成。设计模式则更侧重于类与类、对象与对象之间的关系。
常见的架构风格有分层架构、客户端——服务器架构、消息总线、面向服务的架构。
GoF模式
| - | 创建型 | 结构型 | 行为型 |
|---|---|---|---|
| 应用于类 | Factory Method | Adapter | Interpreter Templete Method |
| 应用于对象 | Abstract Factory Builder Prototype Singleton |
Adapter Bridge Composite Decorator Facade Flyweight Proxy |
Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor |
J2EE设计模式分类
| 表现层 | 业务层 | 综合层 |
|---|---|---|
| Intercepting Filter Front Controller View Helper Composite View Service to Worker Dispacher View |
Business Delegate Value Object Session Facade Composite Entity Value Object Assembler Value List Handler Service Locator |
Data Access Object Service Activator |
在使用MVC架构进行Web应用开发时,通常需要对来自于客户的请求进行一些预处理,如验证客户身份、验证请求来源、对请求解码等,然后再传递给控制器。如果把这些预处理都交给控制器来完成,将增加控制器的复杂度,而且难以维护和扩展。
FilterManager负责调度整个FilterChain,它将在请求到达Target前拦截请求,并传递给FilterChain,由FilterChain中的过滤器依次进行预处理。知道请求经过最后一个过滤器后才完成了全部的预处理,然后由FilterManager把请求转发给实际的目标。
使用该模式使得预处理的逻辑和真正的处理逻辑分离,进行实际处理的Target只需要关心具体的逻辑,而同请求相关的预处理都放在FilterManager中进行。同时解除了这两类处理的耦合性,扩展、修改预处理过程变得容易,系统具有更好的维护性和扩展性
学习设计模式最重要的是理解,而不是生搬硬套。每种设计模式中都包含着良好的设计架构的思想,如隐藏内部细节,降低耦合度等,越是复杂的系统越是需要这些思想的支撑。
“错误”主要针对软件开发过程,“缺陷”主要针对软件产品。软件测试的目的就是在软件投入生产性运行之前,尽可能多的发现软件产品(主要是指程序)中的错误(缺陷)。
为了发现软件中的错误(缺陷),应竭力设计能暴露错误(缺陷)的测试用例。测试用例是由测试数据和预期结果构成的。一个好的测试用例极有可能发现至今为止尚未发现的错误(缺陷)的测试用例。一次成功的测试是发现了至今尚未发现的错误(缺陷)的测试。
也称模块测试,通常可以放在编程阶段,由程序员对自己编写的模块自行测试,检查模块是否实现了详细设计说明书中规定的功能和算法。单元测试主要发现变成和详细设计中产生的错误,单元测试计划应该在详细设计阶段制定。
单元测试期间着重从以下几个方面对模块进行测试:模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件等。
测试一个模块时需要为该模块编写一个驱动模块和若干个桩模块。驱动模块用来调用被测模块,它接收测试者提供的测试数据,并把这些数据传送给被测模块,然后从被测模块中接收测试结果,并以某种可以看见的方式将测试结果返回给测试者。桩模块用来模拟被测模块所调用的子模块,它接收被测模块的调用,检验调用参数,并以尽可能简单的操作模拟被测模块所调用的子模块功能,把结果返回被测模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。
也称组装测试,它是对由各模块组装而成的程序进行测试,主要目标是发现模块间的接口和通信功能。集成测试主要发现设计阶段产生的错误,集成测试计划应该在概要设计阶段制定。
集成的方式可分为非渐增式和渐增式。
非渐增式集成是先测试所有的模块,然后一下子把所有这些模块集成到一起,并把庞大的程序作为一个整体来测试。只适合于一些非常小的软件。
渐增式集成是将单元测试和集成测试合并到一起,它根据模块结构图,按某种次序选一个尚未测试的模块,把它同已经测试好的模块组合在一起进行测试,每次增加一个模块,直到所有模块被集成在程序中。这种测试方法比较容易定位和改正错误。
渐增式集成又可以分为自顶向下集成和自底向上集成。自顶向下集成先测试上层模块,再测试下层模块。由于测试下层模块时它的上层模块已经测试过,所以不必另外编写驱动模块。自底向上集成先测试下层模块,再测试上层模块。同样,由于测试上层模块时他的下层模块已经测试过,所以不必另外编写桩模块。
是软件测试中最后的,最完整的测试,它是在单元测试和集成测试的基础上进行的,它从全局来考察软件系统的功能和性能要求。系统测试计划应该在需求分析阶段制定。
系统测试包括确认测试和验收测试。确认测试,主要依据软件需求说明书检查软件的功能、性能及其他葛铮是否与用户的需求一致。软件配置复查时确认测试的另一项重要内容。复查的目的是保证软件配置的所有成分都已齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节。
测试由用户在开发者的场所进行,并且在开发者的指导下进行测试。开发者负责记录发现的问题和使用中遇到的问题。也就是说,测试是在“受控的”环境中进行的。
测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场,用户负责记录发现的错误和使用中需要的问题并把这些问题报告给开发者。也就是说,测试是在“不受控的”环境中进行的。
经过系统测试之后的软件通常就可以交付使用了。
又称结构测试,主要用于单元测试阶段。它的前提是可以把程序看成装在一个透明的白箱子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否都能按预定要求正常工作。
白盒测试根据软件的内部逻辑设计测试用例,常用的技术是逻辑覆盖,即考察用测试数据运行被测程序对程序逻辑的覆盖程度。主要的覆盖标准如下:
又称功能测试。主要用于集成测试和确认测试阶段,它把软件看做一个不透明的黑箱子,完全不考虑(或不了解)软件的内部结构和处理算法,只检查软件功能是否能按照软件需求说明书的要求正常使用,软件是否能适当的接收输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息的完整性等。
黑河测试根据软件需求说明书所规定的功能来测试用例,不考虑软件的内部结构和处理算法。
常用的黑盒测试技术如下:
错误的严重程度分类:
1. 轻微:界面文字有个别的错别字,但不影响理解
2. 中等:界面文字错误可能误导操作者
3. 使人不悦:数字串被断开
4. 影响使用:有些交易没有处理
5. 严重:丢失交易
6. 非常严重:不正确的交易处理
7. 季度严重,经常出现不正确的交易
8. 无法容忍:数据库遭到破坏
9. 灾难性:系统无法工作
10. 传染性:可导致其他系统无法工作
又称为排错。测试成功的标志是发现了错误。根据错误迹象确定错误的原因和准确位置并加以改正,主要依靠排错技术。
隐藏在程序中的错误具有下列条数的性质:
常用的排错策略分为三类:
在评审过程中,以下几点值得注意:
一些适于考虑进行自动化的测试工作为:
面向对象的软件测试分为:面向对象分析的测试、面向对象设计的测试、面向对象编程的测试、面向对象的单元测试、面向对象的集成测试和面向对象的系统测试。
传统的面向过程分析是一个功能分解的过程,是把一个系统看成可以分解的功能的集合。功能分解分析法的着眼点在于一个系统需要什么样的信息处理方法和过程,以过程的抽象来对待系统的需要。面向对象的分析直接映射问题空间,将问题空间内的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和操作表示实例的特性和行为。OOA的结果为后面阶段类的选定和实现、类层次结构的组织和实现提供平台。因此,对OOA的测试,应从以下方面考虑:
传统的结构化设计方法,采用面向作业的思路,它把系统分解以后,提出一组作业,这些作业是以过程实现系统的基础构造,把问题域的分析转化为求解域的设计,分析的结果是设计阶段的输入。而OOD以OOA为基础归纳出类,并建立类结果或进一步构造成类库,实现分析结果对问题空间的抽象。OOD确定类和类结构不仅满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能够方便的实现功能的重用和扩充,以不断适应用户的要求。因此,对OOD的测试,应从如下三个方面考虑:
在OOP阶段,忽略类功能实现的细则,将测试的焦点集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面:
将操作作为类的一部分
对OO软件的集成测试也有两种不同策略:第一种称为基于线程的测试,集成系统的一个输入或事件所需的一组类,每个线程被集成并分别测试,并使用回归测试以保证没有产生副作用。第二种称为基于使用的测试,首先测试那些几乎不使用其他类的类(称为独立类)并开始构造系统,当独立类测试完成后,下一层的使用独立类的类(称为依赖类)被测试。这个依赖类层次的测试序列以致持续到构造完整个系统。
系统测试时,应该参考OOA分析的结果,对应描述的对象、属性和各种服务,检查软件是否能够完全”再现“问题空间。系统测试不仅是检查软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认。
是一种以应用为中心,以计算机技术为基础,可以使用不同应用对功能、可靠性、成本、体积、功耗等方面的要求,集可配置,可裁剪的软、硬件与一体的专用计算机系统。核心要素如下:
归纳起来,典型的嵌入式系统具有以下特点:
是嵌入式系统的核心部件,可以分为如下几类:
是连接计算机系统内部各个部件的共享高速通路。嵌入式系统的总线一般分为片内总线和片外总线。片内总线是指嵌入式微处理器内的CPU与片内其他部件连接的总线;片外总线是指总线控制器集成在微处理器内部或外部芯片上的用于连接外部设备的总线。
几种嵌入式总线技术的主要特点
| 总线类型 | 主要特点 |
|---|---|
| AMBA总线 | 带宽高;采用地址与数据分离的流水线操作;支持固定长与不定长突发传送;兼容性好;支持多个总线主设备 |
| PCI总线 | 速度快;支持线性突发传送;支持即插即用;兼容性好;可靠性高;可扩展性好 |
| Avalon总线 | 支持字节、半字和字传输;同步接口;独立的地址线、数据线和控制线;设备内嵌译码部件;支持多个总线主设备;自动生成仲裁机制;多个主设备可同时操作使用一条总线;可自动调整总线宽度,以适应尺寸不匹配的数据。 |
主要包括主存和外存。
嵌入式系统中接口电路的设计需要首先考虑的是电平匹配问题,嵌入式系统微处理器所提供与接收信号的电平,必须与所连接的设备的电平相匹配,否则将导致电路损坏或逻辑判断错误。其次,还要考虑驱动能力和干扰问题等因素。
当前,在嵌入式系统中广泛应用的接口主要有:
软件架构体系自底向上有三部分组成:嵌入式操作系统、应用支撑软件和应用软件。
嵌入式系统的软件开发采用交叉平台开发方法CPD,即软件在一个通用平台上开发,而在另一个嵌入式目标平台上运行。这个用于开发嵌入式软件的通用平台通常叫做宿主机系统,被开发的嵌入式系统通常叫做目标机系统。而当软件执行环境和开发环境一致时的开发过程则成为北地开发ND。
通常包含三个高度集成的部分。
宿主机提供的基本开发工具是交叉编译器、交叉链接器和源代码调试器。作为目标机的嵌入式系统则可能提供一个动态装载器、链接装载器、监视器和一个调试代理等。在目标机和宿主机之间有一组连接,通过这组连接程序代码映像从宿主机下载到目标机,这组连接同时也用来传输宿主机和目标机调试代理之间的信息。
交叉编译器将用户编写的C/C++/Java源代码文件根据目标机的CPU类型生成包含二进制代码和程序数据的目标文件。在此过程中,交叉编译器会产成一个符号表,包含所产生的目标文件中指向映像地址的富豪命,当建立重定位输出时,编译器为每个相关的符号产生地址。
目前,嵌入式系统中常用的目标文件格式是COFF(公共对象文件)和ELF(可执行链接格式)。另外,一些系统还需要有一些专门的工具将上述格式转换成二进制代码格式才能使用。
通常,一个目标文件包含:
就是讲目标代码下载到目标机上,让其执行,通过观察指示灯来判断程序的运行状态。基本步骤是:
也叫插桩法。目标机和宿主机一般通过串行口、并行口或以太网相连接,采用这种方法还需要在宿主机的调试器内和目标机的操作系统上分别启动一个功能模块,然后通过这两个功能模块的相互通信来实现对应用程序的调试。在目标机上添加的模块叫做桩,也叫调试服务器或调试监控器,主要有两个作用:其一,监视和控制被调试的程序;其二,跟宿主机上调试程序通信,接收控制指令、返回结果等。
基本步骤是:
相对于直接测试法,插桩法明显的提高了开发效率,降低了调试的难度,缩短了产品的开发周期,有效的降低了开发成本。但是仍有明显的缺点,主要体现在以下几个方面:
为了克服插桩法的缺点,出现了一种改良的方法,即ROM仿真器法
ROM仿真器法可以被认为是一种用于替代目标机上ROM芯片的硬件设备,ROM仿真器一端跟宿主机相连,一端通过ROM芯片的引脚插座与目标机相连。对于嵌入式处理器来说,ROM仿真器像是一个只读存储器,而对于宿主机来说,像一个调试监控器。该方法有如下优点:
ICE是一种用于替代目标机上CPU的设备。对于目标机来说,在线仿真器就相当于他的CPU,在线仿真器本身就是一个嵌入式系统,有自己的CPU、内存和软件。即使没有目标机,仅用在线仿真器也可以进行程序的调试。
在线仿真器和宿主机一般通过串行口、并行口或以太网相连接。在连接在线仿真器和目标系统时,用在线仿真器的CPU引出端口替代目标机的CPU。
在线仿真器能实时的检查运行程序的处理器的状态,设置硬件断点和进行实时跟踪,所以提供了更强的调试功能。支持多种时间的触发断点,这些时间包括内存读写、I/O读写及中断等。一个重要特性就是实时跟踪。但是,在线仿真器的价格一般都比较昂贵。
ICD是CPU芯片内部的一种用于支持调试的功能模块。按照实现的技术,片上调试器可以分为仿调试监控器、后台调试模式BDM、连接测试存取组JTAG和片上仿真OnCE等几类。
该方法的主要优点是:不占用目标机的通信端口等资源;调试环境和最终的程序运行环境基本一致;无需在目标机上增加任何功能模块即可运行;支持软、硬断电;支持跟踪功能,可以精确计量程序的执行时间;支持时序逻辑分析等功能。
该方法的缺点是:实时性不如在线仿真器法强;使用范围受限,如果目标机不支持片上调试功能,则该方法不适用;实现技术多样,标准不完全统一,工具软件的开发和使用均不方便。
模拟器是运行在宿主机上的一种纯软件工具,它通过模拟目标机的指令系统或目标机操作系统的系统调用来达到在宿主机上运行和调试嵌入式应用程序的目的。
适合于调试非实时的应用程序,这类程序一般不与外部设备交互,实时性不强,程序的执行过程是时间封闭的,开发者可以直接在宿主机上验证程序的逻辑正确性。当确认无误后,将程序写入目标机上即可正确运行。
模拟器有两种主要类型:一类是指令级模拟器,在宿主机模拟目标机的指令系统;另一类是系统调用级模拟器,在宿主机上模拟目标操作系统的系统调用。
使用模拟器的最大好处是在实际的目标机不存在的条件下就可以为其开发应用程序,并且在调试时利用宿主机的资源提供更消息的错误诊断信息,但模拟器有许多不足之处。
是一种将数字传感器、变换器、工业仪表及控制执行机构等现场是被与工业控制单元,现场操作站等互相连接而成的网络。
是一种低带宽的底层控制网络,位于生产控制和网络结构的底层,因此也被称为底层网。主要应用于生产现场,在测量控制设备之间实现双向的、串行的、多节点的数字通信。
现场总线控制系统FCS是运用现场总线连接各控制器及仪表设备而构成的控制系统,该控制系统将控制功能彻底下放到现场,降低了安装成本和维护费用。现场总线控制系统把单个分散的测量控制设备变成网络节点,以现场总线为纽带,使这些分散的设备称为可以互相沟通信息共同完成自动控制任务的网络系统。
是一种把家庭范围内的个人计算机、家用电器、水、电、气仪表、照明设备和网络设备、安全设备连接在一起的局域网。
是一种通过无线电波传送数据的网络系统。
嵌入式设备上集成了TCP/IP协议栈及相关软件,这类设备可以作为Internet的一个节点,分配有IP地址,与Internet直接互联。
或通过接入设备接入Internet。
是指在嵌入式设备上使用的数据库管理系统。也称为移动数据库或嵌入式移动数据库。作用主要是解决移动计算环境下数据的管理问题。移动数据库是移动计算环境中的分布式数据库。
在嵌入式系统中引入数据库技术,主要是因为直接在嵌入式操作系统或裸机智商开发信息管理应用程序存在如下缺点:
实时系统可以看成是对外部事件能够及时响应的系统。这种系统最重要的特征是时间性,也就是实时性,实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果的时间。
对于实时系统的划分,通常还可以根据实时性的强弱,即系统必须对外部事件作出响应的时间长短,将实时系统分为:
根据对错失时限的容忍程度,可以将实时系统分为软实时系统和硬实时系统。
免费型。典型的由Linux
实时嵌入式操作系统RTEOS。支持实时系统工作,首要任务是调度一切可利用资源,以满足对外部事件响应的实时时限,其次着眼于提高系统的使用效率。主要用子啊控制、通信等领域
主要任务是定义系统的功能、决定系统的架构,并将功能映射到系统实现架构上。
一个良好的嵌入式系统设计方法是十分重要的,这是因为:
嵌入式系统软件的开发过程可以分为项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固话、测试及运行等几个阶段。
从系统的集成电路设计描述得到实际芯片的物理映射过程的实现技术就是IC(集成电路)技术,当前在半导体领域的三类实现技术,即全定制、半定制和可编程技术均可应用于嵌入式系统的硬件设计。
设计技术主要包括硬件设计技术和软件设计技术两大类。其中,硬件设计领域的技术主要包括芯片级设计技术和电路板级设计技术两个方面。
芯片级设计技术的核心是编译/综合、库/IP(知识产权)、测试/验证。编译/综合技术是设计者用抽象的方式描述所需的功能,并自动分析和插入实现细节。库/IP将预先设计好的低抽象级实现用于高级抽象。测试/验证技术确保每级功能正确,减少各级之间反复设计的成本。
嵌入式系统常用的计算模型有如下几种:时序计算模型、通信进程模型、状态机模型、数据流模型、面向对象模型、并发进程模型
有限状态机FSM是一个基本的状态模型,可以用一组可能的状态描述系统的行为,系统在任何时刻只能处于其中一个状态,也可以描述由输入确定的状态转移,最后可以描述在某个状态下或状态转移期间可能发生的操作。
当FSM被用于嵌入式系统设计时,其输入和输出的类型都是布尔类型,而函数表示含有布尔运算的布尔函数,这种模型对于没有数据输入或输出的很多纯控制系统而言已经足够。如果要处理数据,则将FSM扩展为带有数据路径的状态机FSMD。另外,对状态机模型可以进一步扩展以支持分级和并发,这种模型称为分级/并发FSM模型
是并发多任务模型派生出的一种模型,该模型将系统的行为描述为一组结点和边,其中结点表示变换,边表示从一个结点到另一个结点的数据流向。每个结点使用来自其输入边的数据,执行变换并在其输出边上产生数据。
每个边可能有货没有数据,出现在边上的数据称为令牌。当每个结点的所有输入边都至少有一个令牌时,该结点可触发。结点触发后,将使用来自每条输入边上的一个李竞拍,对所有使用的令牌进行数据变换,并在输出边上产生一个令牌,结点的触发仅决定于令牌出现的情况。
同步数据流模型中,在结点的每条输入边和输出边上分别标注每次触发所使用和产生的令牌数。该模型的优点是,在实现时不需要将其转换为并发多任务模型,而是用静态方式调度结点,产生时序程序模型。该模型可以使用时序程序语言来表达,不需要实时操作系统就可以执行,因此其执行效率更高。
是由一组进程构成,每个进程是一个顺序执行的过程,各进程间可以并发执行。并发进程模型提供创建、终止、暂停、恢复和连接进程的操作。进程在执行中可以相互通信,交换数据。进程间通信可以采用两种方式:共享变量和消息传递。信号量、临界区、管程和路径表达式等用来对并发进程的操作进行同步。
是以一种更加直接的方式刻画客观世界中的活动,模型中存在着潜在的并发执行能力。一个对象向另一个对象发送消息后,若不需要或不立即需要消息的执行结果,前者不必等待后者处理消息,消息发送者和消息接受者可以并发执行。对象不都是处于被动的提供服务状态,他们中的一些除了能通过接收消息向外提供服务外,还可以有自己的事务处理。一个对象往往可以同时处理多个消息。
对象是数据和操作的封装体,数据存放在对象的局部变量中,对象的状态由对象所有的局部变量在某一时刻的取值来表示。在并发环境中,还要考虑对象并发状态的描述问题,因为对象的并发控制是根据对象的并发状态来进行的。
把并发和面向对象相结合,归结起来可分为两条途径:
面向对象的并发模型可以分为两种类型:
需求分析阶段最重要的文档输出就是系统的规格说明。
规格说明是精确反映客户需求并且作为设计时必须遵循的要求的一种技术文档。规格说明应该是清晰的、无歧义的,否则由该规格说明建造系统可能不符合实际要求。流行的方法是采用UML进行规格说明的描述。
在需求分析阶段,通过用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求,分析阶段主要关心问题域中的主要概念和机制,需要识别这些类及它们相互间的关系,并用UML类图来描述。在分析阶段,只对问题域的对象建模,而不考虑定义软件系统中技术细节的类。
先考虑系统的软件架构,然后再考虑其硬件实现。
嵌入式系统的开发环境由四部分组成:目标硬件平台、嵌入式操作系统、编程语言和开发工具。
根据需求分析阶段的规格说明文档,确定系统计算模型,对软件部分进行合理的设计即可。
通常嵌入式系统测试主要包括软件测试、硬件测试、单元测试三个部分。差别如下:
嵌入式测试主要集中在以下4个不同的方面:
项目管理是指在项目环境中运用专门的知识、技能、工具和方法,使项目能够实现或超过项目干系人的需要和期望。一般的项目管理分为范围管理、时间管理、费用管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理和整体管理9个知识领域。对于软件的开发管理来讲,软件范围管理、软件进度管理、软件成本管理、软件配置管理、软件质量管理、软件风险管理、开发人员管理7个方面的管理尤为重要。
项目管理首先要考虑三个约束条件:项目范围、时间进度、成本预算。
包括保证项目顺利完成所需的全部工作过程。其目的是控制项目的全部活动都在需求范围内,以确保项目资源的高效利用。主要包括项目启动、范围计划编制、范围定义、范围核实和范围变更控制5个部分的内容。项目启动是指批准项目启动或允许项目进入下一个过程;范围计划编制是将生产项目产品所需进行的项目工作渐进明细和形成文件的过程;范围定义是把主要的项目可交付成果分解成更小、更易管理的单元,以达到如下目的:
当范围定义不明确时,不可避免的变更会使最终项目成本大大超出预算,因为这些不可避免的变更会破坏项目节奏,导致返工,增加项目历时、降低生产率和工作人员的士气。范围核实是项目关系人正式接收项目范围的过程。范围核实需要审查可交付成果和工作结果,以确保它们都已经正确圆满的完成。如果项目被提前终止,项目核实过程应当对项目完成程度建立文档。范围核实与质量控制是不同的,范围核实是有关工作结果的“接收”,而质量控制是有关工作结果的正确性。项目范围变更涉及的是:
是保证在批准预算内完成项目所需要的过程。包括资源计划编制、成本估算、成本预算、成本控制3个主要部分内容。资源计划编制是确定为完成项目个活动需要什么资源和这些资源的数量。资源计划与成本估算是紧密相关的。成本估算是计算出完成一个项目的个活动所需个资源成本的近似值。当一个项目按合同进行时,应却分成本估算和定价这两个不同意义的词。成本估算所涉及的是对可能数量结果的估算——执行组织为提供产品和服务的花费是多少;而定价是一个商业决策——执行组织为提供的含片或服务索取多少费用。成本估算包括确认和考虑各种不同的成本估算替代方案。
成本预算是把估算的总成本分配到单个活动或工作包上去,建立基准计划来度量项目实际绩效。成本控制的内容有:对造成成本基准计划变化的因素施加影响,以保证这种变化得到一致认可;确定成本基准计划是否已经发生变化;当变化发生和正在发生时,对这种变化执行管理。
成本控制包括以下方面:
时间管理包括项目按时完成所需的各个过程。包括活动定义、活动排序、活动历时估算、进度计划编制、进度控制5个部分内容。
活动定义是对WBS中规定的可交付成果或半成品的产生所必须进行的具体活动进行定义,并形成文档。
活动排序是确定各活动之间的依赖关系,并形成文档。
项目活动历时估算是根据项目范围和资源的相关信息为进度表设定历时输入的过程。
制定进度计划要决定项目活动的开始和结束日期。若开始和结束日期是不现实的,项目就不可能按计划完成。
进度控制涉及的是:
SCM是指在软件系统中确定和定义构件(源代码、可执行程序、文档等),在整个生命周期中控制发布和变更,记录和报告构件的状态和变更请求,并定义完整的、正确的系统构件的过程。软件配置管理包括以下几个方面功能:
在另一标准ISO中,对软件配置管理系统做了如下要求:
两个版本都强调了三个核心部分:版本管理、问题跟踪和建立管理,其中版本管理是基础,应完成如下主要任务
可以用于Windows和Unix开发环境。主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务,支持Client Server的网络结构,主要功能有:
提供了基本的认证安全和版本控制机制,包括入库、出库、分支、标定等功能。是一种源代码控制系统,带有专业的文档、代码管理库。
文档计划一般包括以下几个方面内容:
是指在软件开发过程中,用户确定软件需求之后,由于各种客观和主观条件的变化,用户增加了新的需求或改变了原有需求。
通常软件开发机构会采取如下措施:
是指在软件需求管理的过程中定义需求变更流程,分析需求变更影响,控制变化的版本,维护需求变更记录,跟踪每项需求状态。
关于软件质量,IEEE729-1983有如下定义:
软件质量管理的目的是建立对项目的软件产品质量的定量理解和实现特定的质量目标。
项目质量管理包括保证项目能满足原先规定的各项要求所需要的过程,即“总体管理功能中决定质量方针、目标与责任的所有活动,并通过诸如质量规划、质量保证、质量控制、质量改进等手段在质量体系内加以实施”。软件质量管理着重于确定软件产品的质量目标,制定达到这些目标的计划,并监控及调整软件计划、软件工作产品、活动及质量目标以满足顾客及最终用户对高质量产品的需要及期望。软件质量管理包括下面三个部分:
在正式进行软件开发前,需要制定一个软件质量计划,用于说明项目管理团队奖如何实施其质量方针。在该阶段应该完成以下活动:
指为项目符合相关质量标准要求树立信心而在质量系统内部实施的各项有计划的系统活动。
指监视项目的具体结果,确定其是否符合相关的质量标准,并判断如何杜绝造成不合格结果的根源。应贯穿于项目的始终。质量管理包括如下活动;
不是在软件开发完毕后进行评审,而是在软件开发的各个阶段都要进行评审。首先,要明确评审目标包括如下部分:
其次,评审过程应包括:
还应该遵循基本的评审准则,如:
测试过程中将产生下述基本文档
项目风险的管理不仅贯穿于整个项目过程,而且在项目事件发生之前风险的分析就已经开始。可以根据风险控制与项目实现发生的时间将风险控制划分为三个部分:事前控制——风险管理规划,事中控制——风险管理方法,事后控制——风险管理报告。
是指对象项目风险进行识别、分析、并蔡旭应对测试的系统过程。包括尽量扩大有利于项目目标事项发生的概率与后果,而尽量减少不利于项目目标事项发生的概率与后果
项目风险按是否有可确定性划分为:已知风险、可预知风险、不可预知风险。按风险管理的内容又可以划分为如下几种类型:
风险管理包括对项目风险识别、分析和应对的过程,从而将正面事件影响扩大到最大化和将负面影响减少到最小化。项目风险管理的主要过程包括:
上述过程不仅彼此有交互作用,而且也同其他知识领域的过程有交互作用。一般来说,每个过程在项目中至少出现一次。
就是识别整个项目过程中可能存在的风险事件。一般是根据项目的性质,从潜在的事件及产生的后果和潜在的后果和产生的原因来检查风险。收集、整理项目可能的风险并充分征求各方意见就形成项目的风险列表,并对这些风险事件进行描述。
确定了项目的风险列表之后,就可以进行风险分析。风险分析的目的是确定每个风险对项目的影响大小,一般是对已经识别出来的项目风险进行量化估计,这里要注意三个概念:
风险分析就是对以上识别出来的风险事件做风险影响分析。
制定风险应对策略主要考虑一下4个方面的因素:可规避性、可转移性、可缓解性、可接受性。4种应对方法如下:
确定风险的应对策略后,就可变写风险应对计划,主要包括:已识别的风险及其描述、风险发生的概率、风险应对的责任人、风险对应策略及行动计划、应急计划等。
针对需要采取应对措施的风险事件,开发应对计划,一旦发生风险事件,就实施应对计划。应对计划常应用于项目运行期间发生的已识别风险,事先制定应变计划可大大降低风险发生时采取行动的成本。
风险监控包括两个层面的工作:其一是跟踪已识别风险的发展变化情况,包括在整个项目周期内,风险产生的条件和导致的后果变化,衡量风险减缓计划需求。其二是根据风险的变化情况及时调整风险应对计划,并对已发生的风险及其产生的遗留风险和新增风险及时识别、分析,并蔡旭适当的应对措施。
用于确定、记录并分派项目角色、职责和请示汇报关系。角色、职责和请示汇报关系可以分派给个人或集体
是指获取分派到项目上、并在那里工作所需的人力资源(个人或集体)。要考虑的问题有:
项目经理是团队组织的核心,其综合素质直接影响项目的成败。一般要求项目经理具备如下能力:
项目经理必须具备高超的领导才能拿和强烈的科技意识和较强的业务处理能力。
首先,项目经理应懂得如何授权和分配职责,采取参与和顾问式的领导方式,发挥导向和教练作用,让成员在职责范围内充分发挥能动性,自主的完成项目工作。
其次,项目经理应善于激励。进行非物质激励。另外,对项目成员的工作成绩要及时表示认可。
第三,项目经理应该为成员梳理榜样,表现出积极的心态,称为团队的典范和信心的源泉。
第四,项目经理应该能够果断抉择,负责人的主要任务是决策。
有效的沟通是项目顺利进行的保证,沟通及时、集思广益、步调一致,才能取得项目最终的成功。在沟通过程中,项目经理应善于提问,并做到有效的聆听,能经常站在对方的角度思考问题。
良好的人际关系有助于项目的协调,避免生硬的操作方式。
项目的特点决定了项目工作过程存在一定的不可预见性,项目经理需要做好随时面对压力甚至是冲突的准备。一旦面临压力或冲突,最重要的是保持冷静,避免项目陷入困境。项目经理要以乐于解决问题的姿态出现在团队及上级或客户面前。
出色的项目经理重视对项目成员的培养,通过项目过程使小组每个成员都能发挥才能并提升员工的能努力,促进员工的自我发展。项目经理要帮助成员明晰自己的只也和技能发展方向,分配合适的工作任务,鼓励学习和相互交流,让项目小组成员具有很强的成就感。
当需要在同一时段处理两项以上的任务是,时间管理就是必要的。而项目经理往往需要同时面对数项甚至是十几项任务,可见有效的时间管理是极为重要的。项目经理不仅需要管理好自己的时间,还需要与相关部门及人员订立时间使用协议,尽量较少非预期的时间占用。
合格的项目经理具有敏锐的洞察力,能瞄准目标,实事求是,精心组织,坚决果断,灵活应变,享有信誉;善于制定计划,解决问题,沟通信息;具有良好的市场意识和交际能力。
他应该具有实现这些条件的素质,并注重经验的积累、素质的提高和能力的培养。
项目团队的建设既包括提高仙姑干系人作为个人做出贡献的能力,也包括提高项目团队作为集体发挥作用的能力。个人的培养(管理能力及技术水平)是团队建设的基础,而团队建设则是项目实现其目标的关键。
团队中的每个人必须积极融入整个集体中,不能互相推诿,更不能互相埋怨和职责,正确的态度是大家在充分信任的基础上团队协作、互相帮助、主动承担任务,利用集体的智慧获得成功。
在软件项目中,应该为软件开发人员和管理人员等各类项目人员营造一个和谐、梁皓的工作氛围,为开发人员创造出一个人尽其才的环境也是项目成功的重要缓解,让他们能得心应手的施展自己的才华,特别在工作安排上要煞费苦心,针对每个人不同的特长,根据项目的具体环境和条件把人员合理的安排在恰当的岗位上。使他们能感到项目成功的把握并有积极的工作心态,将项目作为自己事业的一部分,确保项目队伍的稳定性和连续性。
软件项目团队的成长规律,分为以下4个阶段:
促使个体成员转变为团队成员。
为使项目团队明确方向,项目经理一定要向团队成员说明项目目标,并设想出项目成功的美好前景及成功所产生的益处;公布项目的工作范围、质量标准、预算及进度计划的标准和限制。项目经理在这一阶段还要进行组织构件工作,包括确立团队工作的初始操作规程,规范沟通渠道、审批及文件记录工作。所以在这一阶段,对于项目成员采取的激励方式主要为预期激励、信息激励和参与激励。
这一阶段,成员们开始着手进行分配到的任务,缓慢的推进工作。
震荡阶段的特点是人们有挫折、愤怒或者队里的情绪。这一阶段士气很低,成员可能会抵制形成团队,因为他们要表达与团队联合相对立的个性。
因此在这一阶段,项目经理要做导向工作,致力于解决矛盾,绝不能希望通过压制来使其自行消失。这时,对于项目成员采取的激励方式主要是参与激励、责任激励和信息激励。
经受了震荡阶段的考验,项目团队就进入了发展的正规阶段。项目团队逐渐接受了现有的工作环境,团队的凝聚力开始形成。
在正规阶段,项目经理采取的激励方式除参与激励外,还有两个重要方式:一是发掘每个成员的自我成就感和责任意识,引导员工进行自我激励;二是尽可能多的创造团队成员之间互相沟通、相互学习的环境,以及从项目外部聘请专家讲解与项目有关的新知识、新技术,给员工充分的知识激励。
团队成长的最后阶段是表现阶段。这时,项目团队积极工作,急于实现仙姑目标。这一阶段的工作绩效很高,团队有集体感和荣誉感,信息十足。
这一阶段,项目经理需要特别关注预算、进度计划、工作范围及计划方面的项目业绩。如果实际进程落后于计划进程,项目经理就需要协助支持修正行动的制定与执行。这一阶段的主要方式是危机激励、目标激励和知识激励。
需要强调的是,对于信息系统建设人才,要更多的引导他们进行自我激励和知识激励。足够的物质激励是不言而喻的,永远都是最有效的激励。
激励的结果是使参与信息系统的所有成员组成一个富有成效的项目团队,这种团队具有如下特点:
指软件开发结束后交付用户使用,用户在实际使用中对软件是否符合开发时制定的一系列评价标准进行打分,看是否满足了用户的使用要求。通常,关注如下几点:
用于帮助软件企业对其软件生产过程进行计划、过程诊断、改进方案的制定及实施工作。它的实施对象是软件企业的软件过程,即软件产品的生产过程,也包括配置管理、软件维护等辅助过程。目前,使用最多的软件过程改进模型包括CMM、CMMI、ISO9000和ITIL等系列标准。
信息系统是一个由人、计算机等组成的能进行信息的手机、传递、存储、加工、维护和使用的系统,它是一门综合了经理管理理论、运筹学、统计学、计算机科学的系统性和边缘性科学。
信息系统包含三大要素,分别是系统的观点、数学的方法和计算机应用。能够充分利用数据资源为企业经理管理服务;能够利用信息和模型辅助企业决策,从而预测和控制企业行为。
信息系统IS一般泛指手机、存储、处理和传播各种信息的具有完整功能的集合体。现代的信息系统总是指以计算机为信息处理工具、以网络为信息传输手段的信息系统。
第一类数据环境:数据文件。特征是:没有使用数据库管理系统,根据大多数的应用需要,由系统分析师和程序员分散的设计各种数据文件。特点是简单,相对容易实现。但随着应用程序增加,数据文件数目剧增,导致很高的维护费用;一小点应用上的变化都将引起连锁反应,使修改和维护工作缓慢切费用高昂,并很难进行。
第二类数据环境:应用数据库。这类信息系统,虽然使用了数据库管理系统,但没达到第三类数据环境的共享程度。分散的数据库为分散的应用而设计。实现起来比第三类数据环境简单。像第一类数据环境一样,随着应用的扩充,应用数据库的个数,以及每个数据库中的数据量也在急剧增加,随之而导致维护费用的大幅度增高,有时甚至高于第一类数据环境。该类数据环境还没有发挥使用数据库的主要优越性
第三类数据环境:主题数据库。信息系统所建立的主题数据库与一般具体的应用有很大的区别,它有很强的独立性,数据经过设计,其存储去的结构与使用它的处理程序都是独立的。各种面向业务主题的数据库,如顾客数据、产品数据或人事数据,通过一些共享数据库被联系和体现出来。这种主题数据库的特点是:经过严格的数据分析,建立应用模型,虽然设计开发需要花费较长的时间,但其后的维护费用很低。最终(但不是立即)会使应用开发加快,并能使用户直接与这些数据库交互使用数据。主题数据库的开发需要改变传统的系统分析方法和数据处理的管理办法。但是,如果管理不善,也会蜕变成第二类甚至是第一类数据环境。
第四类数据环境:信息检索系统。一些数据库经过组织能保证信息检索和快速查询的需要,而不是大量的事务管理。软件设计中要采用转换文件、倒排表或辅关键字查询技术。新的字段可随时动态的加入到数据结构中。有良好的最终用户查询和报告生成软件工具。大多数用户掌握的系统都采用第四类数据库。这种环境的特点是:比传统的数据库有更大的灵活性和动态可变性。一般应该与第三类数据环境共存,支持综合信息服务和决策系统。
一个公司的管理活动可以分成4级:战略级、战术级、操作级和事务级,相应的,信息系统就其功能和作用来看,也可以分为4种类型,即战略级信息系统、战术级信息系统、操作级信息系统和事务级信息系统。一般来说,战略级信息系统的所有者和使用者都是企业的最高管理员,对于现代公司制企业,就是企业的董事会和经理班子;战术级信息系统的使用者一般是企业的中层经理及其管理的部门;操作级信息系统的使用者一般是服务型企业的业务部门;事务级信息系统的使用者一般是企业的管理业务人员。
也是信息系统的概念阶段或者是信息系统的需求分析阶段。这一阶段又分为两个过程,一是概念的产生过程,即根据企业经营管理的需要,提出建设信息系统的初步想法;而是需求分析过程,即对企业信息系统的需求进行深入的调研和分析,并形成需求分析报表。
是信息系系统生命周期中最重要和最关键的阶段。该阶段又可分为5个阶段,具体如下:
当信息系统通过验收,正式移交给用户之后,系统就进入了运行阶段。
要保障信息系统长长运行,一项不可缺少的工作就是系统维护。在软件工程中,把维护分为4中类型,即排错性维护、适应性维护、完善性维护和预防性维护。一般在系统运行初期,排错性维护和适应性维护比较多,而到后来,完善性维护和预防性维护会比较多。
主要包括以下几项含义:
一是“用户”有确定的范围。
二是用户,特别是核心用户,应当参与信息系统的整个过程。
三是用户应当深度参与系统开发。
是由结构化系统分析和设计组成的一种信息系统开发方法。
它假定被开发的系统是一个结构化的系统,因而,其基本思想是将系统的生命周期划分为系统调查、系统分析、系统设计、系统实施、系统维护等阶段。结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析设计的要求对其进行进一步的模块分解或组合。主要特点如下:
是一种根据用户需求,利用系统开啊工具,快速的建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
是对客观世界的一种看法,是把客观世界从概念上看成一个由相互配合而协作的对象所组成的系统。
系统是由相互作用和相互依赖的若干部分,按一定规律结合成的、具有特定功能的有机整体。系统有下述特征:
按照系统功能划分:工业控制系统、信息管理系统、军事系统和经济系统等。
按照系统与外界的关系划分:封闭系统和开放系统
按照系统的内部结构划分:开环系统和闭环系统等。
按照抽象程度将系统分为:概念系统(描述系统的主要特征和大致轮廓)、逻辑系统(脱离实现细节的合理系统)和物理系统(实际存在的系统)。
从不同的角度、不同的背景、不同的应用目的,系统工程有不同的含义。归纳不同的含义,给出系统工程的定义如下:
系统工程是以研究大规模复杂系统为对象的一门交叉学科。它把自然科学和社会科学的某些思想、理论、方法、策略和手段等根据总体协调的需要,有机的联系起来,应用定量和定性分析相结合的方法和计算机等技术工具,对系统的构成要素、组织结构、信息交换和反馈控制等功能进行分析、设计、制造和服务,从而达到最优设计、最优控制和最优管理的目的。
一般泛指手机、存储、处理和传播各种信息的具备完整功能的集合体。当前信息系统最重要的特征是计算机和互联网技术的应用。
现代信息系统是以计算机为信息处理工具,以网络为信息传输手段的;它最大限度的屏蔽了时间和空间的限制,使人们能以最快捷的方式获取所需信息并加以利用。
将系统工程的理论、方法应用到信息系统,并结合信息系统自身特点,就形成了信息系统工程。信息系统工程应强调研究法的整体性、系统性,技术应用的综合性和项目管理的规范化、标准化。
研究方法的整体性,就是把研究对象看做一个由若干个子系统有机结合的整体来分析和设计。对各子系统的技术首先要从实现整个系统技术协调的观点来考虑,从总体最有的需求来选择解决方案。研究方法的系统性要求研究方法反映和顺应客观事物和系统自身的特征和运动规律。
一个复杂的信息系统工程客观上存在两个秉性工程,一个是工程技术进程,一个是对工程技术进程的管理控制进程。后者包括工程的规划、组织、控制、进度安排,对各种方案进行分析、比较和决策、评价选定方案的技术效果等。
信息系统工程的内容主要包括几个方面:一是体系,二是技术、三是管理。
信息系统分为信息网络系统、信息资源系统和信息应用系统三类,并对每一类的含义进行了界定:
软件工程和信息工程都是信息系统工程的技术基础。
软件工程是开发、运行、维护和修复软件的系统方法。其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必须的数据的集合。
软件工程包括三个要素:方法、工具和过程。方法为软件开发提供了“如何做”的技术。包括项目计划与估算、需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试及维护等;工具包括各种软件工具、开发及其和开发过程信息库,提供自动或半自动的软件开发环境;过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理及软件开发各个阶段完成的里程碑。
信息工程是指以数据系统为基础,建立一个信息化企业所需要的一套相互关联的原则。信息工程的主要焦点是用计算机来存储和维护数据,而信息则是从这些数据提炼出来,来满足人们的某种需要的数据。
信息工程方法的主要特点:一是以数据为中心,进一步的工作是建立主题数据库;二是将工程的实施划分为对业务系统的实施和对技术系统的实施。前者包含了软件的技术内容,而后者则包含了工程内容。
组织和流程是两个既有联系又有区别的概念。一个组织必然有工作,而有工作就必然有流程;任何流程必然发生在某一个具体的组织之内。因此,组织流程管理是一个组织管理的重点和中心内容,也是信息系统工程的重要内容。
组织流程管理模式的主要工作在于处理好组织内各流程之间的关系,合理的在各流程之间分配资源。因此,必须建立有效的组织保障,这样才能保证流程管理工作的连续性和长期性。有效的组织保障包括:
信息系统工程首先是一项工程,而一项工程一般总是被定义为一个项目,因此,信息系统工程管理也可以视同为项目管理。
所谓“项目”是指在特定的条件下,具有特定目标的一次任务,是在一定时间内,满足一系列特定目标的多项相关工作的总称。
以上关于项目的定义包含三层含义,一是项目是一次性的任务,且有特定的范围和要求;二是在一定的组织机构内,利用有限资源在规定时间内完成任务;三是任务要满足一定性能、质量、水浪、技术指标等要求。所以可以用项目管理的思想和方法来指导信息系统的建设。
项目管理就是把各种资源应用于目标,以实现项目的目标,满足各方面既定的需求。
在具体实施过程中,项目管理一般包含了一下几个方面的内容:
是信息系统工程生命周期的第一阶段,这一阶段的主要目标是明确系统整个生命周期内的发展方向、系统规模和开发计划。
不少已经建成或正在建设的系统仍然存在一系列问题,主要如下:
综上所述,在系统建设中,往往缺乏科学的、有效的系统规划。
主要目标就是制定出信息系统工程的长期发展方案,决定信息系统工程在整个生命周期内的发展方向、规模和发展过程。这样做能为以后的系统分析和设计打好基础。这个阶段的主要任务是:
进行信息系统工程的总体规划一般包括以下几个阶段。
就是信息系统工程的方向和指导方针。
信息系统工程建设初期的总体规划是完成后续工作,如详细定义信息系统工程的需求、优化企业各类业务流程、在项目实施中控制需求范围,保证信息系统工程顺利实施、取得良好效果的关键所在。信息系统的总体规划是进行具体开发工作的必要准备和基本依据。
这里要注意两个原则:
一是从组织的战略出发,而不是从系统的需求出发,这样就可以避免脱离组织宗旨和战略目标,走入为建设而建设的困境;
二是从业务的变革出发,而不是从技术的变革出发,这样有利于充分利用组织的现有资源来满足关键需求,从而避免信息系统工程无法有效的支持组织决策。
信息系统工程规划的主要目标是根据企业总体目标规划好统一的、既有集中式又有分布式、分期逐步实现的数据平台和应用平台的建设。
要根据用户的需求和组织的现状,将目标进行分解和阐释。在总体目标的指导下,进一步规划系统的实施范围、功能结构、开发进度、投资规模、参与人员和组织保证等;在做好可行性分析的基础上,制定出实施方案,确定系统的总体结构和子系统的划分。以上工作完成后,要组织有关专家对总体规划报告进行评估认证,根据认证意见修改或调整计划,必要时重新制定。
从层次上可以分为:信息战略规划、信息资源规划、信息系统工程建设规划和企业资源计划(ERP)。
无论是哪个层次的信息系统工程规划,其基本原理和过程都是一致的,大致都需要完成以下任务:
信息系统工程的规划本质上可以对从完成业务战略出发到实现信息系统工程战略进行定位。
根据已确定的系统目标和估算出的整个信息系统的信息量,考虑企业现有的客观条件,包括资金情况、设备条件、现场条件、技术水平、管理现状等,合理的确定系统的范围和功能。应注意,在不超越客观条件限制的条件下,使人、物、财得到充分利用,使系统的功能尽可能完善,保证系统目标的实现。
对于新建立的系统,可能要求现行的管理机构在组织上和功能上做某些调整和变动,以适应计算机的管理。在划分系统范围时,应按客观需要选择必要的系统结构和功能,不要受现行系统的限制。因为新系统在管理机制上,性能要优于现行系统,所以不能把现行体制搬到新的系统上,必要时,可以启动业务流程再造。
步骤如下:
为了将复杂的信息系统分解成便于理解和实现的部分,一般将信息系统分解为若干相对独立而又相互联系的子系统,即信息系统的主要系统。
如果信息系统规模很大,为了方便信息系统的实现,还需将子系统再细分成若干个分系统。这是因为,首先,子系统键的相互关系仍过于复杂,分解之后,可以使这种关系更为明确、简单;其次,并不是在一个子系统中的所有过程都需要给予高优先级的支持,而应分出不同的优先级;最后,给定的子系统往往较大,难以一次实现,需要以分系统或几个分系统为单位来实现。
总体规划的成果是可行性分析报告和总体规划报告。
可行性分析报告也成为可行性研究。
总体规划报告是信息系统功能总体规划的最终成果,经过一定的审批程序,以组织的名义发布实施,成为信息系统工程的指导性文件。
既是信息系统的重要规划方法,同时,也是信息系统工程总体战略规划的重要方法。
辅助企业信息系统规划,来满足其近期和长期的信息化需求。
实行BSP的前提是,在企业内有改善信息系统的要求,并且有为建设这一系统而建立的总的战略的需要。因而BSP的基本功能是服务于信息系统建设的长期目标。
总结起来,BSP方法确立了信息系统建设的若干原则。方法本身是可以灵活运用的,即方法中的某些步骤和技巧可根据具体情况变化而做相应的调整,但它的基本原则不能违背,因为这些原则是BSP的灵魂。
主要是提供信息系统规划,用以支持企业短期的和长期的信息需要。其具体目标可归纳如下:
BSP方法的真正价值在于提供了下面的机会:
一是创造一种环境和提出初步行动计划,使企业能依此对未来的系统和优先次序的改变做出反应,不致造成设计的重大失误。
二是定义信息系统的职能,并不断完善。
能够帮助组织找到影响系统成功的关键因素,进行分析以确定组织的信息需求,从而为管理部门控制信息技术及其处理过程提供实施指南。
在每个企业中都存在着对企业成功起关键性作用的因素,称为关键成功因素。
特征如下:
CSF共分4层:行业的CSF、组织的CSF、部门的CSF、管理者的CSF。
CSF实施过程通常是:通过集成高层管理者的目标而确定成功因素,通过个人的成功因素的汇总,导出组织整体的决定性成功因素,然后据此建立能够提供与这些成功因素相关的信息系统。
第一步:了解组织的战略目标
第二步:识别所有成功因素。可以通过与高级管理层进行交流,辨别其目标和由此产生的成功因素;也可以采用逐层分解的方法,引出影响系统战略目标的各种因素及影响这些因素的子因素。
第三步:确定关键成功因素。对所有成功因素进行评价,根据组织的现状和目标确定关键成功因素。
第四步:识别绩效指标和标准,以及测量绩效的数据。即给出每个成功因素的绩效指标和标准,以及用以衡量相应指标额数据。
关键成功因素与组织战略规划密切相关,组织战略描述组织期望的目标,关键成功因素则提供达到目标的关键路径和所需的测量标准。关键成功因素是为确保业务过程的成功需要完成最重要的工作,是业务过程的可观察、可测量的特征。
缺点是:数据的汇总和数据分析过程比较随意,缺乏一种专门严格的方法将众多个人的关键成功因素汇总成一个明确的整个组织的成功因素;由于个人和组织的成功因素往往并不一致,两者之间的界限容易被混淆,从而容易使组织的成功因素具有个人倾向性;由于环境和管理经常迅速变化,信息系统也必须做出相应调整,而用CSF法开发的系统可能无法适应变化了的环境;CSF在应用于较低层的管理时,由于不容易找到相应目标的关键成功因子及其关键指标,效率可能会比较低。
将组织的战略看成一个“信息集合”,包括使命、目标、战略和其他战略变量。战略性系统规划就是把组织的战略集合转化为信息系统的战略集合,而后者由信息系统的系统目标、环境约束和战略规划组成。
该方法的步骤如下:
第一步:识别和阐明组织的战略集合。首先考虑组织是否有书面的战略规划,如果没有,就要去构造这种战略集合。其构造过程如下:
第二步,将组织的战略集合转化为信息系统战略集合。这个转换过程包括对组织战略集合的每一个元素确定对应的信息系统战略元素。信息系统战略集合由系统目标、系统约束和系统设计原则组成。然后提炼出整个信息系统的结构,最后,选出一个较优的方案呈送管理层。
战略目标集合转化法所描述的是从组织的基本宗旨出发,得到对系统开发阶段的输入,其目的是产生一个与组织的战略和能力紧密相关的系统。
政府信息化就是应用现代信息技术、网络技术和通信技术,通过信息资源的开发和利用来集成管理和服务,从而提高政府的工作效率、决策质量、调控能力,并节约开支,改进政府的组织结构、业务流程和工作方式,全方位的向社会提供优质、规范、透明的管理和服务。
这个定义包括三个方面的内容:第一,政府信息化必须借助于信息技术和网络技术,离不开信息基础设施和软件产品;第二,政府信息化是一个系统工程,它不仅是与行政有关部门的信息化,还包括立法、司法部门及其他一些公共组织的信息化;第三,政府信息化并不是简单的将传统的政府管理事务原封不动的搬到不联网上,而是要对已有的组织结构和业务流程进行重组或再造。政府信息化的主要内容是电子政务。
电子政务实质上是对现有的、工业时代形成的政府形态的一种改造,即利用信息技术和其他相关软件,来构造更适合信息时代的政府组织结构和运行方式。
政府与政府,政府与企(事)业,一级政府与公民之间的互动构成了下面5个不同又相互关联的领域
电子政务建设的过程模式是电子整我目标的实现过程,而电子政务的技术模式则是其实现的技术手段。
电子政务的技术模式由网络管理模式、信息资源管理模式和应用开发模式,以及网络安全、标准化等构成。电子政务通过一定的技术模式将现有的和即将建设的各个政府网络和应用系统连接起来,统一标准和规划,做到互通互联,称为一个统一的政府信息化平台。
信息资源是电子政务的处理对象,也是电子政务的基础。政府部门的信息从内容上大致分为两类:一类是来自公文系统的文档型信息另一类是来自数据处理系统的结构化信息。电子政务可以选用的信息资源管理模式有多种,目前主要有两种,即元数据管理模式和XML数据管理模式。
元数据管理模式。该模式可以为不同部门、不同级别的机构提供统一的数据管理和交换模式,为跨部门、跨行业的信息资源整合提供技术基础。元数据管理模式一般采用分布式的数据存储形式,通过元数据实现各级部门之间的信息检索和内容调用。元数据管理模式采用分类编目管理结构,对电子政务系统中的各类信息进行分类组织,从而达到知识管理管理和决策支持的目标。
XML数据管理模式。在数据交换和共享的层面上,基于XML数据管理模式,建立统一的信息技术平台,实现不同的不换。它覆盖了信息处理的从数据采集、处理、传输,到信息管理、分析和共享的整个流程,将传统的管理信息系统提升到具有数据分析和共享功能的系统中。从数据中挖掘和提炼只是,为决策提供有力的支持。
电子政务的应用开发模式主要有:
电子政务的安全提示包括物理安全、网络安全、信息安全和安全管理等方面。
信息安全系统以PKI技术为基础,围绕数字证明应用,为各种业务应用提供信息的真实性、完整性、机密性和不可否认保证,并在业务系统中建立有效的信任管理机制、授权控制机制和严密的责任机制。信息安全与应用紧密相关,可分为信息安全基础设施和信息安全应用产品两类。
信息安全基础设施产品为各种应用提供通用的安全服务,通过建立通用的安全接口来实现安全服务。主要包括:PKI、PMI、密钥管理。PKI以公开密钥技术为基础,以数据机密性、完整性、身份认证和行为的不可否认为安全目的。信任服务体系提供基本PKI数字证书认证机制的实体身份鉴别服务,从而建立全系统范围内一致的信任基准,为实施电子政务提供支持。密钥管理基础设施KMI提供统一的密钥管理服务,涉及密钥生成服务器、密钥数据库服务器和密钥服务管理器等组成部分。授权管理基础设施GMI主要负责向应用系统提供与应用相关的授权服务管理,授权管理以资源为核心,将对资源的访问控制权统一交由资源的所有者进行访问控制。
电子政务建设的指导思想和原则:统一规划、加强领导;需求主导,突出重点;整合资源,拉动产业;统一标准,保障安全。
指企业以业务流程的优化和重构为基础,在一定的深度和广度上利用计算机技术、网络技术和数据库技术,控制和集成化刮泥企业生产经营活动中的各种信息,实现企业内外部信息的共享和有效利用,以提高企业的经济效益和市场竞争力。
一般意义而言,企业信息化的目的就是要建立一个整体上相对于人的神经系统的数字神经系统。这种数字神经系统,使得企业具有平稳和有效的运作能力,对紧急情况和商机作出快速反应,为企业内外部用户提供有价值的信息,以提高企业的核心竞争力。
企业信息化一定要建立在企业战略规划基础智商高,以企业战略规划为基础建立的企业管理模式是建立企业战略数据模型的依据。
企业信息化就是技术和业务的融合,这个“融合”需要从三个层面来实现:
首先,企业战略的层面。
其次,业务运作层面
在此,管理运作层面。
企业战略数据模型分为数据库模型和数据仓库模型,数据库模型用来描述日常事务处理中的数据及其关系;数据仓库模型则描述企业高层管理决策者所需信息及其关系。在企业信息化过程中,数据库模型是一出,一个好的数据库模型应该客观的反应企业生产经营的内在联系。数据库是办公自动化、计算机辅助管理系统、开发与设计自动化、生产过程自动化、Internet的基础和环境。
企业资源是指企业业务运作和战略运作的事物,既包括人们常说的人、财、物,也包括人们没有特别关注的信息资源;同时,不仅包括企业的内部资源,还包括企业的各种外部资源。因此,ERP就是一个有效的组织、计划和实施企业的内外部资源的管理系统,它依靠IT的技术和手段得以保证其信息的继承性、实时性和统一性。
ERP是一个层次结构,可分为三个层次,即管理思想、软件产品、管理系统
基本思想是将企业的业务流程看做一个紧密连接的供应链,将企业内部划分成几个相互协同作业的支持子系统,如财务、市场营销、生产制造、质量控制、服务维护、工程技术等。
现在,大多数ERP产品供应商都在模块化的基础上,把软件产品和软件服务进行集成,实现软件产品的技术先进性和个性化设计,为用户提供一体化的解决方案。
管理系统是ERP的基础和依托。ERP是一个集成的信息系统,承诺建立跨越企业多个部门、各种生产要素和环境的单一应用原则下处理所有的事务,即意味着集成。这种集成应该包括人力资源、财务、销售、制造、任务分派和企业供应链等的各种管理业务。
具体而言,ERP管理系统主要由六大功能目标组成:
ERP是将企业所有资源进行集成整合,简单的说是将企业的三大流:物流、资金流、信息流进行全面一体化管理的管理信息系统。
CRM是在坚持以客户为中心的理念的基础上,重构包括市场营销和客户服务等业务流程。CRM的目标不仅要使这些业务流程自动化,而且要确保前台应用系统能够改进客户满意度、增加客户忠诚度,以达到使企业获利的最终目标。
CRM是一种旨在改善企业与客户之间关系的新型管理机制。CRM继承了信息系统和办公系统等的一整套应用系统,从而确保了客户满意度的提高,以及通过对业务流程的全面管理来降低企业成本。
CRM的根本要求就是与客户建立起一种互相学习的关系,即从与客户的接触中了解他们在使用产品中遇到的问题,以及对产品的意见和建议,并帮助他们加以解决。
一般来说CRM由两部分组成,即触发中心和挖掘中心,前者指客户和CRM通过电话、传真、Web、Email等多种方式“触发”进行沟通;挖掘中心则是指对CRM记录交流沟通的信息进行智能分析。由此可见,一个有效的CRM解决方案应该具备以下要素:
CRM的实现过程具体来说,包含三方面的工作。一是客户服务与支持,即通过控制服务品质赢得顾客的忠诚度;二是客户群维系,即通过与顾客的了交流实现新的销售;三是商机管理,即利用数据库开展销售。
PDM是工程数据管理、文档管理、产品信息管理、技术数据管理、技术信息管理、图像管理,以及其他产品定义信息管理的集成管理框架技术。
PDM是帮助产品设计师、制造工程师和其他人员有效管理产品数据及产品开发过程的工具。目标是跟踪、组织、访问和管理产品设计、开发、修改和生产,甚至维修全过程中的所有数据和信息。PDM能够跨越时间和操作环境,实现数据的无缝连接和移动,保证正确的数据、在正确的时间、以正确的格式、出现在正确的位置,进而推动产品尽快的投入市场并能有效的平衡生产能力。
PDM系统的用户主要有三类:
实施PDM可以:
从结构上讲,基本上可以分成面向信息集成的系统集成工具和面向用户的PDM功能模块两部分。
企业门户的主要功能有:
总之,门户网站应该是一个起点,引领用户接触企业最重要的信息、应用和服务。
EAI是企业信息系统集成的科学、方法和技术,其目的就是讲企业内的应用批次连接起来,或在企业之间连接起来。
EAI主要包括两方面:企业内部应用集成和企业间应用集成。EAI包括的内容跟复杂,设计结构、硬件、软件及流程等企业系统的各个层面。
目前市场主流的集成模式由三种,分别是面向信息的集成技术、面向过程的集成技术和面向服务的集成技术。
在数据集成的层面上,信息集成技术仍然是必选的方法。信息集成采用的主要数据处理技术有数据复制、数据集合和接口集成等。其中,接口集成通过一种集成代理的方式实现集成,即为应用系统创建适配器作为自己的代理,适配器通过其开放或私有接口将信息从应用系统中提取出来,并通过开放接口与外界系统实现信息交互。
面向对象的集成技术其实是一种过程流集成的思想,不需要处理用户界面开发、数据库逻辑、事务逻辑等,而只是处理系统之间的过程逻辑,与核心业务逻辑相分离。在结构上,面向过程的集成方法在面向接口的集成方案之上,定义了另外的过程逻辑层;而在该结构的底层,应用服务器、消息中间件提供了支持数据传输和跨过程协调的基础服务。对于提供集成代理、消息中间件及应用服务器的厂商来说,提供用于业务过程集成是对产品的拓展,也是目前应用集成市场的重要需求。
SCM的核心是供应链。供应链是指一个整体的网络,用来传送产品和服务,从原材料开始一直到最终客户(消费者),它凭借着一个设计好的信息流、物流和现金流来完成。现代意义的供应链是利用计算机网络技术全面规划供应链中的商流、物流、信息流、资金流等并进行计划、组织、协调和控制。
供应链有两层含义,一层含义是任何一个企业内部都有一条或几条供应链,包括从生产到发货的各个环节;另一层含义是一个企业必定处在市场更长的供应链之中,包括从供应商的供应商到顾客的顾客的每一个环节。
供应商管理是从源头供应商到最终消费者的集成业务流程。供应链管理至少包括以下六大应用功能:需求管理(预测和协作工具)、供应链计划(多工厂计划)、生产计划、生产调度、配送计划、运输计划。
供应链管理是一种管理方法或思想,而物流是在现实经营活动中的物质活动,供应链管理思想是从物流管理的实践中提取出来的,管理的对象是物流;物流分为采购物流、生产物流、销售物流,而供应商管理将这些全部纳入到一个管理体系之中。在供应商、分销商、零销商之间搭建起一个流畅的平台,建立起一个信息共享的机制,从而优化整个供应链,达到降低成本、提高效率等目的。
同一的信息系统架构是决定信息能否共享的物质技术基础,主要包括:为系统功能和结构建立统一的信息交流规范体系等。因为即使某些细节之处没有遵循共同的标准,也会影响到数据交流和信息共享。
EC是指买卖双方利用现代开放的Internet,按照一定的标准所进行的各类商业活动。主要包括网上购物、企业之间的网上交易和在线电子支付等新型的商业运营模式。
电子商务氛围三个方面:即电子商情广告、电子选购和交易及电子交易平衡的交换、电子支付与结算及网上售后服务等
参加电子商务的实体有四类:顾客(个人消费者或集团购买)、商户(包括销售商、制造商、储运商)、银行(包括发卡行、收单行)及认证中心。
在组织中建构一个人文与技术兼备的知识系统,让组织中的信息与知识,通过获得、创造、分享、整合、记录、存取、更新等过程,实现不断创新。同时,这种创新知识又不断回馈到组织之内,从而使组织的知识不间断的累积和升华,进而转化为企业的智慧资本。
知识管理工具是实现知识的生成、编码和转移技术的集合。知识管理工具主体是以计算机为基础的技术集合,同时也包括传统的知识管理工具。
基于计算机技术的管理工具分为三类:数据管理工具、信息管理工具、知识管理工具。
数据管理工具的管理对象是数据,手工数据等,基于计算机技术的有数据库、数据仓库、搜索引擎、数据建模工具等。
信息管理工具的管理对象是信息。
知识管理工具的管理对象是知识。
从企业中知识的生命周期来看,知识管理可以分为知识的生成、知识的编码和知识的转移。相应的,知识管理工具也分为三类:即知识的生成、编码和编译工具。
BI是企业对商业数据的搜集、管理和分析的系统过程,目的是企业的各级决策者获得知识和洞察力,帮助他们做出其他对企业更有利的决策。
商业智能系统主要实现将原始业务数据转换为企业决策信息的过程。与一般的信息系统不同,他在处理海量数据、数据分析和信息展现多个方面都具有突出性能。
商业智能系统主要包括数据预处理、建立数据仓库、数据分析及数据展现4个主要阶段。数据预处理是整个企业原始数据的第一步,它包括数据的抽取、转换和装载三个过程。建立数据仓库则是处理海量数据的基础。数据分析是体现系统智能的关键,一般采用联机分析处理和数据挖掘两大技术。联机分析处理不仅进行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能,用户可以方便对海量数据进行多维分析。数据挖掘的目标则是挖掘数据背后隐藏的知识,通过关联分析、积累和分类等方法建立分析模型,预测企业未来发展趋势和将要面临的问题。在海量数据和分析手段增多的情况下,数据展现则主要保障系统分析结果的可视化。
所谓业务流程,是指为了完成某一目标或任务而进行的一系列跨越时空的逻辑相关活动的有序集合。
中间件是基础软件的一大类,属于可复用软件的范畴。中间件处在操作系统、网络和数据库之上,应用软件的下层。
中间件应具有如下的一些特点:
中间件的十大优越性
并非一种传统意义上的软件,而是一个可以提供通过Internet来实施电子商务的平台。而且拥有极高的稳定性、可扩展性和安全性,它能够;
J2EE是针对Web Service、业务对象、数据访问和消息报传送的一组规范。J2EE注重两件事,一是建立标准,使Web应用的部署和服务器无关;二是使服务器能控制构件的生命周期和其他资源,以便能够处理扩展、并发、事务处理管理和安全性问题。
分布式企业应用可以同时包括多种客户端,并且这些客户端都可以访问相同的业务逻辑。当客户端是HTML时,JSP/Servlet组合将成为能实现业务目标的真正客户端。当客户端是Java程序或基于COM程序时,他可以直接访问业务逻辑。
一般情况下,应用服务器层包含表示层请求的表示逻辑和业务逻辑,表示层由显示HTML页面的JSP页面和Servlets实现。业务逻辑通过RMI对象和EJB实现。EJB依靠容器来实现事务处理、生命周期和状态管理、资源池、安全等问题。容器是EJB运行的环境。
是指可以扩展Web服务器功能的程序,Servlet从客户端接受请求,动态生成响应,然后将包含HTML或XML文档的请求发送给客户端。Servlet类似于CGI(公共网关接口),但Servlet使用Java类和流,更易于编写;由于Servlet可编译为Java字节码,在运行时,Servlet例程驻留在内存中,每一个用户请求都生成一个新线程,故而他们的执行速度也更快。
JSP页面是基于文本的Servlet开发方式。JSP页面具有Servlet的所有优点,如果与JavaBeans类结合在一起,合一很容易的将内容和显示逻辑分开。这使得无需了解Java代码就能更新页面的外观,更新JavaBeans的人也无需深入了解Web页面的设计。相对CGI而言,由于CGI依赖于平台,小号资源更多,而且程序不能容易的访问参数数据等缺点,故而JSP页面和Servlet都比CGI应用广泛。
EJB构件用于封装业务逻辑,使开发人员无需再担心数据访问、事务处理支持、安全性、高速缓存和并发等琐碎任务的编程。在EJB规范中,他们由EJB容器负责。EJB包含接口和类。客户端通过EJB的本地接口和编程接口访问EJB方法。本地接口提供的方法可以用于生成、删除和查找EJB ,远程接口则提供业务方法。部署时,容器从这些接口生成类,这些类使客户端可以访问、生成、删除、查找和调用EJB上的业务方法。EJB类为业务方法、生成方法和查找方法提供实施,如果Bean管理自己的存储,还得提供生成生命周期方法的实施。
EJB共有三种类型,具体如下
是支持Java程序之间信息交换的J2EE机制。这也是Java支持异步通信的方法——发送者和接收者无需相互了解,因此可以独立操作。JMS支持两种消息传播模式:
Java命名和目录接口。客户端和应用代码使用JNDI查找用户定义对象(如EJB)和环境实体。在JDBC2.0中,数据源可以绑定到JNDI上,并允许应用程序访问。
J2EE事务处理模型可以在部署过程中定义组成一个事务处理的方法之间的联系,以便事务处理中的所有方法可以作为一个整体存在。如果用户希望完成这一任务,因为事务处理是一系列步骤,要么全部执行成功,要么全部回滚。
事务处理的属性在应用构件的集成过程中确定。他可以将各种方法组合城应用构件间的事务处理,即用户可以在J2EE应用中方便的重新分配应用构件的事务处理属性,无需修改代码和重新编译。J2EE事务处理API(JTA)和Java事务处理服务(JTS)形成J2EE中事务处理支持的基础,而且更适合EJB和JDBC2.0。JTS是低级事务处理管理API,主要作用是将Java映射到对象管理组(OMG)的对象事务处理服务。JTA是高级API,包括两个部分:
.NET平台包括4个重要特点:
为多种语言提供了统一的运行环境。
基于通用语言运行时开发的代码称为受控代码。它的运行步骤大体如下:首先使用一种语言运行时支持的语言编写源代码,然后使用针对通用语言运行时的编译器生成独立于机器的微软中间语言MIL,同事产生运行所需的元数据,在代码运行时再使用即时编译器JITC生成相应的机器代码来执行。
包括从输入输出到数据访问等方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。
访问数据库的技术。
网络编程结构。可以从以下几个方面了解ASP.NET:
EAI是指通过将业务流程,应用软件、硬件和各种标准联合起来,对企业中完成不同业务功能的应用系统进行无缝集成,使他们想一个整体一样进行业务处理和信息共享,从而提高企业效率,为客户提供灵活的业务服务。
EAI可以通过中间件技术来连接企业级各种应用,使异构应用系统之间能够相互“交流”与“协作”
首先,中间件产品对各种硬件平台、操作系统、网络数据库产品及客户端实现了兼容和开放
其次,中间件保持了平台的透明性,使开发者不必考虑操作系统的问题。
第三,中间件实现了对交易的一致性和完整性的保护,提高了系统的可靠性
第四,中间件产品可以缩短开发周期50%~75%,从而大大降低了开发成本,提高了工作效率
EAI包括的内容个很复杂,涉及结构、硬件、软件及流程等企业系统的各个层面,根据EAI集成的深度来划分可以分为应用集成、业务过程集成、数据集成。
主要为两个以上的应用中的数据和函数提供接近实时的集成。在网络环境中的跨平台应用程序之间的应用到应用的集成。应用层次的集成一般来说是通过处理多个应用系统之间的消息交换,实现系统间的集成,各个应用能够处于同步模式,即基于客户(请求程序)和服务器(响应程序)之间的请求响应交互机制。应用系统能够自己处理消息的转换,并且它将影响被集成系统的数据转换和有效性。但是,这需要对系统进行修改以建立发送和接收消息的接口。
需要处理企业范围内的业务过程和把企业存在的应用系统整合到这些业务过程中。
当对业务过程进行集成的时候,企业必须在各种业务想听中定义、授权和管理各种业务信息的交换,以便改进操作、减少成本、提高响应速度。业务过程集成包括业务管理、进程模拟,以及综合任务、流程、组织和进出信息的工作流,还包括业务处理中每一步都需要的工作。业务过程集成至少包括以下两种形式的流程。
要完成应用集成和业务过程集成,必须首先解决数据和数据库的继承问题。
是一个基于SUN J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。
轻量级J2EE应用程序框架。包括声明性事务管理,通过RMI或Web Service远程访问业务逻辑,mail支持工具,一级对于数据库和数据库之间持久层的各种配置的支持。Spring允许自由选择和组装各部分功能,会提供和其他软件集成的接口。
核心本身是一个容器,管理物件的生命周期、物件的组态、相依注入等,并控制物件在创建时是以原型或单例的方式来创建。
核心概念是控制反转IoC,更具体而易懂的名字是依赖注入。Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些自框架之间可以彼此独立,也可以使用其他的框架方案加以替代。
Spring模块建立在核心容器智商,核心容器定义了创建、配置和管理Bean的方式。Core封装包的主要构件是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正的允许从程序逻辑中分理处依赖关系和配置。
DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理办法,不仅实现了特定接口,而且对所有的POJOs都适用。
ORM框架提供了对象关系映射工具,其中包括JDO(Java持有对象)、Hibernate、Ibstis、JPA(Java持有API)。所有这些都遵从Spring的通用事务和DAO异常层次结构。
Context(上下文)是一个配置文件。Spring的上下文包括企业服务。
Web包提供了基础的针对Web开发的集成特性。当与Web或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
通过策略解耦,MVC框架变为高度可配置的,容纳了大量视图技术。
是一种对象和关系之间映射的框架,是Java应用和关系数据库之间的桥梁。可以将数据库资源映射为一个或多个POJO。
在Hibernate中对象/关系映射机制的核心是一个XML文件,通常命名为*.hbm.xml。这个映射文件描述了数据库模式是怎么与一组Java类绑定在一起的。Hibernate提供工具从已有的数据库模式和Java代码生成*.hbm.xml。一旦有了*.hbm.xml文件,就可以生成Java代码,或数据库模式,或两者兼得。
Hibernate只是一个将持久化类与数据库表映射的工具,Hibernate只需要将每个持有化实例对应于数据库表中的一个数据行即可。
信息安全,具体的说就是保证信息的保密性、完整性、真实性、占有性。
保密性是指系统中的信息必须按照该信息的拥有者的要求保证一定的秘密性,不会被未经许可的第三方非法获取。系统必须阻止一些对秘密信息的非授权访问或泄露。
完整性是指系统中的信息应当安全、准确、有效。要求数据不能被非法改动或删除。
真实性是指对信息的发送者身份的确认或系统中有关主题的身份确认,这样可以保证信息的可信度。信息的真实性可以通过数字签名、公钥加密等方式来实现。
占有性是指要报货信息赖以存储的节点、介质、载体等不被盗用或窃取。保护信息占有性的方法有使用版权、专利、商业秘密性,提供物理的或逻辑的存取限制方法,为沪和检查有关窃取文件的记录等。
密码学是研究加密方法、秘密通信的原理,以及解密方法、破译密码的方法的一门科学。
加密和解密的过程大致如下:首先,信息的发送方准备好要发送信息的原始格式,叫做明文。然后对明文经过一系列变换后形成信息的另一种不能直接体现明文含义的形式,叫做密文。由明文转换为密文的过程叫做加密。在加密时所采用的一组规则或方法称为加密算法。接受者在收到密文后,再把密文还原成明文,以获得信息的具体内容,这个过程叫做解密。解密时也要运用一系列与加密算法相对应的方法或规则,这种方法或规则称为解密算法。在加密、解密过程中,由通信双方掌握的参数信息控制具体的加密和解密过程,这个参数叫做密钥。密钥分为加密密钥和解密密钥,分别用于加密过程和解密过程。
在加密和解密的过程中,如果采用的加密密钥与解密密钥相同,或者从一个很容易计算出另一个,则这种方法叫做对称密钥密码体制,也叫做单钥密码体制。反之,如果加密和解密的密钥并不相同,或者从一个很难计算出另外一个,就叫做不对称密钥密码系统或公开密钥密码体制,也叫做双钥密码体制。
在这种密码体制中,密码称为整个秘密通信的核心,整个加密通信的安全性完全以密钥的保密为基础。密钥的保密是对称密钥加密体制安全保密的关键,必须脱产保存并经由可靠的渠道传递。
对称密钥加密算法有多种,例如,DES(数据加密标准)、IDEA(国际数据加密算法)、Skipjack、3DES、GDES、New DES、Lucifer、FEAL N、LOKI 91、RC4、RC5等
过程为:将要加密的明文分成64位的数据段作为输入,在使用根据64位密钥变化生成的52个子密钥,对输入的数据一次进行初始置换、16轮迭代、逆初始置换,然后得到64位密文。
解密过程与加密过程几乎相同,但是子密钥的使用顺序相反。其他算法完全一样。
在加密运算中处理的数据段大小也是64位,但是所用的密钥长度为128位,而且采用更加复杂的加密算法,目的是保证他不会被轻易破解。
IDEA算法对数据的处理是以64位为单位的,在加密前把要加密的明文按每64位作为一个数据段进行分割然后分别加密。
解密过程与加密过程基本相似,所不同的就是解密子密钥的产生方式与加密子密钥的产生方式不一样。解密的其他运算过程同加密一样,也是把64位数据段分成4个16位的数据段,然后经过八轮迭代变换和议论输出变换,就可以得到对应的明文结果。
对称密钥加密算法的加密、解密使用同样的密钥,由发送者和接收者同时保存,在加密和解密时使用相同的密钥。采用这种方法的主要问题是密钥的生成、导入、存储、管理、分发等过程比较复杂,特别是随着用户的增加,密钥的需求量成本增加,而在较大国模的信息系统中,大量密钥的分配与管理是一个难以解决的问题。
不对称密钥加密技术在对信息进行加密和解密时,需要分别采用两个不同的密钥,因此也成为双钥加密方法。它在运算中,先产生一对密钥,其中之一是保密密钥,由用户自己保存,不能向外界泄露,简称私钥;另一个为公开密钥,可对外公开,甚至可以在公共目录中列示,简称公钥,因此也成为公开密钥加密方法。
只有通过私钥才能解密用公钥加密的数据,同时使用私钥加密的数据只能使用公钥解密。
散列函数是一种公开的数学函数,运算的输入信息也可叫做报文,算列函数运算后所得到的结果成为散列码或者叫做消息摘要。三列函数具有如下一些特点:
由于散列函数具有这些特征,因此散列函数可以用来检测报文的可靠性。接收者对收到的报文用与发送者相同的散列函数进行运算,如果得到与发送者相同的散列码,则可以认为报文没有被篡改,否则,报文就是不可信的。
常见的散列函数有MD5、SHA、HMAC等。
主要由两个算法组成:签名算法和验证算法。通过使用签名算法签名一个消息,所得到的签名都能够通过一个验证算法来验证签名的真实性和有效性。
大致过程就是:信息的发送方对信息利用自己的私钥进行签名,接着发送方吧这个签名和信息一起发送给接收方。接收方瘦到信息后利用发送方的公钥来对其中的数字签名进行验证,确认其合法性。
通过散列算法对原始数据进行散列,再对散列码进行共要加密就可以很好的实现数字签名,它的特点是:代表了文件的特征,具有唯一性。只要文件发生哪怕一位数据的改变,或者签名者有任何差别,数字签名的值也将随之而发生改变;不同的文件和签名者得到的是不同的数字签名。
RSA结合MD5数字签名的主要过程是:信息的发送方通过对信息进行散列运算生成一个消息摘要,接着发送方用自己的私钥对这个消息摘要进行加密,就形成发送方的数字签名。然后把这个数字签名作为信息的附件和信息一起发送给信息的接收方。接收方收到信息后,首先对瘦到的信息进行与发送者相同的散列运算得到一个消息摘要,接着再用发送方的公钥来对信息中附加的数字签名进行解密得到发送方计算出的散列码。如果两个散列码相同,那么接收方就能确认该信息和数字签名是由发送方发出的。通过数字签名能够实现对原始信息完整性的鉴别和发送方发送信息的不可抵赖性。
RSA用于数字区签名的一个重要的特点是能够证实信息发送发的身份及电子文件的可靠性和完整性,它对发送方和被发送方的信息都是独一无二的,具有可验证性和不可否镇的权威性等特点;另一个重要的特点是他通过在计算机之间交换数字证书就可以确定当事者就是他们所宣称的人。
DSS是美国国家标准与技术学位的数字签名标准。DSS为计算和验证数字签名指定了一个数字签名算法——DSA。DSA通过选择较小规格的参数减少数字签名的数据量,从而减少了存储空间和传输带宽。
DSS中指定SHA作为其散列算法,它对原始信息进行计算后产生160位的消息摘要,然后DSS把这一消息摘要与一个用作这个特殊签名的随机数作为输入送到数字签名算法中,经过运算生成数字签名。
数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。
在数字信封中,信息发送方采用对称密钥来加密信息内容,然后将此对称密钥用接收方的公开密钥来加密(这部分称数字信封),之后,将它和加密后的信息一起发送给接收方,接收方先用相应的私有密钥打开数字信封,得到对称密钥,然后利用对称密钥解开加密信息,这种技术的安全性相当高。
一个方法是在一个信息系统中任意两个用户之间自己协商来选择不同的秘钥。
显然,对于有N个用户的这种通信系统中,每个用户需要保存(N-1)个秘钥,系统中总共要保存N*(N-1)/2个秘钥。在用户数量较少时,这样分配秘钥还比较简单、易用的,但是一旦用户多起来,系统中要保存的秘钥会急剧增多,让每个用户自己高效、安全的管理数量庞大的秘钥实际上是不可能的。
此外有一种非常有效的密钥自动分配方案是密钥分配中心(KDC)技术。
在KDC方案中,每一个用户都只保存自己的私钥SK和KDC的公钥PK,而在通信时在经由KDC获得其他用户的公钥PK或者紧紧在某一次通信中可以使用的对称秘钥加密算法的临时密钥K。
公钥加密算法的密钥分配和对称密钥加密算法中密钥的分配要求有着很大的区别。在对称密钥加密体制中,要求将密钥从一方传送到另一方,并且保证只有通信的双方知道密钥,而不让其他任何一方知道密钥。
而在公钥加密体质中,则要求通信各方的私钥只有通信的一方知道,而其他任何一方都不能知道,同时每一方的公钥需要公开,其他任何一方都可以查看和提取。
在公钥加密体质中,私钥的分配相对容易,但是,公钥的发布和获取就需要采取合适的方法来进行,否则就很容易留下安全漏洞。
数字签名和公钥加密都存在这样的问题:如何保证公开密钥的持有者是真实的;大规模信息系统环境下公开密钥是如何产生、分发和管理的。要解决上述问题,就要用到数字证书和PKI(公开密钥基础设施)。
提供了一个在公钥和拥有相应私钥的实体之间建立关系的机制。
采用公钥体制,即利用一堆互相匹配的秘钥进行加密、解密。每个用户自己保存私钥,用它进行解密和签名;同时设定一个公钥,并由本人公开,为一组用户所共享,用于加密和验证签名。
数字证书的内容一般包括:唯一标识证书所有者的名称、唯一表示证书签发者的名称、证书所有者的公开密钥,证书签发这的数字签名、证书的有效期及证书的序列号等。
PKI在系统中的作用就箱单股作为公共设施在社会生活中的作用,其目标是向广大的信息系统用户和应用程序提供公开密钥的管理服务。PKI是指由数字证书、证书颁发机构CA、以及对电子交易、通信等所涉及的各方的合法性进行检查和验证的其他注册机构组成的一套系统。
除了数字证书的有效期,证书撤销列表CRL是另一种数字证书有效期控制机制。当数字证书中认可的事实发生变化时,数字证书发布者必须使用某种机制来撤销以前发出、但现在失效的证书。证书发布者定期发布CRL,列出所有曾发布但当前已被撤销的证书号,证书的使用者依据CRL即可验证某证书是否已被撤销。
该协议把密码技术应用在网络层,以向信息的发送方和接收方提供源地址验证、数据传输的完整性、存取控制、保密性等安全服务,保护通信免造窃听、抵御网络攻击,而且更高层的应用层协议也可以直接或间接的使用这些安全服务,为其上层协议如TCP、UDP等提供透明的安全保护服务。
在IPv6中,IPSec协议是一个必备的组成部分,被强制实施;在IPv4中,它是一个可选的扩展协议。
IPSec协议对数据的加密以数据包而不是整个数据流为单位。
IPSec协议的基本工作原理是:发送方在发送数据前对数据实施加密,然后把密文数据发送到网络中区,开始传输。在整个传输过程中,数据都是以密文方式传输的,知道数据到达目的节点,才由接收方对密文进行解密,提取明文信息。
IPSec协议对网络层的通信使用了加密技术,它不是加密数据包的头部和尾部信息(如源地址、目的地址、端口号、CRC校验值等),而是对数据包中的数据进行加密。由于加密过程中发生在IP层,因此可以在不改变HTTP上层应用协议的情况下进行网络协议的安全加密,为通信提供透明的安全传输服务。
IPSec不是一个单独的协议,它包括应用于IP层上网络数据安全的一整套协议、主要包括IP认证头部协议AH、封装安全负载协议ESP、密钥交换协议IKE和用于网络认证及加密的一些算法等。
AH提供数据的完整性和认证,但不包括保密性;而ESP原则上只提供保密性,但也可以在ESP Header中选择适当的算法及模式来实现数据的完整性和认证。AH和ESP可分开使用也可以一起使用。IKE则提供加密算法、密钥等的协商。
安全关联SA是指提供通信安全服务的发送方和接收方之间的一种单向关系。安全关联是构成IPSec的基础,它是进行通信的双方经协商建立起来的一种协定。安全关联的内容包含了IP数据包是否加密、认证,以及加密、认证采用的算法、密钥等相关信息。所有的SA记录都存放在安全关联数据库中,按散列方式存取。
安全策略定义了两个IPSec系统之间的安全通信特征,并决定在该通信中为数据包提供的安全服务。一个IPSec系统的所有安全策略都存放在安全策略数据库中,根据选择符进行检索。安全策略通常与SA合作,共同作用于通信的数据包。
AH协议先将数据进行校验和加密,然后封装为IP包,从而实现无连接通信的数据完整性、数据源认证和防止重放攻击。AH能完成出数据加密外的所有ESP所能提供的工鞥呢。在认证机制上,它所覆盖的范围比ESP的广,包括对IP头中一些选项的认证。
AH使用的典型的认证算法是一种迭代型的消息摘要算法。AH中采用MD5算法,可以提供完整性服务。
通过对数据包的数据进行加密来提供传输数据的保密性,从而实现了数据完整性、数据源认证、数据保密性的安全服务。ESP是一个通用的、可扩展的安全机制,其加密认证算法主要由SA的相关数据项决定。接收者也可以通过在瘦到数据后检验数据包中的单向递增的序列号来确定数据包的合法性,防止重放攻击。
IKE是一个混合协议,使用了Internet安全关联和密钥管理协议ISAKMP、密钥确定协议Oakley和描述支持匿名和快速密钥刷新的密钥交换的SKEME协议。IKE除了实现通信双方的密钥交换,还是用ISAKMP实现IPSec的安全关联。
工作模式有两种:传输模式和隧道模式
传输模式首先将要传送的数据使用IPSec加密封装起来,再把相关的IPSec头插入IP头和被保护的数据之间封装起来。因为IP头没有加密,接收端收到封装的数据包时直接处理IP头,然后从IPSec头中读取SPI值得到相对的SA,在利用SA所定的解密参数解出所加密的数据。
在传输模式中,解密者就是目的地址端的使用者。
隧道模式首先使用SA的相关信息将IP的数据包全部加密,接下来在前面加上ESP Header,然后把它们作为数据为他们在加上一个新的IP头。接收端收到ESP封包后,使用ESP Header内容中的SPI值提供的SA,然后解出ESP Header后的装载数据,就可以取回原始的IP头与封包。
隧道模式可以在两个终端之间建立一个安全的隧道,经由这两个终端之间的通信均在这个隧道中进行,因此安全性较高。
SSL是用于安全传输数据的一种通信协议。采用公钥加密技术、对称密钥加密技术等保护两个应用之间的信息传输的机密性和完整性。但是SSL有一个不足,就是它本身不能保证传输信息的不可否认性。
SSL协议包括服务器认证、客户认证、SSL链路上的数据完整性、SSL链路上的数据保密性等几个方面,通过在浏览器和Web服务器之间建立一条安全的通道来保证Internet数据传递的安全性。
通过SSL建立的传输通道具有如下的基本安全性:
SSL协议由SSL记录协议、SSL握手协议、SSL密码变更说明协议、SSL警告协议等组成。
在SSL记录协议中,所有要传输的数据都被封装在记录中,记录是由记录头和长度不为0的记录数据组成的。所有的SSL通信,包括握手消息、安全空白记录、应用数据等都需要使用SSL记录。
包括的数据有记录头长度、记录数据长度、记录数据中是否有粘贴数据等。
SLL记录数据包含三个部分:MAC数据和实际数据和站忒数据。
MAC数据哟鲸鱼数据完整性检查。计算MAC所用的散列函数由握手协议中的消息确定
建立在SSL记录协议智商,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法,交换加密密钥等。SSL握手的过程可以分为两个阶段,第一阶段用于建立秘密的通信信道,第二阶段用于客户验证。
在SSL协议中,同时使用了对称密钥加密算法和公钥加密算法。SSL使用公钥加密算法使服务器端身份在客户端得到验证,并且传递用于绘画中对数据加密的对称密钥。然后再利用对称密钥在通信过程中对收到和发送的数据进行比较快速的加密,从而减小系统开销,保证通信效率。
是一套电子邮件加密方案,可以用来对邮件加密以防止非授权者阅读,还能对邮件加上数字签名而使收信人可以确认邮件确实是由发送方发出的。
PGP并不是新的加密算法或协议,它综合采用了多种加密算法。
假设一个用户A想要发送一个加密的邮件给另一个用户B,那么加密的过程如下:
首先,用户A对要发送的邮件P运用MD5散列算法进行计算,生成一个128位的消息摘要,有了这个消息摘要就可以检验邮件信息是否完整、有没有被篡改。然后再通过RSA算法,运用A的私钥SKA对消息摘要进行加密,生成消息摘要的密文H。邮件P与经过加密的邮件摘要信息H共同构成新的报文P1,接着对P1进行ZIP压缩,称为压缩的报文P1.Z。在对P1.Z采用IDEA算法加密,这次加密使用一个一次性的密钥K,并且K必须经过RSA算法使用通信的另一方B的公开密钥PKB加密,与加密后的报文P2一起,在经过BASE64编码,得到一系列ASCII码,作为邮件内容发送到网络上。
用户B接收到A发来的加密的邮件后,执行解密过程:与加密过程相反,首先对邮件内容进行BASE64解码,再利用自己的私密密钥SKB,通过RSA算法解出IDEA的密钥K,再用词密钥会付出P1.Z,对P1.Z进行解压缩后还原出P1。接着把明文P和邮件信息摘要的密文H分离开来,并用A的公开密钥PKA解密H得到真正的邮件消息摘要。然后B自己也运用散列算法MD5对邮件明文P进行运算,生成一个128位的消息摘要,比较这两个摘要是否一致,如果一致,则表明P是A发来的邮件。
是指编制或在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。
计算机病毒的传染性是指病毒具有把自身复制到其他系统货文件等宿主中区的能力,这是病毒的基本特征。非授权性是指病毒程序的执行不需要得到用户的同一,对用户来说是未知的。潜伏性是病毒生存的必要条件,即病毒潜伏在系统中而不被人们所发觉。破坏性是指病毒在一定条件下可以自动触发,并对计算机实施破坏,是病毒的表现特征。病毒破坏性的触发条件越多,则传染性越强,但同时其潜伏性降低。一个病毒必须具有传染性,但不一定需要拥有其他属性。
按操作系统分,可分为攻击DOS系统的病毒,攻击Windows系统的病毒、攻击Unix\Linux的病毒、攻击OS/2系统的病毒、攻击Macintosh系统的病毒、攻击手机的病毒,其他操作系统上的病毒
按链接方式分,计算机病毒可分为源码型病毒、嵌入型病毒、Shell病毒、宏病毒、脚本型病毒、操作系统型病毒等。
按照破坏情况分,可分为良性病毒和恶性病毒
按传播媒介分,可分为单机病毒和网络病毒。
病毒程序一般由传染模块、触发模块、破坏模块和主控模块组成,相应的完成病毒的传染、触发和破坏等任务。
除了以往通过相互复制文件、系统之间交叉感染等方式外,目前的计算机病毒更多的通过网页、电子邮件、局域网共享、系统漏洞等方式在网络上进行自动传播。
就是在获取病毒样本后,提取出其特征码,然后通过该特征码对目标文件或内存等进行扫描。如果发现这种特征码,就说明感染了这种病毒,然后针对性的清除病毒。
先计算正常文件的内容和正常的系统山区数据的校验和,将该校验和写入数据库中保存。检测时,检查文件现在内容的校验和与原来保存的是否一致,从而可以发现文件或扇区是否被感染,这种方法成校验和检验。
现阶段中被广泛研究和采用的通用病毒检测技术有病毒行为监测技术、启发式扫描技术和虚拟机技术。
常见的病毒行为特征有:对可执行文件进行写操作、写磁盘引导区、病毒程序与宿主程序的切换、程序自己重定位、通过搜索函数索引表来获取API函数地址等。
主要分析文件中的指令序列,根据统计知识,判断该文件可能被感染或没有被感染,从而有可能找到位置的病毒。因此,启发式扫描技术是一种概率方法,遵循概率理论的规律。
自动变形病毒,也成为多态性病毒或多型(形)性病毒。自动变性病毒每次感染宿主时都会改变自身的程序代码和特征码,这类病毒的代表有“幽灵”病毒等。
虚拟机技术利用软件方法让病毒在一个虚拟的环境中,仿真一部分系统指令和功能调用,对病毒代码做解释执行,而且仿真运行不对系统产生实际的影响,即可获得程序运行的后果,并在此基础上对程序运行进行分析,进而判断是否存在病毒。
将病毒代码从宿主中取出,使之恢复为可正常运行的系统或程序,称为病毒清除。大多数情况下,采用反病毒软件或采用手工处理方式可以恢复受感染的文件或系统。
访问控制是通过某种途径限制和云秀对资源的访问能力及范围的一种方法。并不能取代身份认证,它是建立在身份认证的基础上的。
访问控制技术包括如下几方面的内容:
是对系统的用户进行有效性、真实性验证。
使用口令认证方式,用户必须具有一个唯一的系统标识,并且保证口令刚在系统的使用和存储过程是安全的,同时口令在传输过程中不能被窃取、替换。另外特别要注意的是在认证前,用户必须确认认证这的真实身份,一方是把口令发给冒充的认证者。
使用口令的单向身份认证过程一般是:请求认证者和认证者之间建立安全连接、并确认认证者身份等;然后请求认证者向认证者发送认证请求,认证请求中心中必须包括请求认证者的ID和口令;认证者接受ID和口令,在用户数据库中找出请求认证的ID和口令;查找是否有此用户并比较两口令是否相同;最后向请求认证者发回认证结果。如果请求者的ID在认证者的用户数据库中,并且请求认证者发送的口令与数据库中相应的口令相同,则允许请求认证者通过认证。
是通过请求认证者与认证者(对于双向身份很正而言,双方互为请求认证者和认证者)之间对于一个随机数做数字签名与验证数字签名来实现的。这种方式中,认证双方的个人秘密信息不用再网络上传送,从而减少了口令等秘密泄露的风险。
采用数字签名技术认证与口令认证方式有一个很大的不同:口令认证方式通常在正式数据交换开始之前进行。认证一旦通过,双方即建立安全通道进行通信,此后的通信被认为是安全的,不再进行身份认证;而数字签名认证在每一次的请求和响应中进行,即接收信息的一方先从接收到的信息中验证发送者的身份信息,验证通过后才对收到的信息进行相应的处理。
使用公钥加密算法进行身份认证要求:请求认证者必须具有私钥实现数字签名的功能;认证者必须具有使用公钥验证数字签名的功能;认证者必须具有产生随机数的功能,而且随机数的质量必须达到一定要求。
最早采用此卡,目前是IC卡。IC卡上一般分为不加密的公共区、加密的数据区等,有些还有自己的操作系统和微处理器。
一般IC卡与用户的个人PIN一起使用。在脱机系统中,PIN以加密的形式存于卡中,识别设备读出IC卡中的身份信息,然后将其中的PIN解密,与用户输入的PIN比较,以决定IC卡持有者是否合法。在联机系统中,PIN可不存在IC卡上,而存在主机系统中,鉴别时,系统将用户输入的PIN与主机的PIN比较,而由此认证其身份的合法性。
是指通过计算机,利用人体固有的生物特征或行为特征进行个人身份鉴定。与传统的身份鉴别手段相比,基于生物特征的认证方式具有突出的优点:一是不会遗忘或丢失;二是防伪性能好,无法伪装;三是随时随地可用。能够用来鉴别身份的生物特征一般具有广泛性(每个人都应该具有这种特性)、唯一性(每个人拥有的特征应各不相同)、稳定性(所选择的特征应该不随时间变化而发生变化)和可采集性(所选择的特征应该便于采集、测量)。目前,可用于身份鉴别的生物特征主要有指纹、笔记、脸像、红外温、视网膜、手型、掌纹等。
一次性口令是动态变化的密码,其变换来源于产生密码的运算因子。一次性口令的产生因子一般都采用双运算因子:一个是用户的私钥,代表用户身份的识别码,是固定不变的。二是变动因子,正是变动因子的不断变化,才能够产生动态的一次性口令。
当密码卡持有者将这个口令输入计算机时,系统中的认证服务器会根据相同的算法和动态因子计算出对应于该密码卡的认证口令,并把这个口令与密码卡产生的口令比对,进行身份真正。
点到点协议PPP提供了一种在点到点链路上封装网络层协议信息的标准方法。也定义了可扩展的链路控制协议。链路控制协议使用验证协议磋商机制,在链路层上传输网络层协议前验证链路的对端。
PPP包含如下几个部分:在串行链路上封装数据报的方法;建立、配置和测试数据链路连接的链路控制协议LCP;建立和配置不同网络层协议的一组网络控制协议NCP。
PPP协议定义了两种验证协议:密码验证协议PAP和挑战——握手验证协议CHAP,此外还有扩展认证协议EAP。
一个典型的PPP链路建立过程分为三个阶段:
最常用的认证协议有PAP和CHAP,此外还有EAP
CHAP验证方式具有如下的优点:
CHAP在设计上的要求
客户/服务器方式的安全认证协议,能在拨号网络中提供注册、验证功能。
该协议把拨号和认证这两种功能放在两个分离的服务器——网络接入服务器NAS和后台认证服务器RADIUS服务器上。在RADIUS服务器上存放有用户名和它们相应的认证信息的一个大数据库,来提供认证用户名和密码及向用户发送配置服务的相关信息。
RADIUS具有非常突出的特点:
访问控制是在身份认证的基础上,根据不同身份的用户对用户的访问请求加以限制。
在访问控制过程中,一般把发出访问、存取请求的一方叫做主体,二八被访问的对象和资源称为客体。另外还有一套定义主体和客体之间相互关系,确定不同主体对不同客体的访问能力与权限的规则,叫做访问规则。一个完整的访问控制体系就是由上述三方面共同构成的。
一般可以划分为三类:自助控制访问DAC、强制访问控制MAC、基于角色的访问控制RBAC。
对访问许可的授权有三种类型:
是一个面向对象的、多层次的结构,它认为安全的网络应用是由安全的服务实现的,而安全服务又是由安全机制来实现的。
为了实现前面所述的OSI 5种安全服务,OSI安全架构建议采用如下8种安全机制。
不是一一对应的关系。
| 安全机制\安全服务 | 对象认证 | 访问控制 | 数据保密性 | 数据完整性 | 防止否认 |
|---|---|---|---|---|---|
| 加密 | 是 | 是 | 是 | ||
| 数字签名 | 是 | 是 | 是 | 是 | |
| 访问控制 | 是 | ||||
| 数据完整性 | 是 | 是 | |||
| 鉴别交换 | 是 | ||||
| 业务流填充 | 是 | ||||
| 路由控制 | 是 | ||||
| 公证 | 是 |
虚拟专用网络VPN是指利用不安全的公共网络如Internet作为传输媒介,通过一系列的安全技术处理,实现类似专用网络的安全性能,保证重要信息的安全传输的一种网络技术
实现VPN需要用到一系列关键的安全技术,包括
安全隧道代理和管理中心组成安全传输平面STP,实现在Internet上安全传输和相应的系统管理功能。用户认证管理中心和密钥分配中心组成公共功能平面CFP,他是安全传输平面的辅助平面,主要向用户代理提供相对独立的用户身份认证与管理、密钥的分配与管理功能。
建立VPN通信时,VPN用户代理向安全隧道代理请求建立安全隧道,安全隧道代理接受后,在管理中心的控制和管理下载Internet上建立安全隧道,然后向用户提供同名的网络传输。VPN用户代理包括安全隧道终端功能、用户认证功能和访问控制功能三个部分,它们共同向上层应用提供完整的VPN服务。
实现在Internet上安全传输和相应的系统管理功能,这是由安全隧道代理和管理中心共同完成的。
1. 安全隧道代理。可以在管理中心的控制下将多段点到点的安全通路连接成一条端到端的安全隧道。它是VPN的主体,主要作用有:
- 建立与释放安全通道。
- 用户身份的验证
- 服务等级的协商
- 信息的透明传输
- 控制与管理安全隧道
2. VPN管理中心。是整个VPN的核心部分,与安全隧道代理直接联系,负责协调安全传输平面上的各安全隧道代理之间的工作,具体功能包括:
- 安全隧道的管理与控制。
- 网络性能的监控与管理
是安全传输平面的辅助平面,向VPN用户代理提供相对独立的用户身份认证与管理、密钥的分配与管理功能,分别由用户认证管理中心和VPN密钥分配中心完成。
物理安全包括物理设备本身是否安全可靠,还包括设备的位置与环境的而安全、限制物理访问、地域因素等几个方面。
信息系统的所有重要的物理设备、设施都应该放在专门的区域,并尽可能集中,同时严格限制外来人员访问,尽可能减少未经授权的访问。
物理安全还要求设计中注意物理设备的冗余备份。例如,核心设备或部件都应该是热备份系统,具有实时和准实时切换的能力。
物理安全还要求严格限制对网络信息点、线缆等网络基础设施及其所在地进行物理访问,要想访问必须经过专门的授权。
物理安全还包括环境方面的因素。
防火墙通常使用的采用包过滤、状态检测、应用网关等几种方式控制网络连接。
包过滤防火墙是一种简单而有效的安全控制技术,根据在防火墙中预先定义的规则(允许或禁止与哪些源地址、目的地址、端口号有关的网络连接),对网络层和传输层的数据包进行检查,进而控制数据包的进出。优点是对用户透明、传输性能高。但是由于只能在网络层、传输层进行控制,安全控制的方式也只限于源地址、目的地址和端口号这几种,对于应用层的信息无法感知,因而只能进行较为初步的安全控制,对于拥塞控制、内存覆盖攻击或病毒等高层次的攻击手段,则无能为力
状态检测防火墙保持了包扩率防火墙的优点,所以性能较好,而且对应用透明。同时,改进了包过滤防火墙的缺点,在防火墙内部建立状态连接表,维护了连接,将进出网络的数据当成一个个的时间来处理。对于每一个网络连接,状态检测根据预先设置的安全规则,允许符合规则的连接通过,并在内存中记录下该连接的相关信息,生成状态表,对该连接的后续数据包,只要符合状态表,就可以通过。优点是,由于不需要对每个包进行规则检查,而是对一个连接的后续数据包通过散列算法,直接状态检查,从而使性能得到了较大提高。
与前两种不同,应用网关防火墙检查所有用用层的信息表,并将检查的内容信息放入决策过程,从而提高网络的安全性。然而,应用网关防火墙是通过打破客户机/服务器模式实现的,每个通信需要两个连接:一个是从客户端到防火墙,另一个是从防火墙到服务器。另外,每个网关需要一个不同的应用进程,或一个后台运行的服务程序,对每个新的应用必须添加针对此应用的应用程序,否则无法使用,所以通用性较差。
通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。
入侵检测系统的处理过程分为数据采集阶段、数据处理及过滤阶段、入侵分析及检测阶段、报告及响应阶段4个阶段。数据采集阶段主要收集目标系统中引擎提供的通信数据包和系统使用等情况。数据处理及过滤阶段是把采集到的数据转换为可以识别是否发生入侵的数据的阶段。入侵分析及检测阶段通过分析上一阶段提供的数据来判断是否发生入侵。这一阶段是整个入侵检测系统的核心阶段。报告及响应阶段针对上一阶段中得出的判断作出响应。如果被判断为发生入侵,系统将采取相应的响应措施,或者通知管理人员发生入侵,以便采取措施。
检测技术分为两类:
基于标识的检测技术,先定义出违背安全策略的事件的特征,然后对收集到的数据进行分析,通过判别这类特征是否在所收集到的数据中出现来判断是否受到入侵。非常类似杀毒软件的特征码检测,比较简单有效
基于异常的检测技术,先定义出一组系统“正常”情况的数值,然后将系统中运行的数值与所定义的“正常”情况比较,得出是否有被攻击的迹象。核心在于如何定义所谓的“正常”情况。
一般来说,入侵检测系统可分为主机型和网络型。
主机型入侵检测系统往往以系统日志、应用程序日志等作为数据源,也可以通过其他手段从所在的主机收集信息进行分析。保护的一般是其所在的主机系统。需要为不同平台开发不同的程序,而且会增加系统负荷,海奥在每一台主机安装,比较麻烦,但是可以充分利用操作系统本身提供的功能,并结合异常分析,更准确的报告攻击行为。
网络型入侵检测系统则以网络上的数据包作为数据源,通过在一台主机或网络设备上监听本网段内的所有数据包进行分析判断。一般会担负着保护整个网段的任务。这种系统应用十分简便:一个网段上只需要安装一个或几个这样的系统,便可以监测整个网段的情况,但是它不跨越多个物理网段,对于复杂结构的网络监测效果有一定的影响。
是指针对和利用计算机系统,通过非法操作或以其他手段,对计算机系统的完整性或正常运行造成危害的行为。
犯罪对象是计算机系统或其中的数据。所谓非法操作,是指一切没有按照操作规程或超越授权范围而对计算机系统进行的操作。
与可靠性相关的概念主要有:可靠度、可用度、可维度、平均无故障时间、平均故障修复时间及平均故障间隔时间等。
一个故障可能是由物理失效、不适当的系统设计、环境影响或系统的操作员所引起。永久性失效会导致永久性故障。间歇性故障可能由不稳定、临界稳定或不正确的设计所引起。环境条件会造成瞬时性故障。所有这些故障都可能引起错误。不正确的设计和操作员失误会直接引起错误。由硬件的物理条件,不正确的硬件或软件设计,或不稳定但重复出现的环境条件所引起的故障可能是可检测的,并且可以通过替换或重新设计来修复;然而,由于暂时的环境条件所引起的故障是不能修复的,因为其硬件本身实际上并没有损坏。瞬时和间歇故障已经成为系统中的一个主要错误源。
固定型故障指电路中元器件的输入或输出等线的逻辑固定为0或固定为1。短路故障是指一个元件的输出线的逻辑值恒等于输入线的逻辑值;元件的开路故障是元件的输出线悬空,逻辑值可根据具体电路来决定。桥接故障是指两条不应相连的线连接在一起而发生的故障。
故障在数据结构上的表现成为差错。常见的差错如下。
软件故障是指软件设计过程中造成的与设计说明不一致的情况,在数据结构或程序数据中的表现称为软件差错。常见的软件差错有以下几种:
故障在系统级上的表现成为功能错误,即系统输出与系统设计说明的不一致。如果系统输出无故障保护机构,则故障在系统级上的表现就会造成系统失效。
容错技术是保证系统在某些组成部分出现故障或差错时仍能正常工作的技术。
是保证系统在某些组成部分出现故障或差错时仍能正常工作的技术。系统的故障可分为两类:一类是“致命的”,不可能自行修复;另一类是局部的,可能被修复。容错技术正是用于构造一种能够自动排除非致命性故障的系统,即容错系统。
在单机容错技术中,提高系统工作可靠性的方法主要有自检技术和冗余技术。容错又有多种形式,如硬件容错、软件容错、整机容错等。
自检是指系统在发生非致命性故障时能自动发现故障和确定故障的性质、部位,并自动采取措施更换和隔离产生故障的不见。自检需采用诊断技术,常用专门程序实现,属于程序设计的范围。容错系统的实现要求系统必须具有重复部件或备份部件,或具有不止一个完成某种功能的通道,因此自检技术长配合冗余技术使用。计算机的容错系统一把都需要应用自检技术。
可分为硬件冗余、软件冗余、时间冗余、信息冗余等。冗余技术中最常用的两种方法是重复线路和备份线路。重复线路指用多个相同品种和规格的元件或构件并联起来,当做一个元件或构件使用,只要有一个不出故障,系统就能够正常工作。在并联工作时每一个构件的可靠性概率是互相独立的。备份线路与重复线路的差别是参加备份的构件并不接入系统,只有在处于工作状态的构件发生故障后才把输入和输出接到备份构件上来,同时切断故障构建的输入、输出。
是一种挼硬件结合的较高容错应用方案。该方案是由连哪个台服务器系统和一个外接共享磁盘矩阵列柜和响应的双机热备份软件组成。其中呢的外接共享磁盘矩阵列柜也可以没有,而是在各自的服务器中采取RAID(独立冗余磁盘阵列)卡。
在这个容错方案中,操作系统和应用程序安装在两台服务器的本地系统盘上,整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。数据集中管理是通过双机热备份系统,将所有站点的数据直接从中央存储设备读取和存储,并由专业人员进行管理,极大地保护了数据的安全性和保密性。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备份主动替代主机工作,保证网络服务不间断。
双机热备份系统采用“心跳”方法保证系统与备用系统的联系。所谓“心跳”,指的是主、从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态。一旦“心跳”信号表示主机系统发生故障,或者备用系统无法收到主机系统的“心跳”信号,则系统的高可用管理软件认为主机系统发生故障,立即将系统资源转移到备份系统上,备用系统替代主机工作,已保证系统正常运行和网络服务不间断。
双机热备份方案中,根据两台服务器的工作方式可以有三种不同的工作模式,即,双机热备模式、双机互备模式和双机互工模式。
双机热备模式即目前通常所说的active/standby方式,active服务器处于工作状态;而standby服务器处于监控准备状态,服务器数据包括数据库数据同时往两台或多台服务器写入(通常各服务器采用RAID磁盘阵列卡),保证数据的即时同步。当active服务器出现故障时,通过软件侦测或手工方式将standby机器激活,保证应用在短时间内完全恢复正常使用。
双机互备模式,是两个相对独立的应用在两台机器上同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,但对服务器的性能要求比较高。
双机双工模式是集群的一种形式,两台服务器均处于活动状态,同时运行相同的应用,以保证整体系统的性能,也实现了负载均衡和互为备份,通常使用磁盘柜存储技术。
集群技术指一组相互独立的服务器在网络中组合成为单一的系统工作,并以单一系统的模式加以管理。大多数情况下,集群中所有计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户使用
集群必须可以协调管理各分离的构件出现的错误和故障,并可透明的向集群中加入构件。一个集群包含多台(至少两台)共享数据存储空间的服务器。其中任何一台服务器运行应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在各自的本地储存空间上。
集群内各节点服务器通过一个内部局域网相互通信,当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一个节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被被另一台服务器接管。当以上的任一故障发生时,客户都能很快连接到其他应用服务器上。
可靠性增长模型,基于这样一个假设:一个软件的中的故障数据在t=0时是常数,随着故障被纠正,故障数目逐渐减少。
是一个面向错误数的数学模型,目的是以程序的错误数作为衡量可靠性的标准,基本假设如下:
对于一个预先确定的输入环境,软件的可靠度定义为在n次连续运行软件中软件完成指定任务的概率。
是计算机容错系统可靠性能最长用哪个的方法。一个系统只要满足一下条件,就可以用组合模型来计算其可靠性。做如下假设:
组合模型的目标就是根据各部件的可靠性来计算系统的可靠度,基本思想如下:
两个核心概念是状态和状态转移。系统的状态表示了在任何瞬间用以描述该系统所必须知道的一切。
防止故障造成系统失效的两种技术是故障掩蔽技术和系统重组技术,故障掩蔽技术是指防止故障造成差错的各种技术,系统重组技术是防止差错导致系统失效的各种技术。故障掩蔽技术和系统重组技术是达到容错的两种基本途径。而他们又是建立在资源冗余的基础上的。资源冗余有硬件冗余、信息冗余、时间冗余和软件冗余4种形式。
最常用的是三模冗余TMR,三个相同的模块接收三个相同的输入,产生的结果送至多数表决器。表决器的输出取决于三个输入的多数,若有一个故障模块,则另两个正常模块的输出可将故障模块的输出掩蔽,从而不再表决器输出产生差错。
是指通过在数据中附加冗余的信息以达到故障检测、故障掩蔽或容错的目的。
基本的海明纠错码能纠正一位错。原理是基于重叠奇偶校验的概念:将原始数据位分成若干个重叠的组,每一组设一位奇偶校验位。由于位间有重叠,因此每位原始数据从属于多余一个组。而且每位原始数据的从属关系是不一样的,纠错时,根据哪些组的奇偶校验位出错,就可以唯一的确定是哪一位数据出错,将该位取反就完成了纠错。
系统的数据备份就是在系统其它地方创建数据与程序的电子复制,为重建系统中被破坏的或不正确的数据提供条件,备份最常用的技术是数据转储和建立日志文件等。
数据转储可分为静态转储和动态转储。静态转储是指系统中无事务时进行的转储操作,动态转储是指转储操作和用户操作并发进行,而且转储工作不会影响事务的运行,但它不能保证副本中的数据正确有效。
建立日志文件是指把所有事务对系统的修改活动都登记下来。若发生了故障,对于静态转储,可以在重装后备系统之后,利用日志文件进行回复,避免重新运行事务;对于动态转储,可以把转储得到的副本和转储期间的日志文件结合起来进行故障恢复,使系统恢复正常工作状态。
备份通常分为联机备份和脱机备份两种方式。
脱机备份也叫冷备份,是一种静态转储技术,备份系统所有的物理文件和初始化文件。优点是在恢复过程中步骤最少,比热备份快并且出错机会少,定期的脱机备份加上一组好的重做日志可以把系统的数据恢复到有任何一个时间点上。
联机备份也叫热备份,是一种动态转储技术,由于只备份所需的文件,因而被看做是部分备份。在系统运行时执行。优点是可以实现完全的时间点恢复,同时由于数据库一直处于打开状态,减少了系统对物理资源的要求,改善了数据的执行;但联机备份比较复杂,需要对系统的核心有比较深刻的认识,对备份策略进行反复的测试,才能最终确定他的正确性和可用性。