软考-软件设计师

目录

一、计算机系统

1.1 CPU的功能有:

1.2 运算器的组成

1.3 控制器——不仅要保证程序的正确执行、还要能够处理异常事件

1.3.1 指令控制逻辑

1.4 计算机基本单位

1.5 进制的变换

1.5.1 进制加减法

1.6 原码、反码、补码、移码

1.7 浮点数

1.8 寻址

1.9 校验码

1.10 RISC、CISC

1.11 流水线

1.12 存储器

1.13 Cache

1.14 中断

1.15 输入输出方式 I/O 与 总线(了解)

1.16 加密技术与认证技术

1.17 可靠性公式

二、程序设计语言基础知识

2.1 编译、解释程序

2.2 正规式

2.3 有限自动机

2.4 上下文无关法

2.5 中缀、后缀表达式转换

2.6 语法树中、后遍历

2.7 补充

三、知识产权

3.1 软件著作权

3.2 专利

3.3 商标

四、数据库

4.1 概念数据模型、结构数据模型

4.2 数据库的三级模式两级映像

4.3 关系模式

4.3.1 完整性约束

4.3.2 传统的集合运算

4.3.3 函数依赖

4.3.4 关系模式的范式

4.4 视图  /  索引  /  权限

4.5 事务

4.6 备份

4.7 并发控制的主要技术——封锁

五、面向对象

5.1 类

5.2 对象

5.2.1 方法重载

5.2.2 继承  Extends

5.2.3 多态 

5.2.4 面向对象设计原则

5.3 抽象类

六、UML(统一建模语言)

6.1 关系

6.2 UML图

七、设计模式

7.1 创建型设计模式

7.2 结构型设计模式

7.3 行为型设计模式

八、操作系统

8.1 前趋图

8.2 进程

8.2.1 进程间的通信

8.2.2 死锁

8.2.3 进程资源图

8.2.4 线程

8.2.5 程序局部性

8.3 分页存储管理

8.4 单 / 双缓冲区

8.5 磁盘调度算法

​编辑8.5.1 旋转调度算法

8.6 多级索引结构

8.7 文件目录(了解) 

九、结构化开发

9.1 模块独立

9.1.1 耦合

9.1.2 内聚

9.2 结构设计原则

9.3 系统文档

十、软件工程

10.1 能力成熟度模型(CMM)

10.2 能力成熟度模型集成(CMMI)

10.3 软件过程模型

10.4 敏捷方法

10.5 主要软件需求

10.6 系统设计

10.7 系统测试

10.7.1 传统测试

10.7.2 测试方法

10.7.3 McCabe度量法

10.7.4 系统维护概述

10.7.5 沟通路径

10.7.6 软件项目估算

10.7.7 Gantt图和PERT图

10.8 软件配置管理

11、信息安全

11.1 防火墙

11.2 病毒

11.3 网络攻击

11.4 网络安全

12、计算机网络

12.1 协议簇

12.1.1 TCP和UDP

12.1.2 SMTP(25)和POP3(110)

12.1.3 ARP和RARP

12.1.4 DHCP和协议名(URL)

12.2 IP地址、蓝牙

12.3 Windows命令

13、数据结构、算法(不全)

13.1 复杂度

13.2 线性表

13.3 栈、队列

13.4 二叉树

13.5 有向图、无向图

13.6 排序算法时间/空间复杂度


一、计算机系统

计算机的基本硬件系统由运算器、控制器、存储器、输入\输出设备五大部分组成

1.1 CPU的功能有:

1.程序控制:控制程序的执行顺序

2.操作控制:将每条指令的操作信号送往对应部件按要求进行操作

3.时间控制:对各种操作进行时间控制

4.数据处理:数据加工处理

1.2 运算器的组成

1.算术逻辑单元(ALU):处理数据,负责算术\逻辑运算

2.累加寄存器(AC):通用寄存器,用来寄存结果,为ALU提供工作区暂存结果

3.数据缓冲寄存器(DR):CPU和内存、外部设备之间的中转站

4.(了解即可)状态条件寄存器(PSW):保存算术指令和逻辑指令

1.3 控制器——不仅要保证程序的正确执行、还要能够处理异常事件

1.3.1 指令控制逻辑

1.指令寄存器(IR):可放地址、操作码。用户不可访问,完全透明

2.程序计数器(PC):具有寄存信息和计数功能,追踪指令,存储执行下一条指令地址

3.地址寄存器(AR):保存当前CPU所访问的内存单元地址

4.指令译码器(ID):包含操作码、地址码,对操作字段进行解析、控制部件

1.4 计算机基本单位

最小的数据单位:bit

最小的存储单位:byte

位(比特)bit
字节Byte    1B = 8bit
千字节KB1KB = 1024B
兆字节MB1MB = 1024KB
吉字节GB1GB = 1024MB
太字节TB1TB = 1024GB

