计算机系统基础
知识点分布

计算机组成原理

冯诺依曼计算机组成

CISC与RISC指令集

缓存速度

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

DMA(直接存储访问)工作方式是在主存与外设之间建立起来的数据通路。
操作系统
操作系统是应用软件与硬件之间的接口。

操作系统分类


进程管理
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、进程控制块(PCB)和数据块三个部分组成。
PCB:PCB是进程存在的唯一标志。内容包含进程标识符、状态、位置信息、控制信息、队列指针(链接同一状态的进程)、优先级、线程保护区等。
进程与线程

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

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

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

信号量是全局变量,信号量表示资源数量,信号量初值表示没有任何操作的时候,资源的总数。
信号量是复数的时候,表可以欠别人资源的个数,绝对值是排队进程数。
V操作有进程则唤醒进入就绪队列,注意不是直接执行。

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

死锁与银行家算法


银行家算法:分配资源的原则:
- 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
- 进程可以分期请求资源,但请求的总数不能超过最大需求量
- 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源
系统可以正常执行:安全序列;死锁:不安全的序列。
存储管理

操作系统会将内存中的几个存储位置分配个某个进程来使用。
需要掌握:逻辑地址到物理地址的二进制形式和十六进制形式的转换

根据局部性原理:访问位为1的页面,尽量保留。
淘汰规则:先淘汰访问位为0的,如果有多个访问位为0的,则优先淘汰修改位为0的页,因为不用考虑数据一致性的问题。

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

磁盘管理
考点:1.平均存取时间 2.优化分布 3.移臂调度序列 4.单缓冲区与双缓冲区(流水线技术)
注意:磁头都是一起转动的。
读取数据的时间应包括以下三个部分:
- 找磁道的时间
- 找块(扇区)的时间,即旋转延迟时间
- 传输时间(磁头在对应扇区上移动的时候)
处理记录的时间等于:旋转延迟时间 + 数据传输时间 + 数据处理时间。
移臂调度算法:
- 先来先服务(FCFS)
- 最短寻道时间优先(SSTF)
- 扫面算法(SCAN)
- 循环扫面(CSCAN)算法
最常考的算法:最短寻道时间优先


文件系统

索引可能的含义:目的、指针、地址项、磁盘块号。
直接索引 0-9 号页。
一般索引节点表在内存索引块和数据块在磁盘。

0表示空闲,1表示占用。
系统性能


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

性能设计方案


性能评估方法
| 方法 | 描述 | 特点 |
|---|---|---|
| 时钟频率法 | 以时钟频率高低衡量速度 | 仅考虑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应用程序
嵌入式系统
嵌入式系统
- 嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求
- 从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中
- 一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成
嵌入式系统的组成

操作系统与硬件无关性,硬件无关性可以提高可移植性。
操作系统的易移植性依赖于硬件抽象层和板级支撑技术。
从传统意义上讲,嵌入式系统主要由以下部件组成:
- 嵌入式微处理器(控制器(MCU))
- 存储器(RAM/ROM)
- 内(外)总线逻辑
- 定时/计数器
- 看门口电路:定时器溢出则中断,系统复位处理
- I/O接口(串口、网络、USB、JTAG接口-用来进行CPU调试的常用接口)
- 外部设备(UART、LED等)
- 其他部件
嵌入式软件的开发与传统的软件开发方法存在比较大的差异,主要表现在以下方面:
- 嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具卸载到目标机或固化在目标机存储器上运行。
- 嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性。
- 嵌入式软件开发的结果通常需要固化在目标系统的存储器或处理器内部存储器资源中。
- 嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备。
- 嵌入式软件对实时性的要求更高。
- 嵌入式软件对安全性和可靠性的要求较高。
- 嵌入式软件开发时要充分考虑代码规模。
- 在安全攸关系统种的嵌入式软件,其开发还应满足某些领域对设计和代码审定。
- 模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能。

