连续复制
一键复制
一键打包

第1章 计算机系统知识

一 计算机硬件组成

1. 五大组成部件

  • 运算器

  • 控制器

  • 存储器(内存、外存、cache)

  • 输入设备

  • 输出设备
    CPU = 运算器 + 控制器

主机 = CPU + 存储器

2. 中央处理器 CPU

  • 组成:运算器、控制器、寄存器组、内部总线

  • 功能:程序控制,操作控制,时间控制,数据处理功能

  • 运算器组成(执行算数和逻辑运算,并进行逻辑测试,如与或非比较等)

    • 算数逻辑单元ALU:实现对数据的算数和运算逻辑

    • 累积寄存器AC:运算结果和源操作数的存放区

    • 数据缓冲寄存器DR:暂时存放内存指令和数据

    • 状态条件寄存器PSW:保存运行结果的条件码内容

  • 控制器组成:(控制整个CPU的工作,最为重要,包括程序控制、时序控制等)

    • 指令寄存器IR:暂存CPU执行指令

    • 程序计数器PC:存放指令执行地址

    • 地址寄存器AR:保存当前CPU所访问内存地址

    • 指令译码器ID:分析指令操作码
      软件设计师教程知识点整理

3. 存储器

  • 存储器结构(速度从高到低):寄存器 -- 高速缓存Cache -- 主存 -- 外存

二 计算机体系结构

1. 计算机体系结构分类

  • Flynn分类法
    软件设计师教程知识点整理

2. 指令系统

  • 复杂指令系统 CISC : 兼容性强,长度可变,有微程序实现

  • 精简指令系统 RISC:指令少,使用频率接近,主要依靠硬件实现
    软件设计师教程知识点整理

3. 指令流水线原理

  • RISC流水线技术

    • 1)超流水线(时间换空间)

    • 2)超标量(空间换时间)

    • 3)超长指令字VLIM(执行多条指令,发挥软件作用)
      软件设计师教程知识点整理

  • 流水线时间计算:

    设:总指令数为 n ; 单条指令总执行时间为 t单 ; 单条指令在流水线中耗时时间最长段时间 t周
    流水线周期: 指令执行时耗时最长的那个时间段 公式为: t周
    流水线执行总时间: 单条指令总执行时间 + (指令数 - 1) * 流水线周期 公式为: t总 = t单 + (n-1)* t周
    流水线吞吐率: 总指令数 / 流水线执行总时间 公式为:( n / t总 ) = ( n / t单 + (n-1)* t周 )

3. 总线结构

  • 按功能分:总线的分类:数据总线(DB),地址总线(AB),控制总线(CB)

  • 按位置分:

    • 内部总线(处理器内部通信总线)

    • 外部总线(设备一级的总线,计算机外部设通信的总线)

第2章 程序设计语言基础知识

一 程序设计语言概述

  • 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导

1. 各语言特点

  • 低级语言:机器语言(计算机硬件只能识别0和1的指令程序),汇编语言

  • 高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近

语言特性
Fortran语言,科学计算,执行效率高
Pascal语言,为教学而开发的,表达能力强,delphi
C语言,指针操作能力强,高效
Lisp语言,函数式程序语言,符号处理,人工智能
C++语言,面向对象,高效
Java语言,面向对象,中间代码,跨平台
C#语言,面向对象,中间代码,.NET
Prolog语言,逻辑推理,间接性,表达能力强,数据库和专家系统

2. 解释和编译

  • 都是将高级语言翻译成计算机硬件认识的及其语言。

  • 编译:生成独立的可执行文件,直接运行,运行时无法控制源程序,效率高。

  • 解释:不生成可执行文件,可以逐条解释执行,用于调试模式,可以控制源程序,因为还需要控制程序,因此执行速度慢,相对于编译效率低。

3. 程序语言组成

  • 语法(一组规则)

  • 语义(语法成分的含义)

  • 语用(构成语言的各个记号和使用者的关系)

二.程序设计语言的基本成分

1. 数据成分

是一种程序设计语言的数据和数据类型,数据分为常量(程序运行时不可改变)、变量(可以改变)、全局量(存储空间在静态数据区分配)、局部量(存储空间在堆栈区分配)

2. 数据类型有:

整型、字符型、双精度、单精度浮点型、布尔型等

3. 运算成分:

指明允许使用的运算符号即运算规则,包括算数运算、逻辑运算、关系运算、位运算等。

4. 控制成分:

指明语言允许标书的控制结构。包括顺序结构、选择结构、循环结构(初始化+循环体+循环条件)
软件设计师教程知识点整理

5. 传输成分:

指明语言允许的数据传输方式。如:赋值处理、数据的输入输出等

6. 函数:

C程序有一个或多个函数组成,每个函数都有一个名字,其中有且仅有一个名字为main函数作为运行时的起点。函数式程序模块的主要成分,是一段具有独立功能的程序。函数使用涉及三个概念:函数定义、函数声明(先声明后使用)、函数调用

7 调用:

  • 传值调用:将实参的值传递给形参,形参的改变不会导致调用点所传的实参的值改变。实参可是是合法的变量、常量、表达式

  • 传址调用:即引用调用,将实参的地址传值给形参,即相当于实参存储单元的地址引用,因此其值改变的同时就改变了实参的值,实参不能为常-量,只能是合法的变量和表达式。

  • 因此,在编程时,要改变参数值,就传址,不改变,就传值

三.编译程序基本原理

1. 功能:

是把高级语言书写的程序翻译成汇编语言或机器语言
分为6个阶段:

  • 1.词法分析:对源程序字符进行扫描根据构词规则识别单词(也称单词符号或符号)

  • 2.语法分析:逻辑阶段,根据识别的单词组合成各类语法短语,如:程序,语句,表达式等,分析判断源程序在结构是否正确

  • 3.语义分析:逻辑阶段,对结构上正确的源程序进行上下文有关性质的审查。如:类型匹配、除法除数不为0等。分为静态语义错误(编译阶段能够发现)、动态语义错误(运行时能发现)

  • 4.中间代码和目标代码生成:中间代码是语义分析产生的需要经过优化链接,最终生成可执行的目标代码。引入中间代码的目的是进行与机器无关的代码优化处理。常用的中间代码有后缀式(逆波兰式)、三元式(三地址码)、四元式和树等形式。
    软件设计师教程知识点整理

2. 文法定义:

  • 2.1 形式文法四元组G=(V,T,S,P)
    1.S: 文法开始符号
    2.V: 不是语言组成部分,可理解为占位符;非终结符:能够推导出其他元素
    3.P:产生式。用终结符替代非终结符的规则;即非终结符推导出终结符的公式
    4.T: 终结符,语言组成部分,是最终结果;不能推导出其他元素

  • 2.2 闭包:如下图,一般闭包可以为0个的情况代付运算
    软件设计师教程知识点整理

  • 2.3 文法类型:
    软件设计师教程知识点整理

    • 1型 -》 语义分析(上下文有关)

    • 2型 -》 语法分析(上下文无关)

四.正规式

软件设计师教程知识点整理

五.有限自动机

软件设计师教程知识点整理

例:如下图:S 开始,ACB转换,F 两个圈是最终结果

软件设计师教程知识点整理

S输入1,得到A输入0 得到F
S输入1,得到A输入1 ,得到C输入0,1 得到F
S输入0,得到B输入0 得到F
S输入0,得到B输入1,得到C输入0,1 得到F
每一条线路都是唯一的,得出此图为确定有限自动机
  • 确定有限自动机:输入同一个值,得出的后继是唯一的

  • 不确定的有限自动机:输入同一个值,得出多个后继,下面例子是不确定的

例:S输入1,得到B
S输入1,得到A

六.语法分析方法

1. 自上而下语法分析:

最左推导,从左至右。给定文法G和源程序串r,从G的开始符号出S出发,通过反复使用产生式对举行中的非终结符进行替换(推导),逐步推出r
递归下降:利用函数之间的递归调用模拟语法树自上而下的构造过程,是一种自上而下的语法分析方法

2. 自下而上语法分析:

最右推导,从右至左
移进-归约思想:设置一个栈,将输入符号逐个移进栈中,栈顶形成某产生式的又不时,就用左部去替换,称为归约。从右部推导出左部,是一种自下而上的语法分析方法

第3章 数据结构

一.线性结构

1. 概念

  • 每个元素最多只有一个出度和一个入度,表现为一条线装.线性表按照存储范式分为顺序表和链表.

2. 存储结构

  • 顺序存储: 用一组地址联系度的存储单元一次存储线性表中的数据元素,使得逻辑上相邻的元素物理上也相邻

  • 链式存储: 存储各数据元素的结点的地址并不要求是连续的,数据元素逻辑上相邻,物理上分开

3. 线性表

  • 顺序存储和链式存储的对比
    软件设计师教程知识点整理

软件设计师教程知识点整理

  • 空间性能: 因为链表还要存储指针,所以有空间浪费的情况,因此密度小与顺序存储,因为可以动态改变容量分配更优化

  • 时间方面: 因为指针的存在,每次查找需要耗费更多的时间,因此读取和查找顺序表更优,但是删除和插入因为顺序表每次操作完后需要依次前移或后移,因此链式更优

4. 单链表(线性表的一种)

  • 单链表的插入和删除
    软件设计师教程知识点整理

上图中p所执行的节点后插入s指向的节点,操作为:(像是变量赋值)
s->next = p ->next;
p->next=s;
同理,在单链表中删除p所指向节点的后继节点q时,操作为:
p->next=p->next->next;
free(q)

5. 栈和队列

  • 队列: 先进先出,分队尾和队头

  • 栈: 先进后出,只有栈顶能进出
    软件设计师教程知识点整理

  • 循环队列: 当指针指向第一个元素,尾指针指向最后一个元素的下一个位置,因此队列空时:head=tail,队列满时:head=tail,这样就无法区分了.因此队列少存一个元素,这样队列满时:tail+1=head.而考虑是循环队列,必须除以最大元素数来取余数,即(tail+1)%size=head.

  • 循环队列长度公式为:(Q.tail-Q.head)%size

  • 优先队列: 元素被赋予优先级.当访问元素时,具有最高优先级的元素最先删除.使用堆来存储,因为其不是按照元素进队列的顺序决定的.

6. 串

字符串是一种特殊的线性表,其数据元素都为字符
子串: 长度为0的字符串,没有任何字符.
空格串: 有一个或多个空格组成的串,空格是空白字符串,占一个字符长度
子串: 串中任意长度的连续字符构成的序列成为子串.含有子串的串为主串,空串是任意串的子串
串的模式匹配算法: 子串的定位操作,用于查找子串在串中第一次出现的位置的算法.
基本的模式匹配算法: 也称为布鲁特一福斯算法,子串从头依次开始匹配,直到匹配成功就称为子串
KMP算法: 是对基本模式匹配算法的改进: 每当匹配过程中出现相比较的字符不相等时,不需要回溯主串的字符位置指针,而是利用已经得到的”部分匹配”结果将模式串向有”滑动”尽可能远的距离,再继续比较.

