计算机系统基础

知识点分布

image-20250911000455838

计算机组成原理

image-20250911223304516

冯诺依曼计算机组成

image-20250911223340494

CISC与RISC指令集

image-20250911223412507

缓存速度

image-20250911224350749

时间局部性原理与空间局部性原理

  • 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型的原因是由于程序中存在大量的循环操作。
  • 空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型的情况是程序顺序执行。

空间局部性的例子:

1
2
3
4
5
int i,j,s = 0
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
s += j;
printf("结果为:%d", s)

image-20250911224518581

DMA(直接存储访问)工作方式是在主存与外设之间建立起来的数据通路。

操作系统

操作系统是应用软件与硬件之间的接口。

image-20250911224614544

操作系统分类

image-20250911224733264

image-20250911224935615

进程管理

进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、进程控制块(PCB)和数据块三个部分组成。

PCB:PCB是进程存在的唯一标志。内容包含进程标识符、状态、位置信息、控制信息、队列指针(链接同一状态的进程)、优先级、线程保护区等。

进程与线程

image-20250911225158032

同一进程可以共享的内存区域:内存地址空间,代码、数据、文件等。

进程状态切换的三态模型:

image-20250915231935340

默认系统都是非抢占式的,无剥夺的。如果是抢占式调度,优先级高的抢着做。

image-20250915233039701

常见的临界资源:打印机,缓冲区。

image-20250915233616314

信号量是全局变量,信号量表示资源数量,信号量初值表示没有任何操作的时候,资源的总数。

信号量是复数的时候,表可以欠别人资源的个数,绝对值是排队进程数。

V操作有进程则唤醒进入就绪队列,注意不是直接执行。

image-20250915234556695

开始前检查前驱,有几个前驱进程就要用P操作来检查几次,检查后继的时候,需要通知,有几个后继就要通知几次。

image-20250916232449980

死锁与银行家算法

image-20250916231033614

image-20250916232554070

银行家算法:分配资源的原则:

  • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
  • 进程可以分期请求资源,但请求的总数不能超过最大需求量
  • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源

系统可以正常执行:安全序列;死锁:不安全的序列。

存储管理

image-20250916234111748

操作系统会将内存中的几个存储位置分配个某个进程来使用。

需要掌握:逻辑地址到物理地址的二进制形式和十六进制形式的转换

image-20250917000236390

根据局部性原理:访问位为1的页面,尽量保留。

淘汰规则:先淘汰访问位为0的,如果有多个访问位为0的,则优先淘汰修改位为0的页,因为不用考虑数据一致性的问题。

image-20250917231904923

段的逻辑地址:段号,段内偏移量。

如果段内偏移量大于段长逻辑地址转物理地址溢出。

image-20250917235651406

磁盘管理

考点:1.平均存取时间 2.优化分布 3.移臂调度序列 4.单缓冲区与双缓冲区(流水线技术)

image-20250918000617538 image-20250920221106194

注意:磁头都是一起转动的。

读取数据的时间应包括以下三个部分:

  • 找磁道的时间
  • 找块(扇区)的时间,即旋转延迟时间
  • 传输时间(磁头在对应扇区上移动的时候)

处理记录的时间等于:旋转延迟时间 + 数据传输时间 + 数据处理时间。

移臂调度算法:

  • 先来先服务(FCFS)
  • 最短寻道时间优先(SSTF)
  • 扫面算法(SCAN)
  • 循环扫面(CSCAN)算法

最常考的算法:最短寻道时间优先

image-20250920225344417

image-20250920230400194

文件系统

image-20250920231643960

索引可能的含义:目的、指针、地址项、磁盘块号。

直接索引 0-9 号页。

一般索引节点表在内存索引块和数据块在磁盘。

image-20250921152839729

0表示空闲,1表示占用。

系统性能

image-20250921161040861

image-20250921161225322

吞吐量:请求完成的数量。

image-20250921161824406

性能设计方案

image-20250921162611965

image-20250921162644443

性能评估方法

