系统架构设计
2024-11-10 21:39:24 0 举报
AI智能生成
软考系统架构设计知识架构梳理
作者其他创作
大纲/内容
第一章 绪论
1.1 系统架构概述
一、系统架构的定义及发展历程
系统架构的定义
系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理,它是刻画系统整体抽象结构的一种手段。架构设计优劣决定了系统的健壮性和生命周期的长短。
系统架构设计的作用
解决相对复杂的需求分析问题;
解决非功能属性在系统占据重要位置的设计问题;
解决生命周期长、扩展性需求高的系统整体结构问题;
解决系统基于组件需要的集成问题;
解决业务流程再造难的问题。
系统架构发展历程
基础研究阶段(1968-1994)
概念体系和核心技术形成阶段(1999-2000年)
理论体系完善与发展阶段(1996年至今)
普及应用阶段(2000年至今)
二、软件架构的常用分类及建模方法
软件架构的常用分类
分层架构
事件驱动架构
微核架构(插件架构)
微微服架构
云架构
系统架构的常用建模方法
结构模型
框架模型
动态模型
过程模型
1.2 系统架构设计师概述
一、架构设计师的定义、职责和任务
架构师的定义
架构设计师是负责系统架构的人、团队或组织。
架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件和接口进行总体设计并澄清关键技术细节的高级技术人员。
架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件和接口进行总体设计并澄清关键技术细节的高级技术人员。
架构设计师的职责
架构设计师的职责应该是技术领导,这意味着架构设计师除了拥
有专门技能外,还必须拥有领导能力。
工作职责是在软件项目开发过程中,将客户的需求转换为规范的
开发计划,并制定这个项目的总体架构,指导整个开发团队完成
这个计划。主导系统全局分析设计与实施、负责软件架构和关键
技术决策。架构设计师应能迅速抓住问题要害,并做出合理的关
键决定,具备战略性和前瞻性思维能力,善于把握全局,能够在
更高抽象级别上进行思考。
有专门技能外,还必须拥有领导能力。
工作职责是在软件项目开发过程中,将客户的需求转换为规范的
开发计划,并制定这个项目的总体架构,指导整个开发团队完成
这个计划。主导系统全局分析设计与实施、负责软件架构和关键
技术决策。架构设计师应能迅速抓住问题要害,并做出合理的关
键决定,具备战略性和前瞻性思维能力,善于把握全局,能够在
更高抽象级别上进行思考。
架构设计师的任务与组成
(1)领导与协调整个项目中的技术活动(分析、设计和实施等)
(2)推动主要的技术决策并最终表达为系统架构。
(3)确定系统架构,并促使其架构设计的文档化,这里的文档化应
包括需求、设计、实施和部署等"视图"。
从技术角度看,架构设计师的职责就是抽象设计、非功能设计和
关键技术设计等三大任务
(2)推动主要的技术决策并最终表达为系统架构。
(3)确定系统架构,并促使其架构设计的文档化,这里的文档化应
包括需求、设计、实施和部署等"视图"。
从技术角度看,架构设计师的职责就是抽象设计、非功能设计和
关键技术设计等三大任务
二、架构设计师应具备的专业素质
1.掌握业务领域的知识
2.掌握技术知识(不必是技术专家,不用掌握技术细节)
3.掌握设计技能
4.具备编程技能
5.具备沟通能力
6.具备决策能力
7.知道组织策略
8.应该是谈判专家
2.掌握技术知识(不必是技术专家,不用掌握技术细节)
3.掌握设计技能
4.具备编程技能
5.具备沟通能力
6.具备决策能力
7.知道组织策略
8.应该是谈判专家
1.3 如何成为一名好的系统架构设计师
一、如何衡量一名优秀架构设计师
作为领导者
作为开发者
作为系统综合者
具备企业家思维
具备良好的沟通能力
具备战略技术专家的权衡思维与战术思维
作为开发者
作为系统综合者
具备企业家思维
具备良好的沟通能力
具备战略技术专家的权衡思维与战术思维
二、从工程师到系统架构设计师的演化
1.工程师阶段:1-3年,在别人指导下完成开发。
2.高级工程师阶段:3-5年,能够独立完成开发。
3.技术专家阶段:4-8年,某个领域的专家。
4.系统架构师(初级):5-8年,独立完成一个系统的架构设计。
5.系统架构师(中级):8-10年,能够完成复杂系统的架构设计。
6.系统架构师(高级):10年以上,创造新的架构模式。
2.高级工程师阶段:3-5年,能够独立完成开发。
3.技术专家阶段:4-8年,某个领域的专家。
4.系统架构师(初级):5-8年,独立完成一个系统的架构设计。
5.系统架构师(中级):8-10年,能够完成复杂系统的架构设计。
6.系统架构师(高级):10年以上,创造新的架构模式。
第二章 计算机系统基础知识
2.1 计算机系统概述
计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。它是按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。
2.2 计算机硬件
一、计算机硬件组成
处理器、存储器、总线、接口和外部设备
二、处理器
三、存储
四、总线
五、接口
六、外部设备
2.3 计算机软件概述
一、计算机软件概述
软件系统是指在计算机硬件系统上运行的程序、相关的文档资料
和数据的集合。计算机软件用来扩充计算机系统的功能,提高计
算机系统的效率。
和数据的集合。计算机软件用来扩充计算机系统的功能,提高计
算机系统的效率。
计算机软件分类
系统软件包括:操作系统、程序设计语言翻译系统、
中间件、数据库管理系统和网络软件等。
中间件、数据库管理系统和网络软件等。
应用软件是指为某类应用需要或解决某个特定问题而设计的软
件,如图形图像处理软件、财务软件等。
件,如图形图像处理软件、财务软件等。
二、操作系统
进程前趋图
三、数据库
四、文件系统
五、中件件(Middleware)
中间件,作为应用软件与各种操作系统之间使用的标准化编程接
口和协议,起承上启下的作用,使应用软件的开发相对独立于计
算机硬件和操作系统,并能在不同的系统上运行,实现相同的应
用功能。
口和协议,起承上启下的作用,使应用软件的开发相对独立于计
算机硬件和操作系统,并能在不同的系统上运行,实现相同的应
用功能。
常见的中间件
(1)消息中间件
(2)事务处理(交易)中间件
(3)数据存取管理中间件
(4)Web服务器中间件
(5)安全中间件
(6)跨平台和架构的中间件
(7)专用中间件
(8)网络中间件
(2)事务处理(交易)中间件
(3)数据存取管理中间件
(4)Web服务器中间件
(5)安全中间件
(6)跨平台和架构的中间件
(7)专用中间件
(8)网络中间件
六、软件构件(组件)
七、应用软件
2.4 嵌入式系统及软件
2.5 计算机网络
一、网络的基本概念
网络有关指标
性能指标
速率
带宽
吞吐量
时延
往返时间(RTT)
利用率
非性能指标
(1)费用
(2)质量
(3)标准化
(4)可靠性
(5)可扩展性和可升级性
(6)易管理和维护性
(2)质量
(3)标准化
(4)可靠性
(5)可扩展性和可升级性
(6)易管理和维护性
二、通信技术
香农公式
C代表信道容量,单位是b/s
B代表信号带宽,单位是Hz
S代表信号平均功率,单位是W
N代表噪声平均功率,单位是W
S/N代表信噪比,单位是dB(分贝)
B代表信号带宽,单位是Hz
S代表信号平均功率,单位是W
N代表噪声平均功率,单位是W
S/N代表信噪比,单位是dB(分贝)
复用技术和多址技术
三、网络技术
局域网(LAN)
无线局域网(WLAN)
城域网(MAN)
广域网(WAN)
移动通信网
四、组网技术
网络设备及其工作层级
网络协议
开放系统互连模型OSI
TCP/IP协议集
五、网络工程
2.6 计算机语言
一、计算机语言的分类
机器语言
汇编语言
高级语言
二、建模语言
UML 组成要素
基本构造块
运用于整个语言的公用机制
图
UML中的图
类图
对象图
用例图
序列图
通信图
状态图
活动图
构件图
部署图
组合结构图
包图
交互概览图
计时图
2.7 多媒体
二、多媒体系统的关键技术
视音频技术
数据压缩技术
虚拟现实(VR)/增强现实(AR)技术
2.8 系统工程
二、系统工程方法
霍尔的三维结构
切克兰德方法
并行工程方法
综合集成法
WSR系统方法
三、系统工程的生命周期
生命周期阶段
1)探索性研究阶段
2)概念阶段
3)开发阶段
4)生产阶段
5)使用阶段
6)保障阶段
7)退役阶段
2)概念阶段
3)开发阶段
4)生产阶段
5)使用阶段
6)保障阶段
7)退役阶段
生命周期方法
1)计划驱动方法
2)渐进迭代式开发
3)精益开发
4)敏捷开发
2)渐进迭代式开发
3)精益开发
4)敏捷开发
2.9 系统性能
一、性能指标
二、性能计算
三、性能设计
四、性能评估
第三章 信息系统基础知识
3.1信息系统概述
一、信息系统的定义
信息系统是由计算机硬件、网络和通信设备、计算机软件、信息
资源、信息用户和规章制度组成的以处理信息流为目的的人机一
体化系统。
资源、信息用户和规章制度组成的以处理信息流为目的的人机一
体化系统。
二、信息系统的分类
1.业务(处理)系统(TPS)
2.管理信息系统(MIS)
3.决策支持系统(DSS)
4.专家系统(ES)
5.办公自动化系统(OAS)
6.综合性信息系统
2.管理信息系统(MIS)
3.决策支持系统(DSS)
4.专家系统(ES)
5.办公自动化系统(OAS)
6.综合性信息系统
三、信息系统的生命周期
产生阶段
概念的产生过程
需求分析过程
开发阶段
总体规划
系统分析
系统设计
系统实施
系统验收
运行阶段
改正性维护
适应性维护
完善性维护
预防性维护
消亡阶段
四、信息系统开发方法
1.结构化方法
2.原型法
3.面向对象方法
4.面向服务的方法
2.原型法
3.面向对象方法
4.面向服务的方法
3.2业务处理系统(TPS)
一、业务处理系统的概念
业务处理系统(TPS),是针对管理中具体的事务(如财会、销售、
库存等)来辅助管理人员将所发生的数据进行记录、传票、记账、
统计和分类,并制成报表等活动,为经营决策提供有效信息的基
于计算机的信息系统。
库存等)来辅助管理人员将所发生的数据进行记录、传票、记账、
统计和分类,并制成报表等活动,为经营决策提供有效信息的基
于计算机的信息系统。
二、业务处理系统的功能
对企业管理中日常事务发生的数据进行输入、处理和输出。
3.3管理信息系统(MIS)
一、管理信息系统的概念
管理信息系统(MIS)是由业务处理系统发展而成的,是在TPS基础
上引进大量管理方法对企业整体信息进行处理,并利用信息进行
预测、控制、计划、帮助企业全面管理的信息系统。MIS是一个
高度集成化的人机信息系统。
上引进大量管理方法对企业整体信息进行处理,并利用信息进行
预测、控制、计划、帮助企业全面管理的信息系统。MIS是一个
高度集成化的人机信息系统。
3.4决策支持系统(DSS)
一、决策支持系统的概念
决策支持系统(DSS)是一个由语言系统、知识系统和问题处理系统
三个互相关联的部分组成的,基于计算机的系统。
三个互相关联的部分组成的,基于计算机的系统。
决策支持系统的结构
3.5专家系统(ES)
一、专家系统的概念
专家系统(ES)是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,它能够应用人工智能技术和计算机技术,根据系统中的知识与经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题。简而言之,专家系统是一种模拟人类专家解决领域问题的计算机程序系统。
二、专家系统的组成
专家系统组成三要素
描述问题状态的综合数据库
存放启发式经验知识的知识库
对知识库的知识进行推理的推理机
3.6办公自动化系统(OAS)
一、办公自动化的概念
办公自动化就是以先进的科学技术为基础,利用有关办公自动化
设备协助办公人员管理各项办公信息,主要利用资源以提高办公
效率和办公质量。
设备协助办公人员管理各项办公信息,主要利用资源以提高办公
效率和办公质量。
二、办公自动化系统的功能
1.事务处理
单机系统,包括:文字处理、日程安排、文档管理、电子报表、数据处理。
多机系统,包括:电子会议、电子邮件、语音处理、图形图像处理,联机情报检索。
多机系统,包括:电子会议、电子邮件、语音处理、图形图像处理,联机情报检索。
2.信息管理
对信息流的控制管理,包括信息的收集、加工、传递、交流、存取、提供、分析、判断、应用和反馈,中层管理人员完成。
3.辅助决策
根据预定目标做出行动决定,由企业高层及其“智囊团”(专业人员) 来完成。
3.7企业资源规划(ERP)
一、企业资源规划的概念
针对物资资源管理(物流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的企业管理软件。
3.8典型信息系统架构模型
1.电子政务的概念
电子政务是利用信息技术和其相关技术,将政府管理和服务职能进行集成,在网络上实现政府组织结构和工作流程优化重组,超越时间、空间与部门分隔的制约,实现公务、政务、商务、事务的一体化管理与运行。
电子政务的模式
(1) G2G (政府对政府)
(2) G2B (政府对企业)
(3) G2C (政府对公民)
(4) G2E (政府对公务员)
(2) G2B (政府对企业)
(3) G2C (政府对公民)
(4) G2E (政府对公务员)
电子商务
(1) B2B (企业对企业)
(2) B2C (企业对个人)
(3) C2C (个人对个人)
(4) O2O (线上到线下)
(2) B2C (企业对个人)
(3) C2C (个人对个人)
(4) O2O (线上到线下)
第四章 信息安全技术基础知识
4.1 信息安全基础知识
一、信息安全的概念
基本要素
机密性
完整性
可用性
可控性
可审查性
信息安全的范围
设备安全
数据安全
内容安全
行为安全
二、信息存储安全
信息使用的安全(如用户的标识与验证、用户存取权限限制、安全问题跟踪等)
系统安全监控
计算机病毒防治
数据的加密和防止非法的攻击
三、网络安全
4.2 信息系统安全的作用与意义
4.3 信息安全系统的组成框架
一、技术体系
二、组织机构体系
三、管理体系
4.4 信息加解密技术
一、数据加密
对称密钥技术
非对称密钥技术
4.5 密钥管理技术
一、对称密钥的分配与管理
密钥分配一般要解决两个问题
一是引进自动分配密钥机制,以提高系统的效率;
二是尽可能减少系统中驻留的密钥量
.对称密钥的分配
两个用户A和B在获得共享密钥时有4种方式:
(1)经过A选取的密钥通过物理手段发送给另一方B。
(2)由第三方选取密钥,通过物理手段分别发送给A和B。
(3)A、B 事先已有一个密钥,其中一方选取新密钥后,用已有密
钥加密该新密钥后发送给另一方。
(4)三方A、B、C各有一保密信道,C 选取密钥后,分别通过A、B
各自的保密信道发送。
(1)经过A选取的密钥通过物理手段发送给另一方B。
(2)由第三方选取密钥,通过物理手段分别发送给A和B。
(3)A、B 事先已有一个密钥,其中一方选取新密钥后,用已有密
钥加密该新密钥后发送给另一方。
(4)三方A、B、C各有一保密信道,C 选取密钥后,分别通过A、B
各自的保密信道发送。
二、公钥(非对称密钥)加密体制的密钥管理
1.公开发布
2.公用目录表
3.公钥管理机构
4.公钥证书
4.6 访问控制及数字签名技术
一、访问控制技术
1.访问控制的基本模型
主体(Subject)
客体(Object)
控制策略
2.访问控制的实现技术
1)访问控制矩阵
2)访问控制表
3)能力表
4)授权关系表
2)访问控制表
3)能力表
4)授权关系表
二、数字签名
4.7 信息安全的抗攻击技术
一、密钥的选择
二、拒绝服务攻击与防御
三、欺骗攻击与防御
1.ARP欺骗
2.DNS欺骗
3.IP欺骗
4.端口扫描
5.强化TCP/IP堆栈以抵御拒绝服务攻击
6.系统漏洞扫描
4.8 信息安全的保障体系与评估方法
一、计算机信息系统安全保护等级
二、安全风险管理
第五章 软件工程基础知识
5.1 软件工程
软件的生命周期
从需求分析、软件设计、软件开发、运行维护,直至被淘汰
开发模型
瀑布模型
优点
(1)为项目提供了按阶段划分的检查点。
(2)当前一阶段完成后,只需要去关注后续阶段。
(3)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
(2)当前一阶段完成后,只需要去关注后续阶段。
(3)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
缺点
(1)各个阶段之间产生大量的文档,极大地增加了工作量。
(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
(3)不适应用户需求的变化,并且在需求分析阶段不可能完全获取。
(4)在软件开发前期未发现的错误传到后面的开发活动中时,可能会扩散,进而可能会导致整个软件项目开发失败。
(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
(3)不适应用户需求的变化,并且在需求分析阶段不可能完全获取。
(4)在软件开发前期未发现的错误传到后面的开发活动中时,可能会扩散,进而可能会导致整个软件项目开发失败。
适用场景
需求明确或很少变更的项目
原型化模型
原型法成败的关键及效率的高低,在于模型的建立及建模的速度。
适用场景
用户需求不明确的场合
螺旋模型
喷泉模型
智能模型
增量模型
迭代模型
适用场景
项目事先不能完整定义产品所有需求、计划多期开发的软件开发
构件组装模型
V模型
快速应用开发模型
快速应用开发模型的流程
业务建模
数据建模
过程建模
应用生成
测试与交付
数据建模
过程建模
应用生成
测试与交付
敏捷方法
敏捷开发更强调程序员团队与业务专家之间的紧密协作、面对面沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重人的作用。
敏捷开发方法
极限编程(XP)
自适应软件开发
水晶方法
特性驱动开发
自适应软件开发
水晶方法
特性驱动开发
统一过程(UP)
是一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。
UP是基于构件的,软件系统建模时,UP使用的是UML。
UP是基于构件的,软件系统建模时,UP使用的是UML。
特点
用例驱动
以体系结构为中心
迭代和增量
以体系结构为中心
迭代和增量
评估模型
CMM(能力成熟度模型)
CMMI(软件能力成熟度模型集成)
(1)初始级
(2)已管理级
(3)严格定义级
(4)定量管理级
(5)优化级
(2)已管理级
(3)严格定义级
(4)定量管理级
(5)优化级
5.2 需求工程
需求工程是包括创建和维护系统需求文档所必需的一切活动的过程,可分为需求开发和需求管理两大工作。
需求开发
需求获取
需求分析
编写规格说明书(需求定义)
需求验证
需求管理
定义需求基线
处理需求变更
需求跟踪
一、需求开发概述
需求开发主要确定开发软件的功能、性能、数据和界面等要求。
1.需求的分类
功能需求
是指系统必须完成的工作,即为了向它的用户提供有用的功能,产品必须执行的动作。
非功能需求
是指产品必须具备的性能或品质,例如,可靠性、容错性等。
设计约束
也称为限制条件、补充规约,通常是对解决方案的一些约束说明。
2.三个处于不同层面下的需求概念
业务需求
是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求。
用户需求
是指描述用户使用产品必须要完成什么任务以及怎么完成的需求,是从具体用户角度考虑的需求。
系统需求
是从系统的角度来说明软件的需求,它包括了用特性说明的功能需求,质量属性及其他非功能需求,还有设计约束等。
二、需求获取
(1)用户访谈
(2)用户调查
(3)现场观摩
(4)阅读历史文档
(5)联合讨论会
(2)用户调查
(3)现场观摩
(4)阅读历史文档
(5)联合讨论会
三、需求分析
(1)结构化分析方法。
(2)面向对象分析方法。
(3)面向问题域的分析(PDOA)方法。
(2)面向对象分析方法。
(3)面向问题域的分析(PDOA)方法。
四、需求定义
需求定义方法
严格定义方法
严格定义(预先定义)是目前采用较多的一种需求定义方法。
原型方法
原型化的需求定义过程是一个开发人员与用户通力合作的反复过程。
软件需求说明书
是什么
软件需求说明书(SRS)是需求开发阶段的成果
是所有子系列项目规划、设计和编码的基础。
是软件项目后期开发和维护的基础。
是系统测试和用户文档的基础。
不包括
设计、构造、测试或工程管理的细节
对算法的详细过程描述
五、需求管理
需求跟踪分为正向跟踪和逆向跟踪,合称为“双向跟踪”
需求跟踪矩阵
需求跟踪矩阵保存了需求与后续工作成果的对应关系,通过需求跟踪矩阵可以跟踪一个需求使用期限的全过程,即从需求源到实现的前后生存期。
5.3 系统分析与设计
定义
系统分析的任务
系统分析的基本任务是在充分了解用户需求的基础上,把对新系统的理解表达为系统需求规格说明书。
系统设计
系统设计的目标是根据系统分析的结果,完成系统的构建过程。
其主要目的是绘制系统的蓝图,权衡和比较各种技术和实施方法的利弊,合理分配各种资源,构建新系统的详细设计方案和相关模型,指导系统实施工作的顺利开展。
其主要目的是绘制系统的蓝图,权衡和比较各种技术和实施方法的利弊,合理分配各种资源,构建新系统的详细设计方案和相关模型,指导系统实施工作的顺利开展。
一、结构化方法
针对软件生存周期的不同阶段
结构化分析(SA)
数据流图(DFD)
(1)数据流(Data Flow)
(2)加工(处理)
(3)数据存储
(4)外部实体
数据字典(DD)
(1)数据结构
(2)数据项
(3)数据流
(4)数据存储
(5)处理过程
结构化设计(SD)
1)概要设计
2)详细设计
3)模块结构
(1)内聚
(2)耦合
(3)信息隐藏与抽象
4)系统结构图
结构化编程(SP)
数据库设计
需求分析
概念结构设计
逻辑结构设计
物理设计
数据库的实施
数据库的运行和维护
概念结构设计
逻辑结构设计
物理设计
数据库的实施
数据库的运行和维护
二、面向对象方法
OOA(面向对象分析)
5个层次
主题层、对象类层、结构层、属性层和服务层
5个活动
标识对象类、标识结构、定义主题、定义属性和定义服务
两种对象类之间的结构
分类结构:就是一般与特殊的关系
组装结构:反映了对象之间的整体与部分的关系
1)OOA原则
(1)抽象
(2)封装
(3)继承
(4)多态(polymorphism)
(5)分类
(6)聚合
(7)关联
(8)消息通信
(9)粒度控制
(10)行为分析
OOD(面向对象设计)
1)实体类
2)控制类
3)边界类
OOP(面向对象编程)
5.4 软件测试
一、测试的类型
1.动态测试
黑盒测试法
白盒测试法
灰盒测试法
2.静态测试
桌前检查(Desk Checking)
代码审查
代码走查
二、测试的阶段
单元测试
集成测试
确认测试
(1) 内部确认测试:由软件开发组织内部按软件需求说明书进行测试。
(2) Alpha测试:由用户在开发环境下进行测试。
(3) Beta测试:由用户在实际使用环境下进行测试。
(4) 验收测试:针对软件需求说明书,在交付前以用户为主进行测试。
(2) Alpha测试:由用户在开发环境下进行测试。
(3) Beta测试:由用户在实际使用环境下进行测试。
(4) 验收测试:针对软件需求说明书,在交付前以用户为主进行测试。
系统测试
功能测试
健壮性测试
性能测试
用户界面测试
安全性测试
安装与反安装测试
健壮性测试
性能测试
用户界面测试
安全性测试
安装与反安装测试
三、性能测试
性能测试的类型
(1)负载测试:指数据在超负荷环境中运行,程序是否能够承担。
(2)强度测试:在系统资源特别低的情况下考查软件系统运行情况。
(3)容量测试:确定系统可处理的同时在线的最大用户数。
(2)强度测试:在系统资源特别低的情况下考查软件系统运行情况。
(3)容量测试:确定系统可处理的同时在线的最大用户数。
性能测试的目的
(1)评估系统的能力
(2)识别体系中的弱点
(3)系统调优
(4)检测软件中的问题
(5)验证稳定性和可靠性
(2)识别体系中的弱点
(3)系统调优
(4)检测软件中的问题
(5)验证稳定性和可靠性
四、测试自动化
(1)提高测试执行的速度
(2)提高运行效率
(3)保证测试结果的准确性。
(4)连续运行测试脚本。
(5)模拟现实环境下受约束的情况。
(2)提高运行效率
(3)保证测试结果的准确性。
(4)连续运行测试脚本。
(5)模拟现实环境下受约束的情况。
5.5 净室软件工程(CSE)
净室软件工程CSE是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术
5.6 基于构件的软件工程(CBSE)
一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。
一、构件和构件模型
(1)可组装
(2)可部署
(3)文档化
(4)独立性
(5)标准化
二、CBSE过程
(1)系统需求概览
(2)识别候选构件
(3)根据发现的构件修改需求
(4)体系结构设计
(5)构件定制与适配
(6)组装构件创建系统
(2)识别候选构件
(3)根据发现的构件修改需求
(4)体系结构设计
(5)构件定制与适配
(6)组装构件创建系统
三、构件组装
1.顺序组装
2.层次组装
3.叠加组装
5.7 软件项目管理
一、项目管理概述
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process) 和项目(Project) 进行分析和管理的活动。
二、进度管理(时间管理)
主任活动过程
1. 活动定义
2. 活动排序
3. 活动资源估算
4. 活动历时估算
5. 制定进度计划
6. 进度控制
1.工作分解结构(WBS)
2.工作分解的基本要求(原则)
(1)WBS的工作包是可控和可管理的,不能过于复杂。
(2)任务分解也不能过细,一般原则WBS的树形结构不超过6层。
(3)每个工作包要有一个交付成果。
(4)每个任务必须有明确定义的完成标准。
(5)WBS必须有利于责任分配。
(2)任务分解也不能过细,一般原则WBS的树形结构不超过6层。
(3)每个工作包要有一个交付成果。
(4)每个任务必须有明确定义的完成标准。
(5)WBS必须有利于责任分配。
3.任务活动图
1)前导图法
前导图法(PDM)也称为单代号网络图法(AON),使用方框或者长方形(被称作节点)代表活动,用箭头连接表示它们之间逻辑关系。
2)箭线图法
箭线图法(ADM)也称为双代号网络图法(AOA) ,用箭线表示工作,节点表示工作的逻辑关系。
三、软件配置管理(SCM)
1.配置库
(1)开发库
(2)受控库
(3)产品库
(2)受控库
(3)产品库
2.变更控制
第六章 数据库设计基础知识
6.1 数据库基本概念
一、基本概念
数据
是数据库中存储的基本对象,是描述事物的符号记录。
数据库
数据库是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。
数据库管理系统
DBMS 是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。它是一种解决如何科学地组织和储存数据如何高效地获取和维护数据的系统软件。
DDL
DML
数据库的运行管理
数据库的建立与维护
数据库系统
由数据库及其管理软件组成的系统。
二、数据模型
数据模型三要素
数据结构
数据操作
数据的约束条件
常见的基本数据模型
层次模型
网状模型
关系模型
面向对象的数据模型
三、数据库管理系统
四、数据库的三级模式
模式(概念模式、、逻辑模式)
一个数据库只有一个模式
外模式(子模式、用户模式)
用途
保证数据库安全性的一个有力措施
每个用户只能看见和访问所对应的外模式中的数据
内模式(存储模式)
一个数据库只有一个内模式
五、三个级别
概念级数据库,对应模式
用户级数据库,对应外模式
物理级数据库,对应内模式
六、两级独立性
物理独立性
逻辑独立性
6.2 关系数据库
一、关系数据库的基本概念
完整性约束
实体完整性
参照完整性
用户自定义完整性
二、常用的关系操作
并
差
交
笛卡儿积
三、关系运算
四、函数依赖
部分函数依赖
完全函数依赖
传递函数依赖
五、规范化理论
常见的存储异常问题
数据冗余
修改异常
插入异常
删除异常
六、范式
三范式(3NF)
BC范式(BCNF)
6.3 数据库设计
一、数据库设计的基本步骤(阶段)
需求分析
概念结构设计
概念结构设计的目标是产生反映系统信息需求的数据库概念结构,即概念模式。
E-R模型
实体
属性
实体之间的联系
逻辑结构设计
逻辑结构设计就是在概念结构设计的基础上进行数据模型设计,可以是层次模型、网状模型和关系模型
步骤
确定数据模型
将E-R图转换成为指定的数据模型
确定完整性约束
确定用户视图
物理结构设计
物理结构设计就是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
步骤
确定数据分布
存储结构
访问方式
数据库实施
数据库运行和维护
6.4 应用程序与数据库的交互
应用系统中,用户不能直接访问后台的数据库,需要高级程序语
言来完成与用户之间的交互,因此数据库管理系统需要提供程序
级别的接口来访问数据。
言来完成与用户之间的交互,因此数据库管理系统需要提供程序
级别的接口来访问数据。
常见的对接方式
库函数
嵌入式SQL
通用数据接口标准,如ODBC、JDBC、DAO、RDO、ADO等
对象关系映射(ORM)
6.5 NoSQL数据库(非关系型数据库)
NoSQL数据库的分类与特点
子主题
文档存储
子主题
键值存储
产品:亚马逊的Memcached、Redis、 Dynamo、
Project Voldemort、Tokyo Tyrant、Riak、 Scalaries 等。
Project Voldemort、Tokyo Tyrant、Riak、 Scalaries 等。
列存储
HBase
图存储
子主题
其他存储
多值数据库
常见的多值数据库有Rocket U2、Extensible Storage Engin(ESE/NT)、 OpenInsight 和OpenQM等
时间序列与流数据库
常见的时间序列数据库:InfluxDB、OpenTSDB。
网格和云数据库
主流数据库产品:GridGain和CrateDB。
第七章 系统架构设计基础知识
7.1 软件架构概念
一、软件架构的定义
软件架构是保证软件质量的根本措施
包括该系统的各个构件,构件的外部可见属性及构件之间的相互关系
二、软件架构设计与生命周期
三、软件架构的作用
架构设计能满足系统的品质
架构设计使受益人达成一致的目标
架构设计能够支持计划编制过程
架构设计对系统开发的指导性
架构设计能有效地管理复杂性
架构设计为复用奠定基础
架构设计能够降低维护费用
架构设计能够支持冲突分析
7.2 基于架构的软件开发方法
一、体系结构的设计方法(ABSD)概述
二、概念与术语
三、基于体系结构的开发模型
7.3 软件架构风格
一、架构风格概述
数据流风格
批处理体系结构风格
管道-过虑器体系结构风格
调用/返回风格
面向对象风格
主程序/子程序风格
层次型体系结构风格
客户端/服务器体系结构风格
独立构件风格
进程通信体系结构风格
事件系统体系结构风格
虚拟机风格
解释器体系结构风格
规则系统体系结构风格
仓库风格
7.4 软件架构复用
一、软件架构复用的定义及分类
机会复用
开发过程中,只要发现有可复用的资产,就对其进行复用
系统复用
开发之前,就要进行规划,以决定哪些需要复用
二、软件架构复用的原因
降本增效,提高生产力
三、软件架构复用的基本过程
1.构造/获取可复用的软件资产
2.管理可复用资产
3.使用可复用的资产
7.5 特定领域软件体系结构
一、特定领域软件架构DSSA
垂直域
水平域
基本活动
领域分析
领域设计
领域实现
两个过程
领域工程
为一组相近或相似的应用建立基本能力与必备基础的过程,它覆盖了建立可重用软件元素的所有活动。
应用工程
通过重用软件资源,以领域通用体系结构为框架,开发出满足用户需求的一系列应用软件的过程
第八章 系统质量属性与架构评估
8.1 软件系统质量属性
一、质量属性概念
子主题
子主题
二、面向架构评估的质量属性
质量属性
1.性能
2.可靠性
3.可用性
4.安全性
5.可修改性
6.功能性
7.可变性
8.互操作性
三、质量属性场景描述
为了精确描述软件系统的质量属性,通常采用质量属性场景作为描述质量属性的手段。
组成部分
子主题
8.2 系统架构评估
一、系统架构评估的评估方法
1.基于调查问卷或检查表的方式
2.基于场景的方式
3.基于度量的方式
二、系统架构评估中的重要概念
1. 敏感点(Sensitivity Point)和权衡点 (Tradeoff Point)。
2. 风险承担者 (Stakeholders)
3. 场景
三、系统架构评估方法
1.SAAM方法
SAAM 分析评估架构的过程包括5 个步骤,即场景开发、架构描
述、单个场景评估、场景交互和总体评估。
述、单个场景评估、场景交互和总体评估。
2.架构权衡分析方法(ATAM)
是评价软件构架的一种综合全面的方法。
主要针对性能、可用性、安全性和可修改性,在系统开发之前,
可以使用ATAM方法在多个质量属性之间进行评价和折中
主要针对性能、可用性、安全性和可修改性,在系统开发之前,
可以使用ATAM方法在多个质量属性之间进行评价和折中
子主题
3.成本效益分析法 (CBAM)
成本效益分析法 (CBAM)是在ATAM上构建,用来对架构设计决策
的成本和收益进行建模,是优化此类决策的一种手段。CBAM 的
思想就是架构策略影响系统的质量属性,反过来这些质量属性又
会为系统的项目干系人带来一些收益(称为效用),CBAM 协助项
目干系人根据其投资回报(ROI)选择架构策略。
的成本和收益进行建模,是优化此类决策的一种手段。CBAM 的
思想就是架构策略影响系统的质量属性,反过来这些质量属性又
会为系统的项目干系人带来一些收益(称为效用),CBAM 协助项
目干系人根据其投资回报(ROI)选择架构策略。
8.3 ATAM方法架构评估实践
子主题
第九章 软件可靠性基础知识
9.1 软件可靠性基本概念
一、软件可靠性定义
软件可靠性(Software Reliability)是软件产品在规定的条件下和规
定的时间区间完成规定功能的能力。
定的时间区间完成规定功能的能力。
二、软件可靠性的定量描述
1.规定时间
自然时间
运行时间
执行时间
2.失效概率
F(t) 单位时间内失效的元件数与元件总数的比例
3.可靠度
软件系统在规定的条件下、规定的时间内不发生失效的概率。
可靠度的公式为R(t)=1-F(t)
4.失效强度
单位时间软件系统出现失效的概率
5.平均失效前时间
系统平均失效前时间 (MTTF)也叫平均失效等待时间,定义为从0
时到故障发生时系统的持续运行时间的期望值
时到故障发生时系统的持续运行时间的期望值
6.平均恢复前时间
平均恢复前时间(MTTR)也叫平均故障修复时间,是从出现故障到
修复成功中间的这段时间,它包括确认失效发生所必需的时间,
记录所有任务的时间,还有将设备重新投入使用的时间。
修复成功中间的这段时间,它包括确认失效发生所必需的时间,
记录所有任务的时间,还有将设备重新投入使用的时间。
7.平均故障间隔时间MTBF
子主题
MTBF= MTTR+ MTTF 实际MTTR很小,所以MTBF≈MTTF。
三、可靠性目标
失效严重程度类就是对用户具有相同程度影响的失效集合
失效严重程度分级标准
按成本的影响
子主题
对系统能力的影响
子主题
四、可靠性测试
广义
广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运
用建模、统计、试验、分析和评价等一系列手段对软件系统实施
的一种测试
用建模、统计、试验、分析和评价等一系列手段对软件系统实施
的一种测试
子主题
狭义(软件可靠性试验)
(1)发现软件系统在需求、设计、编码、测试和实施等方面的缺陷。
(2)为软件的使用和维护提供可靠性数据。
(3)确认软件是否达到可靠性的定量要求。
(2)为软件的使用和维护提供可靠性数据。
(3)确认软件是否达到可靠性的定量要求。
9.2 软件可靠性建模
一、影响软件可靠性的因素
(1)运行剖面(环境)
(2)软件规模
(3)软件内部结构
(4)软件的开发方法和开发环境
(5)软件的可靠性投入
二、软件可靠性模型分类
⚫ 种子法模型
⚫ 失效率类模型
⚫ 曲线拟合类模型
⚫ 可靠性增长模型
⚫ 程序结构分析模型
⚫ 输入域分类模型
⚫ 执行路径分析方法模型
⚫ 非齐次泊松过程模型
⚫ 马尔可夫过程模型
⚫ 贝叶斯分析模型
⚫ 失效率类模型
⚫ 曲线拟合类模型
⚫ 可靠性增长模型
⚫ 程序结构分析模型
⚫ 输入域分类模型
⚫ 执行路径分析方法模型
⚫ 非齐次泊松过程模型
⚫ 马尔可夫过程模型
⚫ 贝叶斯分析模型
9.3 软件可靠性管理
软件可靠性管理是软件工程管理的一部分,它以全面提高和保证
软件可靠性为目标,以软件可靠性活动为主要对象,是把现代管
理理论用于软件生命周期中的可靠性保障活动的一种管理形式。
软件可靠性活动是贯穿于软件开发全过程
9.4 软件可靠性设计
原则
(1)软件可靠性设计是软件设计的一部分,必须在软件的总体设计
框架中使用,并且不能与其他设计原则相冲突。
(2)软件可靠性设计在满足提高软件质量要求的前提下,以提高和
保障软件可靠性为最终目标。
(3)软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,
并且排在功能度、用户需求和开发费用之后考虑。
框架中使用,并且不能与其他设计原则相冲突。
(2)软件可靠性设计在满足提高软件质量要求的前提下,以提高和
保障软件可靠性为最终目标。
(3)软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,
并且排在功能度、用户需求和开发费用之后考虑。
技术
一、容错设计技术
1.恢复块设计
2.N版本程序设计
3.冗余设计
二、检错设计技术
检错技术,在软件出现故障后能及时发现并报警,提醒维护人员
进行处理。
进行处理。
三、降低复杂度设计技术
降低复杂度设计的思想就是在保证实现软件功能的基础上,简化
软件结构,缩短程序代码度,优化软件数据流向,降低软件复杂
度,从而提高软件可靠性。
软件结构,缩短程序代码度,优化软件数据流向,降低软件复杂
度,从而提高软件可靠性。
软件复杂性
模块复杂性
模块复杂性主要包含模块内部数据流向和程序长度两个方面。
结构复杂性
结构复杂性用不同模块之间的关联程度来表示
四、系统配置技术
1.双机热备技术
⚫ 双机热备模式(Active/Standby)
⚫ 双机互备模式
⚫ 双机双工模式(实现负载均衡)
⚫ 双机互备模式
⚫ 双机双工模式(实现负载均衡)
2.服务器集群技术
9.5 软件可靠性测试
一、软件可靠性测试概述
软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用
例的设计、测试实施、测试结果的分析等活动组成
例的设计、测试实施、测试结果的分析等活动组成
二、定义软件运行剖面
定义运行剖面首先需要为软件的使用行为建模,然后是开发使用
模型,明确需要测试的内容。
模型,明确需要测试的内容。
三、可靠性测试用例设计
⚫ 测试用例标识
⚫ 被测对象
⚫ 测试环境及条件
⚫ 测试输入
⚫ 操作步骤
⚫ 预期输出
⚫ 判断输出结果是否符合标准
⚫ 测试对象的特殊需求
⚫ 被测对象
⚫ 测试环境及条件
⚫ 测试输入
⚫ 操作步骤
⚫ 预期输出
⚫ 判断输出结果是否符合标准
⚫ 测试对象的特殊需求
四、可靠性测试的实施
测试报告应包括以下内容:
⚫ 软件产品标识
⚫ 测试环境配置(硬件和软件)
⚫ 测试依据
⚫ 测试结果
⚫ 测试问题
⚫ 测试时间
⚫ 软件产品标识
⚫ 测试环境配置(硬件和软件)
⚫ 测试依据
⚫ 测试结果
⚫ 测试问题
⚫ 测试时间
9.6 软件可靠性评价
一、软件可靠性评价概述
1.选择可靠性模型
2.收集可靠性数据
3.可靠性评估和预测
2.收集可靠性数据
3.可靠性评估和预测
软件可靠性评价工作是指选用或建立合适的可靠性数学模型,运
用统计技术和其他手段,对软件可靠性测试和系统运行期间收集
的软件失效数据进行处理,并评估和预测软件可靠性的过程。
用统计技术和其他手段,对软件可靠性测试和系统运行期间收集
的软件失效数据进行处理,并评估和预测软件可靠性的过程。
二、选择可靠性模型
1.模型假设的适用性
2.预测的能力与质量
3.模型输出值能否满足可靠性评价需求
4.模型使用的简便性
2.预测的能力与质量
3.模型输出值能否满足可靠性评价需求
4.模型使用的简便性
三、收集可靠性数据
主要是测试来源数据
也需要需求、设计、开发阶段的可靠性活动数据,可靠性数据的收集工作是贯穿于整个软件生命周期的
四、可靠性评估和预测
软件可靠性的评估和预测的主要目的,是为了评估软件系统的可
靠性状况和预测将来一段时间的可靠性水平。
靠性状况和预测将来一段时间的可靠性水平。
评估软件工具支撑
软件可靠性评估和预测以软件可靠性模型分析为主,但也要在模
型之外运用一些统计技术和手段对可靠性数据进行分析,作为可
靠性模型的补充、完善和修正
型之外运用一些统计技术和手段对可靠性数据进行分析,作为可
靠性模型的补充、完善和修正
第十章 软件架构的演化和维护
10.1 软件架构的演化和定义的关系
软件架构演化
人们通常说软件架构是演化来的,而不是设计来的。
演化过程涵盖软件架
构的全生命周期,包括软件架构需求的获取、软件架构建模、软
件架构文档、软件架构实现以及软件架构维护等阶段
构的全生命周期,包括软件架构需求的获取、软件架构建模、软
件架构文档、软件架构实现以及软件架构维护等阶段
软件架构定义
软件架构定义是SA={组件,连接件,约束}
组件
组件是软件架构的基本要素和结构单元,表示系统中主要的计
算元素、数据存储以及一些重要模块,当需要消除软件架构存
在的缺陷、新增功能、适应新的环境时都涉及组件的演化。组
件的演化体现在组件中模块的增加、删除或修改。
算元素、数据存储以及一些重要模块,当需要消除软件架构存
在的缺陷、新增功能、适应新的环境时都涉及组件的演化。组
件的演化体现在组件中模块的增加、删除或修改。
连接件
连接件是组件间的交互关系,多数情况下组件的演化牵涉到连接件
的演化。连接件的演化体现在组件交互消息的增加、删除或改变。
的演化。连接件的演化体现在组件交互消息的增加、删除或改变。
约束
约束是组件和连接件之间的拓扑关系和配置,它为组件和连接件
提供额外数据支撑,可以是架构的约束数据,或架构的参数
10.2 面向对象软件架构演化过程
10.3 软件架构演化方式的分类
分类方法
按照软件架构的实现方式和实施粒度分类
基于过程和函数的演化
面向对象的演化
基于组件的演化
基于架构的演化
按照研究方法将软件架构演化方式分为4类
第1类是对演化的支持,如代码模块化的准则、可维护性的支持(如内聚和耦合)、代码重构等
第2类是版本和工程的管理工具,如CVS 和COCOMO
第3类是架构变换的形式方法,包括系统结构和行为变换的模型,以及架构演化的重现风格等
第4类是架构演化的成本收益分析决定如何增加系统的弹性
针对软件架构的演化过程是否处于系统运行时期
静态演化发生在软件架构的设计、实现和维护过程中,软件系
统还未运行或者处在运行停止状态。
动态演化发生在软件系统运行过程中
一、软件架构演化时期
1.设计时演化
2.运行前演化
3.有限制运行时演化
4.运行时演化
二、软件架构静态演化
1.静态演化需求
(1)设计时演化需求。
(2)运行前演化需求。
2.静态演化的一般过程
软件静态演化是系统停止运行期间的修改和更新,即一般意义上
的软件修复和升级。与此时相对应的维护方法有三类:更正性维
护、适应性维护、完善性维护
的软件修复和升级。与此时相对应的维护方法有三类:更正性维
护、适应性维护、完善性维护
三、软件架构动态演化
动态演化是在系统运行期间的演化,在不停止系统功能的情况下
完成演化,较之静态演化更加困难。具体发生在有限制的运行时
演化和运行时演化阶段。
完成演化,较之静态演化更加困难。具体发生在有限制的运行时
演化和运行时演化阶段。
1.动态演化的类型
1)软件动态性的等级
⚫ 交互动态性,要求数据在固定的结构下动态交互。
⚫ 结构动态性,允许对结构进行修改,通常形式是组件和连接件实例的添加和删除,这种动态性是研究和应用的主流。
⚫ 架构动态性,允许软件架构的基本构造变动,即结构可以被重定义,如新的组件类型的定义。
⚫ 结构动态性,允许对结构进行修改,通常形式是组件和连接件实例的添加和删除,这种动态性是研究和应用的主流。
⚫ 架构动态性,允许软件架构的基本构造变动,即结构可以被重定义,如新的组件类型的定义。
2)动态演化的内容
属性改名
行为变化
拓扑结构改变
架构风格变化
10.4 软件架构演化原则
一、架构演化原则
1.演化成本控制原则
⚫ 原则名称:演化成本控制 (ECC)原则。
⚫ 原则解释:演化成本要控制在预期的范围之内,也就是演化成本要明显小于重新开发成本。
⚫ 原则用途:用于判断架构演化的成本是否在可控范围内,以及用户是否可接受。
⚫ 度量方案:CoE<<CoRD。
⚫ 方案说明:CoE为演化成本,CoRD为重新开发成本,CoE远小于CoRD最佳。
⚫ 原则解释:演化成本要控制在预期的范围之内,也就是演化成本要明显小于重新开发成本。
⚫ 原则用途:用于判断架构演化的成本是否在可控范围内,以及用户是否可接受。
⚫ 度量方案:CoE<<CoRD。
⚫ 方案说明:CoE为演化成本,CoRD为重新开发成本,CoE远小于CoRD最佳。
2.进度可控原则
⚫ 原则名称:进度可控原则。
⚫ 原则解释:架构演化要在预期时间内完成,也就是时间可控。
⚫ 原则用途:根据该原则可以规划每个演化过程的任务量;体现一种迭代、递增(持续演化)的演化思想。
⚫ 度量方案::ttask=|Ttask-T'task|。
⚫ 方案说明:某个演化任务的实际完成时间 (Ttask) 和预期完成时间 (T'task)的时间差ttask越小越好。
⚫ 原则解释:架构演化要在预期时间内完成,也就是时间可控。
⚫ 原则用途:根据该原则可以规划每个演化过程的任务量;体现一种迭代、递增(持续演化)的演化思想。
⚫ 度量方案::ttask=|Ttask-T'task|。
⚫ 方案说明:某个演化任务的实际完成时间 (Ttask) 和预期完成时间 (T'task)的时间差ttask越小越好。
3.风险可控原则
⚫ 原则名称:风险可控原则。
⚫ 原则解释:架构演化过程中的经济风险、时间风险、人力风险、技术风险和环境风险等必须在可控范围内。
⚫ 原则用途:用于判断架构演化过程中各种风险是否易于控制。
⚫ 度量方案:分别检验。
⚫ 方案说明:时间风险、经济风险、人力风险、技术风险都不存在
⚫ 原则解释:架构演化过程中的经济风险、时间风险、人力风险、技术风险和环境风险等必须在可控范围内。
⚫ 原则用途:用于判断架构演化过程中各种风险是否易于控制。
⚫ 度量方案:分别检验。
⚫ 方案说明:时间风险、经济风险、人力风险、技术风险都不存在
4.主体维持原则
⚫ 原则名称:主体维持原则
⚫ 原则解释:对称稳定增长(AIG)原则所有其他因素须与软件演化协调,开发人员、销售人员、用户必须熟悉软件演化的内容,
从而达到令人满意的演化。因此,软件演化的平均增量的增长须保持平稳,保证软件系统主体行为稳定。
⚫ 原则用途:用于判断架构演化是否导致系统主体行为不稳定。
⚫ 度量方案:计算AIG即可,AIG=主体规模的变更量/主体的规模。
⚫ 方案说明:根据度量动态变更信息(类型、总量、范围 高级项目经理 ) 来计算
⚫ 原则解释:对称稳定增长(AIG)原则所有其他因素须与软件演化协调,开发人员、销售人员、用户必须熟悉软件演化的内容,
从而达到令人满意的演化。因此,软件演化的平均增量的增长须保持平稳,保证软件系统主体行为稳定。
⚫ 原则用途:用于判断架构演化是否导致系统主体行为不稳定。
⚫ 度量方案:计算AIG即可,AIG=主体规模的变更量/主体的规模。
⚫ 方案说明:根据度量动态变更信息(类型、总量、范围 高级项目经理 ) 来计算
5.系统总体结构优化原则
⚫ 原则名称:系统总体结构优化原则。
⚫ 原则解释:架构演化要遵循系统总体结构优化原则,使得演化之后的软件系统整体结构(布局)更加合理。
⚫ 原则用途:用于判断系统整体结构是否合理,是否最优。
⚫ 度量方案:检查系统的整体可靠性和性能指标。
⚫ 方案说明:判断整体结构优劣的主要指标是系统的可靠性和性能。
⚫ 原则解释:架构演化要遵循系统总体结构优化原则,使得演化之后的软件系统整体结构(布局)更加合理。
⚫ 原则用途:用于判断系统整体结构是否合理,是否最优。
⚫ 度量方案:检查系统的整体可靠性和性能指标。
⚫ 方案说明:判断整体结构优劣的主要指标是系统的可靠性和性能。
6.平滑演化原则
⚫ 原则名称:平滑演化(IWR)原则
⚫ 原则解释:在软件系统的生命周期里,软件的演化速率趋于稳
定,如相邻版本的更新率相对固定。
⚫ 原则用途:用于判断是否存在剧烈架构演化。
⚫ 度量方案:计算IWR即可,IWR=变更总量/项目规模。
⚫ 方案说明:根据度量动态变更信息 (类型、总量、范围等) 来
计算
7.目标一致原则
⚫ 原则名称:目标一致原则
⚫ 原则解释:架构演化的阶段目标和最终目标要一致。
⚫ 原则用途:用于判断每个演化过程是否达到阶段目标,所有演
化过程结束是否能达到最终目标。
⚫ 度量方案:otask=|Otask-O'task|。 ⚫ 方案说明:阶段目标的实际达成情况 (Otask) 和预期目标
(O'task)的差otask越小越好。
⚫ 原则解释:架构演化的阶段目标和最终目标要一致。
⚫ 原则用途:用于判断每个演化过程是否达到阶段目标,所有演
化过程结束是否能达到最终目标。
⚫ 度量方案:otask=|Otask-O'task|。 ⚫ 方案说明:阶段目标的实际达成情况 (Otask) 和预期目标
(O'task)的差otask越小越好。
8.模块独立演化原则
⚫ 原则名称:模块独立演化原则,或修改局部化原则。
⚫ 原则解释:软件中各模块(相同制品的模块,如Java的某个类或
包)自身的演化最好相互独立,或者至少保证对其他模块的影
响比较小或影响范围比较小。
⚫ 原则用途:用于判断每个模块自身的演化是否相互独立。
⚫ 度量方案:检查模块的修改是否是局部的。
⚫ 方案说明:可以通过计算修改的影响范围来进行度量。
⚫ 原则解释:软件中各模块(相同制品的模块,如Java的某个类或
包)自身的演化最好相互独立,或者至少保证对其他模块的影
响比较小或影响范围比较小。
⚫ 原则用途:用于判断每个模块自身的演化是否相互独立。
⚫ 度量方案:检查模块的修改是否是局部的。
⚫ 方案说明:可以通过计算修改的影响范围来进行度量。
9.影响可控原则
⚫ 原则名称:影响可控原则。
⚫ 原则解释:软件中一个模块如果发生变更,其给其他模块带来
的影响要在可控范围内也就是影响范围可预测。
⚫ 原则用途:用于判断是否存在对某个模块的修改导致大量其他
修改的情况。
⚫ 度量方案:检查影响的范围是否可控。
⚫ 方案说明:通过计算修改的影响范围来进行度量。
⚫ 原则解释:软件中一个模块如果发生变更,其给其他模块带来
的影响要在可控范围内也就是影响范围可预测。
⚫ 原则用途:用于判断是否存在对某个模块的修改导致大量其他
修改的情况。
⚫ 度量方案:检查影响的范围是否可控。
⚫ 方案说明:通过计算修改的影响范围来进行度量。
10.复杂性可控原则
⚫ 原则名称:复杂性可控(CC)原则。
⚫ 原则解释:架构演化必须要控制架构的复杂性,从而进一步保
障软件的复杂性在可控范围内。
⚫ 原则用途:用于判断演化之后的架构是否易维护、易扩展、易
分析、易测试等。
⚫ 度量方案:CC小于某个阈值。
⚫ 方案说明:CC增长可控。
⚫ 原则解释:架构演化必须要控制架构的复杂性,从而进一步保
障软件的复杂性在可控范围内。
⚫ 原则用途:用于判断演化之后的架构是否易维护、易扩展、易
分析、易测试等。
⚫ 度量方案:CC小于某个阈值。
⚫ 方案说明:CC增长可控。
11.有利于重构原则
⚫ 原则名称:有利于重构原则。
⚫ 原则解释:架构演化要遵循有利于重构原则,使得演化之后的
软件架构更方便重构。
⚫ 原则用途:用于判断架构易重构性是否得到提高。
⚫ 度量方案:检查系统的复杂度指标。
⚫ 方案说明:系统越复杂越不容易重构
⚫ 原则解释:架构演化要遵循有利于重构原则,使得演化之后的
软件架构更方便重构。
⚫ 原则用途:用于判断架构易重构性是否得到提高。
⚫ 度量方案:检查系统的复杂度指标。
⚫ 方案说明:系统越复杂越不容易重构
12.有利于重用原则
⚫ 原则名称:有利于重用原则。
⚫ 原则解释:架构演化最好能维持,甚至提高整体架构的可重用
性。
⚫ 原则用途:用于判断整体架构可重用性是否遭到破坏。
⚫ 度量方案:检查模块自身的内聚度、模块之间的耦合度。
⚫ 方案说明:模块的内聚度越高,该模块与其他模块之间的耦合
度越低,越容易重用。
13.设计原则遵从性原则
⚫ 原则名称:设计原则遵从性原则。
⚫ 原则解释:架构演化最好不能与架构设计原则冲突。
⚫ 原则用途:用于判断架构设计原则是否遭到破坏(架构设计原
则是好的设计经验总结,要保障其得到充分使用)。 ⚫ 度量方案:RCP=|CDP| / |DP|。 ⚫ 方案说明:冲突的设计原则集合 (CDP) 和总的设计原则集合
(DP)的比较,RCP越小越好。
14.适应新技术原则
⚫ 原则名称:适应新技术(TI) 原则。
⚫ 原则解释:软件要独立于特定的技术手段,这样才能够让软件
运行于不同平台。
⚫ 原则用途:用于判断架构演化是否存在对某种技术依赖过强的
情况。
⚫ 度量方案:TI=1-DDT,DDT=|依赖的技术集合|/|用到的技术合集|。 ⚫ 方案说明:根据演化系统对关键技术的依赖程度进行度量
⚫ 原则解释:软件要独立于特定的技术手段,这样才能够让软件
运行于不同平台。
⚫ 原则用途:用于判断架构演化是否存在对某种技术依赖过强的
情况。
⚫ 度量方案:TI=1-DDT,DDT=|依赖的技术集合|/|用到的技术合集|。 ⚫ 方案说明:根据演化系统对关键技术的依赖程度进行度量
15.环境适应性原则
⚫ 原则名称:环境适应性原则。
⚫ 原则解释:架构演化后的软件版本能够比较容易适应新的硬件
环境与软件环境。
⚫ 原则用途:用于判断架构在不同环境下是否仍然可使用,或者
容易进行环境配置。
⚫ 度量方案:硬件/软件兼容性。
⚫ 方案说明:结合软件质量中兼容性指标进行度量
⚫ 原则解释:架构演化后的软件版本能够比较容易适应新的硬件
环境与软件环境。
⚫ 原则用途:用于判断架构在不同环境下是否仍然可使用,或者
容易进行环境配置。
⚫ 度量方案:硬件/软件兼容性。
⚫ 方案说明:结合软件质量中兼容性指标进行度量
16.标准依从性原则
⚫ 原则名称:标准依从性原则。
⚫ 原则解释:架构演化不会违背相关质量标准(国际标准、国家
标准、行业标准、企业标准等)。 ⚫ 原则用途:用于判断架构演化是否具有规范性,是否有章可循;
而不是胡乱或随意地演化。
⚫ 度量方案:需要人工判定
⚫ 原则解释:架构演化不会违背相关质量标准(国际标准、国家
标准、行业标准、企业标准等)。 ⚫ 原则用途:用于判断架构演化是否具有规范性,是否有章可循;
而不是胡乱或随意地演化。
⚫ 度量方案:需要人工判定
17.质量向好原则
⚫ 原则名称:质量向好(QI)原则。
⚫ 原则解释:通过演化使得所关注的某个质量指标或某些质量指
标的综合效果变得更好或者更满意,例如可靠性提高了。
⚫ 原则用途:用于判断架构演化是否导致某些质量指标变得很差。
⚫ 度量方案:EQI>SQ。 ⚫ 方案说明:演化之后的质量(EQI) 比原来的质量(SQ) 要好。
⚫ 原则解释:通过演化使得所关注的某个质量指标或某些质量指
标的综合效果变得更好或者更满意,例如可靠性提高了。
⚫ 原则用途:用于判断架构演化是否导致某些质量指标变得很差。
⚫ 度量方案:EQI>SQ。 ⚫ 方案说明:演化之后的质量(EQI) 比原来的质量(SQ) 要好。
18.适应新需求原则
⚫ 原则名称:适应新需求原则。
⚫ 原则解释:架构演化要容易适应新的需求变更;架构演化不能
降低原有架构适应新需求的能力;架构演化最好可以提高适应
新需求的能力。
⚫ 原则用途:用于判断演化之后的架构是否降低了架构适应新需
求的能力。
⚫ 度量方案:RNR=|ANR|/|NR|。 ⚫ 方案说明:适应的新需求集合 (ANR) 和实际新需求集合 (NR)的
比较,RNR越小越好
⚫ 原则解释:架构演化要容易适应新的需求变更;架构演化不能
降低原有架构适应新需求的能力;架构演化最好可以提高适应
新需求的能力。
⚫ 原则用途:用于判断演化之后的架构是否降低了架构适应新需
求的能力。
⚫ 度量方案:RNR=|ANR|/|NR|。 ⚫ 方案说明:适应的新需求集合 (ANR) 和实际新需求集合 (NR)的
比较,RNR越小越好
10.5 软件架构演化评估方法
一、演化过程已知的评估
1.评估流程
通过对演化前后的不同版本的架构分别进行度量,得到度量结果的差值及其变化趋势,并计算架构间质量属性距离,进而对相关质量属性进行评估
2.架构演化中间版本度量
对于可靠性,度量结果是一个实数值
对于可维护性,它包含圈复杂度、扇入扇出度、模块间耦合度、模块的响应、紧内聚度、松内聚度等 6个子度量指标
二、演化过程未知的评估
演化过程未知时,我们无法像演化过程已知时那样追踪架构在演
化过程中的每一步变化,只能根据架构演化前后的度量结果逆向
推测出架构发生了哪些改变,并分析这些改变与架构相关质量属
性的关联关系。
化过程中的每一步变化,只能根据架构演化前后的度量结果逆向
推测出架构发生了哪些改变,并分析这些改变与架构相关质量属
性的关联关系。
10.6 大型网站系统架构演化实例
一、第一阶段: 单体架构
小型网站最开始没有太多人访问,只需要一台服务器就绰绰有余,
这时网站的应用程序、数据库、文件等所有资源都在一台服务器
上。
这时网站的应用程序、数据库、文件等所有资源都在一台服务器
上。
二、第二阶段: 垂直架构
将应用和数据分离,整个网站使用 3 台服务器的:应用服务器、
文件服务器和数据库服务器。
文件服务器和数据库服务器。
三、第三阶段: 使用缓存改善网站性能
把经常访问的小部分数据缓存在内存中,可以减少数据库的访问
压力,提高整个网站的数据访问速度,改善数据库的写入性能。
压力,提高整个网站的数据访问速度,改善数据库的写入性能。
四、第四阶段: 使用服务集群改善网站并发处理能力
通过增加服务器的方式改善负载压力、提高系统性能,从而实现
系统的可伸缩性。应用服务器集群是网站可伸缩架构设计中较为
简单成熟的一种。
系统的可伸缩性。应用服务器集群是网站可伸缩架构设计中较为
简单成熟的一种。
五、第五阶段: 数据库读写分离
六、第六阶段: 使用反向代理和 CDN 加速网站响应
随着网站业务不断发展,用户规模越来越大,由于区域的差别使
得网络环境异常复杂,不同地区的用户访问网站时,速度差别也
极大。为了更好的用户体验,网站需要加速网站访问速度。主要
手段有使用CDN 和反向代理。CDN和反向代理的基本原理都是缓存。
得网络环境异常复杂,不同地区的用户访问网站时,速度差别也
极大。为了更好的用户体验,网站需要加速网站访问速度。主要
手段有使用CDN 和反向代理。CDN和反向代理的基本原理都是缓存。
七、第七阶段: 使用分布式文件系统和分布式数据库系统
任何强大的单一服务器都满足不了大型网站持续增长的业务需求。
数据库经过读写分离后,一台服务器拆分成两台服务器,但是随
着网站业务的发展依然不能满足需求,这时需要使用分布式数据
库。
数据库经过读写分离后,一台服务器拆分成两台服务器,但是随
着网站业务的发展依然不能满足需求,这时需要使用分布式数据
库。
八、第八阶段: 使用NoSQL和搜索引擎
随着网站业务越来越复杂,对数据存储和检索的需求也越来越复
杂,网站需要采用一些非关系数据库技术,如 NoSQL 和非数据库
查询技术如搜索引擎
杂,网站需要采用一些非关系数据库技术,如 NoSQL 和非数据库
查询技术如搜索引擎
九、第九阶段: 业务拆分
大型网站为了应对日益复杂的业务场景,通过使用分而治之的手
段将整个网站业务分成不同的产品线。如电商网站都会将首页、
商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业
务团队负责。具体到技术上,也会根据产品线划分,将一个网站
拆分成许多不同的应用,每个应用独立部署。应用之间可以通过
一个超链接建立关系,也可以通过消息队列进行数据分发,当然
最多的还是通过访问同一个数据存储系统来构成一个完整系统。
段将整个网站业务分成不同的产品线。如电商网站都会将首页、
商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业
务团队负责。具体到技术上,也会根据产品线划分,将一个网站
拆分成许多不同的应用,每个应用独立部署。应用之间可以通过
一个超链接建立关系,也可以通过消息队列进行数据分发,当然
最多的还是通过访问同一个数据存储系统来构成一个完整系统。
十、第十阶段: 分布式服务
随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体
复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和
所有数据库系统连接,在数万台服务器规模的网站中,这些连接
的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服
务。既然每一个应用系统都需要执行许多相同的业务操作,比如
用户管理、商品管理等,那么可以将这些共用的业务提取出来,
独立部署。由这些可复用的业务连接数据库,提供共用业务服务,
而应用系统只需要管理用户界面,通过分布式服务调用共用业务
服务完成具体业务操作。
复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和
所有数据库系统连接,在数万台服务器规模的网站中,这些连接
的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服
务。既然每一个应用系统都需要执行许多相同的业务操作,比如
用户管理、商品管理等,那么可以将这些共用的业务提取出来,
独立部署。由这些可复用的业务连接数据库,提供共用业务服务,
而应用系统只需要管理用户界面,通过分布式服务调用共用业务
服务完成具体业务操作。
10.7 软件架构维护
一、软件架构知识管理
1.架构知识的定义
架构知识= 架构设计 + 架构设计决策
2.架构知识管理的含义
二、软件架构修改管理
在软件架构修改管理中,一个主要的做法就是建立一个隔离区域,
保障该区域中任何修改对其他部分的影响比较小,甚至没有影响。
为此,需要明确修改规则、修改类型,以及可能的影响范围和副
作用等。
保障该区域中任何修改对其他部分的影响比较小,甚至没有影响。
为此,需要明确修改规则、修改类型,以及可能的影响范围和副
作用等。
三、软件架构版本管理
四、软件架构可维护性度量实践
度量指标
1.圈复杂度(CCN)
由于在组件图中组件是独立的,每个组件代表一个系统或子系统
中的封装单位,封装了完整的事务处理行为,组件图能够通过组
件之间的控制依赖关系来体现整个系统的组成结构。
中的封装单位,封装了完整的事务处理行为,组件图能够通过组
件之间的控制依赖关系来体现整个系统的组成结构。
2.扇入扇出度(FFC)
扇入是指直接调用该模块的上级模块的个数,扇出指该模块直接
调用的下级模块的个数。
调用的下级模块的个数。
3.模块间耦合度(CBO)
模块间耦合度CBO度量模块与其他模块交互的频繁程度。
4.模块的响应(RFC)
RFC度量组件执行所需的功能的数量,包括接口提供的功能、依
赖的其他模块提供的功能以及子模块提供的功能。
赖的其他模块提供的功能以及子模块提供的功能。
5.紧内聚度TCC
好的架构设计应该遵循"高内聚-低耦合"原则
内聚度是模块内部各成份之间的联系紧密程度,联系越紧其内聚度越大
6.松内聚度LCC
第十一章 未来信息综合技术
11.1 信息物理系统技术概述
一、信息物理系统(Cyber-Physical Systems,CPS)的概念
CPS的技术体系分为四大核心技术要素:
⚫ "一硬"(感知和自动控制),是CPS实现的硬件支撑;
⚫ "一软"(工业软件),固化了 CPS计算和数据流程的规则,是 CPS的核心;
⚫ "一网"(工业网络),互连互通和数据传输的网络载体;
⚫ "一平台"(工业云和智能服务平台),CPS 数据汇聚和支撑上层解决方案的基础,对外提供资源管控和能力服务。
⚫ "一硬"(感知和自动控制),是CPS实现的硬件支撑;
⚫ "一软"(工业软件),固化了 CPS计算和数据流程的规则,是 CPS的核心;
⚫ "一网"(工业网络),互连互通和数据传输的网络载体;
⚫ "一平台"(工业云和智能服务平台),CPS 数据汇聚和支撑上层解决方案的基础,对外提供资源管控和能力服务。
11.2 人工智能技术概述
一、人工智能的概念
根据人工智能是否能真正实现推理、思考和解决问题,可以将人工智能分为弱人工智能和强人工智能
1.弱人工智能
2.强人工智能
二、人工智能关键技术
1.自然语言处理(NLP)
2.计算机视觉(Computer Vision )
3.知识图谱(Knowledge Graph)
4.人机交互(Human-Computer Interaction,HCI)
5.虚拟现实或增强现实(Virtual Reality /Augmented Reality,VR/AR)
6.机器学习(Machine Learning,ML)
11.3 机器人技术概述
一、机器人的定义
(1)具有脑、手、脚等三要素的个体;
(2)具有非接触传感器(用眼、耳接收远方信息) 和接触传感器;
(3)具有平衡觉和固有觉的传感器。
(2)具有非接触传感器(用眼、耳接收远方信息) 和接触传感器;
(3)具有平衡觉和固有觉的传感器。
二、机器人4.0的核心技术
⚫ 云-边-端的无缝协同计算
⚫ 持续学习与协同学习
⚫ 知识图谱
⚫ 场景自适应
⚫ 数据安全
⚫ 持续学习与协同学习
⚫ 知识图谱
⚫ 场景自适应
⚫ 数据安全
三、机器人的分类
⚫ 操作机器人
⚫ 程序机器人
⚫ 示教再现机器人
⚫ 智能机器人
⚫ 综合机器人
⚫ 程序机器人
⚫ 示教再现机器人
⚫ 智能机器人
⚫ 综合机器人
11.4 边缘计算概述
一、边缘计算的概念
ISO/IEC JTC1/SC38 给出的边缘计算是一种将主要处理和数据存储放在网络边缘节点的分布式计算形式。
二、边缘计算的特点
(1) 联接性
(2) 数据第一入口
(3)约束性
(4)分布性
三、边缘计算的安全
⚫ 提供可信的基础设施
⚫ 为边缘应用提供可信赖的安全服务
⚫ 保障安全的设备接入和协议转换
⚫ 提供安全可信的网络及覆盖
四、边缘计算应用场合
⚫ 智慧园区
⚫ 安卓云与云游戏
⚫ 视频监控
⚫ 工业物联网
⚫ Cloud VR
⚫ 安卓云与云游戏
⚫ 视频监控
⚫ 工业物联网
⚫ Cloud VR
11.5 数字孪生体技术概述
一、数字孪生体的定义
数字孪生体是现有或将有的物理实体对象的数字模型,通过实测、
仿真和数据分析来实时感知、诊断、预测物理实体对象的状态,
通过优化和指令来调控物理实体对象的行为,通过相关数字模型
间的相互学习来进化自身,同时改进利益相关方在物理实体对象
生命周期内的决策
二、数字孪生体的关键技术
⚫ 建模:是将我们对物理世界的理解进行简化和模型化。
⚫ 仿真:建模和仿真是一对伴生体。建模是模型化我们对物理世
界或问题的理解,仿真就是验证和确认这种理解的正确性和有
效性。所以,数字化模型的仿真技术是创建和运行数字孪生体、
保证数字孪生体与对应物理实体实现有效闭环的核心技术。
界或问题的理解,仿真就是验证和确认这种理解的正确性和有
效性。所以,数字化模型的仿真技术是创建和运行数字孪生体、
保证数字孪生体与对应物理实体实现有效闭环的核心技术。
⚫ 基于数据融合的数字线程:目前 VR、AR 以及 MR 等增强现实
技术、数字线程、系统工程和MBSE、物联网、云计算、雾计
算、边缘计算、大数据技术、机器学习和区块链技术,仍为数
字孪生体构建过程中的内外围核心技术。
技术、数字线程、系统工程和MBSE、物联网、云计算、雾计
算、边缘计算、大数据技术、机器学习和区块链技术,仍为数
字孪生体构建过程中的内外围核心技术。
11.6 云计算和大数据技术概述
一、云计算概念
云计算是分布式计算的一种,指通过网络“云”将巨大的数据计
算处理程序分解成无数个小程序,通过多部服务器组成的系统进
行处理和分析这些小程序,得到结果后返回给用户。
算处理程序分解成无数个小程序,通过多部服务器组成的系统进
行处理和分析这些小程序,得到结果后返回给用户。
二、云计算的服务方式
⚫ 软件即服务 (Software as a Service)
⚫ 平台即服务 (Platformas a Service,PaaS)
⚫ 基础设施即服务 (Infrastructure as a Service,IaaS)
⚫ 平台即服务 (Platformas a Service,PaaS)
⚫ 基础设施即服务 (Infrastructure as a Service,IaaS)
三、云计算的部署方式
⚫ 公有云:指第三方提供商为用户提供的能够使用的云,公有云
一般可通过 Internet 使用,是免费或成本低廉的。
⚫ 私有云:为一个客户单独使用而构建的云,因而提供对数据、
安全性和服务质量的最有效控制。
⚫ 社区云:由几个组织共享的云端基础设施,它们支持特定的社
群,有共同的关切事项,例如使命任务、安全需求、策略与法
规遵循考量等。管理者可能是组织本身,也能是第三方。
⚫ 混合云
一般可通过 Internet 使用,是免费或成本低廉的。
⚫ 私有云:为一个客户单独使用而构建的云,因而提供对数据、
安全性和服务质量的最有效控制。
⚫ 社区云:由几个组织共享的云端基础设施,它们支持特定的社
群,有共同的关切事项,例如使命任务、安全需求、策略与法
规遵循考量等。管理者可能是组织本身,也能是第三方。
⚫ 混合云
四、大数据的概念
1.大数据概念
大数据是指其大小或复杂性无法通过现有常用的软件工具,以合
理的成本并在可接受的时限内对其进行捕获、管理和处理的数据
集
理的成本并在可接受的时限内对其进行捕获、管理和处理的数据
集
2.大数据特征(5V)
⚫ 大量(Volume):数据量的大小决定数据的价值和潜在的信息;单位是PB(1024TB)、EB(1024PB)。
⚫ 高速(Velocity) :指获得数据的速度和处理速度。
⚫ 多样性(Variety) :类型繁多,包括各种结构化、半结构化和非结构化的数据;。
⚫ 真实性(Veracity):数据的质量。
⚫ 价值(Value):单位价值密度低,合理运用大数据,以低成本创造高价值。
⚫ 高速(Velocity) :指获得数据的速度和处理速度。
⚫ 多样性(Variety) :类型繁多,包括各种结构化、半结构化和非结构化的数据;。
⚫ 真实性(Veracity):数据的质量。
⚫ 价值(Value):单位价值密度低,合理运用大数据,以低成本创造高价值。
第十二章 信息系统架构设计理论与实践
12.1 信息系统架构基本概念及发展
一、信息系统架构的定义
信息系统架构是该系统的一个(或多个)结构,而结构由软件元素、
元素的外部可见属性及它们之间的关系组成。
元素的外部可见属性及它们之间的关系组成。
12.2 信息系统架构
一、信息系统架构分类
物理结构是指不考虑系统各部分的实际工作与功能结构,只抽
象地考察其硬件系统的空间分布情况。
象地考察其硬件系统的空间分布情况。
集中式
\分布式
逻辑结构是指信息系统各种功能子系统的综合体。
例如工厂的管理信息系统,从管理职能角度划分,包括供应、生
产、销售、人事、财务等主要功能的信息管理子系统
产、销售、人事、财务等主要功能的信息管理子系统
二、信息系统常用的5种架构模型
⚫ 单机应用系统
⚫ 两层/多层C/S
⚫ MVC 结构
⚫ 面向服务的架构SOA
⚫ 企业数据交换总线
三、企业信息系统的总体框架
信息系统的架构(ISA) 模型应该是多维度,分层次、高度集成化的
模型
模型
要在企业中建立一个有效集成的ISA,必须考虑四方面
1.战略系统
⚫ 以计算机为基础的高层决策支持系统
⚫ 企业的战略规划体系
2.业务系统
业务系统是指企业中完成一定业务功能的各部分(物质、能量、信
息和人) 组成的系统。如:生产系统、销售系统、采购系统、人
事系统、会计系统等,每个业务系统由一些业务过程来完成该业
务系统的功能。
息和人) 组成的系统。如:生产系统、销售系统、采购系统、人
事系统、会计系统等,每个业务系统由一些业务过程来完成该业
务系统的功能。
3.应用系统
应用系统即应用软件系统,指信息系统中的应用软件部分。
企业信息系统中的应用软件 (应用系统),一般按完成的功能可包
含:事务处理系统TPS、管理信息系统MIS、决策支持系统DSS、
专家系统ES、办公自动化系统OAS、计算机辅助设计/制造
CAD/CAM等。
含:事务处理系统TPS、管理信息系统MIS、决策支持系统DSS、
专家系统ES、办公自动化系统OAS、计算机辅助设计/制造
CAD/CAM等。
4.企业信息基础设施
⚫ 技术基础设施:由计算机、网络、系统软件、支持性软件、数
据交换协议等组成
据交换协议等组成
⚫ 信息资源设施:由数据与信息本身、数据交换的形式与标准、
信息处理方法等组成。
信息处理方法等组成。
⚫ 管理基础设施:企业中信息系统部门的组织结构、信息资源设施管理人员的分工、企业信息基础设施的管理方法与规章制度等
12.3 信息系统架构设计方法
一、ADM架构开发方法
1.TOGAF概述
TOGAF是一种开放式企业架构标准,它为标准、方法论和企业架
构专业人员之间的沟通提供一致性保障。
构专业人员之间的沟通提供一致性保障。
2.ADM架构开发方法
架构开发方法(ADM)为开发企业架构所需要执行各个步骤以及它
们之间的关系进行详细的定义,同时它也是 TOGAF 规范中最为核
心的内容。
们之间的关系进行详细的定义,同时它也是 TOGAF 规范中最为核
心的内容。
ADM架构开发包括十个阶段
子主题
二、信息化总体架构方法
1.信息化建设生命周期
⚫ 系统规划
⚫ 系统分析
⚫ 系统设计
⚫ 系统实施
⚫ 系统运行和维护
2.信息系统工程总体规划的方法论
⚫ 关键成功因素法(CSF)
⚫ 战略目标集转化法(SST)
⚫ 企业系统规划法(BSP)
⚫ 企业信息分析与集成技术
⚫ 产出/方法分析
⚫ 投资回收法
⚫ 征费法 (chargout)
⚫ 零线预算法
⚫ 阶石法
第十三章 层次式架构设计理论与实践
13.1 层次式体系结构概述
一、层次式体系结构概述
层次式架构也称N层架构模式,分成表现层(展示层)、中间层(业
务层)、数据访问层(持久层) 和数据层。
务层)、数据访问层(持久层) 和数据层。
注意点
(1)要注意污水池反模式
(2)需要考虑的是分层架构可能会让你的应用变得庞大
即使你的表现层和中间层可以独立发布,但它的确会带来一些潜
在的问题,比如:分布模式复杂、健壮性下降、可靠性和性能的
不足,以及代码规模的膨胀等。
在的问题,比如:分布模式复杂、健壮性下降、可靠性和性能的
不足,以及代码规模的膨胀等。
13.2 表现层框架设计
一、表现层设计模式
1.MVC模式
2.MVP模式
3.MVVM模式
二、表现层中UIP设计思想
三、表现层动态生成设计思想
13.3 中间层架构设计
一、业务逻辑层框架
业务逻辑层负责定义业务逻辑(规则、工作流、数据完整性等),
接收来自表示层的数据请求,逻辑判断后,向数据访问层提交请
求,并传递数据访问结果,起着承上启下的作用
接收来自表示层的数据请求,逻辑判断后,向数据访问层提交请
求,并传递数据访问结果,起着承上启下的作用
业务逻辑的内容
⚫ 领域实体:定义了业务中的对象,对象有属性和行为;
⚫ 业务规则:定义了需要完成一个动作,必须满足的条件;
⚫ 数据完整性:某些数据不可少;
⚫ 工作流:业务流程的全部或部分自动化,在此过程中,文档、
信息或任务按照一定的过程规则流转,实现组织成员间的协调
工作以达到业务的整体目标。
⚫ 业务规则:定义了需要完成一个动作,必须满足的条件;
⚫ 数据完整性:某些数据不可少;
⚫ 工作流:业务流程的全部或部分自动化,在此过程中,文档、
信息或任务按照一定的过程规则流转,实现组织成员间的协调
工作以达到业务的整体目标。
13.4 数据访问层设计
一、5种数据访问模式
1.在线访问
2. DataAccess Object
3.Data Transfer Object
4.离线数据模式
5.对象/关系映射(O/R Mapping)
13.5 数据架构规划与设计
一、数据库设计与XML设计融合
XML 文档分为两类
以数据为中心的文档
以文档为中心的文档
XML文档的存储方式有两种
(1)基于文件的存储方式
(2)数据库存储方式
13.6 物联网层次架构设计
一、物联网层次架构
⚫ 应用层
⚫ 网络层
⚫ 感知层
第十四章 云原生架构设计理论与实践
14.1 云原生架构内涵
一、云原生架构定义
云原生架构是基于云原生技术的一组架构原则和
设计模式的集合,旨在将云应用中的非业务代码部分进行最大化
的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、
韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中
断困扰的同时,具备轻量、敏捷、高度自动化的特点。
设计模式的集合,旨在将云应用中的非业务代码部分进行最大化
的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、
韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中
断困扰的同时,具备轻量、敏捷、高度自动化的特点。
开发软件系统,代码包含三部分内容:处理业务逻辑的代码、第三方依赖、处理非功能特性的代码。
这三部分中只有业务代码真正产生业务价值,另外两个部分都只算附属物。软件规模越大、非功能特性要求越复杂,非业务代码开发量越大,复杂度越高,系统迭代会越来越缓慢,成本越来越高。所以,在软件规模较大、功能复杂的情况下又要保证敏捷迭代,就需要将非业务代码尽可能剥离出来,利用可靠的第三方托管服务来提升开发效率和系统质量。云平台提供了丰富的用于处理非功能需求的服务和组件,利用云原生架构充分利用云平台上的各类资源,可以很好的解决这方面的问题
二、云原生架构原则
1.服务化原则
2.弹性原则
3.可观测原则
4.韧性原则
5.所有过程自动化原则
6.零信任原则
7.架构持续演进原则
三、主要架构模式
1.服务化架构模式
服务化架构是云时代构建云原生应用的标准架构模式,要求以应
用模块为颗粒度划分一个软件,以接口契约(例如IDL) 定义彼此业
务关系,以标准协议 (HTTP、gRPC 等)确保彼此的互联通,结合
DDD(领域模型驱动)、TDD(测试驱动开发)、容器化部署提升每个
接口的代码质量和迭代速度。
用模块为颗粒度划分一个软件,以接口契约(例如IDL) 定义彼此业
务关系,以标准协议 (HTTP、gRPC 等)确保彼此的互联通,结合
DDD(领域模型驱动)、TDD(测试驱动开发)、容器化部署提升每个
接口的代码质量和迭代速度。
2.Mesh化架构模式
Mesh 化架构是把中间件框架(如 RPC、缓存、异步消息等)从业务
进程中分离,让中间性SDK 与业务代码进一步解耦,从而使得中
间件升级对业务进程没有影响,其至迁移到另外一个平台的中间
件也对业务透明。
进程中分离,让中间性SDK 与业务代码进一步解耦,从而使得中
间件升级对业务进程没有影响,其至迁移到另外一个平台的中间
件也对业务透明。
3.Serverless 模式
Serverless 将“部署”这个动作从运维中“收走”,使开发者不用
关心应用运行地点、操作系统、网络配置、CPU 性能等,从架构
抽象上看,当业务流量到来/业务事件发生时,云会启动或调度
一个已启动的业务进程进行处理,处理完成后云自动会关闭/调
度业务进程,等待下一次触发,也就是把应用的整个运行都委托
给云
关心应用运行地点、操作系统、网络配置、CPU 性能等,从架构
抽象上看,当业务流量到来/业务事件发生时,云会启动或调度
一个已启动的业务进程进行处理,处理完成后云自动会关闭/调
度业务进程,等待下一次触发,也就是把应用的整个运行都委托
给云
14.2 云原生架构相关技术
一、容器技术
容器作为标准化软件单元,它将应用及其所有依赖项打包,在运
行的时候就不再依赖宿主机上的文件操作系统类型和配置。帮助
开发者跳过设置冗杂的开发环境,不用担心不同环境下的软件运
行的环境配置问题(将应用程序的配置和所有依赖打包成一个镜
像在容器中)。在不同计算环境间快速、可靠地运行。
行的时候就不再依赖宿主机上的文件操作系统类型和配置。帮助
开发者跳过设置冗杂的开发环境,不用担心不同环境下的软件运
行的环境配置问题(将应用程序的配置和所有依赖打包成一个镜
像在容器中)。在不同计算环境间快速、可靠地运行。
1.容器编排
Kubernetes 已经成为容器编排的事实标准,被广泛用于自动部署,
扩展和管理容器化应用,是一个全新的基于容器技术的分布式架
构解决方案。Kubernetes 提供了分布式应用管理的核心能力。
⚫ 资源调度:根据应用请求的CPU、Memory资源量,或者GPU等
设备资源,在集群中选择合适的节点来运行应用。
⚫ 应用部署与管理:支持应用的自动发布与应用的回滚,以及与
应用相关的配置的管理;也可以自动化存储卷的编排,让存储
卷与容器应用的生命周期相关联。
高级项目经理 任铄
edu.51cto.com
⚫ 自动修复:Kubernetes能监测这个集群中所有的宿主机,当宿
主机或者OS出现故障,节点健康检查会自动进行应用迁移;
K8s也支持应用的自愈,极大简化了运维管理的复杂性。
⚫ 服务发现与负载均衡:Service是对一组提供相同功能的Pods的
抽象,并为它们提供一个统一的入口。借助Service,应用可以
方便的实现服务发现与负载均衡,并实现应用的零宕机升级。。
⚫ 弹性伸缩:K8s可以监测业务上所承担的负载,如果这个业务
本身的CPU利用率过高,或者响应时间过长,它可以对这个业
务进行自动扩容。
扩展和管理容器化应用,是一个全新的基于容器技术的分布式架
构解决方案。Kubernetes 提供了分布式应用管理的核心能力。
⚫ 资源调度:根据应用请求的CPU、Memory资源量,或者GPU等
设备资源,在集群中选择合适的节点来运行应用。
⚫ 应用部署与管理:支持应用的自动发布与应用的回滚,以及与
应用相关的配置的管理;也可以自动化存储卷的编排,让存储
卷与容器应用的生命周期相关联。
高级项目经理 任铄
edu.51cto.com
⚫ 自动修复:Kubernetes能监测这个集群中所有的宿主机,当宿
主机或者OS出现故障,节点健康检查会自动进行应用迁移;
K8s也支持应用的自愈,极大简化了运维管理的复杂性。
⚫ 服务发现与负载均衡:Service是对一组提供相同功能的Pods的
抽象,并为它们提供一个统一的入口。借助Service,应用可以
方便的实现服务发现与负载均衡,并实现应用的零宕机升级。。
⚫ 弹性伸缩:K8s可以监测业务上所承担的负载,如果这个业务
本身的CPU利用率过高,或者响应时间过长,它可以对这个业
务进行自动扩容。
二、云原生微服务
三、服务网格
服务网格(Service Mesh)是一个专门处理服务通讯的基础设施层。
第十五章 面向服务架构设计理论与实践
15.1 SOA的相关概念
一、面向服务的架构(SOA)的定义
SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)
通过这些服务之间定义良好的接口和契约联系起来。
二、业务流程与BPEL
BPEL(面向Web 服务的业务流程执行语言),是一种基于XML的用
来描写业务过程的编程语言,被描写的业务过程的每个单一步骤
则由Web服务来实现。
15.2 SOA的参考架构
企业集成的架构划分为6大类
(1)IT 服务管理 (IT Service Management)
(2)业务逻辑服务(Business Logic Service):
(3)连接服务(Connectivity Service):
(4)控制服务(Control Service):
(5)业务创新和优化服务(Business Innovation and OptimizationService)
(6)开发服务(Development Service)
15.3 SOA主要协议和规范
Web 服务
一、UDDI协议
UDDI(统一描述、发现和集成协议)是一种用于描述、发现、集成
Web Service的技术,它是Web Service协议栈的一个重要部分。
Web Service的技术,它是Web Service协议栈的一个重要部分。
二、WSDL规范
WSDL (Web 服务描述语言),是一个用来描述 Web 服务和说明如
何与 Web 服务通信的XML语言。
三、SOAP协议
SOAP(简单对象访问协议)是在分散或分布式的环境中交换信息的
简单协议,是一种轻量的、简单的、基于XML 的协议。
简单协议,是一种轻量的、简单的、基于XML 的协议。
15.4 SOA的设计原则
(1)无状态。
(2)单一实例
(3)明确定义的接口
(4)自包含和模块化
(5)粗粒度
(6)服务之间的松耦合性。
(7)重用能力
(8)互操作性、兼容和策略声明
15.5 SOA的设计模式
一、服务注册表模式
服务注册表(Service Registry)主要在 SOA设计时使用,虽然它们常
常也具有运行时段的功能。
常也具有运行时段的功能。
二、企业服务总线模式
企业服务总线 (ESB),提供一种标准的软件底层架构,各种程序组
件能够以服务单元的方式“插入”到该平台上运行,并且组件之
间能够以标准的消息通信方式来进行交互
件能够以服务单元的方式“插入”到该平台上运行,并且组件之
间能够以标准的消息通信方式来进行交互
核心功能
(1)提供位置透明的消息路由和寻址服务。
(2)提供服务注册和命名的管理功能。
(3)支持多种消息传递范型(如请求/响应、发布/订阅等)。
(4)支持多种可以广泛使用的传输协议。
(5)支持多种数据格式及其相互转换。
(6)提供日志和监控功能。
三、微服务模式
第十六章 嵌入式系统架构设计理念与实践
16.2 嵌入式系统软件架构原理与特征
嵌入式操作系统
iOS
Andriod
嵌入式数据库
SQLite
Berkeley DB
嵌入式中间件
第十七章 通信系统架构设计理论与实践
17.1 通信系统网络架构
一、局域网网络架构
1.单核心架构
2.双核心架构
3.环形架构
4.层次局域网架构
二、广域网网络架构
1.单核心广域网
2.双核心广域网
3.环型广域网
4.半冗余广域网
5.对等子域广域网
6.层次子域广域网
三、网络存储
1.直接附加存储(DAS)
2.网络附加存储(NAS)
3.存储区域网络(SAN)
四、软件定义网络架构SDN
⚫ 应用平面:在网络上运行的应用及服务
⚫ 控制平面:SDN控制器或网络的"大脑"
⚫ 数据平面:交换机和路由器,以及其支撑的物理硬件
17.2 网络构建和设计方法2
一、网络生命周期
一个网络系统从构思开始到最后被淘汰的过程被称为网络系统的
生命周期
生命周期
网络系统的生命周期至少包括网络系统的构思计划、分析和设计、
运行和维护等过程。
运行和维护等过程。
二、网络开发过程
根据五阶段迭代周期的模型,网络开发过程被划分为五个阶段:
⚫ 需求分析
⚫ 现有网络系统分析,即通信规范分析
⚫ 确定网络逻辑结构,即逻辑网络设计
⚫ 确定网络物理结构,即物理网络设计
⚫ 安装和维护
三、网络设计方法
计算机网络设计通常采用自顶向下(Top-Down)的模块化设计方法,
即从网络模型上层开始,直至底层,最终确定各模块,满足应用
需求。
1.层次化网络设计模型
1)接入层
2)分布层
3)核心层
层次化模型的优点
(1)三层结构减轻了内层网络主设备的负载。由于分布层的过滤和
汇聚,使得核心层设备避免了处理大量细节路由信息,降低CPU
开销和网络带宽消耗。
(2)降低了网络成本。按不同层次功能要求选择网络设备,可以降
低不必要的功能投入花费。此外,层次化的模型结构便于网络管
理,降低网络运行维护花费。
(3)简化了设计元素,使设计易于理解。
(4)容易变更层次结构。局部升级不会影响其他部分,扩展方便。
第十八章 安全架构设计理论与实践
安全架构的定义
产品安全架构
安全技术体系架构
审计架构
安全模型
状态机模型
数据库系统的安全设计
第十九章 大数据架构设计理论与实践
19.2 大数据处理系统架构分析
大数据处理系统架构特征
鲁棒性和容错性
低延迟读取和更新能力
横向扩容
通用性
延展性
即席查询能力
最少维护能力
可调试性
19.3 Lambda架构
用于同时处理离线 和实时数据的,可容错的,可扩展的分布式系统
三层
批处理层
加速层
服务层
19.4 Kappa架构
两层
实时层
服务层
第二十章 系统架构设计师论文写作要点
知识产权与法律法规
著作权法
计算机软件保护条例2
其他相关知识
0 条评论
下一页