7. 数组

  • 数组是定长线性表的扩展,N维数组是一个”同构”的数据结构,其每个数据元素类型相同,结构一致
    软件设计师教程知识点整理

可以表示为行向量形式或者列向量形式线性表,单个关系最多只有一个前驱和一个后继,本质是线性的.

  • 数组结构特点: 元素数目固定,元素类型相同,下标关系具有上下界的约束且有下标序列一般不做插入和删除运算,适用于顺序结构

  • 数组存储地址计算: 假设每个元素占用存储长度len,起始地址a
    软件设计师教程知识点整理

8. 矩阵

  • 特殊矩阵: 矩阵中的元素(或非0的元素)的分布有一定的规律.常见的特殊矩阵有对称矩阵,三角矩阵,对角矩阵

  • 稀疏矩阵: 在一个矩阵中,若非零元素的个数远远少于零元素个数,且非零元素的分布没有规律.

  • 存储方式为三元组结构,即存储每个非零元素的(行,列,值)
    软件设计师教程知识点整理

二.广义表

1. 概念:

广义表是线性表的推广,是由0个或多个单元素或字表组成的有限序列.

2. 广义表与线性表的区别:

  • 线性表的元素都是结构上不可分得单元素,而广义表的元素即可以单元素,也可以是有结构的表.

  • 广义表一般记为: LS=(a1,a2,a3,.....an)

  • 广义表中,LS 是表名,ai是表元素,它可以是子表,也可以是单元素.

  • n是广义表的长度,n=0的广义表为空表;而递归意义的重数就是广义表的深度,即定义中包含括号的重数(单边括号的个数, 原子的深度是0, 空表的深度为1 )

  • head()取表头:
    可以是第一个表元素,也可以是子表也可以是单元素

  • tail()取表尾:
    除了第一个表元素,其它所有表元素构成的表称为表尾.非空广义表的表尾必定是一个表,即使表尾是单元素

三.树

1. 概念:

  • 树结构是一种非线性结构,树中的每一个数据元素可以有两个或两个以上的直接后继元素,用来描述层次结构关系

  • 树是n个节点的有限集合(n>=0),单n=0时称为空树,在任一颗费空树中,有且仅有一个根节点;其余节点可分为m(m>0)个互不相交的有限子集T1,T2,....Tm其中每个Ti又都是一棵树,并且成为根节点的子树.
    软件设计师教程知识点整理

软件设计师教程知识点整理

四.二叉树

1. 二叉树概念

  • 二叉树是个n个节点的有限集合,它或者是空树,或者是一个节点及两颗互不相交的且分别成为左,右子树的二叉树所组成.与树的区别在于每个根节点最多只有两个孩子节点.

  • 二叉树的特性:
    软件设计师教程知识点整理

2. 二叉树的存储结构

  • 二叉树的存储结构

    • 用一组连续的存储单元,从上到下,从左到右依次存储每个节点
      软件设计师教程知识点整理

    • 深度为K的完全二叉树,除k层外,其余每层 中节点数都是上一层的两倍,因此,从一个节点的标号可推知其双亲,左海子,右孩子节点的编号.
      假设节点为i

  • 二叉树的链式存储结构
    一般用二叉树表来存储二叉树节点,二叉树表中除了节点本身的数据外,还存储有左孩子节点的指针,右孩子节点的指针,即有一个数据+两个指针.

每个二叉链表节点存储一个二叉树节点,头指针则指向根节点.

3. 二叉树的遍历

软件设计师教程知识点整理

4. 线索二叉树

  • 使用线索二叉树目的:
    获取节点的前驱后后继信息

  • 使用线索二叉树原因:
    二叉树的链式存储只能获取到某节点的左孩子和右孩子节点,无法获取其遍历时的前驱和后继节点.因此可以在链式存储中增加两个指针域,使其分别指向前驱和后继节点,但是这样太浪费存储空间

  • 可考虑以下实现方法:
    若N个节点的二叉树使用二叉链表存储,必然有N+1个空指针域,利用这些空指针来存放节点的前驱和后继节点信息,为此,需要增加两个标志,以区分指针域存放的到底是孩子几点还是遍历节点,如下:

软件设计师教程知识点整理

5. 最优二叉树

  • 哈夫曼树: 最优二叉树

  • 路径: 两个节点之间的通路

  • 节点路径长度: 路径上的分支数目

  • 权: 节点代表的值

  • 节点带全路径长度: 节点路径长度 * 节点的值

  • 数的路径长度: 根节点->每一个子节点路径长度 之和

  • 输的带权路径长度(输的代价) : 所有子节点带权路径长度 之和
    软件设计师教程知识点整理

软件设计师教程知识点整理

五.树和森林

1.树的存储结构

  • 双亲表示法: 用一组连续的地址单元存储树的节点,并在每个节点中附带一个指示器,指出其双亲节点所在数组元素的下标.

  • 孩子表示法: 在存储结构中用指针指出节点的每个孩子,为树中的每个节点的孩子建立一个链表.

  • 孩子兄弟表示法: 又称为二叉链表表示法,为每个存储节点设置两个指针域,分别指向该节点的第一个孩子和下一个兄弟节点.

2.树和森林的遍历

由于树中的每个节点可能有多个子树,因此遍历树的方法有两种:
先根遍历: 先访问根节点,再依次遍历根的各颗子树.
后根遍历: 先遍历根的各颗子树,再访问根节点.
森林中有很多颗树,森林的遍历方法也分为两种,与树的遍历类似,就是对森林中的每颗树都依次做先根遍历或后根遍历.

3.树和二叉树的转换

规则是: 树的最左边节点作为二叉树的左子树,树的其他兄弟节点作为二叉树的右子树节点.
示例如下图: 采用连线法,将最左边节点和其兄弟节点都连接起来,而原来的父节点和兄弟节点的连线则断开,这种方法最简单:
软件设计师教程知识点整理

4.查找二叉树

查找二叉树上的每个节点都存储一个值,且每个节点的所有左孩子节点值都小于父节点值,而所有右孩子节点值都大于父节点值,是一个有规则排列的二叉树,这种数据结构可以方便查找,插入等数据操作.
二叉排序树的查找效率取决于二叉排序树的深度,对于结点个数相同的二叉排序树,平衡二叉树的深度最小,而单枝树的深度是最大的,故效率是最差的.
软件设计师教程知识点整理

5.平衡二叉树

平衡二叉树: 特点是所有左子树值小于根节点值,所有右子树值大于根节点值,而这个节点可以构造出多个不同的二叉树,并不唯一,因此提出平衡二叉的概念.在查找二叉树的特点基础上,要求每个节点的平衡度只能为0或1或-1.
节点的左右子树深度就是其左右子树各自的层数,而后将左子树深度减去右子树深度,就得到了该节点的平衡度,因此,平衡二叉树就是任意左右子树层次相差不超过1

六.图

软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理

第4章 计算机操作系统知识

一. 操作系统知识基础

  • 特征:并发性、共享性、虚拟性、不确定性

  • 功能:进程管理、存储管理、文件管理、作业管理

  • 分类:批处理操作系统、分时操作系统、实施操作系统、网络操作体统、分布式操作系统、微机操作系统、嵌入式操作系统

嵌入式操作系统初始化过程按照自底向上、从硬件到软件次序:芯片级初始化(微处理的初始化)->板级初始化(板卡和其它硬件设备初始化)->系统初始化(软件及操作系统)

二. 进程管理

1. 进程的组成和状态

  • 进程的组成:进程控制快PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)

  • 进程的三态图和五态图
    软件设计师教程知识点整理

  • 进程前趋图和进程资源图
    软件设计师教程知识点整理

    • 进程阻塞:资源已全部分配完,进程请求资源无法获取,如上图P2

    • 非阻塞节点:资源还有剩余,进程请求资源可以分配,进程能够执行,如上图P1、p3

    • 死锁:当一个资源图中所有进程都是阻塞节点时,进入死锁状态

2. 进程间的同步和互斥

软件设计师教程知识点整理

3. 死锁问题

  • 死锁产生的四个必要条件:资源互斥、每个进程占有资源并等待其他资源、系统不能剥夺进程资源、进程资源图是一个环路

  • 死锁资源计算

    • 有n个进程,每个进程需要R个资源,其发生死锁的最大资源数为 n * (R-1)

    • 不发生死锁的最小资源数为 n * (R-1) + 1

三. 存储管理

  • 主要是 主存 和 外存之间的管理(就是内存和硬盘之间的数据置换)

  • 地址重定位:将逻辑地址转为实际物理地址的过程,分为静态重定位(程序运行前已经装入主存)、动态重定位(边运行边转换)

1. 分区存储

  • 静态分区,动态分区,重定位分区

  • 将某进程运行需要的内存整体一起分配给它

  • 缺点:进程需要的内存比较大时无法满足,进程无法运行

2. 页式存储

  • 页式存储是: 逻辑页号 对应 物理块号(页帧号)

  • 页号:对应物理块号,位数表示了有多少页(16-31;16位 2的16方个页面)

  • 页内地址:物理偏移地址,位数表示了每个页的大小(0-15;16位 2的16方=64KB)每个页的大小是固定一样的
    软件设计师教程知识点整理

  • 快表:是一种很快的页面

    • 是一种小容量的相联存储器,有快速存储器组成,按内容访问,速度快,快且可以从硬件上保证内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号

    • 快表是将页面存储于cache中;慢表将页面存储于内存上

    • 快表是访问一次cache和一次内存,因此更快(chche取页号组成物理地址,内存取页内地址数据);慢表需要访问两次内存才能取出页(内存取页号组成物理地址,内存取页内地址数据)

3. 段式存储

  • 页式存储是: 逻辑页号 对应 物理块号(页帧号)

  • 段号:对应物理块号,位数表示了有多少页(16-31;16位 2的16方个页面)

  • 段内地址:表示这个段的大小,位数表示了每个段的大小(0-15;16位 2的16方=64KB)每个段的大小是不一样的

  • 真实内存地址是:段号 =》 (基址:段内开始的地址)40K + 30K(段长:表示这个段的大小(段长<段内地址))
    软件设计师教程知识点整理

4. 段页式存储

软件设计师教程知识点整理

四. 设备管理

1. 设备分类

  • 数据组织分类:块设备、字符设备

  • 资源分配角度分类:独占设备、共享设备、虚拟设备

  • 数据传输速率分类:低速设备、中速设备、高速设备

2. I/O 软件层次结构

软件设计师教程知识点整理

3. 输入输出技术

  • 程序控制方式(查询):CPU主动查询外设是否完成数据传输,效率极低

  • 程序终端方式:外设完成数据传输后,向CPU发送终端,等待CPU传输数据,效率先对较高,适用于键盘等实时性较高的场景

  • DMA方式(直接主存存取):CPU只完成必要的初始化等操作吗,数据传输整个过程都有DMA控制器来完成,在主存与外设之间建立直接的数据通路,效率高。适用于硬盘等高速设备。