1.5 进制的变换

2进制     >>   B

8进制     >>   O

10进制   >>   D

16进制   >>   H

1.除N取余法 余数从下到上

2.按照权位展开法

10100.01 = 1*10^4 + 0*10^3 + 1*10^2 + 0*10^1 + 0*10^0 + 0*10^-1 + 1*10^-2

变二进制 >> 1*2^4 + 1*2^2 + 1*2^-2

1.5.1 进制加减法

16进制表示 1 2 3 4 5 6 7 8 9 A~F表示10~15

公式:大地址 - 小地址 + 最末位+1

如题所示:内存按字节编址,地址从 A0000H 到 CFFFFH 的内存,共有多少  KB字节,若用存储容量为64K x 8bit的存储器芯片构成该内存空间,至少需要多少 片

CFFFF(H) - A0000(H) = 2FFFF(H) + 1 = 30000(H) 字节

1024字节 = 1KB字节

30000 / 1024 = 192KB

需要多少片

1B = 8bit 

192KB = 192K * 8bit

192K*8bit   /   64K/*bit  =  3

1.6 原码、反码、补码、移码

在原码、反码表示中,0表示正号,1表示负号,其余的n-1位表示数值的绝对值

正数 >> 原码、反码、补码相同 >> 补码符号位取反

负数 >> 原码、反码符号位不变,其余变反 >> 反码的末位加1为补码 >> 补码符号位取反为移码

补码的补码 = 原码

1.7 浮点数

浮点数进行运算时,首先需要进行对阶段,推荐小阶向大阶对齐,尾数右移,这样浮点数损失较小

二进制数N可以表示为 N = 2^E * F 

 其中E为阶码 F为尾数 用阶码和尾数表示的数为浮点数

阶码越大表示数的范围越大  尾数越大表示精度越大

浮点数的表示格式如下

1.8 寻址

排序序号按照寻址速度排序

1.立即寻址:操作数包含在指令中

2.寄存器寻址:操作数放在内存单元,指令直接给出操作数地址

3.直接寻址:操作数放在某一寄存器中,指令中给出存放操作数的寄存器

4.寄存器间接寻址:操作数放在内存单元,操作数所在存储单元的地址在某个寄存器中

5.间接寻址:指令中给出操作数地址的地址

6.相对寻址:(了解即可)操作数地址等于变址寄存器的内容加偏移量

1.9 校验码

1.奇偶校验码:增加一位校验位来使编码中1的个数为奇数或者偶数  只能检出奇数个位出错

2.海明校验码:利用奇偶性来纠错和检错  2^k - 1 >=  n + k  n为数据信息位数   k是校验位位数

3.循环冗余校验码:可以检错 不能纠错 码距 = 2

1.10 RISC、CISC

1.11 流水线

公式:第一条指令的完整执行时间+(n-1)*最长段的时间

操作周期 =  最长时间段

加速比 = 不采用流水线 / 采用流水线

吞吐率  =  最长时间段的倒数

n条指令吞吐率 = n / 总指令流水线时间

1.12 存储器

存储器按访问方式分类:按地址访问 按内容访问

存储器按寻址方式分类: 随机、顺序、直接存储器

相联存储器按内容访问

虚拟存储由主存(DRAM)和辅存构成

1.13 Cache

 Cache容量越大,命中率越高,对程序员透明、提高CPU访问内存

将主存地址转换成Cache存储器的地址称为地址映像 >>>> 由硬件自动完成

Cache地址映像

1.全相联映像           冲突最少

2.组相联映像           冲突较少

3.直接映像               冲突最多

1.14 中断

1.中断向量提供中断服务程序的入口地址

2.中断时间 >> 发出中断请求开始 到进入中断服务程序

3.保存现场:返回执行原程序

1.15 输入输出方式 I/O 与 总线(了解)

1.程序查询方式:一次只能读\写一个字  CPU和IO只能串行工作   CPU轮询检查长期忙等

2.中断驱动方式:一次只能读\写一个字 CPU和IO可以并行工作   

3.直接存储器方式:一次读\写为块 仅在传送数据块的开始结束才需要干预 数据直接放入内存

总线可分为:数据总线、地址总线、控制总线

1.16 加密技术与认证技术

一、加密技术:

1.对称加密:加密和解密是同一把密钥   

        适合大量明文数据 加密解密速度很快

2.非对称加密:加密和解密不是同一把密钥

        速度较慢 不能通过一把密钥推出另一把

3.混合加密

二、认证技术

摘要:防止内容被篡改,通常和数字证书一起使用

发送方用自己的私钥对摘要进行签名(加密),得到数字签名后放在密文一起发送

接收方用发送方的公钥对数字签名进行验证(解密),如果验证成功则该消息没有被假冒不可否认

三、对称密钥算法

        DES         3DES         RC-5         IDEA         AES         RC4

四、非对称密钥算法

        RSA         ECC         DSA

1.17 可靠性公式

串联系统公式   >>  R = R1*R2*R3 .... RN

并联系统公式   >>   R = 1 - (1- R1)(1- R2)...(1-RN) 

二、程序设计语言基础知识

低级语言:机器语言 汇编语言

解释程序也称为解释器

程序设计语言的控制成分:顺序、选择、循环结构

函数参数的 传值调用 和 引用地址调用(C++)

传值调用:不可以实现形参和实参间的双向数据传递

引用地址调用:可以实现形参和实参间的双向数据传递

2.1 编译、解释程序

编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成

编译方式:词法分析、语法分析、语义分析

编译器和解释器都不可省略词法分析、语法分析、语义分析,且顺序不可换

符号表:不断收集、记录、使用源程序中一些相关符号的类型和特征等信息,并将其存放在符号表中,记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成

1.词法分析:分析程序的字符及是否符合程序语言的规定 如关键字 int a = 3不能是 inn a = 3

2.语法分析:分析程序中的句子结构是否正确 如括号不匹配

3.语义分析:可以发现静态语义错误,但是不能发现动态语义错误 int a = 1/ 0

中间代码生成可以跨平台 与具体的机器无关 

目标代码生成阶段的工作与具体的机器密切相关,寄存器的分配处于目标代码生成阶段

2.2 正规式

2.3 有限自动机

有限自动机是词法分析的一个工具,它能正确地识别正规集

确定的有限自动机:识别字符后转移的状态是唯一的,只能循环或者 只能去下一个

不确定的有限自动机:识别字符后转移的状态是不唯一的,可能循环,也可能去下一个

q0这个圆圈是初态                q1这个是终态          自动机必须要在终态结尾

2.4 上下文无关法

广泛地用于各种程序设计语言的语法规则

一个字符可以变成其他对应的字符进行运算

2.5 中缀、后缀表达式转换

中缀式:a + b 

后缀式:ab + 

优先级:1.(   )          2. * / 乘除        3.+ - 加减   

优先级相同,从右向左

如:1 - 2 * (3 + 4) / 5 中缀式变成后缀式

       1 - 2 * 34+ / 5

       1 - 2 * 34+5/

       1 - 234+5/*

       1234+5/*-

2.6 语法树中、后遍历

中序遍历:按照左根右顺序提取

后续遍历:按照左右根顺序提取

2.7 补充

不能通过反编译还原出源程序

HTML、HTML、WML是标记语言   PHP不是标记语言

预处理 >> 编译 >> 汇编 >> 链接

Python >> 解释性语言 字符串、元祖不可变  集合去重

内存空间包含:动态数据区、代码区、静态数据区

三、知识产权

工业产权包括专利 、商标

3.1 软件著作权

软件著作权产生时间 >> 自作品完成创作之日

软件著作权客体包含 源程序、软件文档、目标程序

软件著作权 >> 《中华人民共和国著作权法》、计算机软件保护条例

发表权、财产权 受时间限制

署名权、修改权、保护作品完整权都不受时间限制

3.2 专利

1.使用了B国的专利产品 除了在B国进行销售需要费用 其他国都不用 

除非B的专利在其他国有申请

2.未知情况下侵权,支付合理费用后可以继续使用

3.申请专利给最先申请的人 不能同时给两个人

3.3 商标

1.注册商标给最先申请的人 相同申请给最先使用的人

2.商标权可以一直延长,到期不延长会终止  /10

商业秘密 >> 对技术信息/经营信息提供保护

四、数据库

4.1 概念数据模型、结构数据模型

实体——联系方法表示的概念数据模型称为E-R图

1.实体          用矩形表示

2.属性          用椭圆表示

3.联系          用菱形表示

联系:一对一            一对多             多对多              

结构数据模型由层次、网状、关系模型、面向对象构成

关系模型是一种用二维表格结构来表示实体以及实体之间联系的数据模型

4.2 数据库的三级模式两级映像

1.三级模式:概念模式(基本表)                  外模式(视图)                内模式(存储文件)

2.两级映像:概念模式/内模式映像(物理独立)         外模式/概念模式映像(逻辑独立)

4.3 关系模式

一个关系模式应当是一个五元组

4.3.1 完整性约束

关系的描述为关系模式,格式为 关系名(属性名1,属性名2,....,属性名n)

候选码:属性或者属性组合,可以识别唯一元祖

主码(主键):在一个关系中挑选一个候选码为主键

外码:在一个关系中含有其他关系的主码为外码

4.3.2 传统的集合运算

1.笛卡尔积 

 2.关系的并 R U S   、交 R ∩ S、差 R - S

3.选择运算——筛选并选择符合条件的数据

4.自然连接——去掉重复列

 如例题自然连接结果:自然连接就是去掉重复列,然后其他列相加

4.3.3 函数依赖

1.部分函数依赖:X,Y共同决定Z,所以Z对X,Y部分函数依赖

2.完全函数依赖:X直接决定Y,所以Y对X完全依赖

3.传递依赖:       X决定Y,Y决定Z,那么X决定Z,所以Z对X传递依赖

                            X决定Y,W,Y共同决定Z,那么Z对X也存在传递依赖

4.3.4 关系模式的范式

第一范式  1NF  >> 关系模式中的全部属性不可再分解   

第二范式   2NF  >> 消除非主属性对码的部分传递依赖

第三范式   3NF  >> 消除非主属性对码的传递依赖

BCNF  >> 消除主属性对码的部分和传递依赖

4.4 视图  /  索引  /  权限

1.权限:

2.索引:ASC(升序)  \  DSC(降序)

采用三级模式结构的数据库系统中,如果对一个表创建聚簇索引,那么改变的是数据库的外模式

3.视图就是一个虚拟表,从一个或者多个基本表或视图中导出

对视图进行的操作,视图不会改变,但是原表会改变

4.5 事务

特征:1.原子性 :要么都做,要么不做 

           2.一致性:从一个事务到另一个一致性状态

           3.隔离性:并发执行其他事务不可见

           4.持久性:崩溃都会保存

4.6 备份

静态转储:在转储期间不允许对数据库进行任何操作

动态转储:在转储期间允许对数据库进行操作

海量转储:每次转储全部数据

增量转储:每次只转储上次的数据

4.7 并发控制的主要技术——封锁

1.排它锁:当一个事务添加排它锁后,其他事务不可添加

2.共享锁:一个事务添加共享锁以后,其他事务只能继续加共享锁,但是不能加其他锁

五、面向对象

5.1 类

类是对象的抽象   

一个类的方法和数据描述一组对象的共同行为和属性

类的三种:

1.实体类:现实世界中的实体,人、物

2.接口类:交互的方式,人与系统的接口可以是显示屏

3.控制类:控制活动流

5.2 对象

对象是基本运行时的实体

一个对象由对象名、属性、方法三个部分组成

属性也可以称为数据、状态

方法也可以称为操作、行为

类名  对象名  =  new  类名( )

5.2.1 方法重载

1.方法名相同,参数个数不同

2.方法名相同,参数类型不同

3.方法名相同,参数类型顺序不同

5.2.2 继承  Extends

继承有单重继承和多重继承

继承是父类和子类之间共享数据和方法的机制

适合自己的要求去置换父类称为覆盖

特点:可以重写父类方法,共享方法、非私有属性,还可以自己添加函数方法

5.2.3 多态 

多态:由继承机制支持,不同的对象收到同一条消息产生不同的结果,实现的细节由接收对象决定

注意在进行多态之前首先要继承

如果父类没有子类对应的方法,那么子类的方法就不可用,子类不可以自己添加函数方法

父类名 对象名  =  new 子类名

编译时是静态绑定,当运行的时候就是动态绑定

动态绑定根据接收对象的具体情况将请求的操作与实现的方法进行连接

5.2.4 面向对象设计原则

1.单一责任:仅一变化原因

2.开放封闭:可扩展不可修改

3.里氏替换:父类出现,子类一定出现

4.依赖倒置:细节依赖于抽象,不依赖实现

5.接口分离:接口依赖于抽象,不依赖具体

6.共同封闭:一个包内的类被影响,包以外的类不会受影响

7.共同重用:重用一个包的类就要重用包中全部类

5.3 抽象类

1.抽象类

有抽象方法的一定是抽象类,但是抽象类不一定有抽象方法

抽象类必须要被继承才能使用

一个类只能继承一个抽象类

抽象类不能被实例化

任何子类,必须重写父类的抽象方法(抽象方法必须被子类实现)

2.接口

非抽象类实现接口,必须重写这个接口中的所有方法

接口的方法默认是抽象的

六、UML(统一建模语言)

UML的词汇表包含三种构造块,分别为  事物、关系和图

6.1 关系

UML中有4种关系:依赖、关联、泛化、实现

1.依赖:一个事物的发生会影响另一个事物          A依赖B    如果B没了 A就没了

2. 关联:结构关系                1对1          1对多         多对多 

聚集是一种特殊类型的关联,描述整体和部分间的结构关系

聚合:部分和整体的生命周期不一致,整体消失,部分不一定消失

组合:部分和整体的生命周期一致,整体消失,部分也消失

3.泛化:子元素共享父元素的结构和行为              学生、教师都属于人

4.实现

6.2 UML图

1.UML类图,通常包含类、接口、协作、依赖、泛化和关联关系

2.对象图  某一时刻一组对象的关系   对象名:类名

3.用例图:用例、参与者关系(包含、扩展、泛化)

4.序列图:以时间顺序组织的对象交流  一个用例多个对象

5.通信(协作)图:收发消息流的顺序组织结构

6.状态图:对象的状态转换其事件顺序

7.活动图:1个活动到另一个活动

8.构件图:组构建之间的依赖

9.部署图:面向对象的物理模型

七、设计模式

设计模式可分为创建型、结构型、行为型

注意中英文名称都要有印象

7.1 创建型设计模式

1.(类)工厂方法模式(Factory)

2.抽象工厂模式(Abstract Factory):提供一系列相关或依赖接口

3.生成器模式(Builder):在构建过程中创建不同表示,复杂对象的算法独立于组成部分

4.原型模式(Prototype): 用原型实例制定创建对象的种类,避免创建一个与产品类层次平行的工厂类层次

5.单例模式(Singleton):一类仅有一个实例,提供全局访问点

7.2 结构型设计模式

1.(类)适配器(Adapter)

2.适配器模式(Adapter):将不兼容的接口能够一起工作

3.桥接模式(Bridge):将抽象部分与其实现部分分离 可以独立地变化(左抽象接口,右实现接口)

4.组合模式(Composite):树型结构,表示一部分整体 添加/删除

5.装饰器模式(Decorator):动态地给一个对象添加一些额外的职责

6.外观模式(Facade):为子系统中的一组接口提供一个一致的页面,为复杂子系统提供一个简单接口 

7.享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象

8.代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问

7.3 行为型设计模式

1.(类)解释器模式(Interpreter)

2.责任链模式(Chain of Re):多个对象都有机会处理请求,沿着链传递,直到有对象处理

3.命令模式(Command):将多个请求封装为一个对象,从而使得不同的请求对客户进行参数化

4.迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中的各个元素

5.中介者模式(Mediator):封装对象的交互,耦合松散

6.备忘录模式(Memento):在不破坏封装性的前提下捕获对象的内部状态

7.观察者模式(Observer):定义对象的一种一对多依赖关系

8.状态模式(State):允许一个对象在其内部状态时改变它的行为

9.策略模式(Strategy):作用与某个对象结构中的个元素的操作,不改变类的前提下定义新操作

八、操作系统

8.1 前趋图

程序顺序执行时的主要特征包括顺序性、封闭性和可再现性

PV操作,   执行前P  → P1 →  执行后 V

程序并发执行时:失去程序封闭性,程序和机器的执行顺序的活动不再一一对应吗,并发程序之间相互制约

8.2 进程

进程是资源分配和独立运行的基本单位

进程的三种状态:运行、就绪、阻塞

8.2.1 进程间的通信

1.同步:直接制约         速度差,在一定情况下需等待

2.互斥:间接制约        千军万马过独木桥

临界资源:有些资源一次只能供一个进程使用

临界区:有空即进,无空则等。有限等待,让权等待

若信号量S>=0表示某资源的可用数

若信号量S<0其绝对值表示阻塞队列中等待该资源的进程数

公式:- (n - 资源可用数)  ~  资源可用数

8.2.2 死锁

有m个资源,n个进程,每个进程需要k个资源

不可能发生死锁的最小资源数  m >= n * (k - 1) +1 

分配策略:轮流的为每个进程分配资源

鸵鸟策略、预防策略、避免策略、检测与解除死锁

8.2.3 进程资源图

1. 先统一分配资源,再申请,查看是否堵塞

R1指向P1....  R1指向P3  这就是分配资源

P2指向R1、R2  这就是申请资源

8.2.4 线程

线程是可独立拥有资源的独立单位、可独立调度和分配的基本单位

线程可以共享进程的全部资源,但是线程之间不能共享资源

8.2.5 程序局部性

程序局部性表现在时间局限性和空间局限性两个方面

时间局部性:指令可能会被再次访问

空间局部性:程序是顺序执行的

8.3 分页存储管理

分页地址结构 = 页号 + 页内地址

技巧:页号直接对应表格物理块号

如:共有16位二进制

4K = 4096 = 2^12  

12位二进制表示业内地址 C20      3个16进制换算就是12个二进制

4位二进制表示页号为1                 1个16进制换算就是4个二进制

物理地址为  3C20H

8.4 单 / 双缓冲区

1.单缓冲区:(T+M)* N(次数) + C

2.双缓冲区:M+C < T

8.5 磁盘调度算法

1.先来先服务:按请求访问者的先后请求次序启动磁盘驱动器

若磁头位于53,请求顺序为 98、183、37、.122、14、124、65、67

2.最短寻道优先:不考虑顺序,先找最近的点

若磁头位于53,请求顺序为 98、183、37、.122、14、124、65、67

3.扫描算法:不考虑请求顺序。一直向左找点,(或一直向右找点),到终点后转向

若磁头位于53,请求顺序为 98、183、37、.122、14、124、65、67

4.循环扫描算法:一直单向移动,向左/右找点,如果到左/右终点,直接到最右/左开始访问

若磁头位于53,请求顺序为 98、183、37、.122、14、124、65、67

8.5.1 旋转调度算法

1.  第一次读取处理时间 = 读取时间 + 处理时间

     第一次读取处理后的回来时间 = 绕一圈时间 - 处理时间

     (读取时间 + 处理时间 + 第一次读取处理后的回来时间) * (N - 1) + 第一次读取时间             

     N代表记录数量

2.优化后:(读取时间 + 处理时间) * N                                                              N代表记录数量

3.平均距离磁道 * 磁道之间移动时间 * (延迟 + 传输时间) * 数量

8.6 多级索引结构

1.直接地址索引 >> 磁块数据块

2.一级地址索引  >> 一级索引块  >>  数据块

3.二级间接地址索引  >>  二级索引块  >>  一级索引块  >>   数据块

8.7 文件目录(了解) 

1.文件控制块:基本信息类、存取控制信息类、使用信息类

2.目录结构:一级/二级/多级目录

绝对路径、相对路径

访问f1.c文件

全文件名:D:\Program\C-prog\f1.c

绝对路径:D:\Program\C-prog

在Program时的相对路径:C-prog\

九、结构化开发

系统实现的基本原理:抽象、模块化、信息隐蔽、模块独立

9.1 模块独立

模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。衡量模块独立程度的标准是耦合性、内聚性

9.1.1 耦合

这些耦合性的顺序是从低到高,独立性是从强到弱

1.无直接耦合:两个模块没有直接的联系

2.数据耦合:两个模块没有调用关系,传递的是简单的数据值

3.标记耦合:两个模块之间传递的是数据结构

4.控制耦合:一个模块调用另一个模块

5.外部耦合:模块通过软件之外的环境联结

6.公共耦合:一个公共数据环境相互作用的那些模块间的耦合

7.内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部

9.1.2 内聚

这些内聚性的顺序是从低到高,模块独立性由弱到强

1.偶然内聚(巧合内聚):一个模块内的各处理元素之间没有联系

2.逻辑内聚:模块内功能逻辑类似

3.时间内聚:同时执行的动作组合在一起形成模块

4.过程内聚:一个模块指定制定过程完成多个任务

5.通信内聚:模块内所有元素都在同一数据结构上操作

6.顺序内聚:顺序执行

7.功能内聚:模块内所有元素共同完成一个功能,缺一不可

9.2 结构设计原则

1.分解-协调原则:在处理过程中根据系统总体要求协调各部门关系

2.自顶向下的原则:先抓系统总的功能目的,然后逐层分解

3.信息隐蔽、抽象的原则:各模块相对独立、内部结构合理

4.一致性原则:统一规范、统一标准、统一文件模式

5.明确性原则:模块必须功能明确、接口明确

6.模块之间的耦合性尽可能小,内聚程度尽可能高(模块独立性强)

7.模块的扇入系数和扇出系数要合理

8.模块的规模要适当

9.模块的作用范围应在其控制范围之内

9.3 系统文档

1.用户与系统分析人员:可行性研究报告、总体规划报告、系统开发合同、系统方案说明书

2.系统开发人员和项目管理人员:系统开发计划、系统开发月报、系统开发总结报告

3.系统测试人员和系统开发人员:系统方案说明书、系统开发合同、系统设计说明书、测试计划

4.系统开发人员和用户:用户手册、操作指南

5.系统开发人员和系统维护人员:系统设计说明书、系统开发总结报告

6.用户与维修人员:系统运行报告、维护修改建议

十、软件工程

10.1 能力成熟度模型(CMM)

1.初始级:杂乱无章,依靠核心人物

2.可重复级:可以重复以前在同类项目中的成功,建立基本的项目管理

3.已定义级:文档化、标准化、标准软件

4.已管理化:制定软件过程质量、详细度标准,可被新成员理解、控制

5.优先级:新观念、新技术反馈改进

10.2 能力成熟度模型集成(CMMI)

1.阶段式模型:初始的、已管理的、已定义的、定量管理的、优化的

2.连续式模型:

2.1 未完成的:过程域未执行或未得到CL1中定义的目标

2.2 已执行的:将可标识的输入变输出

2.3 已管理的:共性目标,已管理的制度化

2.4 已定义的:已定义过程的制度化、标准化

2.5 定量管理:定量目标作为管理准则

2.6 优化的:持续改进计划满足用户要求

10.3 软件过程模型

1.瀑布模型:在需求明确下使用

2.V模型:基本问题需求逐步细化,减少用户变更影响

3.增量模型:不断增强功能然后再发布、发布

 4.原型模型:有效捕获系统需求

5.演化模型:需求模糊不清、规模不是很大很复杂

6.螺旋模型:适合大规模团队开发的项目,技术含量高,过多迭代会增加成本、时间

7.喷泉模型:以用户为动力,以对象为驱动,支持重用

10.4 敏捷方法

1.极限编程(XP): 沟通、简单性、反馈、勇气

2.水晶法(Crystal):不同项目不同策略、方法论、约定

3.并列争求法(Scrum):优先级,每30天为一个冲刺

4.自适应软件开发(ASD):6个原本原则

5.敏捷统一过程(AUP):在小型上迭代,大型上连续的原理来构建软件系统

10.5 主要软件需求

1.功能需求:做什么

2.性能需求:响应时间

3.数据需求:数据精度

4.可靠性需求:是否必须检测和隔离错误,出错后,重启系统允许的时间

5.环境需求:考虑未来软件应用的环境(硬件、软件)

10.6 系统设计

1.概要设计包含设计软件系统总体结构、数据结构及数据库设计、编写概要设计文档、评审

概要的设计任务:设计软件系统总体结构

设计软件系统总体结构:采用某种设计方法,将一个复杂的系统按功能划分成模块,确定每个模块的功能,确定模块之间的调用关系、接口

编写概要设计文档:概要设计说明书、数据库设计说明书、用户手册以及修订测试计划

2.详细设计:对每个模块进行详细的算法设计

10.7 系统测试

系统测试阶段的测试目标来源于需求分析阶段

应该不断尽早地进行测试

意义:发现错误

目的:用最少的能力、时间发现潜在缺陷,保证系统质量、可靠性

10.7.1 传统测试

1.单元测试:模块接口、局部数据结构、重要的执行路径、出错处理、边界条件

2.集成测试:自顶向下 / 自底向上

编写驱动桩程序
自顶向下×
自底向上×

10.7.2 测试方法

1.静态测试:人工检测、计算机辅助静态分析

2.动态测试

黑盒测试icon-default.png?t=N3I4https://blog.csdn.net/weixin_64476458/article/details/123058109?spm=1001.2014.3001.5501

白盒测试icon-default.png?t=N3I4https://blog.csdn.net/weixin_64476458/article/details/123561070?spm=1001.2014.3001.5501

10.7.3 McCabe度量法

公式:V(G) = m - n + 2       

10.7.4 系统维护概述

系统维护内容:硬件 / 软件 / 数据 维护

系统可维护性的评价指标

软件开发的每个阶段都要注意提高可维护性

软件文档只好不坏,选项当中说软件文档不好的就是不正确的,百利无一害

可靠性MTTF / (1 + MTTF)
可用性MTBF / (1 + MTBF)
可维护性1 / (1 + MTTR)

10.7.5 沟通路径

n个人无主程序员有主程序员
沟通路径数量(n - 1)* n / 2n - 1

10.7.6 软件项目估算

1.基本COCOMO估算模型 >>  静态单变量模型

   中级COCOMO估算模型 >>  静态多变量模型

   详细COCOMO估算模型 

2.COCOMOII(应用组装、早期设计、体系结构)

10.7.7 Gantt图和PERT图

1.Gantt图:作为项目管理工具 / 记录开始截止时间 / 清晰获得任务并行信息 / 不知道依赖

2.PERT图:箭头表示任务 / 结点称为事件 / 不能描述并行

开始结点的最早时刻为0

最早时刻 + 持续时间  = 下一个最早时刻 

最迟时刻 -  持续时间  = 上一个最迟时间

3.项目活动图

10.8 软件配置管理

主要目标:版本控制、确保变更

风险特性:不确定性和损失

风险不可消除

1.项目风险

2.技术风险

3.商业风险(市场风险、策略风险、销售风险、管理风险、预算风险)

 

11、信息安全

11.1 防火墙

防火墙:建立在内外网络边界上的过滤封锁机制,对通信行为进行控制、审计、报警

防火墙不具有查毒功能

1.包过滤防火墙:对用户完全透明,对传入传出网络的包进行低水平控制,不支持应用层协议

不能防范黑客攻击

2.应用代理网关防火墙:彻底隔断内网与外网的直接通信,难配置,速度慢,安全,经应用层代理

软件转发

从高到低保户程序:内网 >> DMZ隔离区 >> 外网

防火墙层次越低,工作效率越高,安全性越低

11.2 病毒

病毒特征:传播性、隐蔽性、感染性、潜伏性、触发性、破坏性

Worm 蠕虫病毒        Trojan 特洛伊木马        Backdoor 后门病毒       

Macro 宏病毒(主要感染文本文档,电子表格)

木马软件:冰河

蠕虫病毒:欢乐时光、熊猫烧香、红色代码、爱虫病毒、震网

11.3 网络攻击

1.拒绝服务攻击(Dos攻击):不断向计算机发起请求

2.重放攻击:攻击者发送一个目的主机已经接受过的报文来达到攻击目的

3.口令入侵攻击:使用某些合法用户的账号和口令登录到目的主机,然后实施攻击活动

4.特洛伊木马:被伪装成程序或游戏,当用户下载了以后,向黑客发起连接请求

5.端口欺骗攻击:采用端口扫描找到系统漏洞实施攻击

6.网络监听:攻击者可以接收某一网段在同一条物理通道上传输的所有信息

7.IP欺骗攻击:产生的IP数据包为伪造的源IP地址,以便冒充其他系统的身份

8.SQL注入攻击:提交一段数据库查询代码,根据程序返回结果获得其他数据

入侵检测技术:专家系统、模型检测、简单匹配

11.4 网络安全

网络安全包含安全协议、连接、通道

1.安全协议:SSL        TLS        PGP        MIME电子邮件附件

2.连接:SSH 终端 → 远程站点

3.通道:HTTP(80)        HTTPS(443)

HTTPS = HTTP + SSL

公共端口:0 ~ 1023

nslookup:域名查询

netstat:获取开放端口应用信息

IPSec:IP数据报文加密        PP2P:链路加密

12、计算机网络

物理层的互连设备有中继器和集线器(也可以称为多端口的中继器)

数据链路层的互连设备有网桥和交换机

网络层的互连设备是路由器

应用层的互连设备是网关

12.1 协议簇

12.1.1 TCP和UDP

TCP是一种可靠、面向连接的网络协议,通信量较大,可以差错校验和重传、流量控制、拥塞控制、端口寻址

其中流量控制采用的是:可变大小的滑动窗口协议

UDP是一种不可靠、无连接的网络协议,错误检测功能较弱,不对数据报确认,通信量较小

12.1.2 SMTP(25)和POP3(110)

SMTP:发送邮件  传输 ASCII文本 

POP3:接收邮件

PEM:私密邮件保护协议

发送添加多媒体采用MIME协议

12.1.3 ARP和RARP

ARP:地址解析              将IP地址转为物理地址

RARP:反地址解析        将物理地址转为IP地址

12.1.4 DHCP和协议名(URL)

DHCP协议:集中管理,分配IP地址,可获得客户端本机IP、DNS / DHCP服务器地址、默认网关地址

Windows无效地址:169.254.X.X

Linux无效地址:0.0.0.0

DHCP信息租用失败时自动给客户机分配的IP地址:169.254.X.X

协议名://主机名.域名.域名后缀.域名分类/目录/网页文件

DNS域名查询顺序:本地的hosts文件、本地DNS缓存、本地DNS服务器、根域名服务器

DNS接收域名请求顺序:本地缓存、本地的hosts文件、本地数据库、转发域名服务器

12.2 IP地址、蓝牙

域名和IP地址 1 1 对应

IPV4        2^32个IP地址

IPV6        2^64个IP地址

蓝牙:覆盖范围最小、通信距离最小

12.3 Windows命令

ipconfig/release: DHCP 客户端手工释放 IP 地址

ipconfig/flushdns: 清除本地 DNS 缓存内容

ipconfig/displaydns: 显示本地 DNS 内容

ipconfig/registerdns: DNS 客户端手工向服务器进行注册

ipconfig: 显示所有网络适配器的 IP 地址、网掩码和缺省网关值

ipconfig/all: 显示所有网络适配器的完整 TCP/IP 配置信息,包括 DHCP 服务是否已启动

ipconfig/renew: DHCP 客户端手工向服务器刷新请求(重新申请 IP 地址)

13、数据结构、算法(不全)

13.1 复杂度

复杂度可分为时间复杂度、空间复杂度

时间复杂度:以算法中基本操作重复执行的次数作为算法的时间度量

1.加法规则:多项相加,保留最高阶项,并将系数化为1          N^3 + N^2 + N =  N^3

2.乘法规则: 多项相乘都保留,并将系数化为1                        2N * 3N^2 = 6N^3 =  N^3

3.加法乘法混合规则: 先小括号再乘法规则最后加法规则

时间复杂度排序

空间复杂度:O(1)  O(n)  O(n^2)

13.2 线性表

线性表的顺序存储

线性表的链式存储

13.3 栈、队列

栈:先进后出,只能一端出入

队列:先进先出,两个端口

13.4 二叉树

13.5 有向图、无向图

13.6 排序算法时间/空间复杂度

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值