方法 描述 特点
时钟频率法 以时钟频率高低衡量速度 仅考虑CPU
指令执行速度法 表示机器运算速度的单位时MIPS 仅考虑CPU
等效指令速度法(吉普森混合法) 通过各类指令在程序中所占的比例(Wi 仅考虑CPU,综合考虑指令比例不同的问题
数据处理速率法(PDR) PDR值的方法来衡量机器性能,PDR值越大,机器性能越好 PDR = L/R
仅考虑CPU+存储
综合理论性能法(CTP) CTP用MTOPS表示。CTP的估算方法是:首先算出处理部件每个计算单元的有效计算率,再按不同字长加以调整,得出该计算单元的理论性能,所有组成该处理部件的计算单元的理论性能之和即为CTP 仅考虑CPU+存储
基准程序法 把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序(benchmark) 综合考虑多部分,基准程序法是目前一致承认的测试系统性能的较好方法

【测试精确度排名】真实的程序>核心程序>小型基准程序>合成基准程序

重点掌握,基准程序法。

  • Dhrystone基准程序:它是一个综合性的整数基准测试程序,是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些典型指令综合起来形成的测试程序
  • Linpack基准程序:它是国际上最流行的用于测试高性能计算机系统浮点性能的测试
  • Whetston基准程序:它是用Fortran语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成
  • SPEC基准程序:一种是测试计算机完成单项任务有多快,称为速度测试;另一种是测试计算机在一定时间内能完成多少项任务,成为吞吐率测试

TPC基准程序:TPC(Transaction Processing Council,事务处理委员会)基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。该基准程序的评测结果用每秒的事务处理数TPC来表示。

TPC-A基准程序规范用于评价在OLTP环境下的数据库和硬件的性能;

TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境;

TPC-C测试的是联机订货系统(在线事务处理);

TPC-D、TPC-H和TPC-R测试的都是决策支持系统,其中TPC-R允许由附加的优化选项;

TPC-E测试的是大型企业信息服务系统。

TPC-W是基于Web应用的基准程序,用来测试一些通过Internet进行市场服务和销售的商业行为,所以TPC-W可以看作是一个服务器的测试标准。

Web服务器的性能评估:

  • 在Web服务器的测试中,反映其性能的的指标主要有:最大并发连接数、响应延迟和吞吐量等
  • 常见的Web服务器性能评测方法有基准性能测试、压力测试和可靠性测试

系统监视

进行系统监视通常有3种方式:

  • 一是通过系统本身提供的命令,如UNIX/Linux系统的W、ps、last,Windows种的netstat等;
  • 二是通过系统记录文件查阅系统在特定时间内的运行状态
  • 三是集成命令、文件记录和可视化技术的监控工具,如Windows种的Perfmon应用程序

嵌入式系统

嵌入式系统

  • 嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求
  • 从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中
  • 一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成

嵌入式系统的组成

image-20250921224823842

操作系统与硬件无关性,硬件无关性可以提高可移植性。

操作系统的易移植性依赖于硬件抽象层和板级支撑技术。

从传统意义上讲,嵌入式系统主要由以下部件组成:

  • 嵌入式微处理器(控制器(MCU))
  • 存储器(RAM/ROM)
  • 内(外)总线逻辑
  • 定时/计数器
  • 看门口电路:定时器溢出则中断,系统复位处理
  • I/O接口(串口、网络、USB、JTAG接口-用来进行CPU调试的常用接口)
  • 外部设备(UART、LED等)
  • 其他部件

嵌入式软件的开发与传统的软件开发方法存在比较大的差异,主要表现在以下方面:

  • 嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具卸载到目标机或固化在目标机存储器上运行。
  • 嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性。
  • 嵌入式软件开发的结果通常需要固化在目标系统的存储器或处理器内部存储器资源中。
  • 嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备。
  • 嵌入式软件对实时性的要求更高。
  • 嵌入式软件对安全性和可靠性的要求较高。
  • 嵌入式软件开发时要充分考虑代码规模。
  • 在安全攸关系统种的嵌入式软件,其开发还应满足某些领域对设计和代码审定。
  • 模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能。

image-20250921225850795

嵌入式软件设计层面的功耗控制主要可以从以下方面展开:

  • 软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素
  • 编译优化,采用低功耗优化的编译技术
  • 减少系统的持续运行时间,可以从算法角度进行优化
  • 用“中断”代替“查询”
  • 进行电源的有效管理

嵌入式系统的发展大致经历了五个阶段:

  • 第一阶段:单片微型计算机(SCM)阶段,即单片机时代
  • 第二阶段:微控制器(MCU)阶段
  • 第三阶段:片上系统(SOC)
  • 第四阶段:以Internet为基础的嵌入式系统
  • 第五阶段:在智能化、云技术推动下的嵌入式系统。

嵌入式硬件

image-20250921230714811

重点关注信号处理器。

image-20250921230932045

image-20250921231151636

image-20250921232154352

AI芯片的关键特征:

  • 新型的计算范式:AI计算既不脱离传统计算,也具有新的计算特质
  • 训练和推断:AI系统通常涉及训练和推断过程
  • 大数据处理能力:满足高校能机器学习的数据处理要求
  • 数据精度:降低精度的设计
  • 可重构的能力:针对特定领域而不针对特定应用的设计,可以通过重新配置,适应新的AI算法、架构和任务
  • 开发工具:AI芯片需要软件工具链的支持

image-20250921234552317

image-20250922231048201

单工:只能往一个方向传数据;双工:既可以发数据,也可以收数据;半双工:分时分享,同一时刻,只允许1个设备发送,但是允许多个设备接收。

总线通常分为以下几类:

  • 芯片内总线。用于集成电路芯片内部各部分的连接元件级总线。用于一块电路板内各元器件的连接
  • 系统总线,又称内总线。用于计算机各组成部分(CPU、内存和接口等)的连接
  • 外总线,又称通信总线。用于计算机与外设或计算机与计算机之间的连接或通信

image-20250922232121265

海明码可以纠正1个比特位的错误,通常认为90%以上只会出现一个比特位的错误。

嵌入式操作系统

image-20250922232759485

image-20250922233006060

image-20250922233018793

image-20250922234716891

image-20250922234739548

image-20250922234802553

image-20250922234840292

image-20250922234854546

嵌入式数据库

与传统的数据库相比,嵌入式数据库系统有以下几个主要特点:

  • 嵌入式
  • 实时性
  • 移动性
  • 伸缩性

嵌入式数据库分类

按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:

  • 基于内存方式(Main Memory Database System,MMDB)
  • 基于文件方式(File Database,FDB)
  • 基于网络方式(Netware Database ,NDB)

image-20250922235644815

重点掌握基于网络的数据库。

image-20250922235654203

计算机网络

计算机网络概述

网络延时 = 处理时延 + 排队延迟 + 发送延迟 + 传播延迟。

如果不考虑网络环境,服务器的延迟的主要因素是队列延迟和磁盘I/O延迟。

网络分类

image-20250925230853839

image-20250925231133303

image-20250925231411394

image-20250925231430520

image-20250925231541327

5G网络

5G网络的主要特征:

  • 服务化架构:5G核心网中引入了SBA服务化架构,实现网络功能的灵活定制和按需组合
  • 网络切片:通过网络切片技术在单个独立物理网络上切分出多个逻辑网络,从而避免了为每一个服务建设一个专用的物理网络,极大地减低了建网和运维成本

组网技术

image-20250925232059208

以太网帧最小长度为64字节。

image-20250925232231813

image-20250925232244185

路由器和交换机的区别:

  1. 路由器连接不同子网,交换机连接的是同一个网络
  2. 交换机不能做路由功能,路由器可以做数据转发,但它还有其他的一些功能
  3. 路由器一个端口是一个广播域,交换机所有端口是一个广播域

TCP/IP协议族

image-20250925232304739

image-20250925232416682

HTTPS的默认端口:443

TCP端口号的作用是:对应用层进程的寻址。

Internet网络核心采取的交换方式为:分组交换。

image-20250925232451017

image-20250925232511977

image-20250925232526634

image-20250925232547480

网络规划与设计

image-20250925232615660

数据库系统

数据库概述

数据库模式:外模式(视图级)、概念模式(表级别)、内模式(存储模式,文件级)。

外模式到概念模式的映射保证了逻辑独立性,概念模式到内模式保证了物理独立性。

聚簇索引的修改会影响内模式。

分布式数据库:数据在多个物理节点存放。

分布式数据库的特性:

  • 数据独立性
  • 集中与自治共享结合的控制结构
  • 适当增加数据冗余度
  • 全局一致性、可串行性和可恢复性

分布式数据库透明性分类

  • 分片透明
  • 位置透明
  • 复制透明
  • 逻辑透明

数据库设计阶段

image-20251008232845763

概念结构设计阶段:

需求分析 -> 抽象数据 -> 设计局部ER模型 -> 合并局部模型消除冲突 -> 重构优化消除冗余 -> 逻辑设计

实体完整性:主键,唯一且非空

参照完整性约束:外键,要么为空,要么是其他关系的主键

候选码:是一个属性集合,可以只有一个属性,可以有多个属性。

关系代数

关系代数的结果:并交差 笛卡尔积 自然连接

笛卡尔积和自然连接

关系代数与查询语句

查询性能的考察

水平方向:元组行/记录/实例

垂直:属性列

image-20251010215748971

image-20251010215811157

image-20251010231013584

image-20251010231028660

性能问题:

1.运算对象尽可能先压缩

2.理论上自然连接的性能优于笛卡尔积

规范化理论

重点掌握:属性集合 函数依赖 公理体系 候选键和非候选键 主属性和非主属性的判断

image-20251010231046492

image-20251010231611103

image-20251010232816788

image-20251010233002243

image-20251010233523627

image-20251010233838739

要注意:候选键是单属性,也可以是多属性的集合。

主键说的是,实体完整性,外键说的是参照完整性。

image-20251010233852205

通常找到入度为0的属性,就可以找到候选键。
如果没有入度为0的候选键,需要结合中间节点来判断候选关键字。

image-20251014230746600

学会判断范式、消除1-3NF。

image-20251014231223658

image-20251014231239702

候选键:(学号,课程号);非主属性:学分、成绩。

如果候选键是单个属性,1NF的前提下,至少能达到第2范式。

image-20251014231307395

如果没有非主属性,在1NF的前提下,至少满足第三范式。

image-20251014231325378

模式分解

image-20251014235340965

如果没有同名属性列,那么分解一定是有损的。

image-20251014235810078

例1:没有保持函数依赖。

例2:保持函数依赖,但是有损,因为没有同名属性列。

如何判断是否有损:先求拆分的属性交集,再求属性的差集,判断是狗满足原来任意一个函数依赖。

数据控制

数据控制功能包括:

  • 安全性
  • 完整性
  • 并发控制
  • 故障恢复

image-20251015231753587

image-20251015232854906

image-20251015232915059

image-20251015232924936

image-20251015232942027

image-20251015232953773

image-20251015233005221

系统工程与信息基础

系统工程

image-20251016230350722

image-20251016230635604

image-20251016230652329

信息系统生命周期

image-20251016231106169

image-20251016231437258

信息系统建设原则

image-20251016231811963

image-20251016234604801

image-20251016234615860

信息系统的分类

image-20251016234640940

image-20251016235025878

image-20251016235048261

image-20251023235637842

决策支持系统DSS

image-20251023235702665

专家系统

image-20251023235722159

image-20251023235750125

政府信息化与电子政务

image-20251023235804648

image-20251023235819700

企业信息化与电子商务

image-20251023235842860

信息化是指在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大程度利用信息资源以满足全社会的信息需求 ,从而加锁社会各个领域的共同发展以推进信息社会的过程。

信息化的主体是全体社会成员(政府、企业、团体和个人),时域是一个长期过程,空域是经济和社会的一切领域,手段是先进社会生产工具。

企业信息化涉及三类创新

image-20251024000300430

信息化需求的3个层次

image-20251024000324030

企业信息化方法

image-20251024000613672

image-20251024000648377

image-20251024000703201

image-20251024000712684

image-20251024000726245

image-20251026223511157

image-20251026223529623

image-20251026223625761

image-20251026223700469

image-20251026223722098

数据库与数据仓库:

数据库 数据仓库(特点)
面向应用:按应用组织数据 面向主体:按主题组织数据
零散的:一个应用对应一个数据库 集成的:整个企业对应的一个数据仓库
CRUD:增删改查是常态 相对稳定的(非易失的):查询为主、基本无修改与删除
解决当下应用问题 反映历史变化(时变的):各个阶段信息都有,并可预测未来趋势

image-20251026224322905

image-20251026224341980

image-20251026224357074

image-20251026224417621

image-20251026224436673

image-20251026224452603

image-20251026224515245

image-20251026224554923

image-20251026224614116

image-20251026224632914

image-20251026224702193

数字化转型与智能制造

image-20251026224728698

image-20251026224745133

软件工程

软件过程模型

敏捷开发中,增量与迭代经常一起出现。

螺旋模型强调风险。

喷泉模型的主要特点:不严格区分阶段,面向对象。

基于构件的软件工程

image-20251027230409966

敏捷方法-XP(极限编程)

4大价值观:

  • 沟通【加强面对面沟通】
  • 简单【不过度设计】
  • 反馈【及时反馈】
  • 勇气:接受变更的勇气

12条过程实践规则:

  • 简单设计
  • 测试驱动
  • 代码重构
  • 结对编程
  • 持续集成
  • 现场客户
  • 发行版本小型化
  • 系统隐喻
  • 代码集体所有制
  • 规划策略
  • 规范代码
  • 40小时工作制

image-20251027231345658

敏捷方法:

  • 极限编程(XP):价值观(交流、朴素、反馈、勇气)、近螺旋式的开发方法
  • 水晶方法:提倡“机动性”的方法,拥有对不同类型的项目非常有效的敏捷过程
  • SCRUM:侧重于项目管理
  • 特征驱动开发方法(FDD):认为有效的软件开发需要3要素(人、过程、技术)。定义了6钟关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家
  • 开放式源码:程序开发人员在地域上分布很广(其他方法强调集中办公)
  • ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习
  • 动态系统开发方法(DSDM):倡导以业务为核心

逆向工程

image-20251027233000252

实体关系模型:ER模型,UML模型。

与逆向工程相关的概念有重构、设计恢复、再工程和正向工程

  • 重构/重组:重构是指再【同一抽象级别】上【转换系统描述形式】
  • 设计恢复:设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
  • 逆向工程:逆向工程是分析程序,力图在源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程
  • 正向工程:正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有西永,以改善其整体质量
  • 再工程/重构工程:再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤

净室软件工程

image-20251027234617194

净室工程的核心:正确性验证。

净室工程的缺点:

  • 太理论化,正确性验证的步骤比较困难且耗时
  • 开发小组不进行传统的模块测试,这是不现实的
  • 脱胎于传统软件工程,不可避免带来传统软件工程的一些弊端

需求工程

image-20251027235206294

image-20251028000319853

需求获取的方法

image-20251028230616984

image-20251028231519306

核心:行为模型、数据模型、功能模型

image-20251028231707149

image-20251028232346582

image-20251028232401830

image-20251028233415580

需求阶段:哪些东西该做,哪些东西不该做。

开发阶段:具体的解决方案,具体该如何实现。

UML主要考察:构造块的内容。

image-20251028234357325

搞清楚是静态图还是动态图以及具体的概念。

UML是面向对象分析的工具集合。

image-20251028234647806

严格定义法:有瀑布模型的思想

原型法:有原型法的思想

image-20251028235116945

image-20251028235623521

image-20251029000430686

image-20251029000842419

image-20251029001232385

人机界面设计(黄金三法则)

image-20251029231214756

image-20251029231536438

结构化设计(内聚)

内聚类型 描述
功能内聚 完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚 处理元素相关,而且必须顺序执行
通信内聚 所有处理元素集中在一个数据结构的区域上
过程内聚 处理元素相关,而且必须按特定的次序执行
时间内聚(瞬时内聚) 所包含的任务必须在同一时间间隔内执行
逻辑内聚 完成逻辑上相关的一组任务
偶然内聚(巧合内聚) 完成一组没有关系或松散关系的任务

结构化设计(耦合)

耦合类型 描述
非直接耦合 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合 一组模块借助参数表传递简单数据
标记耦合 一组模块通过参数表传递记录信息(数据结构)
控制耦合 模块之间的传递信息中包含用于控制模块内部逻辑的信息
外部耦合 一组模块都访问同一全局简单变量,而且不是通过参数传递该全局变量的信息
公共耦合 多个模块都访问同一个公共数据环境
内容耦合 一个模块之间访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口

image-20251029233126839

image-20251029233631682

image-20251029233925862

image-20251029234052781

系统分析与设计

软件测试

image-20251029235117699

系统运行与软件维护

软件架构设计

软件架构的概念

架构的本质:

  1. 软件架构设计为软件系统提供了一个结构、行为和属性的高级抽象
  2. 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束

架构的作用:

  1. 软件架构是项目干系人进行交流的手段
  2. 软件架构是可传递和可复用的模型,通过研究架构可以预测软件的质量
  3. 软件加否使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础

软件架构等于软件体系结构。

image-20251116232117302

架构设计就是需求分配,即将满足需求的职责分配到组件上。

基于架构的软件开发

软件架构设计与生命周期

image-20251116232605704

架构描述语言

架构描述语言ADL

image-20251116233059153

”4+1“视图

image-20251116233342752

配置、装配指的是源代码物理结构。

ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计

ABSD方法有三个基础:

  • 功能的分解。在功能的分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
  • 通过选择架构风格来实现质量和业务需求
  • 软件模板的使用

视角与视图:从不同的视角来检查,所以会有不同的视图

用例用来捕获功能需求,特定场景【刺激、环境、响应】用来捕获质量需求

image-20251118233005563

image-20251118233019541

image-20251118233039100

image-20251118233059232

软件架构风格

五大架构风格 子风格
数据流风格 批处理
管道-过滤器
调用/返回风格 主程序/子程序
面向对象
分层架构
独立构件风格 进程通信
事件驱动(隐式调用)
虚拟机风格 解释器
规则系统
以数据为中心 数据库系统
黑板系统
超文本系统

数据流风格

image-20251118231832340

隐蔽性是指对数据有标准的输入和输出,无需了解具体的细节。

数据流风格的软件的典型实例:C语言编译器、网络报文处理。

数据流风格子风格

image-20251118232555607

调用/返回风格

image-20251118232110498

分层架构风格

image-20251118232331356

独立构件风格

image-20251118233952450

独立构件风格特点:

优点 缺点 特点
1.松耦合
良好的重用性/可修改性/可扩展性
1.构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序
2.数据交换问题
3.既然过程的语义必须依赖与被触发事件的上下文约束,关于正确性的推理就存在问题
系统由若干子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一子系统有自己的事件收集和处理机制

image-20251118235023134

事件管理器的典型代表:MQ

虚拟机风格

image-20251118235057194

image-20251118235109860

image-20251118235120942

低代码平台是虚拟机风格。

解释器:适用于需要”自定义规则的场合“。

规则为中心:适用于专家系统。

image-20251118235135412

解释器模式风格的核心:解释器引擎。

image-20251118235152732

以数据为中心

image-20251124232704225

黑板系统的代表实现:语音识别、知识推理。

image-20251124232144845

黑板系统一般都是数据库系统来实现的。

以数据为中心的架构特点:

image-20251125000925069

image-20251124233016777

过程控制风格需要从外界提取信息来指导当前系统的运作。

image-20251124233046817 image-20251124234028503 image-20251125230856712

低代码平台借鉴了MDA的软件架构风格。

软件架构复用

image-20251125231751512

服务本身就是一种构件。

软件架构复用类型有两种:机会复用和系统复用。

机会复用:开发过程中,只要发现有可复用资产,就对其进行复用。

系统复用:开发之前,要进行规划,以决定哪些需要复用。

特定领域软件架构

DSSA架构每次都会考。

image-20251125232644750

image-20251125233146065

DSSA建立过程:

image-20251125234731925

DSSA三层模型:

image-20251125234740637

软件产品线

image-20251125234943060

软件架构评估

软件质量属性

image-20251125235033461

几个比较主要的属性:性能、可用性、安全性、可修改性、易用性。

性能:

image-20251126230920261

可用性:

image-20251126231102726

安全性:

image-20251126231126775

注意:用户信息数据库授权可用代表的是安全性,用户信息数据库可用表示的是可用性。

光有权限控制无法防止黑客攻击。

可修改性:

image-20251126231142523

可修改性包含4个方面:可维护性、可扩展性、结构重组、可移植性。

注意:隐藏信息属于可修改性战术。

易用性:

image-20251126231153744

易用性关注的是从用户的角度来说的。

架构评估

image-20251127000327426

架构评估方法

image-20251204231900023

image-20251204231917548

质量属性场景6的六个构成部分:

  • 刺激源:这是某个人生成该刺激的实体(人、计算机系统或者任何其他刺激器)
  • 刺激:该刺激是当某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况
  • 制品:某个制品被激励。这可能是整个系统(或系统的一部分)
  • 响应:该响应是在激励到达后所采取的行动
  • 响应度量:当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试

基于场景的评估方法

【软件架构分析法(SAAM)】

最初关注可修改性,后扩充到可移植性、可扩充性等。

【架构权衡分析法(ATAM)】

由SAMM发展而来,主要针对:性能、实用性、安全性、可修改性。

【成本效益分析法(CBAM)】

在ATAM基础上建立的,软件的”经济“模型。

软件架构分析法(SAAM)

image-20251204232618290

架构权衡分析法(ATAM)

image-20251204232721657

质量效用树

image-20251204232820608

构件与中间件技术

构件的定义

定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装。

定义2:构件是某系统中有价值、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能。

定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。

image-20251204233441722

构件的复用

image-20251204233555085

image-20251204233606668

image-20251204233619595

image-20251204233633109

构件的分类

从构件的外部形态来看,构件可以分为5类:

  • 独立而成熟的构件。已在实际运行环境多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。例如:数据库管理系统 和操作系统等
  • 有限制的构件。有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象程序设计语言中的基础类库等
  • 适应性构件。适应性构件进行了包装或使用了接口技术,把不兼容、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等
  • 装配的构件。装配的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码就可以进行连接使。目前一些软件商的大多数软件产品都属于这一类
  • 可修改的构件。对原构件修改错误、增加新功能,可以利用重新”包装“或写接口来实现构件的版本替换。这种构件在应用系统开发中使用得比较多

中间件

image-20251204234509036

中间件既是一类构件,又是一类系统软件,中间件可以简化结构、屏蔽差异、利于复用。

采用中间件技术的优点:

  • 面向需求。即设计师集中精力于业务逻辑本身
  • 业务的分隔和包容性。应用开发人员可以按照不同的业务进行功能的划分,体现为不同的接口或交互模式
  • 设计与实现隔离。构件对外发生作用或构件间的交互,都是通过接口进行的,构件使用只需要知道构件的接口,而不必关心其内部时间,这是设计与实现分离的关键
  • 隔离复杂的系统资源:架构很重要的一个功能就是将系统资源与应用构件隔离,这是保证构件可复用甚至”即插即用“的基础,与中间件的意图也是一致的
  • 符合标准的交互模型:中间件则实现了架构的模型,实现了标准的协议
  • 软件复用:中间件提供了构件封装、交互规则、与环境的隔离等机制,这些都为软件复用提供了方便的解决方案
  • 提供对应用构件的管理。基于中间件的软件可以方便地进行管理,因为构件总可以通过标识机制进行划分

image-20251204235432983

构件标准

image-20251204235453756

系统可靠性分析

可靠性相关基本概念

可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。

可用性是系统能够正常运行的时间比例。

软件的可靠性不等于硬件可靠性。

  • 复杂性:软件复杂性比硬件高,大部分失效来自于软件失效
  • 物理退化:硬件失效主要是物理退化所致,软件不存在物理退化
  • 唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样
  • 版本更新周期:硬件较慢,软件较快

可靠性指标

image-20251203230326174

串联系统与并联系统

image-20251203230407142

混合系统

image-20251203230434792

可靠性模型大致可分为如下10类:

  • 种子法模型:预先有意”播种“一些设定的错误”种子“,再看种子发现比例
  • 失效率类模型:如:Jelinski-Moranda的De-eutrophication模型、Schick-Wolverton模型
  • 曲线拟合类模型:用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间
  • 可靠性增长模型:预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程
  • 程序结构分析模型:根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络
  • 输入域分类模型:选取软件输入域中的某些样本”点“运行程序,根据这些样本点在”实际“使用环境中的使用频率的测试运行时的成功/失败率,推断软件的使用可靠性
  • 执行路径分析方法模型:先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性
  • 非齐次泊松过程模型:以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数
  • 马尔可夫过程模型:如:完全改错的线性死亡模型、不完全改错的线性死亡模型
  • 贝叶斯分析模型:利用失效率的实验前分布和当前的测试失效信息,来评估软件的可靠性

可靠性设计

image-20251203232106479 image-20251203232128406

N版本程序设计

image-20251203232227228

恢复块方法

image-20251203232324904

防卫式程序设计

  • 对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去
  • 实现策略:错误检测、破坏估计、错误恢复

双机容错

image-20251203232652022

知识产权与标准化

保护范围与对象

image-20251203233201655

使用许可:

按照被许可使用权的排他性强弱不同,可以将使用许可分为以下三种:

  • 独占使用许可-仅1个授权对象可用,著作权人不可用
  • 排他使用许可-仅1个授权对象和著作权人可用
  • 普通使用许可-多个授权对象和著作权人可用

保护期限

image-20251203233600387

image-20251203233619232

知识产权人确定

image-20251203234010908

image-20251203234027599

image-20251203234047781

侵权判断

image-20251203234113823

标准的分类

  • 国际标准:ISO、IEC等国际标准化组织
  • 国家标准:GB-中国、 ANSI-美国、BS-英国、JIS-日本
  • 区域标准:又称为地区标准,如PASC-太平洋地区标准会议、CEN-欧洲标准委员会、ASAC-亚洲标准咨询委员会、ARSO-非洲地区标准化组织
  • 行业标准:GJB-中国军用标准、MIT-S-美国军用标准、IEEE-美国电气电子工程师协会
  • 地方标准:国家的地方一级行政机构制订的标准
  • 企业标准
  • 项目规范

标准代号的识别

  • 国际、国外标准代号:标准代号+专业类号+顺序号+年代号
  • 我国国家标准代号:强制标准代号为GB、推荐性标准代号为GB/T指导性标准代号为GB/Z、实物标准代号GSB
  • 行业标准代号:由汉语拼音大写字母组成(如电子行业为SJ)
  • 地方标准代号:由DB加上省级行政区划代码的前两位
  • 企业标准代号:由Q假设企业代号组成

项目管理

盈亏平衡分析

image-20251203235337264

进度管理

image-20251203235354142

image-20251203235434567

关键路径法

关键路径法是制订进度计划时使用的一种进度网络分析技术。关键路径法沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早与完成日期、最迟开始与完成日期,不考虑任何资源限制。

总时差【即:松弛时间】:在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。

单号网络图PDM

image-20251204000026282

甘特图

image-20251204000054135

软件质量管理

影响质量的3组因素

image-20251204000129802

软件质量控制与质量保证

  • 质量保证一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。独特工具包括:质量审计和过程分析
  • 质量控制是实时监控项目的具体结构,以判断它们是否符合相关质量标准,制订有效方案,以消除产生质量问题的原因

质量保证的主要目标:

  • 事前预防工作
  • 尽量在刚刚引入缺陷时即将其捕获,而不是让缺陷扩散到下一个阶段
  • 作用于【过程】而 【不是最终产品】
  • 贯穿于【所有的活动之中】,而不是只集中于一点

软件能力成熟度模型集成(CMMI)

image-20251204000705047

DCMM

image-20251204000721900

软件配置管理

产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器可读或人工可读)和各种版本的文档、计算机程序、部件及数据的集合。