4. 虚设备和Spooling技术

软件设计师教程知识点整理

五. 文件管理

1. 文件索引

  • 每个物理块大小为 1kb,每个物理块地址为 4B

  • 直接索引:存放物理块数据 1kb

  • 一级间接索引:存放物理块地址,每个物理块可以存放 1kb / 4B = 1024 / 4 = 256 个物理块地址,每个物理块 1kb, 就是一共 256 * 1 kb

  • 二级间接索引:存放一级索引地址,每个物理块可以存储 256 个一级地址索引,每个一级地址可以存储256个物理块地址,就是 256 256 个物理块,每个物理块 1kb,大小是 256 256 * 1 kb
    软件设计师教程知识点整理

2. 文件目录树形结构

软件设计师教程知识点整理

第5章软件工程基础知识

一. 概述

1.软件工程基本原理:

用分阶段的生命周期计划严格管理/坚持进行阶段评审/实现严格的产品控制/采用现代程序设计技术/结果应能清楚的审查/开发小组的人员应少而精/承认不断改进软件工程实践的必要性.

2.软件工程的基本要素

方法 工具 过程

3.软件生存周期

可行性分析与项目开发计划/需求分析/概要设计(选择系统解决方案,规划子系统)/详细设计(设计子系统内部具体实现)/编码/测试/维护

4.软件过程

  • 4.1能力成熟度CMM模型
    对软件组织化阶段的描述,随着软件组织定义、实施、测量、控制和改进软件过程,软件组织的能力经过这些节点逐步提高。

    • 初始级 Initial:杂乱无章、混乱、无明确定义步骤,依靠个人努力和英雄式人物的作用

    • 可重复级 Repeatable:建立例基本的项目管理过程和实践来跟踪项目费用、速度和功能特性。有必要的过程准则来重复以前在同类项目的成功

    • 已定义级 Defined:过程已经文档化、标准化,依靠标准软件过程来开发和维护软件

    • 已管理级 Managed:制定了软件过程和产品质量的详细度量标准,并且被开发组织的成员所熟悉

    • 优化级 Optimized:加强了定量分析,产品反馈、新观念、新技术等是过程能够不断持续改进
      软件设计师教程知识点整理

  • 4.2能力成熟度CMMI模型

    • 4.2.1 阶段型模型,关注组织的成熟度,五个成熟度模型如下

      • 初始的:过程不可预测且缺乏控制

      • 已管理的:过程为项目服务

      • 已定义的:过程为组织服务

      • 定量管理的:过程已度量和控制

      • 优化的: 集中于过程改进

    • 4.2.2 连续型模型,关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级

      • CL0-未完成的:过程域未执行或未得到CL1中定义的所有目标

      • CL1-未执行的:过程将可表示的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标

      • CL2-已管理的:以管理的过程的制度化

      • CL3-已定义的:已定义的过程的制度化

      • CL4-定量管理的:可定量管理的过程的制度化

      • CL5-优化的:使用量化手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域

二. 软件过程模型

即软件开发模型,是软件开发全部过程、活动和任务的结构框架

1. 瀑布模型 Waterfall Model

  • 1.1 瀑布模型SDLC

    • 结构化方法中的模型,是结构化的开发。

    • 开发流程如同瀑布一般,一步一步的走下去,知道最后完成项目开发

    • 适用于需求明确或者二次开发(需求稳定),当需求不明确时,最终开发的项目会错误,有很大的缺陷。
      软件设计师教程知识点整理

  • 1.2 瀑布模型V模型

    • 时瀑布模型的一个变体

    • 特点是增加了很多轮测试,并且这些测试贯穿于开发的各个阶段,不想其他模型都是软件开发完再测试。

    • 很大程度上确保了项目的准确性
      软件设计师教程知识点整理

2. 增量模型 Incremental Model

  • 增量模型:适用于需求不明确的项目,首先开发核心模块功能,然后与用户确认,之后再开发次核心模块的功能。即每一次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付。

  • 特点:不是从系统整体的角度划分整个模块,因此不利于模块划分。难点在于如何将客户需求划分为多个增量。与原型不同的是:增量模型的每一次增量版本都是可独立操作的作品,而原型的构造一般是为了演示
    软件设计师教程知识点整理

3. 演化模型

  • 3.1 原型 Prototype Model

    • 即快速原型开发,与瀑布模型相反,原型针对的就是需求不明确的情况

    • 首选快速构造一个功能模型,演示给用户看,病案用户要求进行更改,中间再通过不断的演示和用户沟通,最终设计出项目,就不会出现于客户需求不符合的情况,采用的是迭代的思想
      软件设计师教程知识点整理

  • 3.2 螺旋模型 Spiral Model

    • 是多种模型的混合,针对需求不明确的项目,与原型类似,但是增加了风险分析

    • 四步:制定计划->风险分析->实施工程->用户评估
      软件设计师教程知识点整理

4. 喷泉模型

  • 是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。是开发过程具有迭代性和无间隙性。

5. 基于构件的开发模型 Componment-based Development Model

  • 利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成产品软件的构件

  • 特点是增强了复用性,在系统开发的过程中会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本

6. 形式化开发模型

  • 建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明

7. 统一过程模型UP

  • 初始阶段: 需求和风险评估

  • 精华阶段: 需求分析和架构设计

  • 构建阶段: 实现过程

  • 移交阶段: 测试,增量,交付

8. 敏捷开发

针对小型项目,

主要是为了给程序员减负,
去掉了一些不必要的会议和文档。
开发宣言:个体和沟通胜过过程和工具,可以工作的软件胜过面面俱到的文档,客户胜过合同谈判,响应变化胜过遵循计划。
软件设计师教程知识点整理

  • 8.1 结对编程:一个程序员开发,另一个审查代码,共同负责

  • 8.2 自适应开发:强调开发的适应性。

  • 8.3 水晶方法:针对每一个项目需要一套不同的策略、约定和方法论

  • 8.4 极限编程XP:强调简化、沟通、反馈、勇气。计划赶不上变化,无需做出很多文档,测试优先

  • 8.5 并列争球法:一种迭代的增量化过程,每隔一段时间30天一次的迭代称为一个冲刺,按需求优先级,多个组织和小组并行递增实现产品

  • 8.6 敏捷统一过程AUP:大型上连续,小型上迭代构建软件系统。

三 软件需求分析

1. 需求分类

  • 1.1 按需求内容分类
    业务需求:有客户提出的宏观的一个功能需求
    用户需求:设计员去调查需求中设计到的每个用户的具体需求。
    系统需求:经过整合,形成最终的系统需求,包括功能、性能、设计约束三个方面的需求。

  • 1.2 从客户角度分类
    基本需求:需求明确规定的功能
    期望需求:除了基本需求外,客户认为利索应当包含在内的其它功能。
    兴奋需求:未要求的需求和其它功能,会兰妃项目开发时间和成本

  • 1.3 软件需求分类
    功能需求:软件必须完成的基本需求
    性能需求:软件和人与软件交互的静态或动态数值需求,如西戎响应速度、处理速度等。
    设计约束:受其他标准硬件限制等方面的影响
    属性:可用性、安全性、可维护性、可转移性
    外部结构需求:用户接口、硬件接口、软件接口、通信接口

2. 需求工程

  • 2.1 需求获取:收集资料、讨论会JRP、用户访谈、书面调查、现场观摩、参加业务实践、阅读历史文档、抽样调查

  • 2.2 需求分析与协商:分析不同人提出的所有需求之间的关系并判断

  • 2.3 需求规约:即需求定义,目的是为了编写需求文档,在双方间达成一个共识

  • 2.4 需求验证:需求开发节点的复查手段,需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线

  • 2.5 需求管理:对需求工程设计的所有过程进行规划和控制

3. 需求管理

  • 3.1 定义需求基线:通过了评审的需求说明书就是需求基线,下次如果需要变更需求,就需要按照流程来一步步进行

  • 3.2 处理需求变更:主要关系需求变更过程中的需求风险管理,带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增减、模棱两可的需求、不必要的特性、过于精简的srs,不准确的估算。

  • 3.3 需求跟踪:双向跟踪,两个层次,正向跟踪表示用户原始需求是否都实现了,反向跟踪表示软件实现的是否都是用户要求的,不多不少。
    软件设计师教程知识点整理

四 软件系统设计

  • 1 系统设计阶段

    系统分析阶段,我们弄清楚了“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。进入设计阶段,要把软件“做什么”的逻辑模型转换成“怎么做”的物理模型

  • 2 系统设计的主要目的

    为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,得出新系统的详细设计方案

  • 3 系统设计方法

    • 面向数据流的结构化设计方法

    • 面向对象的分析方法

  • 4 系统设计步骤

    概要设计 和 详细设计

    • 概要设计基本任务:设计软件系统总体结构、数据结构和数据库设计、编写概要设计文档、评审。

    • 详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其它设计(代码、输入/输出格式、用户界面)、详细设计说明书、评审。

五 软件系统测试

1. 测试目的

  • 系统测试时为了发现错误而执行程序的过程,成功的测试时发现了至今尚未发现的错误

2. 测试原则

  • 应尽早并不断的进行测试

  • 测试工作应该避免有开发软件的人或小组承担

  • 在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果

  • 即包含有效、合理的测试用例,也包含不合理、失效的用例

  • 检验程序是否做了该做的事,且是否做了不该做的事

  • 严格按照测试计划进行

  • 妥善保存测试计划和测试用例

  • 测试用例可以重复使用和追加测试

3. 测试阶段

  • 单元测试
    对单个模块进行测试,有程序员自己测试模块内部的接口、信息、功能,测试依据是软件详细说明说。在单元测试中,驱动模块用来调用被测试模块,自顶向下的单元测试中不需要另外编写驱动模块。桩模块(底层)用来模拟被测试模块多调用的子模块

  • 集成测试

    • 将模块组合起来进行测试,分为一词性组装(简单、节约时间、发现错误少、只适合小项目)

    • 增量式组装(能够发现更多错误,耗时长,可分为:自顶向下、自底向上、混合式)

  • 确认测试

    • 对已完成的软件进行功能上的测试

    • 内部确认测试:无用户情况

    • Alpha测试:用户在开发环境下进行测试

    • Beta测试:用户在实际使用时进行的测试

    • 验收测试:用户根据SRS对项目进行验收

  • 系统测试

    • 对软件进行性能测试

    • 负载测试:极限情况下,系统各项性能指标

    • 强度测试:系统资源特别低的情况下

    • 容量测试:并发测试,系统可以同时处理的最大用户数量。

    • 其它还有可靠性等性能测试,系统测试采用的是黑盒测试方法

  • 回归测试
    软件修改错误或变更后,进行回归测试以验证之前正确的代码是否引入了错误

