导图社区 系统分析师备考笔记
软考高级 系统分析师 备考笔记 知识点总结,要点重点标注,把复习过程中遇到的知识点都整理到一起了,约5500个主题条目。知识点系统全面,无需死记硬背,框架式结构清晰明了,轻松掌握知识点!
编辑于2023-04-06 21:14:28系统分析师
计算机组成结构
1计算机系统基础知识
计算机的基本硬件系统
♦计算机基本硬件系统五大组成部分:运算器、控制器、存储器、输入设备和输出设备
◆运算器、控制器等部件被集成在一起统称为中央处理单元(CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。
◆存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
◆输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出计算机运行的结果。
中央处理单元CPU
CPU的功能
(1)程序控制。CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
(2)操作控制。一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作 信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
(3)时间控制。CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、 持续时间及出现的时间顺序都需要进行严格控制。
(4)数据处理。CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理 的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。
此外,CPU还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。
CPU的组成:CPU主要由运算器、控制器、寄存器组和内部总线等部件组成
运算器的四个重要寄存器:
1算术逻辑单元ALU (实现对数据的算术和逻辑运算)
2累加寄存器AC(运算结果或源操作数的存放区)
3数据缓冲寄存器DR (暂时存放内存的指令或数据)
4状态条件寄存器 PSW(保存指令运行结果的条件码内容,如溢出标志等)组成
执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
控制器的四个重要寄存器:
1指令寄存器IR(暂存CPU执行指令)
2程序计数器PC(存放指令执行地址)
3地址寄存器AR (保存当前CPU所访问的内存地址)
4指令译码器ID(分析指令操作码)等组成
控制整个CPU的工作,最为重要
CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。(取指-分析-执行)
2数据的表示
进制的转化
R进制转十进制:位权展开法,用R进制数的每一位乘以R的n次方,n是变量,从R进制数的最低位开始,依次为0,1,2,3...累加。
例如有6进制数5043,此时R=6,用6进制数的每一位乘以6的n次方,n是变量,从6进制数 的最低位开始(5043从低位到高位排列:3,4,0,5), n依次为0,1,2,3,那么最终5043=3*6^0 + 4*6^1 + 0*6^2 + 5*6^3 = 1107.
十进制转R进制:十进制整数(除以R倒取余数),用十进制整数除以R,记录每次所得余数,若商不为0,则继续除以R,直至商为0,而后将所有余数从下至上记录,排列成从左至右顺序,即为转换后的R进制数;
十进制小数(乘R正取整数),用十进制小数乘以R,记录每次所得整数,若结果小数部分不为0,则将小数部分继续乘以R,直至没有小数,而后将所有整数从第一个开始排列为从左至右顺序,即为转换后的R进制数。
m进制转n进制:先将m进制转化为十进制数,再将十进制数转化为n进制数,中间需要通过十进制中转,但下面两种进制间可以直接转化:
二进制转八进制:每三位二进制数转换为一位八进制数,二进制数位个数不是三的倍数,则在前 面补0,如二进制数01101有五位,前面补一个0就有六位,为001 101,每三位转换为一位八进制数,001=1,101=1+4=5,也即 01101=15
二进制转十六进制:每四位二进制数转换为一位十六进制数,二进制数位个数不是四的倍数,则在前面补0,如二进制数101101有六位,前面补两个0就有八位,为00101101,每四位转换为一位十六进制数,0010=2,1101=13=D,也即 101101=2D
数的表示
各种数值在计算机中表示的形式称为机器数,其特点是使用二进制计数制,数的符号用0 和1 表示,小数点则隐含,不占位置。
机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为0,负数符号位为1。
定点表示法分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定∶
纯小数∶约定小数点的位置在机器数的最高数值位之前。
纯整数∶约定小数点的位置在机器数的最低数值位之后。
真值∶机器数对应的实际数值。
带符号数有下列编码方式∶
原码∶一个数的正常二进制表示,最高位表示符号,数值0的源码有两种形式∶+0(00000000)和-0(10000000)。
反码∶正数的反码即原码;负数的反码是在原码的基础上,除符号位外,其他各位按位取反。数值0的反码也有两种形式∶+0(00000000),-0(11111111)。
补码∶正数的补码即原码;负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式+0=-0=00000000.
移码∶用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。
符号表示∶要注意的是,原码最高位是代表正负号,且不参与计数;而其他编码最高位虽然也是代表正负号,但参与计数。
机器字长为n时各种码制表示的带符号数的取值范围:
差别在于0的表示,原码和反码分+0和-0,补码只有一个0,因此可以多表示一个
浮点数的运算
浮点数:表示方法为N=F*2^E,其中E称为阶码,F称为尾数;类似于十进制的科学计数法,如85.125=0.85125*10^2,二进制如101.011=0.1010101*2^3.
在浮点数的表示中,阶码为带符号的纯整数,尾数为带符号的纯小数,要注意符号占最高位(正数0负数1),其表示格式如下∶
很明显,与科学计数法类似,一个浮点数的表示方法不是唯一的,浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定。
尾数的表示采用规格化方法,也即带符号尾数的补码必须为1.0xxxx(负数)或者0.1xxxx(正数),其中x可为0或1.
浮点数的运算:对阶(使两个数的阶码相同,小阶向大阶看齐,较小阶码增加几位,尾数就右移几位)—尾数计算(相加,若是减运算,则加负数)—结果规格化(即尾数表示规格化,带符号尾数转换为1.0xxxx或0.1xxxx)。
算术运算和逻辑运算
数与数之间的算术运算包括加、减、乘、除等基本算术运算,对于二进制数,还应该掌握基本逻辑运算,包括
逻辑与&&∶0和1相与,只要有一个为0结果就为0,两个都为1才为1。
逻辑或||∶0和1相或,只要有一个为1结果就为1,两个都为0才为0.
异或∶同0非1,即参加运算的二进制数同为0或者同为1结果为0,一个为0另一个为1结果为1。
逻辑非!∶0的非是1,1的非是0.
逻辑左移<<∶二进制数整体左移n位,高位若溢出则舍去,低位补0.
逻辑右移>>:二进制数整体右移n位,低位溢出则舍去,高位补0。
算术左移算术右移:乘以2或者除以2的算术运算,涉及加减乘除的都是算术运算,与逻辑运算区分。
短路计算方式∶指通过逻辑运算符(&&、||)左边表达式的值就能推算出整个表达式的值,不再继续执行逻辑运算符右边的表达式。
若计算机存储数据采用的是双符号位(00)表示正号、11 表示负号),两个符号相同的数相加时,如果运算结果的两个符号位经异或运算得1,则可断定这两个数相加的结果产生了滥出。
从计算的角度理解,正数和负数相加其结果肯定不会滥出,如果有滥出,必然同为正数或者同为负数,结果才会更大,有可能溢出,因此,正常两个同符号数相加时,不考虑溢出,其符号位必然还是00或者11,如果有溢出,那么数据位必然最高位进位1,符号位就需要加1,符号位就变为01或者10,因此当符号位为01或者10时数据溢出,观察这两种溢出情况的两个符号位都是一个为0,一个为1,其异或运算运算必然为1,没有其他可能,而逻辑或运算有可能两个都为1也能得出1。
3校验码
码距∶就单个编码A∶00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A∶00要转换为B∶11,码距为2。一般来说,码距越大,越利于纠错和检错。
奇偶校验码
在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。奇校验可以检测编码中奇数位出错,即当合法编码中的奇数位发生了错误时,即编码中的1变成0或者0变成1,则该编码中1的个数的奇偶性就发生了变化,从而检查出错误。但无法纠错。
奇校验编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误。
偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错。
循环冗余校验码CRC
CRC只能检错,不能纠错,其原理是找出一个能整除多项式的编码,因此首先要将原始报文除以多项式,将所得的余数作为校验位加在原始报文之后,作为发送数据发给接收方。
使用CRC编码,需要先约定一个生成多项式GK)。生成多项式的最高位和最低位必须是1。假设原始信息有m位,则对应多项式M(x)。生成校验码思想就是在原始信息位后追加若干校验位,使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除。余数为0,则没有错误;反之则发生错误。
例∶假设原始信息串为10110,CRC的生成多项式为G(x)=x^4+x+1,求CRC校验码。
(1)在原始信息位后面添0,假设生成多项式的阶为r,则在原始信息位后添加r个0,本题中,G(x)阶为4,则在原始信息串后加4个0,得到的新串为101100000,作为被除数。
(2)由多项式得到除数,多项中x的幂指数存在的位置1,不存在的位置0。本题中,x的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,因此得到串10011。
(3)生成CRC校验码,将前两步得出的被除数和除数进行模2除法运算(即不进位也不借位的除法运算)。除法过程如下图所示。
得到余数111。
注意∶余数不足r,则余数左边用若干个0补齐。如求得余数为11,r=4,则补两个0得到0011.
(4)生成最终发送信息串,将余数添加到原始信息后。上例中,原始信息为10110,添加余数1111后,结果为10110111。发送方将此数据发送给接收方。
(5)接收方进行校验。接收方的CRC校验过程与生成过程类似,接收方接收了带校验和的帧后,用多项式G(x)来除。余数为0,则表示信息无错;否则要求发送方进行重传。
注意∶收发信息双方需使用相同的生成多项式。
海明校验码
本质也是使用奇偶校验方式检验,通过下面例题详解海明校验码∶
例:求信息1011的海明码。
1.校验位的位数和具体的数据位的位数之间的关系
所有位都编号,从最低位编号,从1开始递增,校验位处于2的n (n=012……)次方中,即处于第1,2,4.8,16,32,……位上,其余位才能填充真正的数据位,若信息数据为1011,则可知,第1,2,4 位为校验位,第3,5,6,7位为数据位,用来从低位开始存放1011,得出信息位和校验位分布如下∶
实际考试时可以依据公式n+k<-2^k-1快速得出答案(n是已知的数据位个数,k是未知的校验位个数,依次取k=1代入计算,得出满足上式的最小的k的值)。
2.计算校验码
将所有信息位的编号都拆分成二进制表示,如下图所示∶
上图中,7=4+2+1,表示7由第4位校验位(r2)和第2位校验位(r1)和第1位校验位(r0)共同校验,同理,第6位数据位6m4+2,第5位数据位5=4+1,第3位数据位3-2+1,前面知道,这些2的n次方都是校验位,可知,第4位校验位校验第765三位数据位,因此,第4位校验位r2等于这三位数据位的值异或,第2位和第1位校验位计算原理同上,最终得到如下∶
计算出三个校验位后,可知最终要发送的海明校验码为1010101.
3.检错和纠错原理
接收方收到海明码之后,会将每一位校验位与其校验的位数分别异或,即做如下三组运算∶
如果是偶校验,那么运算得到的结果应该全为0,如果是奇校验,应该全为1,才是正确,假设是偶校验,且接收到的数据为1011101(第四位出错),此时,运算的结果为∶
这里不全为0,表明传输过程有误,并且按照r2r1r0排列为二进制100,这里指出的就是错误的位数,表示第100,即第4位出错,找到了出错位,纠错方法就是将该位逆转。
4计算机体系结构
按处理机的数量进行分类∶
单处理系统(一个处理单元和其他设备集成)
并行处理系统(两个以上的处理机互联)
分布式处理系统(物理上远距离且松耦合的多计算机系统)
Flynn分类法⭐
由上图可知,分类有两个因素,即指令流和数据流,指令流由控制部分处理,每一个控制部分处理一条指令流,多指令流就有多个控制部分;数据流由处理器来处理,每一个处理器处理一条数据流,多数据流就有多个处理器;至于主存模块,是用来存储的,存储指令流或者数据流,因此,无论是多指令流还是多数据流,都需要多个主存模块来存储,对于主存模块,指令和数据都一样。
依据计算机特性,是由指令来控制数据的传输,因此,一条指令可以控制一条或多条数据流,但一条数据流不能被多条指令控制,否则会出错,就如同上级命令太多还互相冲突,不知道该执行哪个,因此多指令单数据MISD不可能。
5指令系统
计算机指令
计算机指令的组成
一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及 其所在的单元地址。
在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令 以二进制编码的形式存放在存储器中。
计算机指令执行过程
可分为取指令一一分析指令一一执行指令三个步骤,首先将程序计数器PC中的指令地址取出, 送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行 分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。
指令寻址方式
顺序寻址方式:由于指令地址在主存中顺序排列,当执行一段程序时,通常是一条指令接着一条 指令地顺序执行。从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,再 执行第二条指令;.....,以此类推。这种程序顺序执行的过程称为指令的顺序寻址方式。
跳跃寻址方式:所谓指令的跳跃寻址,是指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
指令操作数的寻址方式
立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
间接寻址方式:与直接寻址方式相比,间接寻址中指令地址码字段所指向的存储单元中存储的不 是操作数本身,而是操作数的地址。
寄存器寻址方式:指令中的地址码是寄存器的编号,而不是操作数地址或操作数本身。寄存器的寻址方式也可以分为直接寻址和间接寻址,两者的区别在于:前者的指令地址码给出寄存器编号,寄存器的内容就是操作数本身;而后者的指令地址码给出寄存器编号,寄存器的内容是操作数的地址, 根据该地址访问主存后才能得到真正的操作数。
基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址,其优点是 可以扩大寻址能力。
变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。
相对寻址方式:相对于当前的指令地址而言的寻址方式。相对寻址是把程序计数器PC的内容加上指令中的形式地址而形成操作数的有效地址,而程序计数器的内容就是当前指令的地址,所以相对寻址是相对于当前的指令地址而言的。
CISC和RISC⭐⭐
CISC是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现
RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)
二者各方面区分如下图:
注:
硬联逻辑级:这是计算机的内核,由门、触发器等逻辑电路组成。
微程序级:这一级的机器语言是微指令集,程序员用微指令编写的微程序一般直接由硬件执行。
传统机器级:这一级的机器语言是该机的指令集,程序员用机器指令编写的程序可以由微程序进行解释。
指令的流水处理
流水线原理
将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指 令的不同段,如下图所示:
RISC中的流水线技术:
超流水线(Super Pipe Line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周 期内能完成一个甚至两个浮点操作。其实质是以时间换取空间。
超标量(Super Scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一 般流水接近,却有更小的CPI。其实质是以空间换取时间。
超长指令字(Very Long Instruction Word, VLIW)技术。VUW和超标量都是20世纪80年代出 现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度, VLIW则充分发挥软件的作用,而使硬件简化,性能提高。
流水线时间计算⭐⭐⭐
流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
流水线执行时间:1条指令总执行时间+ (总指令条数-1)*流水线周期。
流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。
公式:指令条数/流水线执行时间
流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高
公式:不使用流水线执行时间/使用流水线执行时间
单缓冲区和双缓冲区:此类题型不给出具体流水线执行阶段,需要考生自己区分出流水线阶段, 一般来说,能够同时执行的阶段就是流水线的独立执行阶段;只能独立执行的阶段应该合并为流水线 中的一个独立执行阶段。
例如有三个阶段即读入缓冲区+送入用户区+数据处理,在单缓冲区中,缓冲区和用户区都只有一 个,一个盘块必须执行完前两个阶段,下一个盘块才能开始,因此前两个阶段应该合并,整个流水线 为送入用户区+数据处理;
而在双缓冲区中,盘块可以交替读入缓冲区,但用户区只有一个,因为缓冲区阶段可以同时进行, 流水线前两个阶段不能合并,就是读入缓冲区+送入用户区+数据处理三段。
划分出真正的流水线阶段后,套用流水线时间计算公式可以轻易得出答案。
取指 一► 分析 一► 执行
6存储系统⭐⭐⭐
计算机存储结构层次图
计算机釆用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。
两级存储映像为:Cache-主存、主存-辅存(虚拟存储体系)。
存储器的分类:
按存储器所处的位置:
内存
外存
按存储器构成材料:
磁存储器(磁带)
半导体存储器
光存储器(光盘)
按存储器的工作方式:
可读可写存储器(RAM)
只读存储器(ROM只能读,PROM可写入一次, EPROM和EEPOM既可以读也可以写,只是修改方式不用,闪存Flash Memory)
按存储器访问方式:
按地址访问
按内容访问(相联存储器)
按寻址方式:
随机存储器(访问任意存储单元所用时间相同)
顺序存储器(只能按顺序访问, 如磁带)
直接存储器(二者结合,如磁盘,对于磁道的寻址是随机的,在一个磁道内则是顺序的)
局部性原理
总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内。(例如循环操作, 循环体被反复执行)
时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的, 即相邻的空间地址会被连续访问。
高速缓存Cache
Cache
注:相联存储器是按内容存取的,一般用于Cache
(1)Cache的相关概念
Cache的功能:提高CPU数据输入输出的速率,突破冯·诺依曼瓶颈,即CPU与存储系统间数据传送带宽限制。
在计算机的存储系统体系中,Cache是除寄存器以外,访问速度最快的层次。
使用Cache改善系统性能的依据是程序的局部性原理。
√ 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型原因是由于程序中存在着大量的循环操作。
√ 空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。
工作集理论:工作集是进程运行时被频繁访问的页面集合。
Cache对程序员来说是透明的。
(2)Cache映射方式【地址映像由硬件直接完成】
直接相联映像:硬件电路较简单,但冲突率很高。
全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低。
组相联映像:直接相联与全相联的折中。
(3)平均存取时间
如果以h代表对Cache的访问命中率,(1-h)称为失效率(未命中率),t1表示Cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用"Cache+主存储器"的系统的平均周期为t3,则:t3=h×t1+(1-h)×t2
(4)Cache页面淘汰算法
随机算法、先进先出算法(FlFO)、近期最少使用算法(LRU)、最不经常使用页置换(Least Frequently Used (LFU)算法【计数器位数多】
(5)Cache的读写过程
写直达:同时写Cache与内存
写回:只写Cache,淘汰页面时,写回内存
标记法:只写入内存,并将标志位清0,若用到此数据,需要再次调取
高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。
Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。
地址映射方法
在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为下列三种方法:
直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。
全相联映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。
组组相连映像:前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。
替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
(1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
(2)先进先出算法。就是将最先进入Cache的信息块替换出去。
(3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
(4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验 信息,在第二次执行该程序时便可以用最有效的方式来替换。
命中率及平均时间
Cache存储器的大小一般为KB或者MB单位,很小,但是最快,仅次于CPU中的寄存器,而寄存器一般不算作存储器,CPU与内存之间的数据交互,内存会先将数据拷贝到Cache里,这样,根据局部性原理,若Cache中的数据被循环执行,则不用每次都去内存中读取数据,会加快CPU工作效率。
因此,Cache有一个命中率的概念,即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据,设读取一次Cache时间为Ins,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%* 1 + 10%*1000)ns,很容易理解。
虚拟存储器
虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样,一边运行一边进行所需数据块的调入/调出。对于应用程序员来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:主存一一缓存一一外存。与CPU——高速缓存Cache——主存的原理类似。但虚拟存储器中程序员无需考虑地址映像关系,由系统自动完成,因此对于程序来说是透明的。
其管理方式分为页式、段式、段页式,在2.2存储管理中详细介绍。
磁盘
磁盘结构与参数
(1)存取时间=寻道时间+等待时间,寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。有时还需要加上数据的传输时间。
(2)在处理过程中,如果有关于缓冲区的使用,需要了解对于单缓冲区每次只能被一个进程使用,即向缓冲区传输数据的时候不能从缓冲区读取数据,反之亦然。
(3)对于磁盘存储的优化,是因为磁头保持转动的状态,当读取数据传输或处理时,磁头会移动到超前的位置,需要继续旋转才能回到逻辑下一磁盘块,优化存储就是调整磁盘块的位置,让逻辑下一磁盘块放到磁头将要开始读取该逻辑块的位置。
(4)磁盘调度算法:先来先服务FCFS(谁先申请先服务谁);最短寻道时间优先SSTF(申请时判断与磁头当前位置的距离,谁短先服务谁);扫描算法SCAN(电梯算法,双向扫描);循环扫描CSCAN(单向扫描)。
(5)单双缓冲区
单缓冲区:在单线冲情况下,每当用户进程发出一I/O请求时,OS便在主存中为之分配一缓冲区。在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,OS将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据的处理时间为C,T和C是可以并行的。
双缓冲区:
由于缓冲区是共享资源,生产者与消费者在使用缓冲区时必须互斥。
如果消费者尚未取走缓冲区的数据,生产者又生产新的数据,也无法将它送入缓冲区,所以设置两个缓冲区。
磁盘结构和参数
磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为 多个扇区,数据就被存放在一个个扇区中。
磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对 应的数据,因此,会产生寻道时间和等待时间。公式为:
存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用 的时间。
磁盘调度算法
之前已经说过,磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再 旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:
先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时 间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近 的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉 头,与电梯类似。
单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。
磁盘冗余阵列技术
RAID即磁盘冗余阵列技术,RAIDO没有提供冗余和错误修复技术;
RAID1在成对的独立磁盘上产生互为备份的数据,可提高读取性能;
RAID2将数据条块化的分布于不同硬盘上,并使用海明码校验;
RAID3使用奇偶校验,并用单块磁盘存储奇偶校验信息;
RAID5在所有磁盘上交叉的存储数据及奇偶校验信息(所有校验信息存储总量为一个磁盘容量), 读/写指针可同时操作;
RAID0+1 (是两个RAID0,若一个磁盘损坏,则当前RAIDO无法工作,即有一半的磁盘无法工作), RAID1+0 (是两个RAID1,不允许同一组中的两个磁盘同时损坏)与RAID1原理类似,磁盘利用率都 只有50%。
RAIDO将数据分散的存储在不同磁盘中,磁盘利用率100%,访问速度最快,但是没有提供冗余和错误修复技术;
RAID1在成对的独立磁盘上产生互为备份的数据,增加存储可靠性,可以纠错,但磁盘利用率只有50%;RAID2将数据条块化的分布于不同硬盘上,并使用海明码校验;
RAID3和4使用奇偶校验,并用单块磁盘存储奇偶校验信息(可靠性低于RAID5);
RAID5在所有磁盘上交叉的存储数据及奇偶校验信息(所有校验信息存储总量为一个磁盘容量,但分布式存储在不同的磁盘上),读/写指针可同时操作;
RAID6是由一些大型企业提出的私有RAID标准,全称为"带有两个独立分布式校验方案的独立数据磁盘",从功能上讲,能实现两颗磁盘掉线容错的,都是RAID6。RAID6增加了第二个独立的奇偶校验信息块。即使两块磁盘同时失效也不会影响数据的使用。
RAID 7等级是至今为止,理论上性能最高的RAID模式,因为它从组建方式上就已经和以往的方式有了重大的不同。RAID 7完全可以理解为一个独立存储计算机,它自身带有操作系统和管理工具,完全可以独立运行。
RAIDO+1(是两个RAIDO,若一个磁盘损坏,则当前RAID0无法工作,即有一半的磁盘无法工作);RAID1+0(是两个RAID1,不允许同一组中的两个磁盘同时损坏)与RAID1原理类似,磁盘利用率都只有50%,但安全性更高。
主存编址计算
基本概念:K、M、G是数量单位,在存储器里相差1024倍。
b, B是存储单位,1B=8b
7输入输出技术
计算机系统中存在多种内存与接口地址的编址方法,常见的是下面两种:内存与接口地址独立编址和内存与接口地址统一编址。
1)内存与接口地址独立编址方法
在内存与接口地址独立编址方法下,内存地址和接口地址是完全独立的两个地址空间,它们是完全独立的并且是相互隔离的。访问数据时所使用的指令也完全不同,用于接口的指令只用于接口的读/写,其余的指令全都是用于内存的。因此,在编程序或读程序时很易使用和辨认。这种编北方法的缺点是用于接口的指令太少、功能太弱。
2)内存与接口地址统一编址方法
在这种编址方法中,内存地址和接口地址统一在一个公共的地址空间里,即内存单元和接口共用地址空间。在这些地址空间里划分出一部分地址分配给接口使用,其余地北归内存单元使用。这种编址方法的优点是原则上用于内存的指令全都可以用于接口,这就大大地增强了对接口的操作功能,而且在指令上也不再区分内存或接口指令。该编址方法的缺点就在于整个地址空间被分成两部分,其中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续。
计算机和外设间的数据交互方式:
程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低。
程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA 控制器来完成,在主存和外设之间建立直接的数据通路,效率很高。在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时;区分指令执行结束和总线周期结束。
I/O传输控制方式
(1)程序查询方式(CPU一直处于询问、等待的过程,占用CPU时间最长,CPU利用率最低)分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
(2)中断方式(I/O完成后向CPU发送中断请求信号,CPU和I/O可以并行)与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
(3)DMA(CPU只做初始化,不参与具体数据传输过程)DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效。
(4)通道方式、I/O处理机,专用硬件方式。
通道:也是一种处理机,内部具有独立的处理系统,使数据的传输独立于CPU。分为字节多路通道的传送方式(每一次传送一个通道的一个字节,多路通道循环)和选择通道的传送方式(选择一个通道,先传送完这个通道的所有字节,再开始下一个通道传送)。
中断:指CPU在正常运行程序时,由于程序的预先安排或内外部事件,引起CPU中断正在运行的程序,转到发生中断事件程序中。
中断流程图:
中断源:引起程序中断的事件称为中断源。
中断向量:中断源的识别标志,中断服务程序的入口地址。
中断向量表:按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。
中断响应:CPU在执行当前指令的最后一个时钟周期去查询有无中断请求信号,有则响应。关中断:在保护现场和恢复现场过程中都要先关闭中断,避免堆栈错误。保护断点:是保存程序当前执行的位置。
保护现场:是保存程序当前断点执行所需的寄存器及相关数据。
中断服务程序:识别中断源,获取到中断向量,就能进入中断服务程序,开始处理中断。中断返回:返回中断前的断点,继续执行原来的程序。
中断响应时间指的是从发出中断请求到开始进入中断处理程序:中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
8总线结构
总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。
从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCI总线。
外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)
并行总线适合近距离高速数据传输,串行总线适合长距离数据传输,专用总线在设计上可以与连接设备实现最佳匹配。
总线计算:总线的时钟周期=时钟频率的倒数;总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
9系统可靠性分析
可靠性指标
平均无故障时间MTTF=1/失效率。
平均故障修复时间MTTR=1/修复率。
平均故障间隔时间MTBF=MTTF+MTTR。
系统可用性=MTTF/(MTTF+MTTR)*100%。
串并联系统可靠性
无论什么系统,都是由多个设备组成的,协同工作,而这多个设备的组合方式可以是串联、并联,也可以是混合模式,假设每个设备的可靠性为R1,R2……Rn,则不同的系统的可靠性公式如下:
串联系统,一个设备不可靠,整个系统崩溃,整个系统可靠性R=R1*R2*...*Rn
并联系统,所有设备都不可靠,整个系统才崩溃,整个系统可靠性R=1-(1-R1)*(1-R2)*-*
N模冗余系统:N 模冗余系统由N 个(N=2n+1)相同的子系统和一个表决器组成,表决器把N 个子系统中占多数相同结果的输出作为输出系统的输出,如图 1-21 所示。在 N 个子系统中,只要有n+1个或n+1个以上子系统能正常工作,系统就能正常工作,输出正确的结果。
性能指标
1、主频和CPU时钟周期(ClockCycle):主频又称为时钟频率,时钟周期是时钟频率的倒数。如主频为1GHz,则说明1秒钟有1G个时钟周期,每个时钟周期为1000*1000*1000/1G=1ns。主频=外频*倍频
2、指令周期(Instruction Cycle):取出并执行一条指令的时间。
3、总线周期(BUSCycle):也就是CPU完成一次访问MEM或I/O端口操作所用的时间。
4、指令周期、总线周期和时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期(也可说一个指令周期包含若干个时钟周期)。
5、MIPS:每秒处理的百万级的机器语言指令数,主要用于衡量标量机的性能。
6、MFLOPS:每秒百万个浮点操作,不能反映整体情况,只能反映浮点运算情况,主要用于衡量t向量机性能。
易混淆点1:CISC与RISC
1、CISC:复杂指令集;RISC:精简指令集。
2、CISC的特点
指令数量多,指令频率差别大,多寻址,使用微码。
3、RISC的特点
指令数量少,操作寄存器,单周期,少寻址,多通用寄存器,硬布线逻辑控制,适用于流水线。
易混淆点2:流水线
相关参数计算(流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率)
(1)流水线建立时间:1条指令执行时间。
(2)流水线周期:执行时间最长的一段
(3)流水线执行时间(理论公式):(t1+tz+..+tx)+(n-1)*tmax
(4)流水线执行时间(实践公式):k*tmax+(n-1)*tmax
(5)流水线吞吐率:TP=指令条数/流水线执行时间
(6)流水线最大吞吐率
(7)流水线加速比:顺序执行时间/流水线执行时间
易混淆点3: Cache映射方式
1、直接相联映像:硬件电路较简单,但冲突率很高。
2、全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低。
3、组相联映像:直接相联与全相联的折中。
易混淆点4:可靠性指标
在实际应用中,一般MTTR很小,所以通常认为MTBF≈MTTF。
(1)平均无故障时间 →(MTTF)MTTF=1/入,λ为失效率
(2)平均故障修复时间 →(MTTR)MTTR=1/A,μ为修复率
(3)平均故障间隔时间 →(MTBF)MTBF=MTTR+MTTF
(4)系统可用性 → MTTF/(MTTR+MTTF)×100%
系统配置和性能评价
1性能指标⭐⭐⭐
性能指标,是软、硬件的性能指标的集成。在硬件中,包括计算机、各种通信交换设备、各类网络设备等;在软件中,包括:操作系统、协议以及应用程序等。
1、主频和CPU时钟周期(Clock Cycle):主频又称为时钟频率,时钟周期是时钟频率的倒数。主频=外频*倍频
2、指令周期(Instruction Cycle):取出并执行一条指令的时间。
3、总线周期(BUS Cycle):也就是一个访存储器或I/O端口操作所用的时间。
4、指令周期、总线周期和时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期(也可说一个指令周期包含若干个时钟周期)。
5、MIPS:每秒处理的百万级的机器语言指令数,主要用于衡量标量机的性能。
6、MFLOPS:每秒百万个浮点操作,不能反映整体情况,只能反映浮点运算情况,主要用于衡量t向量机性能。
1.计算机
对计算机评价的主要性能指标有:时钟频率(主频):运算速度:运算精度:内存的存储容量:存储器的存取周期;数据处理速率PDR(processingdatarate);吞吐率;各种响应时间;各种利用 率;RASIS特性(即:可靠性Reliability、可用性Availability、可维护性Sericeability、完整性和安全性Integraity and Security);平均故障响应时间;兼容性;可扩充性:性能价格比。
2、路由器
对路由器评价的主要性能指标有:设备吞吐量、端口吞吐量、全双工线速转发能力、背靠背帧数、路由表能力、背板能力、丢包率、时延、时延抖动、VPN支持能力、内部时钟精度、队列管理机 制、端口硬件队列数、分类业务带宽保证、RSVP、IP DiffServ、CAR支持、冗余、热插拔组件、路 由器冗余协议、网管、基于Web的管理、网管类型、带外网管支持、网管粒度、计费能力/协议、分组语音支持方式、协议支持、语音压缩能力、端口密度、信令支持。
3、交换机
对交换机评价的主要性能指标有:交换机类型、配置、支持的网络类型、最大 ATM 端口数、最大 SONET端口数、最大 FDDI端口数、背板吞吐量、缓冲区大小、最大MAC地址表大小、最大电源 数、支持协议和标准、路由信息协议RIP、RIP2、开放式最短路径优先第2版、边界网关协议BGP、无类域间路由 CIDR、互联网成组管理协议IGMP、距离矢量多播路由协议 DVMRP、开放式最短路径 优先多播路由协议 MOSPF、协议无关的多播协议 PIM、资源预留协议 RSVP、802.1p 优先级标记,多队列、路由、支持第3层交换、支持多层(4到7层交换、支持多协议路由、支持路由缓存、可支持 最大路由表数、VLAN、最大VLAN数量、网管、支持网管类型、支持端口镜像、QoS、支持基于策 略的第2层交换、每端口最大优先级队列数、支持基于策略的第3层交换、支持基于策略的应用级 QoS、支持最小/最大带宽分配、冗余、热交换组件(管理卡,交换结构,接口模块,电源,冷却系统、支持端口链路聚集协议、负载均衡。
4、网络
评价网络的性能指标有:设备级性能指标;网络级性能指标;应用级性能指标;用户级性能指标:吞吐量。
5、操作系统
评价操作系统的性能指标有:系统的可靠性、系统的吞吐率(量)、系统响应时间、系统资源利用率、可移植性。
6、数据库管理系统
衡量数据库管理系统的主要性能指标包括数据库本身和管理系统两部分,有:数据库的大小、数据库中表的数量、单个表的大小、表中允许的记录(行)数量、单个记录(行)的大小、表上所允许的索引数量、数据库所允许的索引数量、最大并发事务处理能力、负载均衡能力、最大连接数等等。
7、WEB服务器
评价Web服务器的主要性能指标有:最大并发连接数、响应延迟、吞吐量。
计算机系统的性能一般包括两个大的方面。一个方面是它的可靠性或可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度(例如,平均无故障时间),也可以是在一段时间内,能正常工作的时间所占的百分比;另一个方面是它的处理能力或效率,这又可分为三类指标,第一类指标是吞吐率(例如,系统在单位时间内能处理正常作业的个数),第二类指标是响应时间(从系统得到输入到给出输出之间的时间),第三类指标是资源利用率,即在给定的时间区间中,各种部件(包括硬设备和软件系统)被使用的时间与整个时间之比。当然,不同的系统对性能指标的描述有所不同,例如,计算机网络系统常用的性能评估指标为信道传输速率、信道吞吐量和容量、信道利用率、传输延迟、响应时间和负载能力等。
计算机系统的可用性指标
故障率
指在给定的时间里,系统故障和维护事件出现的次数
健壮性
指系统检测和处理故障的能力,以及系统在各种故障下仍然具有的工作能力
可恢复性
指系统从故障状态恢复到正常状态的能力
2性能评价方法⭐⭐
性能评测的常用方法
1、时钟频率法:以时钟频率高低衡量速度。
2、指令执行速度法:表示机器运算速度的单位是MIPS。
3、等效指令速度法(Gibson mix,吉普森混合法):通过各类指令在程序中所占的比例(Wi)进行计算得到的。特点:考虑指令比例不同的问题。
4、数据处理速率法(PDR):PDR值的方法来衡量机器性能,PDR值越大,机器性能越好。PDR=L/R 特点:考虑CPU+存储
5、综合理论性能法(CTP): CTP用MTOPS(Million Theoretical Operations Per Second,每秒百万次理论运算)表示。
6、基准程序法:把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序 (benchmark)。基准程序法是目前一致承认的测试系统性能的较好方法。
真实的程序->核心程序->小型基准程序->合成基准程序
易混淆点:指令周期、总线周期和时钟周期
时钟频率(主频):主频又称为时钟频率,时钟周期是时钟频率的倒数。如主频为1GHz,则说明1秒钟有1G个时钟周期,每个时钟周期为1000*1000*1000/1G=1ns。(主频=外频*倍频)
指令周期、总线周期和时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期(也可说一个指令周期包含若干个时钟周期)。
指令周期(Instruction Cycle):取出并执行一条指令的时间。
总线周期(BUSCycle):也就是一个访存储器或I/O端口操作所用的时间。
基准程序法(Benchmark)
把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序(benchmark)。是目前被用户一致承认的测试性能的较好方法,有多种多样的基准程序,包括:
(1)整数测试程序。同一厂家的机器,采用相同的体系结构,用相同的基准程序测试,得到的MIPS 值越大,一般说明机器速度越快。
(2)浮点测试程序。指标 MFLOPS(理论峰值浮点速度)。
(3)SPEC 基准程序(SPEC Benchmark)。重点面向处理器性能的基准程序集,将被测计算机的执行时间标准化,即将被测计算机的执行时间除以一个参考处理器的执行时间,
(4)TPC 基准程序。用于评测计算机在事务处理、数据库处理、企业管理与决策支持系统等 方面的性能。其中,TPC-C 是在线事务处理(On-line Transaction Processing,OLTP)的基准程序,TPC-D 是决策支持的基准程序。TPC-E 作为大型企业信息服务的基准程序。
大多数情况下,为测试新系统的性能,用户必须依靠评价程序来评价机器的性能。下面列出了4 种评价程序,它们评测的准确程度依次递减:真实的程序、核心程序、小型基准程序、合成基准程序。
3阿姆达尔解决方案
阿姆达尔(Arndahl)定律主要用于系统性能改进的计算中。阿姆达尔定律是指计算机系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式被使用的频率,或所占总执行时间的比例。
阿姆达尔定律定义了采用特定部件所取得的加速比。假定我们使用某种增强部件,计算机的性能就会得到提高,那么加速比就是下式所定义的比率:
操作系统
1操作系统概述
操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
操作系统有两个重要的作用:
第一,通过资源管理提高计算机系统的效率:
第二,改善人机界面向用户提供友好的工作环境。
操作系统的4个特征是
并发性
共享性
虚拟性
不确定性
操作系统的功能:
(1)进程管理。实质上是对处理机的执行“时间”进行管理,采用多道程序等技术将CPU的时间合理地分配给每个任务,主要包括进程控制、进程同步、进程通信和进程调度。
(2)文件管理。主要包括文件存储空间管理、目录管理、文件的读/写管理和存取控制。
(3)存储管理。存储管理是对主存储器“空间”进行管理,主要包括存储分配与回收、存储保护、地址映射(变换)和主存扩充。
(4)设备管理。实质是对硬件设备的管理,包括对输入/输出设备的分配、启动、完成和回收。
(5)作业管理。包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等。
操作系统的分类:
批处理操作系统:单道批处理和多道批处理(主机与外设可并行)。
分时操作系统:一个计算机系统与多个终端设备连接。分时操作系统是将CPU的工作时间划分为许多很短的时间片,轮流为各个终端的用户服务。
实时操作系统:实时是指计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应。实时系统对交互能力要求不高,但要求可靠性有保障。为了提高系统的响应时间,对随机发生的外部事件应及时做出响应并对其进行处理。
网络操作系统:是使联网计算机能方便而有效地共享网络资源,为网络用户提供各种服务的软件和有关协议的集合。功能主要包括高效、可靠的网络通信;对网络中共享资源的有效管理;提供电子邮件、文件传输、共享硬盘和打印机等服务;网络安全管理;提供互操作能力。三种模式:集中模式、客户端/服务器模式、对等模式。
分布式操作系统:分布式计算机系统是由多个分散的计算机经连接而成的计算机系统,系统中的计算机无主、次之分,任意两台计算机可以通过通信交换信息。通常,为分布式计算机系统配置的操作系统称为分布式操作系统。是网络操作系统的更高级形式。
微型计算机操作系统:简称微机操作系统,常用的有Windows、Mac OS、Linux。
嵌入式操作系统:运行在嵌入式智能芯片环境中,对整个智能芯片以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制。其主要特点如下:
(1)微型化。从性能和成本角度考虑,希望占用的资源和系统代码量少,如内存少、字长短、运行速度有限、能源少(用微小型电池)。
(2)可定制。从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要。
(3)实时性。嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。
(4)可靠性。系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。
(5)易移植性。为了提高系统的易移植性,通常采用硬件抽象层(Hardware Abstraction Level,HAL)和板级支撑包(Board Support Package,BSP)的底层设计技术。
嵌入式系统初始化过程按照自底向上、从硬件到软件的次序依次为:片级初始化→板级初始化→系统初始化。芯片级是微处理器的初始化,板卡级是其他硬件设备初始化,系统级初始化就是软件及操作系统初始化。
微内核操作系统:微内核,顾名思义,就是尽可能的将内核做的很小,只将最为核心必要的东西放入内核中,其他能独立的东西都放入用户进程中,这样,系统就被分为了用户态和内核态,如下图所示:
2进程管理⭐⭐
进程资源分配与调度的基本单位,线程是调度的基本单位,不是资源分配的基本单位,某些资源可以共享。
同一个进程当中的各个线程,可以共享该进程的各种资源,如内存地址空间、代码、数据、文件等,线程之间的通信与交流非常方便。每个线程都有自己独立的CPU运行上下文和栈,这是不能共享的。
2.1 进程的组成和状态
进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。
进程基础的状态是下左图中的三态图。需要熟练掌握左下图中的进程三态之间的转换。
三态模型
运行:当一个进程在CPU上运行时。(单处理机处于运行态的进程只有一个)
就绪:一个进程获得了除CPU外的一切所需资源,一旦得到处理机即可运行。
阻塞:阻塞也称等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O、等待I/O完成等)而暂时停止运行,此时即使把CPU分配给进程也无法运行,故称进程处于阻塞状态。
新建态对应于进程刚刚被创建时没有被提交的状态,并等待系统完成创建进程的所有必要信息。终止态等待操作系统进行善后处理,释放主存。
2.2 前趋图和进程资源图
前趋图⭐
(1)前趋图表示:→(起点,终点)可以此形式表示前趋图中所有箭线,1个箭头表示1个前趋关系。
(2)针对箭线标注信号量,箭线的起点位置是V操作(即前趋活动完成后以V操作通知后继活动);箭线的终点位置是P操作(即后继活动开始前以P操作检查前趋活动是否完成)。前趋图与PV操作结合,根据前趋图箭线标注信号量,再根据进程图填空。
用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如下图:
可知,ABC可以并行执行,但是必须ABC都执行完后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序。
进程资源图
用来表示进程和资源之间的分配和请求关系,如下图所示:
P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在上图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。
阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中P2。
非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3。当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态。
进程资源图的化简方法:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞的,接着把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来,这样,系统剩余的空闲资源便多了起来,接着又去看看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。最后,所有的资源和进程都变成孤立的点。
2.3 进程间的同步与互斥
互斥:如千军万马过独木桥,同类资源的竞争关系。(资源上的制约,间接制约)
同步:速度有差异,在一定情况停下等待,进程间的协作关系。(工序上的制约,直接制约)
互斥和同步并非反义词,互斥表示一个资源在同一时间内只能由一个任务单独使用,需要加锁,使用完后解锁才能被其他任务使用;
同步表示两个任务可以同时执行,只不过有速度上的差异,需要速度上匹配,不存在资源是否单独或共享的问题。
2.4 信号量与PV操作⭐⭐⭐⭐⭐
基本概念
临界资源:各个进程间需要互斥方式对其进行共享的资源,即在某一时刻只能被一个进程使用,该进程释放后又可以被其他进程使用。如打印机、磁带机等
临界区:每个进程中访问临界资源的那段代码。
信号量:是一种特殊的变量。当信号量小于0时,还可以表示排队进程数。
两类信号量
互斥信号量,对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。
同步信号量,对共享资源的访问控制,初值是共享资料的个数。
P操作和v操作
都是原子操作,用来解释进程间的同步和互斥原理,PV操作原理如下图所示:
例如在生产者和消费者的问题中,生产者生产一个商品S,而后要申请互斥的使用该仓库,即首先需要执行互斥信号量P(SO),申请到仓库独立使用权后,再判断仓库是否有空闲(信号量S1),执行P(S1),若结果大于等于0,表示仓库有空闲,再将S放入仓库中,此时仓库商品数量(信号量S2)增加1,即执行V(S2)操作,使用完毕后,释放互斥信号量V(S0)。
对于消费者,首先也需要执行互斥信号量 PISO),申请到仓库独立使用权后,再判断仓库中是否有商品,执行PIS2),若结果大于等于0,表示有商品,可以取出,此时造成了一个结果,即仓库空闲了一个,执行V(S1)操作,使用完毕后,释放互斥信号量V(SO)。
因此,执行P操作是主动的带有判断性质的-1,执行V操作是被动的因为某操作产生的+1。
2.5 进程调度
进程调度方式是指当有更高优先级的进程到来时如何分配 CPU。分为可剥夺和不可剥夺两种,可剥夺指当有更高优先级进程到来时,强行将正在运行进程的CPU分配给高优先级进程:不可剥夺是指高优先级进程必须等待当前进程自动释放CPU。
在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
(1)高级调度。高级调度又称“长调度”“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业只需经过一次高级调度。
(2)中级调度。中级调度又称“中程调度”或“对换调度”,它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对CPU的竞争。
(3)低级调度。低级调度又称“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。
调度算法:
先来先服务FCFS:先到达的进程优先分配CPU。用于宏观调度。
时间片轮转:分配给每个进程CPU时间片,轮流使用CPU,每个进程时间片大小相同,很公平,用于微观调度。
优先级调度:每个进程都拥有一个优先级,优先级大的先分配CPU。
多级反馈调度:时间片轮转和优先级调度结合而成,设置多个就绪队列1.2,3...n,每个队列分别赋予不同的优先级,分配不同的时间片长度;新进程先进入队列1的末尾,按FCFS原则,执行队列1的时间片;若未能执行完进程,则转入队列2的末尾,如此重复。
2.6 死锁问题⭐
当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。
死锁产生的四个必要条件:
资源互斥
每个进程占有资源并等待其他资源
系统不能剥夺进程资源
进程资源图是一个环路
死锁产生后,解决措施是打破四大条件,有下列方法:
死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。
死锁避免:一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。
死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。
死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。
死锁资源计算:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n*(R-1)。其不发生死锁的最小资源数为n*(R-1)+1。
(1)根据题干给出的进程和资源分配。判断形成死错的最小资源散或其他参数:对于这种情况,分配资源时每个进程得到可以完成进程的资源数减一,此时是形成死锁的最差情况,在此情况下多1个资源即可解决死锁问题,即不可能形成死锁。假设m个进程各自需要w个R资源,系统中共有n个R资源,此时不可能形成死锁的条件是:
m*(w-1)+1<=n。
(2)银行家算法:判断系统当前剩余资源数;判断各个进程当前仍需资源数;当前执行进程仍需资源数超过系统剩余资源则死锁,不超过则执行该进程;执行进程后释放该进程所有资源(当前系统剩余资源数为:系统前期剩余资源+当前进程前期已分配资源)。
根据银行家算法判断相关进程序列是否会形成死锁,是则为不安全序列,能够正常执行所有进程则为安全序列。
2.7 线程
传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
引入线程的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中设置的进程数目不宜过多,进程切换的频率不宜太高,这就限制了并发程度的提高。引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个进程的其他线程共享进程所拥有的全部资源,例如进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据。
易混淆点:进程与线程
进程的2个基本属性:可拥有资源的独立单位;可独立调度和分配资源的基本单位。
进程资源分配与调度的基本单位,线程是调度的基本单位,不是资源分配的基本单位,某些资源可以共享。
同一个进程当中的各个线程,可以共享该进程的各种资源,如内存地址空间、代码、数据、文件等,线程之间的通信与交流非常方便。
能共享
堆
全局变量
静态变量
公共资源
对于同一个进程当中的各个线程来说,他们可以共享该进程的大部分资源。每个线程都有自己独立的CPU运行上下文和栈,这是不能共享的。
不能共享
栈
寄存器
3存储管理⭐⭐⭐
存储器的结构:寄存器——高速缓存Cache——主存——外存。
地址重定位:将逻辑地址转换为实际主存物理地址的过程,分为静态重定位(在程序装入主存时就完成了转换)、动态重定位(边运行边转换)。
3.1 分区存储管理
所谓分区存储组织,就是整存,将某进程运行所需的内存整体一起分配给它,然后再执行。有三种分区方式:
固定分区:静态分区方法,将主存分为若干个固定的分区,将要运行的作业装配进去,由于分区固定,大小和作业需要的大小不同,会产生内部碎片。
可变分区:动态分区方法,主存空间的分区是在作业转入时划分,正好划分为作业需要的大小,这样就不存在内部碎片,但容易将整片主存空间切割刻成许多块,会产生外部碎片。可变分区的算法如下:
系统分配内存的算法有很多,如下图所示,根据分配前的内存情况,还需要分配 9K空间,对不同算法的结果介绍如下:
首次适应法:按内存地址顺序从头查找,找到第一个>=9K空间的空闲块,即切割9K空间分配给进程。
最佳适应法:将内存中所有空闲内存块按从小到大排序,找到第一个>=9K 空间的空闲块,切害分配,这个将会找到与9K空间大小最相近的空闲块。
最差适应法:和最佳适应法相反,将内存中空闲块空间最大的,切割9K空间分配给进程,这是为了预防系统中产生过多的细小空闲块。
循环首次适应法:按内存地址顺序查找,找到第一个>=9K 空间的空闲块,而后若还需分配,则找下一个,不用每次都从头查找,这是与首次适应法不同的地方。
可重定位分区:可以解决碎片问题,移动所有已经分配好的区域,使其成为一个连续的区域,这样其他外部细小的分区碎片可以合并为大的分区,满足作业要求。只在外部作业请求空间得不到满足时进行。
3.2 分页存储管理
如果采用分区存储,都是整存,会出现一个问题,即当进程运行所需的内存大于系统内存时,就无法将整个进程一起调入内存,因此无法运行,若要解决此问题,就要采用段页式存储组织,页式存储是基于可变分区而提出的。
如下图所示,逻辑页分为页号和页内地址,页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理拱号加上偏移地址才得出了真正运行时的物理地址。
优点:利用率高,碎片小,分配及管理简单。
缺点:增加了系统开销,可能产生抖动现象
地址表示和转换
地址组成:页地址+页内偏移地址;(页地址在高位,页内偏移地址在低位)
物理地址:物理块号+页内偏移地址;
逻辑地址:页号+页内偏移地址;
物理地址和逻辑地址的页内偏移地址是一样的,只需要求出页号和物理块号之间的对应关系,首先需要求出页号的位数,得出页号,再去页表里查询其对应的物理块号,使用此物理块号和页内偏移地址组合,就能得到物理地址。
页面置换算法⭐
页而淘汰时,主要依据原则:先淘汰最近未被访问的(访问位为0),其次淘汰但未被修改的(即修改位为0,因为修改后的页面)。
有时候,进程空间分为100个页面,而系统内存只有10个物理块,无法全部满足分配,就需要将马上要执行的页面先分配进去,而后根据算法进行淘汰,使100个页面能够按执行顺序调入物理块中执行完。
缺页表示需要执行的页不在内存物理块中,需要从外部调入内存,会增加执行时间,因此,缺页数越多,系统效率越低。页面置换算法如下:
最优算法:OPT,理论上的算法,无法实现,是在进程执行完后进行的最佳效率计算,用来让其他算法比较差距。原理是选择未来最长时间内不被访问的页面置换,这样可以保证未来执行的都是马上要访问的。
先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页数越多,缺页率可能越多(即效率越低).
最近最少使用:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象,使用大量计数器,但是没有LFU多。
淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面。
快表
是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
快表是将页表存于Cache中;慢表是将页表存于内存上。慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存,因此更快。
3.3 段式存储管理
将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,页表中直接是逻辑页号对应物理块号,而下图所示,段表有段长和基址两个属性,才能确定一个逻辑段在物理段中的位置。
优点:多道程序共享内存,各段程序修改互不影响。
缺点:内存利用率低,内存碎片浪费大。
综上:分页是根据物理空间划分,每页大小相同;分段是根据逻辑空间划分,每段是一个完整的功能,便于共享,但是大小不同。
地址表示
(段号,段内偏移):其中段内偏移不能超过该段号对应的段长,否则越界错误,而此地址对应的真正内存地址应该是:段号对应的基地址+段内偏移。
3.4 段页式存储管理⭐⭐⭐
(1)知道页面大小时,可以依此判断页内地址的长度,并据此知道该地址的页号:
(2)页号与页帧号的转换可以通过查表进行;
(3)段地址的格式,段号后跟的段内地址偏移量不能超过段长;
(4)页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。
(5)段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
(6)段页式存储:段式与页式的综合体。先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同。
对进程空间先分段,后分页,具体原理图和优缺点如下:
优点:空间浪费小、存储共享容易、存储保护容易、能动态链接。
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。
易混淆点:页式存储和段式存储
页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。
段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
段页式存储:段式与页式的综合体。先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同。
4设备管理
4.1 概述
设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入/输出工作,所以常称为外部设备(简称外设)。在计算机系统中,将负责管理设备和输入/输出的机构称为I/O系统。因此,I/O 系统由设备、控制器、通道(具有通道的计算机系统)、总线和I/O软件组成。
设备的分类:
按数据组织分类:块设备、字符设备。
按照设备功能分类:输入设备、输出设备、存储设备、网络联网设备、供电设备等等。
资源分配角度分类:独占设备、共享设备和虚拟设备。
数据传输速率分类:低速设备、中速设备、高速设备。
设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定的策略分配和管理各种设备,控制设备的各种操作,完成1/O设备与主存之间的数据交换。
设备管理的主要功能是动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理1/O 设备的操作、提供设备使用的用户接口及设备的访问和控制。
4.2 I/O软件
1/0设备管理软件的所有层次及每一层功能如下图:
当用户程序试图读一个硬盘文件时,需要通过操作系统实现这一操作。与设备无关软件检查高速缓存中有无要读的数据块,若没有,则调用设备驱动程序,向I/O 硬件发出一个请求。然后,用户进程阻塞并等待磁盘操作的完成。当磁盘操作完成时,硬件产生一个中断,转入中断处理程序。中断处理程序检查中断的原因,认识到这时磁盘读取操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,从而结束此次1/o 请求。用户进程在得到了所需的硬盘文件内容之,后继续运行。
4.3 虚设备和 SPOOLING 技术
一台实际的物理设备,例如打印机,在同一时间只能由一个进程使用,其他进程只能等待,且不知道什么时候打印机空闲,此时,极大的浪费了外设的工作效率。
引入SPOOLING(外围设备联机操作)技术,就是在外设上建立两个数据缓冲区,分别称为输入井和输出井,这样,无论多少进程,都可以共用这一台打印机,只需要将打印命令发出,数据就会排队存储在缓冲区中,打印机会自动按顺序打印,实现了物理外设的共享,使得每个进程都感觉在使用一个打印机,这就是物理设备的虚拟化。如下图所示:
5文件管理
5.1 概述
文件(File)是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。
信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录,记录可以等长,也可以不等长。一个文件包括文件体和文件说明。文件体是文件真实的内容。文件说明是操作系统为了管理文件所用到的信息,包括文件名、文件内部标识、文件的类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等。
文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称文件系统。文件系统的功能包括按名存取:统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复。
文件的类型:
(1)按文件性质和用途可将文件分为系统文件、库文件和用户文件。
(2)按信息保存期限分类可将文件分为临时文件、档案文件和永久文件。
(3)按文件的保护方式分类可将文件分为只读文件、读/写文件、可执行文件和不保护文件。
(4)UNIX 系统将文件分为普通文件、目录文件和设备文件(特殊文件)。
文件的逻辑结构可分为两大类:一是有结构的记录式文件,它是由一个以上的记录构成的文件,故又称为记录式文件;二是无结构的流式文件,它是由一串顺序字符流构成的文件。
文件的物理结构是指文件的内部组织形式,即文件在物理存储设备上的存放方法,包括:
(1)连续结构。连续结构也称顺序结构,它将逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上。只要知道文件的起始物理块号和文件的长度,就可以很方便地进行文件的存取。
(2)链接结构。链接结构也称串联结构,它是将逻辑上连续的文件信息(如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。因此,只要知道文件的第一个物理块号,就可以按链指针查找整个文件。
(3)索引结构。在采用索引结构时,将逻辑上连续的文件信息(如记录)存放在不连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。
(4)多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同一文件卷上。根据一个文件大小的不同,其索引表占用物理块的个数不等,一般占一个或几个物理块。
5.2 索引文件结构
如下图所示,系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,共可存4KB*10=10KB数据;
10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存1024*4KB=4098KB 数据。
二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为1024*1024*4KB数据。
5.3 文件目录
文件控制块中包含以下三类信息:基本信息类、存取控制信息类和使用信息类。
(1)基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等.
(2)存取控制信息类。文件的存取权限,像 UNIX 用户分成文件主、同组用户和一般用户三类,这三类用户的读/写执行RWX权限。
(3)使用信息类。文件建立日期、最后一次修改日期、最后一次访问的日期、当前使用的信息(如打开文件的进程数、在文件上的等待队列)等。
文件控制块的有序集合称为文件目录。
相对路径:是从当前路径开始的路径。
绝对路径:是从根目录开始的路径。
全文件名=绝对路径+文件名。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。
树形结构主要是区分相对路径和绝对路径,如下图所示:
5.4 文件存储空间管理
文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有顺序存取和随机存取两种方法。顺序存取方法是指对文件中的信息按顺序依次进行读/写;随机存取方法是指对文件中的信息可以按任意的次序随机地读/写。文件存储空间的管理:
(1)空闲区表。将外存空间上的一个连续的未分配区域称为“空闲区”。操作系统为磁盘外存上的所有空闲区建立一张空闲表,每个表项对应一个空闲区,适用于连续文件结构。
(2)位示图。这种方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值0 和1分别表示空闲和占用。
(3)空闲块链。每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上(如管理块中),不需要磁盘分配表,节省空间。每次申请空闲物理块只需根据链表的头指针取出第一个空闲物理块,根据第一个空闲物理块的指针可找到第二个空闲物理块,依此类推。
(4)成组链接法。例如,在实现时系统将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。假如某个组的第一个空闲块号等于0,意味着该组是最后一组,无下一组空闲块。
数据库
1基本概念
数据库系统DBS的组成:数据库、硬件、软件、人员。
数据库管理系统 DBMS的功能:数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。
DBMS的分类:
关系数据库系统RDBS
面向对象的数据库系统 OODBS
对象关系数据库系统 ORDBS
数据库系统的体系结构:
集中式数据库系统(所有东西集中在DBMS电脑上)
客户端/服务器体系结构(客户端负责请求和数据表示,服务器负责数据库服务)
并行数据库系统(多个物理上在一起的CPU)
分布式数据库系统(物理上分布在不同地方的计算机)
数据库模式⭐⭐
1、体系结构
(1)三级模式:外模式对应视图,模式(也称为概念模式)对应数据库表,内模式对应物理文件。
内模式:管理如何存储物理的数据,对数据的存储方式、优化、存放等。
模式:又称为概念模式,就是我们通常使用的表这个级别,根据应用、需求将物理数据划分成一张张表。
外模式:对应数据库中的视图这个级别,将表进行一定的处理后再提供给用户使用,例如,将用户表中的用户名和密码组成视图提供给登录模块使用,而用户表中的其他列则不对该模块开放,增加了安全性。
(2)两层映像:外模式-模式映像,模式-内模式映像;两层映像可以保证数据库中的数据具有较高的逻辑独立性和物理独立性。
外模式—模式映像:是表和视图之间的映射,存在干概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,而无需修改应用程序。
模式—内模式映像:是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。
(3)逻辑独立性:即逻辑结构发生改变时,用户程序对外模式的调用可以不做修改。由外模式-模式映像保证。
(4)物理独立性:即数据库的内模式发生改变时,数据的逻辑结构不变。由模式-内模式映像保证。
以上的数据库系统实际上是一个分层次的设计,从底至上称为物理级数据库(实际为一个数据库文件)、概念级数据库、用户级数据库,各层情况如下:
2、视图
(1)数据库视图
它一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SOL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。
(2)视图的优点
视图能简化用户操作
视图使用户能以不同的方式查询同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图可以对机密数据提供安全保护
(3)物化视图
它不是传统意义上虚拟视图,是实体化视图,将视图的内容物理存储起来。同时当原始表中的数据更新时,物化视图也会更新。
3数据库的设计
需求分析:即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。
概念结构设计:就是设计E-R图,也即实体-联系图,与物理实现无关,就是说明有哪些实体,实体有哪些属性。
逻辑结构设计:将E-R图,转换成关系模式,也即转换成实际的表和表中的列属性,这里要考虑很多规范化的东西。
物理设计:根据生成的表等概念,生成物理数据库。
具体各个设计阶段的产出物、要求等如下所示:
4 E-R模型
数据模型的三要素:数据结构、数据操作、数据的约束条件。
在 E-R 模型中,使用椭圆表示属性(一般没有)、长方形表示实体、菱形表示联系,联系的两端要填写联系类型,示例如下图:
联系类型:一对一1:1、一对多1:N、多对多M:N。
实体
弱属性
强属性
属性分类:简单属性和复合属性(属性是否可以分割)、单值属性和多值属性(属性有多个取值)、NULL属性(无意义)、派生属性(可由其他属性生成)。
关系模型
关系模型中数据的逻辑结构是一张二维表,由行列组成:
E-R模型转换为关系模型:每个实体都对应一个关系模式;
联系分为三种:
1:1联系中,联系可以放到任意的两端实体中,作为一个属性(要保证1:1的两端关联),也可以转换为一个单独的关系模式;
1:N的联系中,联系可以单独作为一个关系模式,也可以在N端中加入1端实体的主键;
M:N的联系中,联系必须作为一个单独的关系模式,其主键是M和N端的联合主键。
以上,明确了有多少关系模式,就知道有多少张表,同时,表中的属性也确定了,注意联系是作为表还是属性,若是属性又是哪张表的属性即可。
5关系代数运算⭐⭐⭐
关系模式在代数运算时可以理解为数据库中的表,两个概念通用。
1、并(结果为二者元组之和去除重复行)
并:结果是两张表中所有记录数合并,相同记录只显示一次。
2、交(结果为二者重复行)
交:结果是两张表中相同的记录。
3、差(前者去除二者重复行)
差:S1-S2,结果是S1表中有而S2表中没有的那些记录。
以元组行作为整体进行判断,类似于集合运算。
设有S1和S2关系如下图,其并交差结果如下图:
4、笛卡尔积
结果列数为二者属性列数之和,行数为二者元组行数的乘积。
两个表做笛卡尔积,结果表的元组由前表与后表的元组拼接而成,不同的排列组合形成不同的结果元组。
笛卡尔积:S1*S2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+S2属性列,记录数为S1*S2记录数。
5、投影(筛选符合条件的属性列)
投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示。
6、选择(筛选符合条件的元组)
属性名可以依次标序号,直接以数字形式出现在表达式中。
选择:实际是按条件选择某关系模式中的某条记录。
设有S1和S2关系如下图,其笛卡尔积、投影、选择结果如下图:
7、自然连接
结果列数为二者属性列数之和减去重复列,行数为二者同名属性列其值相同的结果元组。笛卡尔积、选择、投影的组合表示可以与自然连接等价。
普通连接的条件会写出,没有写出则表示为自然连接。
自然连接:结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录。自然连接结果如下:
设有关系R、S如下左图所示,自然连接结果如下右图所示:
易混淆点3:笛卡尔积与自然连接
笛卡尔积结果列数为二者属性列数之和,行数为二者元素数乘积。自然连接结果列数为二者属性列数之和减去重复列,行数为二者同名属性列其值相同的结果元组。笛卡尔积、选择、投影的组合表示可以与自然连接等价。
效率问题:关系代数运算的效率,归根结底是看参与运算的两张表格的属性列数和记录数,属性列和记录数越少,参与运算的次数自然越少,效率就越高。因此,效率高的运算一般都是在两张表格参与运算之前就将条件判断完。如下,后者效率比前者效率高很多。
6关系数据库的规范化⭐⭐⭐
非规范化存在的问题
规范化过程是为了解决数据冗余、删除异常、插入异常、更新异常(修改操作一致性问题)等问题。
数据冗余:重复存储数据较多,浪费存储空间。
更新异常(引起修改操作的不一致性):若不注意,会使一些数据被修改,另一些数据未被修改,导致数据修改的不一致性。
插入异常:未提供主键,当主键为空时,不能进行插入操作。
删除异常:删除部分信息时会删除整条记录,找不到原记录。
规范化
(1)函数依赖
给定一个X,能唯一确定一个Y,就称X确定Y,或者说Y依赖于X,例如Y=X*X函数。
部分函数依赖
部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分(即A)可以确定C,称为部分函数依赖。
传递函数依赖
传递函数依赖:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依赖;若A和B等价,则不存在传递,直接就可确定C。
(2)Armstrong公理
关系模式R<U,F>来说有以下的推理规则:
A1.自反律(Reflexivity):若YSXSU,则X→Y成立。
自反律:若属性集Y包含于属性集X,属性集X包含于U,则X→Y在R上成立。(此处X→Y 是平凡函数依赖)
A2.增广律(Augmentation):若ZSU且X→Y,则XZ→YZ成立。
增广律:若X→Y在R上成立,且属性集Z包含于属性集U,则XZ→YZ在R上成立。
A3.传递律(Transitivity):若X→Y且Y→Z,则X→Z成立。
传递律:若X→Y和Y→Z在R上成立,则×→Z在R上成立。
根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则:由X→Y,X→Z,有X→YZ。 (A2, A3)
合并规则:若×→Y,X→Z同时在R上成立,则X→YZ在R上也成立。
伪传递规则:由X→Y,WY→Z,有XW→Z。(A2,A3)
伪传递规则:若X→Y在R上成立,且WY→Z,则XW→Z。
分解规则:由X→Y及Z SY,有X→Z。(A1,A3)
分解规则:若×→W在R上成立,且属性集Z包含于W,则X→Z在R上也成立。
键与约束
超键:能唯一标识此表的属性的组合。
候选键:超键中去掉冗余的属性,剩余的属性就是候选键。
候选键(候选码)是能够唯一标示元组却无冗余的属性组合,可以有多种不同的候选键,在其中任选一个作为主键。候选键的求取可以利用图示法找入度为0的属性集合,并在此基础上进行扩展,最终找到能够遍历全图的最小属性组合作为候选键,对于入度为0在关系依赖集中可以理解为从未在箭线右侧出现。
主键:任选一个候选键,即可作为主键。
外键:其他表中的主键。
候选键的求法:根据依赖集画出有向图,从入度为0的节点开始,找出图中一个节点或者一个节点组合,能够遍历完整个图,就是候选键。
根据依赖集,找出从未在右边出现过的属性,必然是候选键之一,以该属性为基础,根据依赖集依次扩展,看能否遍历所有属性,将无法遍历的加入候选键中。
主属性:候选键内的属性为主属性,其他属性为非主属性。
全码:关系模型的所有属性组是这个关系模式的候选码,称为全码
实体完整性约束:即主键约束,主键值不能为空,也不能重复。
参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值,或者为空。
用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。
触发器:通过写脚本来规定复杂的约束。本质属于用户自定义完整性约束。
范式
范式:规范化是为了解决数据冗余、删除异常、插入异常、更新异常等问题。
第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
第二范式(2NF):当且仅当关系模式R是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式R是第二范式。
消除了非主属性对主属性的部分依赖
单属性是2NF
第三范式(3NF):当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时,则称关系模式R是第三范式。
BC范式(BCNF):设R是一个关系模式,F是它的依赖集,当且仅当其F中每个依赖的决定因素必定包含R的某个候选码时,R属于BCNF。【当且仅当关系模式R是第三范式(3NF)】
【解题技巧:规范化理论相关】
了解规范化理论相关的概念,对于规范化程度没有达到3NF时,一般认为会存在数据冗余、修改异常、插入异常、删除异常问题。对于相关问题的解决,一般是将表进行模式分解,从而提高其规范化程度至3NF。
数据库中的范式总体概论如下图:
第一范式1NF
关系中的每一个分量必须是一个不可分的数据项。通俗地说,第一范式就是表中不允许有小表的存在。比如,对于如下的员工表,就不属于第一范式:
上表中,出现了属性薪资又被分为基本工资和补贴两个子属性,就好像表中有分割了一个小表,这就不属于第一范式。如果将基本工资和补贴合并,那么该表符合1NF。
1NF可能存在的问题:1NF是最低一级的范式,范式程度不高,存在很多的问题。比如用一个单一的关系模式学生来描述学校的教务系统:学生(学号,学生姓名,系号,系主任姓名,课程号,成绩)
这个表满足第一范式,但是存在如下问题:
数据冗余:一个系有很多的学生,同一个系的学生的系主任是相同的,所以系主任名会重复出现。
更新复杂:当一个系换了一个系主任后,对应的这个表必须修改与该系学生有关的每个元组。
插入异常:如果一个系刚成立,没有任何学生,那么这个无法把这个系的信息插入表中。
删除异常:如果一个系的学生都毕业了,那么在删除该系学生信息时,这个系的信息也丢了。
第二范式2NF
如果关系R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF。通俗地说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列。
按照定义,上面的学生表就不满足 2NF,因为学号不能完全确定课程号和成绩(每个学生可以选多门课)。将学生表分解为:
学生(学号,学生姓名,系编号,系名,系主任)选课(学号,课程号,成绩)。每张表均属于2NF。
第三范式3NF
在满足1NF的基础上,表中不存在非主属性对码的传递依赖。
继续上面的实例,学生关系模式就不属于3NF,因为学生无法直接决定系主任和系名,是由学号→系编号,再由系编号->系主任,系编号->系名,因此存在非主属性对主属性的传递依赖,将学生表进一步分解为:
学生(学号,学生姓名,系编号)系(系编号,系名,系主任)选课(学号,课程号,成绩)每张表都属于3NF。
BC范式BCNF
所谓BCNF,是指在第三范式的基础上进一步消除主属性对于码的部分函数依赖和传递依赖。通俗的来说,就是在每一种情况下,每一个依赖的左边决定因素都必然包含候选键,如下:
上图中,候选键有两种情况:组合键(ST)或者(S.J,依赖集为(SI—T,T—J),可知,STL三个属性都是主属性,因此其达到了3NF(无非主属性),然而,第二种情况,即(S,J为候选键的时候,对于依赖T->),T在这种情况不是候选键,即T-I的决定因素不包含任意候选码,因此上图不是BCNF。
要使上图关系模式转换为BCNF也很简单,只需要将依赖T->J变为TS->J即可,这样其左边决定因素就包含了候选键之一S。
模式分解
规范化过程-拆表即分解关系模式。
范式之间的转换一般都是通过拆分属性,即模式分解,将具有部分函数依赖和传递依赖的属性分离出来,来达到一步步优化,一般分为以下两种:
(1)无损分解
无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式
【公式法】
定理:如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损联接性的充分必要条件是:
R1∩R2→(R1-R2)或 R1∩R2→(R2-R1)
无损分解
分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。
当分解为两个关系模式,可以通过以下定理判断是否无损分解:
定理:如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件是R10R2->(R1-R2)或者R10R2->(R2-R1)。
当分解为多个关系模式时,通过表格法求解:
由思考题可知,无损分解,要注意将候选键和其能决定的属性放在一个关系模式中,这样才能还原。也可以用表格法求解如下(需要依赖左右边的属性同时在一个关系模式中,才能补充):
注意:拆分成单属性集必然是有损分解,因为单属性不可能包含依赖左右两边属性,这个单属性已经无法再恢复。
(2)保持函数依赖
设数据库模式p=【R1,R2,…,Rk】是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果fF1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD。
保持函数依赖分解
对于关系模式 R,有依赖集F,若对R进行分解,分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。另外,注意要消除掉冗余依赖(如传递依赖)。
实例:设原关系模式 R(A,B,C),依赖集F(A->B,B->C,A->C,将其分解为两个关系模式R1(A,B)和R2(B,C),此时R1中保持依赖A->B,R2保持依赖B->C,说明分解后的R1和R2是保持函数依赖的分解,因为A-SC这个函数依赖实际是一个冗余依赖,可以由前两个依赖传递得到,因此不需要管。
保持函数依赖的判断(补充,第2点不强求):
1、如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。也即我们课堂上说的简单方法,看函数每个依赖的左右两边属性是否都在同一个分解的模式中。
2、如果上述判断失败,并不能断言分解不是保持依赖的,还要使用下面的通用方法来做进一步判断。
该方法的表述如下:
以下面的例题纠错作为讲解:正确答案是无损分解,不保持函数依赖。
首先,该分解,U1保持了依赖A->8,然而B->C没有保持,因此针对B->C需要用第2点算法来判断:
result=B,resultU1=B,B+=BC,BCOU1=B,result=BUB=B,result没变,然后,result再和U2 交是空,结束了,不保持函数依赖。
注意,这里Bt,+的意思是代表由B能够推导出的其他所有属性的集合,这里,B->C,因此 B+=BC。
并发控制⭐⭐
并发控制基本概念图
1、事务的特性(ACID)
(1)原子性(Atomicity):整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
(2)一致性(Consistency):一个事务可以封装状态改变(除非它是一个只读的)。不管在任何给定的时间并发事务有多少,事务必须始终保持系统处于一致的状态。
(3)隔离性(Isolation):隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。
(4)持久性(Durability):在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
2、并发产生的问题
丢失更新
不可重复读
读脏数据
3、锁的分类
(1)S锁:也叫读锁或共享锁,事务T1对数据R加S锁后,其他事务对R加S锁成功,加X锁失败。
(2)X锁:也叫写锁或排他锁、独占锁,事务T1对数据R加X锁后,其他事务对R加S锁和X锁都失败。
4、封锁协议
(1)一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。可防止丢失修改
(2)二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读“脏”数据
(3)三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改、防止读“脏”数据与防止数据重复读
(4)两段锁协议。可串行化的。可能发生死锁
事务管理
事务提交commit,事务回滚rollback。
事务:由一系列操作组成,这些操作,要么全做,要么全不做,拥有四种特性,详解如下:
(操作)原子性:要么全做,要么全不做。
(数据)一致性:事务发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没收到的情况。
(执行)隔离性:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉。
(改变)持续性:事务操作的结果是持续性的。
事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:
丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,此时事务2 写回的数据会覆盖事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。
不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。
读脏数据:事务1对数据A进行了修改后,事务2读数据A,而后事务1回滚,数据A恢复了原来的值,那么事务2对数据A做的事是无效的,读到了脏数据。
图
封锁协议
X锁是排它锁(写锁)。若事务工对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
S锁是共享锁(读锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的S锁。
三级封锁协议
一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。可防止丢失修改。
二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读“脏”数据。
三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改、防止读“脏”数据与防止数据重复读。
两段锁协议。可串行化的。可能发生死锁。
三级封锁协议的应用
丢失更新加锁(一级封锁协议):
读脏数据加锁(二级封锁协议):
不可重复读加锁(三级封锁协议):
两段锁协议
每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)。
加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁,在进行写操作之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。
解锁阶段:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作。
两段封锁法可以这样来实现;事务开始后就处于加锁阶段,一直到执行ROLLBACK和COMMIT之前都是加锁阶段。ROLLBACK和COMMIT使事务进入解锁阶段,即在ROLLBACK和COMMIT模块中DBMS 释放所有封锁。
数据库安全⭐⭐⭐⭐⭐
数据库安全措施
数据库故障与恢复
数据备份
(1)冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。低度维护,高度安全。不能按表或按用户恢复。
静态转储:即冷备份,指在转储期间不允许对数据库进行任何存取、修改操作;优点是非常快速的各份方法、容易归档(直接物理复制操作);缺点是只能提供到某一时间点上的恢复,不能做其他工作,不能按表或按用户恢复。
(2)热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。可选择表空间或数据库文件级备份,因难于维护,所以要特别小心,不允许“以失败告终”
动态转储:即热备份,在转储期间允许对数据库进行存取、修改操作,因此,转储和用户事务可并发执行;优点是可在表空间或数据库文件级备份,数据库扔可使用,可达到秒级恢复;缺点是不能出错,否则后果严重,若热备份不成功,所得结果几乎全部无效。
冷备份和热备份
(3)完全备份:备份所有数据
(4)差量备份:仅备份上一次完全备份之后变化的数据
(5)增量备份:备份上一次备份之后变化的数据
(6)日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。
日志文件:在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。
备份毕竟是有时间节点的,不是实时的,例如:上一次备份到这次备份之间数据库出现了故障,则这期间的数据无法恢复,因此,引入日志文件,可以实时记录针对数据库的任何操作,保证数据库可以实时恢复。
分布式数据库
局部数据库位于不同的物理位置,使用一个全局DBMS将所有局部数据库联网管理,这就是分布式数据库。其体系结构图如下图所示:
分片模式
水平分片:将表中水平的记录分别存放在不同的地方。
垂直分片:将表中的垂直的列值分别存放在不同的地方。
分布透明性
分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
位置透明性:应用程序不关心数据存储物理位置的改变。
逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模型。
复制透明性:用户或应用程序不关心复制的数据从何而来。
数据仓库
数据仓库是一种特殊的数据库,也是按数据库形式存储数据的,但是目的不同:数据库经过长时间的运行,里面的数据会保存的越来越多,就会影响系统运行效率,对于某些程序而言,很久之前的数据并非必要的,因此,可以删除掉以减少数据,增加效率,考虑到删除这些数据比较可惜,因此,一般都将这些数据从数据库中提取出来保存到另外一个数据库中,称为数据仓库。
数据仓库四大特点
面向主题:按照一定的主题域进行组织的。
集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
数据仓库的结构通常包含四个层次
1.数据源:是数据仓库系统的基础,是整个系统的数据源泉。
2.数据的存储与管理:是整个数据仓库系统的核心。
3.OLAP(联机分析处理)服务器:对分析需要的数据进行有效集成,按多维模型组织,以便进行多角度、多层次的分析,并发现趋势。
4.前端工具:主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。
如下图所示:
数据挖掘的分析方法
关联分析:关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。
序列分析:序列分析主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列,发现的序列应该具有普遍意义。
分类分析:分类分析通过分析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。分类分析时首先为每个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。
聚类分析:聚类分析是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。
商业智能BI
BI系统主要包括数据预处理、建立数据仓库、数据分析和数据展现四个主要阶段。
数据预处理是整合企业原始数据的第一步,它包括数据的抽取(Extraction)、转换(Transformation)和加载(Load)三个过程(ETL过程):
建立数据仓库则是处理海量数据的基础;
数据分析是体现系统智能的关键,一般采用联机分析处理(OLAP)和数据挖掘两大技术。联机分析处理不仅进行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能,用户可以方便地对海量数据进行多维分析。数据挖掘的目标则是挖掘数据背后隐藏的知识,通过关联分析聚类和分类等方法建立分析模型,预测企业未来发展趋势和将要面临的问题;
在海量数据和分析手段增多的情况下,数据展现则主要保障系统分析结果的可视化。
反规范化技术
由前面介绍可知,规范化操作可以防止插入异常、更新、删除异常和数据冗余,一般是通过模式分解,将表拆分,来达到这个目的。
但是表拆分后,解决了上述异常,却不利于查询,每次查询时,可能都要关联很多表,严重降低了查询效率,因此,有时候需要使用反规范化技术来提高查询效率。
技术手段包括:增加派生性冗余列,增加冗余列,重新组表,分割表。
主要就是增加冗余,提高查询效率,为规范化操作的逆操作。
反规范化的优点:连接操作少,检索快、统计快;需要查的表减少,检索容易。
大数据
特点:大量化、多样化、价值密度低、快速化。大数据和传统数据的比较如下:
要处理大数据,一般使用集成平台,称为大数据处理系统,其特征为:
高度可扩展性、高性能、高度容错、支持异构环境、较短的分析延迟、易用且开放的接口、较低成本、向下兼容性。
SQL语言
SQL语言中的语法关键字,不区分大小写:
创建表create table;
指定主键primary key();
指定外键foreign key();
修改表 alter table;
删除表drop table;
索引index,视图view;
数据库查询 select...from...where;
分组查询 group by,分组时要注意select后的列名要适应分组,having为分组查询附加条件;更名运算as;
字符串匹配 like,%匹配多个字符串,匹配任意一个字符串;
数据库插入 insert into…values();
数据库删除 delete from...where;
数据库修改 update…set…where;
排序orderby,默认为升序,降序要加关键字DESC。
授权 grant...on...to,允许其将权限再赋给另一用户with grant option;
收回权限revoke...on...from;
with check option表示要检查where后的谓词条件。
DISTINCT:过滤重复的选项,只保留一条记录。
UNION:出现在两个SQL语句之间,将两个SQL语句的查询结果取或运算,即值存在于第一句或第二句都会被选出。
INTERSECT:对两个SQL语句的查询结果做与运算,即值同时存在于两个语句才被选出。
SQL语法原理
SELECT之后的为要查询显示的属性列名;FROM后面是要查询的表名:WHERE后面是查询条件:涉及到平均数、最大值、求和等运算,必须要分组,group by后面是分组的属性列名,分组的条件使用Having关键字,后面跟条件。
在SQL语句中,条件判断时数字无需打引号,字符串要打单引号。
关系型数据库和NoSQL对比
主从数据库结构特点:
一般:一主多从,也可以多主多从。
从库做写操作,从库做读操作。
主从复制步骤:
主库(Master)更新数据完成前,将操作写binlog日志文件。
从库(Salve)打开I/O线程与主库连接,做 binlog dump process,并将事件写入中继日志。从库执行中继日志事件,保持与主库一致。
易混淆点:集成产生的冲突
属性冲突:包括属性域冲突和属性取值冲突。
命名冲突:包括同名异义和异名同义。
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R 图中所包含的属性个数和属性排列次序不完全相同。
易混淆点:分区分表
分区的优点:
(1)相对于单个文件系统或是硬盘,分区可以存储更多的数据.
(2)数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可
(3)精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。
(4)可跨多个分区磁盘查询,来提高查询的吞吐量。
(5)在涉及聚合函数查询时,可以很容易进行数据的合并。
计算机网络
1网络拓扑结构
按分布范围和拓扑结构划分如下图所示:
总线型(利用率低、干扰大、价格低)、 星型(交换机形成的局域网、中央单元负荷大)、 环型(流动方向固定、效率低扩充难)、 树型(总线型的扩充、分级结构)、 分布式(任意节点连接、管理难成本高)
一般来说,办公室局域网是星型拓扑结构,中间节点就是交换机,一旦交换机损坏,整个网络都瘫痪了,这就是星型结构。同理,由路由器连接起来的小型网络也是星型结构。
2传输介质
双绞线:将多根铜线按规则缠绕在一起,能够减少干扰;分为无屏蔽双绞线 UTP 和屏蔽双绞线STP,都是由一对铜线簇组成。也即我们常说的网线:双绞线的传输距离在100m以内。
无屏蔽双绞线UTP:价格低,安装简单,但可靠性相对较低,分为CAT3(3类UTP,速率为10Mbps)、CAT4(4类UTP,与3类差不多,无应用)、CAT5(5类UTP,速率为100Mbps,用于快速以太网)、CAT5E(超5类UTP,速率为1000Mbps)、CAT6(6类UTP,用来替代CAT5E,速率也是1000Mbps)。
屏蔽双绞线STP:比之UTP增加了一层屏蔽层,可以有效的提高可靠性,但对应的价格高,安装麻烦,一般用于对传输可靠性要求很高的场合。
光纤
由纤芯和包层组成,传输的光信号在纤芯中传输,然而从PC端出来的信号都是电信号,要经过光纤传输的话,就必须将电信号转换为光信号。
多模光纤 MMF:纤芯半径较大,因此可以同时传输多种不同的信号,光信号在光纤中以全反射的形式传输,采用发光二极管LED为光源,成本低,但是传输的效率和可靠性都较低,适合于短距离传输,其传输距离与传输速率相关,速率为100Mbps时为2KM,速率为1000Mbps时为550m。
单模光纤SMF;纤芯半径很小,一般只能传输一种信号,采用激光二极管LD作为光源,并且只支持激光信号的传播,同样是以全反射形式传播,只不过反射角很大,看起来像一条直线,成本高,但是传输距离远,可靠性高。传输距离可达5KM.
3 0SI/RM七层模型
以太网规范EEE802.3是重要的局域网协议,包括:
IEEE 802.3
标准以太网
10Mb/s
传输介质为细同轴电缆
IEEE 802.3u
快速以太网
100Mb/s
双绞线
IEEE 802.3z
千兆以太网
1000Mb/s
光纤或双绞线
IEEE 802.3ae
万兆以太网
10Gb/s
光纤
无线局域网 WLAN 技术标准:IEEE 802.11
广域网协议包括:PPP点对点协议、ISDN 综合业务数字网、xDSL(DSL数字用户线路的统称:HDSL、SDSL、MVL、ADSL)、DDN数字专线、x.25、FR帧中继、ATM异步传输模式。
802.1x协议是基于Client/Server的访问控制和认证协议。它可以限制未经授权的用户/设备通过接入端口(access port)访问LAN/WLAN。在获得交换机或LAN提供的各种业务之前,802.1x对连接到交换机端口上的用户/设备MAC地址进行认证。在认证通过之前,802.1x只允许EAPo(基于局域网的扩展认证协议)数据通过设备连接的交换机端口;认证通过以后,正常的数据可以顺利地通过以太网端口。
4 TCP/IP协议⭐⭐⭐⭐
1.分层⭐⭐⭐
IP报文首部由以下部分组成:
(1)版本号、首部长度、区分服务(旧版本中叫服务类型)、总长度
(2)标识、标志、片偏移
(3)生存时间(避免无限转发)、协议、首部校验
(4)源IP、目标IP
2、常见协议介绍⭐⭐⭐⭐
TCP与UDP均支持对具体指定端口号进行通信。但连接管理、差错校验、重传等能力只有TCP具备。
FTP:20数据端口/21控制端口,文件传输协议
HTTP:80端口,超文本传输协议,网页传输
DHCP:67端口,IP地址自动分配
SNMP:161端口,简单网络管理协议
DNS:53端口,域名解析协议,记录域名与IP的映射关系
TCP:可靠的传输层协议
UDP:不可靠的传输层协议
ICMP:因特网差错控制协议,PING命令来自该协议
IGMP:组播协议
ARP:地址解析协议,IP地址转换为MAC地址
RARP:反向地址解析协议,MAC地址转IP地址
Telnet: 23端口,远程协议。(不安全,SSH是安全的远程协议)
POP3:110端口,邮件收取
SMTP:25端口,邮件发送
IMAP和POP3的区别是:POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3 封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的。而IMAP客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
MIME是多用途互联网邮件扩展标准,与邮件安全无关。MIME/S与邮件安全相关。
3、DNS用法迭代查询
(1)查询方式
递归查询:服务器必须回答目标IP与域名的映射关系。
迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。
(2)在Linux系统中,DNS配置文件resolv.conf的关键字主要有四个,分别是:
nameserver #定义 DNS服务器的 IP地址
domain#定义本地域名
search#定义域名的搜索列表
sortlist#对返回的域名进行排序
网络协议三要素:语法、语义、时序。
网络层协议:
IP:网络层最重要的核心协议,在源地址和目的地址之间传送数据报,无连接、不可靠。
ICMP:因特网控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
ARP和RARP:地址解析协议,ARP是将IP地址转换为物理地址,RARP是将物理地址转换为IP 地址。
IGMP:网络组管理协议,允许因特网中的计算机参加多播,是计算机用做向相邻多目路由器报告多目组成员的协议,支持组播。
传输层协议:
TCP:整个TCP/IP协议族中最重要的协议之一,在IP协议提供的不可靠数据数据基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。一般用于传输数据量比较少,且对可靠性要求高的场合。
UDP:是一种不可靠、无连接的协议,有助于提高传输速率,一般用于传输数据量大,对可靠性要求不高,但要求速度快的场合。
应用层协议:
基于TCP的FTP、HTTP等都是可靠传输。基于UDP的DHCP、DNS等都是不可靠传输。
FTP:可靠的文件传输协议,用于因特网上的控制文件的双向传输。
HTTP:超文本传输协议,用于从 WWW 服务器传输超文本到本地浏览器的传输协议。使用 SSL 加密后的安全网页协议为 HTTPS.
SMTP和POP3:简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,邮件报文采用ASCll格式表示。
Telnet: 远程连接协议,是因特网远程登录服务的标准协议和主要方式。
TFTP:不可靠的、开销不大的小文件传输协议。
SNMP:简单网络管理协议,由一组网络管理的标准协议,包含一个应用层协议、数据库模型和一组资源对象。该协议能够支持网络管理系统,泳衣监测连接到网络上的设备是否有任何引起管理师行关注的情况。
DHCP:动态主机配置协议,基于UDP,基于C/S模型,为主机动态分配IP地址,有三种方式:固定分配、动态分配、自动分配。
DNS:域名解析协议,通过域名解析出IP地址。
5网络存储技术
1.直接附加存储(DAS):是指将存储设备通过 SCSI接口直接连接到一台服务器上使用,其本身是硬件的堆叠,存储操作依赖于服务器,不带有任何存储操作系统。
存在问题:在传递距离、连接数量、传输速率等方面都受到限制。容量难以扩展升级:数据处理和传输能力降低;服务器异常会波及存储器。
2.网络附加存储(NAS):通过网络接口与网络直接相连,由用户通过网络访问,有独立的存储系统。如下图所示。NAS存储设备类似于一个专用的文件服务器,去掉了通用服务器大多数计算功能,而仅仅提供文件系统功能。以数据为中心,将存储设备与服务器分离,其存储设备在功能上完全独立于网络中的主服务器。客户机与存储设备之间的数据访问不再需要文件服务器的干预,同时它允许客户机与存储设备之间进行直接的数据访问,所以不仅响应速度快,而且数据传输速率也很高。
NAS的性能特点是进行小文件级的共享存取;支持即插即用;可以很经济的解决存储容量不足的问题,但难以获得满意的性能。
3.存储区域网(SAN):SAN是通过专用交换机将磁盘阵列与服务器连接起来的高速专用子网。它没有采用文件共享存取方式,而是采用块(block)级别存储。SAN是通过专用高速网将一个或多个网络存储设备和服务器连接起来的专用存储系统,其最大特点是将存储设备从传统的以太网中分离了出来成为独立的存储区域网络SAN的系统结构。根据数据传输过程采用的协议,其技术划分为FCSAN(光纤通道)、IP SAN(IP 网络)和IB SAN(无线带宽)技术。
6网络规划与设计⭐⭐⭐⭐
网络规划和设计的过程
逻辑网络设计工作内容:拓扑结构、网络地址分配、安全规划、网络管理、选择路由协议、设备命名规则。
逻辑网络设计输出内容:逻辑网络设计图、IP地址方案、安全方案、招聘和培训网络员工的具体说明、对软硬件、服务、员工和培训的费用初步估计。
物理网络设计工作内容:设备的具体物理分布、运行环境等确定,设备选型、结构化布线、机房设计。
物理网络设计输出内容:网络物理结构图和布线方案、设备和部件的详细列表清单、软硬件和安装费用的估算、安装日程表,详细说明服务的时间以及期限、安装后的测试计划、用户的培训计划。
层次化网络设计
核心层:主要是高速数据交换,实现高速数据传输、出口路由,常用冗余机制。
汇聚层:网络访问策略控制、数据包处理和过滤、策略路由、广播域定义、寻址。
接入层:主要是针对用户端,实现用户接入、计费管理、MAC地址认证、MAC地址过滤、收集用户信息。
网络工程可分为网络规划、网络设计和网络实施三个阶段。
网络规划包括:网络需求分析、可行性分析和对现有网络的分析与描述。
网络系统的设计阶段统称包括确定网络总体目标和设计原则。
三层设计模型
接入层:主要是针对用户端,实现用户接入、计费管理、MAC地址认证、MAC地址过滤、收集用户信息,可以使用集线器代替交换机。
通常将网络中直接面向用户连接或访问网络的部分称为接入层,将位于接入层和核心层之间的部分称为分布层或汇聚层。接入层的目的是允许终端用户连接到网络,因此,接入层交换机具有低成本和高端口密度特性。
接入层为用户提供了在本地网段访问应用系统的能力,还要解决相邻用户之间的互访需要,接入层要负责一些用户信息(例如用户IP地址、MAC地址和访问日志等)的收集工作和用户管理功能(包括认证和计费等)。
汇聚层 :网络访问策略控制、数据包处理和过滤、策略路由、广播域定义 、寻址。
汇聚层是核心层和接入层的分界面,完成网络访问策略控制、数据包处理、过滤、寻址,以及其他数据处理的任务。汇聚层交换机是多台接入层交换机的汇聚点,它必须能够处理来自接入层设备的所有通信量,并提供到核心层的上行链路,因此,汇聚层交换机与接入层交换机比较,需要更高的性能,更少的接口和更高的交换速率。
汇聚层将网络业务连接到接入层,并且实施与安全、流量、负载和路由相关的策略;
核心层:主要是高速数据交换,实现高速数据传输、出口路由,常用冗余机制。
网络主干部分称为核心层,核心层的主要目的在于通过高速转发通信,提供优化、可靠的骨干传输结构,因此,核心层交换机应拥有更高的可靠性,更高的性能和更高的吞吐量。核心层为网络提供了骨干组件或高速交换组件,在纯粹的分层设计中,核心层只完成数据交换的特殊任务。需要根据网络需求的地理距离、信息流量和数据负载的轻重来选择核心层技术,常用的技术包括ATM、100Base-Fx和千兆以太网等。在主干网中,考虑到高可用性的需求,通常会使用双星(树)结构,即采用两台同样的交换机,与汇聚层交换机分别连接,并使用链路聚合技术实现双机互联。
核心层提供不同区域之间的最佳路由和高速数据传送;
建筑物综合布线系统PDS
工作区子系统:实现工作区终端设备到水平子系统的信息插座之间的互联。
水平布线子系统:实现信息插座和管理子系统之间的连接。
设备间子系统:实现中央主配线架与各种不同设备之间的连接。
垂直干线子系统:实现各楼层设备间子系统之间的互连。
管理子系统:为连接其他子系统提供连接手段。
建筑群子系统:各个建筑物通信系统之间的互联。
综合布线系统⭐⭐⭐
(1)工作区子系统由信息插座、插座盒、连接跳线和适配器组成。
(2)水平子系统由一个工作区的信息插座开始,由水平布置到管理区内侧配线架的线缆所组成。
(3)管理子系统由交连、互连配线架组成。管理子系统为连接其它子系统提供连接手段。
(4)垂直干线子系统由建筑物内所有的垂直干线多对数电缆及相关支撑硬件组成,以提供设备间总配线架与干线接线间楼层配线架之间的干线路由。
(5)设备间子系统是由设备间中的电缆、连接器和有关的支撑硬件组成,作用是将计算机、PBX、摄像头、监视器等弱电设备互连起来并连接到主配线架上。
(6)建筑群子系统将一个建筑物的电缆延伸到建筑群的另外一些建筑物中的通信设备和装置上,是结构化布线系统的一部分,支持提供楼群之间通信所需的硬件。它由电缆、光缆和入楼处的过流过压电气保护设备等相关硬件组成,常用介质是光缆。
网络设计工作包括
(1)网络拓扑结构设计。
(2)主干网络(核心层)设计。
(3)汇聚层和接入层设计。
(4)广域网连接与远程访问设计。
(5)无线网络设计。
(6)网络安全设计。
(7)设备选型。
网络规划设计原则
①可靠性原则。网络的运行是稳固的。
②安全性原则。包括选用安全的操作系统、设置网络防火墙、网络防杀病毒、数据加密和信息工作制度的保密。
③高效性原则。性能指标高,软硬件性能充分发挥。
④可扩展性。能够在规模和性能两个方向上进行扩展。
7移动通信技术
2G标准:欧洲电信的GSM(全球移动通信),采用TDMA技术;美国高通的CDMA(码分多址通信)。
3G标准:W-CDMA、CDMA-2000、TD-SCDMA、WMAN。
4G标准:UMB(超移动宽带)、LET Advaced(长期演进技术,中国)、WiMAX II(全球微波互连接入)。
4G理论下载速率:100Mbit/s
5G理论下载速率:1Gbit/s
8无线网络技术
无物理传输介质,相比较于有线局域网,其优点有:移动性、灵活性、成本低、容易扩充;其缺点有:速度和质量略低,安全性低。
WLAN通过接入点AP接入,AP是组建小型无线局域网时最常用的设备。AP相当于一个连接有线网和无线网的桥梁,工作在数据链路层。其主要作用是将各个无线网络客户端连接到一起,然后将无线网络接入以太网。
三种WLAN通信技术:红外线、扩展频谱、窄带微波。
WLAN安全加密技术:安全级别从低到高分别为WEP<WPA<WPA2,其中,WEP使用RC4协议进行加密,并使用CRC-32校验保证数据的正确性。WPA在此基础上增加了安全认证技术,增大了密钥和初始向量的长度,新增了临时密钥完整性协议TKIP。WPA2采用了AES对称加密算法。
9下一代互联网IPv6
IPv6是设计用于替代现行版本IP协议(IPv4)的下一代IP协议。
(1)IPv6地址长度为128位,地址空间增大了296倍;
扩展的地址层次结构,使用十六进制表示IPv6地址;
(2)灵活的IP报文头部格式。使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段,IPv6 中选项部分的出现方式也有所变化,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度;
(3)IPv6简化了报文头部格式,字段只有8个,加快报文转发,提高了吞吐量;
(4)提高安全性。身份认证和隐私权是IPv6的关键特性;
(5)支持即插即用,自动配置,支持更多的服务类型;
(6)允许协议继续演变,增加新的功能,使之适应未来技术的发展;
IPv4和IPv6的过渡期间,主要采用三种基本技术:
(1)双协议栈:主机同时运行IPv4和IPv6两套协议栈,同时支持两套协议,一般来说IPv4和IPv6地址之间存在某种转换关系,如IPv6的低32位可以直接转换为IPv4地址,实现互相通信。
(2)隧道技术:这种机制用来在IPv4网络之上建立一条能够传输IPv6数据报的隧道,例如可以将IPv6数据报当做 IP√4 数据报的数据部分加以封装,只需要加一个IPv4的首部,就能在IP√4 网络中传输 IPv6报文。
(3)翻译技术:利用一台专门的翻译设备(如转换网关),在纯IP√4和纯IPv6网络之间转换IP 报头的地址,同时根据协议不同对分组做相应的语义翻译,从而使纯IPv4和纯IPv6站点之间能够透明通信。
IP子网划分相关计算
网络号
主机号(非全0和非全1)
将一个网络划分成多个子网(取部分主机号当子网号)
例:某公司网络的地址是192.168.192.0/20
IP地址二进制∶1100 0000.1010 1000.1000000.0000 0000
子网掩码二进制:11111111111111111110000000000000000000001+12位0】
子网掩码点分十进制: 255.255.248.0
划分成32个子网,需要将主机号位置取出高位5位二进制来表示子网号。即前25位为网络号。此时:
子网掩码二进制:1111111111111111111111110000000025位1+7位0】
点分十进制记作:255.255.255.128。
每个子网可分配的主机地址数为:2^7-2=126。
注:每个子网中,主机号为全0或全1的地址不能使用,所以要减2。
易混淆点:IEEE-1394串行接口标准
1394是构建在菊花链或树状的拓扑接口上的,它支持63个节点,每个节点可以支持多达16台设备的菊花链。如果还不够用的话,该标准还支持最多1023条桥接的总线,这样就可以互连1023*63=64449个节点。
多媒体技术
1多媒体基本概念
1.1 媒体的分类
感觉媒体:直接作用于人的感觉器官,使人产生直接感觉的媒体。常见的感觉媒体分为文本、图形、图像、动画、音频和视频。
表示媒体:指传输感觉媒体的中介媒体,即用于数据交换的编码。如:如文本编码、声音编码和图像编码等。
表现媒体:进行信息输入和信息输出的媒体。也即输入输出设备,如:键盘、鼠标和麦克风:显示器、打印机和音响等。
存储媒体:存储表示媒体的物理介质。如磁盘、光盘和内存等。
传输媒体:传输表示媒体的物理介质。如电缆、光纤、双绞线等。
1.2 声音
主要是声音的带宽来衡量声音的大小,单位是 HZ。声音是一种模拟信号,要对其进行处理,就必须将其转化为数字信号。转换过程有三个步骤:采样、量化、编码。
人耳能听到的音频信号的频率范围是20Hz~20KHz。
声音的采样频率一般为最高频率的两倍,才能保证不失真。
数字音乐合成方法
数字调频合成法FM:使高频振荡波的频率按调制信号规律变化的一种调制方式。采用不同调制波频率和调制指数,就可以方便的合成具有不同频谱分布的波形,再现某些乐器的音色。可以采用这种方法得到具有独特效果的"电子模拟声",创造出丰富多彩的声音,是真实乐器所不具备的音色。
波表合成法Wavetable:将各种真实乐器所能发出的所有声音(包括各个音域、声调)录制下来,存贮为一个波表文件。播放时,根据 MIDI 文件纪录的乐曲信息向波表发出指令,从"表格"中逐一找出对应的声音信息,经过合成、加工后回放出来。合成的音质更好。
声音特性
音量:即响度,表示声音的强弱程度,主要取决于声波振幅的大小。
音高:表示各种声音的高低,主要取决于声波的振动频率,振动频率越高则音越高。
音调:表示声音的调子的高低,由声音本身的频率决定。
音色:又称为音品,由声音波形的谐波频谱和包络决定。
声音文件格式:wav、.snd、.au、.aif、.voc、.mp3、.ra、.mid等。
1.3 图形和图像
颜色三要素
亮度:彩色明暗深浅程度。
色调(红、绿):颜色的类别。
饱和度:某一颜色的深浅程度。
彩色空间
即设备显示图片所使用的色彩空间,普通的电脑显示器是 RGB 色彩空间,除了红、绿、蓝三原色外,其他颜色都是通过这三原色叠加形成的;
电视中使用 YUV 色彩空间,主要是为了兼容黑白电视,使用的是亮度原理,即调不同的亮度,显示不同的颜色;
CMY(CMYK),印刷书籍时采用的色彩空间,这个采用的是和RGB相反的减法原理,浅蓝、粉红、黄三原色的印刷颜料实际上是吸收除了本身色彩之外的其他颜色的,因此,印刷出来才是这些颜色;
HSV(HSB),艺术家彩色空间,是从艺术的角度划分的。
图像的属性:分辨率(每英寸像素点数dpi)、像素深度(存储每个像素所使用的二进制位数)。
图像文件格式: .bmp、.gif、.jpg、.png、.tif、.wmf等。
DPI:每英寸像素点数。
图像深度是图像文件中记录一个像素点所需要的位数。显示深度表示显示缓存中记录屏幕上一个点的位数(bit),也即显示器可以显示的颜色数。
水平分辨率:显示器在横向上具有的像素点数目。
垂直分辨率:显示器在纵向上具有的像素点数目。
矢量图的基本组成单位是图元,位图的基本组成单位是像素,视频和动画的基本组成单元是帧。
真彩色:指图像中的每个像素值都分成 R、G、B三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为真彩色。
伪彩色:图像的每个像素值实际上是一个索引值或代码,该代码值作为色彩查找表中某一项的入口地址,根据该地址可查找出包含实际 R、G、B 的强度值。这种用查找映射的方法产生的色彩称为伪彩色。
颜色是由亮度和色度共同表示的,色度是不包括亮度在内的颜色的性质,它反映的是颜色的色调和饱和度。在进行数据的采样与压缩时,由于人眼睛能识别的颜色的种类,远小于颜色固有的种类。所以会从这个维度出发,将人类看不出差异的颜色使用同样的颜色保存,这能有限的减少编码数据量。
2多媒体相关计算问题
1.图像容量计算
2.音频容量计算
容量=采样频率(Hz)×量化/采样位数(位)×声道数÷8
3.视频容量计算
容量=每帧图像容量(Byte)×每秒帧数×时间+音频容量~时间
上述计算中,图像中要理解色数的概念。要理解音频容量计算的原理,就是每个采样通道的采样次数*每次采样的位数*总的采用通道数。
视频就是一帧帧图像的组合,因此本质是求图像容量,当然要加上音频容量。
注意单位B和b的区别和换算,注意K(大写,1024,存储时才用)和k(小写,1000)的区别,注意结果单位。
3常见多媒体标准
主要是图像的 JPEG 标准和视频的 MPEG 标准,对于 MPEG,要掌握每个级别的代表设备标准,具体如下图所示:
4数据压缩基础
能够压缩的前提是有冗余,冗余分类如下:
空间冗余(几何冗余):对于一副画面中的同样的信息,在压缩时,不需要重复存储,只记录一次信息内容,而后记录这些相同信息出现的位置即可。
时间冗余:在压缩视频时,对于一帧和下一帧,只记录变化的部分,不变的部分不记录。
视觉冗余:例如JPEG标准,就是有损压缩,对于人眼关注不到的细节就不存储,找到一个临界值,达到视觉欺骗的效果。
信息熵冗余:不同的信息编码的冗余效率是不同的,可以通过改变信息编码来改变冗余。
结构冗余:对于结构相同的模块,只记录一次。和空间冗余有点类似。
知识冗余:从知识角度来说,有些可以根据常识推导出来的东西,可以不用记录。
有损压缩和无损压缩
压缩后能够还原的编码方式称为无损压缩(熵编码法): (例如 WINRAR 压缩等,最终可以还原出原数据,最经典的就是哈夫曼编码,是无损压缩。
熵编码即编码过程中按熵原理不丢失任何信息的编码。信息熵为信源的平均信息量(不确定性的度量)。常见的熵编码有:香农(Shannon)编码、哈夫曼(Huffman)编码和算术编码(Arithmetic coding)。在视频编码中,熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或是存储的压缩码流。输入的符号可能包括量化后的变换系数,运动向量,头信息(宏块头,图像头,序列的头等)以及附加信息(对于正确解码来说重要的标记位信息)。
压缩后无法还原的编码方式就是有损压缩(熵压缩法):例如JPEG格式的图片。
变换编码是一种有损的压缩方式,属于熵压缩法。
信息安全和网络安全
1信息安全和信息系统安全
信息安全系统的体系架构
X轴是"安全机制",为提供某些安全服务,利用各种安全技术和技巧,所形成的一个较为完善的机构体系。
Y轴是“OSI网络参考模型”。
Z轴是"安全服务"。就是从网络中的各个层次提供给信息应用系统所需要的安全服务支持。
由X、Y、Z三个轴形成的信息安全系统三维空间就是信息系统的"安全空间"。
随着网络逐层扩展,这个空间不仅范围逐步加大,安全的内涵也就更丰富,达到具有认证、权限、完整、加密和不可否认五大要素,也叫作"安全空间"的五大属性。
信息安全含义及属性
保护信息的保密性、完整性、可用性,另外也包括其他属性,如:真实性、可核查性、不可抵赖性和可靠性。
保密性:信息不被泄漏给未授权的个人、实体和过程或不被其使用的特性。包括:(1)最小授权原则(2)防暴露(3)信息加密(4)物理保密
完整性:信息未经授权不能改变的特性。影响完整性的主要因素有设备故障、误码、人为攻击和计算机病毒等。保证完整性的方法包括:
(1)协议:通过安全协议检测出被删除、失效、被修改的字段。
(2)纠错编码方法:利用校验码完成检错和纠错功能。
(3)密码校验和方法。
(4)数字签名:能识别出发送方来源。
(5)公证:请求系统管理或中介机构证明信息的真实性。
可用性:需要时,授权实体可以访问和使用的特性。一般用系统正常使用时间和整个工作时间之比来度量。
其他属性:
真实性:指对信息的来源进行判断,能对伪造来源的信息予以鉴别。
可核查性:系统实体的行为可以被独一无二的追溯到该实体的特性,这个特性就是要求该实体对其行为负责,为探测和调查安全违规事件提供了可能性。
不可抵赖性:是指建立有效的责任机制,防止用户否认其行为,这一点在电子商务中是极其重要的。
可靠性:系统在规定的时间和给定的条件下,无故障地完成规定功能的概率。
安全需求
可划分为物理线路安全、网络安全、系统安全和应用安全;从各级安全需求字面上也可以理解:
物理线路就是物理设备、物理环境;
网络安全指网络上的攻击、入侵;
系统安全指的是操作系统漏洞、补丁等;
应用安全就是上层的应用软件,包括数据库软件。
2信息安全技术⭐
加密技术
一个密码系统,通常简称为密码体制(Cryptosystem),由五部分组成:
(1)明文空间 M,它是全体明文的集合。
(2)密文空间C,它是全体密文的集合。
(3)密钥空间K,它是全体密钥的集合。其中每一个密钥K 均由加密密钥Ke 和解密密钥 Kd 组成,即K=<Ke,Kd>。
(4)加密算法E,它是一组由M至C的加密变换。
(5)解密算法D,它是一组由C到M的解密变换。
对于每一个确定的密钥,加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,而且解密变换就是加密变换的逆变换。对于明文空间M中的每一个明文M,加密算法E在密钥Ke 的控制下将明文M加密成密文C:C=E(M,Ke)
而解密算法D 在密钥Kd的控制下将密文C解密出同一明文 M: M=D (C,Kd)=D(E(M,Ke),Kd)
1.对称加密技术
对称加密(又称为私人密钥加密/共享密钥加密):加密与解密使用同一密钥。
特点:加密强度不高,但效率高;密钥分发困难。(大量明文为了保证加密效率一般使用对称加密)
就是对数据的加密和解密的密钥(密码)是相同的,属于不公开密钥加密算法。其缺点是加密强度不高(因为只有一个密钥),且密钥分发困难(因为密钥还需要传输给接收方,也要考虑保密性等问题)。
常见的对称密钥加密算法:
DES:替换+移位、56位密钥、64位数据块、速度快,密钥易产生。
3DES:三重DES,两个56位密钥K1、K2。
加密:K1加密->K2解密->K1加密。
解密:K1解密->K2加密->K1解密
AES:高级加密标准,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,这个标准用来替代原先的DES。对其的要求是“至少像3DES一样安全”。
RC-5:RSA数据安全公司的很多产品都使用了RC-5。
IDEA:128位密钥,64位数据块,比 DES的加密性好,PGP采用该算法,对计算机功能要求相对低。
2.非对称加密技术
非对称加密(又称为公开密钥加密):密钥必须成对使用(公钥加密,相应的私钥解密)。
特点:加密速度慢,但强度高。
常见非对称密钥加密算法:
RSA:2048位(或1024位)密钥、计算量极大、难破解
ECC-椭圆曲线算法
Elgamal:安全性依赖于计算有限域上离散对数这一难题。
就是对数据的加密和解密的密钥是不同的,是公开密钥加密算法。其缺点是加密速度慢。
非对称技术的原理是:发送者发送数据时,使用接收者的公钥作加密密钥,私钥作解密钥,这样只有接收者才能解密密文得到明文。安全性更高,因为无需传输密钥。但无法保证完整性。如下:
常见的非对称加密算法如下:
RSA:512位(或1024位)密钥,计算机量极大,难破解。
Elgamal、ECC(椭圆曲线算法)、背包算法、Rabin、D-H等。
相比较可知,对称加密算法密钥一般只有56位,因此加密过程简单,适合加密大数据,也因此加密强度不高;而非对称加密算法密钥有1024位,相应的解密计算量庞大,难以破解,却不适合加密大数据,一般用来加密对称算法的密钥,这样,就将两个技术组合使用了,这也是数字信封的原理:
数字信封原理:信是对称加密的密钥,数字信封就是对此密钥进行非对称加密,具体过程:发送方将数据用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。接收方收到数字信封,用自己的私钥解密信封,取出对称密钥解密得原文。
数字信封运用了对称加密技术和非对称加密技术,本质是使用对称密钥加密数据,非对称密钥加密对称密钥,解决了对称密钥的传输问题。
信息摘要
所谓信息摘要,就是一段数据的特征信息,当数据发生了改变,信息摘要也会发生改变,发送方会将数据和信息摘要一起传给接收方,接收方会根据接收到的数据重新生成一个信息摘要,若此摘要和接收到的摘要相同,则说明数据正确。信息摘要是由哈希函数生成的。
信息摘要的特点:不算数据多长,都会产生固定长度的信息摘要;任何不同的输入数据,都会产生不同的信息摘要:单向性,即只能由数据生成信息摘要,不能由信息摘要还原数据。
信息摘要算法:MD5(产生128位的输出)、SHA-1(安全散列算法,产生160位的输出,安全性更高)。
数字签名:唯一标识一个发送方。
发送者发送数据时,使用发送者的私钥进行加密,接收者收到数据后,只能使用发送者的公钥讲行解密,这样就能唯一确定发送方,这也是数字签名的过程。但无法保证机密性。如下:
公钥基础设施PKl:是以不对称密钥加密技术为基础,以数据机密性、完整性、身份认证和行为不可抵赖性为安全目的,来实施和提供安全服务的具有普适性的安全基础设施。
(1)数字证书:一个数据结构,是一种由一个可信任的权威机构签署的信息集合。在不同的应用中有不同的证书。如X.509证书必须包含下列信息;(1)版本号(2)序列号(3)签名算法标识符(4)认证机构(5)有效期限(6)主题信息(7)认证机构的数字签名(8)公钥信息。
公钥证书主要用于确保公钥及其与用户绑定关系的安全。这个公钥就是证书所标识的那个主体的合法的公钥。任何一个用户只要知道签证机构的公钥,就能检查对证书的签名的合法性。如果检查正确,那么用户就可以相信那个证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。例如驾照。
(2)签证机构 CA:负责签发证书、管理和撤销证书。是所有注册用户所信赖的权威机构,CA 在给用户签发证书时要加上自己的数字签名,以保证证书信息的真实性。任何机构可以用CA的公钥来验证该证书的合法性。
3、信息摘要与数字签名
(1)数字签名:发送者使用自己的私钥对摘要签名,接收者利用发送者的公钥对接收到的摘要进行验证。
(2)常见的摘要算法:MD5(128位),SHA(160位)。
4、数字信封
发送方将原文用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。
接收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。
5、PGP
PGP可用于电子邮件,也可以用于文件存储。采用了杂合算法,包括IDEA、RSA、MD5、ZIP 数据压缩算法。
PGP承认两种不同的证书格式:PGP证书和X.509证书。
PGP证书包含PGP版本号、证书持有者的公钥、证书持有者的信息、证书拥有者的数字签名、证书的有效期、密钥首选的对称加密算法。
X.509证书包含证书版本、证书的序列号、签名算法标识、证书有效期、以下数据:证书发行商名字、证书主体名、主体公钥信息、发布者(CA)的数字签名【用于验证数字证书的真伪】。
易混淆点2:数字签名与数字证书
(1)数字签名的过程如下图所示(发送者使用自己的私钥对摘要签名,接收者利用发送者的公钥对接收到的摘要进行验证):
(2)数字证书是由一个权威机构证书授权中心(CA)发行的。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。其中证书授权中心的数字签名是用它自己的私钥完成的,而它的公钥也是公开的,大家可以通过它的公钥来验证该证书是否是某证书授权中心发行的,以达到验证数字证书的真实性。
3网络安全技术
防火墙是在内部网络和外部因特网之间增加的一道安全防护措施,分为网络级防火墙和应用级防火墙。
网络级防火墙层次低,但是效率高,因为其使用包过滤和状态监测手段,一般只检验网络包外在(起始地址、状态)属性是否异常,若异常,则过滤掉,不与内网通信,因此对应用和用户是透明的。但是这样的问题是,如果遇到伪装的危险数据包就没办法过滤,此时,就要依靠应用级防火墙,层次高,效率低,因为应用级防火墙会将网络包拆开,具体检查里面的数据是否有问题,会消耗大量时间,造成效率低下,但是安全强度高。
入侵检测系统IDS
防火墙技术主要是分隔来自外网的威胁,却对来自内网的直接攻击无能为力,此时就要用到入侵检测IDS技术,位于防火墙之后的第二道屏障,作为防火墙技术的补充。
原理:监控当前系统/用户行为,使用入侵检测分析引擎进行分析,这里包含一个知识库系统,囊括了历史行为、特定行为模式等操作,将当前行为和知识库进行匹配,就能检测出当前行为是否是入侵行为,如果是入侵,则记录证据并上报给系统和防火墙,交由它们处理。
不同于防火墙,IDS入侵检测系统是一个监听设备,没有跨接在任何链路上,无须网络流量流经它便可以工作。因此,对IDS的部署,唯一的要求是:IDS应当挂接在所有所关注流量都必须流经的链路上。因此,IDS在交换式网络中的位置一般选择在:(1)尽可能靠近攻击源(2)尽可能靠近受保护资源
入侵防御系统IPS
IDS和防火墙技术都是在入侵行为已经发生后所做的检测和分析,而IPS是能够提前发现入侵行为,在其还没有进入安全网络之前就防御。串联接入网络,因此可以自动切换网络。
在安全网络之前的链路上挂载入侵防御系统IPS,可以实时检测入侵行为,并直接进行阻断,这是与IDS的区别,要注意。
杀毒软件
用于检测和解决计算机病毒,与防火墙和IDS要区分,计算机病毒要靠杀毒软件,防火墙是处理网络上的非法攻击。
蜜罐系统
伪造一个蜜罐网络引诱黑客攻击,蜜罐网络被攻击不影响安全网络,并且可以借此了解黑客攻击的手段和原理,从而对安全系统进行升级和优化。
网络攻击分类
被动攻击:收集信息为主,破坏保密性。
主动攻击:主动攻击的类别主要有:中断(破坏可用性),篡改(破坏完整性),伪造(破坏真实性)
计算机病毒和木马
病毒:编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。
病毒具有:传染性、隐蔽性、潜伏性、破坏性、针对性、衍生性、寄生性、未知性。
木马:是一种后门程序,场被黑客用作控制远程计算机的工具,隐藏在被控制电脑上的一个小程序监控电脑一切操作并盗取信息。
代表性病毒实例
蠕虫病毒(感染EXE文件):熊猫烧香,罗密欧与朱丽叶,恶鹰,尼姆达,冲击波,欢乐时光。
木马:QQ消息尾巴木马,特洛伊木马,X卧底。
宏病毒(感染word、excel等文件中的宏变量):美丽沙,台湾1号。
CIH病毒:史上唯一破坏硬件的病毒。
红色代码:蠕虫病毒+木马。
网络安全⭐⭐⭐
1、安全协议
(1)HTTPS【应用层】协议是HTTP协议与SSL协议的结合,默认端口号443。
(2)PGP 【应用层】(Pretty Good Privacy)协议是邮件安全协议。针对邮件和文件的混合加密系统。
(3)SSL【传输至应用层】(Secure Sockets Layer)是安全套接字协议。工作在传输层至应用层。
(4)SET【传输层】(Secure Electronic Transaction)协议是安全电子交易协议,涉及电子交易安全。电子商务,身份认证。
(5)TLS 【传输层】(Transport Layer Security)是传输层安全协议。
(6)IPSEC【网络层】(Internet Protocol Security)是互联网安全协议。对IP包加密。
2、WiFi网络安全
(1)WiFi网络安全接入WPA(WPA/WPA2)
有WPA和WPA2两个标准
以一把128位元的钥匙和一个48位元的初向量(IV)的RC4来加密
使用了更安全的信息认证码MIC(信息完整性核查)
有WPA、WPA-PSK、WPA2、WPA2-PSK这四种认证方式,采用AES和临时密钥完整性协议TKIP两种加密算法
3、网络攻击
(1)分类
被动攻击:收集信息为主,破坏保密性。
攻击名称
攻击类型
描述
主动攻击:主动攻击的类别主要有:中断(破坏可用性),篡改(破坏完整性),伪造(破坏真实性)
(3)常见的防御手段(可以结合使用)
防火墙技术:主要了解它的机制是防外不防内,对于DMZ非军事区主要放置应用服务器(如邮件服务器,WEB服务器)。
漏洞扫描:入侵者可以利用系统漏洞侵入系统,系统管理员可以通过漏洞扫描技术,及时了解系统存在的安全问题,并采取相应措施来提高系统的安全性。
入侵检测IDS:基于数据源的分类-审计功能、记录安全性日志。基于检测方法-异常行为检测。
4、防火墙
隔离内网与外网,阻挡对网络的非法访问和不安全数据传递。
【应用层防火墙】效率低,安全性高。
【网络层防火培】效率高,安全性低。
5、安全保护等级
用户自主保护级:适用于普通内联网用户
系统审计保护级:适用于通过内联网或国际网进行商务活动,需要保密的非重要单位
安全标记保护级:适用于地方各级国家机关、金融机构、邮电通信、能源与水源供给部门、交通运输、大型工商与信息技术企业、重点工程建设等单位
结构化保护级:适用于中央级国家机关、广播电视部门、重要物资储备单位、社会应急服务部门、尖端科技企业集团、国家重点科研机构和国防建设等部门
访问验证保护级:适用于国防关键部门和依法需要对计算机信息系统实施特殊隔离的单位
6、系统安全分类
(1)实体安全。保护计算机设备、设施和其他媒体免遭地震、水灾、火灾、有害气体和其他环境事故(例如,电磁辐射等)破坏的措施和过程。
实体安全又可分为环境安全、设备安全和媒体安全三个方面。
(2)运行安全。运行安全包括系统风险管理、审计跟踪、备份与恢复、应急等四个方面的内容。运行安全是计算机信息系统安全的重要环节,其实质是保证系统的正常运行,不因偶然的或恶意的原因而遭到破坏,使系统可靠、连续地运行,服务不受中断。
(3)信息安全。信息安全是指防止系统中的信息被故意或偶然的非法授权访问、更改、破坏或使信息被非法系统识别和控制等。
(4)人员安全。主要包括计算机使用人员的安全意识、法律意识和安全技能等。
7、安全防范体系
(1)物理环境的安全性。包括通信线路、物理设备和机房的安全等。防灾害能力、防干扰能力、设备的运行环境(温度、湿度、烟尘)属于此范畴。
(2)操作系统的安全性。主要表现在三个方面,一是操作系统本身的缺陷带来的不安全因素,主要包括身份认证、访问控制和系统漏洞等;二是对操作系统的安全配置问题;三是病毒对操作系统的威胁。
(3)网络的安全性。网络层的安全问题主要体现在计算机网络方面的安全性,包括网络层身份认证、网络资源的访问控制、数据传输的保密与完整性、远程接入的安全、域名系统的安全、路由系统的安全、入侵检测的手段和网络设施防病毒等。
(4)应用的安全性。由提供服务所采用的应用软件和数据的安全性产生,包括Web服务、电子邮件系统和DNS等。此外,还包括病毒对系统的威胁。
(5)管理的安全性。包括安全技术和设备的管理、安全管理制度、部门与人员的组织规则等。管理的制度化极大程度地影响着整个计算机网络的安全,严格的安全管理制度、明确的部门安全职责划分与合理的人员角色配置,都可以在很大程度上降低其他层次的安全漏洞。
4网络安全协议
物理层主要使用物理手段,隔离、屏蔽物理设备等,其它层都是靠协议来保证传输的安全,具体如下图所示:
◆SSL协议:安全套接字协议,被设计为加强Web安全传输(HTTP/HTPS/)的协议,安全性高,和HTTP结合之后,形成HTTPS安全协议,端口号为443.
◆SSH协议:安全外壳协议,被设计为加强Telnet/FTP安全的传输协议。
◆SET协议:安全电子交易协议主要应用于B2C模式(电子商务)中保障支付信息的安全性。SET 协议本身比较复杂,设计比较严格,安全性高,它能保证信息传输的机密性、真实性、完整性和不可否认性。SET协议是PKI框架下的一个典型实现,同时也在不断升级和完善,如SET2.0将支持借记卡电子交易。
◆Kerberos协议:是一种网络身份认证协议,该协议的基础是基于信任第三方,它提供了在开放型网络中进行身份认证的方法,认证实体可以是用户也可以是用户服务。这种认证不依赖宿主机的操作系统或计算机的IP地址,不需要保证网络上所有计算机的物理安全性,并且假定数据包在传输中可被随机窃取和篡改。
◆PGP协议:使用RSA公钥证书进行身份认证,使用IDEA(128位密钥)进行数据加密,使用MD5 进行数据完整性验证。
发送方A有三个密钥:A的私钥、B的公钥、A生成的一次性对称密钥;
接收方B有两个密钥:B的私钥、A的公钥。
法律法规与标准化
1知识产权基础知识
知识产权是指公民、法人、非法人单位对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依法享有的权利和在生产经营活动中标记所有人依法所享有的权利的总称。包含著作权、专利权、商标权、商业秘密权、植物新品种权、集成电路布图设计权和地理标志权等。
无体性:知识产权的对象是没有具体形体,是智力创造成果,是一种抽象的财富。
专有性:指除权利人同意或法律规定外,权利人以外的任何人不得享有或使用该项权利。
地域性:指知识产权只在授予其权利的国家或确认其权利的国家产生,并且只能在该国范围内受法律保护,而其他国家则不受保护。
时间性:仅在法律规定的期限内受到保护,一旦超过期限,权利自行消灭,相关知识产品即成为整个社会的共同财富,为全人类所共同使用。
知识产权具有地域限制,保护期限各种情况如下表所示:
保护对象及范围
保护期限
知识产权人的确定⭐⭐⭐
(1)职务作品
(2)委托作品
单位和委托的区别在于,当合同中未规定著作权的归属时,著作权默认归于单位,而委托创作中,著作权默认归属于创作方个人,具体如下:
侵权判定⭐⭐⭐⭐
相关概念如下:即一般通用化的东西不算侵权,个人未发表的东西被抢先发表是侵权。
中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权。
开发软件所用的思想、处理过程、操作方法或者数学概念不受保护。
著作权法不适用于下列情形:
法律、法规、国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;时事新闻;历法、通用数表、通用表格和公式。
只要不进行传播、公开发表、盈利都不算侵权,具体如下:
注:合理使用不需要通知作者也不需要付报酬,此时原作品仍然受著作权法保护的。
2标准化基础知识
根据标准制定机构和适用范围的不同,可分为国际标准、国家标准、行业标准、区域/地方标准和企业标准;根据类型划分,又可以分为强制性标准和推荐性标准。
(1)国际标准:是指国际标准化组织(ISO)、国际电工委员会(IEC)和国际电信联盟(TTU)制定的标准,以及国际标准化组织确认并公布的其他国际组织制定的标准。国际标准在世界范围内统一使用,提供各国参考。
(2)国家标准:是指由国家标准化主管机构制定或批准发布,在全国范围内统一适用的标准。比如:GB---中华人民共和国国家标准:强制性国家标准代号为GB,推荐性国家标准代号为GB/T,国家标准指导性文件代号为GB/Z,国军标代号为GJB。
ANSI(American National Standards Institute)---美国国家标准协会标准;
(3)行业标准:是由某个行业机构、团体等制定的,适用于某个特定行业业务领域的标准。比如:IEEE——美国电气电子工程师学会标准;GA——公共安全标准;YD——通信行业标准;
(4)区域/地方标准:是由某一区域/地方内的标准化主管机构制定、批准发布的,适用于某个特定区域/地方的标准。比如:EN---欧洲标准;
(5)企业标准:是企业范围内根据需要协调、统一的技术要求、管理要求和工作要求所制定的标准,适用于本企业内部的标准。一般以Q字开头,比如Q/320101 RER 007-2012,其中320101代表地区,RER代表企业名称代号,001代表该企业该标准的序号,2012代表年号。
《中华人民共和国标准化法》规定:企业标准须报当地政府标准化行政主管部门和有关行政主管部门备案。已有国家标准或者行业标准的,国家鼓励企业制定严干国家标准或者行业标准的企业标准,在企业内部适用。
企业信息化战略与实施
1信息化基本概念
1.1 信息系统概念
信息是客观事物状态和运动特征的一种普遍形式,客观世界中大量地存在、产生和传递着以这些方式表示出来的各种各样的信息。
基本属性
真伪性
层次性
不完全性
客观事实的全部信息是不可能得到的,我们需要正确滤去不重要的信息、失真的信息,抽象出有用的信息
滞后性
扩压性
分享性
控制论创始人维纳认为:信息就是信息,既不是物质也不是能量。
香农是信息论的奠基者,提出信息是“用以消除随机不确定性的东西”,确定了信息量的单位为比特(bit)。
信息具有价值,而价值的大小决定于信息的质量,这就要求信息满足一定的质量属性,包括:
(1)精确性,对事物状态描述的精准程度。
(2)完整性,对事物状态描述的全面程度,完整信息应包括所有重要事实。
(3)可靠性,指信息的来源、采集方法、传输过程是可以信任的,符合预期。
(4)及时性,指获得信息的时刻与事件发生时刻的间隔长短。昨天的天气信息不论怎样精确、完整,对指导明天的穿衣并无帮助,从这个角度出发,这个信息的价值为零。
(5)经济性,指信息获取、传输带来的成本在可以接受的范围之内。
(6)可验证性,指信息的主要质量属性可以被证实或者证伪的程度。
(7)安全性,指在信息的生命周期中,信息可以被非授权访问的可能性,可能性越低,安全性越高。
信息系统的组成部件包括硬件、软件、数据库、网络、存储设备、感知设备、外设、人员以及把数据处理成信息的规程等。
硬件:由执行输入、处理和输出行为的计算机设备组成。
软件:由管理计算机运行的程序构成。
数据库:是经过机构化、规范化组织后的事实和信息的集合。数据库是信息系统中最有价值和最重要的一部分。
国家信息化体系六要素
信息技术应用:是信息化体系六要素中的龙头,是国家信息化建设的主阵地,集中体现了国家信息化建设的需求与利益;
信息资源:其开发利用是国家信息化的核心任务,是国家信息化建设取得实效的关键,也是我国信息化的薄弱环节;
信息网络:是信息资源开发利用和信息技术应用的基础,是信息传输、交换、共享的必要手段;信息技术和产业:是我国进行信息化建设的基础;
信息化人才:是国家信息化成功之本,对其他各要素的发展速度和质量起着决定性的影响,是信息化建设的关键;
信息化政策法规和标准规范:用于规范和协调信息化体系六要素之间关系,是国家信息化快速、持续、有序、健康发展的根本保障。
信息化需求包含3个层次,即战略需求、运作需求和技术需求。
一是战略需求。组织信息化的目标是提升组织的竞争能力、为组织的可持续发展提供一个支持环境。从某种意义上来说,信息化对组织不仅仅是服务的手段和实现现有战略的辅助工具:信息化可以把组织战略提升到一个新的水平,为组织带来新的发展契机。特别是对于企业,信息化战略是企业竞争的基础。
二是运作需求。组织信息化的运作需求是组织信息化需求非常重要且关键的一环,它包含三方面的内容:一是实现信息化战略目标的需要;二是运作策略的需要;三是人才培养的需要。
三是技术需求。由于系统开发时间过长等问题在信息技术层面上对系统的完善、升级、集成和整合 提出了需求。也有的组织,原来基本上没有大型的信息系统项目,有的也只是一些单机应用,这样的组织的信息化需求,一般是从头开发新的系统。
应用层次分类
战略级(企业最高管理层);
战术级(企业中层经理及其管理部门);
操作级(服务型企业的业务部门);
事务级(企业的管理业务人员)。
数据环境分类
数据文件:比较原始的数据处理方式,手工操作文件,如只使用文本、excel等记录信息。
应用数据库:企业内部各个部门都有独立的数据库,针对不同的应用场景设计的,且相互之间无法互通。
主题数据库:企业内部只有一个集成信息化的数据库,面向业务主题,实现信息共享。
信息检索系统:数据仓库的概念,主要用于大数据分析、检索的。
易混淆点3:企业门户企业网站:注重单向信息传递,缺互动。
企业信息门户(EIP):把各种应用系统、数据资源和互联网资源统一集成到企业门户之下。强调增强了互动。
企业知识门户(EKP):企业网站的基础上增加知识性内容。
企业应用门户(EAP);实际上是对企业业务流程的集成。它以业务流程和企业应用为核心,把业务流程中功能不同的应用模块通过门户技术集成在一起。
企业通用门户:集以上四者于一身。
垂直门户:为某一特定的行业服务的,传送的信息只属于人们感兴趣的领域。
易混淆点4:业务流程管理BPM和业务流程重组BPR
BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就
BPM是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。
BPM与BPR区别:
BPM与 BPR管理思想最根本的不同就在于流程管理并不要求对所有的流程进行再造。构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化的设计。
易混淆点6:企业应用集成
(1)表示集成(界面集成)
把各应用系统的界面集成起来,统一入口,产生“整体”感觉。
(2)数据集成
数据集成是应用集成和业务过程集成的基础。把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。ETL、数据仓库、联邦数据库都可视为数据集成。
(3)控制集成(功能集成、应用集成、API集成)
业务逻辑层次集成,可以借助于远程过程调用或远程方法调用、面向消息的中间件等技术。
(4)业务流程集成(过程集成)
进行业务流程集成时,企业的爱对各种业务信息的交换进行定义、投权和管理,以便改进操作、减少成本、提高响应速度。
2信息系统战略规划⭐⭐⭐⭐⭐
一个企业信息系统的战略规划可分为下面三个阶段:
第一阶段:以数据处理为核心,围绕职能部门需求
企业系统规划法BSP:自上而下地识别企业目标、企业过程和数据,然后对数据进行分析,自下而上地设计信息系统。重视数据的创建和使用,以数据的创建和使用归类,提供一个信息系统规划,建立CU矩阵(创建使用矩阵)。
关键成功因素法CSF:重视关键因素,每个企业在某阶段都有关键因素,抓住关键信息。战略集合转化法SST:将企业的战略信息(环境、目标等)收集起来,当成一个"信息集合",并且转换为信息系统的战略信息,全方位的注重企业的战略信息。
第二阶段:以企业内部MIS(管理信息系统)为核心,围绕企业整体需求
战略数据规划法SDP:强调建立企业模型和主题数据库(重点和关键,是而向业务主题,整个企业的),数据类基本上是稳定的,而业务和流程是多变的。
信息工程法IE:第一次提出以工程的方法来建立信息系统,信息工程是面向企业计算机信息系统建设,以数据为中心的开发方法。信息工程方法认为,与企业的信息系统密切相关的三要素是;企业的各种信息、企业的业务过程和企业采用的信息技术。信息工程自上而下地将整个信息系统的开发过程划分为四个实施阶段,分别是信息规划阶段、业务领域分析阶段、系统设计阶段和系统构建阶段。
战略栅格法SG:建立一个2"2的矩阵,每个矩阵元素代表过程对数据类的创建和使用等。栅格即划分矩阵。
第三阶段:综合考虑企业内外环境,以集成为核心,围绕企业战略需求
价值链分析法 VCA:将所有对企业有影响的信息作为一个个活动,其都有可能对企业造成增值,分析其中对企业增值最大的信息。
战略一致性模型SAM:保证企业战略和信息系统战略要一致。
1、信息资源规划ISP
信息资源规划是信息化建设的基础工程,是指对企业生产经营活动所需要的信息,对产生、获取、处理、存储、传输和利用等方面进行全面的规划。
IRP强调将需求分析与系统建模紧密结合起来,需求分析是系统建模的准备,系统建模是用户需求的定型和规划化表达。
业务需求分析
数据需求分析
系统功能建模
系统数据建模
2、信息化战略体系规划
体系结构图如下所示:
1、企业战略规划:是用机会和威胁评价现在和未来的环境,用优势和劣势评价企业现状,进而选择和确定企业的总体和长远目标,制定和抉择实现目标的行动方案。
确定企业未来发展的大方向。
2、信息系统战略规划:关注的是如何通过信息系统来支撑业务流程的运作,进而实现企业的关键业务目标,其重点在于对信息系统远景、组成架构、各部分逻辑关系进行规划。
为企业战略开发支撑系统。
3、信息技术战略规划:通常简称为IT战略规划,是在信息系统规划的基础上,对支撑信息系统运行的硬件、软件、支撑环境等进行具体的规划,它更关心技术层面的问题。
为支撑系统运行环境做规划。
4、信息资源规划:是在以上规划的基础上,为开展具体的信息化建设项目而进行的数据需求分析、信息资源标准建立、信息资源整合工作。
数据与标准相关的规划
5、系统规划:是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标及现有系统的状况进行初步调查,根据企业目标和发展战略,确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。
单个项目的立项分析。
3、企业战略与信息化战略集成方法:
业务与IT整合(BITA):重心是找业务与现有IT系统之间的不一致,并给出转变计划。【业务路线】
BITA是一种以业务为导向的、全面的T管理咨询实施方法论。从制订企业战略、建立(改讲)企业组织结构和业务流程,到进行IT管理和制订过度计划,使IT能够更好地为企业战略和目标服务。BITA适用于信息系统不能满足当前管理中的业务需要,业务和IT之间总是有不一致的地方。
企业IT架构(EITA):帮助IT企业建立IT的原则规范、模式和标准。【IT技术路线】
EITA 分析企业战略,帮助企业制订IT战略,并对其投资决策进行指导。在技术、信息系统、信息、IT组织和流程方面,帮助企业建立的原则规范、模式和标准,指出T需要改进的方面并帮助制订行动计划。EITA 适用于现有信息系统和GT基础架构不一致、不兼容和缺乏统一的整体管理的企业。
4、信息系统战略规划(ISSP)
信息系统战略规划 (Information System Strategic Planning,ISSP)是从企业战略出发,构建企业基本的信息架构,对企业内、外信息资源进行统一规划、管理与应用,利用信息控制企业行为,辅助企业进行决策,帮助企业实现战略目标。
ISSP方法经历了三个主要阶段,各个阶段所使用的方法也不一样。
第一个阶段主要以数据处理为核心,围绕职能部门需求的信息系统规划,主要的方法包括企业系统规划法(BSP)--CU矩阵、关键成功因素法(CSF)和战略集合转化法(SST);
第二个阶段主要以企业内部管理信息系统为核心,围绕企业整体需求进行的信息系统规划,主要的方法包括战略数据规划法(SDP)、信息工程法(IE)和战略栅格法(SG);
第三个阶段的方法在综合考虑企业内外环境的情况下,以集成为核心,围绕企业战略需求进行的信息系统规划,主要的方法包括价值链分析法(VCA)和战略一致性模型(SAM)。
5、信息工程
信息工程(Information Engineering,IE)方法是马丁创立的面向企业信息系统建设的方法,其基础是BSP方法和SDP方法。IE方法不仅是一种方法,它还是一门工程学科,把信息系统开发过程工程化。
IE方法自上而下地把整个信息系统的开发过程分为四个实施阶段,分别是信息战略规划阶段、业务领域分析阶段、系统设计阶段和系统构建阶段。
3政府信息化与电子政务
电子政务是指政府机构在其管理和服务职能中运用现代信息技术,实现政府组织结构和工作流程的重组优化,超越时间、空间和部分分隔的制约,建成一个精简、高效、廉洁、公平的政府运作模式。电子政务模型可简单概括为两方面:政府部分内部利用先进的网络信息技术实现办公自动化、管理信息化、决策科学化;政府部门与社会各界利用网络信息平台充分进行信息共享与服务、加强群众监督提高办事效率及促进政务公开,等等。
电子政务的内容:
政府对政府(G2G,Government To Government):政府之间的互动及政府与公务员之间互动。基础信息的采集、处理和利用,如人口/地理/资源信息等;各级政府决策支持;政府间通信。
政府对企业(G2B,Government To Business):政府为企业提供的政策环境。包括产业政策、进出口、注册、纳税、工资、劳保、社保等各种规定;政府向企事业单位颁发的各种营业执照、许可证、合格证、质量认证等。
企业对政府(B2G,Business To Government):企业纳税及企业为政府提供服务。企业参加政府各项工程的竞/投标,向政府供应各种商品和服务,企业向政府提建议,申诉。
政府对公民(G2C,Government To Citizen):政府对公民提供的服务。关于社区公安和水、火、天灾等与公共安全有关的信息等,还包括户口、各种证件的管理等政府提供的各种服务。
公民对政府(C2G,Citizen To Government):个人应向政府缴纳税费和罚款及公民反馈渠道。个人应向政府缴纳的各种税款和费用。了解民意,征求群众意见。报警服务(盗贼、医疗、急救、火警等)。
政府对公务员(G2E,Government To Employee):政府与政府公务员即政府雇员。政府机构通过网络技术实现内部电子化管理(例如,OA系统等)的重要形式。
4企业信息化与电子商务⭐⭐⭐⭐
企业信息化一定要建立在企业战略规划基础之上,以企业战略规划为基础建立的企业管理模式是建 立企业战略数据模型的依据。企业信息化就是技术和业务的融合。这个“融合”并不是简单地利用 信息系统对手工的作业流程进行自动化,而是需要从企业战略的层面、业务运作层面、管理运作层面这3个层面来实现。企业信息化建设与其说是一场技术变革,还不如说是对企业的经营管理和业 务流程的一次革命,它是借助于先进的信息技术和网络技术的价值链进行重构。同时,企业信息化 是一个不断发展、变化的过程,它没有终点,至少目前还看不到终点。企业信息化方法并不同于信息系统建设方法,这是因为信息系统建设方法是一个具体的信息项目建设的方法,而企业信息化方法是整个企业实现信息化的方法,因此,企业信息化方法要比信息系统建设方法层次更高、涉及面更广。
企业信息化涉及到对企业管理理念的创新,管理科学的核心就是应用科学的方法实施管理,按照市场发展的要求,对企业现有的管理流程重新整合,从作为管理核心的财务、资金管理,向技术、物资、人力资源的管理,并延伸到企业技术创新、工艺设计、产品设计、生产制造过程的管理,进而扩展到客户关系管理、供应链的管理乃至发展电子商务,形成企业内部向外部扩散的全方位管理。企业信息化注重企业经营管理方面的信息分析和研究,信息系统所蕴含的管理思想也可帮助企业建立更为科学规范的管理运作体系,提供准确 及时的管理决策信息。
4.1 企业资源计划 ERP
企业资源规划是指建立在信息技术基础上,以系统化的管理思想,为企业提供决策和运营手段的管理平台。ERP系统是将企业所有资源进行集成整合,并进行全面、一体化管理的信息系统。
演变过程:物料需求计划(物料单系统)——制造资源计划(增加库存、分销等)——企业资源计划(打通了供应链,加入财务、人力资源、销售管理等)。
企业有四大资源:物流(物流管理)、资金流(财务管理)、信息流(生产控制管理)、人力资源(人力资源管理),企业的资源计划可从下面三点来理解:
管理思想:ERP首先是一种管理思想,将企业资源分类管理,是管理思想的变革。
软件产品:其次,ERP是个软件产品,为企业用户提供一体化的解决方案,不是买来直接用的,需要个性化的开发和部署。
管理系统:ERP最后是一个管理系统,存在众多的子系统,这些子系统有统一的规划,是互联互通的,便于事前事中监控。
ERP的五个层次
生产计划大纲(Production Planning,PP)是根据经营计划的生产目标制定的,是对企业经营计划的细化,用以描述企业在可用资源的条件下,在一定时期中的产量计划。生产计划大纲在企业决策层 的三个计划中有承上启下的作用,一方面它是企业经营计划和战略规划的细化,另一方面它又用于 指导企业编制主生产计划,指导企业有计划地进行生产。
主生产计划(Master Production Schedule,MPS)是对企业生产计划大纲的细化,说明在一定时期 内的如下计划:生产什么,生产多少和什么时候交货。主生产计划的编制以生产大纲为准,其汇总 结果应当等同于生产计划大纲,同时,主生产计划又是其下一层计划——物料需求计划的编制依 据。主生产计划的编制是 ERP的主要工作内容。主生产计划的质量将大大影响企业的生产组织工作和资源的利用。
物料需求计划(Material Requirement Planning,MRP)是对主生产计划的各个项目所需的全部制造件和全部采购件的网络支持计划和时间进度计划。它根据主生产计划对最终产品的需求数量和交货期,推导出构成产品的零部件及材料的需求数量和需求时期,再导出自制零部件的制作订单下达日 期和采购件的采购订单发送日期,并进行需求资源和可用能力之间的进一步平衡。物料需求计划是 生产管理的核心,它将主生产计划安排生产的产品分解成各自制零部件的生产计划和采购件的采购 计划。物料需求计划属于ERP管理层计划。
能力需求计划(Capacity Requirements Planning,CRP)是对物料需求计划所需能力进行核算的一种计划管理方法。旨在通过分析比较MRP的需求和企业现有生产能力,及早发现能力的瓶颈所在,为实现企业的生产任务而提供能力方面的保障。
车间作业计划(Production Activity Control,PAC)是在MRP所产生的加工制造订单(即自制零部件生产计划)的基础上,按照交货期的前后和生产优先级选择原则以及车间的生产资源情况(如设 备、人员、物料的可用性、加工能力的大小等),将零部件的生产计划以订单的形式下达给适当的车间。车间作业计划属于ERP执行层计划。当前主流的车间作业计划模式是JIT【Just In Time)模式。
4.2 客户关系管理CRM
(1)CRM理念:将客户看作资产;客户关怀是中心,目的是与客户建立长期和有效的业务关系,最大限度地增加利润;核心是客户价值管理,提高客户忠诚度和保有率。
(2)CRM的功能
客户服务: CRM的关键内容。
市场营销:包括商机产生、商机获取和管理、商业活动管理和电话营销等。
共享的客户资料库:它把市场营销和客户服务连接起来。
分析能力:CRM的一个重要方面在于它具有使客户价值最大化的分析能力。
(3)一个有效的CRM解决方案应该具备以下要素:
畅通有效的客户交流渠道(触发中心)。在通信手段极为丰富的今天,能否支持各种触发手段与客户进行交流,是十分关键的。
对所获信息进行有效分析(挖掘中心)。采用数据挖掘和商业智能等技术对收集的信息进行分析。
CRM必须能与ERP很好地集成。作为企业管理的前台,CRM的市场营销和客户服务的信息必须能及时传达到后台的财务、生产等部门,这是企业能否有效运营的关键。
CRM将客户看做是企业的一项重要资产,客户关怀是CRM的中心,其目的是与客户建立长期和有效的业务关系,在与客户的每一个"接触点"上都更加接近客户、了解客户,最大限度的增加利润。
CRM的核心是客户价值管理,将客户价值分为既成价值、潜在价值和模型价值,通过"一对一"营销原则,满足不同价值客户的个性化需求,提高客户忠诚度和保有率。
CRM的功能
客户服务:是CRM的关键内容,对客户提供的服务,可以提高客户忠诚度。
市场营销:包括商机产生、商机获取和管理、商业活动管理和电话营销等:销售人员与潜在客户的互动行为、将潜在客户发展为真正客户并保持其忠诚度是使企业赢利的核心因素。
共享的客户资料库:是企业的一种重要信息资源,将市场营销和客户服务连接起来。也是CBM 的基础和依托。
分析能力:CRM的一个重要方面在于它具有使客户价值最大化的分析能力。对上述获取的资料库进行分析。
CRM是企业管理的前台,必须与ERP进行良好的集成,使得信息可以及时传递给财务、生产等部门。
市场营销和客户服务是 CRM的支柱性功能。
一个有效的 cRM解决方案应该具备以下要素:
畅通有效的客户交流渠道(触发中心)。
对所获信息进行有效分析(挖掘中心)。
CRM必须能与ERP很好地集成。
CRM的实现过程
客户服务与支持,即通过控制服务品质以赢得顾客的忠诚度。
客户群维系,即通过与顾客的交流实现新的销售。
商机管理,即利用数据库开展销售。
4.3 供应链管理SCM
SCM理念:强强联合,整合与优化"三流"(信息流-需求信息流、供应信息流、资金流、物流),打通企业间“信息孤岛”,严格的数据交换标准。将制造商、供应商、分销商、零售商、在计划(策略性)、采购、制造、配送、退货等各方面联系起来。
信息流需要进一步了解其分类:
需求信息流:如客户订单、生产计划、采购合同等
供应信息流:如入库单、完工报告单、库存记录、可供销售量、提货发运单等
SCM是一种集成的管理思想和方法,它执行供应链中从供应商到最终用户的物流的计划和控制等职能。从单一的企业角度来看,是指企业通过改善上下游供应链关系,整合和优化供应链中的信息流、物流和资金流,以获得企业的竞争优势。
供应链节点:供应商、制造商、分销商、零售商、仓库、配送中心、客户等。
每个企业内部都有一条或者几条供应链,每个企业也都处于一条供应链的某个节点中,SCM要注意的就是供应网络的构造,处于供应链中的企业是利益共同体,如何实现协作运营。SCM包括计划、采购、制造、配送、退货五大基本内容。
计划:这是SCM的策略部分,企业需要有一个策略来管理所有的资源,以满足客户对产品的需求。好的计划是建立一系列的方法监控供应链。
采购:选择能为企业提供产品和服务的供应商。
制造:安排生产、测试、打包和准备送货所需的活动,是供应链中测量内容最多的部分。
配送:即物流,是调整用户的订单收据、建立仓库网络、拍递送人员提货并送货、建立产品计价系统、接收付款。
退货:是供应链中的问题处理部分。
scm的设计原则
自顶向下和自底向上结合、简洁性、互补性、协调性、动态性、创新性、战略性原则。
4.4 产品数据管理PDM
PDM理念:用来管理所有与产品相关信息和与产品相关的过程。
PDM发展阶段:配合CAD->产品数据管理->产品协同商务。
PDM核心功能:数据库和文档管理;产品结构与配置管理;生命周期管理和流程管理;集成开发接口。
产品数据管理(Product Data Management,PDM)是一门用来管理所有与产品相关信息(包括零件信息、配置、文档、计算机辅助设计文件、结构、权限信息等)和所有与产品相关过程(包括过程定义和管理)的技术。
PDM系统是一种软件框架,利用这个框架可以帮助企业实现对与企业产品相关的数据、开发过程以及使用者进行集成与管理,可以实现对设计、制造和生产过程中需要的大量数据进行跟踪和支持。
4.5 决策支持系统 DSS
帮助决策者提高决策水平和质量,起到辅助作用。
DSS系统由四个子系统组成:
数据库子系统:建立与决策相关的信息;
推理部分:知识库,包含智能推理分析算法;
模型库子系统:是最复杂的子系统,一系列应用场景模型,用户主要根据模型来决策;
用户接口子系统:是一个人机交互界面,完美的集合上述三个子系统,供用户使用。
各个子系统的具体组成如下图所示:
决策支持可以分为结构化决策、半结构化决策和非结构化决策。
其中,结构化决策是指对某一决策过程的规则进行确定性描述与建模,以适当的算法产生决策方案,并能从多种方案中选择最优解;
非结构化决策的决策过程复杂,不可能用确定的模型和语言描述其决策过程,更无所谓最优解。
半结构化和非结构化决策一般用于企业的中、高级管理层。一般来说,决策往往不可能一次完成,而是一个迭代的过程。
DSS和MIS(管理信息系统)的区别:
DSS能够解决非结构化和半结构化的问题,强调发挥人的智慧,用户参与到开发过程中,最终还是用户决策,DSS服务于企业中高层;
MIS是企业的结构化的管理信息系统,管理公司的资源等,强调一个结构化的过程,自动化管理,人力参与的少。
4.6 知识管理
明确知识和信息的区别,知识是由信息推导出来的,人类智慧和经验的集合。
显性知识:例如文档、资料、视频等能够看得见的知识。
隐性知识:存在于人脑海中的知识,包括人的记忆与经验技巧,理想抱负等。
知识管理应该探寻如何将隐性知识转化为显性知识,达到共享的目的,有如下三种工具可以实现:
知识生成工具:获取知识的工具,包括知识获取、知识合成、知识创新。
知识编码工具:如何表达知识的工具。
知识转移工具:知识需要传播,达到共享的目的,传播过程中会遇到困难和差异,包括时间差异、空间差异和社会差异。
4.7 企业门户
企业网站:注重消息的单向传送展示,缺乏信息互动,是企业门户的雏形。
企业信息门户EIP:在互联网模式下,将企业的各种应用系统、数据资源和互联网资源统一集成在企业门户下,提供企业的产品和用户的信息,达到信息共享,使得企业相关的供应链、客户通过此门户获得所需的信息,快速了解企业文化。
企业知识门户EKP:企业网站的基础上增加知识性内容,企业员工可通过EKP了解今天企业所发生的事情,找到与自己相关的项目资源信息,建立了一个企业知识库,能够提高企业员工的工作效率。
企业应用门户EAP:对企业业务流程的集成,以业务流程和企业应用为核心,把业务流程中功能不同的应用模块通过门户技术集成在一起,企业员工和合作伙伴可以通过EAP访问相应的应用系统,实现移动办公。
企业通用门户:将上述四者有机的融合在一起。
4.8 企业应用集成 EAl⭐⭐⭐⭐⭐
企业集成分类
按组织范围分
按集成点分
企业信息系统中容易产生信息孤岛,即在一个企业内部有多个子系统,且不互通,一个信息需要反复多次输入,为了解决信息孤岛的问题,提出了企业应用集成EAl的概念,可以将企业的多个信息系统联系起来,让使用者感觉在使用一个系统。企业的价值取向是推动EAI技术发展的原动力,而EA 的实现反过来也驱动企业竞争优势的提升。
企业集成分类
(1)表示集成:即界面集成,是最原始的集成,黑盒集成。将多个信息系统的界面集成在一起,统一入口,为用户提供一个看上去统一,但是由多个系统组成的应用系统的集成,例如桌面。
(2)数据集成:白盒集成,把不同来源、格式、特点性质的数据在逻辑上或者物理上有机的集中,从而为企业提供全面的数据共享。如数据仓库。
(3)控制集成(功能集成、应用集成):黑盒集成,业务逻辑层次的集成,可以借助于远程过程调用或远程方法调用、面向消息的中间件等技术,将多个应用系统功能进行绑定,使之像一个实时运行的系统一样接受信息输入和产生数据输出,实现多个系统功能的叠加。如钉钉。
(4)业务流程集成:即过程集成,最彻底的、综合的集成,这种集成超越了数据和系统,由一系列基于标准的、统一数据格式的工作流组成。当进行业务流程集成时,企业必须对各种业务信息的交换进行定义、授权和管理,以便于改进操作、减少成本、提高响应速度。它包括应用集成、B2B集成、自动化业务流程管理、人工流程管理、企业门户,以及对所有应用系统和流程的管理和监控等。如电子购物网站-第三方支付平台-银行-物流等流程集成。
应用集成数据交换方式
共享数据库:在应用集成时,让多个应用系统通过直接共享数据库的方式,来进行数据交换,实时性强,可以频繁交互,属于同步方式;但是安全性、并发控制、死锁等问题突出。
消息传递:消息是软件对象之间进行交互和通信时所使用的一种数据结构,可以独立于软件平台而存在,适用于数据量小、但要求频繁、立即、可靠、异步地数据交换场合。
文件传输:是指在进行数据交换时,直接将数据文件传送到相应位置,让目标系统直接读取数据,可以一次性传送大量信息,但不适合频繁进行数据传送。适用于数据量大、交换频度小、即时性要求低的情况。
企业集成平台
集成平台是支持企业集成的支撑环境,包括硬件、软件、软件工具和系统,通过集成各种企业应用 软件形成企业集成系统。由于硬件环境和应用软件的多样性,企业信息系统的功能和环境都非常复 杂,因此,为了能够较好地满足企业的应用需求,作为企业集成系统支持环境的集成平台,其基本 功能主要有:
(1)通信服务 它提供分布环境下透明的同步/异步通信服务功能,使用户和应用程序无需关心具体的操作系统和 应用程序所处的网络物理位置,而以透明的函数调用或对象服务方式完成它们所需的通信服务要求。
(2)信息集成服务 它为应用提供透明的信息访问服务,通过实现异种数据库系统之间数据的交换、互操作、分布数据 据管理和共享信息模型定义(或共享信息数据库的建立),使集成平台上运行的应用、服务或用户 端能够以一致的语义和接口实现对数据(数据库、数据文件、应用交互信息)的访问与控制。
(3)应用集成服务 它通过高层应用编程接口来实现对相应应用程序的访问,这些高层应用编程接口包含在不同的适配器或代理中,它们被用来连接不同的应用程序。这些接口以函数或对象服务的方式向平台的组件模型提供信息,使用户在无需对原有系统进行修改(不会影响原有系统的功能)的情况下,只要在原 有系统的基础上加上相应的访问接口就可以将现有的、用不同的技术实现的系统互联起来、通过为 应用提供数据交换和访问操作,使各种不同的系统能够相互协作。
(4)二次开发工具 二次开发工具是集成平台提供的一组帮助用户开发特定应用程序(如实现数据转换的适配器或应用 封装服务等)的支持工具,其目的是简化用户在企业集成平台实施过程中(特定应用程序接口)的开发工作。
(5)平台运行管理工具 它是企业集成平台的运行管理和控制模块,负责企业集成平台系统的都态和动态配置、集成平台应 用运行管理和维护、事件管理和出错管理等。通过命名服务、目录服务、平台的动态静态配置,以 及其中的关键数据的定期备份等功能来维护整个服务平台的系统配置及稳定运行。
4.9 电子商务
电子商务分三个方面:电子商情广告、电子选购和交易;电子交易凭证的交换、电子支付与结算;网上售后服务等。
参与电子商务的实体有四类;顾客(个人消费者或集团购买)、商户(包括销售商、制造商和储运商)、银行(包括发卡行和收单行)及认证中心。
按照交易对象,电子商务模式包括:
(1)B2B模式,企业对企业。
(2)B2C模式,企业对消费者。
(3)C2C,消费者对消费者。
(4)020 即Online To Offline,含义是线上购买线下的商品和服务,实体店提货或享受服务。
第三方平台结算支付模式有如下优点:
(1)比较安全,信用卡信息或帐户信息仅需要告知支付中介,而无需告诉每一个收款人,大大减少了信用卡信息和账户信息失密的风险;
(2)支付成本较低,支付中介集中了大量的电子小额交易,形成规模效应,因而支付成本较低;
(3)使用方便。对支付者而言,他所面对的是友好的界面,不必考虑背后复杂的技术操作过程;
(4)支付担保业务可以在很大程度上保障付款人的利益。
目前,我国电子商务标准体系包含4方面,分别是基础技术标准、业务标准、支撑体系标准和监督管理标准。其中,服务质量属于监督管理标准范畴;注册维护属于业务标准范畴;在线支付属于支撑体系标准范畴;信息分类编码属于业务标准范畴。
商业智能(BI)
Bl=数据仓库+数据挖掘+OLAP
(1)数据仓库
数据仓库的特点:面向主题;集成的;相对稳定的(非易失的);反映历史变化(随着时间变化):
数据仓库形成过程
阶段一:数据源进行数据预处理ETL(数据抽取、请理、装载、刷新)
阶段二:数据仓库存储(或先数据集市再整合到数据仓库)
阶段三:数据分析,OLAP服务器
阶段四:数据展现一查询工具、报表工具、分析工具、数据挖掘工具
数据仓库和数据湖的区别:
数据仓库仅支持数据分析处理。
数据湖既支持数据分析处理,也支持事务处理。
(2)数据挖掘
数据挖掘是从数据本身出发,挖掘人类所未知的知识内容。
数据挖掘方法分类:
关联分析:挖掘出隐藏在数据间的相互关系。
序列模式分析:侧重点是分析数据间的前后关系(因果关系)。
分类分析:为每一个记录赋予一个标记再按标记分类。
聚类分析:分类分析法的逆过程。
(3)OLAP
OLAP不仅进行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能。
5工作流
WFMS(工作流管理系统)将业务流程中工作如何组织与协调的规则抽象出来,在 WFMS的协助下,开发人员遵从一定的编程接口和约定,就可以开发出更具灵活性的事务处理系统,用户无需重新开发即可更改工作流程,以适应业务的变更。WFMS的基本功能体现在以下几个方面:
(1)对工作流进行建模。即定义工作流,包括具体的活动和规则等,所创建的模型是同时可以被人和计算机所"理解"的,工作流对应现实世界的业务处理过程,不能改变真实业务的处理逻辑。
(2)工作流执行。遵循工作流模型来创建和执行实际的工作流,即通过 WFMS可以执行多个工作项。
(3)业务过程的管理和分析。监控和管理执行中的业务(工作流),例如,进度完成情况和数据所处状态、工作分配与均衡情况等。
工作流参考模型(Workflow Reference Model,WRM)包含六个基本模块,分别是工作流执行服各、工作流引擎、流程定义工具、客户端应用、调用应用和管理监控工具。这六个橄块讲认为是 MEMS 品基本的组成部分,WIRM同时也包括了这些模块之间的接口标准,包括接口一、接口二、接口三、接口四和接口五,如图1-1所示。
(1)工作流执行服务。工作流执行服务是WFMS的核心模块,它的功能包括创建和管理流程定义,创建、管理和执行流程实例。在执行上述功能的同时,应用程序可能会通过编程接口与工作流执行服务交互,一个工作流执行服务可能包含有多个分布式工作的工作流引擎。该模块还为每个用户维护一个活动列表,告诉用户当前必须处理的任务,可以通过电子邮件或者短消息的形式提醒用户任务的到达,例如,在开通课程流程中,当新的课程申请的到来时,可以提示上级主管。
(2)工作流引擎。工作流引擎是为流程实例提供运行环境,并解释执行流程实例的软件模块,即负责流程处理的软件模块。
(3)流程定义工具。流程定义工具是管理流程定义的工具,它可以通过图形方式把复杂的流程定义显示出来并加以操作,流程定义工具与工作流执行服务交互,一般该模块为设计人员提供图形化的用户界面。通过流程定义工具,设计人员可以创建新的流程或者改变现有流程,在流程定义时,可以指定各项活动的参与者的类型、活动之间的相互关系和传递规则等。
(4)客户端应用。客户端应用是通过请求的方式与工作流执行服务交互的应用,也就是说,是客户端应用调用工作流执行服务。客户端应用与工作流执行服务交互,它是面向最终用户的界面,可以将客户端应用设计为B/S架构或C/S架构。
(5)调用应用。调用应用是被工作流执行服务调用的应用,调用应用与工作流执行服务交互。为了协作完成一个流程实例的执行,不同的工作流执行服务之间进行交互,它通常是工作流所携带数据的处理程序,常用的是电子文档的处理程序,它们在工作流执行过程中被调用,并向最终用户展示数据,这些应用程序的信息包括名称、调用方式和参数等。例如,在OA系统中,可以调用相关的程序来直接查看Word文档或者Excel表格数据等。
(6)管理监控工具。管理监控工具主要指组织机构和参与者等数据的维护管理和流程执行情况的监控,管理监控工具与工作流执行服务交互。WFMS通过管理监控工具提供对流程实例的状态查询、挂起、恢复和销毁等操作,同时提供系统参数和系统运行情况统计等数据。用户可以通过图形或者图表的方式对系统数据进行汇总与统计,并可随时撤销一些不合理的流程实例。
软件工程
1能力成熟度模型
软件工程基本原理:用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清楚的审查、开发小组的人员应少而精、承认不断改进软件工程实践的必要性。
软件工程的基本要素:方法、工具、过程。
信息系统生命周期⭐⭐⭐
1.系统规划阶段:任务是对组织的环境、目标及现行系统的状况进行初步调查,根据组织目标和发展战略确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。根据需要与可能,给出制建系统的备选方案。
输出:可行性研究报告、系统设计任务书。
2.系统分析阶段:任务是根据系统设计任务书所确定的范围,对现行系统进行详细调查,描述现行系统的业务流程,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,即提出新系统的逻辑模型。系统分析阶段又称为逻辑设计阶段。这个阶段是整个系统建设的关键阶段,也是信息系统建设与一般工程项目的重要区别所在。
输出:系统说明书。
3.系统设计阶段:系统分析阶段的任务是回答系统"做什么"的问题,而系统设计阶段要回答的问题是“怎么做”。该阶段的任务是根据系统说明书中规定的功能要求,具体设计实现逻辑模型的技术方案,也就是设计新系统的物理模型。这个阶段又称为物理设计阶段,可分为总体设计(概要设计)和详细设计两个子阶段。
输出:系统设计说明书(概要设计、详细设计说明书)。
4.系统实施阶段:是将设计的系统付诸实施的阶段。这一阶段的任务包括计算机等设备的购置、安装和调试、程序的编写和调试、人员培训、数据文件转换、系统调试与转换等。这个阶段的特点是几个互相联系、互相制约的任务同时展开,必须精心安排、合理组织。系统实施是按实施计划分阶段完成的,每个阶段应写出实施进展报告。系统测试之后写出系统测试分析报告。
输出:实施进展报告、系统测试分析报告。
5.系统运行和维护阶段:系统投入运行后,需要经常进行维护和评价,记录系统运行的情况,根据一定的规则对系统进行必要的修改,评价系统的工作质量和经济效益。
软件生存周期:可行性分析与项目开发计划、需求分析、概要设计(选择系统解决方案,规划子系统)、详细设计(设计子系统内部具体实现)、编码、测试、维护。
能力成熟度模型CMM
对软件组织化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。针对软件研制和测试阶段。分为如下五个级别:
能力成熟度模型集成CMMI⭐⭐
是若干过程模型的综合和改进,不仅仅软件,而是支持多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程的特点和需要,能提高过程的质量和工作效率。
CMMI两种表示方法:
1.阶段式模型:类似于CMM,它关注组织的成熟度,五个成熟度模型如下:
2.连续式模型:关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级。
2软件过程模型⭐⭐⭐
瀑布模型(SDLC):结构化方法中的模型,是结构化的开发,开发流程如同瀑布一般,一步一步的走下去,直到最后完成项目开发,只适用于需求明确或者二次开发(需求稳定),当需求不明确时,最终开发的项目会错误,有很大的缺陷。
瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、运行与维护。
瀑布模型的特点是容易理解,管理成本低,每个阶段都有对应的成果产物,各个阶段有明显的界限划分和顺序要求,一旦发生错误,整个项目推倒重新开始。
适用于需求明确的项目,一般表述为需求明确或二次开发,或者对于数据处理类型的项目
原型:与瀑布模型相反,原型针对的就是需求不明确的情况,首先快速构造一个功能模型,演示给用户看,并按用户要求及时修改,中间再通过不断的演示与用户沟通,最终设计出项目,就不会出现与用户要求不符合的情况,采用的是迭代的思想。不适合超大项目开发。
典型的原型开发方法模型。适用于【需求不明确的场景】,可以帮助用户明确需求。
增量模型:首先开发核心模块功能,而后与用户确认,之后再开发次核心模块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付,但由于并不是从系统整体角度规划各个模块,因此不利于模块划分。难点在于如何将客户需求划分为多个增量。与原型不用的是增量模型的每一次增量版本都可作为独立可操作的作品,而原型的构造一般是为了演示.
融合了瀑布模型的基本成分和原型实现的迭代特征,可以有多个可用版本的发布,核心功能往往最先完成,在此基础上,每轮迭代会有新的增量发布,核心功能可以得到充分测试。强调每一个增量均发布一个可操作的产品。
螺旋榫型:是多种模型的混合,针对需求不明确的项目,与原型类似,但是增加了风险分析,这也是其最大的特点。适合大型项目开发。
典型特点是引入了风险分析。结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,并且从概念项目开始第一个螺旋。
V型:特点是增加了很多轮测试,并且这些测试贯穿于软件开发的各个阶段,不像其他模型都是软件开发完再测试,很大程度上保证了项目的准确性。V模型开发和测试级别对应如下图:
强调测试贯穿项目始终,而不是集中在测试阶段。是一种测试的开发模型。
喷泉模型:特点是面向对象的模型,而上述其他的模型都是结构化的模型,使用了迭代思想和无间隙开发。
典型的面向对象的模型。特点是迭代、无间隙。会将软件开发划分为多个阶段,但各个阶段无明显界限,并且可以迭代交叉。
基于构件的开发模型CBSD:特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本。
形式化方法模型:建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。
3软件开发方法⭐⭐⭐⭐
上述的软件过程模型基本都可归属于下面开发方法中,注意特点:
结构化方法
用户至上,自顶向下,逐步分解(求解),严格区分工作阶段,每阶段有任务与成果,强调系统开发过程的整体性和全局性,系统开发过程工程化,文档资料标准化。该模型阶段固化,不善变化,适用于需求明确。
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析(Structured Analysis,SA)、结构化设计(Structured Design,SD)和结构化程序设计(Structured Programming,SP)三部分有机组合而成,其精髓是自顶向下、逐步求精和模块化设计。
结构化方法的主要特点
(1)开发目标清晰化。结构化方法的系统开发遵循“用户第一”的原则。
(2)开发工作阶段化。每个阶段工作完成后,要根据阶段工作目标和要求进行审查,这使各阶段工作有条不紊地进行,便于项目管理与控制。
(3)开发文档规范化。结构化方法每个阶段工作完成后,要按照要求完成相应的文档,以保证各个工作阶段的衔接与系统维护工作的遍历。
(4)设计方法结构化。在系统分析与设计时,从整体和全局考虑,自顶向下地分解;在系统实现时,根据设计的要求,先编写各个具体的功能模块,然后自底向上逐步实现整个系统。
结构化方法的不足和局限
(1)开发周期长:按顺序经历各个阶段,直到实施阶段结束后,用户才能使用系统。
(2)难以适应需求变化:不适用于需求不明确或经常变更的项目。
(3)很少考虑数据结构:结构化方法是一种面向数据流的开发方法,很少考虑数据结构。
结构化方法常用工具
结构化方法一般利用图形表达用户需求,常用工具有数据流图、数据字典、结构化语言、判定表以及判定树等。
面向对象方法
最早来源于仿真领域,其特点是系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流和沟通,缩短开发周期,提供系统开发的准确性和效率。具有更好的复用性,关键在于建立一个全面、合理、统一的模型,分析、设计、实现三个阶段界限不明确。
面向对象(Object-Oriented,OO)方法认为,客观世界是由各种对象组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象类,是该对象类的一个元素。复杂的对象可由相对简单的各种对象以某种方式而构成,不同对象的组合及相互作用就构成了系统。
面向对象方法的特点
使用 OO 方法构造的系统具有更好的复用性,其关键在于建立一个全面、合理、统一的模型(用例模型和分析模型)。
00 方法也划分阶段,但其中的系统分析、系统设计和系统实现三个阶段之间已经没有"缝隙"。也就是说,这三个阶段的界限变得不明确,某项工作既可以在前一个阶段完成,也可以在后一个阶段完成;前一个阶段工作做得不够细,在后一个阶段可以补充。
面向对象方法可以普遍适用于各类信息系统的开发。
面向对象方法的不足之处
必须依靠一定的面向对象技术支持,在大型项目的开发上具有一定的局限性,不能涉足系统分析以前的开发环节。
当前,一些大型信息系统的开发,通常是将结构化方法和OO方法结合起来。首先,使用结构化方法进行自顶向下的整体划分;然后,自底向上地采用00方法进行开发。因此,结构化方法和 00 方法仍是两种在系统开发领域中相互依存的、不可替代的方法。
OMT对象建模技术
OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型。
对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现
动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现动态模型
功能模型描述一个计算如果从输入值得到输出值,它不考虑计算的次序,主要用DFD来实现功能模型
简单地说,功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体
原型法方法
适用于需求不明确的开发,按功能分-水平原型(界面)、垂直原型(复杂算法),按最终结果分-抛弃式原型、演化式原型。
原型化方法也称为快速原型法,或者简称为原型法。它是一种根据用户初步需求,利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
按是否实现功能分类:分为水平原型(行为原型,功能的导航)、垂直原型(结构化原型,实现了部分功能)。
按最终结果分类:分为抛弃式原型、演化式原型。
原型法的特点
原型法可以使系统开发的周期缩短、成本和风险降低、速度加快,获得较高的综合开发效益。
原型法是以用户为中心来开发系统的,用户参与的程度大大提高,开发的系统符合用户的需求,因而增加了用户的满意度,提高了系统开发的成功率。
由于用户参与了系统开发的全过程,对系统的功能和结构容易理解和接受,有利于系统的移交,有利于系统的运行与维护。
原型法的不足之处
开发的环境要求高。
管理水平要求高。
由以上的分析可以看出,原型法的优点主要在于能更有效地确认用户需求。从直观上来看,原型法适用于那些需求不明确的系统开发。事实上,对于分析层面难度大、技术层面难度不大的系统,适合于原型法开发。
从严格意义上来说,目前的原型法不是一种独立的系统开发方法,而只是一种开发思想,它只支持在系统开发早期阶段快速生成系统的原型,没有规定在原型构建过程中必须使用哪种方法。因此,它不是完整意义上的方法论体系。这就注定了原型法必须与其他信息系统开发方法结合使用。
易混淆点:严格定义法和原型法
面向服务的方法
以粗粒度、松散耦合的系统功能为核心,强调系统功能的标准化和构件化,加强了系统的灵活性、可复用性和可演化性。
面向服务方法的三个抽象级别:
操作:位于最底层,对标函数方法这个层次。
操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象(OO)的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。操作位于最底层。
服务:代表操作的逻辑分组。
例如,如果我们将CustomerProfiling视为服务,则按照电话号码查找客户、按照名称和邮政编码列出顾客和 保存新客户的数据就代表相关的操作。
业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。业务流程的例子有:接纳新员工、出售产品或服务和完成订单。
面向服务(Service-Oriented,SO)的方法:进一步将接口的定义与实现进行解耦,则催生了服务和面向服务(Service-Oriented,SO)的开发方法。
从应用的角度来看,组织内部、组织之间各种应用系统的互相通信和互操作性直接影响着组织对信息的掌握程度和处理速度。如何使信息系统快速响应需求与环境变化,提高系统可复用性、信息资源共享和系统之间的互操作性,成为影响信息化建设效率的关键问题,而SO的思维方式恰好满足了这种需求。
Jackson方法:面向数据结构的开发方法,适合于小规模的项目。
敏捷开发
针对中小型项目,主要是为了给程序员减负,去掉一些不必要的会议和文档。指代一组模型(极限编程、自适应开发、水晶方法……),这些模型都具有相同的原则和价值观,具体如下图(要求对该图眼熟,并掌握重要概念):
开发宣言:个体和交互 胜过 过程和工具、可以工作的软件 胜过 而面俱到的文档、客户合作 胜过 合同谈判、响应变化 胜过 遵循计划。
重要概念介绍
结对编程:一个程序员开发,另一个程序在一旁观察审查代码,能够有效的提高代码质量,在开发同时对代码进行初步审查,共同对代码负责。
自适应开发:强调开发方法的适应性(Adaptive)。不象其他方法那样有很多具体的实践做法,它更侧重为软件的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
自适应软件开发(ASD方法)的核心是三个非线性的,重叠的开发阶段:猜测、合作、学习。
水晶方法:每一个不同的项目都需要一套不同的策略、约定和方法论
水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论。
特性驱动开发:是一套针对中小型软件开发项目的开发模式。是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。
极限编程XP:核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件开始初期做出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。
极限编程XP是一种轻量级的开发方法,它提出了四大价值观:沟通、简单、反馈、勇气。五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。十二个最佳实践:计划游戏、隐喻、小型发布、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准。
并列争球法SCRUM:是一种迭代的增量化过程,把每段时间(30天)一次的迭代称为一个"冲刺",并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
并列争球法的核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件。
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。常见的敏捷开发方法有极限编程法、水晶法、并列争球法和自适应软件开发方法。
开放式源码,这里提到的开放式源码指的是开放源码界所用的一种运作方式。开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广,这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。开放源码的一个突出特点就是查错排障(debug)的高度并行性,任何人发现了错误都可将改正源码的"补丁"文件发给维护者。然后由维护者将这些“补丁”或是新增的代码并入源码库。
Coad 的功用驱动开发方法(FDD-Feature Driven Development)
FDD是由Jeff De Luca和大师Peter Coad提出来的。像其他方法一样,它致力于短时的迭代阶段和可见可用的功能。在FDD中,一个迭代周期一般是两周。
在FDD中,编程开发人员分成两类:首席程序员和"类"程序员(class owner)。首席程序员是最富有经验的开发人员,他们是项目的协调者、设计者和指导者,而“类”程序员则主要做源码编写。
快速应用开发RAD
概念:RAD是瀑布模型的一个高速变种,适用比传统生命周期快得多的开发方法,它强调极短的开发周期,通常适用基于构件的开发方法获得快速开发。
过程:业务建模,数据建模,过程建模,应用生成,测试与交付
适用性:RAD对模块化要求比较高,如果某项功能不能被模块化,则其构件就会出问题;如果高性能是一个指标,且必须通过调整结构使其适应系统构件才能获得,则RAD也有可能不能奏效;RAD要求开发者和客户必须在很短的时间完成一系列的需求分析,任何一方配合不当都会导致失败;RAD只能用于管理信息系统的开发,不适合技术风险很高的情况。
统一过程(在软考中UP、RUP都指统一过程)
典型特点是用例驱动、以架构为中心、迭代和增量。 统一过程把一个项目分为四个不同的阶段:
构思阶段(初始阶段):包括用户沟通和计划活动两个方面,强调定义和细化用例,并将其作为主要模型。
(1)项目蓝图文档(核心需求,关键特性,主要约束)
(2)用例模型
(3)项目计划
细化阶段:包括用户沟通和建模活动,重点是创建分析和设计模型,强调类的定义和体系结构的表示。
(1)完成架构设计
(2)淘汰高风险元素
构建阶段:将设计转化为实现,并进行集成和测试。
(1)UML模型
(2)测试用例
移交阶段:将产品发布给用户进行测试评价,并收集用户的意见,之后再次进行迭代修改产品使之完善
(1)可运行的软件产品
(2)用户手册
(3)用户支持计划
提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。
3个显著特点:用例驱动、以架构为中心、迭代和增量。
4个流程:初始阶段、细化阶段、构建阶段和交付阶段。每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经达到。
适用:一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同性能水平和不同的项目规模。
4软件产品线
软件产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求。软件产品线是一个十分适合专业的开发组织的软件开发方法,能有效地提高软件生产率和质量,缩短开发时间,降低总开发成本。
核心资源:包括所有产品所共用的软件架构,通用的构件、文档等。
产品集合:产品线中的各种产品。
产品线的建立方式
5逆向工程⭐⭐
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。
逆向工程的四个级别:
实现级:包括程序的抽象语法树、符号表、过程的设计表示。
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如E-R模型
其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高。
逆向工程相关的易混淆概念
(1)重构是指在同一抽象级别上转换系统描述形式。
(2)设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)再工程是指在逆向工程所获得信息的基础上,修改或重构已有的系统,产生系统的一个新版本。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来重构现有系统,以改进它的综合质量。在利用再工程重构现有系统的同时,一般会增加新的需求,包括增加新的功能和改善系统的性能。
(4)正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
软件系统工具通常可以按软件过程活动分为
软件开发工具
需求分析工具
设计工具
编码与排错工具
软件维护工具
版本控制工具
文档分析工具
开发信息库工具
逆向工程工具
再工程工具
软件管理和软件支持工具
项目管理工具
配置管理工具
软件评价工具
软件开发工具的评价和选择
易混淆点:模块组装方式
(1)自顶向下的增殖方式:优点:在测试过程中较早地验证了主要的控制和判断点;功能可行性较早地得到证实,还能增强开发者和用户成功的信心。缺点:导致过多的回归测试;增加建桩槽块的复杂度,导致增加附加测试
(2)自底向上的增殖方式:优点:可以把容易出问题的部分在早期解决;缺点:对主要的控制直到最后才接触到;可以实施多个模块的并行测试,提高测试效率。
系统规划
1概述
系统规划步骤⭐
(1)对现有系统进行初步调查。根据企业战略和发展目标,从类似企业和本企业内部收集各种信息,站在管理层的高度观察企业的现状,分析现有系统的运行状况。
(2)分析和确定系统目标。系统目标应包括服务的质量和范围、政策、组织和人员等,它不仅包括信息系统的目标,还要反映整个企业的目标。
(3)分析子系统的组成和基本功能。自顶向下对系统进行划分,并且详细说明各个子系统应该实现的功能。
(4)拟定系统的实施方案。可以对子系统的优先级进行设定,以便确定子系统的开发顺序。
(5)进行系统的可行性研究,编写可行性研究报告,召开可行性论证会。
(6)制订系统建设方案。对可行性研究报告中提出的各项技术指标进行分析、比较,落实各项假设的前提条件,制订【系统建设方案】,并根据该方案及其实施计划编写成【系统设计任务书】。系统设计任务书经上级主管部门批准后,正式作为系统建设的依据。
项目机会选择
1. 立项目标和动机
1. 进行基础研究
2. 进行应用研发
3. 提供技术服务
4. 产品的使用者
2. 立项价值判断
3. 项目选择和确定
1. 选择有核心价值的项目
2. 评估所选择的项目
3. 项目优先级排序
4. 评估项目的多种实施方式
5. 平衡地选择合适的方案
4. 初步调查
目标:掌握用户的概况,从整体上了解企业信息系统建设的现状,对用户提出的各种问题和初始需求进行识别,明确系统的初步目标,为可行性研究提供工作基础
方式:最佳方式是与企业高层管理人员座谈,通过座谈了解企业高层对信息系统所设定的目标和系统边界,计划的资金投入和对工期的要求
内容:初步需求分析,企业基本状况,管理方式和基础数据管理状况,现有系统状况
5. 可行性分析
可行性是指在企业当前的条件下,是否有必要建设新系统,以及建设新系统的工作是否具备必要的条件。也就是说,可行性包括必要性和可能性。
软件系统的可行性分析包括经济可行性、技术可行性、法律可行性和用户使用可行性,分别从项目建设的经效益、技术方案、制度因素和用户使用等四个方面对系统建设的必要性和可能性进行评估。
可行性分类
1、经济可行性:成本收益分析,包括建设成本、运行成本和项目建设后可能的经济收益。
2、技术可行性:技术风险分析,现有的技术能否支持系统目标的实现,现有资源(员工,技术积累,构件库,软硬件条件)是否足以支持项目的实施。
技术可行性研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。
3、法律可行性(社会可行性):不能与国家法律或政策相抵触。
法律可行性需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
4、用户使用可行性:执行可行性,从信息系统用户的角度评估系统的可行性。
用户使用可行性是从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等,可以分为管理可行性(从企业管理上分析系统建设可行性)和运行可行性(分析和测定信息系统在确定环境中能够有效工作,并被用户方便使用的程度和能力)。
5、管理可行性:系统与现有管理机制的一致性,改革的可能性。
6、运行可行性:用户方便使用的程度。
可行性研究的步骤
(1)复查系统目标和规模
(2)分析现有系统
(3)导出新系统的高层逻辑模型
(4)用户复核
(5)提出并评价解决方案
(6)确定最终推荐的解决方案
(7)草拟开发计划
(8)编制和提交可行性研究报告
可行性研究报告的内容
引言、引用文件、可行性研究的前提、可选的方案、所建议的系统、经济技术法律用户使用可行性、其他与项目有关的问题、注解、附录
2可行性分析
可行性研究分类⭐⭐⭐
经济可行性:成本收益分析,包括建设/运行成本和项目建设后可能的经济收益。
技术可行性:技术风险分析,现有的技术能否支持系统目标的实现,现有资源(员工,技术积累,构件库,软硬件条件)是否足以支持项目的实施。
法律可行性(社会可行性):不能与国家法律或政策相抵触。
用户使用可行性:执行可行性,从信息系统用户的角度评估系统的可行性。
管理可行性:系统与现有管理机制的一致性,改革的可能性。
运行可行性:用户方便使用的程度。
可行性是指在企业当前的条件下,是否有必要建设新系统,以及建设新系统的工作是否具备必要的条件。也就是说,可行性包括必要性和可能性。步骤如下:
1、复查系统目标和规模
2、分析现有系统
3、导出新系统的高层逻辑模型
4、用户复核
5、提出并评价解决方案
6、确定最终推荐的解决方案
7、草拟开发计划
8、编制和提交可行性分析报告
在信息系统建设项目中,可行性研究通常从经济可行性、技术可行性、法律可行性和用户使用可行性四个方面来进行分析,其中经济可行性通常被认为是项目的底线。
经济可行性
经济可行性也称为投资收益分析或成本效益分析,主要评估项目的建设成本、运行成本和项目建成后可能的经济收益。多数项目只有建设成本能控制在企业可接受的预算内的时候,项目才有可能被批准执行。而经济收益的考虑则非常广泛,可以分为直接收益和间接收益、有形收益和无形收益,还可以分为一次性收益和非一次性收益、可定量的收益和不可定量的收益等。
要注意的是,在系统开发初期,由于用户需求和候选系统方案还没有确定,成本不可能得到准确的估算。因此,此时的经济可行性分析只能大致估算系统的成本和收益,判断信息系统的建设是否值得。
技术可行性
技术可行性也称为技术风险分析,研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。技术可行性主要通过考虑以下问题来进行论证:
(1)技术:现有的技术能力和信息技术的发展现状是否足以支持系统目标的实现。
(2)资源:现有的资源(例如,掌握技术的员工、企业的技术积累、构件库、软硬件条件等)是否足以支持项目的实施。
(3)目标:由于在可行性研究阶段,项目的目标是比较模糊的,因此技术可行性最好与项目功能、性能和约束的定义同时进行。在可行性研究阶段,调整项目目标和选择可行的技术体系都是可以的,而一旦项目进入开发阶段,任何调整都意味着更多的开销。
需要特别指出的是,技术可行性绝不仅仅是论证在技术手段上是否可实现,实际上包含了在当前资源条件下的技术可行性。
法律可行性
法律可行性也称为社会可行性,具有比较广泛的内容,它需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
用户使用可行性
用户使用可行性也称为执行可行性,是从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等,可以细分为管理可行性和运行可行性。
(1)管理可行性。管理可行性是指从企业管理上分析系统建设可行性。主管领导不支持的项目一般会失败,中高层管理人员的抵触情绪很大,就有必要等一等,先积极做好思想工作,创造条件。另外,还要考虑管理方法是否科学,相应的管理制度改革的时机是否成熟,规章制度是否齐全等。
(2)运行可行性。运行可行性也称为操作可行性,是指分析和测定信息系统在确定环境中能够有效工作,并被用户方便使用的程度和能力。例如,ERP系统建成后的数据采集和数据质量问题,企业工作人员没有足够的IT技能等。
3成本效益分析⭐⭐⭐
3.1 基本概念
信息系统建设项目的成本有多种分类方法,其中常见的两种分类方法是按照投资时间分类和按照成本性态分类。
按照投资时间分类,可以分为基础建设投资、其他一次性投资和非一次性投资三大类。
(1)基础建设投资。例如,房屋和设施、办公设备、平台软件、必须的工具软件等购置成本。基础建设投资既可以是一次性投资,也可以是分期付款。
(2)其他一次性投资。例如,研究咨询成本、调研费、管理成本、培训费、差旅费等,以及其他一次性杂费。
(3)其他非一次性投资。主要是指系统的运行与维护成本。例如,设备租金和定期维护成本、定期消耗品支出、通信费、人员工资与奖金、房屋租金、公共设施维护等,以及其他经常性的支出项目。
成本分类
按照成本性态分类
固定成本
是指其总额在一定期间和一定业务量范围内,不受业务量变动的影响而保持固定不变的成本。例如,管理人员的工资、办公费、固定资产折旧费、员工培训费、广告费、技术开发经费等
不随产量变化
变动成本
也称为可变成本,是指在一定时期和一定业务量范围内其总额随着业务量的变动而成正比例变动的成本。例如,直接材料费、产品包装费、外包费用、开发奖金等
随产量变化
混合成本
就是混合了固定成本和变动成本的性质的成本。例如,水电费、电话费、质量保证人员的工资、设备动力费等。这些成本通常有一个基数,超过这个基数就会随业务量的增大而增大
其他成本分类
直接成本:直接投入在项目上。项目组人员工资,材料费用。
间接成本:分摊到项目上。水电费、员工培训费。
沉没成本:已经投入到项目中,无法挽回的成本,不需要再去考虑。
收益分类
系统的收益可以分为有形收益和无形收益。
有形收益也称为经济收益,可以用货币的时间价值、投资回收期、投资回收率等指标进行度量。有形收益又可分为一次性经济收益和非一次性经济收益。
无形收益也称为不可定量的收益,主要是从性质上、心理上进行衡量,很难直接进行量上的比较。
3.2 计算问题
盈亏平衡点
盈亏临界分析
销售额=固定成本+可变成本+税费+利润(正常情况下)
销售额=固定成本+可变成本+税费(盈亏平衡时)
利润=销售额-成本=销售额-(固定成本+可变成本)=0
当利润>0,即公司挣钱,当利润<0,即公司亏本,当利润=0 时,就是盈亏平衡点,此时不亏不赚,公式如下:
盈亏平衡点销售额=总固定成本+总可变成本
=总固定成本+【可变成本占销售额的比例*盈亏平衡点销售额】
注意:可变成本与销售收入(销量)成正比,固定成本一直不变。
净现值计算
静态收益计算方式:不考虑金钱的时间价值,只看项目周期内投入和产出的绝对数字。
动态收益计算方式
考虑金钱具有时间价值,现在的钱比未来值钱,有以下相关概念和公式:
现值
设每年折现率为i,在n年后价值为F的东西,现在的价值为:
其中1/(1+i)"称为折现系数(折现因子)或贴现系数(贴现因子)。
净现值NPV
净现值(NPV):是指项目在生命周期内各年的净现金流量按照一定的、相同的折现率折现到初时的现值之和。
公式为:
其中(Cl-CO),为第t年的净现金流量,Cl为现金流入,CO为现金流出,i为折现率。项目周期内每一年都这样计算再累加,得出总的NPV,就是考虑了时间价值的净利润, NPV有助于公司判断项目是否盈利。
净现值率NPVR
净现值率(NPVR):作为净现值的辅助指标考查资金的利用效率。净现值率是项目净现值与投资总额现值P之比,是一种效率型指标,其经济含义是单位投资现值所能带来的净现值。
公式为:
分子是NPV,分母是原始投资总额,
其中It为第t年的投资额。因为P>0,对于单一方案评价而言,若NPV≥0,则NPVR≥0;若NPV<0,则NPVR<0。因此,净现值与净现值率是等效的评价指标。
NPVR有助于公司选择投入小,产出高的项目。
投资回收期
投资回收期是指投资回收的期限。
1、静态投资回收期(不考虑货币的时间价值因素)
不考虑金钱的时间价值,只看项目周期内绝对投入和产出,需要多长时间才能收回所有的投入成本
如果投资在建设期m年内分期投入,t年的投资为Pt,t年的净现金收入为(Cl-CO),则能够使下面公式成立的T即为静态投资回收期。
2、动态投资回收期(考虑资金的时间价值因素)
使用净现值做分析,需要多长时间能够收回所有投入成本(净现值)
如果考虑资金的时间价值,则动态投资回收期T的计算公式,应满足
计算动态投资回收期的实用公式为:
T=累计折现值开始出现正值的年份数-1+上年累计折现值/当年折现值
公式
静态投资回收期=累计净现金流量开始出现正值的年份数-1+(之前累计总成本-之前累计总收益)/当年收益-当年成本)。
动态投资回收期=累计折现值开始出现正值的年份数-1+(之前总成本折现值-之前总收益折现值)/(当年收益折现值-当年成本折现值)。
投资回收率=1/投资回收期*100%。
投资收益率=投资回报率=投资收益/投资总额*100%
年均投资收益率=运营期年均净收益/投资总额*100%
问题分析阶段的四项主要任务
1. 研究问题领域
2. 分析问题和机会
3. 制定系统改进目标
4. 修改项目计划
系统分析及需求工程
1需求工程概述⭐
软件需求:是指用户对系统在功能、行为、性能、设计约束等方面的期望。
是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明
分为需求开发和需求管理两大过程,如下所示:
【需求开发活动】:需求获取、需求分析、需求定义、需求验证。
【需求管理活动】:变更控制、版本控制、需求跟踪、需求状态跟踪。
需求分类⭐⭐⭐
业务需求:反映企业或客户对系统高层次的目标要求,通常来自项目投资人、客户、市场营销部门或产品策划部门。通过业务需求可以确定项目视图和范围。
用户需求:描述的是用户的具体目标,或用户要求系统必须能完成的任务。即描述了用户能使用系统来做什么。通常采取用户访谈和问卷调查等方式,对用户使用的场景进行整理,从而建立用户需求。
系统需求:从系统的角度来说明软件的需求,包括功能需求、非功能需求和设计约束等。
1)功能需求:也称为行为需求,规定了开发人员必须在系统中实现的软件功能,用户利用这些功能来完成任务,满足业务需要。
2)非功能需求:指系统必须具备的属性或品质,又可以细分为软件质量属性(如可维护性、可靠性、效率等)和其他非功能需求。
3)设计约束:也称为限制条件或补充规约,通常是对系统的一些约束说明,例如必须采用国有自主知识产权的数据库系统,必须运行在UNIX操作系统之下等。
质量功能部署
质量功能部署(QFD)是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD将软件需求分为三类,分别是常规需求、期望需求和意外需求。
(1)常规需求(基本需求)。用户认为系统应该做到的功能或性能,实现越多用户会越满意。
(2)期望需求。用户想当然认为系统应具备的功能或性能,但并不能正确描述自己想要得到的这些功能或性能需求。如果期望需求没有得到实现,会让用户感到不满意。
(3)意外需求。意外需求也称为兴奋需求,是用户要求范围外的功能或性能(但通常是软件开发人员很乐意赋予系统的技术特性),实现这些需求用户会更高兴,但不实现也不影响其购买的决策。
PIECES框架
是系统非功能性需求分类的技术。
性能(Preformance):性能用于描述企业业当前的运行效率,可以分析当前业务的处理速度。
信息(Information):信息和数据指标用于描述业务数据的输入、输出以及处理方面存在的各种问题。
经济(Economics):经济指标主要是从成本和收益的角度分析企业当前存在的问题。
控制(Control):提高信息系统的安全和控制水平。
效率(Efficiency):提高企业的人、财、物等的使用效率。
服务(Service):提高企业对客户、供应商、合作伙伴、顾客等的服务质量。
2需求获取方法⭐⭐⭐
是一个确定和理解不同的项目干系人的需求和约束的过程。常见的需求获取法包括:
(1)用户访谈:1对1-3,有代表性的用户。用户访谈是最基本的一种需求获取手段,其形式包括结构化和非结构化两种。用户访谈是通过1对1(或1对2,1对3)的形式与用户面对面进行沟通,以获取用户需求。用户访谈具有良好的灵活性,有较宽广的应用范围。但是,也存在着许多困难,例如,用户经常较忙,难以安排时间,面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要系统分析师具有足够的领域知识等。另外,在访谈时,还可能会遇到一些对于企业来说比较机密和敏感的话题。因此,这看似简单的技术,也需要系统分析师具有丰富的经验和较强的沟通能力。
(2)问卷调查:用户多,无法——访谈。与用户访谈相比,问卷调查可以在短时间内,以低廉的代价从大量的回答中收集数据;问卷调查允许回答者匿名填写,大多数用户可能会提供真实信息;问卷调查的结果比较好整理和统计。问卷调查最大的不足就是缺乏灵活性。
(3)现场观察:针对较为复杂的流程和操作。想获取系统某些较为复杂的流程和操作过程,则现场观摩方法比较合适。对于一些较为复杂的流程和操作而言,是比较难以用语言和文字进行表达的,对于这种情况,可以采用到客户的工作现场,一边观察,一边听客户讲解,从而更真观的了解客户需求。
(4)联合需求计划(JRP):高度组织的群体会议,各方参与,成本较高。为了提高需求获取的效率,越来越多的企业倾向于使用小组工作会议来代替大量独立的访谈。联合需求计划(Joint Requirement Planning,JRP)是一个通过高度组织的群体会议来分析企业内的问题并获取需求的过程,它是联合应用开发(Joint Application Development,JAD)的一部分。
(5)情节串联板:一系列图片,通过这些图片来讲故事。
(6)收集资料:把与系统有关的、对系统开发有益的信息收集起来。
(7)参加业务实践:有效地发现问题的本质和寻找解决问题的办法。
(8)阅读历史文档:对收集数据性的信息较为有用。
(9)抽样调查:降低成本。采样是指从种群中系统地选出有代表性的样本集的过程,通过认真研究所选出的样本集,可以从整体上揭示种群的有用信息。对于信息系统的开发而言,现有系统的文档(文件)就是采样种群。当开始对一个系统做需求分析时,查看现有系统的文档是对系统有初步了解的最好方法,但是,系统分析师应该查看哪些类型的文档,当文档的数据庞大,无法——研究时,就需要使用采样技术选出有代表性的数据。抽样能够提高需求获取效率,但抽样往往是由系统分析师来抽的,所以会受到他的主观因素影响。
样本大小=a*(可信度因子/错误率)^2
注: a一般取0.25
需求记录技术:任务卡片、场景说明、用户故事、Volere白卡。
有三种常见的基于团队的方法可以鼓励系统用户积极参与各种开发任务。
1)联合应用开发是一种流行的实况调查技术,将用户作为积极参与者带入开发流程。这种方法的最终产品是需求模型。
2)快速应用开发是一种基于团队的技术,可加速信息系统开发并生成功能正常的信息系统。这种方法是由多个阶段组成的。
需求计划阶段结合了SDLC的系统规划和系统分析阶段的元素。 用户,管理人员和IT员工讨论并商定业务需求、项目范围、约束和系统要求。
在用户设计阶段,用户与系统分析员进行交互,并开发代表所有系统过程,输出和输入的模型和原型。
3)敏捷方法试图通过构建一系列原型并不断调整它们以满足用户需求来逐步开发系统。
3需求分析
一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性,因此,需要分析人员把杂乱无章的用户要求和期望转化为用户需求,这就是需求分析的工作。
需求分析的任务
(1)绘制系统上下文范围关系图
(2)创建用户界面原型
(3)分析需求的可行性
(4)确定需求的优先级
(5)为需求建立模型
(6)创建数据字典
(7)使用QFD(质量功能部署)
需求分析方法的对比
SA 方法关注于功能的分层和分解,这非常符合人们自上而下、逐步分解问题直到可解决的自然思考方式。SA 方法本身隐含着几个基本假设,即问题域是可定义的、问题域是有限的、通过有限的步骤总可以将复杂问题分解到可解决的程度。
00A 方法则遵循完全不同的思维方式,它基于抽象、信息隐藏、功能独立和模块化这些基本理念对系统进行分析。00A 方法首先对问题域的事物的“外在表象”进行观测,然后在逻辑世界中模拟出一个对应的逻辑对象,"断定"该对象和现实事物是一致的。随后,观测到的对象被记录入对象集合,观测到的行为和表象被记录入对象关系模型和对象行为模型。
PDOA 的特点是重新将重点定位在问题域和需求上,通过对问题域的分类,向系统分析师提供具体问题的相关指南。并且它将规格说明作为另外的任务处理,它的成果只是一份问题域的全面描述和一份需求列表而已。PDOA 丰富和完善了SA 和 00A 方法。
需求分析方法-PDOA方法
面向问题域的分析,更多的强调描述,而少强调建模,包括:
(1)关注问题域。用一个文档对含有的问题域进行相关的描述,并列出需要在该域中求解的问题列表,也就是需求列表。只有这个文档是在分析时产生的。
(2)关注解系统(即系统实现)的待求行为。用一个文档对了解系统的待求行为进行描述。该文档将在需求定义阶段完成。
在PDOA 方法中,对整个过程有着一个清晰的定义:
(1)收集基本的信息并开发问题框架,以建立问题域的类型。
(2)在问题框架类型的指导下,进一步收集详细信息,并给出一个问题域相关特性的描述。
(3)基于以上两点,收集并用文档说明新系统的需求。
从上面的描述中可以看出,问题框架是PDOA 的核心元素,是将问题域分为一系列相互关联的子域,而一个子域可以是那些可能算是精选出来的问题域的一部分。
3.1 结构化需求分析 SA
自顶向下,逐步分解,是面向数据的,强调分析对象的数据流:
功能模型(数据流图)
行为模型(状态转换图)
数据模型(E-R图)
数据字典(数据元素、数据结构、数据流、数据存储、加工逻辑、外部实体)
3.2 SA-数据流图和数据字典
结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
数据流图 DFD
基本图形元素:外部实体、加工、数据存储、数据流。
1)数据流:由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向可以有以下几种:从一个加工流向另一个加工;从加工流向数据存储(写);从数据存储流向加工(读);从外部实体流向加工(输入);从加工流向外部实体(输出)。
2)加工:描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。数据流图中常见的三种错误如图所示:
加工3.1.2有输入但是没有输出,称之为"黑洞"。
加工3.1.3有输出但没有输入。称之为"奇迹"。
加工 3.1.1 中输入不足以产生输出,我们称之为"灰洞"。这有几种可能的原因:一个错误的命名过程;错误命名的输入或输出;不完全的事实。灰洞是最常见的错误,也是最使人为难的错误。一旦数据流图交给了程序员,到一个加工的输入数据流必须足以产生输出数据流。
3)数据存储:用来存储数据。在软件系统中还常常要把某些信息保存下来以供以后使用。
4)外部实体(外部主体):是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。
DFD的主要作用如下
(1)DFD是理解和表达用户需求的工具,是需求分析的手段。
(2)DFD概括地描述了系统的内部逻辑过程,是需求分析结果的表达工具,也是系统设计的重要参考资料,是系统设计的起点
(3)DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
分层数据流图:
数据字典 DD
数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。
数据字典有以下4 类条目:数据流、数据项、数据存储和基本加工。
加工逻辑也称为"小说明"。常用的加工逻辑描述方法有结构化语言、判定表和判定树3种。
3.3 SA-状态转换图 STD
FAST方法系统技术应用框架
阶段划分:
(1)初始研究阶段:
列出问题和机会
协商项目的初步范围
评估项目价值
计划项目
(2)问题分析阶段:
研究问题领域
分析问题和机会
分析业务过程
制定系统改进目标
(3)需求分析阶段:
定义需求
分析功能需求
跟踪和完善需求
排列需求的优先次序
(4)决策分析阶段:
确定候选方案
分析候选方案
比较候选方案
推荐一个方案
面向对象需求分析00A ⭐⭐⭐⭐⭐
面向对象的基本概念
(1)对象:由数据及其操作所构成的封装体,是系统中用来描述客观事务的一个实体,是构成系统的一个基本单位。一个对象通常可以由对象名、属性和方法3个部分组成。
对象:属性(数据)+方法(操作)+对象ID
(2)类:现实世界中实体的形式化描述,类将该实体的属性(数据)和操作(函数)封装在一起。对象是类的实例,类是对象的模板。
类(实体类/控制类/边界类)
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。
实体类的对象表示现实世界中真实的实体,如人、物等。
控制类是用于控制用例工作的类,一般是由动宾结构的短语("动词+名词"或"名词+动词”)转化来的名词,例如,用例“身份验证”可以对应于一个控制类“身份验证器”,它提供了与身份验证相关的所有操作。
控制类的对象用来控制活动流,充当协调者。
边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。
接口类(边界类)的对象为用户提供一种与系统合作交互的方式,分为人和系统两大类,其中人的接口可以是显示屏、窗口、W/eb 窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口涉及到把数据发送到其他系统,或者从其他系统接收数据。
类的三要素:类名、属性、方法
(3)抽象:通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相关的特性,抛弃不相关的特性。
(4)封装:是一种信息隐蔽技术,将相关的概念组成一个单元模块,并通过一个名称来引用。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。
封装:隐藏对象的属性和实现细节,仅对外公开接口
(5)继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继承另外一类对象的特征,又可分为单继承和多继承。
继承与泛化:复用机制
(6)多态:不同的对象收到同一个消息时产生完全不同的结果。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持,将通用消息放在抽象层,具体不同的功能实现放在低层。
多态:不同对象收到同样的消息产生不同的结果
(7)接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。
接口:一种特殊的类,他只有方法定义没有实现
(8)消息:体现对象间的交互,通过它向目标对象发送操作请求。
消息和消息通信:消息是异步通信的
(9)覆盖:子类在原有父类接口的基础上,用适合于自己要求的实现去置换父类中的相应实现,即在子类中重定义一个与父类同名同参的方法。
(10)函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数。
重载:一个类可以有多个同名而参数类型不同的方法
(11)绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
面向对象的分析:是为了确定问题域,理解问题。包含五个活动;认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。
面向对象需求建模:
UML-视图
UML是统一建模语言,和程序设计语言并无关系,在采用UML进行面向对象系统建模时,会用UML中构造型(sterectype)名称为interface来表示接口这一概念(并非具体类),声明对象类所需要的服务,而服务具体如何执行,有实现它的具体类完成。
UML组成
从总体上来看,UML的结构包括构造块、规则和公共机制三个部分。
(1)构造块。UML有三种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。事物是UML的重要组成部分,关系把事物紧密联系在一起,图是多个相互关联的事物的集合。
(2)公共机制。公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制四种。
规格说明是事物语义的细节描述,它是模型真正的核心;
UML为每个事物设置了一个简单的记号,还可以通过修饰来表达更多的信息;
UML包括两组公共分类,分别是类与对象(类表示概念,而对象表示具体的实体)、接口与实现(接口用来定义契约,而实现就是具体的内容);
扩展机制包括约束(扩展了UML构造块的语义,允许增加新的规则或修改现有的规则)、构造型(扩展UML的词汇,用于定义新的构造块)和标记值(扩展了UML构造块的特性,允许创建新的特殊信息来扩展事物的规格说明)。
(3)规则。规则是构造块如何放在一起的规定,包括为构造块命名;给一个名字以特定含义的语境,即范围;怎样使用或看见名字,即可见性;事物如何正确、一致地相互联系,即完整性;运行或模拟动态模型的含义是什么,即执行。
UML 4+1 视图
UML采用4+1视图来描述软件和软件开发过程:
(1)逻辑视图。逻辑视图也称为设计视图,它表示了设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
(2)进程视图。进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构。
(3)实现视图。实现视图对组成基于系统的物理代码的文件和构件进行建模。
(4)部署视图。部署视图把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。
(5)用例视图。用例视图是最基本的需求分析模型。
UML事物分类:
结构事物:最静态的部分,包括:类、接口、协作、用例、活动类、构件和节点。
结构事物:模型的静态部分,如类、接口、用例、构件等;
行为事物:代表时间和空间上的动作,包括:消息、动作次序、连接。
行为事物:模型的动态部分,如交互、活动、状态机;
分组事物:看成是个盒子,如:包、构件。
分组事物:模型的组织部分,如包;
注释事物:UML模型的解释部分。描述、说明和标注模型的元素。
注释事物:模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号。
部分事物 UML图形如下所示:
UML图关系
(1)用例关系包括:包含关系、扩展关系、泛化关系
包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。
(2)类图/对象图关系:
依赖关系:一个事物发生变化影响另一个事物。
依赖:一个事物的语义依赖于另一个事物的语义的变化而变化
泛化关系:特殊/一般关系
泛化:一般/特殊的关系,子类和父类之间的关系
关联关系:描述了一组链,链是对象之间的连接。
关联:是一种结构关系,描述了一组链,链是对象之间的连接。分为组合和聚合,都是部分和整体的关系,其中组合事物之间关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
聚合关系:整体与部分生命周期不同。
组合关系:整体与部分生命周期相同。
实现关系:接口与类之间的关系
实现:一个类元指定了另一个类元保证执行的契约。
关系 UML图形代号如下:
UML图分类
图的分类
静态图/结构图
类图
对象图
构件图
部署图
制品图
包图
组合结构图
行为图
用例图
活动图
状态图
交互图
顺序图/序列图
通讯图/协作图
定时图
交互概览图
(1)类图(class diagram):类图描述一组类、接口、协作和它们之间的关系。
类图:静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系。UML 类图如下:
(2)对象图(object diagram):对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。
对象图:静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。如下:
(3)构件图(component diagram)。构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。【一个封装的类和它的接口】
构件图(组件图):静态图,为系统静态实现视图,展现了一组构件之间的组织和依赖。如下:
(4)部署图(deployment diagram)。部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。【软硬件之间映射】
部署图:静态图,为系统静态部署视图,部署图物理模块的节点分布。它与构件图相关,通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系。如下:
(5)制品图:系统的物理结构。
(6)包图:由模型本身分解而成的组织单元,以及他们之间的依赖关系。
(7)组合结构图
(8)用例图:系统与外部参与者的交互。
用例图:静态图,展现了一组用例、参与者以及它们之间的关系。用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作。如下:
用例图里的关系:包含、扩展、泛化
(9)顺序图(sequence diagram,序列图):顺序图是一种交互图(interaction diagram),它强调对象之间消息发送的顺序,同时显示对象之间的交互。
序列图:即顺序图,动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。有同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示),异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)、返回消息(由从右到左的虚线箭头表示)三种。如下:
上方的对象对应下方箭头上的的成员和方法。
序列图基本元素:对象、生命线、消息
(10)通信图(communication diagram)。协作图。通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。
通信图:动态图,即协作图,强调参加交互的对象的组织。如下:
(11)定时图:强调实际时间。
(12)交互概览图
(13)状态图(state diagram)。状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。状态转换变迁。
状态图:动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。
(14)活动图(activity diagram)。活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程。类似程序流程图,活动图能够支持活动的并行行为。
活动图:动态图,是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。活动的分岔和汇合线是一条水平粗线。牢记下图中并发分岔、并发汇合、监护表达式、分支、流等名词及含义。每个分岔的分支数代表了可同时运行的线程数。活动图中能够并行执行的是在一个分岔粗线下的分支上的活动,如下:
UML图对比
1、活动图与流程图关系
活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现系统的行为,而非处理过程;而流程图着重描述处理过程。
流程图一般都限于顺序进程,而活动图则可以支持并发进程。活动图是面向对象的,而流程图是面向过程的。
流程图和活动图有如下三个主要区别:
(1)流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
(2)流程图只能表达顺序执行过程,活动图则可以表达并发执行过程。
(3)活动图可以有多个结束状态,而流程图只能有一个结束状态。
2、活动图与状态图对比
状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action)。
活动图可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。
两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能
数据流图、活动图、流程图特点
数据流图:
特点:通过系统内数据的流动来描述系统功能的一种方法。强调系统中的数据流动。 包括:数据流,外部实体,加工,数据存储。
适用场景:结构化需求分析,为系统做功能建模。
活动图:
特点:与流程图类似,但可以表现并行执行。
适用场景:面向对象分析与设计建模。
流程图:
特点:能清晰展现业务执行的流程顺序。强调控制流。
适用场景:结构化需求分析与结构化设计,为系统梳理业务流程。
4需求定义
(软件需求规格说明书 SRS):是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少。
需求定义方法
(1)严格定义也称为预先定义,需求的严格定义建立在以下的基本假设之上:所有需求都能够被预先定义。开发人员与用户之间能够准确而清晰地交流。采用图形(或文字)可以充分体现最终系统。
(2)原型方法,迭代的循环型开发方式,需要注意的问题:并非所有的需求都能在系统开发前被准确地说明。项目干系人之间通常都存在交流上的困难,原型提供了克该服困难的一个手段。特点:需要实际的、可供用户参与的系统模型。有合适的系统开发环境。反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。
5需求验证
目的是与用户一起确认需求无误,对需求规格说明书SAS进行评审和测试,包括两个步骤:
需求评审:正式评审和非正式评审。
需求评审内容:
(1)SRS正确地描述了预期的、满足项目干系人需求的系统行为和特征。
(2)SRS中的软件需求是从系统需求、业务规格和其他来源中正确推导而来的。
(3)需求是完整的和高质量的。
(4)需求的表示在所有地方都是一致的。
(5)需求为继续进行系统设计、实现和测试提供了足够的基础。
(6)用例优先级合理度评估。
作用:
1、发现二义性需求;
2、发现不确定性用户未达成共识的需求;
3、发现遗漏的需求;
4、为项目干系人在需求问题上达成共识提供支撑;
5、降低风险;
6、提高软件质量。
需求测试:设计概念测试用例。
需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程。
6需求管理
6.1 定义需求基线
通过了评审的需求说明书就是需求基线,下次如果需要变更需求,就需要按照流程来一步步进行。需求的流程及状态如下图所示:
6.2 需求变更和风险
主要关心需求变更过程中的需求风险管理,带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增加、模棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算。
变更产生的原因:外部环境的变化、需求和设计做的不够完整、新技术的出现、公司机构重组造成业务流程的变化。
变更控制委员会 CCB:也称为配置控制委员会,其任务时对建议的配置项变更做出评价、审批,以及监督已经批准变更的实施。
6.3 需求跟踪
双向跟踪,两个层次,如下图所示:
正向跟踪表示用户原始需求是否都实现了,反向跟踪表示软件实现的是否都是用户要求的,不多不少,可以用原始需求和用例表格(需求跟踪矩阵)来表示:
若原始需求和用例有对应,则在对应栏打对号,若某行都没有对号,表明原始需求未实现,正向跟踪发现问题;若某列都没有对号,表明有多余功能用例,软件实现了多余功能,反向跟踪发现问题。
需求变更管理过程
一般来说,变更控制应该遵循以下的基本流程:
(1)变更申请。应记录变更的提出人、日期、申请变更的内容等信息。
(2)变更评估。对变更的影响范围、严重程度、经济和技术可行性进行系统分析。
(3)变更决策。由CCB决定是否实施变更。
(4)变更实施。由管理者指定的工作人员在受控状态下实施变更。
(5)变更验证。由配置管理人员或受到变更影响的人对变更结果进行评价,确定变更结果和预期是否相符、相关内容是否进行了更新、工作产物是否符合版本管理的要求。
(6)沟通存档。将变更后的内容通知可能会受到影响的人员,并将变更记录汇总归档。如提出的变更在决策时被否决,其初始记录也应予以保存。
系统设计
1处理流程设计
业务流程分析方法
(1)价值链分析法。找出或设计出那些能够使顾客满意,实现顾客价值最大化的业务流程。
(2)客户关系分析法。是把CRM用在业务流程的分析上。CRM的目标是建立真正以客户为导向的组织结构,以最佳的价值定位瞄准最具吸引力的客户,最大化地提高运营效率,建立有效的合作伙伴关系。从 CRM的角度分析业务流程,企业的业务流程应当是以客户与企业的关系,以及客户行为为依据的,而不是传统的按照企业内部管理来实施的。
(3)供应链分析法。是从企业供应链的角度分析企业的业务流程,它源于SCM。供应链是指用一个整体的网络用来传送产品和服务,从原材料开始一直到最终客户(消费者),它凭借一个设计好的信息流、物流和资金流来完成。供应链分析法主要从企业内部供应链和外部供应链两个角度来分析企业的业务流程,分析哪些流程处于供应链的核心环节。
(4)基于 ERP的分析法。ERP的基本思想是将企业的业务流程看作是一个紧密联接的供应链,将供应商和企业内部的采购、生产、销售,以及客户紧密联系起来,对供应链上的所有环节进行有效管理,实现对企业的动态控制和各种资源的集成和优化,从而提升企业基础管理水平,追求企业资源的合理、高效利用。
(5)业务流程重组。通过重新审视企业的价值链,从功能成本的比较分析中,确定企业在哪些环节具有比较优势。在此基础上,以顾客满意为出发点进行价值链的分解与整合,改造原有的业务流程,实现业务流程的最优化。
业务流程建模
标杆瞄准:以行业领先的标杆企业为目标,结合本企业情况分析建模。
IDEF(一系列建模、分析和仿真方法的统称):系统建模那里有总结。
IDEF0:功能建模
IDEF1:信息建模
IDEF1X:数据建模
IDEF4:面向对象设计
IDEF是一系列建模、分析和仿真方法的统称,从IDEF0到IDEF14(包括IDEF1X在内)共有16套方法,每套方法都是通过建模程序来获取某个特定类型的信息。它们分别是IDEF0(功能建模)、IDEF1(信息建模)、IDEF1X(数据建模)、IDEF2(仿真建模设计)、IDEF3(过程描述获取)、IDEF4(面向对象设计)、IDEF5(本体论描述获取)、IDEF6(设计原理获取)、IDEF7(信息系统审计)、IDEF8(用户界面建模)、IDEF9(场景驱动信息系统设计)、IDEF10(实施架构建模)、IDEF11(信息制品建模)、IDEF12(组织建模)、IDEF13(三模式映射设计)和IDEF14(网络规划)。
DEMO(组织动态本质建模法)
Petri网
业务流程建模语言
基于服务的BPM:基于Web服务的思想对业务流程进行建模。
流程表示工具
在处理流程设计过程中,为了更清晰地表达过程规则说明,陆续出现了一些用于表示处理流程的工具,这些工具包括三类:图形工具、表格工具和语言工具。
其中常见的图形工具包括程序流程图、IPO图、盒图、问题分析图、判定树;表格工具包括判定表,语言工具包括过程设计语言等。
程序流程图(Program Flow Diagram,PFD)用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成。
IPO图也是流程描述工具,用来描述构成软件系统的每个模块的输入、输出和数据加工。
N-S 图容易表示嵌套和层次关系,并具有强烈的结构化特征。但是当问题很复杂时,N-S 图可能很大,因此不适合于复杂程序的设计。
问题分析图(PAD)是一种支持结构化程序设计的图形工具。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计入员使用结构化程序设计方法,从而提高程序的质量。
流程设计工具
(1)程序流程图:是表达系统执行过程的描述工具。
着重于表达:数据在系统中传输时所通过的存储介质和工作站,与物理技术密切联系。缺点:不能反映系统结构、模块功能、无法评审是否符合要求。
绘制图的主要依据:信息处理的步骤和内容,每一步骤所涉及的物理过程,各步骤之间的物理和逻辑关系。
(2)IPO图:是一种反映模块的输入、处理和输出的图形化表格。描述了模块的输入输出关系、处理内容、模块的内部数据和模块的调用关系。
(3) HIPO图:分层次自顶向下分解系统,将每个模块的输入、处理和输出关系表示出来就得到了HIPO 图。
(4)盒图
为避免流程图在描述程序逻辑时的随意性与灵活性,美国学者提出了用方框代替传统的 PFD,通常把这种图称为N-S图或盒图,与PFD类似,在N-S图中也包括五种控制结构,分别是顺序型、选择型、WHILE循环型(当型循环)、UNTIL循环型(直到型循环)和多分支选择型,任何一个N-S图都是这五种基本控制结构相互组合与嵌套的结果。
在 N-S 图中,过程的作用域明确;它没有箭头,不能随意转移控制;而且容易表示嵌套关系和层次关系;并具有强烈的结构化特征。但是当问题很复杂时,N-S图可能很大。
(5)问题分析图
问题分析图(Problem AnalysisDiagram,PAD)是继PFD和N-S图之后,又一种描述详细设计的工具,它由日立公司于1979年提出,也是一种支持结构化程序设计的图形工具。PAD也包含五种基本控制结构,并允许递归使用。
(6)过程设计语言PDL
过程设计语言(Process Design Language,PDL)也称为结构化语言或伪代码(pseudo code),它是一种混合语言,采用自然语言的词汇和结构化程序设计语言的语法,用于描述处理过程怎么做,类似于编程语言。过程设计语言用于描述模块中算法和加工逻辑的具体细节,以便在开发人员之间比较精确地进行交流。
(7)判定表
对于具有多个互相联系的条件和可能产生多种结果的问题,用结构化语言描述则显得不够直观和紧凑,这时可以用以清楚、简明为特征的判定表(decision table)来描述。判定表采用表格形式来表达逻辑判断问题,表格分成四个部分,左上部分为条件说明,左下部分为行动说明,右上部分为各种条件的组合说明,右下部分为各条件组合下相应的行动。在表的右上部分中列出所有条件,“T”表示该条件取值为真,"F"表示该条件取值为假,空白表示这个条件无论取何值对动作的选择不产生影响,在判定表右下部分中列出所有的处理动作,“Y”表示执行对应的动作,空白表示不执行该动作;判定表右半部分的每一列实质上是一条规则,规定了与特定条件取值组合相对应的动作。
(8)判定树
判定树(decisiontree)也是用来表示逻辑判断问题的一种常用的图形工具,它用树来表达不同条件下的不同处理流程,比语言、表格的方式更为直观。判定树的左侧(称为树根)为加工名,中间是各种条件,所有的行动都列于最右侧。
业务流程重组BPR
BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就。BPR 设计原则、系统规划和步骤如下图所示:
战略规划:明确企业的战略目标,使得信息系统的战略目标和企业战略目标相同。
业务流程:对企业业务流程进行分析,选出关键的业务流程,对其进行改进。
数据规划:对业务流程所需要用到的数据进行分类,类似于BSP(企业系统规划法),产生不同的数据类。
功能规划:对数据建立CU矩阵,对数据的创建和使用建立一个关系,然后对数据总体建立一个逻辑规划,划分功能模块。
实施规划:制定企业开发目的,项目开发计划。
业务流程管理BPM
BPM是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。
PDCA闭环的管理过程
明确业务流程所欲获取的成果
开发和计划系统的方法,实现以上成果
系统地部署方法,确保全面实施
根据对业务的检查和分析以及持续的学习活动,评估和审查所执行的方法.并进一步提出计划和实施改进措施
BPM与BPR管理思想最根本的不同就在于流程管理并不要求对所有的流程进行再造。构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化的设计
流程管理包含三个层面:规范流程、优化流程和再造流程
2软件架构设计
软件架构的概念
架构设计就是需求分配,即将满足需求的职责分配到组件上。
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
软件架构风格
架构设计的一个核心问题是能否达到架构级的软件复用。
架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
有五种架构风格如下:
数据流风格:批处理序列(一个一个处理,顺序结构)、管道/过滤器(数据进出管道都要经过过滤器处理,分阶段的数据处理,常见于网络数据处理)。
调用/返回风格:主程序/子程序、面向对象风格、层次结构(与上下两层关系密切)。
独立构件风格:进程通信(构件之间是独立的,通过消息通信)、事件系统。
虚拟机风格:解释器(有虚拟机,可以仿真硬件执行过程,实现解释执行,效率较低,可跨平台)、基于规则的系统。
仓库风格:数据库系统、超文本系统、黑板系统(是一个解决方案的数据库,知识源与黑板进行通信,用于没有确定方案的系统)。
两层c/s架构
客户端和服务器都有处理功能,相比较于传统的集中式软件架构,还是有不少优点的,但是现在已经不常用,原因有:开发成本较高、客户端程序设计复杂、信息内容和形式单一、用户界面风格不一、软件移植困难、软件维护和升级困难、新技术不能轻易应用、安全性问题、服务器端压力大难以复用。
三层c/s架构
将处理功能独立出来,表示层和数据层都变得简单。表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。即将两层C/S架构中的数据从服务器中独立出来了。其优点下面四点:
各层在逻辑上保持相对独立,整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;
允许灵活有效的选用相应的平台和硬件系统,具有良好的可升级性和开放性;
各层可以并行开发,各层也可以选择各自最适合的开发语言;
功能层有效的隔离表示层与数据层,为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理和可控制。
三层C/S架构设计的关键在于各层之间的通信效率,要慎重考虑三层间的通信方法、通信频度和数据量,否则即使分配给各层的硬件能力很强,性能也不高。
三层B/S架构
是三层C/S架构的变种,将客户端变为用户客户端上的浏览器,将应用服务器变为网络上的WEB 服务器,又称为0客户端架构,虽然不用开发客户端,但有很多缺点,主要是数据处理能力差:
B/S架构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;
安全性难以控制;
在数据查询等响应速度上,要远远低于C/S架构;
数据提交一般以页面为单位,数据的动态交互性不强,不利于OLTP应用。
3结构化设计⭐⭐⭐
系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。
系统设计方法:结构化设计方法,面向对象设计方法。
系统设计的主要内容:概要设计、详细设计。
概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。
系统设计基本原理
抽象化;
自顶而下,逐步求精;
信息隐蔽;
模块独立(高内聚,低耦合)。
1、功能模块设计的原则
(1)保持模块大小适中:50-100行,最多不超过500行
(2)适宜的系统深度和宽度比例,尽可能减少调用的深度
(3)适度控制模块的扇入扇出:扇出3-4,一般不超过7,扇入越大越好
多扇入,少扇出
(4)单入口,单出口
(5)模块的作用域应该在模块之内
(6)功能应该是可预测的
(7)高内聚低耦合
(8)系统分解有层次
(9)较小的数据冗余
2、模块独立性的度量
(1)聚合:衡量模块内部各元素结合的紧密程度
偶然聚合:模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。
逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。
时间聚合:模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。
过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。
通信聚合:模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。
顺序聚合:模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。
功能聚合:模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都必不可少
内聚程度从低到高如下表所示
(2)耦合:度量不同模块间互相依赖的程度
非直接耦合:两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。
数据耦合:两个模块彼此间通过数据参数交换信息。
标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
控制耦合:两个模块彼此间传递的信息中有控制信息。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
公共耦合:两个模块之间通过一个公共的数据区域传递信息。
内容耦合:一个模块需要涉及到另一个模块的内部信息。
耦合程度从低到高如下表所示
易混淆点:聚合和耦合
(1)聚合:时间聚合和过程聚合
时间聚合:模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。
过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。
(2)耦合:数据耦合和标记耦合
数据耦合:两个模块彼此间通过数据参数交换信息。
标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
(3)模块的四个要素
输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
处理功能:指模块把输入转换成输出所做的工作。
内部数据:指仅供该模块本身引用的数据。
程序代码:指用来实现模块功能的程序。
3、系统结构图
系统结构图(Structure Chart,SC)又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。在系统分析阶段,系统分析师可以采用SA方法获取由DFD、数据字典和加工说明等组成的系统的逻辑模型;在系统设计阶段,系统设计师可根据一些规则,从DFD中导出系统初始的SC。常用的SC主要有变换型、事务型和混合型三种。
SC包括模块、模块之间的调用关系、模块之间的通信和辅助控制符号等四个部分。
4面向对象设计⭐⭐⭐⭐
4.1 面向对象设计基本过程
面向对象的设计:是设计分析模型和实现相应源代码,设计问题域的解决方案,与技术相关。OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成:设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
面向对象的设计原则:
(1)单一责任原则。就一个类而言,应该仅有一个引起它变化的原因。即,当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任。
(2)开放一封闭原则。软件实体(类、模块、函数等)应该是可以扩展的,即开放的;但是不可修改的,即封闭的。
(3)里氏替换原则。子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。
(4)依赖倒置原则。抽象不应该依赖于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
(5)接口分离原则。不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化。
上述(1)~(5)是面向对象方法中的五大原则。除了这五大原则之外,Robert C.Martin提出的面向对象设计原则还包括以下几个。
(6)重用发布等价原则。重用的粒度就是发布的粒度。
(7)共同封闭原则。包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
(8)共同重用原则,一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
(9)无环依赖原则。在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的五环图形。
(10)稳定依赖原则。朝着稳定的方向进行依赖。
(11)稳定抽象原则。包的抽象程度应该和其稳定程度一致。
面向对象的设计原则
单一职责原则:设计目的单一的类
开放-封闭原则:对扩展开放,对修改封闭
李氏(Liskov)替换原则:子类可以替换父类
依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
接口隔离原则:使用多个专门的接口比使用单一的总接口要好
组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解
4.2 设计模式
每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的的设计和体系结构。
层次结构
架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策。
设计模式:主要关注软件系统的设计,与具体的实现语言无关。
惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用一计数就是C++语言中的一种惯用法。
具体设计模式分类
分为三类
创建型模式主要是处理创建对象
工厂、抽象工厂、构建器、原型、单例
结构型模式主要是处理类和对象的组合
适配器、桥接、组合、装饰、外观、享元、代理
行为型模式主要是描述类或者对象的交互行为
职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模版、访问者
总览图如下
设计模式分类
创建型模式与对象的创建有关,抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。
抽象工厂:对扩展开放,对修改关闭
创建型设计模式
工厂
子类决定实例化
动态生产对象
抽象工厂
抽象接口
生产成系列对象
构建器
类和构造分离
复杂对象构造
原型
原型实例,拷贝
克隆对象
单例
唯一实例
单实例
结构型模式处理类或对象的组合,结构型设计模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。
结构型设计模式
适配器
转换,兼容接口
转换接口
桥接
抽象和实现分离
继承树拆分
组合
整体-部分,树形结构
树形目录结构
装饰
附加职责
动态附加职责
外观
对外统一接口
对外统一接口
享元
细粒度,共享
汉字编码
代理
代理控制
快捷方式
行为模式涉及算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。行为型类模式使用继承机制在类间分配行为,这里包括模板类模式和解释器类模式。行为对象模式使用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一对象都无法单独完成的任务。
行为型设计模式
职责链
传递请求、职责、链接
传递职责
命令
日志记录、可撤销
日志记录,可撤销
解释器
解释器,虚拟机
虚拟机的机制
迭代器
顺序访问,不暴露内部
数据集
中介者
不直接引用
不直接引用
备忘录
保存,恢复
游戏存档
观察者
通知、自动更新
一对多依赖,发布订阅,联动
状态
状态变成类
状态变成类
策略
算法替换
多方案切换
模版
框架
框架
访问者
数据和操作分离
数据与操作分离
5人机界面设计
人机界面设计的三大原则:置于用户控制之下、减少用户的记忆负担、保持界面的一致性。
置于用户的控制之下
以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式;
提供灵活的交互;
允许用户交互可以被中断和取消;
当技能级别增加时可以使交互流水化并允许定制交互;
使用户隔离内部技术细节;
设计应允许用户和出现在屏幕上的对象直接交互。
减少用户的记忆负担
减少对短期记忆的要求;
建立有意义的缺省:
定义直觉性的捷径;
界面的视觉布局应该基于真实世界的隐喻;
以不断进展的方式揭示信息。
保持界面的一致性
允许用户将当前任务放入有意义的语境
在应用系列内保持一致性
如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要去改变它。
WEB开发⭐⭐⭐⭐⭐
1、维度
2、负载均衡技术
(1)应用层负载均衡
http重定向。HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。
特点:实现简单,但性能较差。
反向代理服务器。在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache、nginx都可以充当反向代理服务器。
特点:部署简单,但代理服务器可能成为性能的瓶颈。
(2)传输层负载均衡
DNS域名解析负载均衡。DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。
特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知 DNS,而且 DNS 负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
基于NAT的负载均衡。基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。
特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
(3)硬件负载均衡:F5
(4)软件负载均衡:LVS、Nginx、HAproxy
负载均衡算法
(5)静态算法(不考虑动态负载):
轮转算法:轮流将服务请求(任务)调度给不同的节点(即:服务器)。
加权轮转算法:考虑不同节点处理能力的差异。
源地址哈希散列算法:根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。
目标地址哈希散列算法:根据请求目标IP做散列找出对应节点。
随机算法:随机分配,简单,但不可控。
(6)动态算法(考虑动态负载)
最小连接数算法:每个节点处理能力相同的情况下,新请求分配给当前活动请求数量最少的节点。
加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。
加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。
3、有状态和无状态问题
无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的。
4、CDN内容分发网络
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
5、持久化技术
ORM(Object Relational Mapping):对象与关系数据之间的映射。
映射关系表
实现技术对比
6、缓存
(1)MemCache:
Memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcache通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
(2)Redis
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APl。
常见Redis集群切片方式
Redis分布式存储方式
Redis数据分片方案
数据类型
持久化方式
内存淘汰机制
常用的内存淘汰机制包括六种:
volatile-lru:从设置过期时间的数据集中挑选出最近最少使用的数据淘汰。
volatile-ttl: 除了淘汰机制采用LRU,策略基本上与volatile-lru相似,从设置过期时间的数据集中挑选将要过期的数据淘汰,ttl值越大越优先被淘汰.
volatile-random(过期随机):从已设置过期时间的数据集中任意选择数据淘汰.
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰,该策略要淘汰的key面向的是全体key集合,而非过期的key集合。
allkeys-random(全键随机):从数据集中选择任意数据淘汰。
no-enviction:禁止驱逐数据,也就是当内存不足以容纳新入数据时,新写入操作就会报错,请求可以继续进行,线上任务也不能持续进行,采用no-enviction策略可以保证数据不被丢失,这也是系统默认的一种淘汰策略。
Redis常见难题
缓存雪崩:大部分缓存失效->数据库崩溃
解决方案:
使用锁或队列:保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。
为key设置不同的缓存失效时间:在固定的一个缓存时间的基础上+随机一个时间作为缓存失效时间。
二级缓存:设置一个有时间限制的缓存+一个无时间限制的缓存。避免大规模访问数据库。
缓存穿透:查询无数据返回->直接查数据库
解决方案:
如果查询结果为空,直接设置一个默认值存放到缓存,这样第二次到缓冲中获取就有值了。设置一个不超过5分钟的过期时间,以便能正常更新缓存。
设置布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从避免了对底层存储系统的查询压力。
缓存预热
解决方案:
直接写个缓存刷新页面,上线时手工操作。
数据量不大时,可以在项目启动的时候自动进行加载。
定时刷新缓存。
缓存更新
解决方案:
除Redis系统自带的缓存失效策略,常见采用以下两种:
定时清理过期的缓存。
当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。
(3) Squid
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
(4)Redis和Memcache对比
(5)布隆过滤器
布隆过滤器用于快速识别1个元素不在一个集合中。
通过一个长二进制向量和一系列随机映射函数来记录与识别某个数据是否在一个集合中。
缓存与数据库的协作
数据读取:根据key从缓存读取;若缓存中没有,则根据key在数据库中查找;读取到"值"之后,更新缓存。
数据写入:根据key值写数据库;根据key更新缓存。
7、REST
(1)概念
REST(Representational StateTransfer,表述性状态转移)是一种只使用HTTP和XML 进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
(2)REST的5个原则
网络上的所有事物都被抽象为资源。
每个资源对应一个唯一的资源标识。
通过通用的连接件接口对资源进行操作。
对资源的各种操作不会改变资源标识。
所有的操作都是无状态的。
8、Web应用服务器
(1)概念
WEB应用服务器可以理解为两层意思:
WEB服务器:其职能较为单一,就是把浏览器发过来的Request请求,返回Html页面。
应用服务器:进行业务逻辑的处理。
(2)常见服务器
Apache:Web服务器,市场占有率达60%左右。它可以运行在几乎所有的Unix、Windows、Linux系统平台上。
IIS:早期Web服务器,目前小规模站点仍有应用。
Tomcat:开源、运行servlet和JSPWeb应用软件的基于Java的Web应用软件容器。
JBOSS:JBOSS是基于J2EE的开放源代码的应用服务器。一般与Tomcat或Jetty绑定使用。
WebSphere:一种功能完善、开放的Web应用程序服务器,它是基于Java 的应用环境,用于建立、部署和管理Internet和Intranet Web应用程序。
WebLogic:BEA WebLogic Server是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。
Jetty: Jetty 是一个开源的servlet容器,它为基于Java的web容器。
(3)XML与JSON对比
扩展标记语言(Extensible Markup Language,XML)
概念:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
优点:格式统一,符合标准;容易与其他系统进行远程交互,数据共享比较方便。
缺点:XML文件庞大,文件格式复杂,传输占带宽;服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;服务器端和客户端解析XML花费较多的资源和时间。
JSON(JavaScript Object Notation)
概念:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
优点:数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;支持多种语言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等服务器端语言,便于服务器端的解析;因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
缺点:没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用。
9、响应式Web设计
(1)概念
响应式WEB设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。
(2)方法与策略
采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。
10、中台
【业务中台】:提供重用服务,例如学员中心、课程中心之类的开箱即用可重用能力。
【数据中台】:提供数据整合分析能力,帮助企业从数据中学习改进,调整方向。
数据中台必备的4个核心能力:
(1)数据汇聚整合能力
(2)数据提纯加工能力
(3)数据服务可视化
(4)价值变现方面
【技术中台】:提供技术重用组件能力,帮助解决基础技术平台的复用。如:中间件、分布式存储、Al、负载均衡等基础设施。
概念:
中台是一套结合互联网技术和行业特性,将企业核心能力以共享服务形式沉淀,形成"大中台、小前台"的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。中台又可以进一步细分,比如业务中台、数据中台、XX中台。本质上,都是对企业通用能力在不同层面的沉淀,并对外能力开放。
实例:
Supercell:芬兰移动游戏巨头,2015年世界游戏前10占5席,员工仅200多人,因使用中台,具有小团队快速开发能力,后被腾讯86亿美金收购。阿里:2015年参观Supercell,而后推行中台。
业务中台&数据中台:
多个电商渠道使用一个下单服务,一个订单接口同时为多个前台系统提供服务,这是业务中台提供的能力。
多个前台系统,根据一个用户的手机号,获取对应的画像,用户的标签,这是数据中台提供的服务。将多个支付通道,抽象建立成一个支付API,暴露给前台业务系统,这是业务中台提供的能力。通过一个订单编号,来获取可能的商品推荐清单,从而做到交叉销售,这是数据中台提供的服务。
易混淆点:微服务和SOA
易混淆点:架构模式和设计模式和惯用法
架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策
设计模式:主要关注软件系统的设计,与具体的实现语言无关
惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C+语言中的一种惯用法
易混淆点:持久化方式
系统测试与维护
1系统测试⭐⭐⭐
1、测试的目标
测试是为了发现错误而执行程序的过程。
2、软件测试原则
(1)应尽早并不断地进行测试
(2)程序员避免测试自己设计的程序:测试工作应避免由原开发软件的人或小组来承担(单元测试除外)
(3)不仅要包括合理、有效的输入条件,也要包括不合理、失效的输入条件
(4)不仅要确定输入数据,而且要从系统的功能出发确定输出的结果
(5)不仅要检测程序是否做了该做的事,还要检测是否做了不该做的事
(6)修改后应进行回归测试
(7)尚未发现的错误数量与该程序已发现的错误数成正比。
3、基本测试活动
(1)拟定测试计划,制定系统测试计划
在拟定测试计划时,要充分考虑整个项目的开发时间和开发进度以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有:测试的内容、进度安排、测试所需的环境和条件(包括设备、被测项目、人员等)、测试培训安排等。
(2)编制测试大纲
测试大纲是测试的依据。其明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。
(3)设计和生成测试用例
根据测试大纲,设计和生成测试用例。在设计测试用例时,可综合利用前面介绍的测试用例设计技术,产生测试设计说明文档,其内容主要有:被测项目、输入数据、测试过程、预期输出结果等等。
(4)执行系统测试,实施测试
测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。
(5)缺陷管理与改错,生成测试报告
测试完成后要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误。
4、测试阶段划分
(1)单元测试
概念:又称模块测试,是通过对每个最小的软件模块进行测试,对照模块的功能说明,检查各个程序模块是否正确地实现了规定的功能,确保其能正常工作。
测试主体:单元测试由开发人员执行
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试(模块测试,模块功能、性能、接口等)。
(2)集成测试
概念:在单元测试的基础上,需要将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。主要目的是验证组成软件系统的各模块的接口和交换作用。(模块间的接口)
组装时需要考虑的问题:在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失
一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,以致达到不能接受的程度。
模块组装方式
一次性组装方式:其结果:发现有错误,却茫然找不到原因;查错和改错都会遇到困难。
自顶向下的增殖方式:优点:在测试过程中较早地验证了主要的控制和判断点;功能可行性较早地得到证实,还能增强开发者和用户成功的信心。缺点:导致过多的回归测试;增加建桩模块的复杂度,导致增加附加测试
自底向上的增殖方式:优点:可以把容易出问题的部分在早期解决;缺点:对主要部分的控制直到最后才能接触到;可以实施多个模块的并行测试,提高测试效率。
混合增殖方式
完成的标志:成功地执行了测试计划中规定的所有集成测试;修正了所发现的错误(与用户就剩余错误的修改计划达成一致);测试结果通过了专门小组的评审
“冒烟测试”(英文:smoke testing):源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。
(3)系统测试
概念:系统测试真实环境下,验证完整的软件配置项能否和系统正确连接。将软件与整个系统的硬件、外设、支持软件、数据和人员等结合起来,以需求规格说明为依据,在实际运行环境下进行测试。检验其是否有不符合系统说明书的地方。
系统测试过程分为计划与准备、执行、返工与回归测试3个阶段
内容:系统测试一般要完成功能测试、性能测试、恢复测试、安全测试、强度测试以及其他限制条件的测试。
性能测试又可以进一步分类为:
负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试:通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试。
强度测试:在系统资源特别低的情况下考查软件系统运行情况。
并发测试:并发测试也称为容量测试,主要用来确定系统可处理的同时在线的最大用户数。
(4)确认测试
概念:又称合格性测试,用来验证软件与用户需求的一致性。
确认测试包括:内部确认测试、Alpha测试、Beta测试,验收测试。其中Alpha测试和Beta 测试一般是针对产品型的软件,项目中一般不采用。
Alpha测试:是在开发环境下进行的测试,由用户/内部用户模拟实际操作环境下进行的受控测试。
Beta测试:是用户在实际使用环境下进行的测试。
5、静态测试与动态测试
静态测试它就不运行软件测试的程序,而是采用人工检测、计算机分析辅助静态分析的手段来对程序进行检测。静态测试的方法主要有桌前检查、代码走查、代码审查。
动态测试可以分为黑盒测试、白盒测试和灰盒测试。白盒测试也称为结构性测试,黑盒测试也称为功能性测试。灰盒测试是二者的结合。
6、静态测试方法
桌前检查:由程序员检查自己编写的程序。程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析和检验,并补充相关的文档,目的是发现程序中的错误。
代码审查:代码审查是由若干程序员和测试人员组成一个会审小组,通过阅读、讨论和争议,对程序进行静态分析的过程。代码审查的过程可以分为两个步骤:第一步,小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为评审的依据。
代码走查:代码走查与代码审查基本相同,其过程也分为两个步骤:第一步,把材料先发给走查小组每个成员,让他们认真研究程序,然后再开会。第二步,开会的程序与代码会审不同,不是简单地读程序和对照错误检查单进行检查,而是让与会者“充当”计算机。即首先由测试组成员为被测程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论使用。
静态测试都是做的静态分析,静态分析有:
控制流分析:是否存在没有使用的语句/无法达到的语句/调用并不存在的子程序
数据流分析:引用未定义的变量、对以前未使用的变量再次赋值。
接口分析:模块之间接口的一致性、子程序和函数之间的接口一致性、函数形参与实参的数量、顺序、类型的一致性。
表达式分析:括号不配对、数组引用越界、除数为零。
7、动态测试方法
(1)白盒测试(结构测试)
概念:根据内部结构和逻辑来设计测试用例,对程序路径和过程进行测试。主要用于单元测试阶段。
(2)黑盒测试(功能测试)
概念:黑盒测试基于产品功能规格说明书,从用户角度针对产品特定的功能和特性进行验证活动,确认每个功能是否得到完整实现,用户能否正常使用这些功能。主要用于集成测试、确认测试和系统测试阶段。
黑盒测试在不知道系统或组件内部结构的情况下进行,不考虑内部逻辑结构,着眼于程序外部结构,在软件接口处进行测试。
试图发现的错误:功能不正确或遗漏;界面错误;数据库访问错误;性能错误;初始化和终止错误等
方法:等价类划分法;边界值分析法;因果图法;判定表驱动法;正交试验设计法;错误推测法;功能图法。
8、面向对象的测试
算法层(单元测试):包括等价类划分测试、组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试。(方法层次)
类层(模块测试):包括不变式边界测试、模态类测试和非模态类测试
模板层/类树层(集成测试):包括多态服务测试和展平测试
系统层(系统测试)
9、测试自动化
(1)优点:提高测试执行的速度;提高运行效率;保证测试结果的准确性;连续运行测试脚本;模拟现实环境下受约束的情况。
(2)缺点:
不能保证所有测试活动都可以自动完成;不能保证减少人力成本;一般不可以免费获得;不能保证降低测试工作量。
10、验证与确认的区别
验证是指在软件开发周期中的一个给定阶段的产品是否达到在上一阶段确立的需求的过程。
确认是指在软件开发过程结束时对软件进行评价以确定它是否和软件需求相一致的过程。
测试是指通过执行程序来有意识地发现程序中的设计错误和编码错误的过程。测试是验证和确认的手段之一。
1.1 测试基础
测试原则
应尽早并不断的进行测试;
测试工作应该避免由元开发软件的人或小组承担:
在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果;
既包含有效、合理的测试用例,也包含不合理、失效的用例;
检验程序是否做了该做的事,且是否做了不该做的事;
严格按照测试计划进行;
妥善保存测试计划和测试用例;
测试用例可以重复使用或追加测试。
测试类型分为两大类:
动态测试:程序运行时测试,分为
黑盒测试法:功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能。
白盒测试法:结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖。
灰盒测试法:即既有黑盒,也有白盒。
静态测试:程序静止时,即对代码进行人工审查,分为
桌前检查:程序员检查自己编写的程序,在程序编译后,单元测试前。
代码审查:由若干个程序员和测试人员组成评审小组,通过召开程序评审会来进行审查。
代码走查:也是采用开会来对代码进行审查,但并非简单的检查代码,而是由测试人员提供测试用例,让程序员扮演计算机的角色,手动运行测试用例,检查代码逻辑。
测试策略
自底向上:从最底层模块开始测试,需要编写驱动程序,而后开始逐一合并模块,最终完成整个系统的测试。优点是较早的验证了底层模块。
自顶向下:先测试整个系统,需要编写桩程序,而后逐步向下直至最后测试最底层模块。优点是较早的验证了系统的主要控制和判断点。
三明治:既有自底向上也有自顶向下的测试方法,二者都包括。兼有二者的优点,缺点是测试工作量大。
1.2 测试阶段
(1)单元测试:也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或00 软件中的类(统称为模块),测试依据是软件详细设计说明书。
(2)集成测试:目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档。
(3)确认测试:主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:
内部确认测试:主要由软件开发组织内部按照SRS进行测试。
Alpha测试:用户在开发环境下进行测试。
Beta测试:用户在实际使用环境下进行测试,通过改测试后,产品才能交付用户。
验收测试:针对SRS,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件系统已通过系统测试。
(4)系统测试:测试对象是完整的、集成的计算机系统;测试的目的是在真实系统工作环境下,验证完成的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。
主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试方法;性能测试主要指标有响应时间、吞吐量、并发用户数和资源利用率等。
(5)配置项测试:测试对象是软件配置项,测试目的是检验软件配置项与SRS的一致性。测试的依据是SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。
(6)回归测试:测试目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。
1.3 测试用例设计
黑盒测试用例:将程序看做一个黑盒子,只知道输入输出,不知道内部代码,由此设计出测试用例,分为下面几类:
等价类划分:把所有的数据按照某种特性进行归类,而后在每类的数据里选取一个即可。等价类测试用例的设计原则:设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
边界值划分:将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年龄范围为0-150,边界值为0,150,-1,151四个。
错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方,作为测试用例进行测试。
因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法。
白盒测试用例:知道程序的代码逻辑,按照程序的代码语句,来设计覆盖代码分支的测试用例,覆盖级别从低至高分为下面几种:
(1)语句覆盖SC:逻辑代码中的所有语句都要被执行一遍,覆盖层级最低,因为执行了所有的语句,不代表执行了所有的条件判断。
(2)判定覆盖DC:逻辑代码中的所有判断语句的条件的真假分支都要覆盖一次。
(3)条件覆盖CC:针对每一个判断条件内的每一个独立条件都要执行一遍真和假。
(4)条件判定组合覆盖CDC:同时满足判定覆盖和条件覆盖。
(5)路径覆盖:逻辑代码中的所有可行路径都覆盖了,覆盖层级最高。
1.4 调试
测试是发现错误,调试是找出错误的代码和原因。
调试需要确定错误的准确位置;确定问题的原因并设法改正;改正后要进行回归测试。
调试的方法
蛮力法:又称为穷举法或枚举法,穷举出所有可能的方法一尝试。
回溯法:又称为试探法,按选优条件向前搜索,以达到目标,当发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法。
演绎法:是由一般到特殊的推理方法,与"归纳法"相反,从一般性的前提出发。得出具体陈述或个别结论的过程。
归纳法:是由特殊到一般的推理方法,从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在。
软件度量
软件的两种属性:外部属性指面向管理者和用户的属性,可直接测量,一般为性能指标。内部属性指软件产品本身的的属性,如可靠性等,只能间接测量。
McCabe 度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2=判定结点个数+1.
注意m和n代表的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支边(连线)就是一条有向边,每一条语句(语句框)就是一个顶点。
1.5 软件评审
评审原则
不应以测试代替评审;
评审人员应关注产品而不应评论开发人员;
评审人员应关注与实质性问题;
评审会议不应变为问题解决方案讨论会;
评审应被安排进入项目计划;
评审参与者应了解整个评审过程;
评审人员事先应对评审材料充分了解;
应重视评审的组织工作。
验证与确认
验证:是指在软件开发周期中的一个给定阶段的产品是否达到在上一阶段确立的需求的过程。
确认:是指在软件开发过程结束时对软件进行评价以确定它是否和软件需求相一致的过程。
测试:是指通过执行程序来有意识的发现程序中的设计错误和编码错误的过程,测试时验证和确认的手段之一。
2系统运行与维护
2.1 系统转换
遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统,它通常具有以下特点:
(1)系统虽然完成企业中许多重要的业务管理工作,但仍然不能完全满足要求。一般实现业务处理电子化及部分企业管理功能,很少涉及经营决策。
(2)系统在性能上已经落后,采用的技术已经过时。例如,多采用主机/终端形式或小型机系统,软件使用汇编语言或第三代程序设计语言的早期版本开发,使用文件系统而不是数据库。
(3)通常是大型的软件系统,已经融入企业的业务运作和决策管理机制之中,维护工作十分困难。
(4)没有使用现代信息系统建设方法进行管理和开发,现在基本上已经没有文档,很难理解。
遗留系统演化策略⭐⭐⭐
1、改造策略【高水平,高价值】:在遗留系统的基础上,新增功能或做改进使用。
改造策略: 遗留系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。
2、集成策略【高水平,低价值】:存在信息孤岛,通过集成打通信息孤岛。
集成策略:遗留系统的技术含量较高,但其业务价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。
3、淘汰策略【低水平,低价值】
淘汰策略:遗留系统的技术含量较低,且具有较低的业务价值。对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该善于“变废为宝”,通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险。
4、继承策略【低水平,高价值】完全兼容遗留系统的功能模型和数据模型的方式重新开发系统。
继承策略:遗留系统的技术含量较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。
新旧系统转换策略⭐⭐⭐
1、直接转换【风险高,成本低】
直接转换:接转换是在原有系统停止运行的某一时刻,新系统立即投入运行,中间没有过渡阶段。采用这种方式时,人力和费用最省,适用于系统不太复杂或现有系统完全不能使用的场合。但是这种方式风险高。
2、并行转换【风险低,成本高】:新旧系统并行运行一段时间。
并行转换:并行转换就是新系统和旧系统并行工作一段时间,经过这段时间的试运行后,再用新系统正式替换下现有系统。那么这种方式,它的好处就是风险很小。在转换期间还可以同时比较新旧两套系统的性能,而且能够让操作人员得到全面的培训,所以对于一些比较大的信息系统,或者处理过程比较复杂,数据比较重要的系统。并行转换是一种最常用的转换方式。那么这种转换方式也有缺点,缺点就在于两套系统并行期间,要有两套班子或者两套处理方式同时并存,在人力和费用消耗比较大,转换的周期比较长,而且难以控制新旧系统当中数据的变化。所以这就要求要做好转换计划,并且要加强管理。
3、分段转换【折中方案】:如:分地域上新系统,分子系统分阶段上线新系统。
分段转换:这是直接转换和并行转换的接合,也就是分期分批、逐步转换。一般比较大的系统采用这种方式比较合适,他能够保证软件平稳运行,费用也不太高,就是将大的系统分成多个子系统,每成熟一个子系统就切换一个子系统,主要是分期分批。这种分段转换的策略,它的优点就是成熟一个子系统就转换一个子系统。这种新旧转换,震动比较小,用户比较容易接受。但是由于采取的是渐进的方式,会导致新旧系统的转换周期比较长。
系统转换是指新系统开发完毕,投入运行,取代现有系统的过程,需要考虑多方面的问题,以实现与老系统的交接,有以下三种转换计划:
直接转换:现有系统被新系统直接取代了,风险很大,适用于新系统不复杂,或者现有系统已经不能使用的情况。优点是节省成本。
并行转换:新系统和老系统并行工作一段时间,新系统经过试运行后再取代,若新系统在试运行过程中有问题,也不影响现有系统的运行,风险极小,在试运行过程中还可以比较新老系统的性能. 适用于大型系统。缺点是耗费人力和时间资源,难以控制两个系统间的数据转换。
分段转换:分期分批逐步转换,是直接和并行转换的集合,将大型系统分为多个子系统,依次试运行每个子系统,成熟一个子系统,就转换一个子系统。同样适用于大型项目,只是更耗时,而且现有系统和新系统间混合使用,需要协调好接口等问题。
数据转换与迁移:将数据从旧数据库迁移到新数据库中。要在新系统中尽可能的保存旧系统中合理的数据结构,才能降低迁移的难度。也有三种方法:系统切换前通过工具迁移、系统切换前采用手工录入、系统切换后通过新系统生成。
2.2 系统维护概述
系统的可维护性可以定义为维护人员理解、改正、改动和改进这个软件的难易程度,其评价指标如下:
(1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
(2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。
(3)稳定性。软件产品避免由于软件修改而造成意外结果的能力。
(4)易测试性。软件产品使已修改软件能被确认的能力。
(5)维护性的依从性。软件产品遵循与维护性相关的标准或约定的能力。
系统维护包括硬件维护、软件维护和数据维护,其中软件维护类型如下:
正确性维护:发现了bug而进行的修改。
适应性维护:由于外部环境发生了改变,被动进行的对软件的修改和升级。
完善性维护:基于用户主动对软件提出更多的需求,修改软件,增加更多的功能,使其比之前的软件功能、性能更高,更加完善。
预防性维护:对未来可能发生的bug进行预防性的修改。
系统运行与维护⭐⭐⭐
1、影响可维护性的因素
(1)可理解性:是指通过阅读源代码和相关文档,了解软件的功能和如何运行的容易程度。
(2)可修改性:是指修改软件的难易程度。
(3)可测试性:是指验证软件程序正确的难易程度。
可测试性好的软件,通常意味着软件设计简单,复杂性低。因为软件的复杂性越大,测试的难度也就越大。
(4)可靠性:一个软件的可靠性越高,需要维护的概率就会越低。
(5)可移植性:是指将软件从一个环境移植到新的环境下正确运行的难易程度。软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率。
2、软件维护分类
改正性维护:识别和纠正软件错误(测试阶段未发现的BUG)。
适应性维护:外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
完善性维护:提升性能或增加功能。
预防性维护:针对未来,对系统的可维护性和可靠性进行预先提升。如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。
2.3 系统评价
系统评价分类
立项评价:系统开发前的预评价,分析是否立项开发,做可行性评价。
中期评价:项目开发中期每个阶段的阶段评审。或者项目在开发中途遇到重大变故,评价是否还要继续。
结项评价:系统投入正式运行后,了解系统是否达到预期的目的和要求而对系统进行的综合评价。
系统评价的指标
(1)从信息系统的组成部分出发,信息系统是一个由人机共同组成的系统,所以可以按照运行效果和用户需求(人)、系统质量和技术条件(机)这两条线索构造指标。
(2)从信息系统的评价对象出发,对于开发方来说,他们所关心的是系统质量和技术水平:对于用户方而言,关心的是用户需求和运行质量;系统外部环境则主要通过社会效益指标来反映。
(3)从经济学角度出发,分别按系统成本、系统效益和财务指标3条线索建立指标。
易混淆点1:遗留系统演化策略
淘汰策略
遗留系统的技术含量较低,且具有较低的业务价值。对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该善于"变废为宝",通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险。
继承策略
违留系统的技术含量较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。
改造策略
遗留系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。
集成策略
遗留系统的技术含量较高,但其业务价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。
易混淆点2:软件调试与测试的区别
测试的目的是找出存在的错误,而调试的目的是定位错误并修改程序以修正错误。
调试是测试之后的活动,测试和调试在目标、方法和思路上都有所不同。
测试从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的条件开始,结束的过程不可预计。
测试过程可以事先设计,进度可以事先确定;调试不能描述过程或持续时间。
易混淆点3:系统维护分类
正确性维护:指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。
适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。
完善性维护:扩充功能和改善性能而进行的修改。对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征
预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。如将专用报表功能改成通用报表生成功能以适应将来报表格式的变化。
项目管理
1范围管理⭐⭐
范围管理:确定项目的边界,即哪些工作是项目应该做的,哪些工作不应该包括在项目中。
范围定义的输入包括:项目章程、项目范围管理计划、批准的变更申请、组织过程资产。
WBS的作用包括:便于估算,明确范围,防止需求蔓延。最底层是工作包。
范围管理确定在项目内包括什么工作和不包括什么工作,由此界定的项目范围在项目的全生命周期内可能因种种原因而变化,项目范围管理也要管理项目范围的这种变化。项目范围的变化也叫变更。
对项目范围的管理,是通过5个管理过程来实现的∶
(1)规划范围管理(编制范围管理计划)。对如何定义、确认和控制项目范围的过程进行描述。
(2)定义范围。详细描述产品范围和项目范围,编制项目范围说明书,作为以后项目决策的基础。其输入包括∶项目章程。项目范围管理计划。组织过程资产。批准的变更申请。
(3)创建工作分解结构。把整个项目工作分解为较小的、易于管理的组成部分,形成一个自上而下的分解结构。
(4)确认范围。正式验收已完成的可交付成果。
(5)范围控制。监督项目和产品的范围状态、管理范围基准变更。
产品范围和项目范围
产品范围是指产品或者服务所应该包含的功能。产品范围是否完成,要根据产品是否满足了产品描述来判断。产品范围是项目范围的基础,产品范围的定义是产品要求的描述。
项目范围是指为了能够交付产品,项目所必须做的工作。项目范围的定义是产生项目管理计划的基础。判断项目范围是否完成,要以范围基准来衡量。项目的范围基准是经过批准的项目范围说明书、WBS和 WBS 词典。
产品范围描述是项目范围说明书的重要组成部分,因此,产品范围变更后,首先受到影响的是项目的范围。
WBS 将项目整体或者主要的可交付成果分解成容易管理、方便控制的若干个子项目或者工作包,子项目需要继续分解为工作包,持续这个过程,直到整个项目部分解为可管理的工作包,这些工作包的总和是项目的所有工作范围。
2进度管理
1、时间管理的过程包括:活动定义、活动排序、活动的资源估算、活动历时估算、制定计划、进度控制。
2、三点估算法公式:(乐观时间+4*最可能时间+悲观时间)/6
3、进度控制
(1)需要判断的关键点:
第一步:判断延误活动是否为关键活动,若为关键活动,则需要【加快进度】。
第二步:若延误活动不是关键活动,则判斯【偏差是否大于总时差】,大于,则【加快进度】。
第三步:偏差不大于总时差时,进一步判断偏差是否大于自由时差,若大于自由时差,先不调整计划,但要加强监管。
(2)【加快进度】的手段
赶工:增加资源,加班,加人。
快速跟进:活动并行执行。
4、进度网络图-关键路径法(PERT)
关键路径法是在制订进度计划时使用的一种进度网络分析技术。关键路线法沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早开始与完成日期、最迟开始与完成日期,不考虑任何资源限制。
如下图:单代号网络图
(1)总时差(松弛时间)
在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差
(2)自由时差
在不影响紧后活动的最早开始时间前提下,该活动的机动时间。
对于有紧后活动的活动,其自由时差等于所有紧后活动最早开始时间减本活动最早完成时间所得之差的最小值
对于没有紧后活动的活动,也就是以网络计划终点节点为完成节点的活动,其自由时差等于计划工期与本活动最早完成时间之差
对于网络计划中以终点节点为完成节点的活动,其自由时差与总时差相等。此外,由于活动的自由时差是其总时差的构成部分,所以,当活动的总时差为零时,其自由时差必然为零,可不必进行专门计算
(3)双代号网络图
5、Gantt图
(1)优点:甘特图直观、简单、容易制作,便于理解,能很清晰地标识出每一项任务的起始与结束时间,一般适用比较简单的小型项目,可用于WBS的任何层次、进度控制、资源优化、编制资源和费用计划。
(2)缺点:不能系统地表达一个项目所包含的各项工作之间的复杂关系,难以进行定量的计算和分析,以及计划的优化等。
(3)与PERT图对比
PERT图以网络图为基础,能表达活动间复杂逻辑关系。
Gantt图简单直观,但不能表达活动间的复杂逻辑关系。
PERT图主要描述不同任务之间的依赖关系;Gantt图主要描述不同任务之间的重叠关系。
进度管理就是采用科学的方法,确定进度目标,编制进度计划和资源供应计划,进行进度控制,在与质量、成本目标协调的基础上,实现工期目标。
具体来说,包括以下过程∶
(1)活动定义∶确定完成项目各项可交付成果而需要开展的具体活动。
(2)活动排序∶识别和记录各项活动之间的先后关系和逻辑关系。
(3)活动资源估算∶估算完成各项活动所需要的资源类型和效益。
(4)活动历时估算∶估算完成各项活动所需要的具体时间。
(5)进度计划编制∶分析活动顺序、活动持续时间、资源要求和进度制约因素,制订项目进度计划。
(6)进度控制∶根据进度计划开展项目活动,如果发现偏差,则分析原因或进行调整。
进行活动资源估算的方法主要有专家判断法、替换方案的确定、公开的估算数据、估算软件和自下而上的估算。
(1)专家判断法。专家判断法通常是由项目管理专家根据以往类似项目经的验和对本项目的判断,经过周密思考,进行合理预测,从而估算出项目资源。
(2)替换方案的确定。资源估算是为了给项目预算明确空间,为早期的资源筹备提供数据,如果某项活动存在替代方案,或提供的资源有替代支持可能,则需要明确声明。
(3)公开的估算数据。有些公司会定期地公开一些生产率或人工费率数据,其中包括很多国家和地区的劳动力交易、材料和设备信息。
(4)估算软件。依靠软件的强大功能,可以定义资源可用性、费率,以及不同的资源日历
(5)自下而上的估算。把复杂的活动分解为更小的工作,以便于资源估算。将每项工作所需要的资源估算出来,然后汇总即是整个活动所需要的资源数量。
COCOMO 模型:常见的软件规模估算方法。常用的代码行分析方法作为其中一种度量估计单位,以代码行数估算出每个程序员工作量,累加得软件成本。
模型按其详细程度可以分为三级:
(1)基本 COCOMO 模型是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。
(2)中间 COCOMO 模型在基本 COCOMO 模型的基础上,再用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算。
(3)详细 COCOMO 模型包括中间 COCOMO 模型的所有特性,将软件系统模型分为系统、子系统和模块3个层次,更进一步考虑了软件工程中每一步骤(如分析、设计)的影响。
COCOMOⅡ模型:COCOMO的升级,也是以软件规模作为成本的主要因素,考虑多个成本驱动因子。该方法包括三个阶段性模型,即应用组装模型、早期设计阶段模型和体系结构阶段模型。包含三种不同规模估算选择:对象点、功能点和代码行。应用组装模型使用的是对象点;早期设计阶段模型使用的是功能点,功能点可以转换为代码行。
进度安排的常用图形描述方法有Gantt图(甘特图)和项目计划评审技术(Program Evaluation&Review Technique,PERT)图。
PERT(项目评估与评审技术)图是一种图形化的网络模型,描述一个项目中任务和任务之间的关系,每个节点表示一个任务,通常包括任务编号、名称、开始和结束时间、持续时间和松弛时间
Gantt图是一种简单的水平条形图,它以一个日历为基准描述项目任务,横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间,
PERT图主要描述不同任务之间的依赖关系;
Gantt图主要描述不同任务之间的重叠关系。
关键路径法
关键路径法是在制订进度计划时使用的一种进度网络分析技术。关键路线法沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早开始与完成日期、最迟开始与完成日期,不考虑任何资源限制。
关键路径:是项目的最短工期,但却是从开始到结束时间最长的路径。进度网络图中可能有多条关键路径,因为活动会变化,因此关键路径也在不断变化中。
关键活动:关键路径上的活动,最早开始时间=最晚开始时间。
通常,每个节点的活动会有如下几个时间:
(1)最早开始时间(ES),某项活动能够开始的最早时间。
(2)最早结束时间(EF),某项活动能够完成的最早时间。EF=ES+工期
(3)最迟结束时间(LF)。为了使项目按时完成,某项活动必须完成的最迟时间。
(4)最迟开始时间(LS)。为了使项目按时完成,某项活动必须开始的最迟时间。LS=LF-工期
这几个时间通常作为每个节点的组成部分,如图所示:
顺推:最高开始ES=所有前置活动最早完成EF的最大值;最早完成EF=最早开始ES+持续时间。
逆推:最晚完成LF=所有后续活动最晚开始LS的最小值;最晚开始LS=最晚完成LF-持续事件。
总时差(松弛时间):
在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。
总浮动时间(总时差、松弛时差):在不延误项目完工时间且不违反进度制约因素的前提下,活动可以从最早开始时间推迟或拖延的时间量,就是该活动的进度灵活性。正常情况下,关键活动的总浮动时间为零。
总浮动时间=最迟开始LS-最早开始ES 或 最迟完成LF-最早完成EF 或 关键路径-非关键路径时长。
自由时差:
在不影响紧后活动的最早开始时间前提下,该活动的机动时间。
对于有紧后活动的活动,其自由时差等于所有紧后活动最早开始时间减本活动最早完成时间所得之差的最小值。
对于没有紧后活动的活动,也就是以网络计划终点节点为完成节点的活动,其自由时差等于计划工期与本活动最早完成时间之差。
对于网络计划中以终点节点为完成节点的活动,其自由时差与总时差相等。此外,由于活动的自由时是其总时差的构成部分,所以,当活动的总时差为零时,其自由时差必然为零,可不必进行专门计算。
自由浮动时间:是指在不延误任何紧后活动的最早开始时间且不违反进度制约因素的前提下,活动可以从最早开始时间推迟或拖延的时间量。
自由浮动时间=紧后活动最早开始时间的最小值-本活动的最早完成时间。
3成本管理
项目成本管理是在整个项目的实施过程中,为确保项目在批准的预算条件下尽可能保质按期完成而对所需的各个过程进行管理与控制。
项目成本管理包括成本估算、成本预算和成本控制三个过程。
(1)成本估算是对完成项目所需成本的估计和计划,是项目计划中的一个重要的、关键的、敏感的部分;成本估算主要靠分解和类推的手段进行,基本估算方法分为三类:自顶向下的估算、自底向上的估算和差别估算法。
(2)成本预算是把估算的总成本分配到项目的各个工作包,建立成本基准计划以衡量项目绩效;应急储备和管理储备。
(3)成本控制保证各项工作在各自的预算范围内进行。
成本的类型
(1)可变成本:随着生产量、工作量或时间而变的成本为可变成本。可变成本又称变动成本,
(2)固定成本:不随生产量、工作量或时间的变化而变化的非重复成本为固定成本。
(3)直接成本:直接可以归属于项目工作的成本为直接成本。如项目团队差旅费、工资、项目使用的物料及设备使用费等。
(4)间接成本:来自一般管理费用科目或几个项目共同担负的项目成本所分摊给本项目的费用,就形成了项目的间接成本,如税金、额外福利和保卫费用等。
(5)机会成本:是利用一定的时间或资源生产一种商品时,而失去的利用这些资源生产其他最佳替代品的机会就是机会成本,泛指一切在做出选择后其中一个最大的损失。
(6)沉没成本:是指由于过去的决策已经发生了的,而不能由现在或将来的任何决策改变的成本。沉没成本是一种历史成本,对现有决策而言是不可控成本,会很大程度上影响人们的行为方式与决策,在投资决策时应排除沉没成本的干扰。
学习曲线:重复生成产品时,产品的单位成本会随着产量的扩大呈现规律性递减。估算成本时,也要考虑此因素。
4软件配置管理
配置管理是为了系统地控制配置变更,在系统的整个生命周期中维持配置的完整性和可跟踪性,而标识系统在不同时间点上配置的学科。在GB/T11457-2006中将“配置管理”正式定义为:“应用技术的和管理的指导和监控方法以标识和说明配置项的功能和物理特征,控制这些特征的变更,记录和报告变更处理和实现状态并验证与规定的需求的遵循性。”
配置管理包括6个主要活动:制订配置管理计划、配置标识、配置控制、配置状态报告、配置审计、发布管理和交付。
配置项:GB/T11457-2006对配置项的定义为:“为配置管理设计的硬件、软件或二者的集合,在配置管理过程中作为一个单个实体来对待"。
以下内容都可以作为配置项进行管理:外部交付的软件产品和数据、指定的内部软件工作产品和数据、指定的用于创建或支持软件产品的支持工具、供方/供应商提供的软件和客户提供的设备/软件。典型配置项包括项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各种数据,它们经评审和检查通过后进入配置管理。
每个配置项的主要属性有:名称、标识符、文件状态、版本、作者、日期等。
配置项可以分为基线配置项和非基线配置项两类,例如,基线配置项可能包括所有的设计文档和源程序等;非基线配置项可能包括项目的各类计划和报告等。
所有配置项的操作权限应由CMO(配置管理员)严格管理,基本原则是:基线配置项向开发人员开放读取的权限;非基线配置项向PM、CCB及相关人员开放。
配置项的状态可分为“草稿”“正式”和“修改”三种。配置项刚建立时,其状态为“草稿”。配置项通过评审后,其状态变为"正式"。此后若更改配置项,则其状态变为"修改"。当配置项修改完毕并重新通过评审时,其状态又变为“正式”。如图所示
配置项版本号
(1)处于“草稿”状态的配置项的版本号格式为0.YZ,YZ的数字范围为0199。随着草稿的修正,YZ的取值应递增。YZ的初值和增幅由用户自己把握。
(2)处于“正式”状态的配置项的版本号格式为X.Y,X为主版本号,取值范围为1~9。Y为次
版本号,取值范围为0一9。
配置项第一次成为"正式"文件时,版本号为1.0。
如果配置项升级幅度比较小,可以将变动部分制作成配置项的附件,附件版本依次为1.0,1.1…。当附件的变动积累到一定程度时,配置项的Y值可适量增加,Y值增加一定程度时,X值将适量增加。当配置项升级幅度比较大时,才允许直接增大X值。
(3)处于"修改"状态的配置项的版本号格式为X.YZ。配置项正在修改时,一般只增大Z值,X.Y值保持不变。当配置项修改完毕,状态成为"正式"时,将Z值设置为0,增加X.Y值。参见上述规则(2)。
配置项版本管理:在项目开发过程中,绝大部分的配置项都要经过多次的修改才能最终确定下来。对配置项的任何修改都将产生新的版本。由于我们不能保证新版本一定比旧版本"好",所以不能抽弃旧版本。版本管理的目的是按照一定的规则保存配置项的所有版本,避免发生版本丢失或混淆等现象,并且可以快速准确地查找到配置项的任何版本。
易混淆点4:版本管理工具和配置管理工具
配置管理工具,是对软件配置项(SCM)进行管理,配置项就包括了各种的程序、文档、数据等等。而版本管理工具只是针对软件的任一特定时刻的形态指派一个唯一的编号,作为"身份标识"(版本)。配置管理工具的功能相对版本管理工具来说更复杂些。
配置基线(常简称为基线)由一组配置项组成,这些配置项构成一个相对稳定的逻辑实体。基线中的配置项被"冻结"了,不能再被任何人随意修改。对基线的变更必须遵循正式的变更控制程序。
基线通常对应对应于开发过程中的里程碑,一个产品可以有多个基线,也可以只有一个基线。交付给外部顾客的基线一般称为发行基线(Release),内部开发使用的基线一般称为构造基线(Build)。
一组拥有唯一标识号的需求、设计、源代码文卷以及相应的可执行代码、构造文卷和用户文档构成一条基线。产品的一个测试版本(可能包括需求分析说明书、概要设计说明书、详细设计说明书、已编译的可执行代码、测试大纲、测试用例、使用手册等)是基线的一个例子。
对于每一个基线,要定义下列内容:建立基线的事件、受控的配置项、建立和变更基线的程序、批准变更基线所需的权限。在项目实施过程中,每个基线都要纳入配置控制,对这些基线的更新只能采用正式的变更控制程序。
建立基线还可以有如下好处:
(1)基线为开发工作提供了一个定点和快照。
(2)新项目可以在基线提供的定点上建立。新项目作为一个单独分支,将与随后对原始项目(在主要分支上)所进行的变更进行隔离。
(3)当认为更新不稳定或不可信时,基线为团队提供一种取消变更的方法。
(4)可以利用基线重新建立基于某个特定发布版本的配置,以重现已报告的错误。
配置库存放配置项并记录与配置项相关的所有信息,是配置管理的有力工具。主要作用:
(1)记录与配置相关的所有信息,其中存放受控的软件配置项是很重要的内容。
(2)利用库中的信息科评价变更的后果,这对变更控制有着重要的意义。
(3)从库中可提取各种配置管理过程的管理信息。
使用配置库可以帮助配置管理员把信息系统开发过程的各种工作产品,包括半成品或阶段产品和最终产品管理得井井有条,使其不致管乱、管混、管丢。
配置库可以分开发库、受控库、产品库3种类型。
(1)开发库,也称为动态库、程序员库或工作库,用于保存开发人员当前正在开发的配置实体如:新模块、文档、数据元素或进行修改的已有元素。动态中的配置项被置于版本管理之下。动态库是开发人员的个人工作区,由开发人员自行控制。库中的信息可能有较为频繁的修改,只要开发库的使用者认为有必要,无需对其进行配置控制,因为这通常不会影响到项目的其他部分。可以任意的修改。
(2)受控库,也称为主库,包含当前的基线加上对基线的变更。受控库中的配置项被置于完全的配置管理之下。在信息系统开发的某个阶段工作结束时,将当前的工作产品存入受控库。可以修改,需要走变更流程
(3)产品库,也称为静态库、发行库、软件仓库,包含已发布使用的各种基线的存档,被置于完全的配置管理之下。在开发的信息系统产品完成系统测试之后,作为最终产品存入产品库内,等待交付用户或现场安装。一般不再修改,真要修改的话需要走变更流程。
5质量管理
质量是软件产品特性的综合,表示软件产品满足明确(基本需求)或隐含(期望需求)要求的能力。质量管理是指确定质量方针、目标和职责,并通过质量体系中的质量计划、质量控制、质量保证和质量改进来使其实现的所有管理职能的全部活动;
主要包括以下过程:
(1)质量规划:识别项目及其产品的质量要求和标准,并书面描述项目将如何达到这些要求和标准的过程。
(2)质量保证:一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计(软件评审)和过程分析来保证项目的质量。
(3)质量控制:实时监控项目的具体结果,以判断它们是否符合相关质量标准,制订有效方案,以消除产生质量问题的原因。
易混淆点3: 质量保证与质量控制
(1)质量保证一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。
(2)质量控制是实时监控项目的具体结果,以判断它们是否符合相关质量标准,制订有效方案,以消除产生质量问题的原因。
(3)一定时间内质量控制的结果也是质量保证的质量审计对象。质量保证的成果又可以指导下一阶段的质量工作,包括质量控制和质量改进。
信息技术 软件产品评价 质量特性及其使用指南 GB/T16260——2002
McCall质量模型
软件评审
质量两个必要条件:设计的规格说明书符合用户标准,称为设计质量。
程序按照设计规格说明书所规定的情况正确执行,称为程序质量。
软件容错技术:容错就是软件遇到错误的处理能力,实现容错的手段主要是冗余,包括下面四种冗余技术:
结构冗余:分为静态、动态、混合冗余三种,当错误发生时对错误进行备份处理。
信息冗余:为检错和纠错在数据中加上一段额外的信息,例如校验码原理。
时间冗余:遇到错误时重复执行,例如回滚,重复执行还有错,则转入错误处理逻辑。
冗余附加技术:是指为实现结构、信息和时间冗余技术所需的资源和技术,包括程序、指令、数据、存放和调动它们的空间和通道等。在屏蔽硬件错误的容错技术中,
6风险管理
风险管理就是要对项目风险进行认真的分析和科学的管理,这样,是能够避开不利条件、少受损失、取得预期的结果并实现项目目标的,能够争取避免风险的发生或尽量减小风险发生后的影响。但是,完全避开或消除风险,或者只享受权益而不承担风险是不可能的。
风险管理计划编制:如何安排与实施项目的风险管理,制定下列各步的计划。
风险识别:识别出项目中已知和可预测的风险,确定风险的来源、产生的条件、描述风险的特征以及哪些项目可以产生风险,形成一个风险列表。
风险定性分析:对已经识别的风险进行排序,确定风险可能性与影响、确定风险优先级、确定风险类型。
风险定量分析:进一步了解风险发生的可能性具体由多大,后果具体由多严重。包括灵敏度分析、期望货币价值分析、决策树分析、蒙特卡罗模拟。
风险应对计划编制:对每一个识别出来的风险来分别制定应对措施,这些措施组成的文档称为风险应对计划。包括消极风险(避免策略、转移策略、减轻策略):积极风险(开拓、分享、强大)。
风险监控:监控风险计划的执行,检测残余风险,识别新的风险,保证风险计划的执行,并评价这些计划对减少风险的有效性。
项目风险:作用于项目上的不确定的事件或条件,既可能产生威胁,也可能带来机会。
通过积极和合理的规划,超过90%的风险都可以进行提前应对和管理。
风险应该尽早识别出来,高层次风险应记录在章程里。应由对风险最有控制力的一方承担相应的风险。
承担风险程度与所得回报相匹配原则,承担的风险要有上限。
风险的属性:
(1)随机性:风险事件发生及其后果都具有偶然性(双重偶然),遵循一定的统计规律。
(2)相对性:风险是相对项目活动主体而言的。承受力不同,影响不同。风险承受力影响因素:收益大小(收益越大,越愿意承担风险);投入大小(投入越大,承受能力越小);主体的地位和资源(级别高的人能承担较大的风险)。
(3)风险的可变性:条件变化,会引起风险变化。包括性质、后果的变化,以及出现新风险。
风险的分类:
按照后果的不同,风险可划分为纯粹风险(无任何收益)和投机风险(可能带来收益)。
按风险来源划分,自然风险(天灾)和人为风险(人的活动,又可分为行为风险、经济风险、技术风险、政治和组织风险等)。
按是否可管理划分,可管理(如内部多数风险)和不可管理(如外部政策),也要看主体管理水平。
按影响范围划分,局部风险(非关键路径活动延误)和总体风险(关键路径活动延误)。按后果承担者划分:业主、政府、承包商、投资方、设计单位、监理单位、保险公司等。按可预测性划分:已知风险(已知的进度风险)、可预测风险(可能服务器故障)、不可预测风险(地震、洪水、政策变化等)。
在信息系统项目中,从宏观上来看,风险可以分为项目风险、技术风险和商业风险。
项目风险是指潜在的预算、进度、个人(包括人员和组织)、资源、用户和需求方面的问题,以及它们对项目的影响。项目复杂性、规模和结构的不确定性也构成项目的(估算)风险因素。项目风险威胁到项目计划,一旦项目风险成为现实,可能会拖延项目进度,增加项目的成本。
技术风险是指潜在的设计、实现、接口、测试和维护方面的问题。此外,规格说明的多义性、技术上的不确定性、技术陈旧、最新技术(不成熟)也是风险因素。技术风险威胁到待开发系统的质量和预定的交付时间。如果技术风险成为现实,开发工作可能会变得很困难或根本不可能。
商业风险威胁到待开发系统的生存能力,主要有以下5种不同的商业风险:
(1)市场风险。开发的系统虽然很优秀但不是市场真正所想要的。
(2)策略风险。开发的系统不再符合企业的信息系统战略。
(3)销售风险。开发了销售部门不清楚如何推销的系统。
(4)管理风险。由于重点转移或人员变动而失去上级管理部门的支持。
(5)预算风险。开发过程没有得到预算或人员的保证。
7组织结构
组织结构模式:项目型(项目经理绝对领导)、职能型(部门领导为主)、矩阵型(二者结合,既有项目经理也有部门领导,但权利分割不同)。
程序设计小组的组织方式:
(1)主程序员制小组(主程序员全权负责,后援工程师必要时能替代主程序员,适合大规模项目)
(2)民主制小组(也即无主程序员小组,成员之间地位平等,任何决策都是全员参与投票,适合于项目规模小,开发人员少,采用新技术和确定性较小的项目)
(3)层次式小组(两个层次,一名组长领导若干个高级程序员,每个高级程序员领导若干个程序员)。
嵌入式系统
1嵌入式微处理器
1.1 嵌入式微处理器体系结构⭐⭐
1、冯诺依曼结构
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
特点:
(1)一般用于PC处理器,如I3、I5、I7处理器
(2)指令与数据存储器合并在一起
(3)指令与数据都通过相同的数据总线传输
传统计算机采用冯·诺依曼(Von Neumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
冯·诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
采用单一的地址及数据总线,程序指令和数据的宽度相同。
处理器执行指令时,先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费儿个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。
2、哈佛结构
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
特点:
(1)一般用于嵌入式系统处理器(DSP)
(2)指令与数据分开存储,可以并行读取,有较高数据的吞吐率
(3)有4条总线:指令和数据的数据总线与地址总线
哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。
与两个存储器相对应的是系统中的两套独立的地址总线和数据总线。
这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。
但这不意味着可以在一个机器周期内多次访问存储器。
1.2 嵌入式微处理器分类⭐⭐
嵌入式硬件系统基本结构如下图所示,一般由嵌入式微处理器、存储器、输入/输出部分组成,其中,嵌入式微处理是嵌入式硬件系统的核心,通常由3大部分组成:控制单元(控制器)、算数逻辑单元(运算器)、寄存器。
具体功能在嵌入式系统基础章节有详细讲解。
嵌入式微处理器的分类
根据嵌入式微处理器的字长宽度,可分为4 位、8 位、16 位、32位和64 位。一般把16 位及以下的称为嵌入式微控制器(Embedded Micro Controller),32位及以上的称为嵌入式微处理器。
如果按系统集成度划分,可分为两类:一种是微处理器内部仅包含单纯的中央处理器单元,称为一般用途型微处理器:另一种则是将CPU、ROM、RAM 及I/O等部件集成到同一个芯片上,称为单芯片微控制器(Single Chip Microcontroller)。
根据用途分类
(1)嵌入式微控制器(MCU:Micro Controller Unit):又称为单片机,片上外设资源一般比较丰富,适合于控制。
MCU芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM 等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高,其片上外设资源一般较丰富,适合于控制,是嵌入式系统工业的主流。
(2)嵌入式微处理器(EMPU:Embedded Micro Processing Unit):又称为单板机,由通用计算机中的CPU发展而来,仅保留和嵌入式应用紧密相关的功能硬件。
它的特征是具有32 位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。目前常见的有ARM、MIPS、POWER PC等。
(3)嵌入式DSP处理器(DSP:Digital Signal Processor):专门用于信号处理方面的处理器。
其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的 CPU 还快 10-50倍。在数字滤波、FFT、谱分析等各种仪器上 DSP获得了大规模的应用。
DSP特点:
多总线结构,允许CPU同时进行指令和数据的访问,因而可以实现流水线操作。
哈佛体系结构,程序和数据空间分开,可以同时访问指令和数据。
数字信号处理的运算特点:乘/加,及反复相乘求和(乘积累加)。
DSP设置了硬件乘法/累加器,能在单个指令周期内完成乘法/加法运算。
DSP主要应用:信号处理、图像处理,仪器、语言处理、控制、军事、通讯、医疗、家用电器等领域。
(4)嵌入式片上系统(SOC):追求产品系统最大包容的集成器件。成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。减小了系统的体积和功耗、提高了可靠性和设计生产效率。
是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
1.3 多核处理器结构
多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单一的处理器插槽中。多核与多CPU相比,很好的降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以。
双核处理器:基于单个半导体的一个处理器上拥有2个处理器核心。
由于将2个或多个运算核封装在一个芯片上,节省大量晶体管、封装成本;显著提高处理器性能;兼容性好;系统升级方便。
2个或多个内核工作协调实现方式:
对称多处理技术SMP:将2颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源。
非对称处理技术AMP:2个处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的计算任务。
从目前已经发布或透露的多核处理器原型来看,对称式的处理方式将成为未来多核处理器的主要体系体系结构,同时,多核间将共享大容量的缓存作为处理器之间及处理器与系统内存之间交换数据的"桥梁"。为了提高交换速度,这些缓存往往集成在片内,其数据传输速度是惊人的。
多核CPU的调度
多核CPU环境下进程的调度算法一般有全局队列调度和局部队列调度两种.
全局队列调度是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU空闲时,操作系统就从全局任务等待队列中选取就绪任务开始执行,CPU核心利用率高。
局部队列调度是操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,就从该核心的任务等待队列中选取适当的任务执行,优点是无需在多个CPU之间切换。
2嵌入式软件与操作系统⭐⭐⭐
嵌入式系统软件基本概念
嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用对功能、可靠性、成本、体积和功耗等方面的要求,集可配置可裁减的软、硬件于一体的专用计算机系统。(面向特定领域)
嵌入式系统具有以下特点:
规模较小、开发难度大、实时性和可靠性要求高、要求固化存储等。
嵌入式系统软件分类
根据系统对时间的敏感程度可将嵌入式系统划分为:
(1)嵌入式系统
(2)嵌入式实时系统:强实时系统、弱实时系统等。
从安全性要求看,嵌入式系统还可分为:
(1) 安全攸关系统
(2)非安全攸关系统
2.1 嵌入式软件基础
嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。
嵌入式软件分类
系统软件:控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
应用软件:嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特定的应用领域,如飞行控制软件、手机软件、地图等。
支撑软件:辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器等。
设备驱动层
又称为板级支持包BSP,包含了嵌入式系统中所有与硬件相关的代码,直接与硬件打交道,对硬件进行管理和控制,并为上层软件提供所需的驱动支持。
板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。在嵌入式系统软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如 VxWorks的 BSP和 Linux 的 BSP相对于某一 CPU 来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统 BSP 的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层 OS 保持正确的接口,良好的支持上层OS。
BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:
1.单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持
2.为操作系统提供设备驱动程序和系统中断服务程序
3.定制操作系统的功能,为软件系统提供一个实时多任务的运行环境
4.初始化操作系统,为操作系统的正常运行做好准备。
板级支持包(BSP,也称为硬件抽象层HAL)一般包含相关底层硬件的初始化、数据的输入/输出操 作和硬件设备的配置等功能,它主要具有以下两个特点。
①硬件相关性,因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间 的接口,BSP需为操作系统提供操作和控制具体硬件的方法。
②操作系统相关性,不同的操作系统具有各自的软件层次结构,因此不同操作系统具有特定的硬件 接口形式。
一般来说,BSP主要包括两个方面的内容:引导加载程序 BootLoader和设备驱动程序。
引导加载程序
BootLoader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:
片级初始化:主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
板级初始化:通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含有软件和硬件在内的初始化过程。
加载内核(系统级初始化):将操作系统和应用程序的映像从Flash存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。
设备驱动程序
在一个嵌入式系统当中,操作系统是可能有也可能无的。但无论如何,设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。
对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能。
硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。
硬件关闭:将硬件设置为关机状态。
硬件停用:暂停使用这个硬件。
硬件启用:重新启用这个硬件。
读操作:从硬件中读取数据。
写操作:往硬件中写入数据。
2.2 嵌入式操作系统
嵌入式操作系统(EOS,Embedded Operating System)是指用于嵌入式系统的操作系统。
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统μC/OS-Ⅱ、嵌入式 Linux、Windows Embedded、VXWorks等,以及应用在智能手机和平板电脑的Android、iOS等。
嵌入式操作系统的特点
(1)系统内核小。由于嵌入式系统一般是应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。
(2)专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的"升级"是完全两个概念。
(3)系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。
(4)高实时性。高实时性的系统软件是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。
(5)多任务的操作系统。嵌入式软件开发需要使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。但是为了合理地调度多任务、利用系统资源、系统函数以及和专用库函数接口,用户必须自行选配操作系统开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。
2.3 嵌入式实时操作系统
嵌入式实时系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。
可预测性是指系统在运行之前,其功能、响应特性和执行结果是可预测的;
确定性是指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果。
对嵌入式实时系统失效的判断,不仅依赖其运行结果的数值是否正确,也依赖提供结果是否及时。
实时操作系统(RTOS)的特点
当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行。
因而,提供及时响应和高可靠性是其主要特点。
实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。
实时操作系统的特征
①高精度计时系统
计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
②多级中断机制
一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
③实时调度机制
实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多"安全切换"时间点,保证及时调度实时任务。
因此,实际上来看,实时操作系统如同操作系统一样,就是一个后台的支撑程序,可以按照实时性的要求进行配置、裁剪等。其关注的重点在于任务完成的时间是否能够满足要求。
易混淆点4:常见的嵌入式RTOS(实时操作系统)V×Works和RT-Linux
3嵌入式软件设计
3.1 开发流程
宿主机和目标机
嵌入式软件开发不同于传统软件开发,其所使用的开发环境、工具都有特殊性,在嵌入式软件开发中,一般使用宿主机和目标机的模式进行系统开发,并且借助于开发工具进行目标开发。
宿主机是指普通PC机中构建的开发环境,一般需要配置交叉编译器,借助于宿主机的环境,使用交叉编译器进行目标编译,代码生成,同时借助仿真器或者是网络进行目标机的程序调式。
目标机可以是嵌入式系统的实际运行环境,也可以是能够替代实际运行环境的仿真系统。
嵌入式软件开发方式一般是:在宿主机上建立开发环境,完成编码和交叉编译工作,然后在宿主机和目标机之间建立连接,将目标程序下载到目标机中进行交叉调试和运行。如下图:
交叉编译
嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的 CPU 需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。
由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和训试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
交叉调试
嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。
在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程它通过操作系统提供的调试接口来控制被调试的进程。
而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,
调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
3.2 开发工具
嵌入式软件的开发可以分为几个阶段:编码、交叉编译、交叉调试。各个阶段工具如下:
编辑器
用于编写嵌入式③原代码程序,从理论上来说,任何一个文本编辑器都可以用来编写源代码。各种集成开发环境会提供功能强大的编辑器,如VS系列、eclipse、keil、CSS等。常见的独立编辑器:UE、Source Insight、vim等。
编译器gcc
编译阶段的工作是用交叉编译工具处理源代码,生成可执行的目标文件,在嵌入式系统中,由于宿主机和目标机系统不一样,需要使用交叉编译,GNU C/C++(gcc)是目前常用的一种交叉编译,支持非常多的宿主机/目标机组合。
gcc是一个功能强大的工具集合,包含了预处理器、编译器、汇编器、连接器等组件,会在需要时去调用这些组件来完成编译任务。
调试器 gdb
在开发嵌入式软件时,交叉调试是必不可少的一步。嵌入式软件调试特点:
调试器运行在宿主机上,被调试程序运行在目标机上。
调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG等。
在目标机上一般有调试器的某种代理,能配合调试器一起完成对目标机上运行程序的调试,可以是软件或支持调试的硬件。
gdb是GNU开源组织发布的一个强大的程序调试工具。
嵌入式系统的特点
(1)系统专用性强。
嵌入式系统是针对具体应用的专门系统。它的个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。
(2)系统实时性强。
很多嵌入式系统对外来事件要求在限定的时间内及时做出响应,具有实时性。
(3)软硬件依赖性强。
嵌入式系统的专用性决定了其软硬件的互相依赖性很强,两者必须协同设计,以达到共同实现预定功能的目的,并满足性能、成本和可靠性等方面的严格要求。
(4)处理器专用。
嵌入式系统的处理器一般是为某一特定目的和应用而专门设计的。通常具有功耗低、体积小和集成度高等优点。
(5)多种技术紧密结合。
通用计算机技术也离不开这些技术,但它们相互结合的紧密程度不及嵌入式系统。
(6)系统透明性。
嵌入式系统在形态上与通用计算机系统差异甚大。它的输入设备往往不是常见的鼠标和键盘之类的设备,甚至没有输出装置。
(7)系统资源受限。
嵌入式系统为了达到结构紧凑、高可靠性和低成本的目的,其存储容量、I/O 设备的数量和处理器的处理能力都比较有限。
嵌入式数据库系统EDBMS
1. 使用环境的特点:
(1)设备随时移动性。
嵌入式数据库主要用在移动信息设备上,设备的位置经常随使用者一起移动。
(2)网络频繁断接。
移动设备或移动终端在使用的过程中,位置经常发生变化,同时也受到使用方式、电源、无线通信和网络条件等因素的影响。所以,一般并不持续保持网络连接,而是经常主动或被动地间歇性断接和连接。
(3)网络条件多样化。
由于移动信息设备位置的经常变化,导致它们与数据库服务器在不同的时间可能通过不同的网络系统连接,这些网络在带宽、通信代价、网络延迟和QoS 等方面可能有所差异。
(4)通信能力不对称。
由于受到移动设备资的源限制,移动设备与服务器之间的网络通信能力是非对称的。移动设备的发送能力都非常有限,使得数据库服务器到移动设备的下行通信带宽和移动设备到数据库服务器之间的上行带宽相差很大。
2. 系统组成
一个完整的EDBMS 由若干子系统组成,包括主数据库、同步服务器、嵌入式数据库和连接网络等几个子系统:
嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高效的事务处理和数据的安全性等关键问题。
嵌入式操作系统EOS
与通用操作系统相比,EOS 主要有以下特点:
(1)微型化。
EOS 的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存,因此,EOS 必须做得小巧,以占用尽量少的系统资源。
(2)代码质量高。
在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽量精简。
(3)专业化。
嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同的应用领域而专门设计的。因此,EOS 要有很好适应性和移植性,还要支持多种开发平台。
(4)实时性强。
嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此,实时性成为EOS 的又一特点。
(5)可裁减和可配置。
应用的多样性要求EOS 具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁减,以适应微型化和专业化的要求。
交叉平台
一个典型的交叉平台开发环境,包含三个高度集成的部分:
(1)运行在宿主机和目标机上的强有力的交叉开发工具和实用程序。
(2)运行在目标机上的高性能、可裁剪的实时操作系统。
(3)连接宿主机和目标机的多种通信方式,例如,以太网、USB、串口等。
交叉编译、交叉调试
嵌入式系统可靠性
提高系统可靠性的技术可以分为避错(排错)技术和容错技术。
避错是通过技术评审、系统测试和正确性证明等技术,在系统正式运行之前避免、发现和改正错误。
容错是指系统在运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果的一种性能或措施。
容错技术主要是采用冗余方法来消除故障的影响。
冗余是指在正常系统运行所需的基础上加上一定数量的资源,包括信息、时间、硬件和软件。冗余是容错技术的基础,通过冗余资源的加入,可以使系统的可靠性得到较大的提高。
主要的冗余技术有结构冗余(静态、动态、混合)、信息冗余、时间冗余和冗余附加4 种。
软件容错的主要方法是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施,以提高系统可靠性,保证整个系统的正常运行。
软件容错技术主要有N版本程序设计、恢复块方法和防卫式程序设计等。
◆N版本程序设计:其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现,目的是减少N个版本的程序在表决点上相关错误的概率。
◆恢复块设计(动态冗余):动态冗余又称为主动冗余,它是通过故障检测、故障定位及故障恢复等手段达到容错的目的。其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来替代它并重新运行。各备用模块在其待机时,可与主模块一样工作,也可以不工作。前者叫热备份系统(双重系统),后者叫冷备份系统(双工系统、双份系统)。
恢复块方法与N版本程序设计对比
◆防卫式程序设计:是一种不采用任何传统的容错技术就能实现软件容错的方法,对于程序中存在的错误和不一致性,防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去。其实现策略包括错误检测、破坏估计和错误恢复三个方面。
◆双机容错技术:是一种软硬件结合的容错应用方案。该方案是由两台服务器和一个外接共享磁盘阵列及相应的双机软件组成。
◆双机容错系统采用“心跳”方法保证主系统与备用系统的联系。所谓心跳,是指主从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态。一旦心跳信号表明主机系统发生故障,或者备用系统无法收到主系统的心跳信号,则系统的高可用性管理软件认为主系统发生故障,立即将系统资源转移到备用系统上,备用系统替代主系统工作,以保证系统正常运行和网络服务不间断。
◆工作模式:双机热备模式;双机互备模式;双机双工模式。
◆集群技术就是将多台计算机组织起来进行协同工作,它是提高系统可用性和可靠性的一种技术。
在集群系统中,每台计算机均承担部分计算任务和容错任务,当其中一台计算机出现故障时,系统使用集群软件将这台计算机从系统中隔出离去,通过各计算机之间的负载转嫁机制完成新的负载分担,同时向系统管理人员发出警报。集群系统通过功能整合和故障过渡,实现了系统的高可用性和可靠性。
◆特点:可伸缩性、高可用性、可管理性、高性价比、高透明性。
◆分类:高性能计算集群、负载均衡集群、高可用性集群。
易混淆点:内核与单体内核
微内核操作系统结构:
数学与经济管理
1.最小生成树
在连通的带权图的所有生成树中,权值和最小的那棵生成树(包含圈中所有顶点的树),称作最小生成树。求带权连通无向图的最小生成树的算法有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。
解题关键:每次找最短边,直到将所有结点连成一棵没有回路的树。
有两种方法:普里姆算法和克鲁斯卡尔算法,实际计算建议采用克鲁斯卡尔算法。
克鲁斯卡尔算法:将图中所有的边按权值从小到大排序,从权值最小的边开始选取,判断是否为安全边(即不构成环),直至选取了n-1条边,构成了最小生成树。
最小生成树并不唯一,但权值之和都相等且最小,只要求出一个就可以。
例题:下图是某地区的通信线路图,假设其中标注的数字代表通信线路的长度(单位为千米),现在要求至少要架设多长的线路,才能保持6个城市的通信连通。
2.最短(长)路径
带权图的最短路径问题即求两个顶点间长度最短的路径。其中路径长度不是指路径上边数的总和,而是指路径上各边的权值总和。路径长度的的具体含义取决于边上权值所代表的意义。
解题关键:从源点出发,计算源点到下一节点的最短路径。后续分析时,每次只考虑当前节点前一个节点的最短路径长度,直到终点位置,分析其最短路径。
计算从起点到终点的最短(长)路径。
方法:从起点开始,依次向终点推导,每个经过的中间节点都直接计算出到该中间节点最短的路径,这样递归推导到终点,就是最短路径。
例题:如图所示,有一货物要从城市s发送到城市t,线条上的数字代表通过这条路的费用(单位为万元)。那么,运送这批货物,至少需要花费多少元?
3.网络与最大流量
许多应用包含了流量问题。例如,公路系统中有车辆流,控制系统中有信息流,网络系统中有数据流,金融系统中有现金流等。在实际应用中,很多时候需要寻求最大流量问题。最大流量问题是一个特殊的线性规划问题。
解题关键:每次查找并抽取起点到终点的最大流量路径,直到没有可达路径为止,抽取的流量总和即为最大流量。
计算从一个节点到另一个节点的最大运输能力,取决于节点之间运输能力的短板:首先看有多少条路径可走,最大流量等于所有路径最大流量之和,而每条路径的最大流量是节点之间运输能力最小的流量决定的(短板决定)。
解题技巧:
1、取每条路径上的最小权值即为此条路径的最大流量,每次走完一条路径后,需要实时修改此条路径还剩下的运输流量值,若为0,则删掉此连线。
2、重复第1步,直至从起点到终点无路径连通,而后将每条路径上的流量相加得到整体最大流量。
例题:下图标出了某地区的运输网,各节点之间的运输能力,如下表所示。
将表格数据汇总到图上:
依次执行步骤:
4.决策论
按决策环境分类
确定型决策:决策环境是确定的,结果也是确定的。
风险决策:决策环境是不确定的,但是结果发生的概率是一致的。
不确定型决策:决策环境不确定,且结果也不确定,完全凭主观意识来决定。
决策的六个要素
决策者、可供选择的方案(包括行动、策略)、衡量选择方案的准则(目的、目标、正确性等)、事件(被决策的对象)、每一事件的发生将会产生的某种结果、决策者的价值观。
不确定型决策
决策者对环境一无所知,任意猜测,完全凭借与决策者自身价值观,有五种准则(建立环境与方案的表格,每1个环境每种方案对应一个收益):
例题:某公司需要根据下一年度宏观经济的增长趋势预测决定投资策略。宏观经济增长趋势有不景气、不变和景气三种,投资策略有积极、稳健和保守三种,各种状态的收益,如下表所示。
(1)乐观主义准则(大中取大max(max),先取每个方案最大的收益,再取所有最大收益中最大的那个);积极方案的最大结果为500,稳健方案的最大结果为300,保守方案的最大结果为400。三者的最大值为500,因此,选择其对应的积极投资方案。
(2)悲观主义准则(小中取大max(min),先取每个方案最小的收益,再取所有最小收益中最大的那个);积极方案的最小结果为50,稳健方案的最小结果为150,保守方案的最小结果为200。三者的最大值为200,因此,选择其对应的保守投资方案。
(3)折中主义准则,也称为赫尔维斯(Harwicz)准则(设定折中系数a,用每个方案的最大收益*a+最小收益*(1-a),选择每个方案中计算结果最大的那个,可知,a=1时为乐观主义,a=0时为悲观主义);
(4)等可能性准则,也称为拉普拉斯(Laplace)准则(设定每个可能的结果的发生都是等可能的,概率都为1/n,这样就知道每个结果发生的概率,即将不确定型的问题转换为了风险决策问题);
(5)后悔值准则,也称为萨维奇(Savage)准则、最小机会损失准则(最小最大后悔值 min(max),在不同的环境中(之前都是方案),投资方案获得的最大收益-当前选择的收益=后悔值,将所有后悔值中每个方案的最大后悔值选出,再从这些最大的后悔值中选择最小的即可)。
积极方案的最大后悔值为350,稳健方案的最大后悔值为250,保守方案的最大后悔值300。三者的最小值为250,因此,选择其对应的稳健投资方案。
决策
不确定型决策:
不确定型决策(非确定型决策)是指决策者对环境情况一无所知,决策者根据自己的主观倾向进行决策。根据决策者的主观态度不同,可分为5种准则,分别为悲观主义准则、乐观主义准则、折中主义准则、等可能性准则和后悔值准则。
决策树:
决策树是在已知各种情况发生概率的基础上,通过构成决策树来评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
随机函数
假设随机变量s的分布密度函数为f(x)=2x,这意味着,当△x充分小时,随机变量s落在区间(x,x+△x)内的概率约等于f(x)△x。
r1和r2为计算机逐个产生的、均匀分布在(0,1)区间内的互相独立的伪随机数。
--随机数即约等于密度函数的结果
密度函数为上升趋势,则随机数应该满足上升趋势。
此处采用模拟函数max(r1,r2)随机产生随机数r1和r2。
灵敏度分析(决策树和决策表)
对环境不了解,但是对即将发生的结果的概率了解,一般题目会给出每个结果对应的收益及风险概率,然后将每种结果产生的收益*此种结果发生的概率,取收益最大的即可。
例题:假设有外表完全相同的木盒100只,将其分为2组,一组装白球,有70盒;另一组装黑球,有30盒。现从这100盒中任取一盒,请你猜,如果这盒内装的是白球,猜对了得500分,猜错了罚200分;如果这盒内装的是黑球,猜对了得1000分,猜错了罚150分。为使期望得分最多,应选哪一个方案?
转折点:
5.线性规划
①线性规划(线性规划问题的数学模型通常由线性目标函数、线性约束条件、变量非负条件组成。)
线性规划的一些特点:
线性规划的可行解域是由一组线性约束条件形成的,从几何意义来说,就是由一些线性解而围割形成的区域,不一定是封闭的多边形或多面体。
如果存在两个最优解,则连接这两点的线段内所有的点都是最优解,而线段两端延长线上可能会超出可行解区。
增加一个约束条件时,要么缩小可行解域(新的约束条件分割了原来的可行解域),要么可行解域不变(新的约束条件与原来的可行解域不相交)。
如果最优解在可行解域边界某个非顶点处达到,则随着等值域向某个方向移动,目标函数的值会增加或减少(与最优解矛盾)或没有变化(在此段边界上都达到最优解),从而仍会在可行解域的某个顶点处达到最优解。若最优解存在且唯一,则可以从可行解区顶点处比较目标函数值来求解。
线性规划的标准型(standard form of linearprogramrmng)是线性规划模型的标准形式。其主要特征为:
目标函数为极大化类型;
所有的约束条件都是等式;
所有约束方程右端的常数都是非负的;
所有决策变量都是非负的。
在一组约束条件下来寻找目标函数的极值(极大值和极小值)问题。
线性规划问题的数学模型通常由线性目标函数、线性约束条件、变量非负条件组成(实际问题中的变量一般都是非负的)。
线性规划问题就是面向实际应用,求解一组非负变量,使其满是给定的一组线性约束条件,并使某个线性目标函数达到极值。满是这些约束条件的非负变量组的集合称为可行解域。可行解域中使目标函数达到极值的解称为最优解。
线性规划问题的最优解要么是0个(没有),要么是唯一的(1个),要么有无穷个(只要有2个,就会有无穷个)。
在实际应用中,可以直接求约束条件方程组的解,即是交叉点,将这些解代入到目标函数中判断是否极值即可。
例题:某工厂在计划期内要安排生产工,II两种产品,已知生产单位产品所需的设备台时及A、B 两种原料的消耗,如下表所示。
该厂的最优生产计划方案是:生产4件产品I,2件产品II,可得最大利润为14元。
6.动态规划
②动态规划
是求解决策过程最优化的过程。
解题关键:可通过暴力法/穷举法,将所有方案列举出来,求最优解。也可以通过贪心策略,找到最初方案再进行调整,直到找到最优解。
求解给定多种方案求出最佳方案的问题。
直接运用动态规划法的原理来解题非常复杂,因此一般采用穷举法解题:
依据真题规则,将题目给出的所有投资方案全部穷举出来,所有方案获得的收益一目了然,然后取最佳投资方案,简单明了,不容易错。
例题:某工厂平均每月生产6吨货物,分别发往A、B、C、D四个卖场,为了便于管理,发往每个卖场的货物数量为整数吨,如果各卖场出售该货物获得的利润,如下表所示。每个月给四个卖场分配多少货物,能让总利润最大:
数学建模是一种数学的思考方法,是运用数学的语言和方法,通过抽象和简化,建立能近似刻画并解决实际问题的模型的一种强有力的数学手段。
专业英语
案例分析
1系统规划(必背)
考点:系统规划步骤,各个子步骤具体含义,可行性研究报告内容,可行性研究,净现值计算。
通读教材:第9章 系统规划
系统规划的步骤
(1)对现有系统进行初步调查。
(2)分析和确定系统目标。
(3)分析子系统的组成和基本功能。
(4)拟定系统的实施方案。
(5)进行系统的可行性研究,编写可行性研究报告,召开可行性论证会。
(6)制订系统建设方案。
项目机会选择步骤
(1)立项目标和动机
(2)立项价值判断
(3)项目选择和确定
(4)初步调查
(5)可行性分析。
项目的立项目标和动机
(1)进行基础研究
(2)进行应用研发
(3)提供技术服务
(4)产品的使用者
项目的选择和确定
(1)选择有核心价值的项目
(2)评估所选择的项目
(3)项目优先级排序
(4)评估项目的多种实施方式
(5)平衡地选择合适的方案
初步调查
目标:掌握用户的概况,从整体上了解企业信息系统建设的现状,对用户提出的各种问题和初始需求进行识别,明确系统的初步目标,为可行性研究提供工作基础。
方式:最佳方式是与企业高层管理人员座谈,通过座谈了解企业高层对信息系统所设定的目标和系统边界,计划的资金投入和对工期的要求。
内容:初步需求分析,企业基本状况,管理方式和基础数据管理状况,现有系统状况。
可行性分析
可行性是指在企业当前的条件下,是否有必要建设新系统,以及建设新系统的工作是否具备必要的条件。也就是说,可行性包括必要性和可能性。
软件系统的可行性分析包括经济可行性、技术可行性、法律可行性和用户使用可行性,分别从项目建设的经效益、技术方案、制度因素和用户使用等四个方面对系统建设的必要性和可能性进行评估。
经济可行性主要评估项目的建设成本、运行成本和项目建成后可能的经济收益。
技术可行性研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。
法律可行性需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
用户使用可行性是从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等,可以分为管理可行性(从企业管理上分析系统建设可行性)和运行可行性(分析和测定信息系统在确定环境中能够有效工作,并被用户方便使用的程度和能力)。
可行性研究的步骤
(1)复查系统目标和规模
(2)分析现有系统
(3)导出新系统的高层逻辑模型
(4)用户复核
(5)提出并评价解决方案
(6)确定最终推荐的解决方案
(7)草拟开发计划
(8)编制和提交可行性研究报告
可行性研究报告的内容
引言、引用文件、可行性研究的前提、可选的方案、所建议的系统、经济技术法律用户使用可行性、其他与项目有关的问题、注解、附录。
问题分析阶段的四项主要任务
(1)研究问题领域
(2)分析问题和机会
(3)制定系统改进目标
(4)修改项目计划
成本分类
固定成本:是指其总额在一定期间和一定业务量范围内,不受业务量变动的影响而保持固定不变的成本。例如,管理人员的工资、办公费、固定资产折旧费、员工培训费等。
变动成本:也称为可变成本,是指在一定时期和一定业务量范围内其总额随着业务量的变动而成正比例变动的成本。例如,直接材料费、产品包装费、外包费用、开发奖金等。
混合成本:就是混合了固定成本和变动成本的性质的成本。例如,水电费、电话费等。这些成本通常有一个基数,超过这个基数就会随业务量的增大而增大。
直接成本:直接投入在项目上。
间接成本:分摊到项目上。
沉没成本:已经投入到项目中,无法挽回的成本,不需要再去考虑。
盈亏平衡点
利润=销售额-成本=销售额-(固定成本+可变成本)=0
盈亏平衡点销售额=总固定成本+总可变成本
=总固定成本+【可变成本占销售额的比例*盈亏平衡点销售额】
注意:可变成本与销售收入(销量)成正比,固定成本一直不变。
净现值计算
静态收益计算方式:不考虑金钱的时间价值,只看项目周期内投入和产出的绝对数字。
动态收益计算方式:考虑金钱具有时间价值,现在的钱比未来值钱,有以下相关概念和公式:
现值:若n年后能收入F元,那么这些钱现在的价值P(每年折现率为i)
净现值NPV是考虑了金钱的时间价值计算出来的净利润,是指项目在生命周期内各年的净现金流量按照一定的、相同的折现率折现到初时的现值之和,公式为:
Cl是第t年的收入利益,CO是第t年的支出成本,i是折现率。项目周期内每一年都这样计算再累加,得出总的NPV,就是考虑了时间价值的净利润,NPV有助于公司判断项目是否盈利。
净现值率NPVR是项目净现值与原始投资总额的比率,公式为:
分子是NPV,分母是原始投资总额,NPVR有助于公司选择投入小,产出高的项目。
投资回收期
静态投资回收期:不考虑金钱的时间价值,只看项目周期内绝对投入和产出,需要多长时间才能收回所有的投入成本。
静态投资回收期=累计净现金流量开始出现正值的年份数-1+|上年累计净现金流量|/当年净现金流量
动态投资回收期:使用净现值做分析,需要多长时间能够收回所有投入成本(净现值)。
动态投资回收期=累计折现值开始出现正值的年份数-1+|上年累计折现值|/当年折现值
投资回收率=1/投资回收期*100%。
投资收益率=投资收益/投资成本×100%。
2系统分析和需求工程(必背)
考点:数据流图、UML图(用例图、状态图、类图、活动图、时序图)、需求获取、需求分析、需求定义(需求规格说明书内容)、需求验证、需求管理和跟踪、需求变更(流程)、逆向工程、软件重构。
通读教材:第8章 软件工程;第10章 系统分析;第11章 软件需求工程;第12章 软件架构设计;第13章系统设计;
需求获取方法
(1)用户访谈:1对1-3,有代表性的用户。其形式包括结构化和非结构化两种。结构化是指事先准备好一系列问题,有针对地进行;而非结构化则是只列出一个粗略的想法,根据访谈的具体情况发挥。包括准备访谈、主持访谈和访谈的后续工作。优点是灵活,应用范围广;缺点是记录困难,时间有限,对系统分析师要求高。
(2)问卷调查:用户多,无法一一访谈。关键在于制作好的调查表,优点是广撒网,代价小,信息真实,结果好统计;缺点是缺乏灵活性。
(3)采样:从种群中系统地选出有代表性的样本集的过程,通过认真研究所选出的样本集,可以从整体上揭示种群的有用信息。优点是提高了效率降低了成本,减少数据收集偏差;缺点是依赖系统分析师主管因素,要求高。样本数量=0.25*(可信度因子/错误率)^2
(4)情节串联板:一系列图片,通过这些图片来讲故事。优点是给用户直观的演示,交互性强,生动;缺点是花费时间多,效率低。
(5)联合需求计划(JRP)是一种相对来说成本较高的需求获取方法,但也是十分有效的一种。它通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。JRP 将会起到群策群力的效果,对于一些问题最有歧义的时候、对需求最不清晰的领域都是十分有用的一种方法。优势:1、发挥用户和管理人员参与系统开发过程的积极性,提高系统开发效率;2、降低系统需求获取的时间成本,加速系统开发周期;3、采用原型确认系统需求并获取设计审批,具有原型化开发方法的优点。
(6)需求记录技术:任务卡片、场景说明、用户故事、Volere白卡。
需求分析的任务
(1)绘制系统上下文范围关系图
(2)创建用户界面原型
(3)分析需求的可行性
(4)确定需求的优先级
(5)为需求建立模型
(6)创建数据字典
(7)使用QFD(质量功能部署)
需求分析方法-PDOA方法
面向问题域的分析,更多的强调描述,而少强调建模,包括:
(1)关注问题域。用一个文档对含有的问题域进行相关的描述,并列出需要在该域中求解的问题列表,也就是需求列表。只有这个文档是在分析时产生的。
(2)关注解系统(即系统实现)的待求行为。用一个文档对了解系统的待求行为进行描述。该文档将在需求定义阶段完成。
在PDOA 方法中,对整个过程有着一个清晰的定义:
(1)收集基本的信息并开发问题框架,以建立问题域的类型。
(2)在问题框架类型的指导下,进一步收集详细信息,并给出一个问题域相关特性的描述。
(3)基于以上两点,收集并用文档说明新系统的需求。
从上面的描述中可以看出,问题框架是PDOA 的核心元素,是将问题域分为一系列相互关联的子域,而一个子域可以是那些可能算是精选出来的问题域的一部分。
结构化的需求分析
结构化特点:自顶向下,逐步分解,面向数据。
三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R图)以及数据字典(数据元素、数据结构、数据流、数据存储、加工逻辑、外部实体)。
数据字典:数据字典是在DFD的基础上,对DFD中出现的所有命名元素都加以定义,使得每个图形元素的名字都有一个确切的解释。DFD 和数据字典等工具相配合,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。数据字典中一般有6类条目,分别是数据元素、数据结构、数据流、数据存储、加工逻辑和外部实体。不同类型的条目有不同的属性需要描述。
面向对象的分析方法
UML关系:依赖、关联、泛化、实现、组合、聚合。
UML图:尤其以用例图、类图、活动图、状态图最为重要。
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息。
边界类用于封装在用例内、外流动的信息或数据流。
控制类是用于控制用例工作的类,用于对一个或几个用例所特有的控制行为进行建模。
面向对象
面向对象基本概念
(1)对象:由数据及其操作所构成的封装体,是系统中用来描述客观事务的一个实体,是构成系统的一个基本单位。一个对象通常可以由对象名、属性和方法3个部分组成。
(2)类:现实世界中实体的形式化描述,类将该实体的属性(数据)和操作(函数)封装在一起。对象是类的实例,类是对象的模板。
◆类可以分为三种:实体类、接口类(边界类)和控制类。
实体类的对象表示现实世界中真实的实体,如人、物等。
接口类(边界类)的对象为用户提供一种与系统合作交互的方式,分为人和系统两大类,其中人的接口可以是显示屏、窗口、Web 窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口涉及到把数据发送到其他系统,或者从其他系统接收数据。
控制类的对象用来控制活动流,充当协调者。
(3)抽象:通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。
一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相关的特性,抛弃不相关的特性。
(4)封装:是一种信息隐蔽技术,将相关的概念组成一个单元模块,并通过一个名称来引用。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。
(5)继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继承另外一类对象的特征,又可分为单继承和多继承。
(6)多态:不同的对象收到同一个消息时产生完全不同的结果。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持,将通用消息放在抽象层,具体不同的功能实现放在低层。
(7)接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。
(8)消息:体现对象间的交互,通过它向目标对象发送操作请求。
(9)覆盖:子类在原有父类接口的基础上,用适合于自己要求的实现去置换父类中的相应实现。即在子类中重定义一个与父类同名同参的方法。
(10)函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数。
(11)绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
UML关系
◆依赖:一个事物的语义依赖于另一个事物的语义的变化而变化
◆关联:是一种结构关系,描述了一组链,链是对象之间的连接。分为组合和聚合,都是部分和整体的关系,其中组合事物之间关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
◆泛化:一般/特殊的关系,子类和父类之间的关系
◆实现:一个类元指定了另一个类元保证执行的契约。
图
UML图
◆类图:静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系。UML类图如下:
◆用例图:静态图,展现了一组用例、参与者以及它们之间的关系。用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作,用例之间的关系有扩展、包含、泛化。如下:
◆状态图:动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。
设计模式
用例建模
方法的对比
SA 方法关注于功能的分层和分解,这非常符合人们自上而下、逐步分解问题直到可解决的自然思考方式。SA 方法本身隐含着几个基本假设,即问题域是可定义的、问题域是有限的、通过有限的步骤总可以将复杂问题分解到可解决的程度。
00A 方法则遵循完全不同的思维方式,它基于抽象、信息隐藏、功能独立和模块化这些基本理念对系统进行分析。00A 方法首先对问题域的事物的“外在表象”进行观测,然后在逻辑世界中模拟出一个对应的逻辑对象,"断定"该对象和现实事物是一致的。随后,观测到的对象被记录入对象集合,观测到的行为和表象被记录入对象关系模型和对象行为模型。
PDOA 的特点是重新将重点定位在问题域和需求上,通过对问题域的分类,向系统分析师提供具体问题的相关指南。并且它将规格说明作为另外的任务处理,它的成果只是一份问题域的全面描述和一份需求列表而已。PDOA 丰富和完善了SA 和 00A 方法。
需求定义方法
(1)严格定义也称为预先定义,需求的严格定义建立在以下的基本假设之上:所有需求都能够被预先定义。开发人员与用户之间能够准确而清晰地交流。采用图形(或文字)可以充分体现最终系统。
(2)原型方法,迭代的循环型开发方式,需要注意的问题:并非所有的需求都能在系统开发前被准确地说明。项目干系人之间通常都存在交流上的困难,原型提供了克该服困难的一个手段。需要实际的、可供用户参与的系统模型。有合适的系统开发环境。反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。
需求规格说明书
内容:范围;引用文件;需求;合格性规定;需求可追踪性;尚未解决的问题:注解:附录。
通俗答法:系统应该提供的功能和服务;非功能需求,包括系统的特征、特点和属性;限制系统开发或者系统运行必须遵守的约束条件;系统必须连接的其他系统的信息。
作用:系统所有者和用户使用需求定义文档来确认需求以及任何可能产生的变化,并作为验收依据,系统分析人员、设计人员和构造人员使用它来理解需要什么以及处理需求变更,开发用于验证系统的测试用例;项目经理使用它作为制定项目计划、处理变更及验收的依据。
需求管理:需求基线、需求变更、需求跟踪
需求变更的流程
软件产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求。软件产品线是一个十分适合专业的开发组织的软件开发方法,能有效地提高软件生产率和质量,缩短开发时间,降低总开发成本。
核心资源:包括所有产品所共用的软件架构,通用的构件、文档等。
产品集合:产品线中的各种产品。
产品线的建立方式
将现有产品演化为产品线:慢慢演化,总周期和总投资大。
用软件产品线替代现有产品集:基于现有产品,革命方式,即基于现有需求直接开发出软件产品线,投资少,但是当需求发生变化时,会造成无用功。
全新软件产品线的演化:企业进入到一个全新的领域,已有产品线资源会影响新需求,使投资增大。
全新软件产品线的开发:首先开发人员要得到所有且准确的需求,才能全部开发完,一旦完成产品线的开发,新产品的开发就相当快,降低投资,缺点就是当新产品需求改变大时,核心资源库不够,就十分麻烦。
综上:革命方式比演化方式更节省投资,更省时间,但只适用于需求明确且变动不大,不然风险很大。
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。
实现级:包括程序的抽象语法树、符号表、过程的设计表示。
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
领域级;包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如E-R 模型。其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高。
抽象级别:与具体需求无关,抽象出来的上层逻辑概念。
完备性:与具体系统相关,具体系统需求是否完善,与抽象级别相反。
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。
(1)重构是指在同一抽象级别上转换系统描述形式。
(2)设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)再工程是指在逆向工程所获得信息的基础上,修改或重构已有的系统,产生系统的一个新版本。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来重构现有系统,以改进它的综合质量。在利用再工程重构现有系统的同时,一般会增加新的需求,包括增加新的功能和改善系统的性能。
(4)正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
软件过程管理
软件能力成熟度模型CMM:将软件过程改进的步骤组织成5个成熟度模型。
(1)初始级。初始级是未加定义的随意过程,软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定义几乎处于无章法和步骤可循的状态,软件产品所取得的成功往往依赖于极个别人的努力和机遇。
(2)可重复级。可重复级是规则化和纪律化的过程,软件过程已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
(3)已定义级。已定义级是标准的和一致的过程,用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
(4)已管理级。已管理级是可预测的过程,软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。
(5)优化级。优化级是持续改进的过程,通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。
能力成熟度模型集成CMMI:分为阶段式和连续式,阶段式等级如下:
3系统运行和维护(必背)
考点:遗留系统,系统转换,数据迁移,软件维护,冗余技术,容错技术,集群技术,负载均衡。
通读教材:第15章 系统运行与维护;第19章 系统可靠性分析与设计。
遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统,它通常具有以下特点:
(1)系统虽然完成企业中许多重要的业务管理工作,但仍然不能完全满足要求。一般实现业务处理电子化及部分企业管理功能,很少涉及经营决策。
(2)系统在性能上已经落后,采用的技术已经过时。例如,多采用主机/终端形式或小型机系统,软件使用汇编语言或第三代程序设计语言的早期版本开发,使用文件系统而不是数据库。
(3)通常是大型的软件系统,已经融入企业的业务运作和决策管理机制之中,维护工作十分困难。
(4)没有使用现代信息系统建设方法进行管理和开,发现在基本上已经没有文档,很难理解。
评价方法:启动评价;业务价值评价(判断遗留系统对企业的重要性);外部环境评价(硬件、支撑软件、企业IT基础设施):应用软件评价:分析评价结果。
遗留系统演化策略
新老系统的转换策略
直接转换:在原有系统停止运行的某一时刻,新系统立即投入运行,中间没有过渡阶段。缺点是风险很大,适用于新系统不复杂,或者现有系统已经不能使用的情况。优点是节省成本,新系统各方面都比较优良。
并行转换:新系统和老系统并行工作一段时间,新系统经过试运行后再取代,若新系统在试运行过程中有问题,也不影响现有系统的运行,风险极小,在试运行过程中还可以比较新老系统的性能,适用于大型系统。缺点是耗费人力和时间资源,难以控制两个系统间的数据转换。
分段转换:分期分批逐步转换,是直接和并行转换的集合,将大型系统分为多个子系统,依次试运行每个子系统,成熟一个子系统,就转换一个子系统。优点是同样适用于大型项目,能保证系统平稳运行,费用也不是太高;缺点是更耗时,而且现有系统和新系统间混合使用,需要协调好接口等问题。可以按功能、部门、机器设备来分阶段转换。
数据转换与迁移
将数据从旧数据库迁移到新数据库中。要在新系统中尽可能的保存旧系统中合理的数据结构,才能降低迁移的难度。也有三种方法:系统切换前通过工具迁移、系统切换前采用手工录入、系统切换后通过新系统生成。
转换的过程称为ETL,有三个步骤:抽取(旧数据库数据)——转换(三种转换方法)——装载(装入新数据库,并校验数据)。
数据迁移前的准备工作包括:
(1)待迁移数据源的详细说明,包括数据的存放方式、数据量和数据的时间跨度。
(2)建立新旧系统数据库的数据字典,对现有系统的历史数据进行质量分析,以及新旧系统数据结构的差异分析。
(3)新旧系统代码数据的差异分析。
(4)建立新旧系统数据库表的映射关系,对无法映射字段的处理方法。
(5)开发或购买、部署ETL工具。
(6)编写数据转换的测试计划和校验程序。
(7)制定数据转换的应急措施。
数据迁移后的校验:对迁移后的数据进行质量分析;新旧系统查询数据对比检查。
可维护性的评价指标:
(1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
(2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。如果软件由最终用户修改,那么易改变性可能会影响易操作性。
(3)稳定性。软件产品避免由于软件修改而造成意外结果的能力。
(4)易测试性。软件产品使已修改软件能被确认的能力。
(5)维护性的依从性。软件产品遵循与维护性相关的标准或约定的能力。
软件维护的分类
(1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
(2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
(3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。
(4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”,也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。
软件维护工作流程:
冗余技术
提高系统可靠性的技术可以分为避错(排错)技术和容错技术。避错是通过技术评审、系统测试和正确性证明等技术,在系统正式运行之前避免、发现和改正错误。
容错是指系统在运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果的一种性能或措施。容错技术主要是采用冗余方法来消除故障的影响。
冗余是指在正常系统运行所需的基础上加上一定数量的资源,包括信息、时间、硬件和软件。冗余是容错技术的基础,通过冗余资源的加入,可以使系统的可靠性得到较大的提高。主要的冗余技术有结构冗余(硬件冗余和软件冗余)、信息冗余、时间冗余和冗余附加4种。
软件容错的主要方法是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施,以提高系统可靠性,保证整个系统的正常运行。软件容错技术主要有N版本程序设计、恢复块方法和防卫式程序设计等。
N版本程序设计:是一种静态的故障屏蔽技术,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现,目的是减少N个版本的程序在表决点上相关错误的概率。
与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段;相异成分规范评审、相异性确认、背对背测试。
其他需要注意的问题:N版本程序的同步、N版本程序之间的通信、表决算法、一直比较问题、数据相异性。
恢复块设计(动态冗余):动态冗余又称为主动冗余,它是通过故障检测、故障定位及故障恢复等手段达到容错的目的。其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来替代它并重新运行。各备用模块在其待机时,可与主模块一样工作,也可以不工作。前者叫热备份系统(双重系统),后者叫冷备份系统(双工系统、双份系统)。
设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
二者比较
防卫式程序设计:是一种不采用任何传统的容错技术就能实现软件容错的方法,对于程序中存在的错误和不一致性,防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去。其实现策略包括错误检测、破坏估计和错误恢复三个方面。
双机容错技术:是一种软硬件结合的容错应用方案。该方案是由两台服务器和一个外接共享磁盘阵列及相应的双机软件组成。
双机容错系统采用"心跳"方法保证主系统与备用系统的联系。所谓心跳,是指主从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态。一旦心跳信号表明主机系统发生故障,或者备用系统无法收到主系统的心跳信号,则系统的高可用性管理软件认为主系统发生故障,立即将系统资源转移到备用系统上,备用系统替代主系统工作,以保证系统正常运行和网络服务不间断。
工作模式:双机热备模式;双机互备模式;双机双工模式。
集群技术就是将多台计算机组织起来进行协同工作,它是提高系统可用性和可靠性的一种技术。在集群系统中,每台计算机均承担部分计算任务和容错任务,当其中一台计算机出现故障时,系统使用集群软件将这台计算机从系统中隔出离去,通过各计算机之间的负载转嫁机制完成新的负载分担,同时向系统管理人员发出警报。集群系统通过功能整合和故障过渡,实现了系统的高可用性和可靠性。
特点:可伸缩性、高可用性、可管理性、高性价比、高透明性。
分类:高性能计算集群、负载均衡集群、高可用性集群。
负载均衡是集群系统中的一项重要技术,可以提高集群系统的整体处理能力,也提高了系统的可靠性,最终目的是加快集群系统的响应速度,提高客户端访问的成功概率。集群的最大特征是多个节点的并行和共同工作,如何让所有节点承受的负荷平均,不出现局部过大负载或过轻负载的情况,是负载均衡的重要目的。
比较常用的负载均衡实现技术主要有以下几种:
(1)基于特定软件的负载均衡。很多网络协议都支持重定向功能,例如,基于HTTP重定向服务,其主要原理是服务器使用HTTP重定向指令,将一个客户端重新定位到另一个位置。服务器返回一个重定向响应,而不是返回请求的对象。客户端确认新地址然后重发请求,从而达到负载均衡的目的。
(2)基于DNS的负载均衡属于传输层负载均衡技术,其主要原理是在DNS服务器中为同一个主机名配置多个地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。
(3)基于NAT的负载均衡。将一个外部IP 地址映射为多个内部IP 地址,对每次连接需求动态地转换为一个内部节点的地址,将外部连接请求引到转换得到地址的那个节点,上从而达到负载均衡的目的。
(4)反向代理负载均衡。将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。
(5)混合型负载均衡。
4项目管理(必背)
考点:进度管理。
通读教材:第20章 项目管理。
PERT(项目评估与评审技术)图是一种图形化的网络模型,描述一个项目中任务和任务之间的关系,每个节点表示一个任务,通常包括任务编号、名称、开始和结束时间、持续时间和松弛时间。
Gantt图是一种简单的水平条形图,它以一个日历为基准描述项目任务,横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。
PERT图主要描述不同任务之间的依赖关系;Gantt图主要描述不同任务之间的重叠关系。
四种逻辑关系:F表示结束,S表示开始。
(1)结束-开始的关系(F-S型)。前序活动结束后,后续活动才能开始。例如,只有比赛(紧前活动)结束,颁典典礼(紧后活动)才能开始。
(2)结束-结束的关系(F-F型)。前序活动结束后,后续活动才能结束。例如,只有完成文件的编写(紧前活动),才能完成文件的编辑(紧后活动)。
(3)开始-开始的关系(S-S 型)。前序活动开始后,后续活动才能开始。例如,开始地基浇灌(紧前活动)之后,才能开始混凝土的找平(紧后活动)。
(4)开始-结束的关系(S-F型)。前序活动开始后,后续活动才能结束。例如,只有第二位保安人员开始值班(紧前活动)第一位保安人员才能结束值班(紧后活动)。
关键路径:是项目的最短工期,但却是从开始到结束时间最长的路径。进度网络图中可能有多条关键路径,因为活动会变化,因此关键路径也在不断变化中。
关键活动:关键路径上的活动,最早开始时间=最晚开始时间。
通常,每个节点的活动会有如下几个时间:
(1)最早开始时间(ES),某项活动能够开始的最早时间。
(2)最早结束时间(EF),某项活动能够完成的最早时间。EF=ES+工期
(3)最迟结束时间(LF)。为了使项目按时完成,某项活动必须完成的最迟时间。
(4)最迟开始时间(LS)。为了使项目按时完成,某项活动必须开始的最迟时间。LS=LF-工期
这几个时间通常作为每个节点的组成部分,如图所示:
顺推:最高开始ES=所有前置活动最早完成EF的最大值;最早完成EF=最早开始ES+持续时间。
逆推:最晚完成LF=所有后续活动最晚开始LS的最小值;最晚开始LS=最晚完成LF-持续事件。
特别注意,下面的图,是有问题的,文老师视频里有详细说明。
总浮动时间:在不延误项目完工时间且不违反进度制约因素的前提下,活动可以从最早开始时间推迟或拖延的时间量,就是该活动的进度灵活性。正常情况下,关键活动的总浮动时间为零。
总浮动时间=最迟开始LS-最早开始ES或最迟完成LF-最早完成EF或关键路径-非关键路径时长。
自由浮动时间:是指在不延误任何紧后活动的最早开始时间且不违反进度制约因素的前提下,活动可以从最早开始时间推迟或拖延的时间量。
自由浮动时间=紧后活动最早开始时间的最小值-本活动的最早完成时间。
掌握关键路径的计算,会依据表格和题目描述画图,然后求出关键路径。
5数据库系统(必背)
考点:数据库设计、E-R模型、规范化、事务并发控制和锁机制、反规划范、分布式数据库、数据库性能优化、数据仓库、数据挖掘、NoSQL。
通读教材:第5章 数据库系统。
不规范化带来的四大问题
设有一个关系模式R(SNAME,CNAME,TNAME TADDRESS),其属性分别表示学生姓名、选修的课程名、任课教师姓名和任课教师地址。仔细分析一下,就会发现这个模式存在下列存储异常的问题:
(1)数据冗余:数据被重复存储,如某门课程有100个学生选修,那么在R的关系中就要出现100个元组,这门课程的任课教师姓名和地址也随之重复出现100次。
(2)修改异常:修改导致数据不一致,如由于上述冗余问题,当需要修改这个激顺的地址时,就要修改100个元组中的地址值,否则就会出现地址值不一致的现象。
(3)插入异常:插入时异常,如不知道听课学生名单,这个教师的任课情况和家庭地址就无法进入数据库;否则就要在学生姓名处插入空值。
(4)删除异常:删除了不该删除的数据,如当只有一条记录时,要删除这个学生选课信息,会将课程名、教师名和教师地址都给删除了。
数据库设计
需求分析:即分析数据存储的要求和边界,产出物有数据流图、数据字典、需求说明书。
概念设计:是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。概念模型的表现形式即ER模型。
逻辑设计:主要任务是将概念设计阶段设计好的E-R图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(如:关系模式)。
物理设计:是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。
并发控制
事务的ACID特性:原子性、一致性、隔离性、持久性。
丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,此时事务2写回的数据会覆盖事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。
不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。
读脏数据:事务1对数据A进行了修改后,事务2读数据A,而后事务1回滚,数据A恢复了原来的值,那么事务2对数据A做的事是无效的,读到了脏数据:
封锁协议
X锁是排它锁(写锁)。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
S锁是共享锁(读锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的S锁。
丢失更新加锁:一级封锁协议。事务T在修改数据R之前必须先对其加X 锁,直到事务结束才释放。
读脏数据加锁:二级封锁协议。一级封锁协议加上事务T在读取数据R 之前先对其加S 锁,读完后即可释放S锁。
不可重复读加锁:三级封锁协议。一级封锁协议加上事务T 在读取数据R 之前先对其加S 锁,直到事务结束才释放。
两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。遵守两段封锁协议的事务可能发生死锁。
数据库性能优化:硬件升级、数据库设计、索引优化、查询优化。
数据库的完整性约束:实体完整性、参照完整性、用户定义完整性、触发器。
数据库的安全性:
视图(View)是从一个或多个表(或视图)导出的表。视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
视图的优点:
1、视图能简化用户的操作
2、视图机制可以使用户以不同的方式查询同一数据
3、视图对数据库重构提供了一定程度的逻辑独立性
4、视图可以对机密的数据提供安全保护
E-R图,实体,联系,联系的类型。
分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:
(1)数据独立性。在分布式数据库系统中,数据独立性这一特性更加重要,并具有更多的内容。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
(2)集中与自治共享结合的控制结构。各局部的 DBMS 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
(3)适当增加数据冗余度。在不同的场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(4)全局的一致性、可串行性和可恢复性。
分布式数据库的优点:
(1)分布式数据库可以解决企业部门分散而数据需要相互联系的问题。
(2)如果企业需要增加新的相对自主的部门来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。
(3)分布式数据库可以满足均衡负载的需要。
(4)当企业已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。
(5)相等规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此,就整个系统来说,它的可靠性是比较高的。
数据分片将数据库整体逻辑结构分解为合适的逻辑单位(片段),然后由分布模式来定义片段及其副本在各场地的物理分布,其主要目的是提高访问的局部性,有利于按照用户的需求,组织数据的分布和控制数据的冗余度。
(1)水平分片。水平分片将一个全局关系中的元组分裂成多个子集,每个子集为一个片段。分片条件由关系中的属性值表示。对于水平分片,重构全局关系可通过关系的并操作实现。
(2)垂直分片。垂直分片将一个全局关系按属性分裂成多个子集,应满足不相交性(关键字除外)。对于垂直分片,重构全局关系可通过连接运算实现。
(3)导出分片。导出分片又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片。混合分片是在分片中采用水平分片和垂直分片两种形式的混合。
分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。
(1)分片透明性是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
(2)位置透明性。位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。
(3)局部数据模型透明性。局部数据模型透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。
分布式数据库查询优化:
(1)全局查询树的变换:例如,在做笛卡尔积之前,先进行投影和选择运算。
(2)副本的选择与多副本的更新策略:多个副本存在于不同的节点,如何选择。
(3)查询树的分解:对所有节点采取后续遍历法,直到所有叶节点均被成功地遍历为止。
(4)半连接与直接连接等:不需要传递整个关系,只要传送连接时与对方匹配的元组即可。
数据仓库集成是把多种来源的数据集中在一起,建立数据仓库,所有数据都驻留在单个数据库服务器上,配置大型处理器和存储容量。数据仓库主要用于决策支持,在数据处理过程中强调分析。其特点是:(1)集成的数据。(2)面向主题。(3)数据相对稳定。(4)包含历史信息。
数据仓库的结构通常包含四个层次:
1.数据源:是数据仓库系统的基础,是整个系统的数据源泉。
2.数据的存储与管理:是整个数据仓库系统的核心。
3.OLAP(联机分析处理)服务器:对分析需要的数据进行有效集成,按多维模型组织,以便进行多角度、多层次的分析,并发现趋势。
4.前端工具:主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。
数据挖掘流程:
(1)问题定义。在开始数据挖掘之前最先也是最重要的要求就是熟悉背景知识,弄清用户的需求。
(2)建立数据挖掘库。要进行数据挖掘必须收集要挖掘的数据资源,一般需要将要挖掘的数据都收集到一个数据库中,而不是采用原有的数据库或数据仓库。
(3)分析数据。分析数据是对数据深入调查的过程。从数据集中找出规律和趋势。
(4)调整数据。通过上述步骤的操作,对数据的状态和趋势有了进一步的了解,这时,要尽可能对问题解决的要求作进一步明确化和量化。
(5)模型化。在问题进一步明确、数据结构和内容进一步调整的基础上,就可以建立形成知识的模型。
(6)评价和解释。所得到的模型有可能是没有实际意义或没有实用价值的,也有可能是其不能准确反映数据的真实意义,甚至在某些情况下是与事实相反的。
数据挖掘的分析方法
关联分析:关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。
序列分析:序列分析主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列,发现的序列应该具有普遍意义。
分类分析:分类分析通过分析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。分类分析时首先为每个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。
聚类分析:聚类分析是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。
商业智能:BI系统主要包括数据预处理、建立数据仓库、数据分析和数据展现四个主要阶段。
反规范化技术:规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。
采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。
可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据 的一致性,增加了数据维护的复杂性,会降低修改速度。
(1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。(2)增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并 避免计算或使用集合函数。
(3)重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
(4)水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
(5)垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中, 在查询时减少I/0次数。
NoSQL
Not-only SQL:是一种非关系型的数据库,其和关系数据库的比较如下:
NoSQL数据库存在的问题是:
(1)成熟度不够,大量关键特性有待实现;
(2)开源数据库产品的支持力度有限;
(3)数据挖掘与商务智能支持不足,现有的产品无法直接使用NoSQL数据库;
(4)NoSQL数据库专家较少,大部分都处于学习阶段。
内存数据库
内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。
特点:工作版本常驻内存,活动事务只与实时内存数据库的内存拷贝打交道。
常见的内存数据库:Redis、SQLite、Mircrosoft SQL Server Compact等。
6嵌入式系统(尽力)
考点:主要考察嵌入式领域以及新技术相关知识,如果是完全不懂的技术,不建议选做。将官方教材中涉及到的新技术章节及嵌入式系统章节知识补充如下(在录播案例分析-嵌入式这里有视频讲解,直播-嵌入式是整体的介绍):
通读教材:第16章 新技术应用;第17章 嵌入式系统分析与设计。
中间件技术:中间件是操作系统和应用程序之间的一类软件,实现客户端和服务器之间的互联;
中间件的基本功能包括以下6个方面:
(1)负责客户机与服务器之间的连接和通信,以及客户机与应用层之间的高效率通信机制。
(2)提供应用层不同服务之间的互操作机制,以及应用层与数据库之间的连接和控制机制。
(3)提供一个多层架构的应用开发和运行的平台,以及一个应用开发框架,支持模块化的应用开发。
(4)屏蔽硬件、操作系统、网络和数据库的差异。
(5)提供应用的负载均衡和高可用性、安全机制与管理功能,以及交易管理机制,保证交易的一致性。
(6)提供一组通用的服务去执行不同的功能,避免重复的工作和使应用之间可以协作。
主要的中间件分为五类:
远程过程调用:RPC,分布式应用程序处理方法,客户进程向服务器进程提出调用请求,客户端和服务器都有存根,客户端和服务器直接通信,是同步的。
对象请求代理:对象请求总线 ORB,两个对象之间的通信是通过代理总线来进行的,对象A先将消息发送到总线 ORB,对象B再从ORB中取到数据,所以是个代理模式,是异步的,这种模式下客户和服务器之间互不相关,都是通过0RB来通信。
远程方法调用: RMI,也有服务器和客户端,服务器创建一系列远程对象的方法,由客户端来远程调用这些方法。
面向消息的中间件:MON,利用消息通信来完成与应用无关的操作,用于扩展通信手段,消息传递与排队算法。
事务处理监控器:TPM,也称为交易中间件,应用广泛,能支持数以万计的客户端对服务器的访问,高效率,高可靠性,支持负载均衡等;介于客户端与服务器之间,处理失败返回、负载均衡等中间操作的中间件。
虚拟化技术
虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术应用非常广泛,常见的包括:
1、使用VMware软件,在Windows平台下安装linux操作系统。
2、存储的虚拟化,在云存储中,就应用到了存储的虚拟化。
3、服务器虚拟化,目前多家公司推出了虚拟化服务器,这种服务器可以用一台硬件设备,虚拟出多台服务器对外提供服务。
多核技术
多核:是多微处理器核的简称,是将两个或更多的独立处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。
多线程:是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。在一个程序中,这些独立运行的程序片段叫作"线程",利用它编程的概念就叫作"多线程处理"。
并发系统:如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统,即系统中同时有多个线程,可以认为是并发的情况。
并行系统:如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。当系统中有多个线程,并在同一时刻有两个,或两个以上的线程在运行状态,可认为是并行系统。
嵌入式系统特点
嵌入式系统是一种可深埋在某专用设备中的系统。一般而言,由于设备的体积、重量和功耗的限制,嵌入式系统将受到多种条件和环境的制约,这也对嵌入式系统提出了有别于其他计算机系统的特殊要求。通常,嵌入式系统具备以下7个特点:
(1)系统专用性强。嵌入式系统是针对具体应用的专门系统。它的个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。
(2)系统实时性强。许多嵌入式系统对外部事件要求在限定的时间内及时作出响应,具有实时性。根据实时性的强弱,通常将嵌入式系统分为实时嵌入式系统和非实时嵌入式系统,其中大部分为实施嵌入式系统。
(3)软硬件依赖性强。嵌入式系统的专用性决定了其软硬件的互相依赖性很强,两者必须协同设计,以达到共同实现预定功能的目的,并满足性能、成本和可靠性等方面的严格要求。
(4)处理器专用。嵌入式系统的处理器一般是为某一特定目的和应用而专门设计的。通常具备功耗低、体积小和集成度高等特点,能够将许多在通用计算机上需要由板卡完成的任务和功能集成到芯片内部,从而有利于嵌入式系统的小型化和移动能力的增强。
(5)多种技术紧密结合。嵌入式系统通常是计算机技术、半导体技术、电力串子技术、机械技术与各行业的具体应用相结合的产物。通用计算机技术也离不开这些技术,《但它们相互结合的紧密程度不及嵌入式系统。
(6)系统透明性。嵌入式系统在形态上与通用计算机系统差距甚大。它的输入设备 往往不是常见的鼠标和键盘之类的设备,甚至不用输出装置,用户可能根本感觉不到它 所使用的设备中有嵌入式系统的存在,即使知道,也不必关心嵌入式系统的相关情况。
(7)系统资源受限。嵌入式系统为了达到结构紧凑、高可靠性和低成本的目的,其存储容量、I/0设备的数量和处理能力都比较有限。
嵌入式数据库系统
在嵌入式设备上所使用的数据库,又称为移动数据库,包含移动设备、数据库、服务器,有下列四个特点:
设备随时移动性:主要用在移动设备上。
网络频繁断接:经常移动,受到电源、网络的限制。
网络条件多样化:使用多种不同网络与服务器通信。
通信能力不对称:上行和下行速度一般不同,取决于具体网络。
系统组成: 嵌入式数据库、同步服务器、主数据库服务器、连接网络。
关键问题:数据一致性问题、高效的事务处理、数据的安全性。
嵌入式实时操作系统
硬实时系统,硬时限:系统必须满足事件实时性要求,否则就会产生灾难性的后果,而且一旦错过,就无法挽回。
软实时系统,软时限:系统必须满足事件实时性要求,但若不满足,不会造成灾难性的后果,并且可以重新设定一个时限,再次触发一次事件。
一般研究硬时限,又可分为周期和非周期,抢占和非抢占等调度算法。
调度算法
单调执行速率调度法 RMS:是一种静态优先级调度算法,基本原则是执行最频繁的任务优先级最高,即任务的周期越短,其优先级越高。是效率最高的静态调度算法。
时间轮转调度:假设有N个优先级相同的任务,则按顺序排序,依次给每个任务分配一个相同时间的时间片,一个任务接着一个任务的执行。
最早截止时间优先调度算法:任务越早完成,优先级越高,是一种动态优先级调度算法。
优先级反转:低优先级的任务一直在执行,高优先级的任务反而不执行或者后执行,则造成了优先级反转的情况,原因一般是因为低优先级的任务B在执行时占用了临界资源而不释放,这时,高优先级任务A因为缺少临界资源,被阻塞了,无法抢占。采用临时提高任务B的优先级,使其先执行完释放临界资源的方法。
7Web应用开发(尽力)
考点:主要考察web技术和架构,会有一些新技术,如果遇到完全没见过的技术,就不选。参考系统设计-Web应用设计的内容,这里给出重点和补充。
通读教材:第16章 新技术应用-J2EE与.NET平台。
Web应用技术分类
从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务。
从缓存来看:MemCache,Redis,Squid。
从并发分流来看:集群(负载均衡)、CDN。
从数据库来看:主从库(主从复制),内存数据库,反规范化技术,NoSQL,分区(分表)技术,视图与物化视图。
从持久化来看:Hibernate,Mybatis。
从分布存储来看:Hadoop,FastDFS,区块链。从数据编码看:XML,JSON。
从Web应用服务器来看:Apache,WebSphere,Weblogic,Tomcat,JBOSS,IIS。
其它:静态化,有状态与无状态,响应式Web设计。
单台机器到数据库与Web服务器分离
集群:
(1)应用服务器集群;
(2)主从集群。
应用服务器集群
系统演变到这里,将会出现问题:
用户的请求由谁来转发到具体的应用服务器;
用户如果每次访问到的服务器不一样,那么如何维护session的一致性。
负载均衡技术:
(1)应用层负载均衡:http重定向、反向代理服务器;
(2)传输层负载均衡:DNS 域名解析负载均衡、基于 NAT 的负载均衡;
(3)硬件负载均衡:F5;
(4)软件负载均衡:LVS、Nginx、HAproxy。
负载均衡技术
负载均衡算法
静态算法(不考虑动态负载):
轮转算法:轮流将服务请求(任务)调度给不同的节点(即:服务器)。
加权轮转算法:考虑不同节点处理能力的差异。
源地址哈希散列算法:根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。
目标地址哈希散列算法:根据请求目标IP做散列找出对应节点。
随机算法:随机分配,简单,但不可控
动态算法(考虑动态负载)
最小连接数算法:每个节点处理能力相同的情况下,新请求分配给当前活动请求数量最少的节点。加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。
加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。
应用层负载均衡技术
1、http重定向。HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。
特点:实现简单,但性能较差。
2、反向代理服务器。在用户的请求到这反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache,nginx都可以充当反向代理服务器。
特点:部署简单,但代理服务器可能成为性能的瓶颈。
传输层负载均衡技术
1、DNS域名解析负载均衡。DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。
特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
2、基于NAT的负载均衡。基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。
特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
数据库读写分离化
用缓存缓解库读取压力
MemCached是一个自由开源的,高性能,分布式内存对象缓存系统。简洁的key-value存储系统。通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
CDN
CDN的全称是Content Delivery Network,即内容分发网络。
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
REST(表述性状态传递)
REST(Representational State Transfer,表述性状态转移)是一种只使用HTP和XML进行基于Web 通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
REST的5个原则
(1)网络上的所有事物都被抽象为资源。
(2)每个资源对应一个唯一的资源标识。
(3)通过通用的连接件接口对资源进行操作。
(4)对资源的各种操作不会改变资源标识。
(5)所有的操作都是无状态的。
微服务
微服务架构建议将大型复杂的单体架构应用划分为一组微小的服务,每个微服务根据其负责的具体业务职责提练为单一的业务功能:每个服务可以很容易地部署并发布到牛产环境里隔离和独立的讲程内部,它可以很容易地扩展和变更;对于一个具体的服务来说可以采用任何适用的语言和工具来快速实现:服务之间基于基础设施互相协同工作。
微服务的优势:
(1)解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。
(2)让每个服务能够独立开发,开发者能够自由选择可行的技术,让服务来决定API约定。
(3)每个微服务都能独立配置,开发者不必协调对于本地服务配置上的变化,这种变化一旦测试完成就被配置了。
(4)让每个服务都可以独立调整,你可以给每个服务配置正好满足容量和可用性限制的实例数。
微服务架构带来的挑战:
(1)并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的
(2)部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。
(3)性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟。
(4)数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。
微服务与SOA比较
缓存技术
MenCache: Memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcache通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Redis:Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Squid: Squid是一个高性能的代理缓存服务器,Squid支持FTP,gopher、HTTPS和HTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
Redis与Memcache的差异
1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。他们都支持key-value数据类型。同时 Memcache 还可用于缓存其他东西,例如图片、现频等等,Redis还支持list、set、hash 等数据结构的存储。
2、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,Memcache挂掉之后,数据就没了。
3、灾难恢复—Memcache挂掉后,数据不可恢复;Redis数据丢失后可以恢复。
4、在Redis中,并不是所有的数据部一直存储在内存中的。这是和Memcache相比一个最大的区别。当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。
5、Redis 在很多方面支持数据库的特性,可以这样说他就是一个数据库系统,而Mencache 只是简单地K/V缓存。
所以在选择方面如果有持久方面的需求或对数据类型和处理有要求的应该选择Redis。
如果简单的key/value存储应该选择Memcache。
XML和JSON
扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML的优点
格式统一,符合标准;
容易与其他系统选行远程交互,数据共享比较方便。
XML的缺点
XML文件庞大,文件格式复杂,传输占带宽;
服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂日不易维护;
客户瑞不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
服务器端和客户端解析XML花费较多的资源和时间。
JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
JSON的优点
数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
支持多种语言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等服务器端语言,便于服务器端的解析;
因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,旦完成任务不变,并且易于维护。
JSON的缺点
没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性。
Web应用服务器
WEB应用服务器可以理解为两层意思:
(1)WEB 服务器:其职能较为单一,就是把浏览器发过来的 Reques 位请求,返回 Html 页面。
(2)应用服务器:进行业务逻辑的处理。
Apache:Web服务嚣,市场占有率达60%左右。它可以运行在几乎所有的Unix、Windows、Linux 系统平台上。
IIS早期Web服务器,目前小规模站点仍有应用。
Tomcat:开源、运行servlet和JSPWeb应用软件的基于Java的Web应用软件容器。
JBOSS:JBOSS是基于J2EE的开放源代码的应用服务器,一般与Tomcat或Jetty绑定使用。
WebSphere: 一种功能完善、开放的Web应用程序服务穗,宫是基于Java 的应用环镜,用于建立、部署和管理Internet 和IntranetWeb 应用程序。
Weblogic:BEA Weblogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。
Jetty:Jetty是一个开源的servlet容器,是基于Java的web容器。
有状态和无状态
无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的
响应式Web 设计
是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。
方法与策略
(1)采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
(2)响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。
WEB应用开发
MVC:MVC强制性地把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离,形成了三个核心模块 :
(1) 控制器(Controller):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
(2) 模型(Model):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。模型表示业务数据和业务逻辑。
(3) 视图(View):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理:
MVP:MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系, 由Presenter充当桥梁,做到View-Model之间通信的完全隔离。
MVVM:MVVM模式和MVC模式类似,主要目的是分离视图(View)和模型(Model)
J2EE核心技术
J2EE 平台采用了多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件被分别部署到不同的机器中。
四层结构:
JSP+Servlet+JavaBean+DAO
JSP:用于显示、收集数据的部分。作为MVC中的视图V。
Servlet:作为业务逻辑层,用于处理复杂的业务逻辑,如验证数据、实例化JavaBean、调用DAO连接数据库等。作为MVC中的控制器C。在其中会调用Service方法处理服务。
JavaBean:用于数据的封装,方便将查询结果在servlet与jsp页面之间进行传递等。
DAO:用于连接数据库及进行数据库的操作如:查询、删除、更改等。
DAO与JavaBean合在一起为MVC中的模型M。
基本流程:JSP发一个数据到servlet,servlet收到后做下解析再根据数据调用相应的service去服务,service如果有要调用数据库就通过DAO跟数据库交互,使用javaBean完成封装,返回结果给servlet,servlet再返回给JSP。
Bean 的分类:
(1)会话Bean:描述了与客户端的一个短暂的会话。
(2)实体Bean:持久化数据,O/R 映射。
(3)消息驱动 Bean:会话 Bean+JMS,客户把消息发送给 JMS 目的地,然后,JMS 提供者和 EJB 容器协作,把消息发送给消息驱动Bean。支持异步消息。
SOA
◆ WEB Service
服务提供者、服务注册中心(中介,提供交易平台,可有可无)、服务请求者。服务提供者将服务描述发布到服务注册中心,供服务请求者查找,查找到后,服务请求者将绑定查找结果。如图
◆服务注册表
(1)服务注册:应用开发者(服务提供者)在注册表中公布服务的功能。
(2)服务位置:服务使用者(服务应用开发者),帮助他们查询注册服务,寻找符合自身要求的服务。
(3)服务绑定:服务使用者利用检索到的服务接口来编写代码,所编写的代码将与注册的服务绑定,调用注册的服务,以及与它们实现互动。
◆企业服务总线ESB:简单来说是一根管道,用来连接各个服务节点。ESB的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。
◆包括:客户端(服务请求者)、基础架构服务(中间件)、核心集成服务(提供服务)。
◆ ESB特点:
1、SOA的一种实现方式,ESB在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合;
2、描述服务的元数据和服务注册管理;
3、在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等;
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。