关于配置项:

  • 基线配置项(可交付成果):需求文档、设计文档、源代码、可执行代码测试用力、运行软件所需数据等
  • 非基线配置项:各类计划(如项目管理计划,进度管理计划)、各类报告

软件配置管理核心内容包括:版本控制和变更控制。

软件版本控制

image-20251204231434389

软件工具

  • 按软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具
  • 软件维护工具:版本控制工具(VSS、VCS、SCCS、SVN)、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
  • 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择

配置管理工具的常见功能包括版本控制、变更管理、配置状态管理,访问控制和安全控制等。配置管理工具是包含了版本控制工具的。

版本控制工具用来存储、更新、恢复和管理有多个软件的多个版本。

信息安全基础知识

信息安全基础

信息安全包含5个基本要素

名称 说明
机密性 机密性是指网络信息不泄密给非授权的用户,实体或程序,能够防止非 授权者获取信息
完整性 完整性是指网络信息或系统未经授权不能进行更改的特性
可用性 可用性是指合法许可的用户能够及时获取网络信息或服务的特性
可控性 可控性是指可以控制授权范围内的信息流记行为方式
可审查性 可审查性是指对出现的信息安全问题提供调查的依据和手段

信息安全的范围包括设备安全、数据安全、内容安全和行为安全。