4. 测试方法

  • 4.1 动态测试方法:程序运行时测试

    • 黑盒测试法:功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能

    • 白盒测试: 结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖

    • 灰盒测试: 既有白盒也有黑盒

  • 4.2 静态测试:程序静止时,对代码进行人工审查

    • 桌签审查:程序员自己检查编写的程序,在程序编译后,单元测试前

    • 代码审查:若干个程序员和测试人员组成评审小组,通过召开评审会议来进行审查

    • 代码走查:开会来进行审查,由测试人员提供测试用例,让程序员扮演计算机的角色,手动运行测试用例,检查代码逻辑

5. 测试策略

  • 自顶向下:先测试整个系统,需要编写桩程序,而后逐步向下直至最后测试最底层模块。有点事较早的验证例系统的主要控制和判断点

  • 自底向上:从底层开始模块测试,需要编写驱动程序,而后开始逐一合并模块,最终完成整个系统的测试。优点是较早的验证了底层模块。

  • 三明治:既有自底向上也有自顶向下,兼有二者的优点,但是工作量大

6. 测试用例设计

  • 6.1 黑盒测试
    黑盒测试用例:将程序看做一个黑盒子,只知道输入输出,不知道内部代码,由此设计出测试用例,分为下面几类:

    • 等价类划分:把所有的书按照某种特性进行归类,而后在没类的数据里选取一个即可。等价类测试用例的设计原则:1)设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,知道所有的有效等价类都被覆盖为止。2)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,知道所有的无效等价类都被覆盖为止。

    • 边界值划分:将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年龄范围为0-150,边界值是0,150 - 1,151四个

    • 错误推测: 没有固定的方法,凭经验而言,来推测有可能产生问题的地方,作为测试用例进行测试

    • 因果图: 由一个结果来反推原因的方法,具体结果具体分析,没有固定方法。

  • 6.2 白盒测试
    白盒测试用例:知道程序的逻辑代码,按照程序的代码语句来设计覆盖代码分支的测试用例,覆盖级别从第到高分为下面6种:

    • 语句覆盖:逻辑代码中的所有语句都要被执行一遍,覆盖级别最低,因为执行了所有的语句,不代表执行了所有的条件判断

    • 判定覆盖:判断语句的条件的真假都要覆盖一次

    • 条件覆盖:代码中的一个条件,可能是组合的,如 a>0 && b<0判断覆盖只针对此组合条件的真假分支做两个测试用例,而条件覆盖是对每个独立的条件都要做真假分支的测试用例,共可有4个测试用例。层级更高,注意区别,条件覆盖,针对每个条件都要真假覆盖,判定覆盖,只针对一个条件判断语句。

    • 判定/条件 覆盖:是判定中每个条件的所有可能取值(真/假)至少出现一次,并且每个判定本身的判定结果(真、假)也至少出现一次,即两种覆盖的综合

    • 条件组合覆盖:每个判定条件中条件的各种可能值得组合都至少出现一次

    • 路劲覆盖:逻辑代码中所有可行路径都覆盖了,覆盖层级最高

7. 调试

  • 测试时发现错误,调试是找出错误的代码和原因

  • 调试需要确定错误的准确位置:确定问题的原因并设法改正;改正后要进行回归测试。

  • 调试的方法有:蛮力法、回溯法(从出错的地方开始向回找)、原因排错法(找出所有可能的原因,逐一进行排除,具体包括演绎法、归纳法、二分法)

六 软件系统转换、维护、评价

1. 系统转换

系统转换是指:新系统开发完毕,投入运行,取代现有系统的过程,需要考虑多方面的问题,以实现与老系统的交接,有以下三种转换计划

  • 直接转换:信息同直接替换旧系统,风险大,适合于不复杂的新系统或旧系统无法使用。有点事节省成本

  • 并行转换:新系统和旧系统并行工作一段时间,新系统经过测试运行后再取代,风险小。缺点是耗费人力和时间,难以控制两个系统并存间的数据转换

  • 分段转换:分期分批逐步转换,是直接和并行转换的集合。将大型系统分为多个子系统,一次试运行每个子系统。适用于大型项目,耗时长,旧的系统需要和新系统混合使用,需要协调好接口等问题。

2. 系统维护

  • 软件维护是软件生命周期的租后一个阶段,不属于系统开发过程。是在软件已经交付使用之后为了改正错误或满足新的需求而修改软件的过程,即软件在交付后对软件所做的一切改动

  • 系统可维护性可以定义为维护人员理解、改正、改动和改进这个软件的难以程度,期评价指标如下:

    • 易测试性:指为确认经修改软件所需努力有关的软件属性

    • 易分析性:指为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性

    • 易改变性:指与进行修改、排错或适应环境变换所需努力有关的软件属性

    • 稳定性:指与修改造成未预料效果的风险有关的软件属性

  • 系统维护包括硬件维护、软件维护、数据维护,其中软件维护如下:

    • 正确性维护:发现了bug而进行的修改

    • 适应性维护:由于外部环境发生了改变,被动进行的对软件的修改和升级

    • 完善性维护:基于用户主动对软件提出更多需求,修改软件,正价更多的功能,性能更好,更完善

    • 预防性维护:对未来可能发生的bug进行预防性的修改

3. 系统评价

  • 立项评价:系统开发前的预评价,分析是否立项开发,做可行性评价

  • 中期评价:项目开发过程中期每个阶段的阶段评审。或者项目在开发中途遇到重大变故,评价是否还要继续

  • 结项评价:系统投入正式运行后,了解系统是否达到预期的目的和要求而对西宫进行的综合评价

  • 评价指标

    • 1)从信息系统的组成部分出发:可以按照运行效果和用户需求,系统质量和技术条件这两条线索构造指标

    • 2)从信息系统的评价对象出发:对开发者来说关心的是系统质量和技术水平;对用户而言,关心的是用户需求和裕兴质量;系统外部环境则主要通过社会效益指标来反映

    • 3)从经济学角度出发,分别按系统成本,系统效益和财务指标3条线建立指标

七. 软件项目管理

1. 软件项目估算

  • 1.1 项目估算方法

    • 成本估算方法

    • 自顶向下估算方法:又称类比估算方法,确定一个总金额,再向下分摊到每一个功能点

    • 自底向上复算:从底层功能点估算成本,向上累计

    • 差别估算:与以前项目比较,找出不同点重新估算,相同点直接估算

    • 专家估算:聘请专家一起经验对项目整体费用估算

  • 1.2 项目估算模型

    • 1.2.1 COCOMO 模型
      常见的软件规模估算方法。代码分析作为其中一种度量估计单位,已代码函数福算出每隔程序员工作量,累加得软件成本。

      • 基本COCOMO模型:用一个已估算出来的代码行树为自变量的经验函数计算软件开发工作量。

      • 中间COCOMO模型:在基本模型的基础上再用设计产品硬件、人员、项目等方面的影响因素调整工作量的估算。

      • 详细COCOMO模型:在中间模型的基础上再进一步考虑软件工程中分析、设计、过程等每一步的影响

    • 1.2.2 COCOMO II 模型
      COCOMO 模型的升级。考虑多个成本驱动因子。该方法包括三个阶段型模型。即应用组装模型(软件工程前期阶段使用),早期设计模型(需求已确定并且未建立软件体系结构时使用),体系结构模型(软件构造过程中使用)

    • 1.2.3 Putnam 估算模型
      一种动态多变量模型,假设在软件开发的整个生存周期中工作量有特定的分布。

2. 软件项目进度管理

基本原则:划分、相互依赖、时间分配、工作量确认、确认职责、明确输出结果、确定里程碑

  • 2.1 Grantt 图

    • 甘特图,又称为横道图。横轴表示时间,纵轴表示活动,以时间顺序表示活动。

    • 能够反映活动间的并行关系,单无法反映活动之间的依赖关系。因此也能以清晰的确认关键任务和关键路径。
      软件设计师教程知识点整理

  • 2.2 Pert 图

    • 类似于前趋图,是又想吐。反映活动之间的依赖关系,有向边上标注活动的运行时间,但无法反映活动之间的并行关系。

    • 图中的节点:称为事件。-> 节点表示上一个节点的任务结束,节点->表示改节点开始任务,箭头上的事件表示从该节点开始到结束需要的时间。流入该节点所有任务都结束,该节点才开始运行。

    • 特点:不仅给出了每隔任务的开始时间、结束时间和完成所需要的时间,还给出了任务时间的关系。

    • 关键路径:项目总耗时醉成的一条线路
      软件设计师教程知识点整理

软件设计师教程知识点整理

3. 软件项目的组织

  • 组织结构模式:项目型(项目经理绝对领导)、职能型(部门领导为主)、矩阵型(二者都有,但是权力分割不同)

  • 程序设计小组的组织方式:

    • 主程序员小组:主程序员全权负责,后援工程师必要时能替代主程序员,适合大规模项目

    • 民主制小组:即无主程序员,决策全是成员参与投票,适合于项目规模小,开发人员少,采用新技术和确定性小的项目

    • 层次式小组:两个层次,一名组长领导若干个高级程序员;每个高级程序要领导若干个程序员。

4. 软件配置管理

  • 4.1 基线:软件过程中生存期各开发阶段末尾的特定点。又称为里程碑,反映阶段性成果。

  • 4.2 软件配置项
    软件设计师教程知识点整理

  • 4.3 版本控制
    软件设计师教程知识点整理

5. 软件风险管理

  • 5.1 软件风险特性

    • 不确定性:可能发生也可能不发生

    • 损失:发生会产生恶性后果

  • 5.2 软件风险

    • 5.2.1。 项目风险

      项目风险威胁到项目计划。如果发生,有可能推迟项目的进度和增加项目的成本

      • 风险因素:项目预算、进度、人员、资源、利益相关者、需求等方面的潜在问题以及他们对软件项目的影响。

      • 项目复杂度、规模及结构不确定性也属于风险因素

    • 5.2.2 技术风险

      技术风险威胁到开发软件质量的交付时间。如果发生,开发工作会变的很困难或不可能

      • 风险因素:设计、实现、接口、验证、维护等方面的潜在问题

      • 此外:规格说明的歧义性、技术的不确定性、技术陈旧以及 前沿技术的风险 等因素

    • 5.2.3 商业风险

      威胁到开发软件的生存能力

      • 市场风险:开发了无人需要的优良系统

      • 策略风险:不在符合公司商业策略

      • 销售风险:销售部门不知道如何销售

      • 管理风险:重点转移或人员变动等带来的缺少高级管理层的支持

      • 预算风险:没有得到预算等

  • 5.3 风险管理过程

    • 风险识别:识别项目中的已知和可预测的风险,确定来源、产生条件、描述风险的特征。形成一个风险列表

    • 风险预测:预测风险发生的概率和风险发生的后果

    • 风险评估:定义风险参照水准,将识别出风险评估分类

    • 风险控制:辅助项目组建立处理风险的策略,包括风险避免,风险监控、RMMM计划(风险环节、监控和管理计划)

八. 软件质量