嵌入式软件设计层面的功耗控制主要可以从以下方面展开:
- 软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素
- 编译优化,采用低功耗优化的编译技术
- 减少系统的持续运行时间,可以从算法角度进行优化
- 用“中断”代替“查询”
- 进行电源的有效管理
嵌入式系统的发展大致经历了五个阶段:
- 第一阶段:单片微型计算机(SCM)阶段,即单片机时代
- 第二阶段:微控制器(MCU)阶段
- 第三阶段:片上系统(SOC)
- 第四阶段:以Internet为基础的嵌入式系统
- 第五阶段:在智能化、云技术推动下的嵌入式系统。
嵌入式硬件

重点关注信号处理器。



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


单工:只能往一个方向传数据;双工:既可以发数据,也可以收数据;半双工:分时分享,同一时刻,只允许1个设备发送,但是允许多个设备接收。
总线通常分为以下几类:
- 芯片内总线。用于集成电路芯片内部各部分的连接元件级总线。用于一块电路板内各元器件的连接
- 系统总线,又称内总线。用于计算机各组成部分(CPU、内存和接口等)的连接
- 外总线,又称通信总线。用于计算机与外设或计算机与计算机之间的连接或通信

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








嵌入式数据库
与传统的数据库相比,嵌入式数据库系统有以下几个主要特点:
- 嵌入式
- 实时性
- 移动性
- 伸缩性
嵌入式数据库分类
按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:
- 基于内存方式(Main Memory Database System,MMDB)
- 基于文件方式(File Database,FDB)
- 基于网络方式(Netware Database ,NDB)

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

计算机网络
计算机网络概述
网络延时 = 处理时延 + 排队延迟 + 发送延迟 + 传播延迟。
如果不考虑网络环境,服务器的延迟的主要因素是队列延迟和磁盘I/O延迟。
网络分类





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

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


路由器和交换机的区别:
- 路由器连接不同子网,交换机连接的是同一个网络
- 交换机不能做路由功能,路由器可以做数据转发,但它还有其他的一些功能
- 路由器一个端口是一个广播域,交换机所有端口是一个广播域
TCP/IP协议族


HTTPS的默认端口:443
TCP端口号的作用是:对应用层进程的寻址。
Internet网络核心采取的交换方式为:分组交换。




网络规划与设计

数据库系统
数据库概述
数据库模式:外模式(视图级)、概念模式(表级别)、内模式(存储模式,文件级)。
外模式到概念模式的映射保证了逻辑独立性,概念模式到内模式保证了物理独立性。
聚簇索引的修改会影响内模式。
分布式数据库:数据在多个物理节点存放。
分布式数据库的特性:
- 数据独立性
- 集中与自治共享结合的控制结构
- 适当增加数据冗余度
- 全局一致性、可串行性和可恢复性
分布式数据库透明性分类
- 分片透明
- 位置透明
- 复制透明
- 逻辑透明
数据库设计阶段

概念结构设计阶段:
需求分析 -> 抽象数据 -> 设计局部ER模型 -> 合并局部模型消除冲突 -> 重构优化消除冗余 -> 逻辑设计
实体完整性:主键,唯一且非空
参照完整性约束:外键,要么为空,要么是其他关系的主键
候选码:是一个属性集合,可以只有一个属性,可以有多个属性。
关系代数
关系代数的结果:并交差 笛卡尔积 自然连接
笛卡尔积和自然连接
关系代数与查询语句
查询性能的考察
水平方向:元组行/记录/实例
垂直:属性列




性能问题:
1.运算对象尽可能先压缩
2.理论上自然连接的性能优于笛卡尔积
规范化理论
重点掌握:属性集合 函数依赖 公理体系 候选键和非候选键 主属性和非主属性的判断






要注意:候选键是单属性,也可以是多属性的集合。
主键说的是,实体完整性,外键说的是参照完整性。

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

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


候选键:(学号,课程号);非主属性:学分、成绩。
如果候选键是单个属性,1NF的前提下,至少能达到第2范式。

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

模式分解

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

例1:没有保持函数依赖。
例2:保持函数依赖,但是有损,因为没有同名属性列。
如何判断是否有损:先求拆分的属性交集,再求属性的差集,判断是狗满足原来任意一个函数依赖。
数据控制
数据控制功能包括:
- 安全性
- 完整性
- 并发控制
- 故障恢复







系统工程与信息基础
系统工程