可审查性指的是事后的环节。

网络安全漏洞:

安全隐患主要表现如下:

  1. 物理安全性
  2. 软件安全漏洞
  3. 不兼容使用安全漏洞
  4. 选择合适的安全哲理

信息安全措施的目标如下:

  1. 访问控制
  2. 认证
  3. 完整性
  4. 审计
  5. 保密

信息加密技术

image-20251111232913408

image-20251111234513759

加密技术对比

对称加密算法【共享密钥】 非对称加密算法【公开密钥】
【用途】对消息明文进行加密传送 【用途】对密钥加密,做数字签名
DES:替换+移位、56位密钥、64位数据块、速度快、密钥易产生 RSA:2048位(或1024位)密钥
3DES(三重DES):
密钥长度112【两个56位的密钥k1、k2】
加密:k1加密 > k2解密 > k1加密
解密:k1解密 > k2加密 > k1解密
Elgmal:安全性依赖于计算有限域上离散对数这一难题
IDEA:128位密钥、64位明文/密文、PGP ECC:椭圆曲线算法
其它对称加密算法:RC-5、AES Diffie-Hellman

一个密码系统至少由明文、密文、加密算法、解密算法和密钥五个部分组成,而其安全性是由密钥决定的。

密钥管理技术

数字证书的内容

  • 证书的版本信息
  • 证书的序列号,每个证书都有一个唯一的证书序列号
  • 证书所使用的签名算法
  • 证书的发行机构名称,命名规则一般使用X.500格式
  • 证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围是1950-2049
  • 证书所有人的名称,命名规则一般采用X.5000格式
  • 证书所有人的公开密钥
  • 证书发行者对证书的签名