1. 质量模型

  • ISO/IEC9126 质量模型
    软件设计师教程知识点整理

软件设计师教程知识点整理
软件设计师教程知识点整理
软件设计师教程知识点整理

  • McCall II 质量模型
    软件设计师教程知识点整理

2. 软件质量保证

  • 3个要点:

    • 软件必须满足用户需求,与用户需求不一致的软件无质量可言。

    • 软件影尊徐规定的一些列开发标准,不遵循这些这则的软件质量无法保证

    • 软件还应满足某些隐含的需求:可理解性,可维护性等

  • 7个任务:

    • 应用技术方法

    • 正式的技术评审

    • 测试软件

    • 标准的实施

    • 控制变更

    • 度量

    • 记录保存和报告

3. 软件质量评审

  • 设计的规格说明书符合用户标准,称为设计质量

  • 程序按照设计规格说明书所规定的情况正确执行,称为程序质量

4. 容错技术

容错就是软件遇到错误的处理能力。主要手段是冗余

  • 结构冗余:静态(表决,比较,少数服从多数),动态(多重模块待机备份,故障时切换备份机),混合(两者结合)

  • 信息冗余:为检错和纠错再数据中加上一段额外的信息,如校验码原理

  • 时间冗余:遇到错误是重复执行,例如回滚,重复执行还有错则转入错误处理逻辑

  • 冗余附加技术:为实现:结构、信息、时间的冗余技术所需的资源和技术。包括程序、指令、数据、存放和调动他们的空间和通道等。

在屏蔽硬件错误的容错技术中,冗余附加技术包括:关键程序和数据的冗余及调用;检测、表决、切换、重构和复算的实现。
在屏蔽软件错误的容错技术中,冗余附加技术包括:冗余备份程序的存储及调用;实现错误检测和错误恢复的程序;实现容错软件所需的固化程序。

九. 软件度量

  • 软件的两种属性:外部属性指面向管理的属性,可直接测量,一般为性能指标。内部属性指软件产品本身的属性,如可靠性等,只能间接测量

  • McCabe 度量法:又称为环路复杂度,假设有向图中有向边为m,节点数为n,则此有向图的环路复杂度为m-n+2
    软件设计师教程知识点整理

m、n 代表的含义不能混淆。对于程序流程图:每一个条分支边就是一条有向边,每一个语句就是一个顶点

十. 软件工具与软件开发环境