信息系统生命周期


信息系统建设原则



信息系统的分类




决策支持系统DSS

专家系统


政府信息化与电子政务


企业信息化与电子商务

信息化是指在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大程度利用信息资源以满足全社会的信息需求 ,从而加锁社会各个领域的共同发展以推进信息社会的过程。
信息化的主体是全体社会成员(政府、企业、团体和个人),时域是一个长期过程,空域是经济和社会的一切领域,手段是先进社会生产工具。
企业信息化涉及三类创新

信息化需求的3个层次

企业信息化方法










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











数字化转型与智能制造


软件工程
软件过程模型
敏捷开发中,增量与迭代经常一起出现。
螺旋模型强调风险。
喷泉模型的主要特点:不严格区分阶段,面向对象。
基于构件的软件工程

敏捷方法-XP(极限编程)
4大价值观:
- 沟通【加强面对面沟通】
- 简单【不过度设计】
- 反馈【及时反馈】
- 勇气:接受变更的勇气
12条过程实践规则:
- 简单设计
- 测试驱动
- 代码重构
- 结对编程
- 持续集成
- 现场客户
- 发行版本小型化
- 系统隐喻
- 代码集体所有制
- 规划策略
- 规范代码
- 40小时工作制

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

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

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


需求获取的方法


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




需求阶段:哪些东西该做,哪些东西不该做。
开发阶段:具体的解决方案,具体该如何实现。
UML主要考察:构造块的内容。

搞清楚是静态图还是动态图以及具体的概念。
UML是面向对象分析的工具集合。

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





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


结构化设计(内聚)
| 内聚类型 | 描述 |
|---|---|
| 功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
| 顺序内聚 | 处理元素相关,而且必须顺序执行 |
| 通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
| 过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
| 时间内聚(瞬时内聚) | 所包含的任务必须在同一时间间隔内执行 |
| 逻辑内聚 | 完成逻辑上相关的一组任务 |
| 偶然内聚(巧合内聚) | 完成一组没有关系或松散关系的任务 |
结构化设计(耦合)
| 耦合类型 | 描述 |
|---|---|
| 非直接耦合 | 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的 |
| 数据耦合 | 一组模块借助参数表传递简单数据 |
| 标记耦合 | 一组模块通过参数表传递记录信息(数据结构) |
| 控制耦合 | 模块之间的传递信息中包含用于控制模块内部逻辑的信息 |
| 外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数传递该全局变量的信息 |
| 公共耦合 | 多个模块都访问同一个公共数据环境 |
| 内容耦合 | 一个模块之间访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |




系统分析与设计
软件测试

系统运行与软件维护
软件架构设计
软件架构的概念
架构的本质:
- 软件架构设计为软件系统提供了一个结构、行为和属性的高级抽象
- 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束
架构的作用:
- 软件架构是项目干系人进行交流的手段
- 软件架构是可传递和可复用的模型,通过研究架构可以预测软件的质量
- 软件加否使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础
软件架构等于软件体系结构。

架构设计就是需求分配,即将满足需求的职责分配到组件上。
基于架构的软件开发
软件架构设计与生命周期

架构描述语言
架构描述语言ADL

”4+1“视图

配置、装配指的是源代码物理结构。
ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计
ABSD方法有三个基础:
- 功能的分解。在功能的分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
- 通过选择架构风格来实现质量和业务需求
- 软件模板的使用
视角与视图:从不同的视角来检查,所以会有不同的视图
用例用来捕获功能需求,特定场景【刺激、环境、响应】用来捕获质量需求




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

隐蔽性是指对数据有标准的输入和输出,无需了解具体的细节。
数据流风格的软件的典型实例:C语言编译器、网络报文处理。
数据流风格子风格

调用/返回风格

分层架构风格

独立构件风格

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

事件管理器的典型代表:MQ
虚拟机风格



低代码平台是虚拟机风格。
解释器:适用于需要”自定义规则的场合“。
规则为中心:适用于专家系统。

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

以数据为中心

黑板系统的代表实现:语音识别、知识推理。
黑板系统一般都是数据库系统来实现的。
以数据为中心的架构特点:

过程控制风格需要从外界提取信息来指导当前系统的运作。
低代码平台借鉴了MDA的软件架构风格。
软件架构复用

服务本身就是一种构件。
软件架构复用类型有两种:机会复用和系统复用。
机会复用:开发过程中,只要发现有可复用资产,就对其进行复用。
系统复用:开发之前,要进行规划,以决定哪些需要复用。
特定领域软件架构
DSSA架构每次都会考。


DSSA建立过程:

DSSA三层模型:

软件产品线

软件架构评估
软件质量属性
几个比较主要的属性:性能、可用性、安全性、可修改性、易用性。
性能:
可用性:
安全性:

注意:用户信息数据库授权可用代表的是安全性,用户信息数据库可用表示的是可用性。
光有权限控制无法防止黑客攻击。
可修改性:

可修改性包含4个方面:可维护性、可扩展性、结构重组、可移植性。
注意:隐藏信息属于可修改性战术。
易用性:

易用性关注的是从用户的角度来说的。
架构评估

架构评估方法


质量属性场景6的六个构成部分:
- 刺激源:这是某个人生成该刺激的实体(人、计算机系统或者任何其他刺激器)
- 刺激:该刺激是当某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况
- 制品:某个制品被激励。这可能是整个系统(或系统的一部分)
- 响应:该响应是在激励到达后所采取的行动
- 响应度量:当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试
基于场景的评估方法
【软件架构分析法(SAAM)】
最初关注可修改性,后扩充到可移植性、可扩充性等。
【架构权衡分析法(ATAM)】
由SAMM发展而来,主要针对:性能、实用性、安全性、可修改性。
【成本效益分析法(CBAM)】
在ATAM基础上建立的,软件的”经济“模型。
软件架构分析法(SAAM)

架构权衡分析法(ATAM)

质量效用树

构件与中间件技术
构件的定义
定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装。
定义2:构件是某系统中有价值、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能。
定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。

构件的复用




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

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

构件标准

系统可靠性分析
可靠性相关基本概念
可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
可用性是系统能够正常运行的时间比例。
软件的可靠性不等于硬件可靠性。
- 复杂性:软件复杂性比硬件高,大部分失效来自于软件失效
- 物理退化:硬件失效主要是物理退化所致,软件不存在物理退化
- 唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样
- 版本更新周期:硬件较慢,软件较快
可靠性指标
串联系统与并联系统
混合系统
可靠性模型大致可分为如下10类:
- 种子法模型:预先有意”播种“一些设定的错误”种子“,再看种子发现比例
- 失效率类模型:如:Jelinski-Moranda的De-eutrophication模型、Schick-Wolverton模型
- 曲线拟合类模型:用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间
- 可靠性增长模型:预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程
- 程序结构分析模型:根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络
- 输入域分类模型:选取软件输入域中的某些样本”点“运行程序,根据这些样本点在”实际“使用环境中的使用频率的测试运行时的成功/失败率,推断软件的使用可靠性
- 执行路径分析方法模型:先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性
- 非齐次泊松过程模型:以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数
- 马尔可夫过程模型:如:完全改错的线性死亡模型、不完全改错的线性死亡模型
- 贝叶斯分析模型:利用失效率的实验前分布和当前的测试失效信息,来评估软件的可靠性
可靠性设计
N版本程序设计
恢复块方法
防卫式程序设计
- 对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去
- 实现策略:错误检测、破坏估计、错误恢复
双机容错
知识产权与标准化
保护范围与对象

使用许可:
按照被许可使用权的排他性强弱不同,可以将使用许可分为以下三种:
- 独占使用许可-仅1个授权对象可用,著作权人不可用
- 排他使用许可-仅1个授权对象和著作权人可用
- 普通使用许可-多个授权对象和著作权人可用
保护期限


知识产权人确定



侵权判断