image-20251112231215800

image-20251112231559667

访问控制

访问控制的基本模型

访问控制的目标有两个:

  • 防止非法用户进入系统
  • 阻止合法用户对系统资源的非法使用,即禁止合法用户的越权访问

访问控制的三要素:

  • 主体:可以对其他实体施加动作的主动实体,记为S
  • 客体:是接受其他实体访问的被动实体,记为O
  • 控制策略:是主体对客体操作行为集和约束条件集,记为KS

image-20251112234441808

image-20251112234452551

数字签名技术

数字签名不能解决机密性的问题,解决的是身份的真实性、不可抵赖性和完整性。

image-20251112234353452

image-20251112234825603

image-20251112234420089

信息安全的保障体系

计算机信息系统安全保护等级划分准则(GB17859-1999)

  • 用户自主保护级:适用于普通内联网用户。系统破坏后,对公民、法人和其他组织权益有损害,但不损害国家安全社会秩序和公共利益。
  • 系统审计保护级:适用于通过内联网或国际网进行商务活动,需要保密的非重要单位。系统被破坏后,对公民、法人和其他组织权益有严重损害,或损害社会秩序和公共利益,但不损害国家安全。
  • 安全标记保护级:适用于地方各级国家机关、金融机构、邮电通信、能源与水源供给部门、交通运输、大型工商与信息技术企业、重点工程建设等单位。系统被破坏后,对社会秩序和公共利益造成严重损害,或对国家安全造成损害。
  • 结构化保护级:适用于中央级国家机关、广播电视部门、重要物资储备单位、社会应急服务部门、尖端科技企业集团、国家重点科研机构和国防建设等部门
  • 访问验证保护级:适用于国防关键部门和依法需要对计算机系统实施特殊隔离的单位系统被破坏后,对国家安全造成特别严重损害。

image-20251112234715138

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×