1. 开发工具

    • 1.1 软件开发工具:软件开发过程的各种活动使用的工具

      • 需求分析工具

      • 设计工具

      • 编码和排错工具

      • 测试工具

    • 1.2 软件维护工具:维护过程中的活动的软件,对软件代码何其文档进行各种维护活动

      • 版本控制工具

      • 文档分析工具

      • 开发信息库工具

      • 逆向工程工具

      • 再工程工具

    • 1.3 管理和软件支持工具:管理活动和支持活动,确保软件高质量的完成

      • 项目管理工具

      • 配置管理工具

      • 软件评测工具

    2. 开发环境

    • 由工具集合环境集构成。工具集用于软甲开发的过程、活动、任务。环境集用于提供环境统一的支持。
      软件设计师教程知识点整理

    第6章 结构化开发方法

    一 系统分析

    • 系统分析是一种问题求解技术,它将一个系统分解成各个组成部分,目的是研究各个部分如何工作、交互,以实现其系统目标。

    • 目的和任务:系统分析的主要任务是对线性系统更进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需的资料,并提交系统方案说明书。

    • 系统分析的主要步骤

      • 1) 认识、理解当前的现实环境,获得当前系统的"物理模型"

      • 2) 从当前系统的"物理模型"抽象出当前系统的"逻辑模型"

      • 3) 对当前系统的"逻辑模型"进行分析和优化,建立目标系统的"逻辑模型"

      • 4) 对目标系统的逻辑模型具体化,建立目标系统的物理模型。

    • 系统开发的目的是将现有系统的物理模型转换为目标系统的物理模型。

    1. 系统结构设计基本原理

    • 抽象(重点说明一个实体的本质方面,忽略非本质方面)

    • 模块化 (可组合、分解和更换的单元)

    • 信息隐蔽 (将每个程序的成分隐藏或封装在一个单一的设计模块中)

    • 模块独立 (每个模块完成一个相对独立的特定子功能,且与其他模块之间的联系简单)

    2. 模块之间的联系 耦合内聚

    • 2.1 耦合:是模块之间的相对独立性的度量
      软件设计师教程知识点整理

    • 2.2 内聚:是一个模块内部各个元素彼此结合的紧密程度的度量
      软件设计师教程知识点整理

    3. 系统结构化方法设计过程

    • 3.1 系统结构设计原则

      • 分解--协助原则

      • 自顶向下原则

      • 信息隐蔽和抽象原则

      • 一致性原则明确性原则

      • 模块间高内聚低耦合

      • 模块的扇入系数和扇出系数合理

      • 模块规模适当

    • 3.2 子系统划分的原则

      • 子系统要具有相对独立性

      • 子系统之间数据的依赖性尽量小

      • 子系统划分的结果应使数据冗余较小

      • 子系统的设置应考虑今后管理发展的需要

      • 子系统的划分应便于系统分阶段实现

      • 子系统的划分应考虑到各类资源的充分利用

    二 结构化分析方法

    1. 结构化分析方法

    • 结构化的分析方法SA:自顶向下,逐步分解,是面向数据的,强调分析对象的数据流;

    • 需要建立:

      • 功能模型(DFD数据流图)

      • 行为模型(状态转换图)

      • 数据模型(E-R图)

      • 数据字典(数据元素,数据结构,数据流,数据存储,加工逻辑,外部实体)

    2. DFD数据流图

    • 2.1 数据流图描述数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模,数据流图相关概念如下图:
      软件设计师教程知识点整理

    • 2.2 数据流图是可以分层的,从顶层(即上下文无关数据流)到0层、1层等,顶层数据流图只含有一个加工处理表示整个管理信息系统,描述了系统的输入输出,以及和外部实体的数据交互。如下:
      软件设计师教程知识点整理

    • 2.3 数据流图的基本设计原则

      • 1) 数据守恒原则:对任何一个加工来说,其所有输出数据流中的数据必须能从该加工的数据数据流中直接获得,或者说是通过该加工能产生的数据

      • 2) 守恒加工原则:对同一个加工来说,输入和输出的名字必须不相同,即使他们的组成成分相同。

      • 3) 对于每个加工,必须既有输入数据流,又有输出数据流

      • 4) 外部实体与外部实体之间不存在数据流

      • 5) 外部实体与数据存储之间不存在数据流

      • 6) 数据存储于数据存储之间不存在数据流

      • 7) 父图和子图的平衡原则:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图和子图的平衡。此平衡原则不存在与单张图。

      • 8) 数据流与加工相关,且必须经过加工

    3. 数据字典

    • 数据字典是用来定义在数据流图中出现的符号或者名称的含义,在数据流图中,每个存储、加工、实体的含义都必须定义在数据字典中。并且父图和子图之间这些名称要相同。如下
      软件设计师教程知识点整理

    三 WEBAPP分析和设计

    1. WEBAPP特性

    • 是基于web的系统和应用,大多数应用采用敏捷开发过程模型进行开发。

    • 网络密集性(服务于不同客户全体的需求)、并发性(大量用户同时访问)、无法预知的负载量(用户数量)、性能(响应时间过长导致用户流失)、可用性、数据驱动(和用户的数据交互)

    2. WEBAPP需求模型

    • 2.1 内容模型
      给出由WEBAPP提供的全部系列内容,包括了文字、图形、图像、视频和视频。

    • 2.2 交互模型
      描述了用户与WEBAPP采用了那种交互方式。由一种或多种元素构成,包括用例、顺序图、状态图、用户界面原型等。

    • 2.3 功能模型
      许多WEBAPP提供了大量的计算和操作功能,这些功能与内容直接相关(既能使用又能生成内容,如统计报表)。这些功能常常以用户的交互活动为主要目标。
      功能模型定义了将用户WEBAPP内容并描述其它处理功能的操作,这些功能不依赖于内容却是最终用户所必需的。

    • 2.4 导航模型
      为WEBAPP定义所有导航策略,考虑了每一类用户如何从一个WEBAPP元素(如内容对象)导航到另一个元素

    • 2.5 配置模型
      描述WEBAPP所在环境和基础设施。在必需考虑配置体系结构的情况下,可以使用UML部署图。

    3. WEBAPP设计

    • 3.1 架构设计
      使用多层架构来构造,包括用户界面或展示层、基于一组业务规则来知道与用户端浏览器进行信息交互的控制器,以及可以包含WEBAPP的业务规则的内容或模型层,描述将以什么方式来管理用户交互、操作内容处理任务、实现导航及展示内容。

    • 3.2 构件设计
      构件:定义良好的聚合功能,为最终用户处理内容或提供计算或处理数据
      构件内容:关注内容对象,以及包装后展示给最终用户的方式,应该适合创建的WEBAPP特性
      构件功能:将WEBAPP作为一些列构件加以交付,这些构件与信息提携结构并行开发,以确保一致性。

    • 3.3 内容设计
      着重于内容对象的表现和导航的组织,通常采用线性结构、网格机构、层次结构、网络结构四中结构及其组合。

    • 3.4 导航设计
      定义导航路径,使用户可以访问WEBAPP的内容和功能

    第7章面向对象技术(UML建模+设计模式)

    1. 面向对象

    1.1 基本概念

    • 对象:基本的裕兴实体,为类的实例

    • 消息:对象间通信一种构造称为消息

    • 类:对象的抽象

    • 继承:父类与子类

    • 多态:不通的对象收到同一个消息产生不同反应。参数多态,包含多态,过载多态,强制多态

    • 覆盖:子类覆盖父类同名同参的方法

    • 函数重载:函数同名不同参数

    • 封装:

    • 静态类型:编译时确定,静态绑定:程序执行前已经被绑定

    • 动态类型:运行时确定,动态绑定:运行时实际引用的对象类型决定调用那个方法
      软件设计师教程知识点整理

    1.2 分析设计

    软件设计师教程知识点整理

    2. UML 建模

    2.1 UML建模概念

    • UML是统一建模语言,与程序设计语言并无关系

    • UML构造块包括:事物,关系,图

    2.2 UML建模中的事物

    2.2.1 结构事物
    • 模型的静态部分名称
      软件设计师教程知识点整理

    2.2.2 行为事物
    • 模型的动态部分:交互,活动,状态机
      软件设计师教程知识点整理

    2.2.3 分组事物 和 注释事物
    • 分组事物 模型的组织部分,例如:包

    • 注释事物 模型的解释部分
      软件设计师教程知识点整理

    2.3 UML建模中的关系

    • 依赖:一个事物依赖于另一个事物的变化而变化

    • 关联:结构关系,描述了一组链,分为组合和聚合(聚集)。是部分和整体的关系。组合关系更强。

    • 泛化:一般/特殊 父子关系

    • 实现:一个类保证了另一个类执行的契约
      软件设计师教程知识点整理

    2.4 UML建模中的图

    2.4.1 类图 Class Diagram
    • 静态图,系统的静态设计视图。展现一组对象、接口、协作和他们之间的关系。

    • UML类图包括:多重度、属性、操作、关系
      软件设计师教程知识点整理

    2.4.2 对象图 Object Diagram
    • 静态图。展现某一时刻一组对象及他们之间的关系,为类图的某一快照。

    • 在没有类图的状态下,对象图就是静态设计视图
      软件设计师教程知识点整理

    2.4.3 用例图 Use Case Diagram
    • 静态图,展现了一组用例、参与者以及它们之间的关系

    • 用例图中的参与者是人、硬件、系统可以扮演的角色。用例是参与者完成的一系列操作

    • 用例之间的关系是:扩展、包含、泛化
      软件设计师教程知识点整理

    2.4.4 序列图 Sequence Diagram
    • 动态图,顺序图。是场景的图形化表示,描述了一时间顺序组织的对象间的交互活动

    • 同步消息 左到右 实心箭头,表示阻塞调用,需要等待控制权返回后继续执行

    • 异步消息 左到右 空心箭头,表示继续执行,不需要等待控制权返回可以继续执行下一个消息

    • 返回消息 右到左 空心箭头
      软件设计师教程知识点整理

    2.4.5 通信图 Communication Diagram
    • 动态图,即协作图。是顺序图的另一种表示方法。

    • 对象和消息组成的图,不强调时间顺序,只强调事件之间的通信

    • 而且也没有固定的画法规则,和顺序图统称为交互图。
      软件设计师教程知识点整理

    2.4.6 状态图 State Diagram
    • 动态图,展现了一个状态机,描述单个对象在多个用例中的行为。包括简单状态和组合状态

    • 转换可以通过事件触发器触发,事件出发后响应的监护条件会进行检查

    • 状态图中转换和状态是两个独立的概念

    • 方框:表示状态 箭头:触发事件 实心圆点:起点和终点
      软件设计师教程知识点整理

    2.4.7 活动图 Activity Diagram
    • 动态图,是一种特殊的状态图,展现了系统内从一个活动到另一个活动的流程

    • 活动的分岔和汇合线是一条水平粗线

    • 并发分岔、并发汇合、监护表达式、分支、流

    • 每个分岔的分支数代表了可同时运行的线程数。

    • 活动中能够并行执行的是在一个分岔粗线下的分支活动
      软件设计师教程知识点整理

    2.4.8 组件图(构件图)Component Diagram
    • 静态图,为系统静态实现视图。展现了一组组件(或构件)之间的组织和依赖
      软件设计师教程知识点整理

    2.4.9 部署图 Deployment Diagram
    • 静态图,系统的静态部署图,部署物理模块的节点分布。

    • 与组件图相关,通常是一个几点包含一个或多个组件。依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系

    软件设计师教程知识点整理

    3. 设计模式

    软件设计师教程知识点整理

    3.1 设计模式概念

    软件设计师教程知识点整理

    3.2 设计模式分类

    • 创建型设计模式
      软件设计师教程知识点整理

    • 结构型型设计模式
      软件设计师教程知识点整理

    • 行为型设计模式
      软件设计师教程知识点整理

    软件设计师教程知识点整理

    第8章算法设计与分析

    一 算法基础知识

    1. 算法的特性

    • 算法是对特定问题求解步骤的一种描述,他是指令的有限序列,其中每一条指令表示一个或多个操作.

    • 1.有穷性.一个算法总是在执行有穷步骤之后结束,且每一步都可在有穷时间内完成.

    • 2.确定性.算法中的每一条指令必须有确切的含义,理解时不会产生二义性.并且在任何条件下,算法只有唯一的一条路径,即对于相同的输入只能得出相同的输出.

    • 3.可行性.一个算法是可行的,即算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现.

    • 4.输入.一个算法有零个或多个输入,这些输入取决于某个特定的对象的集合.

    • 5.输出.一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量.

    2. 算法分析

    • 时间复杂度
      软件设计师教程知识点整理

    时间复杂度是一个大概的规模表示,一遍以循环次数表示,O(n)说明时间是n的正比,log对数的时间复杂度一般在查找二叉树的算法中出现。渐进符号O表示一个渐进变化程度,实际变化必须小于等于O括号内的渐进变化度。

    • 空间复杂度
      软件设计师教程知识点整理

    二 算法分析基础:查找算法

    1. 顺序查找

    • 顺序查找: 将查找的关键字key从头到尾与表中的元素进行比较,存在则返回成功,否则失败

    • 时间复杂度为O(n),按照顺序依次超找一遍

    2. 拆半(二分)查找

    软件设计师教程知识点整理

    3. Hash 哈希超找

    软件设计师教程知识点整理

    哈希查找冲突处理方法:

    1)线性探测,存储到下一个空闲物理空间;
    2)伪随机数法,存储到任意空闲存储位置;
    3)再次hash散列计算,使用新计算的位置存储

    三 排序算法

    • 稳定排序与不稳定排序:依据是两个相同的值在排序后的相对位置是否发生了变化。如果发生了变化为不稳定,不发生变化为稳定

    • 内排序和外排序:依据是排序在内存中进行还是在外部进行

    • 排序算法分类:

      • 插入类排序:直接插入排序,shell希尔排序

      • 选择类排序:直接选择排序,堆排序

      • 交换类排序:冒泡排序,快速排序

      • 其它:归并排序,基数排序

    • 排序算法:时间复杂度总结
      软件设计师教程知识点整理

    1. 直接插入排序

    • 是一种简单的排序算法。具体做法是在插入第i个元素时,前面的已经排好序,然后将i与前面的元素依次比较,插入到比i大的值前面,i的插入位置后面的元素依次后移
      软件设计师教程知识点整理

    2. SHELL 希尔排序

    • 将待排序的元素分割成若干个子序列,然后分别进行直接插入排序

      分组方法示例:
      待排序元素为n=10个,取一个小于 n 的整数 d (依次减小d,d按照一定的规律增量排列,例如 5,3,1)
      元素按照 5 为间距进行分组,对每个分好组的元素使用直接插入排序
      元素按照 3 为间距再次分组,每个分好组的元素使用直接插入排序
      元素按照 1 为间距再次分组,每个分好组的元素使用直接插入排序

      软件设计师教程知识点整理

    3. 直接选择排序

    • n 个待排序元素:i 与 i后的元素进行比较,从n-i+1个元素中找出最小的,并和第 i 个元素交换,当i等于n时记录有序排列

    • 本质就是选择出最小的元素进行交换,主要是选择过程,交换过程只有一次
      软件设计师教程知识点整理

    4. 堆排序

    软件设计师教程知识点整理

    5. 冒泡排序

    软件设计师教程知识点整理

    6. 快速排序

    软件设计师教程知识点整理

    7. 归并排序

    软件设计师教程知识点整理

    6. 基数排序

    软件设计师教程知识点整理

    四 常用算法策略

    1. 分治法

    1.1 递归概念

    • 是指程序(函数)直接调用自己或通过一些列调用语句简介调用自己,是一种描述问题和解决问题的常用方法

    • 基本要素:边界条件(确定递归合适终止,即递归出口);递归模式(即递归体)

    1.2 分治法的思想概念

    • 对于一个规模为n的问题,若该问题可以容易的解决则直接解决;否则将其分解为k个规模更小的子问题,这些子问题互相独立且与原问题形式相同,递归的解决这些问题,然后将各个子问题的解合并得到原问题的解。

    1.3 分治法的步骤

    • 分解问题-->求解(递归地求解各子问题,若子问题足够小,则直接求解)-->合并(将各子问题合并成原问题的解)

    1.4 凡是涉及到分组解决的都是分治法(二分查找,归并排序等)

    2. 回溯法

    • 有通用的解题方法之称,可以系统地搜索一个问题的所有解或任意解。

    • 在包含问题的所有解的空间树中,按照深度优先的策略,从根节点触发搜索解空间树。搜索到任一结点时,总是先判断该节点是否肯定不包含问题的解,如果不包含则跳过对该节点的子树的搜索,逐层向祖先节点回溯;否则进入该子树,继续按深度优先的策略进行搜索。

    • 可以理解为深度优先搜索,一直向下探测,当此路不通时,返回上一层探索另外的分支,重复此步骤,这就是回溯,意为先一直探测,当不成功时再返回上一层。

    • 一般用于解决迷宫类的问题。

    3. 动态规划法

    • 在求解问题中,对于每一步决策列出各种可能的局部解,再依据某种判定条件,舍弃哪些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解

    • 本质也是将复杂的问题划分为一个个子问题,与分治法不同的是每一个子问题间不是相互独立的,并且不全都相同。

    • 常用于求解具有某种最优性质的问题。

    • 此算法将大量精力放在前期构造表格上面,其会对每一步,列出各种可能的答案,这些答案会存储起来,最终要得出某个结果时,是通过查询这张表来得到的,动态规划法不但每一步最优,全局也最优。

    4. 贪心法

    • 总是做出在当前来说最好的选择,而并不从整体上加以考虑,它2所做的每部选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。由于它不必为了寻找最优解而穷尽所有可能解,因此耗费时间少,一般可以快速得到满意的解,但得不到最优解。

    • 局部贪心,只针对当前的步骤取最优,而非整体考虑。

    • 判断此类算法,就看算法是否是每一步都取最优,并且整体题意没有透露出最终结果是最优的。

    5. 分支限界法

    软件设计师教程知识点整理

    6. 概率算法

    软件设计师教程知识点整理

    7. 近似算法

    软件设计师教程知识点整理

    8. 数据挖掘算法

    软件设计师教程知识点整理

    9. 智能优化算法

    软件设计师教程知识点整理

    第9章 数据库技术基础

    一 数据库基本概念

    1. 数据库系统DBS

    • 组成:数据库(数据集合)、硬件、软件、人员

    • 分类:

      • 关系型数据库(oracle/sybase/sql server/mysql)

      • 面向对象型数据库(OODBS)

      • 对象关系型数据库(ORDBS)

    2. 数据库系统体系结构

    • 集中式数据库系统

    • 客户端/服务器结构

    • 并行数据库系统

    • 分布式数据库系统

      • 局部数据库位于不同的物理位置,使用一个全局DBMS将所有局部数据库联网管理,就是分布式数据库

    3. 数据库的三级模式和两级映像

    • 外模式:对应数据库中的视图这个级别,将表进行一定的处理后再提供给用户使用。

    • 模式: 称为概念模式,就是通常使用的这个级别,根据应用、需求将物理数据划分成一张张表。

    • 内模式:管理如何存储物理的数据,对数据的存储方式、优化、存放等。

    • 外模式--模式 映像:是视图和表之间的映射,存在于概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,而无需修改引用程序。

    • 模式--内模式 映像:是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。
      软件设计师教程知识点整理

    二 数据模型

    数据模型的三要素:数据结构、数据操作、数据的约束条件

    E-R模型图

    软件设计师教程知识点整理

    • 联系分为三种

      • 1:1 联系,联系可以放到任意的两端实体中,作为一个属性

      • 1:N 联系,联系可以单独作为一个关系模型,也可以在N端中加入1端实体的主键

      • M:N 联系,联系必须作为一个单独的关系模型,其主键是M和N端的联合主键

    • 每个实体都对应一个关系模型

    三 关系代数运算

    • 数据库中代数运算概念

      • 并:结果是两张表中所有记录数合并,相同记录只显示一次

      • 交:结果是两张表中相同的记录

      • 差:S1-S2,结果是S1表中有而S2中没有的那些记录
        软件设计师教程知识点整理

    1. 笛卡尔积:

    • s1*s2,产生的结果如下图,包括s1和s2所有的属性列,并且s1中每条记录依次和s2中每条记录组合成一条记录,最终属性列为s1+s2属性列,记录数为s1*s2
      软件设计师教程知识点整理

    2. 投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示

    软件设计师教程知识点整理

    3. 选择:实际是按照条件选择某关系模式中的某条记录

    软件设计师教程知识点整理

    4. 连接:结果与笛卡尔积类似,但是相同名称的属性列只显示一次

    5. 自然连接:结果是显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录

    软件设计师教程知识点整理

    四 SQL语句

    #创建表
    create table;
    #指定主键
    primary key();
    #指定外键
    foreign key();
    #修改表
    alter table;
    #删除表
    drop table;
    #索引index,视图view
    #数据库查询
    select ... from ... where;
    #分组查询,select 后的列名要使用分组,条件选择使用 having
    group by .... having .....
    #更名运算 as
    #字符皮牌
    like ,%匹配多个字符 , _ 匹配一个字符
    #数据库插入
    insert into ... values();
    #数据库删除
    delete from ... where ...;
    #数据库修改
    update ... set ... where ...;
    #排序 
    order by asc | desc ;
    # 授权
    grant .... on ... to 
    #收回权限
    revoke ... on ... from;
    with check option #检查where后的谓语条件
    DISTINCT # 过滤重复选项,指保留一条记录
    UNION #出现在连个sql语句之间,将两个结果取或运算,即存在于第一句或第二句的都会被选出
    INTERSECT #出现在连个sql语句之间,对两个语句的查询结果与运算,同时存在于两个语句之间才被选出

    五 关系数据库的规范化

    1. 函数依赖

    软件设计师教程知识点整理

    2. 规范化

    • 用途: 解决数据冗余、更新异常、插入异常、删除异常

    • 键和约束

      • 超键:能唯一标识此表的属性的组合

      • 候选键:超键中去掉冗余的属性,剩余的属性就是候选键

      • 主键:候选键任选一个可以作为主键

      • 外键:其他表中的主键

      候选键求法:根据依赖集画出有向图,从入度为0的节点开始,找出图中一个节点或者一个节点组合,能够遍历完整个图,就是候选键
      实体完整性约束:即主键约束,主键不能为空,也不能重复
      参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值,或者为空

      软件设计师教程知识点整理

    2.1 第一范式:1NF 所有属性都不可以在分割为两个或多个分量
    2.2 第二方式:2NF 在1DF基础上,每一个非主属性完全依赖主键 (不存在部分依赖)
    2.3 第三范式:3NF 在2NF基础上,非主属性不传递依赖于候选键(主键组合),主键直接决定非主属性
    2.4 BCNF范式:BCNF 在2NF基础上,所有属性都不传递依赖于候选键
    2.5 第四范式:4NF 在3NF基础上,删除所有多对多关系

    3. 模式分解

    • 模式之间的转黄一般都是通过拆分属性,即模式分解,将具有部分函数依赖和传递依赖的属性分离出来,来达到一步步优化,一般分为两种

    • 3.1 保持函数依赖分解

      • 对于关系模型R,有依赖集F,若对R进行分解,分解出阿里的多个关系模型保持原来的依赖集不变,则为保持函数依赖的分解。分解后通过产地依赖实现属性的跨表函数依赖也是可以的。

    • 3.2 无损分解

      • 将关系R分解成多个关系莫时候,还能还原成原来的关系模式R,这就是无损分解
        软件设计师教程知识点整理

      • 无损分解定理:R 分解为{R1,R2},F为满足R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件是R1∩R2->(R1-R2) R2∩R2->(R2-R1)

    六 数据库的控制和功能

    1. 事物管理

    软件设计师教程知识点整理

    • X锁,排它锁:若事务T对数据对象A将X锁,则只允许T读取和修改A,其它事物都不能在对A加任何类型的锁,直到T释放A上的锁

    • S锁,共享锁:若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其它事物只能再对A加S锁,直到T释放A上的S锁

    • 解锁的时间不同,会造成预防问题的个数不同,即为不同的封锁协议。

    2. 数据库故障和备份

    软件设计师教程知识点整理
    软件设计师教程知识点整理

    3. 并发控制

    软件设计师教程知识点整理

    第10章网路与信息安全基础知识

    一.计算机网络概念

    1. 计算机网络概念

    • 计算机网络是计算机技术与通信技术相结合的产物,他实现了远程通信、远程信息处理和资源共享

    • 计算机网络功能:数据通信、资源共享、负载均衡、高可靠性

    2. 网络分类:

    3. 网络拓扑结构:

    软件设计师教程知识点整理

    • 总线型:利用率低、干扰大、价格低

    • 星型:交换机形成的局域网、中央单元负荷大

    • 环型:流动方向固定、效率扩充难

    • 树型:总线型的扩充、分级结构

    • 分布式:任意节点连接、管理难成本高

    4. 网路体系结构

    • 七层网络模型(OSI/RM)(由ISO/OSI 组织发布)

    七层模型传输方式
    1应用层实现具体的应用功能,直接进程间的通信
    2表示层数据间格式转换、压缩、加密等操作,对数据进行处理
    3会话层会话会话管理服务:建立、维护、结束回话
    4传输层端口到端口的链接,传送数据到主机端口上
    5网络层分组传输和路由选择,准确传送至互联网网络主机上
    6数据链路层封装成帧传送,准确传送至局域网内的物理主机上
    7物理层二进制传输,物理链路和物理特性相关

    二.网络互联硬件

    • 网络设备

    七层模型硬件
    1应用层网关(连不同型且协议差别较大的网络,协议转换)
    5网络层路由器(连接多个逻辑上分开的网络,路由选择)
    6数据链路层网桥(分析帧地址)、交换机(多口网桥,Mac地址表)
    7物理层中继器(扩大信号)、集线器Hub(多路中继器)
    • 传输介质:
      有线介质:双绞线(最长100m,每端一RJ45插件),同轴电缆,光纤

    无线介质:微波、红外线和激光、卫星通信

    • 组建网络:
      服务器、客户端、网络设备、通信介质、网络软件

    三.网络协议

    1. 局域网协议:b 为bit,不是 字节byte

    IEEE802.3 标准以太网(CSMA/CD),速度为 10Mbps,传输介质为同轴电缆
    IEEE802.3u 快速以太网(CSMA/CD),速度为 100Mbps,传输介质为双绞线
    IEEE802.3z 千兆以太网(CSMA/CD),速度为 1000Mbps,传输介质为同轴电缆
    IEEE802.4 令牌总线网
    IEEE802.5 令牌环网
    无线局域网CSMA/CA(载波监听多路访问方法)

    2. 广域网协议:

    点对点协议PPP(拨号上网),数字用户线xDSL(ADSL上传网速和下载网速不对等,下载网速一般很快),数字专线DDN(长途的数据电路),帧中继(以帧为传输单位)

    3.TCP/IP协议族

    • 特性:
      逻辑编址、路由选择、域名解析、错误检测和流量控制

    • 3.1 TCP/IP模型:
      应用层:具体应用功能

    传输层:应用程序间端口到端口的通信
    网际层:又称IP层,处理机器间的通信,数据以组为单位
    网络接口层协议:称为数据链路层,负责接收IP数据报,并把数据报通过选定的网络发送出去

    OSI七层网络模型TCP/IP四层概念模型对应网络协议
    应用层(Application)应用层HTTP、TFTP、FTP、NFS、SMTP
    表示层(Presentation)应用层Telnet、Rlogin、SNMP、Gopher
    会话层(Session)应用层SMTP、DNS
    传输层(Transport)传输层TCP、UDP
    网络层(Network)网络层IP、ICMP、ARP、RARP、AKP、UUCP
    数据链路层(Data Link)数据链路层FDDI、Ethernet、Arpanet、PDN
    物理层(Physical)数据链路层IEEE802.1A IEEE802.2到IEEE802.11
    • 3.2 网络接口层协议:PPP/FDDI....

    • 3.3 网际层协议

      • IP:最重要很细的协议,无连接、不可靠

      • ICMP:因特网控制信息协议,用来检测网络通信是否通畅

      • ARP和RARP:地址解析协议,ARP将ip地转换为物理地址,RARP是将物理地址转换为IP地址

    • 3.4 传输层协议 TCP

    • 3.5 传输层协议 UDP

      UDP协议:不可靠连接,因为数据传输只管发送,不用对方确认,因此可能会有丢包现象,一般用于视频、音频数据传输
      TCP协议:可靠连接,因为有验证机制,每发送一个数据包,都要求对方回复确认,三次握手机制
      1.停止等待协议:TCP保证可靠传输的协议,就是发送完一个分组就停止发送,等待对方的确认,只有对方确认过,才发送下一个分组
      2.连续ARQ协议:TCP保证可靠传输的协议,发送方维持一个窗口,这个窗口有多个分组,窗口大小由接收方返回的WIN值决定,所以窗口是动态变化的,大大提高了通道利用率,并且采用累积确认的方式,对按序到达的最后一个分组发送确认
      3.滑动窗口协议:TCP流量控制协议,该协议允许发送方在停止并等待确认前发送多个数据分组,不用停下来等待确认,因此可以加速数据的传输还可以控制流量的问题
    • 3.6 应用层协议:

      • 可靠传输:基于TCP的FTP/HTTP/HTTPS/SMTP/POP3/TELNET等

        FTP:可靠的文本传输协议基于TCPP
        HTTP:超文本传输协议,用于上网,使用ssl加密后的安全网页协议为HTTPS基于TCP
        SMTP和POP3:邮件传输协议,邮件报文采用ASCII格式表示基于TCP
        Telnet:远程传输协议 基于TCP
      • 不可靠传输:基于UDP的TFTP/SNMP/DHCP/DNS等

        TFTP:不可靠的小文件传输协议 基于UDP
        SNMP:简单网络管理协议,必须以管理员的身份登录才能完成配置 基于UDP
        DHCP:动态分配IP地址协议,客户机/服务器模型,租约默认为8天,当租约过半时,客户机需要向DHCP服务器申请续约,当租约超过87.5%时,如果仍然没有和当初提供IP地址的DHCP服务器联系上,择开始联系其他DHCP服务器 基于UDP
        可以从DHCP服务器获取DHCP服务器IP,DNS服务器IP地址,默认网关IP
        DNS:域名解析协议,将域名解析为IP地址 基于UDP
        DNS服务器:维持ip地址对应的代表,层次结构为:本地域名服务器、权威域名服务器、顶级域名服务器、根域名服务器
        DNS递归查询,主机提出一个查询请求,本地服务器会一层一层的查询下去,直接找到满足查询请求的IP地址,再返回给主机,即问一次就得到最终结果
        DNS迭代查询:服务器收到一次请求,就回答一次,但是回答的不一定是最终地址,也可能是其他服务器的地址,需要客户机再次发出请求,直至问道最终结果
        主机箱本地域名服务器查询采用递归查询;本地域名服务器箱根域名服务器的查询通常采用迭代查询(依据的是域名服务器是否空闲)

    四 Internet 及应用

    1.路由选择策略

    • 静态路由选择

      • 不能根据网络流量和拓扑结构的变化来调整自身的路由表,也就不能找出最佳路由

      • 固定式路由选择:每个网络节点存储一张表格,表格中每一项记录着对应某个目的下一节点或链路,当一个分组到达某节点时,该节点只要根据分组上的地址信息,便可以从固定的路由表中查出对应的目的节点及所应选择的下一节点。

      • 洪泛式路由选择:又叫扩散法,一个分组路由源站发送到与其相邻的所有节点,最先到达目的节点的一个或若干个分组肯定经过了最短的路径,其主要应用在诸如军事网络等强壮性要求很高的场合

      • 随机路由选择:一个分组只在与其相邻的节点中随机的选择一条转发

    • 动态路由选择

      • 节点的路由选择依靠网络当前的状态信息来决定,这种策略能较好地适应网络流量、拓扑结构的变化,有利于改善网络的性能。算法复杂,会增加网络的负担

      • 分布式路由选择:①距离向量算法(各节点周期性的向所有相邻节点发送路由刷新报文)②链路状态算法(各节点独立计算最短通路、能够快速适应网络变化、交换的路由信息少,复杂难以实现)

      • 集中式路由选择:有网络控制中心负责全网状态信息的收集、路由计算及最佳路由的实现。最简单的方法是将最新路由定期发送到网络中各节点上去。

      • 混合式动态路由选择:将分布路由选择与集中路由选择、以及其它路由选择方法混合使用。

    2.IP地址

    • 2.1 IPV4分类编址
      格式:IP地址分四段,每段8位,共32位二进制数组成

    逻辑上分为网络号和主机号(主机号全0或全1不能分配,是特殊地址)

    类别网络号主机号
    A类0.0.0.0-127.255.255.2558位24位
    B类128.0.0.0-191.255.255.25516位16位
    C类192.0.0.0-223.255.255.25524位8位
    D类组播224.0.0.0-239.255.255.255
    E类保留240.0.0.0-255.255.255.255
    ABC类规则划分为:网络号 + 主机号
    按照ABC类规则,将主机号拆分为:子网号+主机号 用于划分子网
    子网:网络号+子网号+主机号
    网络号全为1,主机号全为0,这样的地址为子网掩码
    注意:子网号可以为全0或全1,主机号不能为全0或全1,因此主机需要-2,而子网不用

    软件设计师教程知识点整理

    • 2.2 IPV4无分类编址
      格式:IP地址/网络号

    示例:128.168.0.11/20 标识IP地址为128.168.0.11,其网络号占20位,因此主机号占32-20=12位,也可以划分子网。

    IP说明
    127网段回播地址
    网络号全0地址当前子网中的主机
    全1地址本地子网中的广播
    主机号全1地址特定子网中的广播
    10.0.0.0/810.0.0.0-10.255.255.254
    172.16.0.0/12172.16.0.1-172.31.255.254
    192.168.0.0/16192.168.0.1-192.168.255.254
    169.254.0.0保留地址,用于DHCP失效(win)
    0.0.0.0保留地址,用于DHCP失效(Linux)
    • 2.3 IPV6
      主要是为了解决IPv4地址数量不够用而设计的

    特性:①地址长度128位,地址空间增大了2^96倍
    ②灵活的IP报文头部格式,使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段。选项部分出现格式也有所变化,使路由器可以简单撸过选项而不做任何处理,加快了报文处理速度
    ③简化了报文头部格式,加快报文转发,提高了吞吐量
    ④提高安全性,身份认证和隐私权是v6的关键特性
    ⑤支持更多的服务类型
    ⑥允许协议继续演变,增加新的功能,使之适应未来技术的发展

    • 2.4 IPV4 过渡到 IPV6:
      ①双协议栈:主机同时运行IPV4和IPV6两套协议栈,同时支持两套协议

    ②隧道技术:用于在IPV4网络之上连接IPV6的站点,站点可以是一个或多个主机
    ③翻译技术:利用转换网关来在IPV4和IPV6网络之间转换报头地址,同时根据协议不同做对应的语义翻译,从而使纯IPV4和纯IPV6站点之间能够透明通用

    3. 常用应用

    • 3.1 层次化网络模型从下至上分为三层:
      接入层:功能单一,向本地网段提供用户接入

    汇聚层:功能多样,可以有多层,包括网络访问策略、数据包的处理、过滤、地址等中间操作
    核心层:功能单一,只负责高速的数据交换

    • 3.2 网络地址翻译NAT:
      公司内容有很多电脑,但是使用少量IP地址访问因特网

    大量内网IP地址集合 映射到 少量因特网IP地址集合就称为NAT
    可以大大减少IP地址的使用量

    • 3.3 默认网关:
      一台主机可以有多个网关。默认网关是指找不到可用的网关,九堡数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关一般指的就是默认网关

    默认网关的IP地址必须与本机IP地址在同一网段内,即同网络号

    • 3.4 冲突域和广播域:
      路由器可以阻断广播域和冲突域;交换机只能阻断冲突域

    路由器下可以划分多个广播域和多个冲突域;一个交换机整体是一个广播域,可划分多个冲突域
    物理层设备集线器下整体作为一个冲突域和一个广播域

    • 3.5 虚拟局域网VLAN:
      VLAN是建立在物理网络基础上的一种逻辑子网。通过虚拟技术,把局域网(LAN)划分成好几个不同的VLAN,而且使得网络接入不再局限于物理地址上的约束。VLAN内部可以相互沟通,不过VLAN之间不能直接沟通,必须经过特殊设置的路由器才可以。

    这样做的实际意义主要有两个。一个是通过分割,在较大的LAN中创建不同的VLAN,可以抵御广播风暴的影响,同时可以多设置防火墙来大大提高网络的安全性。另外一个是有助于提高工作效率和接入速度。
    虚拟专用网VPN:
    是在公用网络上建立专用网络的技术,其之所以成为虚拟网,主要是因为整个VPN网络的任意两个节点之间的网络并没有传统专用所需的端到端的物理链路,而是架构在用公用网络服务商所提供的网络平台,如Internet、atm(异步传输模式)、frame relay等之上的逻辑网络,用户数据在路基链路中传输。

    六.网络安全

    Pgp,HTTPSSSL协议应用层
    Pgp,HTTPSSSL协议表示层
    Pgp,HTTPSSSL协议会话层
    SSL协议TLS SET传输层
    防火墙 IPSec网络层
    链路加密 PPTP L2TP数据链路层
    隔离 屏蔽物理层
    • SSL协议用于网银交易

    • 用户和服务器的合法性验证

    • 加密数据以隐藏被传输的数据

    • 保护数据的完整性

    1.防火墙

    • 概念:是在内部网络和外部因特网之间增加的一道安全防护措施,它认为内部网络是安全的,外部网络是不安全的。分为网络级防火墙和应用级防火墙,两级之间的安全手段如下:

    • 网络技术防火墙:
      层次低,但是效率高,使用包过滤及状态监测手段,若异常过滤掉,不与内网通信,不拆分包

    • 应用级防火墙:
      层次高,效率低,拆分包,具体检查里面的数据,会消耗大量的时间,但安全性高

    • 屏蔽子网方法:
      在内网和外网之间增加一个屏蔽子网,称为DMZ非军事区,内网和外网通信必须多经过一道防火墙,屏蔽子网中一般存放的是邮件服务器、WEB服务器这些内外网数据交互服务器,可以屏蔽掉一些内部攻击,但是无法全部屏蔽内部攻击

    2.计算机的病毒和木马

    • 病毒:编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码
      病毒具有传染性、隐蔽性、潜伏性、破坏性、针对性、衍生性、寄生性、未知性

    • 木马:是一种后门程序,被黑客用作控制远程计算机的工具,隐藏在被控制电脑上的一个小程序监控电脑一切操作并盗取信息

    常见种类:
    系统引导型病毒
    文件外壳型病毒
    目录性病毒
    蠕虫病毒(感染exe文件):爱虫病毒、熊猫烧香、罗密欧与朱丽叶、恶鹰、尼姆达、冲击波
    木马:QQ消息尾巴木马,特洛伊木马
    宏病毒(感染WORD,EXCLE等文件中的宏变量):美丽沙、台湾1号
    CIH病毒:史上唯一破坏硬件的病毒
    红色代码:蠕虫病毒+木马

    第11章标准化和软件知识产权基础知识

    一.知识产权的基础知识

    1. 知识产权的保护期限

    • 当以单位为主体时,是没有署名权和修改权的,因为属于集体
      软件设计师教程知识点整理

    2. 知识产权人的确定

    • 著作权和专利权 在 单位和个人情况下的归属
      软件设计师教程知识点整理

    • 单位和委托的区别在于,当合同中未确定著作权归属是,著作权默认归于单位,而委托创作中,著作权默认过属于创作方个人
      软件设计师教程知识点整理

    3. 侵权判定

    • 个人未发表的东西被抢先发表属于侵权
      软件设计师教程知识点整理

    • 只要不进行传播、公开发表、盈利都不算侵权,具体如下:、
      软件设计师教程知识点整理

    4. 相关法律名词解释

    软件设计师教程知识点整理

    二 标准化基础知识

    1. 标准的分类

    软件设计师教程知识点整理

    2. 标准的编号

    软件设计师教程知识点整理

    第12章软件系统分析与设计

    二 数据库分析和设计

    1. 数据库的设计步骤

    需求分析阶段概念结构设计阶段逻辑结构设计阶段物理设计阶段数据库实施
    调查机构情况、熟悉业务活动 、 明确用户需求 、 分析系统功能 、 编写分析报告抽象数据 设计局部视图 合并取消冲突 修改重构消除冗余转化为数据模型、关系规范化 、模式优化、设计用户子模型确定数据库物理模型、评价数据库物理模型定义数据库、数据库装入/编写应用程序、数据库试运行

    2. 实施与维护