标准的分类
- 国际标准:ISO、IEC等国际标准化组织
- 国家标准:GB-中国、 ANSI-美国、BS-英国、JIS-日本
- 区域标准:又称为地区标准,如PASC-太平洋地区标准会议、CEN-欧洲标准委员会、ASAC-亚洲标准咨询委员会、ARSO-非洲地区标准化组织
- 行业标准:GJB-中国军用标准、MIT-S-美国军用标准、IEEE-美国电气电子工程师协会
- 地方标准:国家的地方一级行政机构制订的标准
- 企业标准
- 项目规范
标准代号的识别
- 国际、国外标准代号:标准代号+专业类号+顺序号+年代号
- 我国国家标准代号:强制标准代号为GB、推荐性标准代号为GB/T指导性标准代号为GB/Z、实物标准代号GSB
- 行业标准代号:由汉语拼音大写字母组成(如电子行业为SJ)
- 地方标准代号:由DB加上省级行政区划代码的前两位
- 企业标准代号:由Q假设企业代号组成
项目管理
盈亏平衡分析

进度管理


关键路径法
关键路径法是制订进度计划时使用的一种进度网络分析技术。关键路径法沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早与完成日期、最迟开始与完成日期,不考虑任何资源限制。
总时差【即:松弛时间】:在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。
单号网络图PDM

甘特图

软件质量管理
影响质量的3组因素

软件质量控制与质量保证
- 质量保证一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。独特工具包括:质量审计和过程分析
- 质量控制是实时监控项目的具体结构,以判断它们是否符合相关质量标准,制订有效方案,以消除产生质量问题的原因
质量保证的主要目标:
- 事前预防工作
- 尽量在刚刚引入缺陷时即将其捕获,而不是让缺陷扩散到下一个阶段
- 作用于【过程】而 【不是最终产品】
- 贯穿于【所有的活动之中】,而不是只集中于一点
软件能力成熟度模型集成(CMMI)

DCMM

软件配置管理
产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器可读或人工可读)和各种版本的文档、计算机程序、部件及数据的集合。
关于配置项:
- 基线配置项(可交付成果):需求文档、设计文档、源代码、可执行代码测试用力、运行软件所需数据等
- 非基线配置项:各类计划(如项目管理计划,进度管理计划)、各类报告
软件配置管理核心内容包括:版本控制和变更控制。
软件版本控制

软件工具
- 按软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具
- 软件维护工具:版本控制工具(VSS、VCS、SCCS、SVN)、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
- 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择
配置管理工具的常见功能包括版本控制、变更管理、配置状态管理,访问控制和安全控制等。配置管理工具是包含了版本控制工具的。
版本控制工具用来存储、更新、恢复和管理有多个软件的多个版本。
信息安全基础知识
信息安全基础
信息安全包含5个基本要素
| 名称 | 说明 |
|---|---|
| 机密性 | 机密性是指网络信息不泄密给非授权的用户,实体或程序,能够防止非 授权者获取信息 |
| 完整性 | 完整性是指网络信息或系统未经授权不能进行更改的特性 |
| 可用性 | 可用性是指合法许可的用户能够及时获取网络信息或服务的特性 |
| 可控性 | 可控性是指可以控制授权范围内的信息流记行为方式 |
| 可审查性 | 可审查性是指对出现的信息安全问题提供调查的依据和手段 |
信息安全的范围包括设备安全、数据安全、内容安全和行为安全。
可审查性指的是事后的环节。
网络安全漏洞:
安全隐患主要表现如下:
- 物理安全性
- 软件安全漏洞
- 不兼容使用安全漏洞
- 选择合适的安全哲理
信息安全措施的目标如下:
- 访问控制
- 认证
- 完整性
- 审计
- 保密
信息加密技术


加密技术对比
| 对称加密算法【共享密钥】 | 非对称加密算法【公开密钥】 |
|---|---|
| 【用途】对消息明文进行加密传送 | 【用途】对密钥加密,做数字签名 |
| 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格式
- 证书所有人的公开密钥
- 证书发行者对证书的签名


访问控制
访问控制的基本模型
访问控制的目标有两个:
- 防止非法用户进入系统
- 阻止合法用户对系统资源的非法使用,即禁止合法用户的越权访问
访问控制的三要素:
- 主体:可以对其他实体施加动作的主动实体,记为S
- 客体:是接受其他实体访问的被动实体,记为O
- 控制策略:是主体对客体操作行为集和约束条件集,记为KS


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



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