软考架构师思维导图
2025-12-26 16:44:16 0 举报
AI智能生成
软件架构师,助你一次过!一次过!
作者其他创作
大纲/内容
计算机组成与体系结构
计算机结构
1星
进程管理
文件管理
索引文件结构
逻辑上连续,物理上分散
直接、一级、二级索引
算编号范围:最大编号-最小编号+1=个数
数据传输控制方式
1星
总线
片内总线
cpu内
系统总线
数据总线
控制总线
地址总线
表示内存空间大小
外部
usb
串行总线
全双工、半双工都有;使用过程中波特率可以改
并行总线
usb
CISC与RISC
1星
流水线
计算公式
执行时间计算
吞吐量
加速比
校验码
CRC
算出被除数(码+位数)和除数(存在则为1)
嵌入式
1星
抢占式算法
程序指令执行
指令寄存器(OR)
程序计数器(PC)
地址寄存器(AR)
指令译码器(ID)
性能指标
cpi、ipc、mips
阿姆达尔
操作系统
进程管理
进程的状态
1星
进行
等待
阻塞
前驱图
4星
直接制约
同一个操作,不同步骤的制约关系
间接制约
多个操作,相同步骤的制约关系
信号量与PV操作
4星
P操作:信号量S-1
V操作:信号量S+1
死锁
1星
进程调度的原因
1、正在执行的进程执行完毕
2、执行中的进程自己调用阻塞原语将自己阻塞起来进入睡眠状态
3、在分时系统中,当一进程用完一个时间片
4、执行中的进程调用了P原语操作,从而因资源不足而阻塞;或者调用V操作原语操作激活了等待资源的进程队列
5、就绪队列中某进程的优先级变得高于当前执行进程的优先级
进程调度方式
剥夺方式
系统中大多数进程调度方式使用的是剥夺方式,也可以说是抢占式
非剥夺方式
银行家算法
①算出剩余资源②最大需求-已用=算出仍需资源
注意:用完的资源要释放,再分配
存储管理
段页式存储
3星
页面置换算法
1星
存储系统
内存
页式
文件切成页式
段式
按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
段页式
优点:空间浪费小、存储共享容易、存储保护容易、能动态连接
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降
分级存储
两级存储:cache-主存,主存-辅存
解决容量、成本、速度之间的矛盾
命中率(cachel存的数据都是cpu要的)
局部性原理
时间局部性
空间局部性
磁盘
存储时间=移臂寻道时间+旋转等待时间+处理时间
寻道算法
先来先服务FCFS
最短寻道时间SSTF
扫描算法(电梯)
单项扫描
文件管理
绝对路径与相对路径
1星
索引文件
3星
直接寻址
一级寻址
二级寻址
位示图
1星
嵌入式操作系统
3星
系统特点
微型化
代码质量高
专业化
实时性强
可裁剪,可配置
与硬件相关,与操作系统无关
调度算法
全局队列调度
系统只维护一个队列
局部队列调度
控制功耗的方法
软硬件协同设计,
编译优化,采用低功耗优化的编译技术
减少系统的持续运行时间,可从算法角度进行优化
用中断代替查询
进行电源的有效管理
特性
面向应用,可以进行检查和移植
强实时性,以适应各种控制设备和系统
硬件适用性,对于不同硬件平台提供有效的支持并实现统一的设备驱动接口
高可靠性,运行时无需用户过多干预
编码体积小,通常会固化在嵌入式系统有限的资源中
低功耗设计
基于硬件的低功耗设计
板级电路低功耗设计
选择低功耗处理器
总线的低功耗设计
基于软件的低功耗设计
编译优化技术
软件与硬件的协同设计
算法优化
实时操作系统--- RTOS
性能指标
任务切换时间
中断处理相关的时间指标
中断延迟时间
终端响应时间
系统响应时间
信号量混洗时间
多任务调度算法
优先级调度算法
抢占式优先级调度算法
时间轮换调度算法
最晚截至期调度算法
最早截至期调度算法
在RTOS中,大多数的调度算法都是抢占式的
常见的RTOS系统
VxWorks
RT-Linux
QNX
pSOS
微内核操作系统
工作状态
用户态
和心态
内核服务
异常和中断,计时器,I/O管理等
单体内核和微内核
数据库
数据库模式
1星
分布式数据库
3星
透明性
分片透明
用户不必关心数据是如何分片的,他们对数据的操作在全局关系上进行,是最高层次的透明性
逻辑透明
局部影像透明,用户不必关心局部DBMS支持那种数据类型,那种操作语言,是最低层次的透明
位置透明
用户不必知道所操作的数据保存在何处
复制透明
用户不必关心数据库在网络中各个节点的复制情况
模式
全局外模式
全局概念模式
是分布式数据库的整体抽象,包含了系统中全部数据的特性和逻辑结构,描述分布式数据库全局数据的逻辑结构
分片模式
分配模式
局部概念层
数据库设计阶段
2星
需求分析
产出文档为:需求说明书,数据流图,数据字典
数据字典:数据字典在分析与设计阶段的作用为:是所有人员工作的依据,统一的标准。它可以确保数据在系统中的完整性和一致性。具体作用包括:按各种要求列表、相互参照、由描述内容检索名称、一致性检验和完整性检验。
概念结构设计
E-R模型,逻辑模型
逻辑结构设计
关系模式,如果学生(学号,姓名))
转换为数据模型→关系规范化→模式优化→设计用户模式
物理设计
模型
概念模型conceptual data model(CDM)
即E-R图(entity relationship,实体关系图),是对用户需求的高度提炼与抽象,通过er图能快速勾勒出系统中的对象以及对象之间的关系。
逻辑模型(logic data model(LDM)
对概念模型进一步的具体化,如多了主键、外键,但仍然和具体的dbms无关
需求阶段
物理模型(physical data model(PDM)
基于逻辑模型,选定具体的数据库后转换为具体的数据库表结构
设计阶段
关系代数
自然连接和笛卡尔积的转换
交∩
并∪
差×
投影
select后面的字段
选择
笛卡尔积RXS、自然连接R⋈S
存在链接操作与选择操作,尽可能早的完成选择操作,这样能降低参与链接操作的数据量,极大提升运算效率
候选键确认
规范化理论
5星
第一范式
如果关系R中的所有属性的值域都是简单域,其元素属性不可再分,是属性项而不是属性组,那么关系R满足第一范式1NF
第二范式
如果一个关系R属于第一范式1NF,且所有的非主属性都完全依赖于主属性,则称之为第二范式2NF(部分依赖)
第三范式
如果一个关系R属于第二范式2NF,且每个非主属性不传递依赖于主属性,这种关系是第三范式3NF(传递依赖)
BC范式
候选码判断,范式判断
模式分解
函数依赖:推出是否依赖都能推出
无损分解:
表格法,把属性都以行写上,关系模式列写上,推出是否所有字段
公式法,交集->差集
并发控制
1星
数据库的安全性
1星
数据库备份与恢复技术
1星
数据库性能优化
1星
计算机网络
OSI/RM模型
七层模型
应用层
PGP,Https
表示层
会话层
传输层
TLS,SET
网络层
防火墙,IPSec
数据链路层
链路加密,PPTP,L2TP
物理层
隔离,屏蔽
TCP/IP
四层模型
应用层
传输层
网络互连层
网络接口层
子主题
传输层协议
TCP
3星
是整个TCP/IP协议族中最重要得协议之一,一般用于传输数据量较少,且对可靠性要求高得场合
UDP
3星
是一种不可靠的,无连接的协议,一般用于传输数据量大,且对可靠性要求不是很高,但是要求速度快的场合
DHCP与DNS
3星
网络协议
应用层协议
FTP
文件传输协议
控制端口21 流端口20
TFTP
简单文件传输协议
HTTP
超文本传输协议
邮件传输协议
smtp-25
pop3-110
DHCP
动态主机配置协议
Telnet
远程登录协议
DNS
域名系统
SNMP
简单网络管理协议
网络规划与设计
逻辑设计与物理设计
4星
需求分析
确定需求:业务需求,用户需求,应用需求,计算机平台需求,网络通信需求
产物:需求规范
通信规范分析
现有的网络体系分析,估计和测量通信量及设备利润率
产物:通信规范
逻辑结构设计
选择符合需求的设计,确定网络逻辑结构
产物:逻辑设计文档
逻辑网络设计图
IP地址方案
安全管理方案
具体的硬件,软件,广域网链接设备和基本的网络服务
招聘和培训网络员工的具体说明
对软硬件费用,服务提供费用,员工和培训的额费用初步估计
物理结构设计
将逻辑设计应用到物理空间,确定网络物理结构
产物:物理结构设计文档
网络物理结构图和布线方案
设备和部件的详细列表i清单
软硬件和安装费用的估算
安装日程表,详细说明服务的时间以及期限
安装后的测试计划
用户的培训计划
实施
实现物理网络设计,安装和维护
产物
工程实施计划
网络设备到货验收
设备安装
系统测试
系统试运行
用户培训
系统转换
网络存储
2星
DAS直连式存储
不能跨平台共享文件
NAS网络附加存储
拥有自己的OS,类似一个专用的文件服务器
SAN存储区域网络
以太网IP SAN和光纤通道FC SAN
IPSAN
基于IP网络实现,可共享和是哟个大容量的存储空间
Ipv6
1星
网络接入
综合布线
1星
工作区子系统
水平子系统
管理子系统
垂直干线子系统
由设备间至电信间的干线电缆和光缆,安装在设备间的建筑物沛县设备以及设备缆线和跳线组成
设备间子系统
建筑群子系统
无线网络
wep<wpa<wpa2
云计算
网络互联设备
中继器
物理层
网桥
数据链路层
网关
路由器
网络层
网络攻击
被动攻击
窃听和流量分析
主动攻击
篡改,伪装,重放,拒绝服务攻击
IDC
入侵检测系统,这个系统会根据操作行为的特定或者是异常行径来判断,是不是一次入侵行为
防火墙
内外网之间的隔离
网闸
一个物理隔离装置,网闸链接的两个网络是不相通的,网闸与内网链接时,会断开与外网的链接,与外网链接时,会断开与内网的链接
UTM
一体化安全设备,它具备的基本功能保活网络防火墙,网络入侵检测/防御和网关防病毒功能。
分层设计
核心层
主要是高速数据交换,实现高速数据传输,出口路由,常用荣誉机制
汇聚层
网络访问策略控制,数据包处理和过滤,策略路由,广播域定义,寻址
接入层
实现用户接入,计费管理,MAC地址认证,MAC地址过滤,手机用户信息,可以使用基线器代替交换机
数学与经济管理
图论应用
最小生成树
最短路径
网络与最大流量
抽取:选最大,然后删掉路径,求和
运筹方法
关键路径法
3星
线性规划
设X,Y
动态规划
费用承包商:选最小,求和
预测与决策
1星
数学建模
2星
子主题
系统配置与性能评价
性能指标
2星
硬件
计算机
主频,运算速度与精度,内存的存储容量,吞吐率,平均故障响应时间
路由器
设备吞吐量,端口吞吐量,全双工线速转发能力,网关类型等
交换机
交换机类型,配置,支持的网络类型,支持协议和标准等
网络
设备级性能指标,网络级性能指标,应用级性能指标,用户级性能指标
软件
操作系统
系统的可靠性,系统的吞吐率,系统的响应时间,系统资源利用率,可移植性
数据库管理系统
数据库大小,负载均衡能力,最大连接数等
WEB服务器
最大并发连接数,响应延迟,吞吐量
阿姆达尔解决方案
1星
性能评价方法
3星
基准程序法:把应用程序中用的最多,最频繁的那部分核心程序作为评估计算机系统性能的标准程序,成为基准测试程序
性能调整
数据库
性能调整主要包括CPU/内存使用状况,优化数据库设计,优化数据库管理以及进程,线程状态,硬盘剩余空间,日志文件大小等
应用程序
性能调整主要包括应用程序的可用性,响应时间,并发用户数以及特定英雄的系统资源占用等
系统安全分析与设计
信息安全基础
基本要素
机密性
不泄露
完整性
未经授权不给更改
可用性
合法用户能及时获得信息服务
可控性
能控制使用信息的人和主体的使用方式
可审查性
信息加解密技术
对称与非对称加密(双向)
对称(密钥)
对消息明文加密传送;加密效率高
带E:DES算法(56位)、3DES算法(112位)、IDEA算法、AES;RC-5
公钥加密算法也称为非对称密钥(对方公钥加密,私钥解密)
对密钥加密,做数字签名;强度高效率低
RSA(2048位),ECC,Diffie-Hellman
数字信封:对称和非对称配合使用,解决大数据加密问题:
信息加密使用对称;秘钥使用非对称加解密
访问控制
访问控制矩阵
作用:防止非法用户访问系统,合法用户越权访问
数字签名技术
产生信息摘要(固定长度)
作用:防篡改,完整性
摘要算法:MD5(128位),SHA-1(160位)
单向散列函数(生成特定长度hash值,单向不可逆)
数字签名
原理:数字签名首先需要生成消息摘要,然后发送方用自己的私钥对报文摘要进行加密
接收方用发送方的公钥验证真伪。生成消息摘要的目的是 (防止篡改),对摘要进行加密的
目的是 (防止抵赖)
接收方用发送方的公钥验证真伪。生成消息摘要的目的是 (防止篡改),对摘要进行加密的
目的是 (防止抵赖)
作用:数字签名主要是用来证明信息发送者身份信息的,并且可以用来验证被发送消息是否被篡改过。没有解决机密性问题
技术基础
单向散列函数+公钥密码体制
流程
发送方:信息摘要+发送方私钥签名,①产生加密后的信息摘要;②明文③公钥
接收方:①用发送方的公钥解密,②明文自己做hash信息摘要;①和②比对
发送方私钥加密,公钥解密
子主题
案例
机密性
内容对称加密
秘钥采用非对称加密
完整性
产生信息摘要
身份真实性
明文hash和加密后的摘要解密,信息摘要对比
密钥管理技术
数字证书
子主题
信息安全的保障体系
5个等级
用户自主保护级
系统审计保护级
安全标记保护级
结构化保护级
访问验证保护级
系统审计保护级
安全标记保护级
结构化保护级
访问验证保护级
攻击类型
主动攻击
破坏可用性
常用攻击
篡改、伪装、重放、拒绝
syn攻击,arp攻击
被动攻击
目的:获取信息
泄密
常用攻击
网络窃听、流量分析、信息截取
知识产权与标准化
保护范围与对象
保护期限
不受时间限制:署名权、修改权、保护作品完整权
作者终生及其死亡后的50年(第50年的12月31日):发表权、使用权和获得报酬权。
知识产权人确定
行业标准简称
企业信息化战略与实施
信息与信息化的概念
1星
信息系统生命周期
产生阶段
开发阶段
系统规划、系统分析、系统设计、系统实施、系统运行和维护
运行阶段
消亡阶段
信息系统战略规划
3星
关键成功因素法(CSF):通过分析找出使得企业成功的关键因素,然后再围绕这些关键因素来确定系统的需求,并进行规划。在现行系统中,总存在着多个变量影响系统目标的实现,其中若千个因素是关键的和主要的(即关键成功因素)。通过对关键成功因素的识别,找出实现目标所需的关键信息集合,从而确定系统开发的优先次序。关键成功因素来自于组织的目标,通过组织的目标分解和关键成功因素识别、性能指标识别,一直到产生数据字典。
政府信息化与电子政务
1星
G2G
G2C
G2B
企业信息化与电子商务
3星
企业门户
2星
企业应用集成
3星
应用集成
业务系统集成
信息化需求的三个层次
系统可靠性分析与设计
可靠性相关基本概念
MTTF
无故障时间
MTTR
平均修复时间
MTBF
平均故障间隔时间
系统可用性
MTTF/(MTTR+MTTF)X100%
系统可靠性分析
4星
成熟性
系统避免因错误的发生而导致失效的能力;
容错性
系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力;
易恢复性
在系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力;
可靠性的依从性
系统依附于与可靠性相关的标准、约定或规定的能力。
软件可靠性设计
软件冗余
信息冗余
纠错码、检错码
时间冗余
指令复执
结构冗余
并联系统可靠度
R=1- (1-R1)(1-R2) ... (1-RN)
可靠度是系统在规定时间内无故障的概率
项目管理
项目进度管理
活动定义、活动排序、活动的资源估算、活动历时估算、制定计划和进度控制
进度管理
甘特图gantt
PERT图
关键路径求解:时间最长的求和
总浮动时间:关键-非关键;或者最大-最小
项目时间管理
工作分解结构WBS(工具)
活动定义、活动排序、活动的资源估算、活动历时估算、制定计划和进度控制
软件配置管理
版本管理:草稿、修改、正式
软件质量管理
质量规划
质量保证
阶段性评审
质量控制
阶段性评审
成本管理
盈亏平衡分析
【盈亏平衡时】销售额=固定成本+可变成本+税费+0
风险管理
步骤
风险管理计划编制
风险识别
风险定性分析
风险定量分析
风险应对计划编制
风险监控
分类
项目风险
技术风险
商业风险
市场风险
策略风险
销售风险
管理风险
预算风险
软件系统工具
软件开发工具:需求分析工具、设计工具、编码与排错工具。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
项目范围
项目范围定义是生产项目计划的基础
产品范围
是指信息系统产品或者服务所应包含的功能
软件架构
软件架构的概念
软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
软件架构贯穿于软件的整个生命周期,但在不同的阶段对软件架构的关注力度并不相同。其中需求分析阶段主要关注问题域;设计阶段主要将需求转换为软件架构模型;软件实现阶段主要关注将架构设计转换为实际的代码;软件部署阶段主要通过组装软件组件提高系统的实现效率。其中设计与实现阶段在软件架构上的工作最多,也最重要因此关注力度最大。
软件架构是项目干系人进行交流的手段;
作用
软件架构是项目干系人进行交流的手段;
软件架构是可传递和可复用的模型,通过研究软件架构可预测软件的质量;
软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础
架构描述语言ADL
构件
独立可交付的功能单元
对象-模块(不带单独资源的原子构件)-构件(功能)-服务(粒度从小到大)
模块是一组类,比如过程和函数C
对象的特性
一个实例单元,具有唯一的标 志
可能具有状态,此状态外部可见
封装了自己的状态和行为
特性
独立部署单元
作为第三方的组装单元
没有外部可见状态
软件架构复用
软件复用是指在软件开发过程中重复使用相同或相似软件元素的过程,是在软件开发中避免重复劳动的解决方案它使得应用系统的开发不再采用一切从零开始的模式,而是以已有的工作模式为基础,充分利用过去应用系统开发中积累的知识和经验,从而将开发的重点集中于应用的特有构成成分。
过程
构造/获取可复用的软件资产
管理可复用资产
使用可复用资产
软件架构复用的类型
包括机会复用和系统复用,机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。
构件接口
接口是一个已命名的一组操作的集合。构件的客户((通常是其他构件)通过这些访问点来使用构件提供的服务。通常来说,构件在不同的访问点有多个不同的接口。每一个访问点会提供不同的服务,以迎合不同的客户需求。强调构件接口规范的合约性非常重要,因为构件和它的客户是在互不知情的情况下分别独立开发的,是合约提供了保证两者成功交互的公共中间层。
连接件
架构配置
根本目的
解决好软件的复用、质量和维护问题
生命周期
需求分析阶段
设计阶段
实现阶段
组装阶段
构件组装阶段失配问题
由构件引起的失配
包括由于系统对构件基础设施,构件控制模型和构件数据模型的假设存在冲突一起的失配
由连接子引起的失配
包括由于系统构件对构件交互协议,连接子数据模型的假设存在冲突引起的失配
由于系统成分对全局体系结构的假设存在冲突引起的失配
检测失配问题,并再次基础上通过适当的手段消除检测出的问题
部署阶段
后开发阶段
演化
架构4+1视图
逻辑视图、进程视图、开发视图、物理视图:场景
软件架构风格
概念
描述某一特定领域中的系统组织方式和惯用模式,架构定义一个词汇表和一组约束。组织方式描述了构件和构件间的组织方式,惯用模式反应众多系统的结构和语义。。强调架构【设计】的复用
风格类型
数据流风格
批处理、管道过滤器
早期编译器、网络报文处理
调用返回风格
主程序子程序、面向对象、层次结构
MVC->MVP->MVVM
BS-CS-RIA
独立构件风格
进程通信
点对点、异步或同步、远程过程rpc
连接件是消息传递
事件驱动(隐式调用)
编译器:语法高亮、语法错误
缺点:
被动
优点:
软件复用
虚拟机风格(JVM)
解释器
自定义规则流程\灵活组合
基于规则的系统(包括规则集、规则解释器、规则数据迭代器及工作内存)
人工智能、专家系统,DSS决策支持
仓库风格
以数据为中心:数据库系统、黑板系统、超文本系统
图像语音识别、编译器
闭环风格(过程控制),有反馈
巡航系统、温控
(C2)架构风格可以概括为通过连接件绑定在一起按照一组规则运作的并行构件。
面向服务的架构风格
SOA
案例
子主题
MDA模型驱动架构
计算无关模型
平台无关模型
平台相关模型
特定领域软件架构DSSA
3星
定义:以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,支持一个特定领域中多个应用的生成。
三阶段活动
领域分析
领域模型(领域需求)
领域设计
获得特定领域软件架构(DSSA)
领域实现
实现软件基础架构
四种角色
领域专家、领域分析人员;领域设计人员;领域实现人员
三层次模型
建立DSSA 5个过程
定义领域范围、定义领域特定元素、定义特定领域的设计和实现的约束、定义领域模型和架构、产生收集可复用的产品单元
基于架构软件设计ABSD
Architecture-Based Software Design
Architecture-Based Software Design
4星
架构
架构驱动
强调由【业务、质量和功能需求】的组合驱动架构设计;
强调用【视角与视图】描述软件架构,用【用例】描述功能需求,采用【质量场景】描述质量需求。
强调由【业务、质量和功能需求】的组合驱动架构设计;
强调用【视角与视图】描述软件架构,用【用例】描述功能需求,采用【质量场景】描述质量需求。
三个基础
功能分解
使用已有基于模块的内聚和耦合技术
选择架构风格选择来实现质量和业务需求
软件模板的使用
自顶向下,递归迭代
开发过程
架构需求
需求获取、标识构件(生产类图、对类进行分组,打包成构件)、需求评审
对象图、类图、包图、构件图
对象-模块-构件(功能)-服务(粒度从小到大)
模块是一组类,比如过程和函数
架构设计
提出架构模型、映射构建,分析构件相互作用,产生架构,设计评审
架构文档化
把架构设计的成果进行分析与整理并进行文档化
产出物
架构规格说明
测试架构的质量说明书
注意事项
从使用者角度编写
分发出系统相关开发人员
保证开发者手上的文档是最新的
架构复审
外部人员(用户代表、领域专家)
复审并标识其中的风险、缺陷和错误
ATAM架构权衡分析法
架构实现
基于构件库;分析与设计、构件实现、构件组装,系统测试
架构演化
需求变化归类、架构演化计划、构件变动、更新构件的相互作用、构件组装与测试、技术评审等活动。
软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程,在建立软件架构的初期,一般需要选择一个合适的架构风格,并将架构分析阶段已标识的构件映射到架构中,并分析这些构件之间的关系,一旦得到了详细的软件架构设计,需要邀请独立于系统开发的外部人员对系统进行评审。一般来说,软件架构设计活动将已标识构件集成到软件架构中,设计这些构件,但不予以实现。
软件质量属性
5星
性能
策略
资源需求
提高计算效率减少开销控制频率
资源管理
引入并发多副本增加资源
资源仲裁
资源调度、优先级
属性分类
开发期质量属性
可修改性
易用性
可测试性
可维护性
运行期质量属性
性能
安全性
互操作性
可用性
可靠性
鲁棒性
架构质量属性
性能
可靠性
MTTF(平均无故障时间),MTBF(平均故障间隔时间),MTTR(平均故障修复时间)
心跳、ping、冗余、选举
可用性
系统正常运行时间比例
战术
错误检测
错误恢复
错误预防
安全性
分类
机密性
完整性
不可否认性
可控性
战术
检测攻击
入侵检测
抵抗攻击
身份认证用户授权数据加密减少暴露限制访问
从攻击中恢复
审计追踪
可修改性
战术
局部化修改
防止连锁反应
隐藏信息
推迟绑定时间
分类
可维护性、可扩展性、结构重组、可移植性
功能性
软件架构评估
敏感点
侧重对结果的影响
敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。
权衡点
安全、性能间权衡
影响多个质量属性的特性,是多个质量属性的敏感点。
风险点
侧重前期隐患
非风险点
评估方法
1.调查问卷、检查表
2.度量,中期精确估量
指定定量指标来评估
3.基于场景
质量属性场景:6要素
刺激源、刺激、制品、环境、响应、响应度量
可修改性属性描述实例
场景是从风险承担者对于系统交互的描述
设计场景,反应质量属性是否达到要求
方法论
基于场景的架构分析方法SAAM
场景是从风险承担着角度与系统的交互的简短描述
输入:问题描述、需求说明、体系结构描述
关注可修改性->可移植性可扩充性
5个步骤
场景开发
体系结构描述
单个场景描述
场景交互评估
总体评估
ATAM架构权衡分析法:权衡多个质量属性
针对性能、可用性、安全性、可修改性
四个活动领域
1场景和需求收集
2体系架构视图和场景实现
3属性模型构造和分析
构造效用树
4折中
工具
质量效用树
树根、质量属性、属性分类、质量属性场景
输入问题
问题描述
需求声明
体系结构描述
步骤
头脑风暴三种场景
用例、增长、探索性
成本效益分析CBAM
SAEM
从外部和内部属性衡量
SAABNet
定性评估
SACMM
修改的度量
SASAM
静态评估
ALRRA
可靠性评估
AHP
定性问题定量分析
COSMIC+UML
可维护性评估
软件产品线
技术特点
过程驱动
特定领域
技术支持
架构为中心
内容
核心资源
产品资源
中间件技术
4星
中间件简化结构、屏蔽差异、利于复用
面向需求
中间件类型
交互支持、公共服务
中间件的基本功能包括:为客户端和服务器之间提供连接和通信;提供交易管理机制保证交易的一致性;提供应用的负载均衡和高可用性等。
物联网
应用层
网络层
感知层
Web架构设计
5星
云原生架构
设计原则
服务化原则
弹性原则
可观测原则
韧性原则
自动化原则
零信任原则
架构持续演进原则
设计约束
微服务个体约束,修改一个不影响另一个
微服务之间的横向关系,通过注册中心满足可发现性
微服务与数据层之间的纵向约束,数据是微服务的资产,访问要通过微服务
全局视角下的微服务分布式约束,高效运维系统
架构模式
服务化架构模式
微服务,维护压力大增
Mesh化架构模式
把中间件框架(rpc缓存异步消息)从业务进程中分离,由umesh进程完成
serverless
适合事件驱动的数据计算任务
存储计算分离模式
分布式事务模式
可观测架构
事件驱动架构
反模式
庞大的单体应用
单体应用硬拆为微服务
缺乏自动化能力的微服务
云原生
云原生架构原则
服务化原则
弹性原则
可观测性原则
自动化原则
K8S
微服务
微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。微服务体系结构有许多重要的好处。首先,它解决了业务复杂性的问题。它将原来庞大的单个应用程序分解为一组服务。尽管功能的总数保持不变,但应用程序已被分解为可管理的服务。单个服务的开发速度要快得多,而且更容易理解和维护。其次,这种架构允许每个服务由一个团队独立开发。开发人员可以自由选择任何适当的技术。第三,微服务架构模式允许各个服务独立部署。开发人员永远不需要协调对其服务的本地更改的部署。这些类型的更改可以在测试后立即部署。最后,微服务体系结构允许每个服务独立扩展。
子主题
软件工程
软件生命周期
1.可行性研究与计划
产出物:可行性研究报告和软件开发计划
软件开发方与需求方共同讨论,确定软件的开发目标及其可行性,需要进行问题定义、可行性分析,制定项目开发计划
2.需求分析
准确地确定软件系统必须做什么,确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型建立系统的功能模型,从而完成需求分析。
分析方法
结构化分析
自顶向下,逐步分解,面向数据
三大模型:数据建模(ER图),功能建模(数据流图),行为建模(状态转换图)
面向对象分析OOA,两大模型
产出物:软件需求规格说明书。需求基线(已经通过评审的规格说明书)
架构设计
需求分配,将需求的职责分配到组件上
大型软件,软件复用
架构评估
3.设计阶段
概要设计
规划子系统,设计软件的结构,明确软件由哪些模块组成,将软件需求转化为数据结构和软件系统结构。
产出物:概要设计说明书:确定系统架构,各子系统间的关系,接口规约,数据库模型,编码规范等。数据库设计说明书
结构化设计
流程表示工具
模块结构图、层次图、IPO图
面向对象设计OOD
工具
UML
详细设计
设计子系统内部具体实现,通过对结构细化,如类设计,得到软件详细数据结构和算法。
产出物:详细设计说明书
结构化设计
工具
程序流程图、伪代码、盒图(N-S图)
面向对象设计
工具
UML
基本原理
抽象化,
自顶而下,逐步求精;
一信息隐蔽一
模块独立(高内聚,低耦合)
自顶而下,逐步求精;
一信息隐蔽一
模块独立(高内聚,低耦合)
通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性
4.实现阶段
编码和单元测试:把每个模块的控制结构转换成计算机可接受的程序代码
产出物:开发进度月报、项目开发总结报告
子主题
5.测试阶段
集成测试
确认测试
系统测试
产出物:软件测试计划、软件测试用例和软件测试报告
6.维护阶段
修复bug、适应新环境、业务变化扩充功能等原因修改软件
产出物:软件维护修改建议、软件维护记录
①需求工程
需求分类
从上往下抽象越来越低,越来越具体
业务需求
用户需求
系统需求
功能需求
描述最详细
非功能需求
设计约束
1需求获取
3星
用户访谈
耗时,记录困难
问卷调查
采样
数理统计
情节串联版
联合需求计划
会议
2需求分析(案例)
任务
SA结构化分析(数据字典):三大模型
数据建模ER
E-R图
实体
联系
功能建模DFD
数据流图
实体
长方形
加工
O
数据流
->
平衡原则
父图和子图之间的平衡
子图内平衡
异常
黑洞
有输入没输出
奇迹
有输出没输入
灰洞
输入不足以产生输出
数据存储
=
行为建模STD
状态转换图
状态
事件
面向对象分析OOA
UML建模
UML图
UML2.0
两个模型:用例模型(用例图);分析模型(静态图(类图、对象图),动态图(活动图、序列图等))
子主题
步骤
1.确定对象和类
2.确定结构
3.确定主题
4.确定属性
5.确定方法
分析模型
分析模型
顶层架构图、用例与用例图、领域概念模型构成
动态图(行为图)
用例图
用例是功能单元、描述一组用例、参与者之间的关系
关系
依赖
包含 include:两个或两个以上的用例提取公共行为时(必须)
扩展 extend
一个用例明显的混合了两种或两种以上的场景(非必须)
泛化(继承)
父子
会员注册-电话注册、邮件注册
用例规约
用例名称:用例说明:事件流:非功能需求:前置条件:后置条件:扩展点:优先级:
顺序图
强调对象之间消息发送的顺序
通信图
强调对象之间消息收发关系
定时图
描述状态变化维持的时间
序列图
强调对象之间顺序关系
协作图
交互概览图
状态图
强调状态
活动图
强调控制流程
泳道
静态图(结构图)
类图、从开发视角对系统软件进行描述
类之间关系
泛化
特殊/一般关系
子类继承父类
依赖
一个事物发生变化影响另一个事物
关联关系
聚合
整体与部分生命周期不同
组合
整体与部分生命周期相同
实现
类实现接口
对象复用COM
两种组装方式
聚集
内部传给外部
包含
外部转发给内部
对象图
构件图
包图
部署图
制品图
组合结构图
活动图和流程图的区别
活动图描述的诗对象活动的顺序关系所遵循的规则,它着重表现为系统的行为,而非处理过程,而流程图着重描述处理过程
流程图一般都限于顺序进程,而活动图则可以支持并发进程
活动图是面向对象的,而流程图是面向过程的
3需求定义
严格定义法预先定义法(结构化定义、需求明确)
所有需求都能够被预先定义
开发人员与用户之间能够准确而清晰地交流
采用图形、文字可以充分体现最终系统
原型法(需求不明确)
并非所有的需求都能在开发前被准确的说明
项目参加者之间通常都存在交流上的困难
需要实际的,可供用户参与的系统模型
有合适的系统开发环境
反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
4需求验证
方法
需求测试、需求评审
经过评审的SRS成为需求基线,指导后续开发
需求评审
要求用户参与,签字
5需求管理
需求管理针对的是需求基线,
1变更控制
项目经理、客户方、开发团队、监理方
变更控制委员会 (CCB)
变更控制委员会 (CCB)
需求变更流程一般包括:问题分析与变更描述、变更分析与成本计算、ccb审批、变更实现等步骤。
自动化变更控制工具
记录每一个状态变更日期和变更者
2版本控制
3需求跟踪
建立与维护“需求 - 设计 编程 测试”之间的一致性,,正向方向跟踪
把需求落实到后续的各个步骤中
4需求状态跟踪
双向跟踪,需求跟踪矩阵
UML4+1视图
4星
用例视图(需求分析模型)
需求分析模型
最终用户
逻辑视图
类与视图
系统分析,设计人员
进程视图
线程、进程、并发
系统集成人员
实现视图
物理代码文件和组件
程序员
又称为 模块视图或者 开发视图
部署视图
软件到硬件的映射
系统和网络工程师
又称为 物理视图
②系统设计
界面设计
2星
黄金三法则
置于用户控制之下
减少用户的记忆负担
保持界面的一致性
模块设计
高内聚低耦合
内聚分类
偶然、逻辑、时间、过程、通信、顺序、功能内聚
耦合分类
无直接、数据、标记、控制、外部、公共、内容
飞(非)鼠(数据)标(标记)控(控制)外公累(内)
飞(非)鼠(数据)标(标记)控(控制)外公累(内)
结构化设计原则
保持模块大小适中
模块独立设计原则高内聚低耦合
多扇入少扇出
深度和宽度不宜过深
单入口,单出口;
模块的作用域应该在模块之内
;功能应该是可预测的。
模块的作用域应该在模块之内
;功能应该是可预测的。
结构化设计
2星
结构设计
定义软件系统各主要部件之间的关系
接口设计
软件内部,软件和操作系统间以及软件和人之间如何通信
数据设计
将模型转换成数据结构的定义,号的数据设计将改善程序结构和模块划分,降低过程复杂性
过程设计
系统结构部件转换成软件的过程描述
处理流程设计
业务流程分析和建模
结构化流程设计工具
程序流程图
顺序、选择、循环结构
HIPO
输入、输出、加工
盒图(N-S图)
不适合复杂的程序设计
问题分析图PAD
结构化程序的设计工具(跟原型化相反),引导设计人员结构化设计
子主题
业务流程重组BPR
根本性改造
业务流程管理BPM
子主题
面向对象开发
面向对象分析
两个模型:用例模型(用例图);分析模型(静态图(类图、对象图),动态图(活动图、序列图等))
子主题
面向对象设计
分析模型到设计模型
分析模型与设计模型
分析模型:主要由顶层架构图、用例与用例图、领域概念模型构成
设计模型:则包含以【包图】表示的软件体系结构图、以【交互图】表示的【用例实现图】、完整精确的类图、针对复杂对象的【状态图】和用以描述流程化处理过程的【活动图】等。
设计模型:则包含以【包图】表示的软件体系结构图、以【交互图】表示的【用例实现图】、完整精确的类图、针对复杂对象的【状态图】和用以描述流程化处理过程的【活动图】等。
5星
类的分类
实体类
实体类映射需求中的每个实体,保存需要存储在永久存储体中的信息
数据存储,数据表
边界类(接口类)
边界类用于封装在用例内、外流动的信息或数据流。
外界打交道,接口类型
控制类
控制类是用于控制用例工作的类,用于对一个或几个用例所特有的控制行为进行建模
业务逻辑的处理
设计模式-削弱,删掉了
创建型模式
单例模式Singleton
抽象工厂模式Abstract factory
建造者模式
工厂模式
原型模式
构造型模式
结构型模式BUILD模式
结构型模式BUILD模式
适配器模式
桥接模式
将复杂的组件分为功能抽象和内部实现两个
独立但又相关的继承层次结构
独立但又相关的继承层次结构
装饰模式
组合模式
外观模式
享元模式
代理模式
行为型模式
模板方法
命令模式
迭代器模式
观察者模式
中介模式
备忘录模式Memento
解释器模式
状态模式
策略模式
职责链模式
访问者模式
耦合
- 尽量使用数据耦合、少用控制耦合和特征耦合、限制公共环境耦合的范围、完全不用内容耦合
面向对象设计原则
单一职责
设计目的单一的类
开放封闭原则
对扩展开放,对修改封闭
里李氏替换原则
子类可以替换父类
依赖倒置原则
依赖于抽象而不是具体实现;针对接口编程而不是具体实现编程
接口隔离原则
使用多个专用接口比单一总接口好
组合重用
尽量使用组合而不是继承达到重用目的
迪米特原则最少知识法则
一个对象对其他对象有尽可能少的了解
内容
概要设计
①概要设计:将软件需求转化为数据结构和软件系统结构。
详细设计
②详细设计:过程设计,通过对结构细化,得到软件详细数据结构和算法。
③软件开发方法
软件开发方法
3星
结构化法
自顶向下,逐步求精,模块化设计。严格分阶段,阶段产出标准化应变能力差
面向对象方法
自底向上,阶段界限不明,更好应变,更好复用,符合人们的思维习惯
面向服务方法SOA
粗粒度,松耦合,标准化和构件化
形式化方法
基于数学的方式描述、开发和验证系统。
形式化方法(净室工程)
通过自然语言、图形或表格描述软件系统的行为和特性,然后基于这些描述进行设计和开发
软件开发模型
4星
1原型模型
先构建一个建议系统
应用场景
需求不明确,在需求分析阶段
类型
快速原型
演化原型
2瀑布模型
特点:
阶段明晰
各阶段有产出物
自顶向下,逐步分解求精
缺点
修正成本高
难以适应变化
成果太久难以预判能否满足需求
大量精力生成客户不相关文档
应用场景:需求明确的开发、二次开发
结构化方法
3螺旋模型
4个阶段
需求定义
决定目标,方案和限制
风险分析
评价方案,识别风险,消除风险
实施工程
开发,验证下一产品
客户评估
特点:原型+瀑布+迭代,引入风险分析
应用场景:大型,复杂,高风险项目
子主题
4瀑布V模型
考依据(前一个)还是测试阶段(膝盖-系概)
开发与测试结合
增量模型
每次增量针对不同功能,多次增量交付多个软件版本;多次迭代只交付一个
5基于构件的开发模型
(CBSD)快速开发模型
(CBSD)快速开发模型
装配可重用软件构建方法来构建应用程序,即插即用
阶段
需求分析和定义
软件架构设计
构件库的建立
应用软件构建
测试和发布
构件组装阶段失配问题
由构件引起的失配
包括由于系统对构件基础设施,构件控制模型和构件数据模型的假设存在冲突一起的失配
由连接子引起的失配
包括由于系统构件对构件交互协议,连接子数据模型的假设存在冲突引起的失配
由于系统成分对全局体系结构的假设存在冲突引起的失配
检测失配问题,并再次基础上通过适当的手段消除检测出的问题
基于构件的模型
逻辑构件模型
用功能包描述系统的抽象设计,用接口描述每个服务集合,以及功能之间如何交互以满足用户需求
物理构件模型
用技术设施产品、硬件分布和拓扑结构,以及用于绑定的网络和通信协议表述系统的物理设计
构件标准
EJB(企业java bean)
会话bean:实现业务逻辑
实体bean:实现OR映射
消息bean:处理并发异常访问
微软COM+
Corba
解决远程通讯,分布式对象软总线
特性
独立部署单元
作为第三方组装单元
没有外部的可见状态
复用流程
检索与提取构件
理解与评价构件
修改构件
组装构建技术
功能、数据、对象
分类
关键字
树形
刻面
多个不同维度,领域
超文本
人类联想思维
CBSE基于构件的软件工程
组装方式
顺序、层次、叠加组装
系统构件组装层次
定制(定制)、集成(集成)、扩展(扩展)。这三个层次对应于构件组装过程中的不同任务
迭代思想
7统一过程RUP(重量级)
3特点,4阶段,9工作流
3特点,4阶段,9工作流
一个面向对象的基于web的程序开发方法论
二维模型图
横轴,4个阶段,,每次通过这四个阶段就会产生一版本软件
初始
业务模型、需求
细化
分析设计,完成架构设计
构建
完成系统构建,测试和部署
交付
确保软件对最终用户是可用的
纵轴,9个核心工作流(6+2+1)
业务建模
需求
分析设计
实施
测试
部署
配置与变更管理
项目管理
环境
三个核心特点
用例驱动,创建好用例之后,各个阶段都通过用例来推动
以架构为中心
4+1
迭代和增量
8敏捷开发(轻量级)
面向对象而不是面向过程;以原型开发思想为基础,采用迭代式增量开发
将实现和测试视为软件过程中心活动
敏捷宣言
个体和互动 胜于 流程和工具:以人为本
工作的软件 胜于 完整文档::以价值为导向
客户合作 胜于 合同谈判:合作共赢
应对变更 胜于 遵循计划:拥抱计划
特点
小步快跑:1轮冲刺,1-4周
适合于小型项目(实际工作中,可将大项目拆成小项目
方法
极限编程(XP)
价值观[交流、朴素、反馈、勇气]、近螺旋式的开发方法,费用控制严格,测试先行
水晶方法(Crystal)
以人为中心,提倡“机动性”的方法,拥有对不同类型项目非常有效的敏捷过程
SCRUM
迭代增量化过程,侧重于项目管理,,30天一个版本
特性驱动开发(FDD)
编程开发人员分成首席程序员和"类"程序员,人、过程、技术
动态系统开发(DSDM)
强调以业务为核心,快速而有效地进行系统开发
开放源码
子主题
9逆向工程
层级
实现级
包括程序的抽象语法树,符号表,过程的设计表示(代码级)
结构级
包括反映【程序分量】之间相互依赖关系的信息,例如调用图,结构图,程序和数据结构等
功能级
包括反应【程序段功能】及【程序段】之间关系的信息,例如数据和控制流模型
领域级
包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如(ER实体关系模型)
领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高。
设计恢复
借助工具,从已有程序中抽象出有关数据设计、总体结构设计和流程设计信息
再工程(重构工程):系统的重新开发过程,包括逆向工程、新需求、正向工程三步骤
逆向工程
分析程序,力图在比源代码更高抽象层建立程序的表示过程,逆向工程是设计的恢复过程
考虑新需求
正向工程
重构
净室软件工程
应用数学和统计学,强调将正确性验证,而不是测试;使用统计的测试来获取认证
④软件测试
软件测试方法
软件测试阶段
单元
依据详细设计,模块功能、性能、接口
集成
依据概要设计,模块间的接口
驱动模块、桩模块
集成测试可以分为一次性组装和增量式组装,增量式组装测试效果更好。集成测试计划一般在概要设计阶段完成。
系统测试
依据需求文档,验证完成的软件配置项能否和系统正确连接
性能测试
负载测试
测试超负荷环境中程序是否能够承担
压力测试
强度测试
在系统资源特别低的情况下考查软件系统极限运行情况;偏下限
容量测试
系统同时处理的在线最大用户数量。
功能测试
确认测试(依据客户参与程度划分)
依据需求文档,对需求的测试,验证与需求是否一致
内部确认测试:没有客户参与
1alpha:测试环境
2beta测试:生产环境测试
3验收测试
软件测试类型
动态测试(计算机运行)
白盒测试
单元测试
控制流测试
逻辑覆盖测试
依次递增
依次递增
语句覆盖(棱形和正方形)
x=x/y这种是赋值语句,判断语句x>1,所有语句执行完即可
判定覆盖(棱形整体看):棱形【真假分支路径】真假都要覆盖一次
条件覆盖(棱形内所有条件真假都要覆盖):棱形内每个【判定条件内真假】都要覆盖一次。x.y.z单独拿出来判断
判定/条件组合覆盖
路径覆盖:开始到结束,有哪些不同走法
软件度量
McCabe
多少条路径d到终点
环路复杂度
m-n+2
边数m,节点数n
边数m,节点数n
P+1,判定数P
封闭区域+1
数据流测试
黑盒测试
集成->系统->确认测试
等价类划分
边界值分析
年龄0-150岁之间,边界值有哪几个?
错误推断
判定表
多个
因果表
灰盒测试
代码走查、审查
静态测试(人工检测),适合复杂逻辑
桌前检测
代码走查、审查
系统运行与软件保护
系统转换计划
系统转换
直接转换、并行转换、分段转换
软件维护
正确性维护,修bug
适应性维护,应变,适应环境变化
完善性维护
增加功能
预防性维护
未来可维护性
可维护性指标
易分析性
易改变性
易测试性
维护性的依从性
子主题
软件活动PDCA
plan软件规格说明
do软件开发
check软件确认
A软件演进
软件系统建模
结构化建模方法
以过程为中心,对于较为稳定的系统可考虑结构化建模方法
信息工程建模方法或数据库建模方法
以数据为中心。信息工程建模方法创建的模型成为实体联系图,主要用于数据建模
面向对象建模方法
将"数据"和"过程"集成到被成为“对象”的结构中,消除了数据和过程的人为分离现象,面向对象建模方法所创建的模型称为 对象模型
能力成熟度模型cmm
初始级
可重复级
有过程规则重复
已定义级
流程文档化、标准化
已管理级
定量
优化级
持续改进
能力成熟度模型集成cmmi(阶段式模型)
初始级
已管理级
子主题
已定义级
流程清晰职责分明
定量管理
定量,度量
优化级
持续改进
0 条评论
下一页