导图社区 软考-系统架构设计师(上篇)思维导图
软考,系统架构设计师(上篇)思维导图,系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,是刻画系统整体抽象结构的一种手段。
编辑于2024-05-06 22:37:37这是一篇关于《百年孤独》的思维导图,主要内容包括:时间背景:19世纪初(1800年代初)~20世纪中叶(1930年代),拉丁美洲文学代表作之一,首次出版:1967年,哥伦比亚作家:加夫列尔·加西亚·马尔克斯,1982年诺贝尔文学奖得主,魔幻现实主义小说。
绝区零人物及组织图,《绝区零》是由上海米哈游影铁科技有限公司制作发行的一款动作游戏。该游戏于2022年8月5日正式公布,并开启了“调律测试”的招募。游戏的世界观设定在一个被神秘灾害“空洞”所侵袭的近未来都市“新艾利都”,玩家将扮演不同的角色,在这个城市中展开探索、战斗和冒险。
追风筝的人人物关系图,人物关系图揭示了人物之间互动的逻辑基础,使读者更容易理解情节发展的内在逻辑。例如,阿米尔与哈桑之间的兄弟关系以及他们与父亲之间的复杂情感纠葛,是推动小说情节发展的重要因素。通过分析人物关系图,读者可以预测情节的发展方向和可能的转折点。例如,了解阿米尔对哈桑的愧疚和自责,可以预见他最终会为了救赎自己而采取行动。
社区模板帮助中心,点此进入>>
这是一篇关于《百年孤独》的思维导图,主要内容包括:时间背景:19世纪初(1800年代初)~20世纪中叶(1930年代),拉丁美洲文学代表作之一,首次出版:1967年,哥伦比亚作家:加夫列尔·加西亚·马尔克斯,1982年诺贝尔文学奖得主,魔幻现实主义小说。
绝区零人物及组织图,《绝区零》是由上海米哈游影铁科技有限公司制作发行的一款动作游戏。该游戏于2022年8月5日正式公布,并开启了“调律测试”的招募。游戏的世界观设定在一个被神秘灾害“空洞”所侵袭的近未来都市“新艾利都”,玩家将扮演不同的角色,在这个城市中展开探索、战斗和冒险。
追风筝的人人物关系图,人物关系图揭示了人物之间互动的逻辑基础,使读者更容易理解情节发展的内在逻辑。例如,阿米尔与哈桑之间的兄弟关系以及他们与父亲之间的复杂情感纠葛,是推动小说情节发展的重要因素。通过分析人物关系图,读者可以预测情节的发展方向和可能的转折点。例如,了解阿米尔对哈桑的愧疚和自责,可以预见他最终会为了救赎自己而采取行动。
软考-系统架构设计师 (上篇) 思维导图
第1章 绪论
什么是架构
系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基, 是刻画系统整体抽象结构的一种手段。
软件架构(体系结构)的发展历程
基础研究阶段1968-1994
模块化
概念体系和核心技术形成阶段1999-2000
组件化
理论体系完善与发展阶段1996-至今
随着组件软件架构理论的建立,与之相关的一些研究方向逐渐成为软件工程领域的研究重点:软件架构风格、基于软件架构的开发方法、动态软件架构等
普及应用阶段2000-至今
软件架构师软件生命周期的重要产物。实践上升到理论,理论反馈指导实践的良性循环。
软件架构常用分类
分层架构
表现层(用户交互)、业务层(逻辑)、持久层(提供数据)、数据库(保存数据)
事件驱动架构
事件队列、分发器、事件通道、事件处理器
微核架构(插件结构)
微服务架构
三种实现模式
RESTfulAPI模式
服务通过API提供,例:云服务
RESTful应用模式
服务通过传统网络协议或应用协议提供,常见于企业内部
集中消息模式
采用消息代理(Message Broker)实现消息队列、负载均衡、统一日志等
系统架构的常用建模方法
结构模型
框架模型
动态模型
过程模型
软件架构的应用场景
管道-过滤器风格
将系统分成若干独立的步骤
主程序/子程序风格
对组件内容进行设计
面相对象的架构风格
对组件内容进行设计
虚拟机风格
构造解释器、专家系统
C/S和B/S风格
数据和处理分布在一定范围,通过网络连接构成系统
平台/插件风格
具有插件扩展功能的应用程序
MVC风格
用户交互程序的设计
SOA风格
企业集成
C2风格
GUI软件开发,领过构件可扩展的应用系统
第2章 计算机系统基础知识
计算机系统
嵌入式计算机
电信设备
基站
网络交换
移动终端
家用电子设备
视听设备
厨卫电器
可穿戴电子设备
医疗设备
交通设备
国防设备
金融设备
通用计算机
个人计算机
台式电脑
平板电脑
网络服务器
云存储
云计算
超级计算机
计算机硬件
处理器(CPU)
复杂指令集CISC
历史遗留,例:x86
精简指令集RISC
几乎所以后期出现的都是RISC
存储器,分层体系
片上缓存:处理器核心中集成的缓存,容量小,一般16kb~512kb
片外缓存:处理器核心外的缓存,需要经过交换互联开关访问。256KB~4MB
主存(内存):数百MB~数十GB
外存:磁盘、光盘、U盘等:GB~TB级
总线(Bus)
内总线(片上总线、片内总线)
各类芯片内部互联
系统总线
CPU、主存、I/O接口的总线
外部总线
计算机板和外部设备之间,或,计算机系统之间互联的总线
性能指标
总线带宽、总线服务质量QoS、总线时延、总线抖动等
接口
显示接口
HDMI、DVI
音频输入输出类
TRS、RCA、XLR
网络类
RJ45、FC
PS/2接口
USB接口
SATA接口
LPT打印接口
A/D转换接口等这类非标准接口,随需求而设计
外部设备
所有的输入输出设备
部分储存设备(外存)
计算机软件
分类
系统软件
应用软件
操作系统
特征
并发性
共享性
虚拟性
不确定性
分类
批处理操作系统
单道批处理
多道批处理
分时操作系统
多路性
独立性
交互性
及时性
实时操作系统
对交互能力要求不高,但对可靠性要求高
实时控制系统
实时处理系统
网络操作系统
硬件独立性
多用户支持
分布式操作系统
透明性、可靠性、高性能
微型计算机操作系统
windows、mac os、linux
嵌入式操作系统
微型化、可定制、实时性可靠性、易移植性
数据库
按常见种类分类
关系型数据库
设计方法
基于3NF的设计方法
基于实体联系(E-R)模型的数据库设计方法
基于视图概念的数据库设计方法
面相对象的关系数据库设计方法
计算机辅助数据库设计方法
敏捷数据库设计方法
设计步骤
需求分析
概念结构设计:数据建模
设计数据库概念模型的最常用方法:E-R方法
逻辑结构设计:确定数据模型
物理结构设计
应用程序设计
运行维护
分布式数据库
全局外层
全局概念层
局部概念层
局部内层
按存储体系分类
关系数据库
键值数据库
列存储数据库
文档数据库
文件系统
结构和组织
逻辑结构
有结构的记录式文件
无结构的流式文件
物理结构
连续结构(顺序结构)
链接结构(串联结构)
索引结构
多个物理块的索引表
文件存储空间的管理
空闲区表
适用连续文件结构
位示图
适用各种结构
空闲块链
成组链接法
UNIX系统采用
文件共享和保护
共享
硬链接
两个文件目录表目指向同一个索引节点的链接
符号链接
建立新的文件或目录,与原来文件或目录的路径名进行映射
保护
存取控制矩阵
存取控制表
用户权限表
密码
网络协议(两个实体想要通信,必须具有相同的语言,这就是网络协议)
局域网协议LAN、广域网协议WAN、无线网协议、移动网协议等
中间件(处于操作系统、网络、数据库之上,应用软件之下)
分类
通信处理(消息)中间件(实现跨平台数据传输)
eLink、MQSeries、TongLINK等
事务处理(交易)中间件(能监视和调用整个系统)
BEA公司的Texedo
数据存取管理中间件
Web服务器中间件
安全中间件
政府或军事部门上网保密要求
跨平台和架构的中间价
CORBA:跨任意平台,但是过于庞大
JavaBeans:灵活简单,适用浏览器,效率待改善
COM+模型:适合windows,广泛应用桌面
专用平台中间件
网络中间件
软件构件(组件)
概念:构件又叫组件,是一个自包容、可复用的程序集。或者说是一组程序的集合。这个集合可以以各种形式体现出来,如源程序、二进制代码等。这个集合整体向外提供统一的访问接口。构件外部只能通过接口来访问构件,而不能访问构件的内部。
特性
自包容、可重用
构件组装模型:利用软件构件进行搭积木式的开发
设计构件组装
建立构件库
构件应用软件
测试与发布
主流商用构件的标准规范
对象管理组织(OMG)的CORBA
Sun的J2EE
Microsoft的DNA
应用软件
通用软件
专用软件
嵌入式系统及软件
嵌入式系统指嵌入各种设备及应用产品内部的计算机系统
嵌入式系统的组成
嵌入式处理器
相关支撑硬件
嵌入式操作系统
支撑软件
应用软件
嵌入式系统特点
专用性强
技术融合
软硬一体软件为主
比通用计算机资源少
程序代码固化在非易失存储器中
专门开发工具和环境
体积小、价格低、工艺先进、性能性价比高、系统配置要求低、实时性强
对安全性和可靠性要求高
嵌入式系统分类
按用途
嵌入式实时系统
强实时系统
弱实时系统
嵌入式非实时系统
按安全性
安全攸关系统
非安全攸关系统
嵌入式系统的组成
应用层
中间件层:中间件指一种独立的系统软件或服务程序
操作系统层
抽象层:对硬件层的硬件进行抽象,为上层的操作系统提供虚拟的硬件资源
硬件层
计算机网络
OSI七层网络体系架构
应用层
对用户不透明的提供各种服务,如E-mail
单位:数据
设备:网关
协议:Telnet、FTP、HTTP、SMTP、POP3、DNS、DHCP等
表示层
实现数据转换(包括格式转换、压缩、加密等),提供标准的应用接口、公用的通信服务、公共数据表示方法
设备:网关
协议:JEPG、ASCII、GIF、MPEG、DES等
会话层
建立通信进程的逻辑名字和物理名字之间的联系,提供进程之间建立、管理和终止会话的方法,处理同步与恢复等
设备:网关
协议:RPC、SQL、NFS等
传输层
端到端间的可靠的、透明的数据传输
单位:报文段
设备:网关
协议:TCP、UDP等
网络层
在源节点-目的节点之间进行路由选择、拥塞控制、顺序控制、传送包、保证报文的正确性;IP分组
设备:路由器
协议:IP、ICMP、IGMP、ARP、RARP等
数据链路层
把不可靠的信道变为可靠的信道
单位:帧
设备:网桥、交换机
协议:SDLC、HDLC、LAPB、PPP、STP、帧中继等、IEEE802、ATM等
物理层
在链路上透明的传输位
单位:比特(位)
设备:集线器、中继器
协议:RS-232、RS4449、RJ-45、FDDI等
计算机语言
分类
机器语言
操作码
操作数的地址
操作结果的存储地址
下条指令的地址
汇编语言
是机器语言的符号化描述
指令语句
伪指令语句
宏指令语句
高级语言
C
简洁紧凑、方便灵活、可移植性好、可直接操作硬件
C++
模块化结构的基础上增加了对面向对象程序设计的支持
Java
完全面向对象、跨平台
Python
脚本语言。有强大的标准库,常用:Web应用、科学计算、大数据分析处理等
建模语言
UML
UML的基本构造块(事物、关系)
事物
结构事物:模型的静态部分
类
接口
协作
用例
主动类
构件
制品
结点
行为事物:UML模型的动态部分
交互
状态机
活动
分组事物:UML模型的组织部分
包:把元素组织成组的机制。仅在开发时存在。
注释事物:UML模型的解释部分
注解:依附于一个元素或者一组元素之上
关系
依赖:是事物间的语义关系。一个独立事物的变化会影响另一个事物。
依赖:可能有方向的虚线
变体
精化
跟踪
包含
延伸
关联:是一种结构关系。描述了一组链,链是对象之间的链接。 聚集:是一种特殊类型的关联,描述整体和部分的结构关系。
关联:直线 聚集:直线带一个空心菱形框
泛化:是一种特殊/一般关系。 特殊元素(子元素)的对象可替代一般元素(父元素)的对象。 子元素共享了父元素的结构和行为。
泛化:带空心箭头的实线
实现:类元之间的语义关系。 其中一个类元制定了由另一个类元保证执行的契约。 ①接口和实现它们的类或构件之间;②用例和实现它们的协作之间。
实现:带空心箭头的虚线
图(支配基本构造块如何放置在一起的规则) 图是一组元素的图形表示,大多数情况下画成顶点和弧的连通图。
UML2.0提供了13种图
类图
对象图
用例图
用例间的关系
扩展
包含
泛化
参与者和用例间的关系
关联
参与者与参与者
泛化
序列图(交互图)
通信图(交互图)
状态图
活动图
构件图
部署图
组合结构图
包图
交互概览图(交互图)
计时图(交互图)
UML5种视图
用例视图:系统的功能需求
用例图
逻辑视图:系统内部功能
类图
对象图
状态图
顺序图
合作图
活动图
进程视图:系统的并发性以及线程间的通信和同步
状态图
顺序图
合作图
活动图
构件图
配置图
实现视图:描述系统代码构件组织和实现模块及它们之间的依赖关系
构件图
部署视图:定义系统中软硬件的物理体系结构及
配置图
运用于整个语言的公共机制
形式化语言
形式化规格说明语言
形式化方法的开发过程(自顶向下,逐步求精)
可行性分析
需求分析
体系结构设计
详细设计
编码
测试发布
形式化规格语言
Z语言
多媒体
分类
感觉媒体:视觉,听觉,触觉
表示媒体:信息的表现形式。图像,音频,视频等
表现媒体(显示媒体):显示或获取信息的物理设备。
存储媒体:存储表示媒体的物理介质。硬盘,软盘,光盘
传输媒体:传输表示媒体的物理介质。电缆,光缆
多媒体系统的关键技术
视音频技术
通信技术
数据压缩技术
VR(虚拟现实)和AR(增强现实)技术
系统工程(一种组织管理技术)
系统工程方法
霍尔的三维结构
时间维
规划
拟定方案
研制
生产
安装
运行
更新
逻辑维
明确问题
确定目标
系统综合
系统分析
优化
决策
实施
知识维
工程
医学
建筑
商业
法律
管理
社会科学
艺术
切克兰德方法(方法论核心:“比较”与“探寻”)
认识问题
根底定义
建立概念模型
比较及探寻
选择
设计与实施
评估与反馈
并行工程方法
目标:提高质量、降低成本、缩短开发周期和上市时间
综合集成法
简单系统
一台测量仪器
巨系统
子系统数量巨大,成千上万
简单巨系统
子系统种类不多,例:激光系统
复杂巨系统
子系统种类很多并有层次结构
WSR系统方法(物理-事理-人理)
系统工程的生命周期
生命周期阶段
探索性研究
概念
开发
生产
使用
保障
退役
生命周期方法
计划驱动方法
渐进迭代式开发
精益开发
敏捷开发
基于模型的系统工程
需求分析阶段产生:需求图、用例图、包图
功能分析与分配阶段:顺序图、活动图、状态机图
设计综合阶段:模块定义图、内部块图、参数图
系统性能
性能设计
性能调整
阿姆达尔解决方案
加速比=不使用增强部件时完成整个任务的时间/使用增强部件时完成整个任务的时间
新的执行时间=原执行时间*[(1-增强比例)+增强比例/加速比]
总加速比=原执行时间/新执行时间=1/[(1-增强比例+增强比例/增强加速比)]
性能评估
基准测试程序
整数测试程序
浮点测试程序
Whetstone基准测试程序
SPEC基准测试程序
TPC基准程序
Web服务器性能评估
基准性能测试
压力测试
可靠性测试
系统监视
系统本身命令
Linux的:W、ps、last;windows的netstat等
系统记录文件查阅系统在特定时间内的运行状态
集成命令、文件记录和可视化技术
第3章 信息系统基础知识
信息系统概述
5个基本功能
输入
存储
处理
输出
控制
信息系统的分类
业务处理系统(TPS):主要放置于车间或一般的行政办公室
数据处理周期
数据输入
数据处理
批处理
联机事务处理(OLTP)
数据库维护
文件报表的生成
查询处理
管理信息系统(MIS)
信息源
信息处理器
信息用户
信息管理者
决策支持系统(DSS)
模型库
数据库
人机交互系统
知识库与方法库
专家系统(ES):模拟人类专家解决领域问题
知识库
综合数据库
推理机
知识获取
解释程序
人机接口
办公自动化系统(OAS)
事务处理
信息管理
辅助决策
综合性信息系统
企业资源管理(ERP)
仓储管理系统WMS
制造过程管理系统MES
产品数据管理系统PDM
信息系统的生命周期
产生
概念的产生过程
需求分析过程
开发
总体规划
系统分析
系统设计
系统实施
系统验收
运行
排错性维护
适应性维护
完善性维护
预防性维护
消亡
信息系统的建设原则
高层管理人员介入原则
用户参与开发原则
自顶向下规划原则
工程化原则
其他原则
信息系统的开发方法
结构化方法:面向过程。用于业务成熟的系统:银行、电信、商品零售等
开发目标清晰化
工作阶段程式化
开发文档规范化
设计方法结构化
原型法:快速建立demo
面向对象方法:采用构造模型的观点、初始元素是对象,然后将有共同特征的对象归纳成类。
面向服务的方法:不拘泥于具体技术实现方式的一种新的系统开发思想。
面向对象的应用构建在对象和类之上, 随后发展起来的建模技术将相关对象按照业务功能进行分组,就形成了构件的概念。 对于跨构件的调用,采用接口的形式。而进一步将接口的定义与实现进行解耦,就催生了服务和面向服务的开发方法。
典型信息系统架构模型
政府信息化与电子政务
电子政务3个组成
政府部门内部
政府部门之间
政府部门与居民
电子政务内容
政府与政府:政务活动、采集信息
政府对企业:政策、方针
政府对居民:学校、医院等、办事
企业对政府:交税、投标等
居民对政府:交税、参政议政等
电子政务技术形式
起步
政府与用户单项互动
政府与用户双向互动
网上事务处理
企业信息化与电子商务
企业信息化:技术和业务的融合
第4章 信息安全技术基础知识
信息安全基础知识
基本要素
机密性
完整性
可用性
可控性
可审查性
信息安全的范围
设备安全
数据安全
内容安全
内容健康、符合法规
行为安全
信息存储安全
信息使用的安全
用户标识与验证
用户存取权限限制
系统安全监控
计算机病毒防治
网络安全
网络安全漏洞
网络安全威胁
非授权访问
信息泄露或丢失
破坏数据完整性
拒绝服务攻击
利用网络传播病毒
安全措施的目标
访问控制
认证
信息完整性
审计
保密
信息安全的作用和意义
2014年中央成立中央网络安全与信息化领导小组
信息安全系统的组成框架
信息加解密技术
数据加密
对称密钥加密算法
DES
IDEA
AES(高级加密标准)
非对称(加密密钥和解密密钥不同)
RSA
密钥管理技术
访问控制及数字签名技术
访问控制技术:主体U(用户、访问者)、客体O(资源)、控制策略KS
实现技术
访问控制矩阵ACM:主体行索引、客体列索引
访问控制表ACLs:每个客体有一个访问控制表,是有权访问这个客体的主体的信息
能力表:每个主体有个能力表,是该主体对每一个客体的访问权限信息。
授权关系表:对应访问矩阵中每一个非空元素的实现技术
数字签名技术
数字签名的条件
可信
不可伪造
不可重用
不可改变
不可抵赖
对称密钥签名:“中间人”
公开密钥签名
公开的公钥,自己的私钥
信息安全的抗攻击技术
密钥的选择
数据加密密钥DK:对数据进行操作
密钥加密密钥KK:保护密钥
拒绝服务攻击DoS
消耗资源
破坏或更改配置信息
物理破坏或改变网络部件
利用服务程序中的处理错误使服务失效
防御方法:
加强对数据包的特征识别
设置防火墙监视本地主机端口的使用情况
对通信数据量进行统计
尽可能修正已经发现的问题和系统漏洞
分布式拒绝服务攻击DDoS,三级控制结构:
Client客户端:在攻击者的主机上
Handler主控端:已被攻击者侵入并获得控制的主机上,用来控制代理端
Agent代理端:运行在已被侵入并获得控制的主机上,从主控端接收命令,对目标实施实际的攻击
欺骗攻击与防御
ARP欺骗:IP、MAC地址
防御
固化ARP表
使用ARP服务器
双向绑定
ARP防护软件
DNS欺骗:冒充DNS,向访问者发送自己的IP地址
防御
被动监听监测
虚假报文探测
交叉检查查询
IP欺骗:编程改变发出包的IP地址,利用DoS让对方主机瘫痪
防御
防火墙
端口扫描
扫描原理分类
全TCP连接
半打开式扫描(SYN扫描)
FIN扫描(秘密扫描)
第三方扫描
针对TCP/IP堆栈的DoS攻击
同步包风暴(SYN Flooding)
ICMP攻击
SNMP攻击
系统漏洞扫描
基于网络
基于主机
信息安全的保障体系与评估方法
计算机系统安全保护5个等级
第1级:用户自主保护级:对用户实行访问控制
第2级:系统审计保护级:粒度更细的用户访问控制
第3级:安全标记保护级:主体对客体的非形式化描述
第4级:结构化保护级:访问控制扩展到所有主体客体、接口
第5级:访问验证保护级:访问监控器
第5章 软件工程基础知识(8-10分)
5.1软件工程
定义
软件工程过程:为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动。
P(plan):软件规格说明。规定软件功能及运行限制。
D(do):软件开发
C(check):软件确认。确认满足用户需求
A(action):软件演进。不断改进来满足用户需求
软件过程模型(软件生命周期模型)
(1)瀑布模型:古老。严格串行化,前一个阶段的输出成果是后一个阶段的输入
(2)原型化模型/快速原型:需求不明确、不适用大型软件开发
(3)螺旋模型:对目标设定、风险分析、开发和有效性验证、评审四个阶段的不断迭代。适用大型软件开发、适用面向规格、面向过程、面向对象的软件开发方法。
(4)敏捷模型:适应型、以人为本、迭代增量式
主要敏捷方法
①极限编程XP:交流、朴素、反馈、勇气
②水晶系列方法:“机动性”的方法,包含具有共性的核心元素
③Scrum:(直译:橄榄球的并列争球)侧重于项目管理
④特征驱动开发方法FDD:人(6种项目角色)、过程(5个核心过程)、技术
(5)统一过程模型(RUP):RUP类似于一个在线领导者,为所有方面和层次的开发提供指导方针、模板、事例支持
RUP的生命周期,9个核心工作流
业务建模
需求
分析与设计
实现
测试
部署
配置与变更管理
项目管理
环境
RUP把软件开发生命周期分为多个循环cycle,每个循环由4个阶段组成
初始阶段
细化阶段
构造阶段
移交阶段
RUP中的核心概念
角色:who,某个人或一个小组的行为与职责
活动activity:How。有明确目的的独立工作单元
制品artifact:what。活动生成、创建或修改的一段信息
工作流workflow:when。有意义的连续的活动序列
RUP的特点
①用例驱动
②以体系架构为中心
RUP采用“4+1”视图模型来描述软件系统的体系架构
用例视图:在中央。分析人员和测试人员关心的系统行为。
逻辑视图:最终用户关心的系统功能。
实现视图:程序员关心的系统配置。
进程视图:系统集成人员关心的系统性能、伸缩性、吞吐率等
部署视图:系统工程师关心的系统发布、安装、拓扑结构等。
③迭代和增量
(6)软件能力成熟度模型CMM:模型框架和表示是刚性的,不能随意改变。199X年开始广泛应用; 软件能力成熟度模型集成CMMI:一种软件成熟度评估标准,用户指导软件开发过程的改进、进行软件开发能力的评估。
CMMI的5个成熟度等级
level 1 初始级:看组织内个人的能力
2 已管理级:确定各过程、目标,实现成本、进度和质量等目标
3 已定义级:定义适合自己企业的流程、开始企业资产的收集
4 量化管理级:定量目标,对过程性能的可预测。
5 优化级:组织使用从多个项目收集来的数据对整体组织级绩效进行关注
5.2需求工程
软件需求3个层次
业务需求
用户需求
功能需求
需求工程的活动划分阶段
需求获取,方法:
用户面谈
需求专题讨论会
问卷调查
现场观察
原型化方法
头脑风暴法
需求分析:建立概念模型
形成需求规格(需求文档化)
需求确认与验证
需求管理:需求文档的追踪管理、变更控制、版本控制
需求变更
变更控制过程
变更控制委员会CCB
需求追踪
正向追踪
逆向追踪
5.3系统分析与设计(概要设计、详细设计)
5.3.1结构化方法SASD(面向功能的软件开发方法/面向数据流的软件开发方法)
1结构化分析SA
数据流图DFD
数据流
处理/加工
数据存储
外部项
数据字典:是一种用户可以访问的记录数据库和应用程序元数据的目录
结构化语言
判定表
判定树
2结构化设计SD:自顶向下、逐步求精、模块化
1)模块结构
信息隐藏与抽象:封装技术、分层次抽象
模块化:功能、逻辑、状态3个基本属性
耦合:模块之间联系的程度
模块的耦合类型:(由低到高) “非数标控通公内”
①非直接耦合:模块之间无关系
②数据耦合:传递简单数据
③标记耦合:传递数据结构
④控制耦合:可传递控制模块内部逻辑的信息
⑤通信耦合:共享了输入或输出
⑥公共耦合:多个模块都访问同一个公共数据环境
⑦内容耦合:一个模块直接访问另一个模块的内部数据
内聚:模块内部各代码成分之间的紧密程度
模块的内聚类型(由高到低) ”功顺通过时逻偶“
①功能内聚:完成一个单一功能,各个部分协同,缺一不可
②顺序内聚:处理元素相关,必须顺序执行
③通信内聚:所有处理元素集中在一个数据结构的区域上
④过程内聚:处理元素相关,必须按特定次序执行
⑤时间内聚:所包含的任务必须在同一时间间隔内执行
⑥逻辑内聚:完成逻辑上相关的一组任务
⑦偶然内聚:完成一组没有关系或松散关系的任务
2)系统结构图/模块结构图:概要设计的工具
详细设计的表示工具
图形工具
业务流图
程序流程图
PAD图(问题分析图)
NS流程图
表格工具
语言工具
伪码
PDL(结构化语言):用于描述模块内部的具体算法
3结构化编程SP:面向结构的程序设方法,是面向过程方法的改进。 结构上将软件系统划分为若干功能模块,各模块按要求独立编程,再组合构成软件系统
结构化程序设计原则
自顶向下,逐步细化
清晰第一,效率第二
书写规范,缩进格式
基本结构,组合而成
4数据库设计
需求分析
概念结构设计:对现实世界事物建立抽象的概念数据模型。
实体-联系图(E-R图):反应事物之间的信息流动情况
实体:矩形框
联系:菱形框
1:1
1:n
m:n
属性:椭圆
逻辑结构设计
物理结构设计
数据库的实施
数据库的运行维护
5.3.2 面向对象方法(OO) 世界由对象组成; 对象=属性+操作; 对象可按属性分类; 对象之间的联系通过传递消息实现; 对象具有封装性、继承性、多态性; OO是以用例驱动的、以体系结构为中心的、迭代的和渐进式的开发过程
1面向对象分析OOA
1)OOA原则
抽象:从事物中抽取共同的、本质性的特征
封装:把对象的属性和服务结合为一个不可分的系统单位
继承:特殊类的对象具有一般类的全部属性和服务
分类:相同属性和服务的对象分为一类,用类作为这些对象的抽象描述
聚合(组装):把一个复杂的事物看成若干比较简单事物的组装体
关联:通过一个事物想到另一个事物
消息通信:对象之间只能用消息进行通信
粒度控制
行为分析
2面向对象设计OOD
1)实体类
2)控制类
3)边界类
3面向对象编程OOP=对象+类+继承+多态+消息
基本特点:
封装
继承
多态
4数据持久化与数据库 在OO中,对象只能存在于内存,要将对象持久化到关系数据库中,需要进行对象/关系的映射(ORM),主流ORM框架有:
Hibernate:全自动
iBatis:小巧
JDO:灵活
5.4软件测试
5.4.1测试方法
按测试中程序执行状态分类
静态测试:不运行程序,只靠分析或检查源程序
动态测试:跑程序分析对比结果
按具体实现算法细节和系统内部结构的相关情况分类
黑盒测试:界面和功能的测试
白盒测试:各个逻辑结构
常用白盒测试法
控制流分析
数据流分析
路径分析
程序变异
按测试用例的覆盖程度
语句覆盖
判定覆盖
分支覆盖
路径覆盖
灰盒测试:简单判断内部逻辑是否正常
按程序执行的方式分类
人工测试
自动化测试:自动运行被测程序并分析结果
5.4.2测试阶段
单元测试:对软件的模块进行测试
集成测试:对组装起来的模块测试。常用黑盒、白盒
系统测试
功能测试
性能测试
验收测试:满足用户需求或合同要求。
Alpha测试:开发环境下,用户进行的测试。
Beta测试:实际环境下,多个用户进行测试
压力测试
其他测试
AB测试:为WEB或APP界面或流程制作2个(A/B)或多个(A/B/n)版本
Web测试
链接测试
表单测试
5.5净室软件工程CSE: 软件开发的一种形式化方法,可以生成质量很高的软件。 使用盒子结构规约进行分析和设计建模; 强调将正确性验证作为消除错误的主要机制
理论基础
函数理论
完备性
一致性
正确性
抽样理论
技术手段
统计过程控制下的增量式开发
基于函数的规范与设计
正确性验证
统计测试和软件认证
5.6基于构件的软件工程(CBSE): 将软件开发的重点从程序编写转移到基于已有构件的组装,以便更快构造系统。
构件(可组装型、可部署性、文档化、独立性、标准化)和构件模型(接口、使用信息、部署)
主流构件模型
Web Serverices模型
Sun公司的EJB模型
微软的.NET模型
CBSE过程
1.系统需求概览
2.识别候选构件
3.根据发现的构件修改需求
4.体系结构设计
5.构件定制与适配
6.组装构件,创建系统
构件组装
顺序组装:适用:作为程序元素或作为服务的构件
层次组装:一个构件直接调用另一个构件提供的服务时。
叠加组装:2个或2个以上构件放在一起来创建一个新构件时。 适用:构件是程序单元或构件是服务。
5.7软件项目管理
5.7.1项目管理概述
目标:控制成本、进度、质量。 手段:对人、产品、过程、项目进行分析和管理。
5.7.2软件进度管理
工作分解结构WBS:最低层:工作包、树形结构不超过6层
任务活动图:eg:甘特图
5.7.3软件配置管理SCM
版本控制:对开发过程中各类代码、配置文件、说明文档等文件变更的管理
变更控制:对变更进行管理
5.7.4软件质量管理
软件质量保证SQA:建立有计划的系统方法,来向管理层保证拟定的标准等能被所有项目采用。
软件质量认证
ISO 9000
能力成熟度模型CMM
5.7.5软件风险管理
第6章 数据库设计基础知识
6.1数据库基本概念
几个名词理解
数据
数据库系统DBS
数据库管理系统DBMS,主要功能
数据定义:DBMS提供数据定义语言DDL
数据操纵:DBMS提供数据操纵语言DML:插入、修改、删除
数据库的运行管理:事务管理、自动恢复等
数据库的建立与维护
数据库DB
发展
人工管理
文件系统
数据库系统
数据模型(:数据库的基础结构)的3要素
数据结构
数据操作
数据约束条件
数据库三级模式两级映像
三级模式
视图层:最高层次的抽象
外模式:用户与数据库的接口。 1个数据库可以有多个外模式
逻辑层:描述数据库中存储的数据以及数据间的关系
概念模式:数据库的结构及联系。 1个数据库只有1个概念模式
物理层:描述数据在存储器如何存储。
内模式:数据的物理结构和存储方式的描述,数据在数据库内部的表示方式。 eg:数据文件、索引文件
两级映像
外模式/概念模式映像
概念模式/内模式映像
6.2关系数据库
基本概念
基本术语
属性:描述事物的特征
域:每个属性的取值范围
目或度:一个关系中属性的个数
候选码:能唯一标识一个元组的属性或属性组
主码:主键,多个候选码选一个
主属性:包含在任何候选码中的属性
非主属性:不包含在任何候选码中的属性
外码:外键。关系模式R中的属性或属性组不是该关系的码,但是其他关系的码
全码:关系模型的所有属性组是这个关系模式的候选码
笛卡尔积:
关系数据库模式
关系的完整性约束
实体完整性:主键
参照完整性
用户定义完整性
关系运算
集合运算符
并∪
交∩
差-
笛卡尔积×:R1有K1个元组,R2有K2个元组,则R1XR2有K1XK2个元组
专门的关系运算符
选择σ:水平
投影π:垂直
连接∞
θ连接
等值连接=
自然连接
除÷
比较运算符
>
≥
<
≤
=
≠
逻辑运算符
非﹁
与∧
或∨
关系数据库设计基本理论
函数依赖:X->Y,X函数决定Y 或 Y函数依赖于X
多值依赖:X->->Y。X多值决定Y 或 Y多值依赖于X
规范化
1NF:每一个分量都是不可再分的数据项
2NF:消除了非主属性对码的部分函数依赖
3NF:消除了非主属性对码的传递函数依赖
BCNF:消除了主属性对码的部分函数依赖和传递函数依赖。 只考虑函数依赖,那BCNF就是关系模式最高的规范化程度!
4NF:限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。 如果考虑多值依赖,关系模式最高的规范化程度是4NF!
5NF
6.3数据库设计
数据需求分析
自顶向下的结构化分析方法SA:数据流图、数据字典
自底向上
概念结构设计
E-R实体-联系方法
选择局部应用
逐一设计分E-R图
E-R图合并
属性冲突
命名冲突
结构冲突
逻辑结构设计
确定数据模型
将E-R图转换为关系模式
确定完整性约束
确定用户视图
PS:反规范化: 加速读操作性能的方法
冗余列
派生列
表重组
表分割
水平分割
垂直分割
物理结构设计
确定数据分布
确定数据存储结构
顺序存储
哈希存储
堆存储
B+树存储
确定数据访问方式
数据库实施
数据库运行和维护
6.4应用程序与数据库的交互
库函数级别访问接口:Oracle的OCI
嵌入式SQL访问接口:eg:C、COBOL、Java、Ada等编程语言的源代码中的方法。
通用数据接口标准:开放数据库连接ODBC
微软发展的数据库接口
数据库访问对象DAO
远程数据库对象RDO
ActiveX数据对象ADO
Java语言数据库接口
Java数据库连接JDBC
对象关系映射ORM访问接口:
Hibernate:全自动ORM框架,学习成本较高、强大、复杂
Mybatis:半自动框架
JPA:Java自带框架
6.5NoSQL数据库 易扩展、大数据量、灵活的数据模型、高可用
常见分类
列式存储数据库:应对分布式存储的海量数据。
产品:Cassandra、HBase、Riak
键值对存储数据库:数组链表。
产品:Tokyo Cabinet/Tyrant、Redis、Voldmort、Oracle BDB等
文档型数据库:版本化的文档、半结构化的文档以特定格式(eg:JSON)存储。
产品:CouchDB、MongoDB、国产的SequoiaDB等
图数据库:eg:社交网络数据、生物信息网络数据、交通网络数据等。
产品:Neo4J、InfoGrid、Infinite Graph等
体系框架
接口层:为上层应用提供方便的数据调用接口
Rest
Thrift
Map/Reduce
Get/Put
特定语言API
数据逻辑模型层:定义数据的逻辑表现形式
数据分布层:定义数据如何分布
CAP支持:用于水平扩展
多数据中心支持:保证在横跨多数据中心也能平稳运行
动态部署支持:可以在运行中集群动态添加或删除节点
数据持久层:定义数据存储格式
基于内存
基于硬盘
基于内存和硬盘接口
定制可插拔
第7章 系统架构设计基础知识(20分+)
7.1软件架构概念 Software Architecture (SA)
定义
体系结构是一种表达。结构中包括软件的构件、构件的外部可见属性、以及构件间的关系。
软件体系结构设计
数据设计
传统系统中体系结构的数据构件
面向对象系统中类的定义(封装了属性和操作)
体系结构设计
软件构件的结构、属性、相互作用
软件架构设计和生命周期
需求分析
设计
实现
构件组装
部署
后开发 (维护、演化、复用)
动态软件体系结构
体系结构恢复与重建
软件架构的重要性
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素
7.2基于架构的软件开发方法(ABSD) ”自顶向下,递归细化“
设计方法概述
由体系结构驱动。即指构成体系结构的商业、质量、和功能需求的组合驱动
1功能的分解:基于模块的内聚和耦合
2通过选择体系结构风格来实现质量和商业需求
3软件模板的使用
概念与术语
最顶层
概念子系统、软件模板
第2层
概念构件、附加软件模板
基于体系结构的开发模型
1体系结构需求: 获取用户需求,标识系统中用到的构件
1.需求获取
系统的质量需求
系统的商业目标
系统开发人员的商业目标
2.标识构件
生成类图
对类进行分组
把类打包成构件
3.需求评审
分析人员、客户、设计人员、测试人员组成的小组
2体系结构设计
1.提出软件体系结构模型:选择体系结构风格
2.映射构件:需求阶段已选择的构件映射到体系结构中
3.分析构件之间的相互作用
4.产生体系结构
5.设计评审
3体系结构文档化
体系结构规格说明
测试体系结构需求的质量设计说明书
4体系结构复审
5体系结构实现
基础:
复审后的文档化的体系结构
实现过程:
分析与设计 <-构件库
构件实现
构件组装 <-构件库
系统测试
演化
体系结构演化
6体系结构演化
需求变化归类
制定体系结构演化计划
修改、增加或删除构件<-构件库
更新构件的相互作用
构件组装与测试
技术评审
演化后的体系结构
7.3软件架构风格 (描述某一特定应用领域中系统组织方式的惯用模式)
数据流
批处理
数据必须完整、以整体方式传递。 构件是独立的应用程序,连接件是某种类型的媒介。
管道-过滤器
要一步一步处理,eg:早期编译器。 构件是过滤器,连接件是数据流传输管道
调用/返回
主程序/子程序
单线程控制,构件是主程序和子程序
面向对象
构件是对象,或是抽象数据类型的实例
层次性
◎构件在层上实现了虚拟机,连接件由决定层间如何交互的协议来定义
客户端/服务器
两层C/S体系架构 “胖客户机,瘦服务器”
数据库服务器:数据管理
客户应用程序和网络:与用户的交互
三层C/S体系架构 “瘦客户机”
数据库服务器:数据层(数据库管理系统)
应用服务器:整个应用逻辑。功能层(应用的主体,实现具体业务处理逻辑)
客户应用和网络:只有表示层存在客户机上。表示层(应用的用户接口部分,常用图形界面)
以数据为中心的
仓库
中央数据结构:当前数据的状态
一组对中央数据进行操作的独立构件
黑板: “特定应用问题”
黑板(共享数据)
知识源
虚拟机: “人为构建一个运行环境,解析运行自定义的一些语言”
解释器 eg“专家系统”
解释引擎:完成解释工作
被解释执行的程序
记录解释引擎当前工作状态
记录源代码被解释器执行进度
规则系统
规则集
规则解释器
规则/数据选择器
工作内存
独立构件 “强调系统中每个构件都是相对独立的个体,不直接通信”
进程通信
构件是独立的过程,连接件是消息传递
事件系统 eg:编程环境的集成工具
基于事件的隐式调用风格,不直接调用过程,而是触发或广播一个或多个事件
7.4软件架构复用
软件架构复用的分类
机会复用:开发过程中,主要发现可复用资产,就进行复用
系统复用:开发之前,就规划决定哪些复用
软件架构复用的资产对象
需求
架构设计
元素
建模与分析
测试
项目规划
过程、方法、工具
人员
样本系统
缺陷消除
软件架构复用的基本过程
构造可复用的软件资产
管理可复用资产
构件库
使用可复用资产
7.5特定领域软件体系架构DSSA
个人理解:特定领域中的一种模板或样板,它提供了一套通用的结构和规范, 用于支持领域中多个应用程序的开发,并方便应用程序的复用和组织。
DSSA的基本活动
领域分析:获得领域模型
领域设计:获得DSSA(特定领域软件体系架构)
领域实现:根据领域模型、DSSA,开发和组织可重用信息
参与DSSA的人
领域专家:该领域中系统的有经验的人
领域分析人员:有知识工程背景的有经验的系统分析员
领域设计人员:有经验的软件设计人员
领域实现人员:有经验的程序设计人员
DSSA的建立过程 “并发的、递归的、反复进行的”
定义领域范围
定义领域特定元素
定义领域特定的设计和实现需求约束
定义领域模型和体系结构
产生、搜集可重用的产品单元
第8章 系统质量属性与架构评估 ①软件系统属性:功能属性、质量属性。软件架构关注质量属性; ②为了精确、定量地表达系统的质量属性,一般采用“质量属性场景”的方式来描述。
8.1软件系统质量属性
质量属性概念及分类
概念
是一个系统的可测量或者可测试的属性
分类
开发期质量属性
易理解性
可扩展性
可重用性
可测试性
可维护性
可移植性
运行期质量属性
性能:速度、吞吐量、容量等
安全性:向合法用户提供服务,阻止非授权用户的能力
可伸缩性:当用户数或访问量增加时,软件系统维持高服务质量的能力
互操作性:本系统与其他系统交换数据或相互调用服务的难易程度
可靠性:在一定时间内无故障运行的能力
可用性:在一定时间内正常工作的时间所占比例
鲁棒性/健壮性/容错性:软件系统在非正常情况下仍能够稳定运行的能力
面向架构评估的质量属性: (指架构评估时关注的系统的质量属性)
性能
可靠性:在意外或错误使用的情况下维持系统功能的能力
可靠性的两个方面
容错
健壮性
衡量指标
平均失效等待时间MTTF
平均失效间隔时间MTBF(between)
可用性:正常运行的时间比例
安全性:向合法用户提供服务,阻止非授权用户的能力
可修改性:能快速地高性价比对系统进行变更的能力
可维护性:问题发生后“修复”系统
可扩展性:使用新特性扩展系统
结构重组:重新组织系统的构件及构件间的关系
可移植性:多平台、多编程语言等
功能性:系统能完成所期望的工作的能力
可变性:架构经扩充或变更而成为新架构的能力
互操作性
质量属性场景描述: (为了精确描述质量属性的手段)
组成
刺激源:某个生成该刺激的实体
刺激:当刺激到达系统时需要考虑的条件
环境:该刺激在某些条件内发生
制品:某个制品被激励
响应:在激励到达时所采取的行动
响应度量:当响应发生时应能够以某种方式对其进行度量
主要关注的质量属性
可用性
可修改性
性能
可测试性
易用性
安全性
8.2系统架构评估
评估方法分类
基于调查问卷或检查表的方式
基于场景的方式: (通过分析软件架构对场景(即对系统的使用或修改活动)的支持程度来判断该架构对这一场景所代表的的质量需求的满足程度)
架构权衡分析法ATAM
软件架构分析方法SAAM
基于度量的方式
系统架构评估中的重要概念
敏感点和权衡点:
敏感点:为了实现某种质量属性的特性,一个或多个构件所具有的特性
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点
风险承担者/利益相关人:
场景
刺激
环境
响应
软件架构评估方法
软件架构分析法SAAM (一种非功能质量属性的架构分析方法) 可修改性,是SAAM分析的主要质量属性
场景开发
架构描述
单个场景评估
场景交互评估
总体评估
架构权衡分析法ATAM (主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中)
主要活动领域/阶段
阶段1:场景和需求收集
阶段2:体系结构视图和场景实现
阶段3:属性模型构造和分析
阶段4:折中
对质量属性分类和排序的工具
效用树
树根
质量属性
属性分类
质量属性场景(叶子节点)
成本效益分析法CBAM (协助项目干系人根据投资回报率ROI选择架构策略)
其他评估法
SAEM方法:
将软件架构看做一个最终产品以及设计过程中的一个中间产品,从外部质量属性和内部质量属性两个角度来阐述评估模型,旨在为软件架构的质量评估创建一个基础框架。
SAABNet方法:
评估技术依赖于专家知识。该方法来源于AI
SACMM方法:
一种软件架构修改的度量方法
SASAM方法:
通过对预期架构(架构设计阶段的相关描述材料)和实际架构(源代码中执行的架构)进行映射和比较来静态评估软件架构
ALRRA方法:
架构可靠性风险评估方法。使用动态复杂度准则、动态耦合度准则来定义组件和连接件的复杂性因素
AHP层次分析法
COSMIC+UML方法
基于度量模型来评估软件架构可维护性的方法
8.3 ATAM方法架构评估实践
阶段1 演示
1、介绍架构权衡分析法ATAM
2、描述商业目标
介绍业务驱动因素
3、描述体系结构
介绍要评估的体系结构
阶段2 调查和分析
4、标识体系结构步骤
确定架构方法
5、产生质量属性树
生成质量属性效用树
6、分析体系结构步骤
分析体系结构方法
阶段3 测试
7、讨论质量需求的次序
头脑风暴和优先场景
8、分析体系结构步骤
分析架构方法
阶段4 报告
9、提交结果
报告架构权衡分析法ATTM
第9章 软件可靠性基础知识
1、软件可靠性基本概念
软件可靠性的定义
软件产品在规定条件、规定时间内完成规定功能的能力
定量描述
规定时间
自然时间
运行时间
执行时间
失效概率
可靠度
不发生失效的概率
失效强度
单位时间内软件系统出现失效的概率
平均失效前时间MTTF
从T0到故障发生时,系统的持续运行时间的期望值
平均恢复前时间MTTR
从出现故障到修复成功的这段时间。越短表示易恢复性越好
平均故障间隔时间MTBF
故障时间+恢复时间。MTBF=MTTF+MTTR
可靠性目标
失效严重程度类:对用户具有相同程度影响的失效集合
可靠性测试的意义
广义的可靠性测试:为最终评价软件的可靠性而使用建模、统计、分析等手段对软件系统实施的测试。 狭义的可靠性测试:按预先确定的测试用例,在预期环境中,面向缺陷的测试。
2、软件可靠性建模
影响软件可靠性的因素
运行环境
软件规模
开发方法和开发环境
软件的可靠性投入
软件内部结构
软件可靠性的建模方法
软件的可靠性模型分类
种子法模型
播撒种子,利用抽样率
失效率类模型
研究程序的失效率
曲线拟合类模型
用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率等
可靠性增长模型
用增长函数来描述软件的改进过程
程序结构分析模型
根据程序、子程序及相互关系形成一个可靠性分析网络
输入域分类模型
选取软件输入域中的某些样本“点”运行程序,根据样本“本”实际运行的成功/失效率推测软件可靠性
执行路径分析方法模型
通过计算程序各逻辑路径的执行概率推测软件可靠性
非齐次泊松过程模型
软件测试中单位时间的失效次数作为独立泊松随机变量
马尔可夫过程模型
贝叶斯模型
利用失效率的试验前分布和当前的测试失效信息来评估软件可靠性
3、软件可靠性管理
分布在软件工程的每一个阶段中。还停留在定性描述的水平上,很难用量化的指标来进行可靠性管理。
4、软件可靠性设计
容错设计技术
恢复块设计:动态冗余
N版本程序设计
冗余设计
检错技术
不能自动解决故障,最终要人工处理
降低复杂度设计
复杂度降低,可靠性增大
系统配置技术
双机热备技术 (“心跳”)
双机热备模式:数据同时往两个或多个服务器写。存在资源浪费
双机互备模式:相对独立的程序分别在不同机器运行,彼此均为备机。对服务器性能要求高。
双机双工模式:集群的一种形式。同时运行相同应用,实现负载均衡和互为备份
服务器集群技术
5、软件可靠性测试
可靠性目标的确定
运行剖面/运行环境的开发
可靠性测试用例的设计
测试实施
《软件可靠性测试报告》
测试结果分析
6、软件可靠性评价
选择可靠性模型
模型假设的适用性
预测的能力和质量
模型输出值能否满足可靠性评价需求
模型使用的简便性
收集可靠性数据
可靠性评估和预测
第10章 软件架构的演化和维护
1、软件架构演化和定义的关系
①软件架构的演化就是为了维持软件架构自身的有用性;软件架构的演化就是软件整体结构的演化。 ②软件架构已有近百种不同的定义,不同的定义确定了不同的软件架构组成方式和组成规则。所以在理解软件架构演化时,要考虑具体的软件架构定义。 (eg:软件架构定义如果是 组件、连接件、约束,那么架构演化就主要关注组件、连接件、约束的添加、修改、删除。)
2、面向对象软件架构演化过程
1对象演化 (顺序图中组件的实体是对象)
顺序图中,AO(AddObject)
顺序图中,DO(DeleteObject)
2消息演化 (消息包括:名称、源对象、目标对象、时序)
添加消息 AM(AddMessage)
删除消息 DM(DeleteMessage)
交换消息时间顺序 SMO(SwapMessageOrder)
反转消息发送对象和接收对象 OM(OverturnMessage)
改变消息发送/接收对象 CMM(ChangeMessageModule)
3复合片段演化 (复合片段是对象交互关系的控制流描述, 包括:类型、成立条件和内部执行序列)
AF(AddFragment)
DF(DeleteFragment)
改变符合片段的类型 FTC(FragmentTypeChange)
改变复合片段内部执行条件 FCC(FragmentConditionChange)
4约束演化 (顺序图中的约束信息以文字方式存储于对象或消息中)
添加约束信息 AC(AddConstraint)
删除约束信息 DC(Delete Constraint)
3、软件架构演化方式的分类
典型分类方法
按架构实现方式和实施粒度
基于过程和函数的演化
面向对象的演化
基于组件的演化
基于架构的演化
按研究方法
对演化的支持:代码模块化的准则、可维护性的指示、代码重构
版本和工程的管理工具:CVS(版本控制系统)、COCOMO(构造性成本模型)
架构变换的形式方法:系统结构和行为变换的模型
架构演化的成本收益分析
按演化过程是否处于系统运行时期
静态演化(软件系统未运行或处在停止运行状态): 发生在软件架构的设计、实现、维护
动态演化:软件系统运行过程中
架构演化时期
设计时演化
运行前演化
有限制运行时演化
运行时演化
架构静态演化: (系统停止运行期间的修改和更新)
维护方法
更正性维护
适应性维护
完善性维护
一般过程
软件理解
需求变更分析
演化计划
系统重构
系统测试
架构动态演化: (不停止系统运行情况下的演化)
软件动态性的等级
级别3 架构动态性
级别2 结构动态性
级别1 交互动态性
动态演化额内容
属性改名
行为变化
拓扑结构改变
风格变化
实现架构动态演化的技术
动态软件架构DSA
进行动态重配置DR
4、软件架构演化原则
演化成本控制原则
进度可控原则
风险可控原则
主体维持原则
系统总体结构优化原则
平滑演化原则
目标一致原则
模块独立演化原则
影响可控原则
复杂性可控原则
有利于重构原则
有利于重用原则
设计原则遵从性原则
适应新技术原则
环境适应性原则
标准依从性原则
质量向好原则
适应新需求原则
5、软件架构演化评估方法
根据演化过程是否已知分类
演化过程已知的评估
演化过程未知的评估
6、大型网站系统架构演化实例
1、单体结构:
2、垂直结构:
3、使用缓存改善网站性能:
4、使用服务集群改善网站并发处理能力:
5、数据库读写分离:
6、使用反向代理和CDN加速网站响应:
CDN服务器1
反向代理服务器1
负载均衡调度服务器1
应用服务器1,2...N
分布式缓存服务器1,2...N
文件服务器
数据库服务器(主)
数据库服务器(从)
7、使用分布式文件系统和分布式数据库系统
应用服务器的“数据访问模块”变为“统一数据访问模块”; 文件服务器变为:分布式文件服务器; 数据库服务器变为:分布式数据库服务器
8、使用NoSQL和搜索引擎
应用服务器中的“统一数据访问模块”,增加了对搜索引擎服务器、NoSQL服务器的访问
9、业务拆分
应用服务器按不同的应用,拆分为A应用服务器1,2,3...、B应用服务器1,2,3...
10、分布式服务
应用服务器变为分布式应用
7、软件架构维护
软件架构知识管理
软件架构修改管理
软件架构版本管理
软件架构可维护性度量实践
圈复杂度CCN
扇入扇出度FFC
扇入:直接调用该模块的上级模块个数
扇出:该模块直接调用的下级模块的个数
模块间耦合度CBO
模块的响应RFC
模块间内聚度TCC和LCC
第11章 未来信息综合技术(3-5分)
1、信息物理系统技术概述
概念
CPS信息物理系统,本质:构建一套信息空间和物理空间之间基于数据自动流动的状态感知、科学决策等的闭环赋能体系,解决不确定性问题,提高资源配置效率,实现资源优化
CPS的实现
CPS的体系结构
单元级CPS体系架构:具有不可分割性的CPS最小单元
系统级CPS体系架构:互联互通、即插即用、边缘网关、数据互操作、协同控制、监视与诊断等功能
SoS级CPS体系架构:数据存储、数据融合、分布式计算大数据分析、资产性能管理和运营优化等服务
CPS的技术体系
“一硬”(感知和自动控制)
CPS实现的硬件支撑
“一软”(工业软件)
CPS的核心,工业软件固化了CPS九三和数据流程的规则
“一网”(工业网络)
工业网络是互联互通和数据传输的网络载体
“一平台”(工业云和智能服务平台)
工业云和智能服务平台是CPS数据汇聚和支撑上层解决方案的基础,对外提供资源管控和能力服务
CPS的建设和应用
智能设计
产品及工艺设计
生产线/工厂设计
智能生产
设备管理应用场景
生产管理应用场景
柔性制造应用场景
智能服务
健康管理
智能维护
远程征兆性诊断
协同优化
共享服务
智能应用
无人装备
产业链互动
价值链共赢
2、人工智能AI技术概述
分类
强人工智能:真正能思维的智能机器
弱人工智能
发展历程
关键技术
自然语言处理NLP:
研究实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
机器翻译
语义理解
问答系统
计算机视觉Computer Vision:
让计算机拥有类似人类提取、处理、理解和分析图像的能力
自动驾驶
机器人
智能医疗
知识图谱Knowledge Graph
就是把所有不同种类的信息连接在一起而得到的一个关系网络
搜索引擎
可视化展示
精准营销
人机交互HCI
传统基本交互、图形交互
语音交互
情感交互
体感交互
脑机交互
虚拟现实或增强现实VR/AR
以计算机为核心的新型视听技术
机器学习ML Machine Learning
监督学习:需要提供标注的样本集
自然语言处理
信息检索
文本挖掘
手写体辨识
垃圾邮件侦测
无监督学习:不需要以人工标注数据作为训练样本
经济预测
异常预测
数据挖掘
图像处理
模式识别
半监督学习:需提供少量标注的样本
强化学习:需反馈机制
机器人控制
无人驾驶
工业控制
3、机器人技术概述
发展历程
第一代机器人:示教再现型机器人
第二代:感觉型机器人
第三代:智能型机器人
机器人4.0的核心技术
云-边-端的无缝协同计算
云端:提供高性能计算和知识存储
边缘:进一步处理数据并实现协同和共享
机器人端:只用完成实时操作的功能
持续学习与协同学习
知识图谱
场景自适应
数据安全
机器人的分类
按要求的控制方式分类
操作机器人
程序机器人
示教再现机器人
智能机器人
综合机器人
按应用行业
工业机器人
服务机器人
特殊领域机器人
4、边缘计算概述 (边缘计算更适用局部性、实时、短周期数据的处理与分析,更好的支撑本地业务的实时智能化决策与执行)
概念:将数据的处理、应用程序的运行由网络中心下放到网络边缘的节点上
边缘计算的特点
联接性:边缘计算的基础
数据第一入口
约束性
分布性
边云协同: (边缘计算+云计算)
资源协同
数据协同
智能协同
应用管理协同
业务管理协同
服务协同
边缘计算的安全
提供可信的基础设施
为边缘应用提供可信赖的安全服务
保障安全的设备接入和协议转换
提供安全可信的网络及覆盖
边缘计算应用场景
智慧园区
安卓云与云游戏
视频监控
工业物联网
Cloud VR
5、数字孪生体(Digital Twin)技术概述 (跨层级、跨尺度的现实世界和虚拟世界建立沟通的桥梁)
数字孪生体发展历程
1960-21世纪初:技术准备期。主要指CAD/CAE建模仿真、传统系统工程等预先技术的准备
2002-2010年:概念产生期。仿真驱动的设计、基于模型的系统工程等先进设计范式
2010-2020年:领先应用期。主要指航天、军工等机构的领先应用
2020-2030年:深度开发和大规模扩展应用期。
数字孪生体的定义:
将物理实体对象的数字模型,通过实测、仿真、数据分析来实时感知、诊断、预防物理实体的状态,通过优化和指令来调控物理实体对象。
数字孪生体的关键技术
建模
仿真
基于数据融合的数字线程
数字孪生体的应用
制造
产品数字化
产业
市场营销、供应链物流、维保服务
城市
在数字空间再造一个城市,作为现实城市的映射和镜像
战场
6、云计算和大数据技术概述
云计算技术 (云计算擅长全局性、非实时、长周期的大数据处理与分析。在长周期维护、业务决策支撑等领域发挥优势)
概念
平台:基础设施
应用:所需的计算和存储通常在云端完成
服务方式
软件即服务SaaS(Software as a Service) (最方便)
服务提供商将应用软件统一部署在云计算平台上,按照客户所订购的软件数量、时长来收费。通过浏览器提供服务
平台即服务PaaS(Platform as a Service)
服务提供商将分布式开发环境与平台作为一种服务来提供。客户在提供的平台基础上定制开发自己的应用程序
基础设施即服务IaaS(Intrastructure as a Service) (最灵活)
服务提供商将内存、I/O设备、存储和计算能力等整合成一个虚拟的资源池,为客户提供所需要的存储资源、虚拟化服务器等。
部署模式
公有云
社区云
私有云
混合云
发展历程
虚拟化技术的历史
分布式计算技术的发展
软件应用模式的发展
大数据技术
大数据的特征
大规模Volume
多样化Variety
高速度Velocity
价值Value
大数据分析的分析步骤
数据获取和记录:研究数据压缩科学问题
信息抽取、清洗、注记
数据集成、聚集、展示
数据建模、数据分析
数据解释
应用领域
制造业的应用:计算机辅助设计CAD、计算机辅助制造CAM、数控机床等
服务业的应用:eg:个性化广告与定制信息推送、银行发现信用卡盗用等
交通行业的应用:最佳出行方式和路线
医疗行业的应用:报告电子化、影像电子化等