软考-高级系统架构师
2025-09-13 13:39:13 0 举报
AI智能生成
软考-高级系统架构师考试是一门内容覆盖广泛的高级专业认证考试,旨在评估和认证候选人在系统架构设计、软件开发管理、信息资源规划以及相关技术领域的高级理论知识和实践能力。通过考核高级系统架构师的核心内容,考生将掌握先进的系统设计方法、系统建模技术、性能优化策略和数据安全防护等关键技能。此认证不仅是对个人技术实力的权威证明,也是信息技术行业内专业职位晋升的重要阶梯。通过备考者将获得行业认可的资格证书,极大地提升其在系统架构师领域的职业竞争力。考生应熟稔最新的信息技术趋势,如云计算、大数据、物联网以及人工智能等,以确保在高度竞争的信息化时代中脱颖而出。
作者其他创作
大纲/内容
考点分布
综合
计算机系统基础
计算机组成原理与体系结构:磁盘管理 0-1:0%-1.3%
系统配置与性能评价:基准程序测试、计算机性能优化/性能评价、计算机性能指标 0-2:0%-2.7%
操作系统:概念、前趋图与 PV操作、死锁与银行家算法,段页式存储、页面置换算法、索引文件、位示图 2-5:2.7%-6.7%
嵌入式系统
嵌入式硬件、总线、嵌入式系统、嵌入式操作系统、微内核多核CPU、嵌入式系统开发设计
0-3:0%-4%
0-3:0%-4%
计算机网络
网络技术、TCP/IP 协议簇、网络规划与设计
2-3:2.7%-4%
2-3:2.7%-4%
数据库系统
数据库设计、规范化理论、分布式数据库、关系代数、数据仓库、事务处理
4-5:5.3%-6.7%
4-5:5.3%-6.7%
未来信息技术
大数据、云计算、人工智能等
0-3:0%-4%
0-3:0%-4%
法律法规与标准化
著作权保护期限、著作权法、侵权判定、商标法、商业秘密
3:4%
3:4%
数学与经济管理
数学建模、线性规划、函数曲线
1-2:1.3%-2.7%
1-2:1.3%-2.7%
系统工程与信息系统基础
信息工程概念及方法、信息系统分类、信息系统战略规划电子政务、企业信息化方法、电子商务、企业应用集成
0-6:0%-8%
0-6:0%-8%
软件工程
软件生命周期、信息系统开发方法、开发模型、逆向工程、需求工程、面向对象基础、UML、UML4+1视图、软件设计、设计模式[2]、业务流程设计、软件维护、软件测试、软件过程改进、遗留系统、软件开发环境、范围管理、配置管理、进度管理,
9-21:12%-28%
9-21:12%-28%
项目管理
范围管理、配置管理、进度管理
1-4:1.3%-5.3%
1-4:1.3%-5.3%
软件架构设计
架构4+1视图、构件技术、MVC模式、架构设计阶段、架构设计基本概念、软件架构需求、ABSD、软件架构文档、软件架构风格选择、架构模式、架构评估方法、架构与质量属性、敏感点与风险点、ADL、中间件
19-28:25.3%-37.3%
19-28:25.3%-37.3%
系统可靠性分析与设计
可靠性计算、可靠性分析与设计、可靠性模型
0-3:0%-4%
0-3:0%-4%
系统安全性与保密性设计
安全政策与法律、加密算法、信息摘要与数字签名、数字证书、网络攻击、网络安全协议
3-7:4%-9.3%
3-7:4%-9.3%
专业英语
软件架构风格、软件架构、信息系统设计、DFD
5:6.7%
5:6.7%
案例
需求工程:0-1
软件架构:1-2
数据库:0-2
嵌入式:1
Web应用系统开发:1
其他:0-1
论文
开发方法:较少考到
软件架构:0-2
可靠性与安全性:0-1
数据库:0-1
新技术:0-2
答题技巧
综合
分析试题的技巧
先看清楚问题,再看选项
判断题目到底考察的是什么知识点,排除干扰项
掌握答题的技巧
题目往往会选择不是绝对最好或最差,选相对好的,比较稳妥的说法
题目往往会选择不是绝对最好或最差,选相对好的,比较稳妥的说法
当2个选项给出截然相反的答案时,可以断定其中必有一个正确答案
有些题可以选择走捷径:用选项带入计算的方式;
案例
分析试题的技巧
建议带着问题去看题干;
建议顺势而为去答题,根据题干的倾向去分析优劣以及选择的理由。
掌握答题的技巧
建议不要成段答题,而是分条目答题,方便老师查看得分点,把自己认为对的都写上;
答题时可以根据分值决定条目的数量以及简略程度,对于一些方法、策略等问题,可以先写名称,再简要说明,部分问题回答的时候可以捎带题干的一些内容,让答案更充实;
如果是填表形式的问答,可以结合表格已有内容去套用,尽量用近似的说法去填
论文
分析试题的技巧
不仅要看主题,也要看主题中的三个小问题;
分析以什么内容作为核心论点。
掌握答题的技巧
选择自己最熟悉、最有把握的主题去写;
往往问题中有具体阐述、详细阐述的是需要主要论述的内容;
不要遗漏对每个小问题的回应;
大纲
综合
1、计算机系统基本知识
软硬件、语言、多媒体:综合2~6 分
嵌入式系统:综合5分、案例
计算机网络:综合5分
系统工程、系统性能:综合2~5分
软硬件、语言、多媒体:综合2~6 分
嵌入式系统:综合5分、案例
计算机网络:综合5分
系统工程、系统性能:综合2~5分
1.1 计算机系统概述
计算机系统的定义、组成和分类
计算机系统(Computer System)是指用于数据管理的计算机硬件、软件及网络组成的系统。
计算机系统可划分为硬件(子系统)和软件(子系统)两部分
计算机系统可划分为硬件(子系统)和软件(子系统)两部分
1.2 计算机硬件
1.2.1 计算机硬件组成
冯·诺依曼:运算器、控制器、存储器、输入设备和输出设备
哈佛体系结构:DSP数字信号处理器
1.2.2 处理器
典型的计算机体系结构
中央处理器CPU、图像处理器GPU、信号处理器DSP、现场可编程逻辑门阵列FPGA
AI芯片的技术架构包括:GPU、FPGA、ASIC
指令集:CISC复杂指令集和RISC精简指令集
CISC兼容性强,指令繁多、长度可变,由微程序实现。
RISC指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。
国产处理器芯片结构
CPU中的运算器、控制器、寄存器组、图形处理器GPU、校验码
CPU访问内存通常是同步方式,CPU与I/O接口交换信息通常是同步方式,CPU与PCI总线交换信息通常是同步方式,I/O接口与打印机交换信息则通常采用基于缓存池的异步方式。
流水线执行周期=最慢那个指令执行时间;
流水线的吞吐率=最慢那个指令执行时间 的倒数。
流水线执行时间=所有指令顺序执行时间+(指令总数-1)* 流水线执行周期;
流水线的吞吐率=最慢那个指令执行时间 的倒数。
流水线执行时间=所有指令顺序执行时间+(指令总数-1)* 流水线执行周期;
CPU的工作频率(主频)包括两个部分:外频与倍频,两者的乘积就是主频
计算机执行程序时,在一个指令周期的过程中,为了能够从内存中读指令操作码,首先是将程序计数器(PC)的内容送到地址总线上。
微程序一般由硬件执行
1.2.3 存储器
片上缓存、片外缓存、主存(DRAM)和外存等
固态硬盘存储介质是闪存芯片,比机械硬盘功耗低
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取(Cache)等4种
RAID5的容量是(N-1)*最低容量。
RAID6的容量是(N-2)*最低容量。
1.2.4 总线
按位置分:内总线、系统总线和外部总线等
内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
系统总线:板级的总线,数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCl总线。
外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。
并行总线:系统总线(计算机各部件)、多条双向数据线,有传输延迟,适合近距离连接
串行总线:通信总线(计算机之间或计算机与其他系统间)一条双向数据线或两条单向数据线,速率不高,但适合长距离连接,
串行总线传输的波特率在使用中可以改变
串行总线的数据发送和接收可以使用多种方式,程序查询方式和中断方式都可
挂接在总线上的多个部件只能分时向总线发送数据,但可同时从总线接收数据
数据总线宽度越大,单位时间内能进出CPU的数据就越多,系统的运算速度越快。
总线的时钟周期=时钟频率的倒数;
总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
1.2.5 接口
显示、音频、网络和 SATA 等
有输入输出接口如 HDMI、SATA、RS-232 等
网络接口如 RJ45、FC 等
A/D 转换接口
1.2.6 外部设备
鼠标、显示器、扫描仪和摄像头等
四大技术:程序查询方式、程序中断方式、DMA方式、通道方式
1.3 计算机软件
1.3.1 计算机软件概述
计算机软件的定义和作用
计算机软件是指计算机系统中的程序及其文档,是计算任务的处理对象和处理规则的描述。软
件系统是指在计算机硬件系统上运行的程序、相关的文档资料和数据的集合。
件系统是指在计算机硬件系统上运行的程序、相关的文档资料和数据的集合。
计算机软件的分类
系统软件。为整个计算机系统配置的不依赖特定应用领域的通用软件,对计算机系统的硬件和软件资源进行控制和管理,并提供运行服务支持。
应用软件。是指为某类应用需要或解决某个特定问题而设计的软件,常与具体领域相关联,如教学软件
1.3.2·操作系统
操作系统的的组成、作用和类型
操作系统特点
操作系统具有并发性、共享性、虚拟性和不确定性的特征。
批处理操作系统:根据同时执行的作业数又分为单道批处理和多道批处理。一个作业由用户程序、数据和作业说明书(作业控制语言)3 个部分组成。
分时系统操作系统,将 CPU 的工作时间划分为许多很短的时间片,每个时间片分别为一个终端的用户提供服务或者执行一个作业,主要有4个特点:多路性、独立性、交互性和及时性。
实时操作系统:对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内快速做出反应,对可靠性要求很高,并且不强制要求用户交互
网络操作系统:使联网计算机能有效地共享网络资源,为网络用户提供各种服务和接口。特征包括【硬件独立性】和【多用户支持】等。
分布式操作系统:指为分布式计算机系统配置的操作系统。分布式操作系统是网络操作系统的更高级形式,它保持网络系统所拥有的全部功能,同时又有透明性、可靠性和高性能等特性
嵌入式操作系统:运行在嵌入式智能设备环境中,对整个智能硬件以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制,特点是【微型化】、【可定制】、【可靠性】和【易移植性】。常采用【硬件抽象层】(Hardware Abstraction Layer,HAL)和【板级支撑包】(Board Support Package,BSP)来提高易移植性,常见的嵌入式实时操作系统有 VxWorks、μClinux、PalmOS、WindowsCE、μC/OS-II 和 eCos 等。
中断分类
信号中断通常是由外部设备或定时器发出的
外部中断由硬件设备(如键盘、鼠标、定时器等)触发
溢出中断发生在程序执行过程中产生算术溢出时,而非主动系统调用。
访管中断是应用程序使用特权指令触发的,目的是请求操作系统服务(即系统调用)。
1.3.3数据库系统
数据库的定义、作用和类型
数据库管理系统的基本原理
关系型数据库系统(数据模型、关系描述和数据库设计)
分布式数据库系统(结构和应用)
数据库管理系统(定义、特点和产品(Oraclc、IBM DB2、Sybase 等))
数据库是指长期存储在计算机内、有组织的、统一管理的相关数据的集合。
数据是按一定格式存放的,具有较小的冗余度、较高的数据独立性和易扩展性,可为多个用户共享。
数据是按一定格式存放的,具有较小的冗余度、较高的数据独立性和易扩展性,可为多个用户共享。
分布式据库系统(Distributed DataBase System,DDBS)是针对地理上分散,而管理上又需要不同程度集中的需求而提出的一种数据管理信息系统。满足分布性、逻辑相关性、场地透明性和场地自治性的数据库系统被称为完全分布式数据库系统。
分布式数据库系统的特点是数据的集中控制性、数据独立性、数据冗余可控性、场地自治性和存取的有效性。
分布式数据库系统的特点是数据的集中控制性、数据独立性、数据冗余可控性、场地自治性和存取的有效性。
1.3.4 文件系统
文件系统的定义、作用和类型·
按性质和用途分类:可将文件分为系统文件、库文件和用户文件。
按信息保存期限分类:可将文件分为临时文件、档案文件和永久文件。
按保护方式分类:可将文件分为只读文件、读/写文件、可执行文件和不保护文件。
UNIX 系统将文件分为:普通文件、目录文件和设备文件(特殊文件)。
按信息保存期限分类:可将文件分为临时文件、档案文件和永久文件。
按保护方式分类:可将文件分为只读文件、读/写文件、可执行文件和不保护文件。
UNIX 系统将文件分为:普通文件、目录文件和设备文件(特殊文件)。
文件系统的组成和基本原理
文件系统的存取方式和存储管理
文件的存取方法:通常有顺序存取和随机存取两种方法。
文件的组织方法:有连续结构、链接结构和索引结构,还有多重索引方式。
空间管理的数据结构通常称为磁盘分配表(Disk Allocation Table),有空闲区表、位示图和空闲块链3种
文件的组织方法:有连续结构、链接结构和索引结构,还有多重索引方式。
空间管理的数据结构通常称为磁盘分配表(Disk Allocation Table),有空闲区表、位示图和空闲块链3种
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种。
(1)顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
(2)直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
(3)随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其【内容】而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache采取相联存取的方式。
(1)顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
(2)直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
(3)随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其【内容】而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache采取相联存取的方式。
1.3.5 网络协议
局域网协议(LAN)
广域网协议(WAN)
无线网协议
移动网协议
1.3.6 中间件
中间件的定义、作用和类型·
负责客户机与服务器之间的连接和通信,客户机与应用层之间的高效率通信机制。
提供应用层不同服务之间的互操作机制,应用层与数据库之间的连接和控制机制。
提供一个多层架构的应用开发和运行的平台,一个应用开发框架,支持模块化的应用开发。
屏蔽硬件、操作系统、网络和数据库的差异。
提供应用的负载均衡和高可用性、安全机制与管理功能,以及交易管理机制,保证交易的一致性。
提供一组通用的服务去执行不同的功能,避免重复的工作和使应用之间可以协作。
中间件的典型软件产品(IBM MQSeries、BEA Tuxedo )
(1)通信处理(消息)中间件,保证系统能在不同平台之间通信,例如 MQSeries。
(2)事务处理(交易)中间件,实现协调处理顺序、监视和调度、负载均衡等功能,例如Tuxedo。
(3)数据存取管理中间件,为不同种类数据的读写和加解密提供统一的接口。
(4)Web 服务器中间件,提供 Web 程序执行的运行时容器,例如 Tomcat、JBOSS 等。
(5)安全中间件,用中间件屏蔽操作系统的缺陷,提升安全等级。
(6)跨平台和架构的中间件,用于开发大型应用软件。
(7)专用平台中间件,为解决特定应用领域的开发设计问题提供构件库。
(8)网络中间件,包括网管工具、接入工具等。
(2)事务处理(交易)中间件,实现协调处理顺序、监视和调度、负载均衡等功能,例如Tuxedo。
(3)数据存取管理中间件,为不同种类数据的读写和加解密提供统一的接口。
(4)Web 服务器中间件,提供 Web 程序执行的运行时容器,例如 Tomcat、JBOSS 等。
(5)安全中间件,用中间件屏蔽操作系统的缺陷,提升安全等级。
(6)跨平台和架构的中间件,用于开发大型应用软件。
(7)专用平台中间件,为解决特定应用领域的开发设计问题提供构件库。
(8)网络中间件,包括网管工具、接入工具等。
1.3.7 软件构件
软件构件的定义和作用
构件的两个最重要的特性是自包容与可重用,利用软件构件进行搭积木式地开发。
优点:易扩展、可重用、并行开发。
缺点:需要经验丰富的设计师、快速开发与质量属性之间需要妥协、构件质量影响软件整体的质量。
优点:易扩展、可重用、并行开发。
缺点:需要经验丰富的设计师、快速开发与质量属性之间需要妥协、构件质量影响软件整体的质量。
软件构件是—个独立可部署的软件单元,
—个构件不能有任何(外部的)可见状态,但是可以利用容器管理自身对外的可见状态
—个构件不能有任何(外部的)可见状态,但是可以利用容器管理自身对外的可见状态
软件构件的组装模型
商用构件标准规范(CORBA、J2EE和DNA2000等)
(1)OMG 的公共对象请求代理架构(Common Object Request Broker Architecture,CORBA)
是一个纯粹的规范而不是产品,主要分为 3 个层次:对象请求代理(Object Request Broker,ORB)、
公共对象服务和公共设施。采用 IDL 定义接口,并易于转化为具体语言实现。
(2)SUN 的 J2EE,定义了完整的基于 Java 语言开发面向企业分布的应用规范,其中 EJB 是
J2EE 的构件标准,EJB 中的构件称为 Bean,可以分为实体Bean、会话Bean和消息驱动Bean。
(3)Microsoft的DNA2000,采用 DCOM/COM/COM+作为标准的构件。
是一个纯粹的规范而不是产品,主要分为 3 个层次:对象请求代理(Object Request Broker,ORB)、
公共对象服务和公共设施。采用 IDL 定义接口,并易于转化为具体语言实现。
(2)SUN 的 J2EE,定义了完整的基于 Java 语言开发面向企业分布的应用规范,其中 EJB 是
J2EE 的构件标准,EJB 中的构件称为 Bean,可以分为实体Bean、会话Bean和消息驱动Bean。
(3)Microsoft的DNA2000,采用 DCOM/COM/COM+作为标准的构件。
1.3.8 应用软件
通用软件的定义、范围和类别
专用软件的定义、范围和类别
1.4 嵌入式系统及软件
1.4.1 嵌入式系统的组成及特点
嵌入式系统的定义、组成和用途
嵌入式系统(Embedded System)是以特定应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统。
组成结构
嵌入式处理器,除满足低功耗、体积小等需求外,工艺可分为民用、工业和军用等三个档次,民用级器件的工作温度范围是 0~70℃、工业级的是−40~85℃、军用级的是−55~150℃。其应用环境常常非常恶劣,比如有高温、寒冷、电磁、震动、烟尘等环境因素。
支撑硬件,指除处理器以外的其他硬件,如存储器、定时器、总线等。
嵌入式操作系统,与通用操作系统不同,嵌入式操作系统应具备实时性、可裁剪性和安全性等特征。
支撑软件,其中的公共服务通常运行在操作系统之上,以库的方式被应用软件所引用。
应用软件,是指为完成嵌入式系统的某一专用目标所开发的软件。
特点
(1)专用性强,常常面向特定应用需求,配备多种传感器。
(2)技术融合,将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体
应用紧密结合难以拆分。
(3)软硬一体软件为主,在通用的嵌入式系统版本基础上裁剪冗余,高效设计。
(4)资源受限,由于低功耗、体积小和集成度高等要求,系统的资源非常少。
(5)程序代码固化在 ROM 中,以提高执行速度和系统可靠性。
(6)需专门开发工具和环境,见 2.3 节。
(7)体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强。
(8)对安全性和可靠性的要求高
嵌入式处理器及支撑硬件、环境要求及特点
硬件组成
嵌入式微处理器
(1)微处理器(Microprocessor Unit,MPU):微处理器+专门设计的电路板,集成度低、可靠性高,主要有:Am186/88、386EX、SC-400、PowerPC、68000、MIPS、ARM 系列等。
(2)微控制器(Microcontroller Unit,MCU):又称单片机,把核心存储器和部分外设封装在片内。优点是单片化、体积小、功耗和成本下降,可靠性提高。包括 8501,P5IXA,MCS-251,MCS-96/196/296,C166/167,MC68HC05/11/12/16,68300 和数目众多的 ARM 系列。
(3)数字信号处理器(Digital Signal Processing,DSP):采用哈佛结构,对系统结构和指令进行了特殊设计,适合执行大量数据处理。包括 TMS320 系列(含 C2000、C5000、C6000、C8000系列)、DSP56000 系列、实时 DSP 处理器等。
(4)图形处理器(Graphics Processing Unit,GPU):与 CPU 相比大幅加强了浮点运算能力和多核并行计算能力,因此常用于 AI 技术的深度学习的数据运算。
(5)片上系统(System on Chip,SoC):由多个具有特定功能的集成电路组合在一个芯片上形成的系统或产品,其中包含完整的硬件系统,如处理器、IP(Intellectual Property)核、存储器等及其承载的嵌入式软件,如操作系统和定制的用户软件。
(2)微控制器(Microcontroller Unit,MCU):又称单片机,把核心存储器和部分外设封装在片内。优点是单片化、体积小、功耗和成本下降,可靠性提高。包括 8501,P5IXA,MCS-251,MCS-96/196/296,C166/167,MC68HC05/11/12/16,68300 和数目众多的 ARM 系列。
(3)数字信号处理器(Digital Signal Processing,DSP):采用哈佛结构,对系统结构和指令进行了特殊设计,适合执行大量数据处理。包括 TMS320 系列(含 C2000、C5000、C6000、C8000系列)、DSP56000 系列、实时 DSP 处理器等。
(4)图形处理器(Graphics Processing Unit,GPU):与 CPU 相比大幅加强了浮点运算能力和多核并行计算能力,因此常用于 AI 技术的深度学习的数据运算。
(5)片上系统(System on Chip,SoC):由多个具有特定功能的集成电路组合在一个芯片上形成的系统或产品,其中包含完整的硬件系统,如处理器、IP(Intellectual Property)核、存储器等及其承载的嵌入式软件,如操作系统和定制的用户软件。
存储器
随机存取存储器(Random Access Memory,RAM)。工作需要持续电力提供,可随机读写。
1)动态随机存取存储器(Dynamic RAM,DRAM),采用电容存储信息,优点是集成度高、容量大、成本低,缺点是访问速度较慢、需要定期刷新。常作主存DRAM。
2)静态随机存取存储器(Static RAM,SRAM),采用多个晶体管自锁的方式保存状态,优点是访问速度快、不需要刷新,缺点是集成度低、容量小、成本高。常用作高速缓存CACHE。
1)动态随机存取存储器(Dynamic RAM,DRAM),采用电容存储信息,优点是集成度高、容量大、成本低,缺点是访问速度较慢、需要定期刷新。常作主存DRAM。
2)静态随机存取存储器(Static RAM,SRAM),采用多个晶体管自锁的方式保存状态,优点是访问速度快、不需要刷新,缺点是集成度低、容量小、成本高。常用作高速缓存CACHE。
只读存储器(Read Only Memory,ROM),存储的数据不会因掉电而丢失,读取的速度比RAM快,常见的有以下几种:
1)掩膜型只读存储器(Mask Programmed ROM,MROM),优点是通过掩膜大批量制造、成本低,缺点是同批数据全部一致且不可修改,只适合大批量生产。
2)可编程只读存储器(Programmable ROM,PROM),可以用专用编程设备一次性烧录数据,适合少量制造。
3)可擦可编程只读存储器(Erasable Programmable ROM,EPROM),优点是写入的数据可以通过紫外线擦除重写
4)电可擦可编程只读存储器(Electrically Erasable Programmable ROM,EEPROM),优点是写入的数据可以通过电压来清除,但是清除的速度很慢。
5)快闪存储器(Flash Memory),优点是可以联机擦写数据且擦写的次数多、速度快,缺点是读取的速度慢(相对其他 ROM 的速度而言)。
1)掩膜型只读存储器(Mask Programmed ROM,MROM),优点是通过掩膜大批量制造、成本低,缺点是同批数据全部一致且不可修改,只适合大批量生产。
2)可编程只读存储器(Programmable ROM,PROM),可以用专用编程设备一次性烧录数据,适合少量制造。
3)可擦可编程只读存储器(Erasable Programmable ROM,EPROM),优点是写入的数据可以通过紫外线擦除重写
4)电可擦可编程只读存储器(Electrically Erasable Programmable ROM,EEPROM),优点是写入的数据可以通过电压来清除,但是清除的速度很慢。
5)快闪存储器(Flash Memory),优点是可以联机擦写数据且擦写的次数多、速度快,缺点是读取的速度慢(相对其他 ROM 的速度而言)。
存储速度从快到慢分别是:寄存器组、Cache、内存、Flash。
主存地址到Cache地址的变换由硬件完成,以提高速度
总线逻辑
传输信息种类分类
数据总线,用于传送需要处理或者需要存储的数据。
地址总线,用于指定在 RAM 之中存储的数据的地址。
控制总线,将微处理器控制单元的信号传送到周边设备
根据连接部件分类
片内总线,连接芯片内部各元件。
系统总线或板级总线,连接计算机系统的核心组件。
局部总线,连接局部少数组件。
通信总线,主机连接外设的总线。
数据传输的方向分类
单工总线只能从一端向另一端传输而不能反向;
双工总线能在两个方向传输。双工总线又分为半双工总线和全双工总线。
半双工总线只能轮流向两个方向传输;
全双工总线可以同时在两个方向传输。
半双工总线只能轮流向两个方向传输;
全双工总线可以同时在两个方向传输。
使用的信号类型分类
并行总线包含多位传输线,在同一时刻可以传输多位数据,但一致性要求高,传输距离较近;
串行总线只使用一位传输线,同一时刻只传输一位数据,但距离可以较远。
定时/计数器
看门狗电路
嵌入式系统必须具备的一种系统恢复能力,可防止程序出错或者死锁
I/O接口和外部设备
嵌入式软件集成开发环境
1.4.2 嵌入式系统分类
用途分类
嵌入式实时(强实时、弱实时)系统:指能够在规定的时间内完成系统功能和做出响应的系统
嵌入式非实时系统
安全性分类
安全攸关(Safety-Critical 或 Life-Critical):指其不正确的功能或者失效会导致人员伤亡、财产损失等严重后果的计算机系统
非安全攸关
1.4.3 嵌入式软件的组成及特点
嵌入式软件的架构和特点
典型架构
层次化模式架构
递归模式架构
特点
(1)可剪裁性:设计方法包括静态编译、动态库和控制函数流程实现功能控制等。
(2)可配置性:设计方法包括数据驱动、静态编译和配置表等。
(3)强实时性:设计方法包括表驱动、配置、静/动态结合、汇编语言等。
(4)安全性(Safety):设计方法包括编码标准、安全保障机制、FMECA(故障模式、影响及危害性分析)。
(5)可靠性:设计方法包括容错技术、余度技术和鲁棒性设计等。
(6)高确定性:设计方法包括静态分配资源、越界检查、状态机、静态任务调度等。
(2)可配置性:设计方法包括数据驱动、静态编译和配置表等。
(3)强实时性:设计方法包括表驱动、配置、静/动态结合、汇编语言等。
(4)安全性(Safety):设计方法包括编码标准、安全保障机制、FMECA(故障模式、影响及危害性分析)。
(5)可靠性:设计方法包括容错技术、余度技术和鲁棒性设计等。
(6)高确定性:设计方法包括静态分配资源、越界检查、状态机、静态任务调度等。
嵌入式软件开发与传统软件开发方法的差异
综上所述,嵌入式软件的开发也与传统的软件开发方法差异较大。
在嵌入式系统设计时,要进行低功耗设计。主要技术有编译优化技术、软硬件协同设计、算法优化。
在嵌入式系统设计时,要进行低功耗设计。主要技术有编译优化技术、软硬件协同设计、算法优化。
低功耗设计可以从以下方面进行
(1)软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素。
(2)编译优化,采用低功耗优化的编译技术。
(3)减少系统的持续运行时间,可从算法角度进行优化。
(4)用“中断”代替“查询”。
(5)进行电源的有效管理。
(1)软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素。
(2)编译优化,采用低功耗优化的编译技术。
(3)减少系统的持续运行时间,可从算法角度进行优化。
(4)用“中断”代替“查询”。
(5)进行电源的有效管理。
在嵌入式系统开发中,由于嵌入式设备不具备足够的处理器能力和存储空间,程序开发一般用 PC(宿主机)来完成,然后将可执行文件下载到嵌入式系统(目标机)中运行。
当宿主机与目标机的机器指令不同时,就需要交叉工具链(指编译、汇编、链接等一整套工具)。
当宿主机与目标机的机器指令不同时,就需要交叉工具链(指编译、汇编、链接等一整套工具)。
1.4.4 安全攸关软件的安全性设计
安全攸关软件的定义和作用
IEEE 定义安全攸关软件是“用于一个系统中,可能导致不可接受的风险的软件”。
安全性设计方法:DO-178目的、安全等级划分和生命周期等
该标准的目的是为制造机载系统和设备的机载软件提供指导,使其能够提供在满足符合适航要
求的安全性水平下完成预期功能。
求的安全性水平下完成预期功能。
DO-178B标准将软件生命周期分为“软件计划过程”“软件开发过程”和“软件综合过程”,
软件开发过程细分为软件需求过程、软件设计过程、软件编码过程和集成过程 4 个子过程;
软件综合过程细分为软件验证过程、软件配置管理过程、软件质量保证过程、审定联络过程 4 个子过程。
软件开发过程细分为软件需求过程、软件设计过程、软件编码过程和集成过程 4 个子过程;
软件综合过程细分为软件验证过程、软件配置管理过程、软件质量保证过程、审定联络过程 4 个子过程。
安全等级:灾难级(A)、危害级(B)、严重级(C)、不严重级(D)和没有影响级(E)。
1.5 计算机网络
1.5.1 网络的基本概念
计算机网络发展的四个阶段·
基本功能:数据通信、资源共享、管理集中化、分布式处理和负荷均衡
性能指标:从速率、带宽、吞吐量和时延等不同方面来度量计算机网络的性能
非性能指标:从费用、质量、标准化、可靠性、可扩展性、可升级性、易管理性和可维护性等来度量。
1.5.2 通信技术
数据与信道:在通信中的数据包括模拟信号和数字信号,通过信道来传输,信息传输就是信源和信宿通过信道收发信息的过程。信道可分为逻辑信道和物理信道。逻辑信道是指在数据发送端和接收端之间存在的一条虚拟线路,可以是有连接的或无连接的,以物理信道为载体。信号在信源端和信宿端都需要经过信号变换,中间经过编码、交织、调制和解码等过程。
复用技术:是指在一条信道上同时传输多路数据的技术,如 TDM 时分复用、FDM 频分复用和 CDM 码分复用等。即一条路上行驶多辆货车。
多址技术:是指在一条线上同时传输多个用户数据的技术,在接收端把多个用户的数据分离,如TDMA 时分多址、FDMA 频分多址和 CDMA 码分多址等。即一辆车上的货物属于不同用户。
5G通信网络:作为新一代的移动通信技术,网络结构、网络能力和应用场景等都与过去有很大不同,具有高速率、低时延、接入用户数高等优点。
1.5.3 网络技术
局域网(LAN):是指在有限地理范围内将若干计算机通过传输介质互联成的封闭型的计算机网络。局域网有总线型、星型、树型、环型、网状五种拓扑结构
以太网(Ethernet):是一种计算机局域网组网技术,由 IEEE802.3 定义。以太网数据帧的最小长度必须不小于 64 字节,最大长度一般1518字节。设置最小帧长是为了避免冲突,最小帧长是根据网络中检测冲突的最长时间来定的。
无线局域网(WLAN):利用无线技术在空中传输数据、话音和视频信号。
WLAN 采用 IEEE 802.11 标准,有 a、b、g、n、ac 等子标准,802.11n传输速率可达 200Mb/s,802.11ac 则可达 1Gb/s。
WLAN 拓扑结构有点对点型、Hub型和完全分布型。点对点型用于网络互联和延长;HUB型用于终端接入;完全分布型则处于理论探讨阶段无具体应用。
WLAN 采用 IEEE 802.11 标准,有 a、b、g、n、ac 等子标准,802.11n传输速率可达 200Mb/s,802.11ac 则可达 1Gb/s。
WLAN 拓扑结构有点对点型、Hub型和完全分布型。点对点型用于网络互联和延长;HUB型用于终端接入;完全分布型则处于理论探讨阶段无具体应用。
广域网(WAN):是一种将分布于更广区域的计算机设备联接起来的网络,需要使用路由器和网关设备。
广域网由通信子网与资源子网组成。
广域网可以分为公共传输网络、专用传输网络和无线传输网络3类。
广域网相关技术有同步光网络(SONET)、同步数字体系(SDH)、数字数据网(DDN)、帧中继(FR)和异步传输技术(ATM)
广域网由通信子网与资源子网组成。
广域网可以分为公共传输网络、专用传输网络和无线传输网络3类。
广域网相关技术有同步光网络(SONET)、同步数字体系(SDH)、数字数据网(DDN)、帧中继(FR)和异步传输技术(ATM)
城域网(MAN)。是在单个城市范围内所建立的计算机通信网,采用 IEEE 802.6 标准。通常分为 3 个层次:核心层、汇聚层和接入层。
移动通信网。其发展经历了1G模拟信号传输、2G数字通信技术、3G扩展频谱、4G快速发展繁荣、5G多业务、多技术融合等5代。
5G 网络的主要特征为服务化架构和网络切片。
5G 网络的主要特征为服务化架构和网络切片。
服务化架构(Service-Based Architecture,SBA)可以实现网络功能的灵活定制和按需组合,以及软件快速迭代和升级。
网络切片技术可以在单个物理网络中切分出多个分离的逻辑网络用于不同业务。5G 还引入了基于灵活以太网(Flexible Ethernet,FlexE)的硬切片技术。
网络切片技术可以在单个物理网络中切分出多个分离的逻辑网络用于不同业务。5G 还引入了基于灵活以太网(Flexible Ethernet,FlexE)的硬切片技术。
1.5.4 组网技术
基本网络设备
网络层:路由器Router、防火墙Firewall
数据链路层:网桥Bridge、交换机Switcher
物理层:集线器Hub、中继器Repeater
交换技术、路由技术及相关协议
交换机Switcher功能包括集线功能、中继功能、桥接功能、隔离冲突域功能。
交换机协议有:
(1)生成树协议(STP),可以很好地解决链路环路问题。
(2)链路聚合协议,可以提升与邻接交换设备之间的端口带宽和提高链路可靠性。
(1)生成树协议(STP),可以很好地解决链路环路问题。
(2)链路聚合协议,可以提升与邻接交换设备之间的端口带宽和提高链路可靠性。
路由器(Router)提供路由功能,包括异种网络互连、子网协议转换、数据路由、速率适
配、隔离网络、报文分片和重组、备份和流量控制。
配、隔离网络、报文分片和重组、备份和流量控制。
路由器协议主要有:
(1)内部网关协议(Interior Gateway Protocol,IGP):指在一个自治系统(AutonomousSystem,AS)内运行的路由协议。
(2)外部网关协议(Exterior Gateway Protocol,EGP):指在 AS 之间的路由协议。EGP 是为简单的树型拓扑结构设计的。
(3)边界网关协议(Border Gateway Protocol,BGP):Internet 的网络规模庞大,网络情况复杂,EGP 已不适用,在 EGP 的经验之上制定了新的网关协议即 BGP,也是 Internet 上唯一的网关协议。
(1)内部网关协议(Interior Gateway Protocol,IGP):指在一个自治系统(AutonomousSystem,AS)内运行的路由协议。
(2)外部网关协议(Exterior Gateway Protocol,EGP):指在 AS 之间的路由协议。EGP 是为简单的树型拓扑结构设计的。
(3)边界网关协议(Border Gateway Protocol,BGP):Internet 的网络规模庞大,网络情况复杂,EGP 已不适用,在 EGP 的经验之上制定了新的网关协议即 BGP,也是 Internet 上唯一的网关协议。
开放系统互连参考模型(OSI/RM)·
分层参考模型
OSI/RM协议集
应用层
处理网络应用 直接为终端用户服务,提供各类应用过程的接口和用户接口
表示层
管理数据表示方式 使应用层可以根据其服务解释数据的含义。通常包括数据编码的约定、本地句法的转换,使不同类型的终端可以互相通信
会话层
建立和维护会话连接 负责管理远程用户或进程间的通信,通过安全验证和退出机制确保上下文环境的安全,重建中断的会话场景,维持双方的同步
传输层
端到端传输 实现发送端和接收端的端到端的数据透明传送,TCP 协议保证数据包无差错、按顺序、无丢失和无冗余地传输。其服务访问点为端口
网络层
在源节点和目的节点之间传输 虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法,网络互连,以及对网络的诊断等
数据链路层
提供点到点的帧传输 将网络层报文数据封装成帧,建立、维持和释放网络实体之间的数据
链路,在链路上传输帧并进行差错控制、流量控制等
链路,在链路上传输帧并进行差错控制、流量控制等
物理层
在物理链路上传输比特流 通过一系列协议定义了物理链路所具备的机械特性、电气特性、功能
特性以及规程特性
特性以及规程特性
TCP/IP协议集
应用层:会话层、表示层、应用层
传输层:传输层
网际层:网络层
网络接口层:数据链路层
硬件层:物理层
传输层:传输层
网际层:网络层
网络接口层:数据链路层
硬件层:物理层
FTP、Telnet:TCP/IP/Ethernet
SMTP:TCP/IP/FDDI
NFS:UDP/ICMP/TokenRing/硬件层
SNMP网络管理:UDP/RARP/ARCnet
子主题
协议集比较
应用层协议
文件传输协议(File Transport Protocol,FTP):是网络上两台计算机传送文件的协议,运行在 TCP 之上,是通过 Internet 将文件从一台计算机传输到另一台计算机的一种途径。FTP 在客户机和服务器之间需建立两条 TCP 连接,一条用于传送控制信息(使用21号端口),另一条用于传送文件内容(使用20号端口)
简单文件传输协议(Trivial File Transfer Protocol,TFTP):是用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP 建立在 UDP之上,69号端口;提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。
超文本传输协议(Hypertext Transfer Protocol,HTTP):是用于从 WWW 服务器传输超文本到本地浏览器的传送协议。HTTP 建立在 TCP 之上,使用 80 号端口。
安全超文本传输协议(Hypertext Transfer Protocol Secure,HTTPS):是以安全为目标的HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP的基础下加入安全套接层(Secure Socket Layer,SSL)或 TLS,HTTPS 使用的 443 号端口。
POP3,邮件接收协议,缺省端口110
SMTP,邮件发送协议,缺省端口25
IMAP,交互式邮件存取协议,缺省端口143
SMTP,邮件发送协议,缺省端口25
IMAP,交互式邮件存取协议,缺省端口143
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP):通常被应用在大型的局域网络环境中,主要作用是集中地管理、分配 IP 地址,使网络环境中的主机动态地获得 IP 地址、网关地址、DNS 服务器地址等信息,并能够提升地址的使用率。在网络范围内可能存在多个 DHCP服务器,各自负责不同的网段,也可能由同一个 DHCP 服务器,负责多个不同网段的地址分配。
如果网络中有多个 DHCP 服务器发送 OFFER 报文,客户端只根据第一个收到的 OFFER 报文,返回 REQUEST 报文。
如果网络中有多个 DHCP 服务器发送 OFFER 报文,客户端只根据第一个收到的 OFFER 报文,返回 REQUEST 报文。
域名系统(Domain Name System,DNS):DNS 把主机域名解析为 IP 地址的系统,
PTR(Pointer Record)负责将 IP 地址映射到域名的解析。
DNS 查询过程有两种方法
迭代查询:查询得到的是其他服务器的引用,本地服务器就要访问被引用的服务器,做进一步的查询
递归查询:查询方式要求服务器彻底地进行名字解析,并返回最后的结果
PTR(Pointer Record)负责将 IP 地址映射到域名的解析。
DNS 查询过程有两种方法
迭代查询:查询得到的是其他服务器的引用,本地服务器就要访问被引用的服务器,做进一步的查询
递归查询:查询方式要求服务器彻底地进行名字解析,并返回最后的结果
传输层协议
TCP:传输控制协议(Transmission Control Protocol,)。TCP 是可靠的、面向连接的网络协
议。具有差错校验和重传、流量控制、拥塞控制等功能。适用于数据量比较少,且对可靠性要求高
的场合。
议。具有差错校验和重传、流量控制、拥塞控制等功能。适用于数据量比较少,且对可靠性要求高
的场合。
UDP:用户数据报协议(User Datagram Protocol,UDP)。UDP 是不可靠的、无连接的网络协议。
UDP 适合数据量大,对可靠性要求不是很高,但要求速度快的场合。
UDP 适合数据量大,对可靠性要求不是很高,但要求速度快的场合。
网络层协议
IPv6 被称为“下一代互联网协议”,IP 数据报的目的地址有单播、多播/组播、任播。
IPv4 to IPv6 过渡技术主要有:双协议栈技术、隧道技术、NAT-PT 技术
IPv4 to IPv6 过渡技术主要有:双协议栈技术、隧道技术、NAT-PT 技术
1.5.5 网络工程
网络建设工程
网络规划:以需求为导向,兼顾技术和工程可行性。
网络设计:包括逻辑设计和物理设计,逻辑设计指网络结构设计、网络技术选型、IP 地址和路由设计、网络冗余设计以及网络安全设计等;物理设计指布线设计、机房设计、设备选型等。
网络冗余设计的目的就是避免网络组件单点失效造成应用失效;
备用路径是在主路径失效时启用,其和主路径承担不同的网络负载;
负载分担是网络冗余设计中的一种设计方式,其通过并行链路提供流量分担来提高性能;
网络中存在备用链路时,可以考虑加入负载分担设计来减轻主路径负担。
网络冗余设计的目的就是避免网络组件单点失效造成应用失效;
备用路径是在主路径失效时启用,其和主路径承担不同的网络负载;
负载分担是网络冗余设计中的一种设计方式,其通过并行链路提供流量分担来提高性能;
网络中存在备用链路时,可以考虑加入负载分担设计来减轻主路径负担。
网络实施:包括工程实施计划、网络设备验收、设备安装和调试、系统试运行和切换、用户培训等。
分层设计
接入层:直接面向用户连接或访问网络的部分,主要解决相邻用户之间的互访需求,并且为这些访问提供足够的带宽,接入层还应当适当负责一些用户管理功能(如地址认证、用户认证、计费管理等),以及用户信息收集工作(如用户的 IP 地址、MAC 地址、访问日志等)。
汇聚层:是核心层和接入层的分界面,完成网络访问策略控制、数据包处理、过滤、寻址,以及其他数据处理的任务。汇聚层的存在与否要视网络规模大小而定。
核心层:网络主干部分称为核心层,核心层的主要目的在于通过高速转发通信,提供优化、可靠的骨干传输结构,因此,核心层交换机应拥有更高的可靠性、性能和吞吐量。核心层的设备采用双机冗余热备份是非常必要的,也可以使用负载均衡功能来改善网络性能。
1.6 计算机语言
1.6.1 计算机语言的组成
计算机语言(Computer Language)是指人与计算机之间用于交流的一种语言,主要由一套指令组成,而这套指令一般包括表达式、流程控制和集合三大部分内容。
1.6.2计算机语言的类别
机器语言(指令格式、寻址):指令格式由操作码和操作数两部分组成
汇编语言(语句格式、伪指令):每条语句均由名字、操作符、操作数和注释4个字段(Fields)组成
高级语言(更贴近于人类使用的语言,C、C++、Java和 Python等)
建模语言(UML统一建模语言(平台无关、语言无关、组成要素、关系和五种视图)
组成元素
基本构造块
事务(结构、行为、分组、注释)
结构事物:名词、静态部分,用于描述概念或物理元素,包括:类、接口、协作、用例、主动类、构件、制品和节点
子主题
行为事物:动词,描述了跨越时间和空间的行为。包括:交互Interaction、状态机StateMachine和活动Activity,也有成为消息、动作次序、连接
子主题
分组事物:包是最常用的分组事物,结构事物、行为事物甚至其他分组事物都可以放进包内。
注释事物:UML模型的解释部分。描述、说明和标注模型的元素
关系(依赖、关联(聚合、组合)、泛华、实现)
依赖关系:其中一个事物发生变化会影响另一个事物。依赖关系是一种使用的关系。
关联关系:是一种拥有的关系,关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。
聚合关系:表示类之间的整体与部分的关系,其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。
组合关系:也是表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。
泛化关系:泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。
实现关系:在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间
子主题
图(支配基本构造块如何放置在一起的规则)
静态图(结构图)
类图:一组类、接口、协作和它们之间的关系
子主题
对象图:一组对象及它们之间的关系
子主题
构件图:一个封装的类和它的接口,是物理上独立的东西,他可以单独维护、升级、替换。
子主题
包图:由模型本身分解而成的组织单元,以及它们之间的依赖关系
子主题
部署图:软硬件之间映射
子主题
制品图:系统的物理结构
组合结构图
动态图(行为图)
用例图:展现了一组用例、参与者(Actor)以及它们之间的关系
用例之间有扩展关系(<<extend >>)和包含关系(<<include >>)和泛华关系,
包含关系的特点是当两个或多个用例中共用一组相同的动作时,可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享;
扩展关系则是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
包含关系的特点是当两个或多个用例中共用一组相同的动作时,可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享;
扩展关系则是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
参与者和用例之间有关联关系
参与者与参与者之间有泛化关系
子主题
状态机图:状态转换变迁
子主题
活动图:可以描述系统的工作流程和并发行为
活动图泳道分区
并行活动图示例
交互图
顺序图(序列):强调按时间顺序
仅用消息的形式表达
用消息+返回值的形式表达
通信图:(协作图),是“顺序图”的另外一种表示方式。
子主题
定|计时图:时序图也叫时间图。强调实际时间
子主题
交互概览图
公共机制:所有元素达到的共识
规格说明:事物语义的细节描述,它是模型真正的核心
修饰:通过修饰来表达更多的信息
公共分类:类与对象、接口与实现
扩展机制:允许添加新的规则
UML4+1视图
逻辑视图:系统功能,类与对象、针对系统分析设计人员
实现视图:物理代码文件和组件、针对程序员
进程视图:线程、进程、并发,针对系统集成人员
部署视图:软件到硬件的映射、针对系统和网络工程师
1用例试图:需求分析模型、针对最终用户
UML体系运行的原则
范围:给一个名字以特定含义的语境
可见性:怎样使用或看见名字
完整性:事物如何正确、一致地相互联系
执行:运行或模拟动态模型的含义是什么
详细使用:http://www.zhihu.com/tardis/bd/art/405447739
形式化语言(规格说明、分类、开发过程,Z语言具有“状态—操作”风格):是把概念、判断、推理转化成特定的形式符号后,
对形式符号表达系统进行研究的方法。
对形式符号表达系统进行研究的方法。
1.7 多媒体
1.7.1 多媒体概述
1.7.1 多媒体概述
多媒体的定义、特征、基本组成及应用
1.7.2多媒体的主要关键技术
视音频技术:视频技术包括视频数字化和视频编码技术两个方面;音频技术包括音频数字化、语音处理、语音合成及语音识别 4 个方面。
通信技术:是多媒体系统中的一项关键技术,通常包括数据传输信道技术和数据传输技术
数据压缩技术:包括即时压缩和非即时压缩、数据压缩和文件压缩、无损压缩与有损压缩等
VR/AR技术:主要分为桌面式、分布式、沉浸式和增强式 4 种
1.8 系统工程
1.8.1 系统工程的基本概念
系统工程是一种方法论,从宏观上对如何创建和管理一个信息化工程提出了理论框架
系统工程是运用系统方法,对系统进行规划、研究、设计、制造、试验和使用的组织管理技术,是人们用科学方法解决复杂问题的一门技术
系统工程从整体出发、从系统观念出发,以求【整体最优】
系统工程方法的特点:整体性、综合性、协调性、科学性和实践性
1.8.2 系统工程方法(科学决策方法)
霍尔的三维结构
硬科学方法论
硬科学方法论
美国系统工程专家霍尔(A.D.Hall)等人于 1969 年提出的一种系统工程方法论,
逻辑维:即解决问题的逻辑过程,包括:明确问题、确定目标、系统综合、系统分析、优化、决策、实施 7 个逻辑步骤;
时间维:即工作进程,包括:规划、拟订方案、研制、生产、安装、运行、更新 7 个时间阶段;
知识维:即专业科学知识,包括:工程、医学、建筑、商业、法律、管理、社会科学、艺术等知识和技能。
切克兰德方法
软科学方法论
软科学方法论
核心不是“最优化”而是“比较”与“探寻”。
将工作过程分为7个步骤:认识问题、根底定义、建立概念模型、比较及探寻、选择、设计与实施、评估与反馈。
并行工程方法
是对产品及其相关过程(包括制造过程和支持过程)进行并行、集成化处理的系统方法和综合技术
强调三个方面:产品设计开发期间最快速度按质完成,各项工作问题协调解决,适当的信息系统工具
目标:提高质量、降低成本、缩短产品开发周期和产品上市时间。
综合集成法
钱学森等提出,从系统的本质出发可以把系统分为简单系统和巨系统两大类
四原则:整体论、相互联系、有序性、【动态】
主要性质:开放性、复杂性、进化与涌现性、层次性和巨量性。
WSR系统方法
是懂物理—明事理—通人理方法论的简称。
具有中国传统哲学的思辨思想,是多种方法的综合统一,属于定性与定量分析综合集成的东方系统思想。
一般工作过程可理解为:理解意图、制定目标、调查分析、构造策略、选择方案、协调关系和实现构想 7 步。
1.8.3 系统工程的全生命周期
对系统工程生命周期进行定义的目的是以有序而且高效的方式建立一个满足利益攸关者需求的框架。
生命周期:探索研究、概念阶段、开发阶段、生产阶段、使用阶段、保障阶段和退役阶段
生命周期方法
【计划】驱动方法:需求->设计->构建->测试->部署(简单、理想化)
渐进迭代式开发:提供连续交付以达到期望的系统
精益开发:起源于丰田,是一个动态的、知识驱动的,以客户为中心的过程
敏捷开发:适应性、以人为本、迭代增量、小项目
1.8.4 基于模型的系统工程(MBSE)
MBSE是建模方法的形式化应用,以使建模方法支持系统【需求、分析、设计、【验证】和【确认】】等活动,持续贯穿到所有生命周期阶段。
产物:
在需求分析阶段,产生需求图、用例图及【包图】
在功能分析与分配阶段,产生顺序图、活动图及状态机图
在设计综合阶段,产生【模块定义图】、【内部块图】及【参数图】等
MBSE的三大支柱技术:建模语言、建模工具和建模思路
1.9 系统性能
1.9.1 性能指标
系统性能评价指标是软件、硬件的性能指标的集成
计算机的性能指标:时钟频率(主频)、运算速度、运算精度、数据处理速率(Processing Data Rate,PDR)、吞吐率
路由器的性能指标:设备吞吐量、端口吞吐量、全双工线速转发能力、路由表能力、背板能力、丢包率、时延、时延抖动、【协议支持】等
交换机的性能指标:【端口速率】、【背板吞吐量】、【缓冲区大小】、【MAC地址表大小】
网络的性能指标:设备级性能指标、网络级性能指标、应用级性能指标、用户级性能指标和【吞吐量】
操作系统的性能指标:系统上下文切换、系统响应时间、系统的吞吐率(量)、系统资源利用率、可靠性和【可移植性】
数据库管理系统的性能指标:【最大连接数】、最大并发事务处理能力、【负载均衡能力】
Web服务器的性能指标:最大并发连接数、响应延迟和【吞吐量】
1.9.2 性能计算
主要方法:定义法、公式法、程序检测法和仪器检测法
每秒百万次指令数MIPS = 指令条数/(执行时间×10的6次方)
峰值计算,是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。
理论浮点峰值= 系统中CPU数 × CPU主频 × CPU每个时钟周期执行浮点运算的次数
理论浮点峰值= 系统中CPU数 × CPU主频 × CPU每个时钟周期执行浮点运算的次数
等效指令速度法或吉普森(Gibson)法,早期用加法指令的运算速度来衡量计算机的速度,后来发展为各个指令的运算时间乘以占比。
通常加、减法指令占 50%,乘法指令占 15%,除法指令占 5%,程序控制指令占 15%,其他指令占 15%。
式中:Wi 为第 i 种指令的使用占比;Ti 为第 i 种指令的运算时间。
通常加、减法指令占 50%,乘法指令占 15%,除法指令占 5%,程序控制指令占 15%,其他指令占 15%。
式中:Wi 为第 i 种指令的使用占比;Ti 为第 i 种指令的运算时间。
1.9.3 性能设计
系统调整、Amdah1 解决方案、响应特性和负载均衡
性能调整由查找和消除瓶颈组成
对于数据库系统,性能调整主要包括 CPU/内存使用状况、优化数据库设计、优化数据库管理以及进程/线程状态、硬盘I/O及剩余空间、日志文件大小等
对于应用系统,性能调整主要包括应用系统的可用性、响应时间、并发用户数以及特定应用的系统资源占用等
阿姆达尔定律
计算机系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式所占总执行时间的比例。
加速比=使用增强部件时完成整个任务的时间/不使用增强部件时完成整个任务的时间
新的执行时间=原来的执行时间×[(1−增强比例)+增强比例/增强加速比]
总加速比=原来的执行时间/新的执行时间=1/[(1−增强比例)+增强比例/增强加速比]
加速比主要取决于两个因素:在原有的计算机上,能被改进并增强的部分在总执行时间中所占的比例,这个值称为增强比例,它永远小于等于 1;通过增强的执行方式所取得的改进,即如果整个程序使用了增强的执行方式,那么这个任务的执行速度会有多少提高,这个值是在原来条件下程
序的执行时间与使用增强功能后程序的执行时间之比。
加速比=使用增强部件时完成整个任务的时间/不使用增强部件时完成整个任务的时间
新的执行时间=原来的执行时间×[(1−增强比例)+增强比例/增强加速比]
总加速比=原来的执行时间/新的执行时间=1/[(1−增强比例)+增强比例/增强加速比]
加速比主要取决于两个因素:在原有的计算机上,能被改进并增强的部分在总执行时间中所占的比例,这个值称为增强比例,它永远小于等于 1;通过增强的执行方式所取得的改进,即如果整个程序使用了增强的执行方式,那么这个任务的执行速度会有多少提高,这个值是在原来条件下程
序的执行时间与使用增强功能后程序的执行时间之比。
1.9.4 性能评估
基准测试程序
定义:把应用程序中应用最频繁的那部分核心程序作为评价计算机性能的标准程序
基准测试程序中,评测的准确程度依次递减:真实的程序、核心程序、小型基准程序和合成基准程序
基准测试程序有DLWST:整数Dhrystone测试程序 、浮点Linpack测试程序 、【Whetstone】 基准测试程序、【SPEC】基准测试程序和【TPC】基准程序
Web服务器的性能评测方法有:[基准性能]测试、[压力]测试和[可靠性]测试。
系统监视的方法通常有:系统内置命令、查阅系统日志、可视化技术 3 种方式。
可靠性Reliability
定义:指系统在规定条件下持续无故障运行的能力,强调“正确性”和“长期稳定性”,
影响因素:主要受软件缺陷密度、硬件质量等内在因素影响。
核心目标:减少故障发生频率,通常通过硬件寿命测试、软件压力测试等手段验证。
衡量指标
平均无故障时间(MTBF):系统两次故障之间的平均间隔时间。
故障率(FR):单位时间内系统发生故障的概率。
影响因素:主要受软件缺陷密度、硬件质量等内在因素影响。
核心目标:减少故障发生频率,通常通过硬件寿命测试、软件压力测试等手段验证。
衡量指标
平均无故障时间(MTBF):系统两次故障之间的平均间隔时间。
故障率(FR):单位时间内系统发生故障的概率。
可用性Availability
定义:指系统在特定时间段内可供正常使用的概率,强调“可访问性”和“即时恢复能力”;
影响因素:除了可靠性的因素外还涉及运维效率、故障恢复机制等外部因素。
核心目标:缩短服务中断时间,提升用户感知的连续性。
衡量指标
正常使用时间占比:MTBF / (MTBF + MTTR),其中MTTR为平均修复时间。
影响因素:除了可靠性的因素外还涉及运维效率、故障恢复机制等外部因素。
核心目标:缩短服务中断时间,提升用户感知的连续性。
衡量指标
正常使用时间占比:MTBF / (MTBF + MTTR),其中MTTR为平均修复时间。
2、信息系统基础知识
综合2~6分
综合2~6分
2.1 信息系统概述
2.1.1信息系统的定义
信息系统是由【计算机软硬件】、【网络和通信设备】、【信息资源】、【用户和规章制度】组成的以处理信息流为目的的人机一体化系统。
信息系统的功能有:输入、存储、处理、输出和【控制】
信息系统的功能有:输入、存储、处理、输出和【控制】
2.1.2 信息系统的发展
发展的六个阶段:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段和成熟阶段
2.1.3 信息系统的分类
业务(数据)处理系统TPS:数据输入、数据处理、批处理、OLTP、数据库维护、文件报表产生
管理信息系统MIS:高度集成化的人机信息系统,金字塔结构:分【多个层】级
决策支持系统OSS:由语言系统、知识系统和问题处理系统组成。用于辅助决策、支持决策。
专家系统ES:知识+推理=专家系统。人工智能的一个重要分支。
办公自动化系统OAS:由计算机设备、办公设备、数据通信及网络设备、软件系统组成。
综合性信息系统:ERP打通供应链,集成,整合
2.1.4 信息系统的生命周期:产生、开发、运行、消亡
产生阶段:提出想法,对需求进行调研和分析
开发阶段:总体规划、系统分析、系统设计、系统实现、系统验收
运行阶段:通过验收、移交之后
消亡阶段:更新改造、功能扩展、报废重建
2.1.5 信息系统的建设原则
【高层人员介入】:如:CIO介入
【用户参与开发】:用户确定范围、核心用户全程参与、用户深度参与
【自顶向下规划】:】以此减少信息不一致的现象
【工程化】:引入软件工程
其它原则:创新性原则、整体性原则、发展性原则、经济性原则
2.1.6 信息系统开发方法
原型法:构造简易原型解决需求不明确问题
按功能分
水平原型:行为原型,用于界面。细化需求但并未实现功能。
垂直原型:结构化原型,用于复杂算法的实现,实现了部分功能
按最终结果分
抛弃原型:探索式原型,解决需求不确定性、二义性、不完整性、含糊性等
演化原型:逐步演化为最终系统,用于易于升级和优化的场合,适用于Web项目
结构化方法:自顶向下,逐步分解求精,目标清晰化、不灵活
面向对象方法:自底向上,阶段界限不明,灵活应变更好复用、符合人类思维
面向服务方法:面向对象基础上、粗粒度松耦合、【跨构件接口调用】、抽象级别(操作【低】-服务【中】->业务流程【高)),详见案例5
构件化方法:解决复杂环境下软件的规模与复杂性
获取方式:
从现有构件中获得符合要求的构件
通过遗留工程提取
从市场上购买现成的商业构件
开发新的符合要求的构件
分类方式
关键字分类法:将应用领域的概念按照从抽象到具体的顺序逐次分解为树型或有向无回路图结构,每个概念用一个描述性的关键字表示
刻面分类法:刻面可以描述构件执行的功能、被操作的数据、构件应用的语境或其他特征
超文本方法:所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联想思维方式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索
检索方法
基于关键字的检索、刻面检索法、超文本检索法。
构件组装方式:基于【功能】组装、基于【数据】组装、【面向对象】组装
构建组装的三个层次:【定制】、【集成】、【扩展】
敏捷方法:适应性、以人为本、迭代增量、小项目,详见4.1.3
2.1.7综合性信息系统
企业资源规划(ERP)
仓储管理系统(WMS)
制造过程管理系统(MES/SFC)
产品数据管理系统(PDM)
2.2 业务处理系统(TPS)
2.2.1 业务处理系统的概念·
TPS是服务于组织管理层次中最低层、最基础的信息系统。
2.2.2业务处理系统的功能
对事务所发生的数据进行输入、处理和输出(即 IPO)
TPS的五个基本功能:【数据输入】、【数据处理】(批处理、OLAT)、【数据库】维护、【文件报表】的产生和【查询处理】
结构化生命周期法开发
2.3 管理信息系统(MIS)
2.3.3·管理信息系统的组成
2.3.1 管理信息系统的概念
是在TPS基础上引进大量管理方法对企业整体信息进行处理,并利用信息进行预测、控
制、计划、辅助企业全面管理的信息系统。
制、计划、辅助企业全面管理的信息系统。
MIS系统的上层是子系统和功能,底层是各个过程,功能由过程组合实现
四大部件:信息源、信息处理器、信息用户和信息管理者
2.3.2 管理信息系统的功能
功能结构
开环结构:控制电视
闭环结构:不断收集信息,不断发送给决策者,控制空调
功能-过程结构图
2.3.3·管理信息系统的组成
一个MIS系统可以用一个【功能/层次矩阵】表示
七个基本子系统:有销售市场子系统、生产子系统、后勤子系统、人事子系统、财务和会计子系统、信息处理子系统和高层管理子系统
2.4 决策支持系统(DSS)
2.4.1 决策支持系统的概念
决策支持系统(DecisionSupportSystem,DSS)是一个由【语言】系统、【知识】系统和【问题处理】系统3个互相关联的部分组成的,基于计算机的系统。
DSS是一个交互式的、灵活的、适应性强的基于计算机的信息系统
DSS的基本结构:【两库】结构和基于【知识】的结构
DSS的主要资源:【数据】和【模型】
2.4.2 决策支持系统的功能
DSS 支撑九项基本功能:
①多层决策,为决策整理和提供数据;
②收集、存储和提供外部信息;
③收集和提供活动的反馈信息;
④具有模型的存储和管理能力;
⑤对常用的各种方法的存储和管理;
⑥对各种数据、模型、方法进行管理;
⑦数据加工;
⑧具有人—机接口和图形加工;
⑨支持分布使用方式
①多层决策,为决策整理和提供数据;
②收集、存储和提供外部信息;
③收集和提供活动的反馈信息;
④具有模型的存储和管理能力;
⑤对常用的各种方法的存储和管理;
⑥对各种数据、模型、方法进行管理;
⑦数据加工;
⑧具有人—机接口和图形加工;
⑨支持分布使用方式
2.4.3 决策支持系统的特点
DSS用来支援用户作决策而不是代替用户作决策。
DSS主要用于解决半结构化及非结构化问题。
DSS的作用在于提高决策的有效性而不是提高决策的效率。
特点是面向决策者、支持半结构化问题、辅助支持、【过程动态】、【交互】
2.4.4 决策支持系统的组成
组建过程是:【数据重组】、建立【数据仓库】、建立【数据字典】、【数据挖掘】、【建立模型】
2.5 专家系统(ES)
2.5.1 专家系统的概念
ES的基本概念、定义和范畴
人工智能(AI)的基本概念、特点和分支
专家系统(ExpertSystem,ES)是一个智能计算机程序系统,其内部含有某个领域具有专家水平的大量知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域的问题。
专家系统分支包括:机器人技术、视觉系统、自然语言处理、学习系统和神经网络等
2.5.2专家系统的特点
ES具有超越时间限制、操作成本低廉、易于传递与复制、处理手段一致、善于克服难题、适用特定领域等特点
专家系统和计算机系统的差别
解决问题、解释结果、进行判断与决策
处理数字与符号
多属准结构性或非结构性,可处理不确定的知识,使用于特定的领域
2.5.3 专家系统的组成
ES的组成:知识获取、知识库、综合数据库、推理机、解释程序和人-机接口
子主题
2.6 办公自动化系统(OAS)
2.6.1 办公自动化系统的概念
OAS 的发展、目标、定义和范围
OAS是一个集文字、数据、语言、图像为一体的综合性、跨学科的人机信息处理系统
2.6.2办公自动化系统的功能:【事务处理】、【信息管理】、【辅助决策】
2.6.3 办公自动化系统的组成:计算机设备、办公设备、数据通信及网络设备、软件系统
2.7 企业资源规划(ERP)
2.7.1企业资源规划的概念
ERP 的目标、定义、范围和发展
ERP是在信息技术基础上集成了企业的所有资源信息,为企业提供决策、计划、控制与经营业绩评估的全方位和系统化的管理平台。
企业的所有资源包括三大流:物流、资金流和信息流
ERP的管理范围:涉及企业的所有供需过程,是对供应链的全面管理,还与人事系统和 CRM 等关联。
2.7.2 企业资源规划的结构
基本结构:生产预测、销售管理、经营计划、主生产计划、物料需求计划、能力需求计划、车间作业计划、采购与库存管理、质量与设备管理和财务管理
2.7.3 企业资源规划的功能
支持决策的功能、不同行业的针对性IT解决方案、全行业和跨行业的供应销
PDM、CRM 在企业的应用
ERP的功能有:支持决策、不同行业的针对性IT解决方案、提供全行业和跨行业的供应链。
MRPII:核心是物流,主线是计划
ERP:打通了供应链,扩展到非制造业,重心转移到了财务上
2.8 典型信息系统架构模型
2.8.1 政府信息化与电子政务EG
行为主体是:政府Government、企(事)业单位Business及居民Citizen
重点注意:信息采集处理和利用属于G2G,如人口数据
2.8.2·企业信息化EI与电子商务EC
企业信息化的概念和目的
信息化是指在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大限度地利用信息资源以满足全社会的信息需求,从而加速社会各个领域的共同发展以推进信息社会的过程。
信息化的生体是全体社会成员(政府、企业、团体和个人),时域是一个长期过程空域是经济和社会的一切领域,手段是先进社会生产工具。
三类创新
【技术创新】在生产工艺设计、产品设计中使用计算机辅助设计系统,并通过互联网及时了解和掌握创新的技术信息,加快技术向生产的转化。还有,生产技术与信息技术相结合,能够大幅度提高技术水平和产品的竞争力。
【管理创新】按照市场发展的要求,要对企业现有的管理流程重新整合,从作为管理核心的财务资金管理,转向技术、物资、人力资源的管理,并延伸到企业技术创新、工艺设计、产品设计、产制造过程的管理,进而还要扩展到客户关系管理、供应链的管理乃至发展到电子商务。
【制度创新】那些不适应企业信息化的管理体制、管理机制和管理制度必须得到创新。
【管理创新】按照市场发展的要求,要对企业现有的管理流程重新整合,从作为管理核心的财务资金管理,转向技术、物资、人力资源的管理,并延伸到企业技术创新、工艺设计、产品设计、产制造过程的管理,进而还要扩展到客户关系管理、供应链的管理乃至发展到电子商务。
【制度创新】那些不适应企业信息化的管理体制、管理机制和管理制度必须得到创新。
企业信息化是技术和业务的融合,从企业战略、业务运作和管理运作3个层面去实现。
企业信息化工程核心技术:【信息技术】【制造技术】【自动化技术】【现代管理技术】
组织信息化需求通常包含三个层次,其中战略需求的目标是提升组织的竞争能力,为组织的可持续发展提供支持环境。运作需求包含实现信息化战略目标的需求、运营策略的需求和人才培养的需求等三个方面。技术需求主要强调在信息层技术层面上对系统的完善、升级、集成和整合提出的需求。
企业信息化的规划和方法
方法
业务流程重构方法:"彻底的、根本性的”重新设计流程。
核心业务应用方法:围绕核心业务推动信息化
信息系统建设方法:建设信息系统作为企业信息化的重点和关键
主题数据库方法:建立面向企业的核心业务的数据库,消除“信息孤岛”
资源管理方法:切入点是为企业资源管理提供强大的能力。如:ERP、SCM。
人力资本投资方法:人力资本理论【注意不是人力资源管理】把一部分企业的优秀员工看作是一种资本,能够取得投资收益。
规划
第一阶段以数据处理为核心围绕职能部门需求
关键成功因素法(CSF,Critical Success Factors),确定开发优先级
战略集合转化法(SST, Strategy Set Transformation),信息系统战略目标
企业系统规划法(BSP,BusinessSystem Planning),
此外还有:投资回收法、征费法、零线预算法、阶石法
战略集合转化法(SST, Strategy Set Transformation),信息系统战略目标
企业系统规划法(BSP,BusinessSystem Planning),
此外还有:投资回收法、征费法、零线预算法、阶石法
关键成功因素法通过对关键成功因素的识别,找出实现目标所需要的关键信息集合,从而确定系统开发的优先次序。关键成功因素来源于组织的目标,通过组织的目标分解和关键成功因素识别、性能指标识别,一直到产生数据字典。
第二阶段以企业内部MIS为核心围绕企业整体需求
战略数据规划法(SDP,StrategicDataPlanning):主题数据库
信息工程法(lE,Information Engineering)
战略栅格法(SG,Strategic Grid)
信息工程法(lE,Information Engineering)
战略栅格法(SG,Strategic Grid)
第三阶段综合考虑企业内外环境以集成为核心,围绕企业战略需求
价值链分析法(VCA,Value Chain Analysis)
战略一致性模型(SAM,Strategic Alignment Model)
战略一致性模型(SAM,Strategic Alignment Model)
业务流程优化方法
BPR:业务流程【重组】,颠覆原有流程,彻底性的再设计
BPM:业务流程【管理】,使用PDCA(计划、执行、检查、行动)循环,持续改进
客户关系管理CRM:目的是提高收入最大程度地帮助企业实现其经营目标,核心思想是以客户为中心
主要模块:销售自动化、营销自动化、客户服务与支持、商业智能
价值:提高工作效率、节省开支、提高客户满意度、提高客户的忠诚度
供应链管理SCM:整合与优化“三流”、打通企业间“信息孤岛”,严格的数据交换标准。
信息流(核心)
需求信息流(需方到供方):如客户订单、生产计划、采购合同等
供应信息流(供方到需方):如入库单、完工报告单、库存记录、可供销售量、提货发运单等
资金流:辅助
物流:辅助
商业智能BI:决策分析,分析历史数据预测未来
数据仓库
子主题
子主题
OLAP:联机分析处理
数据挖掘
子主题
数据湖
数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。
数据仓库仅支持数据分析处理。
数掘湖既支持数据分析处理,也支持事务处理。
数掘湖既支持数据分析处理,也支持事务处理。
子主题
企业应用集成EAI
定义:
EAI用于消除信息孤岛(烟囱式架构),系统互联互通
共识度较高的分类
表示集成(界面集成):原有界面做一个集成页面,集成原有功能和页面
数据集成:深入数据层级,一个系统更新时去更新另一系统相关模型的数据
控制集成(应用集成、API集成):调用其他系统的API
业务流程集成(过程集成、B2B):有业务流程的优化
门户集成:将内部系统对接到互联网上
企业信息门户(ElP):使员工/合作伙伴/客户/供应商都能够访问企业内部网络和因特网存储的各种自己所需的信息。【统一访问入口】
企业知识门户(EKP):企业网站的基础上增加知识性内容。【企业知识库】
企业应用门户(EAP):以商业流程和企业应用为核心,把商业流程中功能不同的应用模块通过门户技术集成在一起。【企业信息系统的网上集成界】
垂直门户:为某一特定的行业服务的,传送的信息只属于人们感兴趣的领域。
按信息传递分类
消息集成:数据量小,交互频繁,立即地,异步
共享数据库:交互频繁,立即地,同步
文件传递:数据量大,交互频度小,即时性要求低(月末,年末)
电子商务
数字化转型
【数字化】是新一代信息技术真正的实现推动整个【商业模式的变革】,推动产业链的重构,推动改进企业与消费者之间的关系,以及企业与合作伙伴之间的关系。
发展阶段
初始级发展阶段:数码化:信息的数字化,记录、储存、传输数码化。
单元级发展阶段:数量化:提升单项业务的运行规范性和效率。
流程级发展阶段:数字化:关键业务流程及关键业务与设备设施、软硬件、行为活动等要素间的集成优化。
网络级发展阶段:数模化:组织(企业)级数字化和产业互联网级网络化,实现以数据为驱动的业务模式创新。
生态级发展阶段:数用化:生态级数字化和泛在物联网级网络化,推动与生态合作伙伴间资源、业务、能力等要素的开放共享和协同合作。
智能制造
智能特性:【资源要素】、互联互通、融合共享、系统集成、【新兴业态】
生命周期:【设备】、生产、物流、销售、服务
系统层级
【设备层】传感器、仪器仪表、机器、装置等
【单元层】企业内处理信息、实现监测和控制物理流程的层级
【车间层】面向工厂或车间的生产管理的层级
【企业层】面向企业经营管理的层级
【协同层】其内部和外部信息互联和共享,实现跨企业间业务协同的层级
3、信息安全技术基础知识
综合5分
综合5分
3.1 信息安全基础知识
3.1.1 信息安全概述
信息安全的定义、基本要素、作用与意义
信息安全是指为数据处理系统而采取的技术的和管理的安全保护,保护计算机硬件、软件、数据不因偶然的或恶意的原因而遭到破坏、更改和泄露。
信息安全的基本要素:机密性、完整性、可用性、可控性与可审查性。
信息安全的范围包括:设备安全、数据安全、内容安全和行为安全。
数据安全即采取措施确保数据免受未授权的泄露、篡改和毁坏,包括秘密性(泄露)、完整性(篡改)和可用性(损坏) 3 个方面。
3.1.2 信息存储安全
信息存储安全的定义、作用与意义
信息存储安全的范围:数据的加密、信息使用的安全、系统安全监控、计算机病毒防治、和防止非法的攻击等。
3.1.3 网络安全
网络安全的定义、作用与意义
网络安全的范围(安全漏洞、安全威胁和安全措施)
安全漏洞和隐患表现在:物理安全性、软件安全漏洞、不兼容使用安全漏洞等方面。
安全威胁表现在:非授权访问、信息泄露或丢失、破坏数据完整性、拒绝服务攻击、利用网络传播病毒等方面
安全措施的目标包括:访问控制、认证、完整性、审计和保密等5个方面
3.2 信息系统安全的作用与意义
国家安全与信息化领导小组的职能
国家对信息安全的相关要求和标准
3.3 信息安全系统的组成框架
3.3.1 技术体系
基础安全设备、终端设备安全、计算机网络安全、操作系统安全、数据库安全
3.3.2 组织机构体系
决策层、管理层、执行层
3.3.3 管理体系
法律管理、制度管理和培训管理
3.4 信息加解密技术
3.4.1 数据加密
数据加密的作用、意义和内涵
保密通信模型
数据加密是防止未经授权的用户访问敏感信息的手段,保障系统的机密性要素
3.4.2对称密钥加密算法
对称密钥算法的加密密钥和解密密钥相同,又称为共享密钥算法
DES:使用密钥加密的块算法(Data Encryption Standard),明文切分为 64 位的块(即分组),由 56 位的密钥控制变换成 64 位的密文。
三重DES(Triple-DES)是 DES 的改进算法,使用两把 56 位(112 位)的密钥对明文做三次 DES加解密,。
AES:高级加密标准(Advanced Encryption Standard,),分组长度 128 位,支持 128 位、192 位和 256 位 3 种密钥长度,用于替换脆弱的 DES 算法,且可以通过软件或硬件实现高速加解密。
IDEA:国际数据加密算法(International Data Encryption Algorithm),分组长度 64 位,密钥长度 128 位,已经成为全球通用的加密标准。
SM4:国密算法,分组长度和密钥长度都是 128 位。
3.4.3非对称密钥加密算法
用公钥加密,私钥解密,可实现保密通信;
用私钥加密,公钥解密,可实现数字签名;
用私钥加密,公钥解密,可实现数字签名;
RSA(Rivest,Shamir and Adleman):是一种国际通用的公钥加密算法,安全性基于大素数分解的困难性,密钥的长度可以选择,但目前安全的密钥长度已经高达 2048 位。RSA 的计算速度比同样安全级别的对称加密算法慢 1000 倍左右。
SM2:国密算法,基于椭圆曲线离散对数问题,在相同安全程度的要求下,密钥长度和计算规模都比 RSA 小得多。
3.5 密钥管理技术
3.5.1 对称密钥的分配与管理
密钥的使用控制(密钥标签和控制矢量)
控制密钥的安全性:主要有密钥标签和控制矢量两种技术。
密钥的分配方法有:物理方式、加密方式和第三方加密方式DKC。该第三方即密钥分配中心(Key Distribution Center,KDC)。
3.5.2 公钥加密体制的密钥管理
直接公开发布PGP
公用目录表
公钥管理机构
公钥证书及管理机构(CA)
3.5.3 公钥加密分配单钥密码体制的密钥
单钥密码体制的密钥分配方法
3.6 访问控制及数字签名技术
3.6.1 访问控制技术
访问控制的基本模型:主体、客体和控制策略
访问控制的实现技术
控制矩阵ACM:以主体为行索引,以客体为列索引的矩阵,该技术是后面三个技术的基础,当主客体元素很多的时候实现困难。
控制表ACL:按列(即客体)保存访问矩阵,是目前最流行、使用最多的访问控制实现技术。
能力表Capabilities:按行(即主体)保存访问矩阵
授权关系表Authorization Relations:抽取访问矩阵中的非空元素保存,当矩阵是稀疏矩阵的时候很有效,常用于安全数据库系统
3.6.2 数字签名
数字签名的定义和条件
数字签名是公钥加密技术与数字摘要技术的应用。
数字签名的条件是:可信、不可伪造、不可重用、不可改变和不可抵赖。
身份认证分类(数字签名、密钥和口令)
基于对称密钥的签名只能在两方间实现,而且需要双方共同信赖的仲裁人
基于公钥加密算法的数字签名则可以在任意多方间实现,不需要仲裁且可重复多次验证。
实际应用时先对文件做摘要,再对摘要签名,这样可以大大提升数字签名的速度。同时摘要的泄露不影响文件保密
实际应用时先对文件做摘要,再对摘要签名,这样可以大大提升数字签名的速度。同时摘要的泄露不影响文件保密
3.7 信息安全的抗攻击技术
3.7.1 密钥的选择
密钥的分类:数据加密密钥(DK)、密钥加密密钥(KK)
密钥生成涉及的三个因素:增大密钥空间、选择强钥和密钥的随机性
3.7.2 拒绝服务攻击与防御
DoS是使系统不可访问并因此拒绝合法的用户服务要求的行为,侵犯系统的可用性要素
传统拒绝服务攻击的分类:消耗资源、破坏或更改配置信息、物理破坏或改变网络部件、利用服务程序中的处理错误使服务失效
分布式拒绝服务攻击(DDoS)
现有的DDoS工具一般采用 Client(客户端)、Handler(主控端)、Agent(代理端)三级结构。
防御方法:防火墙、通信数据量的统计、特征识别、修正问题和漏洞
3.7.3 欺骗攻击与防御
ARP欺骗:ARP协议解析IP地址为MAC网卡物理地址,欺骗该机制即可阻断正常的网络访问。
常用防范办法为固化ARP表、使用ARP服务器、双向绑定和安装防护软件
常用防范办法为固化ARP表、使用ARP服务器、双向绑定和安装防护软件
DNS欺骗:DNS协议解析域名为IP地址,欺骗该机制可以使用户访问错误的服务器地址。
其检测有被动监听检测、虚假报文探测和交叉检查查询 3 种方法。
其检测有被动监听检测、虚假报文探测和交叉检查查询 3 种方法。
IP欺骗:攻击者修改IP数据报的报头,把自身的IP地址修改为另一个IP,以获取信任。
常用防火墙等防范 IP 欺骗。
常用防火墙等防范 IP 欺骗。
3.7.4 端口扫描
端口扫描的目的和基本原理。
原理:尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复,则说明该端口开放,甚至可以获取一些信息
目的:入侵者搜集信息的几种常用手法之一。
目的:入侵者搜集信息的几种常用手法之一。
端口扫描原理分类:全TCP连接、半打开式SYN扫描、FIN扫描和代理扫描
3.7.5 强化TCP/IP堆栈以抵御拒绝服务攻击
同步包风暴(SYN Flooding):是应用最广泛的一种DoS攻击方式,攻击 TCP 协议建立连接的三次握手,让目标主机等待连接完成而耗尽资源。可以减少等待超时时间来防范。
ICMP攻击:例如“Ping of Death”攻击操作系统的网络层缓冲区,旧版操作系统会崩溃死机。防范方法是流量过滤、打补丁、升级到新版操作系统。
SNMP攻击:SNMP 协议常用于管理网络设备,早期的 SNMP V1 协议缺少认证,可能被攻击者入侵。防范方法是升级 SNMP 协议到 V2 以上并设置访问密码。
3.7.6 系统漏洞扫描
系统漏洞扫描的基本原理和意义
基于网络的漏洞扫描方法:通过网络来扫描目标主机的漏洞,常常被主机边界的防护所封堵,因而获取到的信息比较有限。
基于主机的漏洞扫描方法:通常在目标系统上安装了一个代理(Agent)或者是服务(Services),因而能扫描到更多的漏洞。有扫描的漏洞数量多、集中化管理、网络流量负载小等优点
3.8 信息安全的保障体系与评估方法
3.8.1 计算机信息系统安全保护等级
GB 17859—1999安全保护能力的5个等级
第 1 级C1:用户自主保护级(对应 TCSEC 的 C1 级)
第 2 级C2:系统审计保护级(对应 TCSEC 的 C2 级)
第 3 级B1:安全标记保护级(对应 TCSEC 的 B1 级)
第 4 级B2:结构化保护级(对应 TCSEC 的 B2 级)
第 5 级B3:访问验证保护级(对应 TCSEC 的 B3 级)
安全性规章与保护私有信息规则(信息系统安全法规与制度、计算机防病毒制度和保护私有信息规则)
安全保密技术主要有
DLP:数据泄密防护(Data Leakage Prevention):通过一定的技术手段,防止企业的指定数据或信息资产以违反安全策略规定的形式流出企业的一种策略。
DW:数字水印(Digital Watermark):通过数字信号处理方法,在数字化的媒体文件中嵌入特定的标记。水印分为可感知的和不易感知的两种。
常用安全协议:
SSL协议:是介于应用层和TCP层之间的安全通信协议,提供保密性通信、点对点身份认证、可靠性通信 3 种安全通信服务。
PGP(Pretty Good Privacy):是一种加密软件,应用了多种密码技术,包括 RSA、IDEA、完整性检测和数字签名算法,实现了一个比较完善的密码系统。广泛地用于电子邮件安全。
IPSec:互联网安全协议(Internet Protocol Security)。IPSec 是工作在网络层的安全协议,主要优点是它的透明性,提供安全服务不需要更改应用程序。
SET 协议。主要用于解决用户、商家和银行之间通过信用卡支付的交易问题,保证支付信息的机密、支付过程的完整、商户和持卡人身份合法性及可操作性。
HTTPS 协议。详见第 3 小时,这里不再赘述。
3.8.2 安全风险管理
风险评估的基本要素及其关系(脆弱性、资产、威胁、风险和安全措施)
安全风险管理的定义、作用和重要性
安全威胁的定义和内涵
脆弱性评估方法
安全风险是指由于系统存在的脆弱性所导致的安全事件发生的概率和可能造成的影响。
风险评估是对信息系统及由其处理、传输和存储的信息的保密性、完整性和可用性等安全属性进行科学评价的过程,是信息安全保障体系建立过程中重要的评价方法和决策机制
风险评估的基本要素为:资产、脆弱性、威胁、风险和安全措施
风险计算模型包含:信息资产、弱点/脆弱性、威胁等关键要素。
脆弱性评估:安全风险评估中的重要内容,脆弱性不仅包括各种资产本身存在的脆弱性,没有正确实施的安全保护措施本身也可能是一个安全薄弱环节
安全威胁:一种对机构及其资产构成潜在破坏的可能性因素或者事件。
4、软件工程基础知识
综合8~15分
案例、论文
综合8~15分
案例、论文
4.1软件工程
4.1.1软件工程概述
软件工程是以工程的管理方法去管理软件项目
软件危机(Software Crisis)具体表现为:软件开发进度难以预测、软件开发成本难以控制、软件功能难以满足用户期望、软件质量无法保证、软件难以维护和软件缺少适当的文档资料。
软件的生命周期:需求分析、软件设计、软件开发、运行维护、【淘汰】
4.1.2 软件过程模型(软件生命周期模型)
瀑布模型(结构方法、需求明确)
特点:
严格区分阶段,每个阶段因果关系紧密相连;
只适合需求明确的项目
缺陷:需求难以一次确定、变更的代价高、结果难以预见、各阶段工作不能并行。
过程:需求分析SRS,软件设计,【程序设计】,编码实现,单元测试,集成测试,系统测试,运行维护
原型模型(迭代方法、需求不明确)
特点:适合需求不明确的项目
阶段:原型开发阶段、目标软件开发阶段
分类
抛弃型原型:快速原型模型
演化型原型:演化模型
与其他模型结合:
与瀑布结合为螺旋模型
增量模型
敏捷模型
过程:
螺旋模型(循环迭代方法、快速原型+瀑布,强调风险,大型软件开发)
考虑了风险问题
以快速原型为基础+瀑布模型
支持大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法
过程:把整个软件开发流程分成多个阶段,每一个阶段都由目标设定(决定目标、方案和限制)、风险分析(评价方案、识别风险、消除风险)、开发和有效性验证、评审 4 部分组成。
4.1.3 敏捷模型(迭代增量、适应性、以人为本、小型项目)
特点:适应性的、以人为本、增量选代、适合小型项目
敏捷宣言
个体和交互胜过过程和工具
可工作的软件胜过大量的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
敏捷方法
极限编程XP:高效、低风险、【测试先行】、近螺旋式的开发方法。
4大价值观
沟通交流【加强面对面沟通】
简单朴素【不过度设计】
反馈【及时反馈】
勇气【接受变更的勇气】
水晶Cockburn:提倡机动性,强调不同的项目采用不同策略
并列争球SCRUM:1到4周为一个选代周期,按照需求优先级实现,侧重于项目管理
该方法侧重于项目管理。Scrum包括一系列实践和预定义角色的过程骨架(是一种流程、计划、模式,用于有效率地开发软件)。
在Scrum 中,使用产品 Backlog来管理产品的需求,产品Backlog 是一个按照商业价值排序的需求列表。
根据 Backlog 的内容,将整个开发过程分为若干个短的迭代周期(Sprint),在 Sprint 中,Scrum 团队从产品Backlog 中挑选最高优先级的需求组成 Sprint Backlog。
在每个迭代结束时,Scrum 团队将递交潜在可交付的产品增量。当所有 Sprint 结束时,团队提交最终的软件产品
在Scrum 中,使用产品 Backlog来管理产品的需求,产品Backlog 是一个按照商业价值排序的需求列表。
根据 Backlog 的内容,将整个开发过程分为若干个短的迭代周期(Sprint),在 Sprint 中,Scrum 团队从产品Backlog 中挑选最高优先级的需求组成 Sprint Backlog。
在每个迭代结束时,Scrum 团队将递交潜在可交付的产品增量。当所有 Sprint 结束时,团队提交最终的软件产品
特征驱动开发方法FDD:认为有效的软件开发需要3要素【人、过程、技术】,将【开发人员分类】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。
开放式源码:采用虚拟团队,开发成员分布各地
自适应ASD:采用预测猜测--协作合作--学习的方式进行开发
动态系统开发方法DSDM:倡导以业务为核心
4.1.4 统一过程模型(UP|RUP)(迭代增量、用例驱动、以架构为中心、重量级)
RUP是一种重量级过程模型,属于构件化开发使用的软件过程模型。将项目管理、业务建模、分析与设计等统一起来,贯穿整个开发过程
特点:用例驱动、以架构为核心、迭代和增量
阶段、生命周期
初始:定义最终产品视图和业务模型;确定系统范围
细化:设计及确定系统架构;制定工作计划及资源要求
【构造】:开发剩余构件和应用程序功能,把这些构件集成为产品,并进行详细测试
【移交】:确保软件对最终用户是可用的,进行β测试,制作产品发布版本
每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经满足。如果评审结果令人满意,就可以允许项目进入下一个阶段。这样做的好处是在软件开发的早期就可以对关键的、影响大的风险进行处理。
核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、【环境】
“4+1”视图模型(被UML吸收采纳)
逻辑视图:对应最终用户,主要支持功能性需求,即在为用户提供服务方面系统所应该提供的功能。逻辑视图常用类图、对象图、状态图、协作图表示。
实现视图:又称为开发视图,对应程序员,关注软件开发环境下实际模块的组织,描述系统的各部分如何被组织为模块和组件即开发环境中软件的静态组织结构。该视图通常包含包图和组件图。
进程视图:又叫过程视图,对应系统集成人员,考虑一些非功能性的需求,如性能和可用性,它可以解决并发性、分布性、系统完整性、容错性的问题。进程视图常用活动图表示。
部署视图:又叫物理视图,对应系统、网络工程师。描述如何将前三个视图中所述的系统设计实现为一组现实世界的实体。展示了如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通信等问题。
用例视图:所有其他视图都依靠用例视图(场景)来指导它们,这就是将模型称为“4+1”的原因。
其他模型
V模型(测试并行)
特点
测试贯穿于始终
测试分阶段,测试计划提前
过程
构件组装模型(重用灵活)
优点:易扩展、易重用、降低成本、安排任务更灵活。
缺点:构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其它指标(如性能)、第三方构件质量难控制,
示例:方仓医院、乐高积木
过程:需求分析和定义、设计构建组装、建立构件库、构建应用组件、测试和发布
快速开发模型(RAD)(构件+瀑布、不适合新技术)
定义:
基于瀑布和构件模型而来的开发方法,主流程用瀑布,每个阶段用构件提升构建速度
基于构件的开发方法,用户参与、开发或复用构件、模块化要求高,不适合新技术
过程:业务建模、数据建模、过程建模、应用生成、测试与交付
变换模型:适用于形式化开发;
智能模型:基于规则系统的专家系统
喷泉模型:面向对象方法,复用性好,开发过程无间隙,节省时间;
4.1.5 软件能力成熟度模型
软件能力成熟度模型(Capability Maturity Model for Software,CMM) 是一个概念模型,模型框架和表示是刚性的,不能随意改变,但模型的解释和实现有一定弹性。
软件能力成熟度模型集成(Capability Maturity Model Integration for Software,CMMI)是在 CMM 的基础上发展而来的。CMMI 提供了一个软件能力成熟度的框架,它将软件过程改进的步骤组织成5个成熟度等级:初始级、已管理级、已定义级、量化管理级、优化级。量化管理级与已定义级的区别是对过程性能的可预测。
4.2需求工程
4.2.1 需求工程概述
需求工程的发展、内容和特点
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望
活动阶段
需求开发:需求获取、需求分析、形成需求规格(形成SRS)、需求确认与验证【形成需求基线(经过评审的SRS)】
需求管理(对需求基线的管理):变更控制、版本控制、需求跟踪、需求状态跟踪
4.2.1 需求获取
分层
业务需求(整体全局):反映了组织机构或客户对系统、产品高层次的目标要求
用户需求(用户视角):描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望。通常采取用户访谈和问卷调查等方式,对用户使用的场景(scenarios)进行整理,从而建立用户需求。业务需求和用户需求构成了用户原始需求文档的内容
系统需求(软件需求)
功能需求:从系统操作的角度定义了开发人员必须实现的软件功能,来满足业务需求和用户需求。
业务需求
非功能需求(性能等)
系统约束
项目管理维度QFD
基本需求(明示,常规需求)
期望需求(隐含)
兴奋需求(多余)
需求获取的基本步骤
(1)开发高层的业务模型。
(2)定义项目范围和高层需求。
(3)识别用户角色和用户代表。
(4)获取具体的需求。
(5)确定目标系统的业务工作流。
(6)需求整理与总结。
(2)定义项目范围和高层需求。
(3)识别用户角色和用户代表。
(4)获取具体的需求。
(5)确定目标系统的业务工作流。
(6)需求整理与总结。
需求获取的方法
用户面谈:1对1-3,有代表性的用户,了解主观想法,交互好,成本高,要有领域知识支撑。
需求专题讨论会(JRP)联合需求计划:高度组织的群体会议,各方参与,了解想法,消除分歧,交互好,成本高
问卷调查:用户多,无法一一访谈,成本低。
现场观察:针对较为复杂的流程和操作。
原型化方法:通进简易系统方式解决早期需求不确定问题。
头脑风暴法:一群人围绕新业务,发散思维,不产生新的观点。
需求分析SA
参见4.3
需求定义SRS
严格定义法
所有需求都能够被预先定义
开发人员与用户之间能够准确而清晰地交流
采用图形/文字可以充分体现最终系统
原型法
并非所有的需求都能在开发前被准确的说明
项目参加者之间通常都存在交流上的困难
需要实际的、可供用户参与的系统模型
有合适的系统开发环境
反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
需求确认与验证
需求评审:正式评审、非正式评审
需求测试
用户确认签字
验收标准之一
4.2.2 需求变更
变更控制过程
问题分析和变更描述
变更分析和成本计算:CCB来决策审批
变更实现
变更控制委员会CCB由项目所涉及的多方成员共同组成,通常包括用户和实施方的决策人员。
CCB是决策机构,不是作业机构,通常 CCB 的工作是通过评审手段来决定项目是否能变更,但不提出变更方案。
过程及操作步骤为制定决策、交流情况、重新协商约定。
过程及操作步骤为制定决策、交流情况、重新协商约定。
4.2.3 需求追踪
双向跟踪及需求跟踪矩阵
正向跟踪:用户原始需求->软件需求->下游产品
逆向跟踪:下游产品->软件需求->用户原始需求
UC需求跟踪矩阵:纵列能看出做的多余功能,横列能看出未做的功能
4.3 系统分析与设计
系统分析与设计的目标、意义和范围
4.3.1 结构化方法(面向功能、数据流,DFD、模块)
结构化方法的定义、合理性准则和使用的手段
结构化分析、设计和实现图示(DFD、ERD、UML、流程图、NS图、PAD、PDL和E-R图)
结构化方法又称为面向功能的软件开发方法或面向数据流的软件开发方法
结构化分析SA(定义、分析步骤、DFD和数据字典)
利用图形表达用户需求中的功能需求,使用的手段主要有数据流图(Data Flow Diagram,DFD)、数据字典、结构化语言、判定表以及判定树等。
DFD组成元素:数据流、处理/加工、数据存储和外部项。
DFD图规则:
父图数据流必须在子图中出现;
一个处理至少有一个输入流和一个输出流;
一个存储必定有流入和流出;
一个数据流至少有一端是处理端;
模型表达的信息是全面的、完整的、正确的和一致的。
一个处理至少有一个输入流和一个输出流;
一个存储必定有流入和流出;
一个数据流至少有一端是处理端;
模型表达的信息是全面的、完整的、正确的和一致的。
分析步骤为:明确目标、确定系统范围、建立顶层DFD图、构建第一层DFD分解图、开发DFD层次结构图、检查确认DFD图
数据字典(Data Dictionary)是一种标记用户可以访问的数据项和元数据的目录,是对系统中使用的所有数据元素定义的集合,包括数据项、数据结构、数据流、数据存储和处理过程。
结构化设计SD(基本思想、模块结构、概要设计、详细设计)
SD是一种面向数据流的设计方法,以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程
软件结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。
模块是实现功能的基本单位,一般具有功能、逻辑和状态3个基本属性。
模块独立性原则(高内聚、低耦合、四要素)
模块的四要素
输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
处理功能:指模块把输入转换成输出所做的工作。
内部数据:模块本身引用的数据。
程序代码:指用来实现模块功能的程序。
耦合:模块间的关联
非直接耦合
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合
一组模块借助参数表传递简单数据
标记耦合
一组模块通过参数表传递记录信息(数据结构)
控制耦合
模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合
一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息
公共耦合
多个模块都访问同一个公共数据结构
内容耦合
一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口
内聚:模块内部件的联系程度
功能内聚
完成一个单一功能各个部分协同工作,缺一不可
顺序内聚
处理元素相关,而且必须顺序执行
通信内聚
所有处理元素集中在一个数据结构的区域上
过程内聚
处理元素相关,而且必须按特定的次序执行
时间内聚(瞬时内聚)
所包含的任务必须在同一时间间隔内执行
逻辑内聚
完成逻辑上相关的一组任务
偶然内聚(巧合内聚)
完成一组没有关系或松散关系的任务
保持模块的大小适中
多扇入,少扇出
深度和宽度均不宜过高:防止模块过于复杂,深度代表调用别的模块层次多、宽度代表调用别的模块数量多
阶段
没有原型设计
概要设计【外部设计】:功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块|系统结构图
详细设计【内部设计】:为每个具体任务选择适当的技术手段和处理方法,详细设计的表示工具有图形工具、表格工具和语言工具。图形有业务流图、程序流程图、问题分析图(Problem AnalysisDiagram,PAD)、NS 流程图等。
结构化编程SP(基本思想、步骤和结构化程序设计的原则)
SP通过顺序、分支和循环三种基本的控制结构可以构造出任何单入口单出口的程序。
SP强调:自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。
P原则:程序=(算法)+(数据结构)。两者分开设计,以算法(函数或过程)为主。
数据库设计(概念结构设计、逻辑结构设计和E-R)
建立抽象的概念数据模型,通常采用实体-联系图(Entity Relationship Diagram,E-R图)来表示。
4.3.2 面向对象方法(对象类、结构、主题、属性、服务|方法;类、对象;)
面向对象方法的定义、内涵、过程和设计原则
面向对象分析方法OOA(对象类、结构、主题、属性、服务|方法)
5个层次:主题层、对象类层、结构层、属性层和服务层
5个活动:标识对象类、标识结构、定义主题、定义属性和定义服务
5个步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法
基本原则:抽象、封装、继承、分类、聚合、关联、消息通信、粒度控制和行为分析
面向对象设计方法OOD(边界类、控制类、实体类)
类封装了信息和行为,是具有相同属性、方法和关系的对象集合的总称
类的类型
边界类:跟外界打交道
人机交互:用户界面
黄金三法则
置于用户控制之下
以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式;
提供灵活的交互;
允许用户交互可以被中断和撤销;
当技能级别增加时可以使交互流水化并允许定制交互;
使用户隔离内部技术细节;
设计应允许用户和出现在屏幕上的对象直接交互;
提供灵活的交互;
允许用户交互可以被中断和撤销;
当技能级别增加时可以使交互流水化并允许定制交互;
使用户隔离内部技术细节;
设计应允许用户和出现在屏幕上的对象直接交互;
减少用户的记忆负担
减少对短期记忆的要求
建立有意义的缺省
定义直觉性的捷径
界面的视觉布局应该基于真实世界的隐喻
以不断进展的方式揭示信息
建立有意义的缺省
定义直觉性的捷径
界面的视觉布局应该基于真实世界的隐喻
以不断进展的方式揭示信息
保持界面的一致性
允许用户将当前任务放入有意义的语境
在应用系列内保持一致性
如过去的交互模型已建立起了用户期望,除非有迫不得已的理由不要改变它
在应用系列内保持一致性
如过去的交互模型已建立起了用户期望,除非有迫不得已的理由不要改变它
机器:API
例:显示屏、窗体、打印机接口、通信协议、对话框、菜单、购物车、报表、二维码
控制类:调用实体类,进行演算得到结果给边界类
应用逻辑、业务逻辑、实体访问逻辑
例如:身份验证器
实体类
对接数据库,实体和关系的映射
基本过程
面向对象程序设计OOP(对象,设计模式、封装继承多态)
设计原则
单一职责原则:设计目的单一的类,只完成一个职能,关系简单,使系统达到高内聚低耦合
开闭原则:对扩展开放,对修改封闭,防止破坏原有代码的功能
李氏(Liskov)替换原则:子类可以替换父类,泛华关系,子类不能重写父类的方法
依赖倒置原则:要依赖于抽象,而不是具体实现,针对接口编程,不要针对实现编程,防止过度耦合,灵活性、可扩展性都会更好
接口隔离原则:使用多个专门的接口比使用单一的总接口要好
组合重用原则:要尽量使用组合,而不是继承关系达到重用目的,防止继承的紧耦合
迪米特(Demeter)原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解,信息隐蔽原则
软件设计模式
创建型:单抽原件厂,用来创建对象
单例模式:Singleton、每次只实例化一个对象(唯一实例)
保证一个类只有一个实例,并提供一个访问它的全局访问点
抽象工厂模式:Abstract Factory、抽象接口,生产成系列对象
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类
原型模式:Prototype、复用、拷贝原型
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象
建造者模式:Builder、类与构造分离,复杂对象构造
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
工厂方法模式:Factory Method、子类实例化对象,动态生产对象
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟
结构型:外侨组员戴配饰,处理类或对象的组合
外观模式:Fagade、对外统一接口
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用
桥接模式:Bridge、抽象实现分离,继承
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化
组合模式:Composite、部分与整体的关系、树形目录结构
将对象组合成树型结构以表示“整体·部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
享元模式:Flyweight、细粒度复用共享,汉字编码
提供支持大量细粒度对象共享的有效方法
代理模式:Proxy、代理控制、快捷方式
为其他对象提供一种代理以控制这个对象的访问
适配器模式:Adapter、接口转换、兼容
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作
装饰器模式:Decorator、动态附加职责
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
行为型:观摩对策、责令解放、戒忘台,描述类与对象之间怎样交互、怎样分配职责
观察者模式:Observer、通知、自动更新,联动
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
模板方法:Template Method、算法结构不变,子类定义步骤、框架
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定 义算法的某些特定步骤
迭代模式:lterator、顺序访问、数据集
提供一种方法来顺序访问一个聚合对象中的各个元素
策略模式:Strategy,算法替换、多方案切换
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化
责任链模式:Chain of Responsi bility,传递请求、职责、链接
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求
命令模式:Command,参数化、日志记录、可撤销
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,
解释器模式:Interpreter,文法、解释、虚拟机
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器根据文法表示来解释语言中的句子
访问者模式:Visitor,类不变、新操作,数据与操作分离
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作
中介者模式:Mediator,不直接引用
用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对 象间的交互
备忘录模式:Memento,保存、恢复、游戏存档
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态
状态模式:State,状态变成类
允许一个对象在其内部状态改变时改变它的行为
OOP以对象为核心,该方法认为程序由一系列对象组成。
基本特点有:封装、继承和多态
封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作组装到一起。
继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。继承可以分为4类,分别为取代继承、包含继承、受限继承
和特化继承。
和特化继承。
多态指同一操作作用于不同的对象,可以产生不同的结果。
数据持久化与数据库(SQL、JDBC和JDO)
永久保存对象的状态,需要进行对象的持久化(Persistence),把内存中的对象保存到数据库或可永久保存的存储设备中。
在多层软件设计和开发中采用持久层(Persistence Layer)专注于实现数据持久化,将对象持久化到关系数据库中,需要进行对象/关系的映射(Object/Relation Mapping,ORM)。目前主流的持久化技术框架包括 Hibernate、iBatis/Mybatis和 JDO 等
4.3.3 其他设计方法
构件与软件重用
软件重用是使用已有软件产品来开发新的软件系统的过程,分为水平式重用(标准函数库)和垂直式重用(区块链、域分析)两种类型
软件架构重用是一个解释性、交互式和反复迭代的过程,包括了多项活动。
信息提取通过分析系统现有设计和实现工件来构造它的模型。其结果用于在后续活动中构造系统的视图。
数据库构建活动把视图中包含的元素和关系转换为数据库中的标准存储格式。
视图融合活动包括定义和操作数据库中存储的信息理顺、加强并建立起元素之间的连接。
重构由两个主要活动组成:可视化和交互式及模式定义与识别。前者提供了一种让用户操作架构元素的机制,后者则提供了用于架构重构的设施
信息提取通过分析系统现有设计和实现工件来构造它的模型。其结果用于在后续活动中构造系统的视图。
数据库构建活动把视图中包含的元素和关系转换为数据库中的标准存储格式。
视图融合活动包括定义和操作数据库中存储的信息理顺、加强并建立起元素之间的连接。
重构由两个主要活动组成:可视化和交互式及模式定义与识别。前者提供了一种让用户操作架构元素的机制,后者则提供了用于架构重构的设施
逆向工程
相关概念
(1)重构/重组(Restructuring)。重构是指在【同一抽象级别】上【转换系统描述形式】
(2)设计恢复(Design recovery)。设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。逆向工程得出的设计是设计恢复,但不一定能够抽象还原到原设计。
(3)逆向工程(Reverse engineering):逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。
(4)正向工程(Forward engineering)。正向工程是指不仅从现有系统中恢复设计信息且使用该信息去改变或重构现有系统,以改善其整体质量。
(5)再工程/重构工程(Re-engineering)。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。
过程
现有工程
再/重构工程
逆向工程
实现级:包括程序的抽象语法树、符号表、过程的设计表示
结构级:包括反映程序分量各部分之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型
新需求
正向工程
新系统
形式化方法:净室软件工程
4.4 软件测试
软件测试的目的和意义
测试是确保软件的质量,确认软件以正确的方式做了用户所期望的事情。
软件测试通常在规定的时间和成本内完成,以尽量多地发现漏洞,但不能保证发现所有的漏洞。
软件测试通常在规定的时间和成本内完成,以尽量多地发现漏洞,但不能保证发现所有的漏洞。
4.4.1 测试方法
按程序执行状态分
动态测试是通过运行程序发现错误,包括黑盒测试(等价类划分、边界值分析法、错误推测法)与白盒测试(各种类型的覆盖测试)。
静态测试是人工测试方式,包括桌面检查、代码走查、代码审查。
按程序执行方式分:人工测试、自动化测试
按是否关注内部实现和结构分:黑盒测试、白盒测试
4.4.2 测试阶段
阶段
单元测试:主要是对该软件的模块进行测试,往往由程序员自己完成。常采用白盒的静态测试如静态分析、代码审查等,也可以采用自动化的动态测试。
集成测试:对通过单元测试的模块进行组装测试,以验证组装的正确性,一般采用白盒测试和黑盒测试结合的方法。集成测试可以分为一次性组装和增量式组装,增量式组装测试效果更好。集成测试计划一般在概要设计阶段完成。
系统测试:检查组装完成的系统是否符合 SRS 的要求。主要测试内容包括功能测试、性能测试、健壮性测试、安全性测试等,结束标志是测试工作已满足测试目标所规定的需求覆盖率,并且测试所发现的缺陷都已全部归零。
验收测试:确认系统满足用户需求或者协议的要求,确保系统能支撑业务运行
测试项:代码审查、语句覆盖测试、结构覆盖测试、功能测试、性能测试、鲁棒性测试(瞬时稳定性)、压力测试、安全性测试、可靠性测试(长期持久性)和验收测试
其他测试还有 AB 测试、Web 测试、链接测试和表单测试等。
4.5 净室软件工程(盒子结构规约、形式化方法、正确性、函数、抽样)
净室软件工程的定义、意义和作用
净室即无尘室、洁净室。也就是一个受控污染级别的环境。
使用盒子结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制。
4.5.1 理论基础:函数和抽样理论
4.5.2 技术手段
统计过程控制下的增量式开发:控制迭代
基于函数的规范和设计
行为视图(黑盒)
有限状态机视图(状态盒)
过程视图(明盒)
正确性验证:净室工程的核心,使用正确性验证替代测试
统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法
4.5.3 应用与缺点:太理想化、忽视测试、传统软件工程的弊端
4.6 基于构件的软件工程(CBSE、分布对象、复用)
CBSE的定义、作用和特点
定义:是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。
构件特征
可组装性:所有外部交互必须通过公开定义的接口进行。
可部署性:必须能作为一个独立实体在提供其构件模型实现的构件平台上运行
文档化:构件必须是完全文档化的。
独立性:构件应该是独立的,如确实需要其他构件提供服务,则应显示声明
标准化:符合某种标准化的构件模型。
4.6.1 构件和构件模型
构件模型定义了构件实现、文档化以及开发的标准。目前主流的构件模型是Web Services模型、Sun 公司的 EJB 模型和微软的.NET 模型。
构建模型要素:接口、使用信息和部署信息。
构件模型提供了一组被构件使用的通用服务,包括平台服务和支持服务。
容器是构件模型基础设施,是支持服务的一个实现加上一个接口定义,构件必须提供该接口定义以便和容器整合在一起。
4.6.2 CBSE 过程
支持基于构件组装的软件开发过程主要包括:
(1)系统需求概览。
(2)识别候选构件。
(3)根据发现的构件修改需求。
(4)体系结构设计。
(5)构件定制与适配。
(6)组装构件,创建系统。
(1)系统需求概览。
(2)识别候选构件。
(3)根据发现的构件修改需求。
(4)体系结构设计。
(5)构件定制与适配。
(6)组装构件,创建系统。
CBSE 过程与传统的软件开发过程的不同点:
(1)早期需要完整的需求,以便尽可能多地识别出可复用的构件。
(2)早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE。
(3)架构设计完成后,可能需要修改构件以适合功能和架构的需求。
(4)开发过程就是组装构件的过程,有时需要开发适配器。
(5)CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围
(1)早期需要完整的需求,以便尽可能多地识别出可复用的构件。
(2)早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE。
(3)架构设计完成后,可能需要修改构件以适合功能和架构的需求。
(4)开发过程就是组装构件的过程,有时需要开发适配器。
(5)CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围
4.6.3 构件组装
顺序组装:按顺序调用己经在在的构件,可以用两个已经存在的构件来创造一个新的构件
层次组装:被调用构件的“提供”接口必须和调用构件的“请求”接口兼容。
叠加组装:多个构件合并形成新构件,新构件整合原构件的功能,对外提供新的接口
构件组装可能面临接口不兼容的问题,常见的有参数不兼容、操作不兼容和操作不完备 3 种。这时需要编写适配器构件来解决
不兼容的问题。
不兼容的问题。
4.7 软件项目管理
4.7.1 项目管理概述
软件项目管理的主要内容(进度、配置、质量、风险管理)
4.7.2 软件进度管理(活动)
可能案例题
可能案例题
工作分解结构(Work Breakdown Structure,WBS)是把一个项目,按一定的原则分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的活动中,直到分解不下去为止。以可交付成果为导向,对项目要素进行的分组,总是处于计划过程的中心。
软件进度管理一般包括:活动定义、活动排序、活动资源估计、活动历时估计、制定进度计划和进度控制 6 个过程
活动定义:根据WBS工作包定义活动
活动排序:定义工作包的先后顺序
活动资源估算:这个工作由N人天完成
活动历时估算:几个人几人天干完,存在不可压缩工期
专家判断法
三点估算法
功能点估算法
自上而下的估算
自下而上的估算
制定进度计划:通过关键路径法或甘特图来确定项目的整体规划
关键活动为最长路径
最短完成时间为关键路径的时间
最短完成时间为关键路径的时间
进度控制:任务执行过程中是否需要调整
判断是否调整
是否为关键活动
偏差是否大于总时差
偏差是否大于自由时差(不影响别人)
偏差是否大于总时差
偏差是否大于自由时差(不影响别人)
调整方法
赶工:增加资源,加班、加人
快速跟进:活动并行执行
快速跟进:活动并行执行
活动定义是指确定完成项目的各个可交付成果所必须进行的各项具体活动,还需要明确每个活动的前驱、持续时间、必须完成日期、里程碑或可交付成果
任务活动图是项目进度管理、项目成本管理等一系列项目管理活动的基础,通常采用甘特图等方式来展示和管理项目活动
4.7.3 软件配置管理(SCM,变更控制、版本控制)
SCM是一种标识、组织和控制[修改]的技术
SCM目的:使错误降为最小并最有效地提高生产效率
SCM核心内容
变更控制(Change Control)是指对变更进行管理,确保变更有序进行。
版本控制(Version Control)是指对软件开发过程中各种文件变更的管理,最主要的功能就是追踪和记录文件的变更、[并行开发]
4.7.4 软件质量管理
软件质量保证(Software Quality Assurance,SOA)的主要任务:审计与评审、报告、处理不符合问题和【体系认证】
软件质量保证(SQA)的目的是:使软件过程对于管理人员来说是可见的。
软件质量认证,国内软件企业主要采用的是【通用ISO 9001】和【软件CMMI(初始、已管理、已定义、量化管理、优化)】。
质量保证QA:一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。
质量控制QC:是实时监控项目的具体结果,以判断它们是否符合相关质量标准;制定有效方案,以消除产生质量问题的原因。
4.7.5 软件风险管理
软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。
风险管理的主要目标是【预防风险】,及【应对发生的风险】
风险管理体系
Bochm把风险管理活动分成:风险估计(风险辨识、风险分析、风险排序)和风险控制(风险管理计划、风险处理、风险监督)两大阶段。
Charette把风险分成:分析(辨识、估计、评价)和管理(计划、控制、监督)两大阶段。
软件过程活动工具:软件开发工具、软件维护工具、软件管理工具、软件支持工具
5、数据库设计基础知识
综合2~5分
案例
综合2~5分
案例
5.1 数据库基本概念
5.1.1 数据库技术的发展及分类
数据库的定义和发展阶段
DB、DBS 和 DBMS 区分方法
数据库分类(分布式数据库系统、并行数据库系统、数据仓库与数据挖掘)
基本概念
数据(Data):是描述事物的符号记录,它具有多种表现形式,如文字、图形、图像、声音和语言等。
数据库(DataBase,DB):是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。
数据库系统(DataBase System,DBS):是采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统。
数据库管理系统(DataBase Management System,DBMS):是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。
DBMS通常分三类:关系数据库系统(Relation DataBase System,RDBS)、面向对象的数据库系统(Object-OrientedDataBase Systems,OODBS)、对象关系数据库系统(Objective Relational DataBase System,ORDBS)。
数据库(DataBase,DB):是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。
数据库系统(DataBase System,DBS):是采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统。
数据库管理系统(DataBase Management System,DBMS):是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。
DBMS通常分三类:关系数据库系统(Relation DataBase System,RDBS)、面向对象的数据库系统(Object-OrientedDataBase Systems,OODBS)、对象关系数据库系统(Objective Relational DataBase System,ORDBS)。
发展阶段
1、人工管理阶段。
特点:数据量较少、数据不保存、没有软件系统对数据进行处理。
缺点:应用程序与数据之间依赖性太强、数据组与数据组之间存在数据冗余。
特点:数据量较少、数据不保存、没有软件系统对数据进行处理。
缺点:应用程序与数据之间依赖性太强、数据组与数据组之间存在数据冗余。
2、文件系统阶段。
特点:数据可长期保留、数据不属于某个特定应用、文件组织形式多样化。
缺点:数据冗余、数据不一致性、数据孤立。
特点:数据可长期保留、数据不属于某个特定应用、文件组织形式多样化。
缺点:数据冗余、数据不一致性、数据孤立。
3、数据库系统阶段。
特点:采用复杂的数据模型表示数据结构、有较高的数据独立性。
优点:对应用程序的高度独立性、数据的充分共享性、操作方便性。
特点:采用复杂的数据模型表示数据结构、有较高的数据独立性。
优点:对应用程序的高度独立性、数据的充分共享性、操作方便性。
5.1.2 数据模型
层次和网状数据库系统
关系数据库系统
第三代数据库系统
数据模型三要素
数据结构
数据操作
数据的约束条件
实体完整性:是指实体的主属性不能取空值。
参照完整性:在关系数据库中主要是指外键参照的完整性。若 A 关系中的某个或者某些属性参照 B 关系或其他几个关系中的属性,那么在关系 A 中该属性要么为空,要么必须出现在 B关系或者其他的关系的对应属性中。
用户定义完整性:某一个具体应用所对应的数据必须满足一定的约束条件。例如,软考成绩不能小于 0,也不能大于 75。
5.1.3 数据库管理系统
DBMS的定义和范围
DBMS的功能及特点
数据库管理系统的主要功能包括:数据定义,数据组织、存储和管理、数据库操作,数据库运行管理,数据库的建立和维护。
数据库管理系统的特点:数据结构化且统一管理、有较高的数据独立性、数据控制功能。
数据控制功能包括:保证护具的安全性和完整性以及并发控制的能力。
数据控制功能包括:保证护具的安全性和完整性以及并发控制的能力。
5.1.4数据库三级模式
数据库三级模式的定义和划分
数据库系统的体系结构:视图层、逻辑层、物理层,向用户屏蔽系统的复杂性,简化用户与系统的交互
数据库系统的三级模式
外模式:又叫子模式或用户模式,用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据
概念模式:是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
内模式:是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式等
三级模式之间提供了两级映像
外/概念模式映像、概念/内模式映像,保证了数据库中的数据具有较高的逻辑独立性和物理独立性
逻辑独立性:对应外模式和概念模式之间的映像。指应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变
物理独立性:对应概念模式和内模式之间的映像。指应用程序与磁盘中的数据互相独立,当数据的物理存储改变时,应用程序不变
数据库系统的体系结构
5.2 关系数据库
5.2.1 关系数据库基本概念
关系数据库的定义及发展
关系数据库模式
基本术语
属性(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性。
域(Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。
目或度(Degree):目或度指的是一个关系中属性的个数。
候选码(Candidate Key):或称唯一键,若关系中的某一属性或属性组的值,能唯一地标识一个元组,则称该属性或属性组为候选码。
主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个作为主码。
外码(Foreign Key):或称外键,关系模式 R 中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性对模式 R 而言是外码。
全码(All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码
主属性(Prime Attribute):包含在任何候选码中的属性称为主属性。
关系的完整性约束:实体完整性、参照完整性和用户定义完整性
5.2.2 关系运算
集合运算符
∪并:关系 R 与 S 的并是由属于 R 或属于 S 的元组构成的集合
-差:关系 R 与 S 的差是由属于 R 但不属于 S 的元组构成的集合
∩交:关系 R 与 S 的交是由属于 R 同时又属于 S 的元组构成的集合
×笛卡儿积:两个关系分别为 n 列和 m 列的关系 R 和 S 的笛卡儿积是一个(n+m)列的元组的集合(a,b)×(0,1)={(a,0), (a,1), (b,0),(b, 1)}
关系运算符
σ选择:取得关系R中符合条件的行
π投影: 取得关系R中符合条件的列
等值连接:选取关系 R、S,取两者笛卡儿积中属性值相等的元组。
自然连接:一种特殊的等值连接,它要求比较的属性列必须是相同的属性组,并且把结果中重复属性去掉
左外链接:左全,右没有null填充
右外连接:右全,左没有null填充
全连接:左外 并 右外 去除相等的
自然连接:一种特殊的等值连接,它要求比较的属性列必须是相同的属性组,并且把结果中重复属性去掉
左外链接:左全,右没有null填充
右外连接:右全,左没有null填充
全连接:左外 并 右外 去除相等的
÷ 除:给定关系 R(X,Y) 和 S(Y,Z),其中 X,Y,Z 为属性组。R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集。R 与 S 的除运算得到一个新的关系P(X),P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合
子主题
算术比较符:> < == <>
逻辑运算符:+ - * / % & | !
5.2.3 关系数据库设计基本理论
函数依赖:指关系中一个或一组属性的值可以决定其它属性的值。函数依赖就像一个函数y = f(x)一样,x的值给定后,y的值也就唯一地确定了。
平凡的函数依赖:如果 X→Y,Y⊆X(Y是X的子集),则称 X→Y 是平凡的函数依赖。
例如:在学生表(学号,姓名,年级)中,(学号,姓名)可以推出学号和姓名其中的任何一个,这就是平凡函数依赖.
例如:在学生表(学号,姓名,年级)中,(学号,姓名)可以推出学号和姓名其中的任何一个,这就是平凡函数依赖.
非平凡的函数依赖:如果 X→Y,Y⊈X(Y不是X子集),则称 X→Y 是非平凡的函数依赖。
例如:在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖
例如:在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖
完全函数依赖:例如,有学生关系模式(学号,系号,系主任,课程号,成绩),该关系模式的主码是学号+课程号,(学号,课程号)→成绩是完全函数依赖。
部分函数依赖:上述例子中,(学号,课程号)→系号就属于部分函数依赖,因为对于系号来说有学号就可以推出系号。
传递依赖:上述例子中,学号→系号,系号→系主任名,则称系主任名传递依赖于学号
函数依赖的公理系统(Armstrong 公理系统):从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则,这些规则常被称作“Armstrong 公理”。设关系式 R(U,F),U 是关系模式 R 的属性集,F 是 U 上的一组函数依赖
推理规则:
自反律:若 Y⊆X⊆U,则 X→Y 为 F 所蕴含
增广律:若 X→Y ,Z⊆U,则 XZ→YZ 为 F 所蕴含
合并规则:若 X→Y,X→Z,则 X→YZ 为 F 所蕴含
分解规则:若 X→Y,Z⊆Y,则 X→Z 为 F 所蕴含
传递律:若 X→Y,Y→Z 为 F 所蕴含,则 X→Z 为 F 所蕴含
伪传递规则:若 X→Y,WY→Z,则 XW→Z 为 F 所蕴含
自反律:若 Y⊆X⊆U,则 X→Y 为 F 所蕴含
增广律:若 X→Y ,Z⊆U,则 XZ→YZ 为 F 所蕴含
合并规则:若 X→Y,X→Z,则 X→YZ 为 F 所蕴含
分解规则:若 X→Y,Z⊆Y,则 X→Z 为 F 所蕴含
传递律:若 X→Y,Y→Z 为 F 所蕴含,则 X→Z 为 F 所蕴含
伪传递规则:若 X→Y,WY→Z,则 XW→Z 为 F 所蕴含
设计范式
第一范式(1NF):关系模式 R 的每一个分量是不可再分的数据项,非主属性【部分依赖】主码
第二范式(2NF):当1NF,且任何【非主属性列】【完全依赖】【主码】
第三范式(3NF):当2NF,且任何【非主属性列】【不传递依赖】【主码】
BC 范式(BCNF):如果关系模式 R∈1NF,且每个属性都【不传递依赖】【候选码】
4NF
5NF
事务管理
特性:原子性、一致性、隔离性、持久性
begin transaction;commit;rollback
并发控制
排他型封锁(X 封锁):如果事务 T 对数据 A(可以是数据项、记录、数据集以至整个数据库)实现了 X 封锁,那么只允许事务 T 读取和修改数据 A,其他事务要等事务 T 解除 X 封锁以后,才能对数据 A 实现任何类型的封锁。可见 X 封锁只允许一个事务独锁某个数据,具有排他性。
共享型封锁(S 封锁):如果事务 T 对数据 A 实现了 S 封锁,那么允许事务 T 读取数据A,但不能修改数据 A,在所有 S 封锁解除之前决不允许任何事务对数据 A 实现 X 封锁。
备份恢复
备份分类
静态备份:指备份期间不允许对数据库进行任何存取、修改活动。静态备份简单,但备份必须等待用户事务结束才能进行,新的事务必须等待备份结束才能执行。这降低了数据库的可用性。
动态备份:指备份期间允许对数据库进行存取或修改,即备份和用户事务可以并发执行。动态备份可克服静态备份的缺点,但备份结束时后援副本上的数据并不能保证正确有效。
动态备份:指备份期间允许对数据库进行存取或修改,即备份和用户事务可以并发执行。动态备份可克服静态备份的缺点,但备份结束时后援副本上的数据并不能保证正确有效。
海量备份:指每次备份全部数据库。
增量备份:指每次只备份上次备份后更新过的数据。如果数据库很大,事务处理又十分频繁,则增量备份方式是很有效的。
增量备份:指每次只备份上次备份后更新过的数据。如果数据库很大,事务处理又十分频繁,则增量备份方式是很有效的。
4类故障:事务故障、系统故障、介质故障、计算机病毒
事务故障的恢复有两个操作:撤销事务(UNDO)和重做事务(REDO)。
介质故障的恢复由数据库管理员装入数据库的副本和日记文件副本,再由系统执行撤销和重做操作。
5.3 数据库设计
5.3.1 数据库设计的基本步骤
数据库设计的六个步骤(用户需求、概念设计、逻辑设计、物理设计、数据库实施、运行和维护)
5.3.2 数据需求分析(SA)
分析和表达用户需求的方法:结构化分析方法(SA)
用户需求分析是综合各用户的应用需求,对现实世界要处理的对象进行详细调查,在了解先行系统的概况,确定新系统功能的过程中,协助用户明确对新系统的信息要求、处理要求和系统要求,确定新系统的边界。
5.3.3 概念结构设计(ER)
概念数据模型又称为实体-联系模型,它按照用户的观点来对数据和信息建模,主要用于数据库设计。
概念模型主要用实体-联系方法(Entity-Relationship Approach)表示,简称E-R方法。
概念模型主要用实体-联系方法(Entity-Relationship Approach)表示,简称E-R方法。
设计步骤:【选择局部应用】、【逐一设计分E-R图】、【E-R图合并】
在进行E-R图合并时,需解决属性冲突、命名冲突和结构冲突。
E-R 图的三个要素有:
1)实体(型):用矩形框表示,框内标注实体名称。
2)属性:用椭圆形表示,并用连线与实体连接起来。
3)实体之间的联系:用菱形框表示,框内标注联系名称,用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
1)实体(型):用矩形框表示,框内标注实体名称。
2)属性:用椭圆形表示,并用连线与实体连接起来。
3)实体之间的联系:用菱形框表示,框内标注联系名称,用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
5.3.4 逻辑结构设计(数据模型)
工作步骤:【确定数据模型】、【将E-R图转换成指定的数据模型】、【确定完整性约束】和【确定用户视图】
5.3.5 物理设计
设计步骤:确定【数据分布】、【存储结构】、【访问方式】
5.3.6 数据库实施设计
根据逻辑和物理设计的结果,在计算机上【建立实际的数据库结构】,【数据加载(装入)】,【试运行】和【评价】。
5.3.7 数据库运行维护
主要包括对数据库【性能的监测和改善】、【故障恢复】、【数据库的重组和重构】
商业智能(Business Intelligence,BI)是企业对商业数据的搜集、管理和分析的系统过程,目的是使企业的各级决策者获得知识或洞察力,帮助他们作出对企业更有利的决策。一般认为数据仓库、联机分析处理(OLAP)和数据挖掘是商业智能的三大组成部分
数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定(非易失)且随时间变化(时变)的数据集合,用于支持管理决策
数据挖掘:是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先知、有效和实用三个特征。先前未知的信息是指该信息是预先未曾预料到的,即数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越是出乎意料,就可能越有价值。
5.4 用户访问数据库的标准接口
5.4.1 库函数级别访问接口OCI
库函数级别的数据访问接口是数据库提供的最底层的高级程序语言访问数据接口,如 Oracle数据库的 Oracle Call Interface(OCI)。
OCI 由一组应用程序开发接口(API)组成,实际是将结构化查询语言(SQL)和高级语言程序相结合。其缺点是强依赖于特定的数据库,需数据库开发人员对数据库机制有较深的理解,学习难度较大,开发效率不是很高。
OCI 由一组应用程序开发接口(API)组成,实际是将结构化查询语言(SQL)和高级语言程序相结合。其缺点是强依赖于特定的数据库,需数据库开发人员对数据库机制有较深的理解,学习难度较大,开发效率不是很高。
5.4.2 嵌入SOL访问接口
是一种将SQL语句直接写入某些高级程序语言源代码中的方法。
5.4.3 通用数据接口标准(ODBC)
开放数据库连接(Open DataBase Connectivity,ODBC)是为解决异构数据库间的数据共享产生的。优点是不依赖于任何 DBMS,能以统一的方式处理所有的关系数据库。
常见数据库接口包括数据库访问对象(Data Access Object,DAO)、远程数据库对象(Remote Data Object,RDO)、ActiveX 数据对象(Active Data Object,ADO)、Java 数据库连接(java DataBaseConnection,JDBC)。
常见数据库接口包括数据库访问对象(Data Access Object,DAO)、远程数据库对象(Remote Data Object,RDO)、ActiveX 数据对象(Active Data Object,ADO)、Java 数据库连接(java DataBaseConnection,JDBC)。
5.4.4 ORM访问接口
对象关系映射(Object Relationship Mapping,ORM)用于实现面向对象编程语言里不同类型系统数据之间的转换。
Hibernate:全自动化的框架,强大、复杂、笨重、学习成本高。
Mybatis:半自动的框架
JPA:Java 自带的框架。
5.5 NoSOL数据库系统
No SQL 的定义、基本功能和用途
NoSQL 是一种概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID 特性
5.5.1 分类与特点
四类 No SOL 数据库:列式存储数据库、键值对存储数据库、文档型数据库、图数据库
No SQL 的特点:易扩展、大数据量、高性能、灵活的数据模型、高可用
5.5.2 体系框架
NoSOL的四层框架:数据【持久层】、【数据分布】层、数据【逻辑模型层】和【接口层】
No SOL数据库的适应场景:数据模型比较简单、需灵活性更强的 IT 系统、对数据库性能要求较高、不需要高度的数据一致性
分布式数据库
体系结构
特点
共享性:不同的节点的数据共享。
自治性:每个节点对本地数据都能独立管理。
可用性:某一场地故障时,可以使用其他场地上的副本而不至于使整个系统瘫痪。
分布性:数据分布在不同场地上存储。
自治性:每个节点对本地数据都能独立管理。
可用性:某一场地故障时,可以使用其他场地上的副本而不至于使整个系统瘫痪。
分布性:数据分布在不同场地上存储。
分布透明性
指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型
分片透明性是:分布透明性的最高层次。所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
位置透明性是:分布透明性的下一层次。所谓位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。
局部数据模型透明性(逻辑透明)是:指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。
数据库优化技术
集中式数据库优化
最常见的是反规范化设计,主要包括增加冗余列、增加派生列、重新组表、水平分割表、垂直分割表。
反规范化设计的优点是避免进行表之间的连接操作,从而可以提高数据操作的性能;
反规范化设计的缺点是会造成数据的重复存储,浪费了磁盘空间,会产生数据的不一致性问题。
若要避免数据不一致的问题,可以通过设置触发器、采用事务机制(适用于单体数据库中)、应用保证(适用于异构数据库之间)以及批处理脚本的方式,这些方式的优缺点这里不再赘述。
若要避免数据不一致的问题,可以通过设置触发器、采用事务机制(适用于单体数据库中)、应用保证(适用于异构数据库之间)以及批处理脚本的方式,这些方式的优缺点这里不再赘述。
分布式数据库优化
主从复制
主从复制是建立一个和主数据库完全一样的数据库环境,称为从数据库
做数据的热备:作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
架构的扩展:业务量越来越大,I/O 访问频率过高,单机无法满足,此时做多库的存储,降低磁盘 I/O 访问的频率,提高单个机器的 I/O 性能。
读写分离:使数据库能支持更大的并发。
在MySQL数据库中,主从数据库同步的模式有全同步、半同步、异步三种方式
binlog日志有3种模式:SQL模式(绑定变量问题)、行模式(数据量大)、混合模式(自动选择)
读写分离:让主数据库负责数据的写操作,从数据库负责数据的读操作。通过角色分担的策略,分别提升读写性能,有效减少数据并发操
作的延迟。
作的延迟。
分表:分表也叫分片,可以提升数据库并发以及 I/O 的性能
分库:将原本存放在一个实例上众多分类的数据(表),分开存放到不同的实例上,有利于差异化管理。
分布式缓存技术Redis
数据类型主要包括: string 、hash 、set 、list 、zset
访问方式
读数据:①根据 key 读缓存;②读取成功则直接返回;③若 key 不在缓存中,则根据 key读数据库;④读取成功后,写缓存;⑤成功返回
写数据:①根据 key 值写数据库;②成功后更新缓存 key 值;③成功返回
过期策略:定期删除、懒性删除
持久化方式:RDB内存快照、AOF日志
集群部署方式:主从复制集群、哨兵集群、Cluster集群
分片方式:客户端分片、代理分片、服务端分片
缓存穿透(没key)
大量请求访问了没有缓存的 key,即大量的 key 在 Redis 里是不存在的,从而导致请求直接访问数据库,数据库压力增大。可能的原因如下:
1)恶意攻击,造成大量访问不存在的 key。例如登录时使用无效的用户名,在软考网站查询成绩时输入不存在的身份证号、准考证号。
解决方案:
①针对比较少的请求来源IP,主动限制其访问次数,或者拉入黑名单;
②应用程序来检查key的合法性,提前拒绝不合法的请求;
③使用布隆过滤器。
解决方案:
①针对比较少的请求来源IP,主动限制其访问次数,或者拉入黑名单;
②应用程序来检查key的合法性,提前拒绝不合法的请求;
③使用布隆过滤器。
2)大量请求访问数据库里有但 Redis 没有的 key。例如新业务刚刚上线,此时 Redis 是空的。
解决方案:
①预热 Redis,运行一个批处理脚本,将可能会大量访问的数据预先加载到 Redis,业务再“开张”;
②在最前端进行流量控制,逐步把请求释放进来。给出一段时间,让 Redis 逐步加载热数据;
③如果是在数据库里也没有的 key,也需要在 Redis 中设置 key,使其值为 null 或空
解决方案:
①预热 Redis,运行一个批处理脚本,将可能会大量访问的数据预先加载到 Redis,业务再“开张”;
②在最前端进行流量控制,逐步把请求释放进来。给出一段时间,让 Redis 逐步加载热数据;
③如果是在数据库里也没有的 key,也需要在 Redis 中设置 key,使其值为 null 或空
缓存雪崩(同时过期)
大量请求访问到缓存中的 key,这些 key 是存在的,但同时到了过期时间,从而导致请求直接访问数据库,数据库压力增大。缓存雪崩可能进而影响一系列的雪崩,影响到上下游的所有应用服务。可能的原因如下:
1)Redis 故障。比如 Redis 宕机,网络出现抖动等。
解决方案:
①使用主从复制提高可用性,使用 cluster 集群方案降低故障时影响的范围;
②如果出现故障,则可以采取服务降级、熔断、限流等措施。
解决方案:
①使用主从复制提高可用性,使用 cluster 集群方案降低故障时影响的范围;
②如果出现故障,则可以采取服务降级、熔断、限流等措施。
2)大量的key采用了相同的过期时间。例如在同一时刻设置了大量的 key,但过期时间都是 5分钟。
解决方案:过期时间加上一个随机值,使得众多 key 均匀过期。
解决方案:过期时间加上一个随机值,使得众多 key 均匀过期。
缓存击穿(热点Key过期)
少量热点的 key 缓存时间失效了,使得请求直接访问数据库。
可能的原因:热点的key设置了太短的过期时间。例如秒杀业务下的“库存数量”。
解决方案:
①将key设置较长的过期时间。对于非常重要的 key,则设置永久有效。但需要解决好与数据库中的 key 的一致性问题;
②使用分布式锁。如果热点 key 失效了,要控制好访问后端数据库的流量。只允许一个请求去访问数据库,取出最新的 key,存放到 Redis,其他请求则必须等待
解决方案:
①将key设置较长的过期时间。对于非常重要的 key,则设置永久有效。但需要解决好与数据库中的 key 的一致性问题;
②使用分布式锁。如果热点 key 失效了,要控制好访问后端数据库的流量。只允许一个请求去访问数据库,取出最新的 key,存放到 Redis,其他请求则必须等待
6、系统架构设计基础知识
综合8~15分
案例、论文
综合8~15分
案例、论文
6.1 软件架构概念
6.1.1 软件架构的定义
软件架构(Software Architecture)或称软件体系结构,是指系统的一个或者多个结构,这些结构包括软件的构件(可能是程序模块、类或者是中间件)、构件的外部可见属性及其之间的相互关系。
软件架构设计包含:数据库设计 和 软件结构设计(关注软件构件的【结构】、【属性】和【交互作用】,并通过多种视图全面描述)
6.1.2 软件架构设计与生命周期
需求分析阶段(需求模型)
需求关注的是问题空间,架构关注的是解空间,需要保持二者的可追踪性和转换。
从软件需求模型向软件架构模型的转换主要关注两个问题:
1)如何根据需求模型构建软件架构模型。
2)如何保证模型转换的可追踪性。
1)如何根据需求模型构建软件架构模型。
2)如何保证模型转换的可追踪性。
设计阶段(架构模型、构件、连接子)
架构模型的描述
即【构件】和【连接子】的建模。
体系架构描述语言ADL(Architecture Describe Language)。是用于描述软件体系架构的语言,与其他建模语言最大的区别在于其更关注构件间互联机制(连接子),典型的 ADL 语言包括 Unicon、Rapide、Darwin、Wright、C2SADL、Acme、XADLOL、XYZ/ADL 和 ABC/ADL 等
多视图:反映的是一组系统的不同方面,体现了关注点分散的思想,通常与 ADL 结合起来描述系统的体系结构。
典型的模型包括:4+1 模型、Hofmesiter 的 4 视图模型、CMU-Sei 的 Viewsand Beyond 模型。
视图标准包括:IEEE 的 I471-2000、RM-ODP、UML 以及 IBM 的 Zachman。
典型的模型包括:4+1 模型、Hofmesiter 的 4 视图模型、CMU-Sei 的 Viewsand Beyond 模型。
视图标准包括:IEEE 的 I471-2000、RM-ODP、UML 以及 IBM 的 Zachman。
架构模型的【设计与分析】方法
架构【设计经验的总结与复用】
实现阶段(开发过程、实现途径、测试技术)
研究内容:基于SA的开发过程支持、寻求从SA向实现过渡的途径、研究基于SA的测试技术
缩小架构设计与底层实现概念差距的手段:模型转换技术、封装底层的实现细节、在SA模型中引入实现阶段的概念(如用程序设计语言描述)。
构件组装阶段(连接子)
如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持
组装过程中,如何检测并消除体系结构失配问题(构件本身的失配;连接子的失配;部分和整体的失配
部署阶段(软硬件模型)
提供高层的体系结构视图描述部署阶段的软硬件模型
基于软件架构模型可以分析部署方案的质量属性,从而选择合理的部署方案
后开发阶段
动态软件体系结构
体系结构恢复与重建:手工体系结构重建、【工具】支持的手工重建、通过【查询语言】来【自动】建立【聚集】、使用其他技术(如数据挖掘)
6.1.3 软件架构的重要性
(1)架构设计能够满足系统的品质。
(2)架构设计使受益人达成一致的目标。
(3)架构设计能够【支持计划编制过程】。
(4)架构设计对系统开发的指导性。
(5)架构设计能够有效地管理复杂性。
(6)架构设计为复用奠定了基础。
(7)架构设计能够降低维护费用。
(8)架构设计能够【支持冲突分析】
(2)架构设计使受益人达成一致的目标。
(3)架构设计能够【支持计划编制过程】。
(4)架构设计对系统开发的指导性。
(5)架构设计能够有效地管理复杂性。
(6)架构设计为复用奠定了基础。
(7)架构设计能够降低维护费用。
(8)架构设计能够【支持冲突分析】
6.2 基于架构的软件开发方法(ABSD)
6.2.1 体系结构的设计方法概述
ABSD方法是架构驱动,即强调由【商业】、【质量】和【功能】需求的组合驱动架构设计。
ABSD是一个自顶向下,递归细化的软件开发方法,软件系统的体系结构通过该方法得到细化,直到能产生【软件构件】和【类】
ABSD方法有三个基础。
第一个基础是功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
第二个基础是通过选择架构风格来实现商业和质量需求;
第三个基础是软件模板的使用。
第一个基础是功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
第二个基础是通过选择架构风格来实现商业和质量需求;
第三个基础是软件模板的使用。
6.2.2 概念与术语
视角与视图:从不同的视角来检查,所以会有不同的视图。
用例用来捕获功能需求
质量场景【刺激、环境、响应】用来捕获质量需求。
用例用来捕获功能需求
质量场景【刺激、环境、响应】用来捕获质量需求。
6.2.3 基于体系结构的开发模型
6.2.4 体系结构需求
需求获取:体系结构需求的获取一般来自三个方面:质量目标、系统的商业目标和系统开发人员的商业目标。
标识构件:标识构件分三步完成:生成类图→对类进行分组→把类打包成构件。
需求评审:审查重点包括需求是否真实反映了用户的要求、类的分组是否合理、构件合并是否合理等
6.2.5 体系结构设计
提出软件体系结构模型 → 映射构件 → 分析构件相互作用 → 产生体系结构设计评审
设计评审必须邀请独立于系统开发的外部人员。
设计评审必须邀请独立于系统开发的外部人员。
6.2.6 体系结构文档化
主要输出结果是 体系结构规格说明 和 测试体系结构需求的质量设计说明书。
文档的完整性和质量是软件架构成功的关键因素。
关于文档的三大注意事项:文档要从使用者的角度进行编写;必须分发给所有与系统有关的开发人员;必须保证开发者手上的文档是最新的
关于文档的三大注意事项:文档要从使用者的角度进行编写;必须分发给所有与系统有关的开发人员;必须保证开发者手上的文档是最新的
6.2.7 体系结构复审
一个主版本的软件体系结构分析之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。
复审的目的是:标识潜在的风险,及早发现体系结构设计中的缺陷和错误,必要时,可搭建一个可运行的最小化系统用于评估和测试体系结构是否满足需要
复审的目的是:标识潜在的风险,及早发现体系结构设计中的缺陷和错误,必要时,可搭建一个可运行的最小化系统用于评估和测试体系结构是否满足需要
6.2.8 体系结构实现
以复审后的文档化体系结构说明书为基础的,体系结构说明书中定义了系统中构件与构件之间的关系
过程:分析与设计→构件实现→构件组装→系统测试(单个构件的功能性测试、被组装应用的整体功能、性能测试)
6.2.9 体系结构的演化
使用系统演化步骤去修改应用,以满足新的需求。
过程:需求变化归类→体系结构演化计划→构件变动→更新构件的相互作用→构件组装与测试→技术评审→演化后的体系结构
6.3 软件架构风格
6.3.1软件架构风格概述
软件架构设计的核心目标:是重复的体系结构模式(软件复用/重用)
软件架构风格是:描述某一特定应用领域中【系统组织方式】的【惯用模式】
体系结构风格反映了领域中众多系统所共有的【结构】和【语义】特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统
体系结构风格定义一个系统家族,包括【架构定义】、【架构词汇表(构件和连接件)】和【架构约束(构件和连接件的组合方式)】
6.3.2 数据流风格
批处理
无需用户交互,每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,且数据以【整体】的方式传递
传统编译器
管道-过滤器
弱用户交互,把系统分为几个序贯地处理步骤,每个步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入
6.3.3 调用/返回风格(分而治之)
定义:是一种分而治之的策略,主要思想是将一个复杂的大系统分解为若干个子系统,降低复杂度,增加可修改性
主程序/子程序风格
主程序显示调用子程序,采用【单线程】控制,构件即为主程序和子程序。
面向对象风格
构件是对象,即抽象数据类型的实例,通过【函数和过程的调用】来交互,可以通过减少功能调用层次提高系统性能
层次型风格
每一层为上层服务,并为下层提供接口。仅相邻层间具有层接口,层次越多效率越差
物联网
客户端/服务器风格(C/S)
二层 C/S 模式
组成:客户应用程序(前台:完成与用户交互任务)、网络、数据库服务器(后台:负责数据管理)
优点:客户应用和服务器构件分别运行在不同的计算机上。
缺点:开发成本高,客户端设计复杂,信息内容和形式单一,不利于推广,软件移植困难,软件维护和升级困难。
优点:客户应用和服务器构件分别运行在不同的计算机上。
缺点:开发成本高,客户端设计复杂,信息内容和形式单一,不利于推广,软件移植困难,软件维护和升级困难。
三层 C/S (瘦客户端)
表示层:用户接口与应用逻辑层的交互,不影响业务逻辑,通常使用图形用户界面。
功能层:实现具体的业务处理逻辑。
数据层:数据库管理系统。
功能层:实现具体的业务处理逻辑。
数据层:数据库管理系统。
浏览器/服务器风格(B/S)
其三层结构分别为:浏览器;Web服务器;数据库服务器。
相比于C/S的不足之处:动态页面的支持能力弱、系统拓展能力差、安全性难以控制、响应速度不足、数据交互性不强。
6.3.4 以数据为中心的风格
仓库风格
以数据为中心,存储和维护数据的中心场所。由中央数据结构(说明当前数据状态)和一组独立构件(对中央数据进行操作)组成
黑板风格(问题求解)
是一种问题求解模型,是【组织推理步骤】、【控制状态数据】和【问题求解之领域知识】的概念框架。
可通过选取各种【黑板】、【知识源】和【控制模块】的构件来设计
可通过选取各种【黑板】、【知识源】和【控制模块】的构件来设计
应用场景:信号处理领域,如语音识别和模式识别。另一应用是松耦合代理数据共享存取。
集成开发环境(IDE)需要面对不同的数据结构,不同的数据类型与形态,在这种以数据为核心的系统中,采用数据共享机制显然是最为合适的。
6.3.5 虚拟机风格
定义:人为构建一个运行环境,可以解析与运行自定义的语言,增加架构的灵活性
解释器风格
组成:解释引擎、被解释的代码的存储区、记录工作状态、进度的数据结构
通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异,缺点是执行效率较低
典型例子是专家系统
规则系统风格
包括:知识库(规则集、事实集)、规则解释器、规则/数据选择器及工作内存(程序运行存储区)
6.3.6独立构件风格
定义:独立构件体系结构风格强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活度
进程通信风格
构件是独立的命名过程,连接件是消息传递(点到点、异步或同步方式及远程过程调用)
事件系统风格
构件不直接调用一个过程,而是通过触发或广播一个或多个事件。
隐式调用
C2风格
通过连接件【连接】构件或某个构件组,构件与构件之间【无连接】
6.4 软件架构的复用技术
6.4.1 软件架构复用的定义及分类
定义:开发一组基本的软件构件模块,以覆盖不同的需求/体系结构之间的相似性,提高系统开发的效率、质量和性能。
分类:机会复用(在开发过程中,只要发现有可复用的资产就复用)、系统复用(在开发前进行规划,决定哪些复用)
6.4.2软件架构复用的原因
减少开发工作、减少开发事件、降低开发成本、提高生产力、提高产品质量,更好的【互操作性】
6.4.3软件架构复用的对象及形式
可复用的资产包括:需求、架构设计、元素、建模分析、测试、项目规划、过程+方法+工具、人员、样本系统、缺陷消除。
一般形式的复用包括:函数的复用、库的复用、面向对象开发中的类、接口和包的复用
6.4.4 软件架构复用的基本过程
分析可复用资产
构建/获取可复用的软件资产(复用前提)
管理复用资产(构件库、构件分类和检索)
使用复用资产(资产的修改、扩展、配置、组装与集成)
6.5 特定领域软件架构(DSSA,螺旋模型)
6.5.1DSSA 的定义
在一个特定应用领域中,为一组应用提供组织结构参考的标准软件体系结构。
DSSA 的特征:领域性、普遍性、抽象性、可复用性
6.5.2 DSSA的基本活动
领域分析:获得【领域模型】。领域模型描述领域中系统之间共同的需求,即领域需求。
领域设计:获得【特定领域软件架构】。DSSA需要具备领域需求变化的适应性
领域实现:获取【可重用信息】,并对基础软件架构进行实现
6.5.3 DSSA的人员
领域专家、领域分析师、领域设计人员和领域实现人员
领域分析者的任务是:控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中
领域设计者的任务是:根据领域模型和现有系统开发出DSSA,并对DSSA的准确性和一致性进行验证
6.5.4 DSSA 的建立过程
DSSA的建立过程是并发的、递归的、反复的螺旋模型
三个层次:领域开发环境(领域架构师);领域特定应用开发环境(应用工程师);应用执行环境(操作员)
五个阶段:定义领域范围,定义领域元素,定义领域设计和实现需求约束,定义领域模型和体系结构,产生、搜集可重用的产品单元)
7、系统质量属性与架构评估
综合8~15分
案例、论文
综合8~15分
案例、论文
7.1 软件系统质量属性
7.1.1 质量属性概念
GB/T 16260.1标准
从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性:功能性、可靠性、易用性、效率、维护性与可移植性。
功能性包括适合性、准确性、互操作性、依从性、安全性;
可靠性包括容错性、易恢复性、成熟性;
易用性包括易学性、易理解性、易操作性;
效率包括资源特性和时间特性;
维护性包括可测试性、可修改性、稳定性和易分析性;
可移植性包括适应性、易安装性、一致性和可替换性
功能性包括适合性、准确性、互操作性、依从性、安全性;
可靠性包括容错性、易恢复性、成熟性;
易用性包括易学性、易理解性、易操作性;
效率包括资源特性和时间特性;
维护性包括可测试性、可修改性、稳定性和易分析性;
可移植性包括适应性、易安装性、一致性和可替换性
软件系统质量属性是一个系统的可测量或可测试的属性,用来描述系统满足利益相关者 (Stakeholders) 需求的程度。
基于软件系统的生命周期分类
开发期质量属性
易理解性:指设计被开发人员理解的难易程度
可扩展性(灵活性):软件因适应新需求或需求变化而增加新功能的能力
可重用性:指重用软件系统或某一部分的难易程度
可测试性:对软件测试以证明其满足需求规范的难易程度,对系统的行为进行控制与调试
可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度
可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度
运行期质量属性
性能:软件系统及时提供相应服务的能力,如速度、吞吐量和容量等
【可伸缩性】:当用户数和数据量增加时,软件系统维持高服务质量的能力
互操作性:软件系统与其他系统交换数据和相互调用服务的难易程度
可靠性:软件系统在一定的时间内持续无故障运行的能力
可用性:系统在一定时间内正常工作的时间所占比例
鲁棒性(健壮性、容错性):软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力
安全性:软件系统同时兼顾向合法用户提供服务,以及阻止非授权用户使用的能力
7.1.2 面向架构评估的质量属性
【功能性】:需求的满足程度
【可变性】:架构经扩充或变更而成为新架构的能力
【互操作性】:与其他系统互操作,通过可视化或接口方式提供更好的交互操作体验
可修改性:快速地以较高的性价比对系统作出修改的能力
结构重组:不影响主体进行的灵活配置
可扩展性:因松散耦合更易实现新特性/功能,不影响架构
可维护性:能做局部的修复,使故障对架构的负面影响最小化
可移植性:适用于多样的环境(硬件平台、语言、操作系统等)
设计策略
局部化修改:抽象、高内聚低耦合、预测变更、使模块通用。
防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。
推迟绑定时间:运行时注册、多态、配置文件。
性能:单位时间内能处理的工作量
设计策略
资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
资源管理:并发机制、增加资源
资源仲裁:优先级队列、先来先服务、固定优先级、动态优先级、静态调度
可靠性:在一定的时间内持续无故障运行的能力
可靠性通常用平均失效等待时间 (Mean Time To Failure,MTTF) 和平均失效间隔时间 (Mean Time Between Failure,MTBF) 来衡量
容错:出现错误后仍能保证系统正常运行,且自行修正错误
健壮性:错误不对系统产生影响,按既定程序忽略错误
可用性:正常运行的时间比例
设计策略
错误检测:心跳、Ping/Echo、异常
错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚
错误避免:服务下线、事务、进程监控器
安全性:系统给合法用户提供服务并阻止非法用户的能力
设计策略
抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问
检测攻击:入侵检测系统、追踪/审计
从攻击中恢复:恢复状态、识别攻击者
7.1.3 质量属性场景描述
质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成
刺激源(Source):某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)
刺激(Stimulus):指当刺激到达系统时需要考虑的条件
环境(Environment):指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况
制品(Artifact):某个制品被激励。可能是整个系统,也可能是系统的一部分
响应(Response):指在激励到达后所采取的行动
响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。
7.2 系统架构评估
7.2.1 系统架构评估中的重要概念
架构评估的基木概念
系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策
核心概念
风险点:指架构设计中潜在的、存在问题的架构决策所带来的【隐患】
非风险点:某些做法是可行的、可接受的
敏感点:为了实现某种特定质量属性,一个或多个系统组件所具有的特性
权衡点:是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性
风险承担者或利益相关人:影响体系结构或被体系结构影响的群体
场景:确定架构质量评估目标的【交互机制】,一般采用【触发】机制(教材中解释为“刺激”)、【环境】和【影响】三方面来描述。
评估方法分类
基于【调查问卷】或【检查表】的方法:该方式的关键是要设计好问卷或检查表,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于评估人员的主观推断。
基于【场景】的评估方法:通过分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度,应用在架构权衡分析法(ATAM)和软件架构分析方法(SAAM)中。
基于【度量】的评估方法:制定一些定量值来度量架构,如代码行数等;建立【质量属性和度量之间的映射原则】 → 在软件文档中获取度量信息 → 分析推导系统质量属性。
7.2.2系统架构评估方法
软件架构分析方法(SAAM)
SAAM 是卡耐基梅隆大学软件工程研究所的Kazman等人于1983年提出的一种【非功能质量属性】的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法
SAAM的主要输入是【问题描述、需求说明(需求分析)和架构描述(架构设计)】,其分析过程主要包括【场景开发、架构描述、单个场景评估、场景交互评估、总体评估】
架构权衡分析方法(ATAM)
ATAM是一种系统架构评估方法,主要在系统开发之前,针对【性能】、【可修改】性、【可用】性、【安全】性等质量属性进行【评价和折中】
ATAM4个活动领域(阶段):场景和需求收集、架构视图和场景实现、【属性模型】构造和分析、架构【决策与折中】,整个评估过程强调以【属性】作为架构评估的核心概念。
现代ATAM采用效用树对质量属性进行分类和优先级排序
演示介绍阶段
介绍ATAM方法:描述ATAM评估过程。
描述商业目标:着重业务视角,提供有关系统功能、主要利益相关方、业务目标和其他限制等信息。
描述体系结构:侧重可用性以及体系结构的质量要求
调查和分析阶段
确定架构方法:能够理解系统关键需求的关键架构方法
生成质量属性效用树:确定最重要的质量属性,并确定优先次序
分析体系结构方法:彻底调查和分析,找出处理相应质量属性架构的方法。包括4个主要阶段:调查架构方法 → 创建分析问题 → 分析问题的答案 → 找出风险、非风险、敏感点和权衡点。
测试阶段
头脑风暴和优先场景:将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较
分析架构方法:分析上一步中高优先级的质量属性,检查相应的架构设计方案是否可支持满足这些属性,重复第6步来完善体系结构方法
报告阶段
提供评估期间收集的所有信息(场景、效用树、分析问题、风险和非风险、架构方法),呈现给利益相关者
SAAM和ATAM对比
特定目标:通过程序文档验证体系结构,注重发现潜在问题,可用于评价单系统或进行多系统比较;确定在多个质量属性之间折中的必要性
评估技术:场景技术;场景技术、启发式分析方法
质量属性:可修改性;性能、可用性、安全性和可修改性
风险承担者:所有参与者;场景和需求收集过程中的相关人
架构描述:围绕功能、结构和分配描述;五个基本结构及其映射关系
方法活动:场景开发、体系结构描述、单个场景评估、场景交互和总体评估;场景和需求收集、架构视图和场景实现、属性模型构造和分析、折中
知识库可复用性:不涉及;有基于属性的体系模型,可复用
方法验证:空中交通管制系统、嵌入式音频系统、修正控制系统、根据上下文查找关键词系统;仍处于研究中
成本效益分析法(CBAM)
成本效益分析法(Cost Benefit Analysis Method,CBAM)分为整理场景 → 场景求精 → 确定场景的优先级 → 分配效用 → 架构策略涉及哪些质量属性及响应级别 → 使用内插法确定“期望的”质量属性响应级别的效用 → 计算各架构策略的总收益 → 根据受成本限制影响的ROI选择架构策略
其他评估法
SAEM方法:将软件架构看作一个最终产品以及涉及过程中的一个中间产品,从外部质量属性和内部质量属性阐述的评估模型。
SAABNet方法:辅助架构的定性评估,帮助诊断软件问题的可能原因,分析架构中的修改给质量属性带来的影响、预测架构的质量属性,帮助架构设计人员做决策。SAABNet 度量的对象包括架构属性、质量准则和质量因素。
SACMM方法:一种软件架构修改的度量方法,首先基于内核定义差异度量准则来计算两个软件架构之间的距离,然后分析对象之间的相似性。
SASAM方法:通过对预期架构和实际架构进行映射和比较来静态地评估软件架构。
ALRRA方法:是软件架构可靠性风险评估方法,使用动态复杂度准则和动态耦合度准则来定义组件和连接件的复杂性因素。
AHP方法:把定性分析和定量计算相结合,对各种决策因素进行处理。
COSMIC+UML方法:针对不同表达方式的软件架构,采用统一的软件度量COSMIC方法来进行度量和评估
8、软件可靠性技术
综合2~3分
论文
综合2~3分
论文
8.1 软件可靠性基本概念
8.1.1 软件可靠性定义
软件可靠性是指在【规定的时间】内,软件不引起【系统失效】的【概率】。
该概率是【系统输入】和【系统使用的函数】,也是【软件中存在的缺陷函数】;
系统输入将确定是否会遇到已存在的缺陷。
该概率是【系统输入】和【系统使用的函数】,也是【软件中存在的缺陷函数】;
系统输入将确定是否会遇到已存在的缺陷。
8.1.2 软件可靠性的定量描述
软件的可靠性是在【软件使用条件】、【在规定时间内】、【系统的输入/输出】、【系统使用】等变量构成的数学表达式,
规定时间:自然时间、运行时间(启动到结束)、执行时间(cpu执行指令的时间)
失效概率:从软件运行开始,到某一时刻t为止,出现失效的概率。可以看作是关于软件运行时间的一个随机函数
失效强度:单位时间软件系统出现失效的概率
可靠度:表示可靠性最为直接的方式,是指软件系统在【规定的条件下】、【规定的时间内】不发生失效的概率
平均无失效时间:软件运行后,到下一次失效的平均时间,更直观地反映软件的可靠度
平均故障间隔时间:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。
8.1.3 可靠性目标
指用户对所使用的软件的性能满意程度的期望。可以用【可靠度】、【平均失效时间】和【故障强度】等来描述。
8.1.4 可靠性测试的意义
意义
1、软件失效可能造成灾难性的后果。
2、软件的失效在整个计算机系统失效中的比例较高。
3、相比硬件可靠性技术,软件可靠性技术不成熟。
4、软件可靠性问题会造成软件费用增长。
5、系统对软件的依赖性强,对生产活动和社会生活影响日益增大
2、软件的失效在整个计算机系统失效中的比例较高。
3、相比硬件可靠性技术,软件可靠性技术不成熟。
4、软件可靠性问题会造成软件费用增长。
5、系统对软件的依赖性强,对生产活动和社会生活影响日益增大
目的
1、发现软件系统的缺陷
2、为软件的使用和维护提供可靠性依据
3、确认软件是否达到可靠性的定量要求
2、为软件的使用和维护提供可靠性依据
3、确认软件是否达到可靠性的定量要求
8.1.5 广义与狭义的可靠性测试
广义:为了最终评价软件系统的可靠性而运用【建模】、【统计】、【分析】、【试验】和【评价】等一系列手段对软件系统实施的一种测试。
狭义:指为了获取可靠性数据,按预先确定好的【测试用例】,在软件【预期使用环境】中,对软件实施的一种测试
8.2 软件可靠性建模
8.2.1 影响软件可靠性的因素
【运行环境】、【软件规模】、【软件的内部结构】、【软件的开发方法和开发环境】、【软件的可靠性投入】
8.2.2 软件可靠性的建模方法
可靠性模型的组成:【模型假设】、【性能度量】、【参数估计方法】、【数据要求】
可靠性模型的特性:【基于可靠的假设】、【简单】、【计算一些有用的量】、【给出未来失效行为的好的映射】、【可广泛应用】
8.2.3 软件可靠性的模型分类
可靠性模型分类:【种子法】、【失效率类】、【曲线拟合类】、【可靠性增长】、【程序结构分析】、【输入域分类】、【执行路径分析方法】、【非齐次泊松过程】、【马尔可夫过程】、【贝叶斯分析】
8.3 软件可靠性管理
管理阶段:1.需求分析阶段、2.概要设计阶段、3.详细设计阶段、4.编码阶段、5.【测试】阶段、6.【实施】阶段
8.4 软件可靠性设计
软件可靠性设计方法准则:【简化】设计、【重用】设计和【健壮性】设计
8.4.1 容错设计技术
分类:【信息】容错、【结构】容错
方法:【日志和副本】、【指令复执和程序卷回】、【冗余】、【N版本(NVP)】和【恢复块(RB)】
冗余设计:在一套完整的软件系统之外,设计一种不同【路径】、不同【算法】或不同【实现方式】方法的模块或系统作为【备份】,在出现故障时可使用冗余部分进行替换。
N版本程序设计:通过设计多个模块或不同版本,对相同初始条件和输入的操作结果,实行【多数表决】,防止其中某一软件模块/版本的故障提供错误的服务。
恢复块设计:选择【一组操作】作为容错设计【单元】,把普通的程序块变成恢复块
8.4.2 检错设计技术
检错技术代价低于容错技术和冗余技术,但是不能自动解决故障,需要人工干预。
检错设计技术的重点考虑要素:【检测对象】、【检测延时】、【实现方式】和【处理方式】
检错设计方法:【简单】原理、【同型】原理、【对称】原理、【层次】原理和【安全】原理等
8.4.3 降低复杂度设计
降低复杂度设计思想是在保证实现软件功能基础上,【简化软件结构】、【缩短程序代码长度】、【优化软件数据流向】、【降低软件复杂度】、【提高软件可靠性】。
故障树分析(FTA)、失效模式与效应分析(FMEA)方法的应用
8.4.4 系统配置技术
双机热备技术
采用【“心跳”】方法保证主系统与备用系统的联系
根据两台服务器的工作方式分为:双机【热备】模式(一台工作,一台后备)、双机【互备】模式(两台运行相对独立应用,互为后备)、双机【双工】模式(两台同时运行相同应用,互为后备)。
服务器集群技术:集群内各节点服务器通过【内部局域网】相互通信,若某节点服务器发生故障,这台服务器运行的应用被另一节点服务器【自动接管】
8.5 软件可靠性测试
8.5.1 软件可靠性测试概述
软件可靠性测试分类:可靠性【摸底】测试、可靠性【验证】测试和可靠性【增长】测试)
软件可靠性测试包括:可靠性【目标的确定】、【运行剖面的开发】、【测试用例的设计】、【测试实施】、【测试结果分析】等。
8.5.2 定义软件运行剖面
为软件的【使用行为建模(马尔可夫链)】,【开发使用模型】,【明确需测试内容】
8.5.3 可靠性测试用例设计
设计测试用例就是针对【特定功能】或【组合功能】设计测试方案,并编写成【文档】
典型测试用例的基本组成
【测试用例标识】
【被测对象】
【测试环境及条件】
【测试输入】
【操作步骤】
【预期输出】
【判断输出结果是否符合标准】
【测试对象的特殊需求】
【被测对象】
【测试环境及条件】
【测试输入】
【操作步骤】
【预期输出】
【判断输出结果是否符合标准】
【测试对象的特殊需求】
8.5.4 可靠性测试的实施
用时间定义的软件可靠性数据分为4类:【失效时间数据】、【失效间隔时间数据】、【分组时间内的失效数】、【分组时间的累积失效数】
测试记录组成:【测试人员】、【测试时间】、含有【测试用例的说明或标识】、所有与测试有关的【测试结果,包括失效数据】
测试报告组成:测试【时间】、【软件产品标识】、【测试环境配置】、测试【依据】、测试【结果】、测试【问题】
8.6 软件可靠性评估
8.6.1 软件可靠性评价概述
可靠性评估过程:【选择可靠性模型】、【收集可靠性数据】、可靠性【评估和预测】
8.6.2 可靠性模型的选择
应考虑的方面:【模型假设的适用性】、【预测的能力与质量】、模型输出值【是否满足可靠性评价需求】、使用的【简便性】
8.6.3 可靠性数据的收集
存在的问题
可靠性数据的【规范不统一】
数据【收集工作的连续性】不能保证
缺乏有效的数据【收集手段】
【数据的完整性】不能保证。
【数据质量和准确性】不能保证
收集办法
尽可能【早地确定可靠性模型】
数据收集计划要有较强的【可操作性】
重视【测试数据的分析和整理】
充分利用【技术手段(数据库技术)】来完成测试数据的存储和统计分析
8.6.4 软件可靠性的评估和预测
目的:是评估软件系统的【可靠性状况】和【预测将来一段时间的可靠性水平】
以软件【可靠性模型分析】为主,以【失效数据的图形分析法】和【试探性数据分析】技术等为辅。
9、软件架构的演化和维护
综合3~5分
案例、论文
综合3~5分
案例、论文
9.1 软件架构演化概述
9.1.1 演化的重要性
保障软件系统具备诸多好的特性
有效管控软件系统的整体复杂性和变化性,降低软件检修和修改成本
保证软件系统演化的一致性和正确性,增加便捷性
9.1.2 演化和定义的关系
软件架构演化主要关注点:【组件(基本要素)】、【连接件(组件间的交互关系)】和【约束(组件和连接件的拓扑关系和配置)】
9.2 面向对象软件架构演化过程
9.2.1 对象演化
对象自身的演化是组件本身的【接口】、【类型】和【语义】等属性的演化
AO:是在系统需要添加新的对象来实现某种新的功能,或需将现有对象的某个功能独立以增加架构灵活性时发生
DO:是在系统需要移除某个现有的功能,或需合并某些对象及其功能来降低架构的复杂度的时候发生
在发生对象演化时,一般会伴随着相应的消息演化,新增相应的消息以完成交互,从而对架构的【正确性】或【时态属性】产生影响。
9.2.2 消息演化
消息演化的核心元素:【名称】、【源对象】、【目标对象】、【时序】等信息。
AM:增添一条新的消息,产生在对象之间需要增加新的交互行为的时候。
DM:删除当前的一条消息,产生在需要移除某交互行为的时候。
SMO:交换两条消息的时间顺序,发生在需要改变两个交互行为之间的时候。
OM:反转消息的发送对象与接收对象,发生在需要修改某个交互行为本身的时候。
CMM:改变消息的发送或接收对象,发生在需要修改某个交互行为本身的时候。
9.2.3 复合片段演化
复合片段是对象交互关系的【控制流】描述,表示可能发生在不同场合的交互,与消息同属于连接件范畴。
复合片段本身的信息包括【类型】、【成立条件】和【内部执行序列】
AF:在某几条消息上新增复合片段,发生在需要增添新的控制流时
DF:删除某个现有的复合片段,发生在需要移除当前某段控制流时。
FTC:改变复合片段的类型,发生在需要改变某段控制流时。
FCC:改变复合片段内部执行的条件,发生在改变当前控制流的执行条件时
9.2.4 约束演化
约束演化对应着【架构配置】的演化
AC:直接添加新的约束信息,需判断当前设计是否满足新添加的约束要求
DC:直接移除某条约束信息,发生在去除某些不必要条件的时候。
9.3 软件架构的演化分类
按照软件架构的实现方式和实施粒度分类:基于【过程和函数】的演化、【面向对象】的演化、基于【组件】的演化、基于【架构】的演化
按照研究方法分类
对演化的支持,如代码模块化的准则、可维护性的指示(如内聚和耦合)、代码重构等
版本和工程的管理工具,如CVS和COCOMO
架构变换的形式方法,包括系统结构和行为变换的模型,以及架构演化的重现风格等
架构演化的成本收益分析,决定如何增加系统的弹性
按软件架构的演化过程是否处于系统运行时期:【静态】演化、【动态】演化
9.3.1 软件架构演化时期
【设计时】演化:发生在体系结构模型与之相关的代码编译之前
【运行前】演化:发生在执行之前、编译之后
【有限制运行时】演化:只发生在某些特定约束满足时
【运行时】演化:发生在运行时不能满足要求时
9.3.2 软件架构静态演化
静态演化需求:设计时演化需求、运行前演化需求
一般过程:软件理解 → 需求变更分析 → 演化计划 → 系统重构 → 系统测试
原子演化操作:基于UML模型表示的软件架构,在逻辑语义上粒度最小的架构修改操作
静态演化实例:【正交】软件架构
与可维护性相关的架构演化操作:增、删、拆分、聚合模块;增、删模块间的依赖关系;增、删模块间的接口;AM、RM、SM(Split Module)、AGM(Aggregate Modules)、AMD(Add Module Dependence)、RMD、AMI(Add Module Interface)、RMI、
与可靠性相关的架构演化操作:增删对象;增删消息;增删改片段;增删用例;增删执行者;AO、RO、AMS、RMS、AF、RF、CF、AU(Add Use Case)、RU、AA(Add Actor)、RA
9.3.3 软件架构动态演化
动态演化需求:软件【内部执行】所导致的【体系结构改变】、软件系统【外部的请求】对软件进行的【重配置】
动态演化等级:【交互】动态性、【结构】动态性、【架构】动态性
动态演化内容:【属性改名】、【行为】变化、【拓扑结构】改变、【风格】变化
动态软件架构(DSA)
基本原理是:运行时刻体系结构相关信息的改变可用来触发、驱动系统自身的动态调整。
描述语言:基于行为视角的π-ADL、基于反射视角的Pilar、基于协调视角的LIME
演化工具:使用【反射】机制、基于【组件操作】、基于【 π 演算】、利用外部的体系结构【演化管理器】
应用实例—PKUAS:包括【容器系统】、【微内核】、【公共服务】、【工具】 4 种类型。
动态重配置(DR)
模式:【主从】模式、【中央控制】模式、【客户端/服务器】模式、【分布式】控制模式
难点:约束定义困难、性能约束难以静态衡量、难以管理所有方面、需同时保证组件系统完整性和重配置策略的正确和安全性。
应用实例:可重用、可配置的产品线架构
9.4 软件架构可持续演化原则
(1)成本控制原则:演化成本要控制在预期的范围之内。
(2)进度可控原则:架构演化要在预期的时间内完成。
(3)风险可控原则:架构演化中的经济风险、时间风险、人力风险、技术风险和环境风险在可控范围内。
(4)主体维持原则:软件演化的平均增量的增长须保持平稳,保证软件系统主体行为稳定。
(5)系统总体结构优化原则:使演化后的软件系统整体结构(布局)更加合理。
(6)平滑演化原则:软件的演化速率趋于稳定
(7)目标一致原则:架构演化的阶段目标和最终目标要一致。
(8)模块独立演化原则:软件中各模块自身的演化最好相互独立。
(9)影响可控原则:如果一个模块发生变更,给其他模块带来的影响在可控范围内。
(10)复杂性可控原则:必须控制架构的复杂性,保障软件的复杂性在可控范围内。
(11)有利于重构原则:使演化后软件架构便于重构。
(12)有利于重用原则:演化最好能维持,甚至提高整体架构的可重用性。
(13)设计原则遵循性原则:架构演化最好不能与架构设计原则冲突。
(14)适应新技术原则:软件要独立于特定的技术手段,可运行于不同平台。
(15)环境适应性原则:架构演化后的软件版本比较容易适应新的硬件环境和软件环境。
(16)标准依从性原则:演化不违背相关质量标准(国际标准、国家标准、行业标准等)。
(17)质量向好原则:使所关注的某个质量指标或质量指标的综合效果变更好。
(18)适应新需求原则:很容易适应新的需求变更。
9.5 软件架构演化评估方法
9.5.1 演化过程已知的评估
评估流程:将架构度量应用到演化过程中,通过对演化前后的不同版本的架构分别进行度量,得到度量结果的差值及其变化趋势,并计算架构间质量属性距离,进而对相关质量属性进行评估。
9.5.2 演化过程未知的评估
架构演化的评估过程
9.6 软件架构演化实例分析
第一阶段:单体架构:应用程序、数据库、文件等所有资源都在一台服务器上。
第二阶段:垂直架构:将应用和数据分离,整个网站使用 3 台服务器:应用服务器、文件服务器、数据服务器
第三阶段:使用缓存改善网站性能:包括在应用服务器上的本地缓存和在专门的分布式缓存服务器上的远程缓存。
第四阶段:使用服务集群改善网站并发处理能力:通过负载均衡调度服务器,将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,解决高并发、海量数据问题。
第五阶段:数据库读写分离:应用服务器在写数据时,访问主数据库,主服务器通过主从复制机制将数据更新同步到从服务器。在应用服务器读数据时,访问从数据库。
第六阶段:使用反向代理和CDN加速网站响应:CDN 部署在网络提供商的机房,用户在请求网站服务时,可在距离最近的网络提供商机房获取数据。反向代理部署在网站的中心机房,用户请求到达中心机房后,先访问反向代理服务器。
第七阶段:使用分布式文件系统和分布式数据库系统:进行业务分库,将不同业务的数据部署在不同的物理服务器上。
第八阶段:使用NoSQL和搜索引擎
第九阶段:业务拆分:将一个网站拆分成许多不同的应用,每个应用独立部署。
第十阶段:分布式服务:共用的业务提取出来,独立部署;可复用的业务连接数据库,提供共用业务服务
子主题
9.7 软件架构维护
9.7.1 软件架构【知识】管理
架构知识 = 架构【设计】 + 架构【设计决策】
架构知识管理的含义:侧重于软件开发和实现过程所涉及的架构静态演化,在架构文档等信息来源中捕捉架构知识,提供架构的质量属性及其设计依据进行记录和评价
架构知识管理的需求:防止关键的设计知识“沉没”在软件架构中。
9.7.2 软件架构【修改】管理
主要是建立一个隔离区域,保障该区域中任何修改对其他部分影响最小。
9.7.3 软件架构【版本】管理
为软件架构演化的版本演化控制、使用和评价提供可靠依据。
9.7.4 软件架构可维护性度量实践
圈复杂度CCN:度量整个架构的独立执行路径的条数
扇入扇出度FFC
模块的响应RFC
模块间耦合度CBO
紧内聚度TCC
松内聚度LCC
10、未来信息综合技术
综合3~5分
案例
综合3~5分
案例
10.1 信息物理系统(CPS)技术
信息物理系统(Cyber-Physical System,CPS),最早由美国国家航空航天局于 1992 年提出,后科学家海伦·吉尔给出详细描述。信息物理系统是控制系统、嵌入式系统的扩展与延伸。CPS通过集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建了物理空间与信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的复杂系统,实现系统内资源配置和运行的按需响应、快速迭代、动态优化。
CPS的本质是:构建一套信息空间与物理空间之间基于数据自动流动的状态感知、实时分析、科学决策、精准执行的闭环赋能体系,解决生产制造、应用服务过程中的复杂性和不确定性问题,提高资源配置效率,实现资源优化。
体系结构:【单元】级、【系统】级、【SOS】级
技术体系:CPS【总体】技术(顶层设计技术)、CPS【支撑】技术(基于应用支撑)、CPS【核心】技术(基础技术)。
技术分为四大核心技术要素:【“硬”】(感知和自动控制,是CPS实现的硬件支撑)、【“软”】(工业软件,CPS核心)、【“网”】(工业网络,是网络载体)、【“平台”】(工业云和智能服务平台,是支撑上层解决方案的基础)。
建设路径:CPS【体系设计】、【单元级CPS建设、【系统级】CPS建设、【SOS级】CPS建设
典型应用场景
智能【设计】方面:产品及工艺设计、生产线/工厂设计。
智能【生产】方面:设备管理应用场景、生产管理应用场景、柔性制造应用场景
智能【服务】方面:健康管理、智能维护、远程征兆诊断、协同优化、共享服务。
智能【应用】方面:无人装备、产业链互动、价值链共赢
10.2 人工智能(AI)技术
人工智能是利用数字计算机或数字计算机控制的机器模拟,延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
发展历程:图灵测试→ “人工智能”术语→ 机器学习→ 专家系统→ 计算机战胜双陆棋世界冠军→ 决策树模型和神经网络→ IBM深蓝战胜国际象棋世界冠军→ 深度学习→ 爆发式发展。
人工智能根据是否能真正实现推理、思考和解决问题,分为弱人工智能和强人工智能。
关键技术
自然语言处理:包括机器翻译、语义理解、问答系统等。
计算机视觉:如自动驾驶、机器人、智能医疗。
知识图谱:可用于发欺诈、不一致性验证、组团欺诈等对公共安全保障形成威胁的领域。
人机交互:传统的基本交互、图形交互、语音交互、情感交互、体感交互及脑机交互等。
虚拟现实或增强现实:在一定范围内生成与真实环境在视觉、听觉等方面高度近似的数字化环境。
机器学习
学习模式的不同
有监督(有标注的样本集):是利用已标记的有限训练数据集,通过某种学习策略/方法建立一个模型,从而实现对新数据/实例的标记(分类)/映射
无监督(无标注):利用无标记的有限数据描述隐藏在未标记数据中的结构/规律
半监督(少量标注和大量无标注):利用少量的标注样本和大量的未标识样本进行训练和分类,从而达到减少标注代价、提高学习能力的目的
强化学习(反馈机制):强化学习可以学习从环境状态到行为的映射,使得智能体选择的行为能够获得环境的最大奖赏,最终目标是使外部环境对学习系统在某种意义下的评价最佳
强化学习在机器人控制、无人驾驶、工业控制等领域获得成功应用。
强化学习的常见算法包括Q-Leamning、 时间差学习等。
强化学习在机器人控制、无人驾驶、工业控制等领域获得成功应用。
强化学习的常见算法包括Q-Leamning、 时间差学习等。
学习方法的不同
传统机器学习(需手动完成)
传统机器学习的领域特征需要手动完成,且需要大量领域专业知识
定义:从一些观测(训练)样本出发,试图发现不能通过原理分析获得的规律,实现对未来数据行为或趋势的准确预测
特点:平衡了学习结果的有效性与学习模型的可解释性,为解决有限样本的学习问题提供了一种框架。
应用场景:传统机器学习方法在自然语言处理、语音识别、图像识别、信息检索等许多计算机领域获得了广泛应用。
常用算法:逻辑回归、隐马尔科夫方法、支持向量机方法、 K 近邻方法、三层人工神经网络方法、 Adaboost算法、贝叶斯方法以及决策树方法等。
深度学习(需大量训练数据集和GPU提供算力)
深度学习不需要人工特征提取,但需要大量的训练数据集以及强大的GPU服务器来提供算力
定义:基于多层神经网络并以海量数据作为输入规则的自学习方法,依靠提供给它的大量实际行为数据(训练数据集),进行参数和规则调整
典型的深度学习算法包括:卷积神经网络 (CNN)、 循环神经网络 (RNN) 等
常见算法:【主动】学习、【演化】学习、【迁移】学习
10.3 机器人技术
定义:具体【脑、手、脚】等三要素个体;具有【非接触】传感器和【接触】传感器;具有【平衡觉】和【固定觉】的传感器。
发展历程:第一代机器人(【示教再现】型机器人)→第二代机器人(【感觉】型机器人)→第三代机器人(【智能】型机器人)。
核心技术:【云-边-端的无缝协同计算】、【持续学习与协同学习】、【知识图谱】、【场景自适应】、【数据安全】
控制方式分类:【操作】机器人、【程序】机器人、【示教再现】机器人、【智能】机器人和【综合】机器人
按照应用行业来分:【工业】机器人、【服务】机器人和【特殊领域】机器人。
研究内容:机械手设计;机器人运动学、动力学和控制;轨迹设计和路径规划;传感器;机器人视觉;机器人语言;装置与系统结构;机器人智能等。
10.4 边缘计算技术
定义
边缘计算就是将数据的处理、应用程序的运行以及一些功能服务的实现,由网络中心下放到网络边缘节点上
边缘计算产业联盟 (ECC) 对于边缘计算的定义:云计算在数据中心之外汇聚节点的延伸和演进,主要包括云边缘、边缘云和云化网关三类落地形态;以“边云协同”和“边缘智能”为核心能力发展方向
OpenStack社区的定义概念:为应用开发者和服务提供商在网络的边缘侧提供云服务和IT环境服务;目标是在靠近数据输入或用户的地方提供计算、存储和网络带宽。
ISO/IEC JTC1/SC38 对边缘计算给出的定义:在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台,就近提供边缘智能服务
国际标准组织ETSI的定义:提供移动网络边缘 IT 服务和计算能力,靠近移动用户,以减少网络操作和服务交付的时延,提高用户体验。
特点
联接性:所联接物理对象的多样性及应用场景的多样性,需要边缘计算具备丰富的联接功能,如各种网络接口、网络协议等。
数据第一入口:边缘计算拥有大量、实时、完整的数据,可基于数据全生命周期进行管理与价值创造,将更好地支撑预测性维护、资产效率与管理等创新应用。
约束性:边缘计算产品需适配工业现场相对恶劣的工作条件与运行环境。在工业互联场景下,对边缘计算设备的功耗、成本、空间也有较高的要求。边缘计算产品需要考虑通过软硬件集成与优化,以适配各种条件约束,支撑行业数字化多样性场景。
分布性:边缘计算实际部署天然具备分布式特征。这要求边缘计算支持分布式计算与存储、实现分布式资源的动态调度与统一管理、支撑分布式智能、具备分布式安全等能力。
边云协同
资源协同:边缘节点提供计算、存储、网络、虚拟化等基础设施资源,具有本地资源调度管理能力,同时可与云端协同,接受并执行云端资源调度管理策略,包括边缘节点的设备管理、资源管理以及网络连接管理。
数据协同:边缘节点主要负责现场/终端数据的采集,按照规则或数据模型对数据进行初步处理与分析,并将处理结果以及相关数据上传给云端;云端提供海量数据的存储、分析与价值挖掘。边缘与云的数据协同,支持数据在边缘与云之间可控有序流动,形成完整的数据流转路径,高效低成本对数据进行生命周期管理与价值挖掘。
智能协同:边缘节点执行推理,实现分布式智能;云端开展模型训练,并将模型下发边缘节点。
【应用管理】协同:边缘节点提供应用部署与运行环境,并对本节点多个应用的生命周期进行管理调度;云端主要提供应用开发、测试环境,以及应用的生命周期管理能力。
【业务管理】协同:边缘节点提供模块化、微服务化的应用/数字孪生/网络等应用实例;云端主要提供按照客户需求实现应用/数字孪生/网络等的业务编排能力。
【服务】协同:边缘节点按照云端策略实现部分ECSaaS 服务,通过 ECSaaS 与云端 SaaS 的协同实现面向客户的按需 SaaS 服务;云端主要提供SaaS服务在云端和边缘节点的服务分布策略,以及云端承担的 SaaS 服务能力。
边缘安全的价值体现在:提供可信的【基础设施】、为边缘应用提供【可信赖的安全服务】、提供安全可信的【网络和覆盖】
应用场景:视频监控、智慧园区、工业物联网、安卓云与云游戏、CloudVR
10.5 数字孪生技术
数字孪生是跨层级、跨尺度的现实世界和虚拟世界建立沟通的桥梁,是第四次工业革命的通用目的技术和核心技术体系之一,是支撑万物互联的综合技术体系,是数字经济发展的基础,是未来智能时代的信息基础设施。
数字孪生体是现有或将有的物理实体对象的数字模型,通过实测、仿真和数据分析来实时感知、诊断、预测物理实体对象的状态,通过优化和指令来调控物理实体对象的行为,通过相关数字模型间的相互学习来进化自身,同时改进利益相关方在物理实体对象生命周期内的决策。
关键技术
建模:将我们对物理世界的理解进行简化和模型化
仿真:是验证和确认这种理解的正确性和有效性
其他技术(基于数据融合的【数字线程】):目前VR、AR以及MR等增强现实技术、数字线程、系统工程和MBSE、 物联网、云计算、雾计算、边缘计算、大数据技术、机器学习和区块链技术,仍为数字孪生体构建过程中的内外围核心技术。
应用场景
制造:在制造领域,一些传统的技术,如CAD和CAE, 天然就是为物理产品数字化而生,一些新兴技术,如AI、AR、loT也为更逼真、更智能、更交互的数字孪生体插上了翅膀
产业:数字孪生体以云计算、大数据、物联网、人工智能和【区块链】等IT和DT使能技术为支撑,与行业趋势和产业升级需求相结合,构建实体的数字镜像。
城市:要建成新型智慧城市,首先要构建城市的数字孪生体。城市级的整体数字化是城级智慧化的前提条件。
战场
10.6 云计算和大数据技术
云计算
云计算是同时描述一个系统平台或一类应用程序的术语,包含【平台】和【应用】。
云计算平台按需进行动态部署、配置、重新配置以及取消服务等。
云计算平台按需进行动态部署、配置、重新配置以及取消服务等。
服务方式
软件即服务(SaaS):服务提供商将应用软件统一部署在云计算服务器上
平台即服务(PaaS):服务提供商将分布式开发环境与平台作为一种服务来提供。
基础设施即服务(IaaS):服务提供商将多台服务器组成“云端”基础设施作为计量服务提供给客户。
部署模式:【公有】云、【社区】云、【私有】云、【混合】云
大数据
大数据是指其大小或复杂性无法通过现有常用的软件工具,以合理的成本并在可接受的时限内对其进行捕获、管理和处理的数据集。
这些困难包括数据的【收入】、【存储】、【搜索】、【共享】、【分析】和【可视化】。
这些困难包括数据的【收入】、【存储】、【搜索】、【共享】、【分析】和【可视化】。
三个量化指标:【数据量】、【数据种类】和【处理速度】
大数据分析步骤:数据获取和记录→信息抽取/清洗→数据【集成/聚集/表现】→数据【分析/建模】→数据【解释】
大数据应用领域:制造业、服务业、交通行业、医疗行业。
11、标准化与知识产权
综合3分
综合3分
标准分类:国际标准、美国标准、国家标准、国家军用标准、行业标准、地方标准和企业标准
标准化机构
知识产权(专利和著作权)
特性
【无体】性:知识产权的对象没有具体形体,不能用五官触觉去感受,是一种抽象财富。
【专有】性:知识产权的专有性指除权利人同意或法律规定外,权利人以外的任何人不得享有或使用该项权利。
【地域】性:知识产权的地域性是指知识产权只在授予其权利的国家或确认其权利的国家产生,并且只能在该国范围内受法律保护,而其他国家则对其没有必须给予法律保护的义务。
【时间】性:知识产权一旦超过规定的法律期限,相关知识产品即成为整个社会的共同财富,为全人类共同使用。
中华人民共和国著作权法
第三条 本法所称的作品,是指文学、艺术和科学领域内具有独创性并能以一定形式表现的智力成果,包括:
(一)文字作品;
(二)口述作品;
(三)音乐、戏剧、曲艺、舞蹈、杂技艺术作品;
(四)美术、建筑作品;
(五)摄影作品;
(六)视听作品;
(七)工程设计图、产品设计图、地图、示意图等图形作品和模型作品;
(八)计算机软件;
(九)符合作品特征的其他智力成果。
(一)文字作品;
(二)口述作品;
(三)音乐、戏剧、曲艺、舞蹈、杂技艺术作品;
(四)美术、建筑作品;
(五)摄影作品;
(六)视听作品;
(七)工程设计图、产品设计图、地图、示意图等图形作品和模型作品;
(八)计算机软件;
(九)符合作品特征的其他智力成果。
第五条 本法不适用于:
(一)法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;
(二)单纯事实消息;
(三)历法、通用数表、通用表格和公式。
(一)法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;
(二)单纯事实消息;
(三)历法、通用数表、通用表格和公式。
第十条 著作权包括下列人身权和财产权:
(一)发表权,即决定作品是否公之于众的权利;
(二)署名权,即表明作者身份,在作品上署名的权利;
(三)修改权,即修改或者授权他人修改作品的权利;
(四)保护作品完整权,即保护作品不受歪曲、篡改的权利;
(五)复制权,即以印刷、复印、拓印、录音、录像、翻录、翻拍、数字化等方式将作品制作
一份或者多份的权利;
(六)发行权,即以出售或者赠与方式向公众提供作品的原件或者复制件的权利;
(七)出租权,即有偿许可他人临时使用视听作品、计算机软件的原件或者复制件的权利,计
算机软件不是出租的主要标的的除外;
(八)展览权,即公开陈列美术作品、摄影作品的原件或者复制件的权利;
(九)表演权,即公开表演作品,以及用各种手段公开播送作品的表演的权利;
(十)放映权,即通过放映机、幻灯机等技术设备公开再现美术、摄影、视听作品等的权利;
(十一)广播权,即以有线或者无线方式公开传播或者转播作品,以及通过扩音器或者其他传
送符号、声音、图像的类似工具向公众传播广播的作品的权利,但不包括本款第十二项规定的权利;
(十二)信息网络传播权,即以有线或者无线方式向公众提供,使公众可以在其选定的时间和
地点获得作品的权利;
(十三)摄制权,即以摄制视听作品的方法将作品固定在载体上的权利;
(十四)改编权,即改变作品,创作出具有独创性的新作品的权利;
(十五)翻译权,即将作品从一种语言文字转换成另一种语言文字的权利;
(十六)汇编权,即将作品或者作品的片段通过选择或者编排,汇集成新作品的权利;
(十七)应当由著作权人享有的其他权利。
著作权人可以许可他人行使前款第五项至第十七项规定的权利,并依照约定或者本法有关规定获得报酬。
著作权人可以全部或者部分转让本条第一款第五项至第十七项规定的权利,并依照约定或者本法有关规定获得报酬。
(一)发表权,即决定作品是否公之于众的权利;
(二)署名权,即表明作者身份,在作品上署名的权利;
(三)修改权,即修改或者授权他人修改作品的权利;
(四)保护作品完整权,即保护作品不受歪曲、篡改的权利;
(五)复制权,即以印刷、复印、拓印、录音、录像、翻录、翻拍、数字化等方式将作品制作
一份或者多份的权利;
(六)发行权,即以出售或者赠与方式向公众提供作品的原件或者复制件的权利;
(七)出租权,即有偿许可他人临时使用视听作品、计算机软件的原件或者复制件的权利,计
算机软件不是出租的主要标的的除外;
(八)展览权,即公开陈列美术作品、摄影作品的原件或者复制件的权利;
(九)表演权,即公开表演作品,以及用各种手段公开播送作品的表演的权利;
(十)放映权,即通过放映机、幻灯机等技术设备公开再现美术、摄影、视听作品等的权利;
(十一)广播权,即以有线或者无线方式公开传播或者转播作品,以及通过扩音器或者其他传
送符号、声音、图像的类似工具向公众传播广播的作品的权利,但不包括本款第十二项规定的权利;
(十二)信息网络传播权,即以有线或者无线方式向公众提供,使公众可以在其选定的时间和
地点获得作品的权利;
(十三)摄制权,即以摄制视听作品的方法将作品固定在载体上的权利;
(十四)改编权,即改变作品,创作出具有独创性的新作品的权利;
(十五)翻译权,即将作品从一种语言文字转换成另一种语言文字的权利;
(十六)汇编权,即将作品或者作品的片段通过选择或者编排,汇集成新作品的权利;
(十七)应当由著作权人享有的其他权利。
著作权人可以许可他人行使前款第五项至第十七项规定的权利,并依照约定或者本法有关规定获得报酬。
著作权人可以全部或者部分转让本条第一款第五项至第十七项规定的权利,并依照约定或者本法有关规定获得报酬。
第十八条 自然人为完成法人或者非法人组织工作任务所创作的作品是【职务作品】,除本条第二款的规定以外,著作权由作者享有,但法人或者非法人组织有权在其业务范围内优先使用。作品完成两年内,未经单位同意,作者不得许可第三人以与单位使用的相同方式使用该作品。
有下列情形之一的职务作品,作者享有署名权,著作权的其他权利由法人或者非法人组织享有,法人或者非法人组织可以给予作者奖励:
(一)主要是利用法人或者非法人组织的物质技术条件创作,并由法人或者非法人组织承担责任的工程设计图、产品设计图、地图、示意图、计算机软件等职务作品;
(二)报社、期刊社、通讯社、广播电台、电视台的工作人员创作的职务作品;
(三)法律、行政法规规定或者合同约定著作权由法人或者非法人组织享有的职务作品。
有下列情形之一的职务作品,作者享有署名权,著作权的其他权利由法人或者非法人组织享有,法人或者非法人组织可以给予作者奖励:
(一)主要是利用法人或者非法人组织的物质技术条件创作,并由法人或者非法人组织承担责任的工程设计图、产品设计图、地图、示意图、计算机软件等职务作品;
(二)报社、期刊社、通讯社、广播电台、电视台的工作人员创作的职务作品;
(三)法律、行政法规规定或者合同约定著作权由法人或者非法人组织享有的职务作品。
第十九条 受委托创作的作品,著作权的归属由委托人和受托人通过合同约定。合同未作明确约定或者没有订立合同的,著作权属于受托人
第二十条 作品原件所有权的转移,不改变作品著作权的归属,但美术、摄影作品原件的展览权由原件所有人享有。
作者将未发表的美术、摄影作品的原件所有权转让给他人,受让人展览该原件不构成对作者发表权的侵犯
作者将未发表的美术、摄影作品的原件所有权转让给他人,受让人展览该原件不构成对作者发表权的侵犯
第二十二条 作者的署名权、修改权、保护作品完整权的保护期不受限制。
第二十四条 在下列情况下使用作品,可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名或者名称、作品名称,并且不得影响该作品的正常使用,也不得不合理地损害著作权人的合法权益:
(一)为个人学习、研究或者欣赏,使用他人已经发表的作品;
(二)为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品;
(三)为报道新闻,在报纸、期刊、广播电台、电视台等媒体中不可避免地再现或者引用已经发表的作品;
(四)报纸、期刊、广播电台、电视台等媒体刊登或者播放其他报纸、期刊、广播电台、电视台等媒体已经发表的关于政治、经济、宗教问题的时事性文章,但著作权人声明不许刊登、播放的除外;
(五)报纸、期刊、广播电台、电视台等媒体刊登或者播放在公众集会上发表的讲话,但作者声明不许刊登、播放的除外;
(六)为学校课堂教学或者科学研究,翻译、改编、汇编、播放或者少量复制已经发表的作品,供教学或者科研人员使用,但不得出版发行;
(七)国家机关为执行公务在合理范围内使用已经发表的作品;
(八)图书馆、档案馆、纪念馆、博物馆、美术馆、文化馆等为陈列或者保存版本的需要,复制本馆收藏的作品;
(九)免费表演已经发表的作品,该表演未向公众收取费用,也未向表演者支付报酬,且不以营利为目的;
(十)对设置或者陈列在公共场所的艺术作品进行临摹、绘画、摄影、录像;
(十一)将中国公民、法人或者非法人组织已经发表的以国家通用语言文字创作的作品翻译成少数民族语言文字作品在国内出版发行;
(十二)以阅读障碍者能够感知的无障碍方式向其提供已经发表的作品;
(十三)法律、行政法规规定的其他情形。
(一)为个人学习、研究或者欣赏,使用他人已经发表的作品;
(二)为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品;
(三)为报道新闻,在报纸、期刊、广播电台、电视台等媒体中不可避免地再现或者引用已经发表的作品;
(四)报纸、期刊、广播电台、电视台等媒体刊登或者播放其他报纸、期刊、广播电台、电视台等媒体已经发表的关于政治、经济、宗教问题的时事性文章,但著作权人声明不许刊登、播放的除外;
(五)报纸、期刊、广播电台、电视台等媒体刊登或者播放在公众集会上发表的讲话,但作者声明不许刊登、播放的除外;
(六)为学校课堂教学或者科学研究,翻译、改编、汇编、播放或者少量复制已经发表的作品,供教学或者科研人员使用,但不得出版发行;
(七)国家机关为执行公务在合理范围内使用已经发表的作品;
(八)图书馆、档案馆、纪念馆、博物馆、美术馆、文化馆等为陈列或者保存版本的需要,复制本馆收藏的作品;
(九)免费表演已经发表的作品,该表演未向公众收取费用,也未向表演者支付报酬,且不以营利为目的;
(十)对设置或者陈列在公共场所的艺术作品进行临摹、绘画、摄影、录像;
(十一)将中国公民、法人或者非法人组织已经发表的以国家通用语言文字创作的作品翻译成少数民族语言文字作品在国内出版发行;
(十二)以阅读障碍者能够感知的无障碍方式向其提供已经发表的作品;
(十三)法律、行政法规规定的其他情形。
中华人民共和国专利法
第二条 本法所称的发明创造是指发明、实用新型和外观设计。
发明,是指对产品、方法或者其改进所提出的新的技术方案。
实用新型,是指对产品的形状、构造或者其结合所提出的适于实用的新的技术方案。
外观设计,是指对产品的整体或者局部的形状、图案或者其结合以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计。
发明,是指对产品、方法或者其改进所提出的新的技术方案。
实用新型,是指对产品的形状、构造或者其结合所提出的适于实用的新的技术方案。
外观设计,是指对产品的整体或者局部的形状、图案或者其结合以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计。
第六条 执行本单位的任务或者主要是利用本单位的物质技术条件所完成的发明创造为职务发明创造。
职务发明创造申请专利的权利属于该单位,申请被批准后,该单位为专利权人。该单位可以依法处置其职务发明创造申请专利的权利和专利权,促进相关发明创造的实施和运用。
非职务发明创造,申请专利的权利属于发明人或者设计人;申请被批准后,该发明人或者设计人为专利权人。
利用本单位的物质技术条件所完成的发明创造,单位与发明人或者设计人订有合同,对申请专利的权利和专利权的归属作出约定的,从其约定。
职务发明创造申请专利的权利属于该单位,申请被批准后,该单位为专利权人。该单位可以依法处置其职务发明创造申请专利的权利和专利权,促进相关发明创造的实施和运用。
非职务发明创造,申请专利的权利属于发明人或者设计人;申请被批准后,该发明人或者设计人为专利权人。
利用本单位的物质技术条件所完成的发明创造,单位与发明人或者设计人订有合同,对申请专利的权利和专利权的归属作出约定的,从其约定。
第七条 对发明人或者设计人的非职务发明创造专利申请,任何单位或者个人不得压制。
第八条 两个以上单位或者个人合作完成的发明创造、一个单位或者个人接受其他单位或者个人委托所完成的发明创造,除另有协议的以外,申请专利的权利属于完成或者共同完成的单位或者个人;申请被批准后,申请的单位或者个人为专利权人。
第九条 同样的发明创造只能授予一项专利权。但是,同一申请人同日对同样的发明创造既申请实用新型专利又申请发明专利,先获得的实用新型专利权尚未终止,且申请人声明放弃该实用新型专利权的,可以授予发明专利权。
两个以上的申请人分别就同样的发明创造申请专利的,专利权授予最先申请的人。
两个以上的申请人分别就同样的发明创造申请专利的,专利权授予最先申请的人。
第二十五条 对下列各项,不授予专利权:
(一)科学发现;
(二)智力活动的规则和方法;
(三)疾病的诊断和治疗方法;
(四)动物和植物品种;
(五)原子核变换方法以及用原子核变换方法获得的物质;
(六)对平面印刷品的图案、色彩或者二者的结合作出的主要起标识作用的设计。
对前款第(四)项所列产品的生产方法,可以依照本法规定授予专利权。
(一)科学发现;
(二)智力活动的规则和方法;
(三)疾病的诊断和治疗方法;
(四)动物和植物品种;
(五)原子核变换方法以及用原子核变换方法获得的物质;
(六)对平面印刷品的图案、色彩或者二者的结合作出的主要起标识作用的设计。
对前款第(四)项所列产品的生产方法,可以依照本法规定授予专利权。
中华人民共和国商标法
第五条 两个以上的自然人、法人或者其他组织可以共同向商标局申请注册同一商标,共同享有和行使该商标专用权。
第六条 法律、行政法规规定必须使用注册商标的商品,必须申请商标注册,未经核准注册的,不得在市场销售。
第十条 下列标志不得作为商标使用:
(一)同中华人民共和国的国家名称、国旗、国徽、国歌、军旗、军徽、军歌、勋章等相同或者近似的,以及同中央国家机关的名称、标志、所在地特定地点的名称或者标志性建筑物的名称、图形相同的;
(二)同外国的国家名称、国旗、国徽、军旗等相同或者近似的,但经该国政府同意的除外;
(三)同政府间国际组织的名称、旗帜、徽记等相同或者近似的,但经该组织同意或者不易误导公众的除外;
(四)与表明实施控制、予以保证的官方标志、检验印记相同或者近似的,但经授权的除外;
(五)同“红十字”、“红新月”的名称、标志相同或者近似的;
(六)带有民族歧视性的;
(七)带有欺骗性,容易使公众对商品的质量等特点或者产地产生误认的;
(八)有害于社会主义道德风尚或者有其他不良影响的。
县级以上行政区划的地名或者公众知晓的外国地名,不得作为商标。但是,地名具有其他含义或者作为集体商标、证明商标组成部分的除外;已经注册的使用地名的商标继续有效。
(一)同中华人民共和国的国家名称、国旗、国徽、国歌、军旗、军徽、军歌、勋章等相同或者近似的,以及同中央国家机关的名称、标志、所在地特定地点的名称或者标志性建筑物的名称、图形相同的;
(二)同外国的国家名称、国旗、国徽、军旗等相同或者近似的,但经该国政府同意的除外;
(三)同政府间国际组织的名称、旗帜、徽记等相同或者近似的,但经该组织同意或者不易误导公众的除外;
(四)与表明实施控制、予以保证的官方标志、检验印记相同或者近似的,但经授权的除外;
(五)同“红十字”、“红新月”的名称、标志相同或者近似的;
(六)带有民族歧视性的;
(七)带有欺骗性,容易使公众对商品的质量等特点或者产地产生误认的;
(八)有害于社会主义道德风尚或者有其他不良影响的。
县级以上行政区划的地名或者公众知晓的外国地名,不得作为商标。但是,地名具有其他含义或者作为集体商标、证明商标组成部分的除外;已经注册的使用地名的商标继续有效。
第十一条 下列标志不得作为商标注册:
(一)仅有本商品的通用名称、图形、型号的;
(二)仅直接表示商品的质量、主要原料、功能、用途、重量、数量及其他特点的;
(三)其他缺乏显著特征的。
前款所列标志经过使用取得显著特征,并便于识别的,可以作为商标注册。
第三十一条 两个或者两个以上的商标注册申请人,在同一种商品或者类似商品上,以相同或者近似的商标申请注册的,初步审定并公告申请在先的商标;同一天申请的,初步审定并公告使用在先的商标,驳回其他人的申请,不予公告。
第五十六条 注册商标的专用权,以核准注册的商标和核定使用的商品为限。
第五十七条 有下列行为之一的,均属侵犯注册商标专用权:
(一)未经商标注册人的许可,在同一种商品上使用与其注册商标相同的商标的;
(二)未经商标注册人的许可,在同一种商品上使用与其注册商标近似的商标,或者在类似商品上使用与其注册商标相同或者近似的商标,容易导致混淆的;
(三)销售侵犯注册商标专用权的商品的;
(四)伪造、擅自制造他人注册商标标识或者销售伪造、擅自制造的注册商标标识的;
(五)未经商标注册人同意,更换其注册商标并将该更换商标的商品又投入市场的;
(六)故意为侵犯他人商标专用权行为提供便利条件,帮助他人实施侵犯商标专用权行为的;
(七)给他人的注册商标专用权造成其他损害的。
(一)未经商标注册人的许可,在同一种商品上使用与其注册商标相同的商标的;
(二)未经商标注册人的许可,在同一种商品上使用与其注册商标近似的商标,或者在类似商品上使用与其注册商标相同或者近似的商标,容易导致混淆的;
(三)销售侵犯注册商标专用权的商品的;
(四)伪造、擅自制造他人注册商标标识或者销售伪造、擅自制造的注册商标标识的;
(五)未经商标注册人同意,更换其注册商标并将该更换商标的商品又投入市场的;
(六)故意为侵犯他人商标专用权行为提供便利条件,帮助他人实施侵犯商标专用权行为的;
(七)给他人的注册商标专用权造成其他损害的。
中华人民共和国反不正当竞争法
第九条 经营者不得实施下列侵犯商业秘密的行为:
(一)以盗窃、贿赂、欺诈、胁迫、电子侵入或者其他不正当手段获取权利人的商业秘密;
(二)披露、使用或者允许他人使用以前项手段获取的权利人的商业秘密;
(三)违反保密义务或者违反权利人有关保守商业秘密的要求,披露、使用或者允许他人使用其所掌握的商业秘密;
(四)教唆、引诱、帮助他人违反保密义务或者违反权利人有关保守商业秘密的要求,获取、披露、使用或者允许他人使用权利人的商业秘密。
经营者以外的其他自然人、法人和非法人组织实施前款所列违法行为的,视为侵犯商业秘密。
第三人明知或者应知商业秘密权利人的员工、前员工或者其他单位、个人实施本条第一款所列违法行为,仍获取、披露、使用或者允许他人使用该商业秘密的,视为【侵犯商业秘密】
本法所称的商业秘密,是指不为公众所知悉、具有商业价值并经权利人采取相应保密措施的技术信息、经营信息等商业信息。
(一)以盗窃、贿赂、欺诈、胁迫、电子侵入或者其他不正当手段获取权利人的商业秘密;
(二)披露、使用或者允许他人使用以前项手段获取的权利人的商业秘密;
(三)违反保密义务或者违反权利人有关保守商业秘密的要求,披露、使用或者允许他人使用其所掌握的商业秘密;
(四)教唆、引诱、帮助他人违反保密义务或者违反权利人有关保守商业秘密的要求,获取、披露、使用或者允许他人使用权利人的商业秘密。
经营者以外的其他自然人、法人和非法人组织实施前款所列违法行为的,视为侵犯商业秘密。
第三人明知或者应知商业秘密权利人的员工、前员工或者其他单位、个人实施本条第一款所列违法行为,仍获取、披露、使用或者允许他人使用该商业秘密的,视为【侵犯商业秘密】
本法所称的商业秘密,是指不为公众所知悉、具有商业价值并经权利人采取相应保密措施的技术信息、经营信息等商业信息。
计算机软件保护条例
第二条 本条例所称计算机软件(以下简称软件),是指计算机程序及其有关文档。
第三条 本条例下列用语的含义:
(一)计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。
(二)文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。
(三)软件开发者,是指实际组织开发、直接进行开发,并对开发完成的软件承担责任的法人或者其他组织;或者依靠自己具有的条件独立完成软件开发,并对软件承担责任的自然人。
(四)软件著作权人,是指依照本条例的规定,对软件享有著作权的自然人、法人或者其他组织。
(一)计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。
(二)文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。
(三)软件开发者,是指实际组织开发、直接进行开发,并对开发完成的软件承担责任的法人或者其他组织;或者依靠自己具有的条件独立完成软件开发,并对软件承担责任的自然人。
(四)软件著作权人,是指依照本条例的规定,对软件享有著作权的自然人、法人或者其他组织。
第四条 受本条例保护的软件必须由开发者独立开发,并已固定在某种有形物体上。
第五条 中国公民、法人或者其他组织对其所开发的软件,不论是否发表,依照本条例享有著作权。
第六条 本条例对软件著作权的保护不延及开发软件所用的思想、处理过程、操作方法或者数学概念等。
第九条 软件著作权属于软件开发者,本条例另有规定的除外。
如无相反证明,在软件上署名的自然人、法人或者其他组织为开发者
第十条 由两个以上的自然人、法人或者其他组织合作开发的软件,其著作权的归属由合作开发者签订书面合同约定。无书面合同或者合同未作明确约定,合作开发的软件可以分割使用的,开发者对各自开发的部分可以单独享有著作权;但是,行使著作权时,不得扩展到合作开发的软件整
体的著作权。合作开发的软件不能分割使用的,其著作权由各合作开发者共同享有,通过协商一致行使;不能协商一致,又无正当理由的,任何一方不得阻止他方行使除转让权以外的其他权利,但是所得收益应当合理分配给所有合作开发者
体的著作权。合作开发的软件不能分割使用的,其著作权由各合作开发者共同享有,通过协商一致行使;不能协商一致,又无正当理由的,任何一方不得阻止他方行使除转让权以外的其他权利,但是所得收益应当合理分配给所有合作开发者
第十一条 接受他人委托开发的软件,其著作权的归属由委托人与受托人签订书面合同约定;无书面合同或者合同未作明确约定的,其著作权由受托人享有。
第十四条 软件著作权自软件【开发完成之日】起产生。
自然人的软件著作权,保护期为自然人终生及其死亡后 50 年,截止于自然人死亡后第 50 年的12 月 31 日;软件是合作开发的,截止于最后死亡的自然人死亡后第 50 年的 12 月 31 日。
法人或者其他组织的软件著作权,保护期为 50 年,截止于软件首次发表后第 50 年的 12 月 31日,但软件自开发完成之日起 50 年内未发表的,本条例不再保护。
自然人的软件著作权,保护期为自然人终生及其死亡后 50 年,截止于自然人死亡后第 50 年的12 月 31 日;软件是合作开发的,截止于最后死亡的自然人死亡后第 50 年的 12 月 31 日。
法人或者其他组织的软件著作权,保护期为 50 年,截止于软件首次发表后第 50 年的 12 月 31日,但软件自开发完成之日起 50 年内未发表的,本条例不再保护。
软件产品管理办法
第四条 软件产品的开发、生产、销售、进出口等活动应遵守我国有关法律、法规和标准规范。任何单位和个人不得开发、生产、销售、进出口含有以下内容的软件产品:
(一)侵犯他人知识产权的;
(二)含有计算机病毒的;
(三)可能危害计算机系统安全的;
(四)含有国家规定禁止传播的内容的;
(五)不符合我国软件标准规范的。
(一)侵犯他人知识产权的;
(二)含有计算机病毒的;
(三)可能危害计算机系统安全的;
(四)含有国家规定禁止传播的内容的;
(五)不符合我国软件标准规范的。
12、应用数学
综合2分
综合2分
图论之最小生成树(最短路径问题,依次选取长度最小的边,边数=节点数-1)
定义:在连通的带权图的所有生成树中,权值和最小的那棵生成树(包含图中所有顶点的树),称作最小生成树
针对问题:带权图的最短路径问题
最小生成树的解法:有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法,我们常用克鲁斯卡尔算法。
示例
子主题
解:【依次】选取【长度最小】的边,图 24.2 中有 6 个节点,则需要5条边(边数=节点数-1),因此有:AE、FD 为 200,AB、BF、AF、CD 为300,所以最终方案有 3 种,如图 24.3 所示。
图论之最大流量(道路运输管道流量问题,依次计算每条路径最大流量计算,剩余为0断开)
最大流量问题是一个特殊的线性规划问题。
针对问题:道路运输能力问题,管道流量问题等
示例
子主题
【解】在本题中,从节点①到节点⑥可以同时沿多条路径运输,总的最大流量应是各条路径上的最大流量之和,每条路径上的最大流量应是其各段流量的最小值。
解题时,每找出一条路径算出流量后,该路径上各段线路上的流量应扣除已经算过的流量,形成剩余流量。剩余流量为 0 的线段应将其删除(断开)。例如,路径①③⑤⑥的最大流量为 10 万吨,计算过后,该路径上各段流量应都减少 10 万吨。从而①③之间断开,③⑤之间的剩余流量是 4 万吨,⑤⑥之间的剩余流量为 11 万吨,如图 24.5 所示。
同理,依次执行类似步骤:
(1)路径①②⑤⑥的剩余最大流量为 6 万吨。计算过后,该路径上各段流量应都减少 6 万吨。从而①②之间断开,②⑤之间的剩余流量是 1 万吨,⑤⑥之间的剩余流量为 5 万吨,如图 24.6 所示。
(2)路径①④⑥的剩余最大流量为 5 万吨。计算过后,该路径上各段流量应都减少 5 万吨。从而④⑥之间将断开,①④之间的剩余流量是 5 万吨,如图 24.7 所示。
(3)路径①④③⑤⑥的剩余最大流量为 1 万吨。计算过后,该路径上各段流量应都减少 1 万吨。从而④③之间断开,①④之间的剩余流量是 4 万吨,③⑤之间的剩余流量是 3 万吨,⑤⑥之间的剩余流量是 4 万吨,如图 24.8 所示。
(4)路径①④②⑤⑥的剩余最大流量为 1 万吨。计算过后,该路径上各段流量应都减少 1 万吨。从而②⑤之间断开,①④之间、④②之间、⑤⑥之间的剩余流量是 3 万吨,如图 24.9 所示。
至此,从节点①到节点⑥已经没有可通的路径,因此,从节点①到节点⑥的最大流量应该是所有可能运输路径上的最大流量之和,即10+6+5+1+1=23 万吨。
解题时,每找出一条路径算出流量后,该路径上各段线路上的流量应扣除已经算过的流量,形成剩余流量。剩余流量为 0 的线段应将其删除(断开)。例如,路径①③⑤⑥的最大流量为 10 万吨,计算过后,该路径上各段流量应都减少 10 万吨。从而①③之间断开,③⑤之间的剩余流量是 4 万吨,⑤⑥之间的剩余流量为 11 万吨,如图 24.5 所示。
同理,依次执行类似步骤:
(1)路径①②⑤⑥的剩余最大流量为 6 万吨。计算过后,该路径上各段流量应都减少 6 万吨。从而①②之间断开,②⑤之间的剩余流量是 1 万吨,⑤⑥之间的剩余流量为 5 万吨,如图 24.6 所示。
(2)路径①④⑥的剩余最大流量为 5 万吨。计算过后,该路径上各段流量应都减少 5 万吨。从而④⑥之间将断开,①④之间的剩余流量是 5 万吨,如图 24.7 所示。
(3)路径①④③⑤⑥的剩余最大流量为 1 万吨。计算过后,该路径上各段流量应都减少 1 万吨。从而④③之间断开,①④之间的剩余流量是 4 万吨,③⑤之间的剩余流量是 3 万吨,⑤⑥之间的剩余流量是 4 万吨,如图 24.8 所示。
(4)路径①④②⑤⑥的剩余最大流量为 1 万吨。计算过后,该路径上各段流量应都减少 1 万吨。从而②⑤之间断开,①④之间、④②之间、⑤⑥之间的剩余流量是 3 万吨,如图 24.9 所示。
至此,从节点①到节点⑥已经没有可通的路径,因此,从节点①到节点⑥的最大流量应该是所有可能运输路径上的最大流量之和,即10+6+5+1+1=23 万吨。
子主题
子主题
子主题
子主题
子主题
线性规划(资源约束下的生产问题)
定义:线性规划是研究在【有限的资源】条件下,如何有效地使用这些资源达到预定目标的数学方法。从数学的角度来说,就是在一组约束条件下寻找目标表达式的极值问题。
针对问题:在资源约束下的生产问题等。
线性规划的常用解法是图解法和联立方程组法
示例
子主题
解题:直接把答案带入资源表,对比最终结果
动态规划(最优化问题,依次选择单位利润最高的)
定义:动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。
针对问题:装货最大价值问题
示例
【解】若想获得最高利润最理想的方式是 10 吨都装满,且装的货物是单位利润最高的那些货物。因此,将每种货物的单位利润计算出来,见表 24.4。由表中数据可知,D 单位利润最大,可以装 2 件 8 吨,剩余 2 吨可以选择单位利润第二大的 A,装 2 件,此时的最大利润为 538 元。
答案为 D。
答案为 D。
子主题
决策分析(期望值决策树问题,从右向左逐层化简)
定义:决策分析指从若干可能的方案中通过决策分析技术,例如期望值法或决策树法等选择其一的决策过程,是一种定量分析方法
针对问题:期望值问题,决策树问题。
预期货币价值或者期望货币值(Expected Monetary Value,EMV):把某方案的每个可能结果所获得的收益与其发生概率相乘之后加总,即得到该方案的 EMV。通过比较各方案的 EMV来决策采用哪一个方案。该方法常常与决策树技术相辅相成。
解题技巧:决策树在最左边做决策,所以需要从右向左逐层计算化简,特别是条件复杂时更应如此。
示例
【例】某货运公司要从 A 地向 B 地的用户发送一批价值为 9000 元的货物。从 A 地到 B 地有水、陆两条路线。走陆路时比较安全,其运输成本为 1000 元;走水路时一般情况下的运输成本只要 700 元,不过一旦遇到暴风雨天气,则会造成相当于这批货物总价值 10%的损失。根据历年情
况,这期间出现暴风雨天气的概率为 15%,那么该货运公司该选哪一个方案?
况,这期间出现暴风雨天气的概率为 15%,那么该货运公司该选哪一个方案?
【解】先画出决策树,如图 24.11 所示。根据图 24.11,走水路时,成本为 700 元的概率为 85%,成本为 1600 元的概率为 15%,因此,走水路的期望成本为(700×85%)+(1600×15%)=835 元;走陆路时,其成本为(1000×85%)+(1000×15%)=1000 元。所以,走水路的期望成本小于走陆路的成本,应该选择走水路。
不确定型决策论(乐观(最大最大)、悲观(最小最大)、后悔值(最大反悔值选最小))
定义:不确定型决策是在无法估计系统行动方案所处状态概率的情况下进行的决策
决策者根据自己的主观倾向进行决策,可分为5种准则
乐观主义准则,也称为“最大最大准则”,其决策原则是【大中取大】。决策者依次在决策表中的各个投资方案所对应的各个结果中选择出最大结果并记录,最后再从这些结果中选出最大者,其所对应的方案就是应该采取的决策方案。
悲观主义准则,也称为“最大最小准则”,其决策原则是【小中取大】。决策者依次在决策表中的各个投资方案所对应的各个结果中选择出最小结果并记录,再从这些结果中选出最大者,其所对应的方案就是应该采取的决策方案。
后悔值准则,也称为【最大后悔值选最小】,该决策法的基本原理为:将每种自然状态的最高值(指收益矩阵,如果是损失矩阵应取最低值)定为该状态的理想目标,并将该状态中的其他值与最高值相比,所得之差作为未达到理想的后悔值。为了提高决策的可靠性,在每一方案中选取最大的后悔值,再在各方案的【最大后悔值中选取最小值】作为决策依据,与该值所对应的方案即为入选方案。
示例
13、专业英语
综合5分
综合5分
掌握本领域的英语术语
架构风格
An architectural style defines as a family of such systems in terms of a pattern of structural organization. More specifically,an architectural style defines a vocabulary of components构件 and connector types连接类型,and a set of constraints约束 on how they can be combined. For many styles there may also exist one or more semantic models语义模型 that specify how to determine a system’s overall properties from the properties of its parts. Many of architectural styles have been developed over the years.
The best-known examples of pipe-and-filter architectures are programs written in the UNIX shell.
一种架构风格以一种结构化组织模式定义一组这样的系统。具体来说,一种架构风格定义了一个构件及连接器类型的词汇表,以及一组关于它们如何能够被关联的约束。对于许多风格来说,可能也存在一个或多个语义模型,从系统部件的特性来确定系统的整体特性。许多架构风格已经发展了很多年,众所周知的管道-过滤器架构就是用 UNIX shell 编写的程序。
The best-known examples of pipe-and-filter architectures are programs written in the UNIX shell.
一种架构风格以一种结构化组织模式定义一组这样的系统。具体来说,一种架构风格定义了一个构件及连接器类型的词汇表,以及一组关于它们如何能够被关联的约束。对于许多风格来说,可能也存在一个或多个语义模型,从系统部件的特性来确定系统的整体特性。许多架构风格已经发展了很多年,众所周知的管道-过滤器架构就是用 UNIX shell 编写的程序。
非功能需求
The architecture design specifies the overall architecture and the placement布局 of software and hardware that will be used. Architecture design is a very complex process that is often left to experienced architecture designers and consultants顾问. The first step is to refine the nonfunctional requirements into more detailed requirements that are then employed to help select the architecture to be used and the software components to be placed on each device. In a client-based architecture, one also has to decide whether to use a two-tier, three-tier, or n-tier architecture. Then the requirements需求 and the architecture design架构设计 are used to develop the hardware and software specification规范. There are four primary types of nonfunctional requirements that can be important in designing the architecture. A operational操作 requirements specify the operating environment(s) in which the system must perform and how those may change over time. Performance性能 requirements focus on the nonfunctional requirements issues such as response time, capacity容量, and reliability可靠性. Security requirements are the abilities to protect the information system from disruption and data loss, whether caused by an intentional act. Cultural and political文化和政治
requirements are specific to the countries in which the system will be used
架构设计指定了将要使用的软件和硬件的总体架构和布局。架构设计是一个非常复杂的过程,往往留给经验丰富的架构设计师和顾问。第一步是将非功能需求细化为更详细的要求,然后用于帮助选择要使用的体系结构以及要放置在每个设备上的软件组件。在基于客户端的架构中,还必须决定是使用两层、三层还是 n 层架构。然后使用需求和体系结构设计来开发硬件和软件规范。有 4 种主要的非功能需求类型可能在设计架构时非常重要。操作要求指定系统必须执行的操作环境以及这些操作环境如何随时间变化。性能要求侧重于非功能性需求问题,如响应时间、容量和可靠性。安全要求是指是否有能力保护信息系统免受故意行为造成的破坏和数据丢失。文化和政治要求明确了特定系统将被使用的国家。
requirements are specific to the countries in which the system will be used
架构设计指定了将要使用的软件和硬件的总体架构和布局。架构设计是一个非常复杂的过程,往往留给经验丰富的架构设计师和顾问。第一步是将非功能需求细化为更详细的要求,然后用于帮助选择要使用的体系结构以及要放置在每个设备上的软件组件。在基于客户端的架构中,还必须决定是使用两层、三层还是 n 层架构。然后使用需求和体系结构设计来开发硬件和软件规范。有 4 种主要的非功能需求类型可能在设计架构时非常重要。操作要求指定系统必须执行的操作环境以及这些操作环境如何随时间变化。性能要求侧重于非功能性需求问题,如响应时间、容量和可靠性。安全要求是指是否有能力保护信息系统免受故意行为造成的破坏和数据丢失。文化和政治要求明确了特定系统将被使用的国家。
应用架构
An application architecture应用架构 specifies the technologies to be used to implement one or more information systems信息系统
. It serves as an outline大纲 for detailed design, construction构造, and implementation. Given the models and details, include logical DFD and ERD, we can distribute data and processes to create a general design概要设计 of application architecture. The design will normally be constrained by architecture standards架构标准,project objectives项目目标, and the feasibility of techniques used使用技术的可行性. The first physical DFD to be drawn is the network architecture DFD. The next step is to distribute data stores to different processors处理器. Data partitioning分区 and replication复制 are two types of distributed data which most RDBMSs support. There are many distribution options used in data distribution. In the case of storing specific tables on different servers we should record each table as a data store on the physical DFD and connect each to the appropriate server
应用架构说明了实现一个或多个信息系统所使用的技术,它作为详细设计、构造和实现的一个大纲。通过给定的包括逻辑数据流图和实体联系图在内的模型和详细资料,我们可以分配数据和过程以创建应用架构的一个概要设计。概要设计通常会受到架构标准、项目目标和所使用技术的可行性的制约。需要绘制的第一个物理数据流图是网络架构数据流图。接下来是分配数据存储到不同的处理器。数据分区和复制是大多数关系型数据库支持的两种分布式数据形式。有许多分配方法用于数据分布。在不同服务器上存储特定表的情况下,我们应该将每个表记为物理数据流图中的一个数
据存储,并将其连接到相应的服务器。
. It serves as an outline大纲 for detailed design, construction构造, and implementation. Given the models and details, include logical DFD and ERD, we can distribute data and processes to create a general design概要设计 of application architecture. The design will normally be constrained by architecture standards架构标准,project objectives项目目标, and the feasibility of techniques used使用技术的可行性. The first physical DFD to be drawn is the network architecture DFD. The next step is to distribute data stores to different processors处理器. Data partitioning分区 and replication复制 are two types of distributed data which most RDBMSs support. There are many distribution options used in data distribution. In the case of storing specific tables on different servers we should record each table as a data store on the physical DFD and connect each to the appropriate server
应用架构说明了实现一个或多个信息系统所使用的技术,它作为详细设计、构造和实现的一个大纲。通过给定的包括逻辑数据流图和实体联系图在内的模型和详细资料,我们可以分配数据和过程以创建应用架构的一个概要设计。概要设计通常会受到架构标准、项目目标和所使用技术的可行性的制约。需要绘制的第一个物理数据流图是网络架构数据流图。接下来是分配数据存储到不同的处理器。数据分区和复制是大多数关系型数据库支持的两种分布式数据形式。有许多分配方法用于数据分布。在不同服务器上存储特定表的情况下,我们应该将每个表记为物理数据流图中的一个数
据存储,并将其连接到相应的服务器。
软件架构重用
Software architecture reconstruction重用 is an interpretive, interactive, and iterative process including many activities. Information extraction信息提取 involves analyzing a system’s existing design and implementation artifacts to construct a model of it. The result is used in the following activities to construct a view of the system. The database construction activity数据库构建 converts the elements and relations contained in the view into a standard format for storage in a database. The view fusion activity视图融合 involves defining and manipulating the information stored in database to reconcile, augment, and establish connections between the elements.
Reconstruction consists of two primary activities: visualization and interaction可视化与交互, pattern definition and recognition模式定义和重构. The former provides a mechanism机制 for the user to manipulate操作 architectural elements, and the latter provides facilities设施 for architecture reconstruction
软件架构重用是一个解释性、交互式和反复迭代的过程,包括了多项活动。
信息提取通过分析系统现有设计和实现工件来构造它的模型。其结果用于在后续活动中构造系统的视图。
数据库构建活动把视图中包含的元素和关系转换为数据库中的标准存储格式。
视图融合活动包括定义和操作数据库中存储的信息,理顺、加强并建立起元素之间的连接。
重构由两个主要活动组成:可视化和交互式及模式定义与识别。前者提供了一种让用户操作架构元素的机制,后者则提供了用于架构重构的设施。
Reconstruction consists of two primary activities: visualization and interaction可视化与交互, pattern definition and recognition模式定义和重构. The former provides a mechanism机制 for the user to manipulate操作 architectural elements, and the latter provides facilities设施 for architecture reconstruction
软件架构重用是一个解释性、交互式和反复迭代的过程,包括了多项活动。
信息提取通过分析系统现有设计和实现工件来构造它的模型。其结果用于在后续活动中构造系统的视图。
数据库构建活动把视图中包含的元素和关系转换为数据库中的标准存储格式。
视图融合活动包括定义和操作数据库中存储的信息,理顺、加强并建立起元素之间的连接。
重构由两个主要活动组成:可视化和交互式及模式定义与识别。前者提供了一种让用户操作架构元素的机制,后者则提供了用于架构重构的设施。
系统架构
A system's architecture is a representation表示 of a system in which there is a mapping of (1) onto hardware and software components, a mapping of the (2) onto the hardware architecture, and a concern for the human interaction人机交互
with these components. That is, system architecture is concerned with a total system, including hardware, software, and humans.
Software architectural structures can be divided into three major categories, depending on the broad nature of the elements they show. (3) embody decisions as a set of code or data units that have to be constructed or procured. (4) embody decisions as to how the system is to be structured as set of elements that have run-time behavior and interactions. (5) embody decisions as to how the system will relate to non-software structures in its environment (such as CPUs, file systems, networks, development teams, etc.).
functionality 、 software architecture、Module structures、Component and connector structures、Allocation structures
系统架构是一个系统的一种表示,包含了功能到软硬件构件的映射、软件架构到硬件架构的映射以及对于这些组件人机交互的关注。也就是说,系统架构关注于整个系统,包括硬件、软件和使用者。
软件架构结构根据其所展示元素的广义性质,可以分为3个主要类别。
(1)模块结构将决策体现为一组需要被构建或采购的代码或数据单元。
(2)构件连接器结构将决策体现为系统如何被结构化为一组具有运行时行为和交互的元素。
(3)分配结构将决策体现为系统如何在其环境中关联到非软件结构,如 CPU、文件系统、网络、开发团队等。
with these components. That is, system architecture is concerned with a total system, including hardware, software, and humans.
Software architectural structures can be divided into three major categories, depending on the broad nature of the elements they show. (3) embody decisions as a set of code or data units that have to be constructed or procured. (4) embody decisions as to how the system is to be structured as set of elements that have run-time behavior and interactions. (5) embody decisions as to how the system will relate to non-software structures in its environment (such as CPUs, file systems, networks, development teams, etc.).
functionality 、 software architecture、Module structures、Component and connector structures、Allocation structures
系统架构是一个系统的一种表示,包含了功能到软硬件构件的映射、软件架构到硬件架构的映射以及对于这些组件人机交互的关注。也就是说,系统架构关注于整个系统,包括硬件、软件和使用者。
软件架构结构根据其所展示元素的广义性质,可以分为3个主要类别。
(1)模块结构将决策体现为一组需要被构建或采购的代码或数据单元。
(2)构件连接器结构将决策体现为系统如何被结构化为一组具有运行时行为和交互的元素。
(3)分配结构将决策体现为系统如何在其环境中关联到非软件结构,如 CPU、文件系统、网络、开发团队等。
架构设计
The objective of ( ) is to determine what parts of the application software will be assigned to what hardware. The major software components of the system being developed have to be identified and then allocated to the various hardware components on which the system will operate. All software systems can be divided into four basic functions. The first is ( ). Most information systems require data to be stored and retrieved, whether a small file, such as a memo produced by a word processor, or a large database, such as one that stores an organization's accounting records. The second function is the ( ), the processing required to access data, which often means database queries in Structured Query Language. The third function is the ( ), which is the logic documented in the DFDs, use cases, and functional requirements. The fourth function is the presentation logic, the display of information to the user and the acceptance of the user's commands. The three primary hardware components of a system are (请作答此空).
architecturedesign、datastorage、dataaccesslogic、applicationlogic、clients,servers,andnetwork
架构设计的目标是确定应用软件的哪些部分将被分配到何种硬件。识别出正在开发系统的主要软件构件并分配到系统将要运行的硬件构件。所有软件系统可分为四项基本功能。首项是数据存储。大多数信息系统需要数据进行存储并检索,无论是一个小文件,比如一个字处理器产生的一个备忘录,还是一个大型数据库,比如存储一个企业会计记录的数据库。第二项功能是数据访问逻辑,处理过程需要访问数据,这通常是指用SQL进行数据库查询。第三项功能是应用程序逻辑,这些逻辑通过数据流图,用例和功能需求来记录。第四项功能是表示逻辑,给用户显示信息并接收用户命令。一个系统的三类主要硬件构件是客户机、服务器和网络。
architecturedesign、datastorage、dataaccesslogic、applicationlogic、clients,servers,andnetwork
架构设计的目标是确定应用软件的哪些部分将被分配到何种硬件。识别出正在开发系统的主要软件构件并分配到系统将要运行的硬件构件。所有软件系统可分为四项基本功能。首项是数据存储。大多数信息系统需要数据进行存储并检索,无论是一个小文件,比如一个字处理器产生的一个备忘录,还是一个大型数据库,比如存储一个企业会计记录的数据库。第二项功能是数据访问逻辑,处理过程需要访问数据,这通常是指用SQL进行数据库查询。第三项功能是应用程序逻辑,这些逻辑通过数据流图,用例和功能需求来记录。第四项功能是表示逻辑,给用户显示信息并接收用户命令。一个系统的三类主要硬件构件是客户机、服务器和网络。
数据字典
The data dictionary is a specialized application of the kinds of dictionaries used as references in everyday life. The data dictionary is a reference work of data about data (that is, ( ) ), one that is compiled by systems analysts to guide them through analysis and design. As a document, the data dictionary collects and coordinates specific data terms, and it confirms what each term means to different people in the organization. The ( ) covered before are an excellent starting point for collecting data dictionary entries.
One important reason for maintaining a data dictionary is to keep clean data. This means that data must be ( ) . If you store data about a man’s sex as “M” in one record, “Male” in a second record, and as the number “1” in a third record, the data are not clean. Keeping a data dictionary will help in this regard.
Automated data dictionaries (part of the ( ) mentioned earlier) are valuable for their capacity to cross-reference data items, thereby allowing necessary program changes to all programs sharing a common element. This feature supplants changing programs on a haphazard basis, or it prevents waiting until the program won’t run because a change has not been implemented across all programs sharing the updated item. Clearly, automated data dictionaries become important for large systems that produce several thousand data elements requiring ( ) and cross-referencing.
metadata、DFD、consistent、CASE tools、cataloging
数据字典是日常生活中用作参考的各类字典的专门应用。数据字典是关于数据(即元数据)的数据参考书,由系统分析师编写,指导他们进行分析和设计。作为文档,数据字典收集并协调特定的数据术语,并确认每个术语对组织中不同人员的含义。前面介绍的数据流图是收集数据字典条目的绝佳起点。
维护数据字典的一个重要原因是保持数据干净。这意味着数据必须是一致的。如果您将有关男性性别的数据存储为一条记录中的“M”,第二条记录中的“男”,第三条记录中的数字“1”,则数据不干净。维持数据字典将在这方面有所帮助。
自动数据字典(前面提到的CASE工具的一部分)因其交叉引用数据项的能力而非常有价值,从而允许对共享公共元素的所有程序进行必要的程序更改。此功能取代了随意更改的程序,或者它可以防止等到程序无法运行为止,因为尚未在共享更新项目的所有程序中实施更改。显然,自动化数据字典对于产生数千个需要编目和交叉引用的数据元素的大型系统变得非常重要。
One important reason for maintaining a data dictionary is to keep clean data. This means that data must be ( ) . If you store data about a man’s sex as “M” in one record, “Male” in a second record, and as the number “1” in a third record, the data are not clean. Keeping a data dictionary will help in this regard.
Automated data dictionaries (part of the ( ) mentioned earlier) are valuable for their capacity to cross-reference data items, thereby allowing necessary program changes to all programs sharing a common element. This feature supplants changing programs on a haphazard basis, or it prevents waiting until the program won’t run because a change has not been implemented across all programs sharing the updated item. Clearly, automated data dictionaries become important for large systems that produce several thousand data elements requiring ( ) and cross-referencing.
metadata、DFD、consistent、CASE tools、cataloging
数据字典是日常生活中用作参考的各类字典的专门应用。数据字典是关于数据(即元数据)的数据参考书,由系统分析师编写,指导他们进行分析和设计。作为文档,数据字典收集并协调特定的数据术语,并确认每个术语对组织中不同人员的含义。前面介绍的数据流图是收集数据字典条目的绝佳起点。
维护数据字典的一个重要原因是保持数据干净。这意味着数据必须是一致的。如果您将有关男性性别的数据存储为一条记录中的“M”,第二条记录中的“男”,第三条记录中的数字“1”,则数据不干净。维持数据字典将在这方面有所帮助。
自动数据字典(前面提到的CASE工具的一部分)因其交叉引用数据项的能力而非常有价值,从而允许对共享公共元素的所有程序进行必要的程序更改。此功能取代了随意更改的程序,或者它可以防止等到程序无法运行为止,因为尚未在共享更新项目的所有程序中实施更改。显然,自动化数据字典对于产生数千个需要编目和交叉引用的数据元素的大型系统变得非常重要。
案例
1、系统计划
系统规划的主要步骤
(1)对【现有系统】进行初步调查
(2)分析和确定【系统目标】
(3)分析【子系统】的组成和基本功能
(4)拟定系统的【实施方案】
(5)进行系统的【可行性研究】,编写可行性研究报告,召开可行性论证会
(6)制订系统【建设方案】
系统调查
初步调查:在规划阶段进行初步调查可了解企业的组织结构和系统功能等。具体包括:初步需求分析、企业基本状况、管理方式和基础数据管理状况、现有系统状况。
详细调查:深入了解系统的处理流程。调查的内容有:现有系统的【运行环境和状况】、【业务流程】、【数据资源与数据流程】、【资源情况】、【约束条件】、【薄弱环节】、组织结构、系统功能等。
成本效益分析技术
成本
固定成本:是指其总额在一定时期和一定业务量范围内,不受业务量变动的影响而保持固定不变的成本。如【管理人员的工资】、【员工培训费】、办公费、固定资产折旧费等。
变动成本:也叫可变成本,指在一定时期和一定业务量范围内其总额随着业务量的变动而成正比例变动的成本。如直接材料费、产品包装费、【外包费用】、【开发奖金】等。
混合成本:即混合了固定成本和变动成本的性质的成本。这些成本通常有一个基数,超过这个基数就会随业务量的增大而增大。如【质量保证人员的工资】、【设备动力费】等成本在一定业务量内是不变的,超过了这个量便会随业务量的增加而增加。
盈亏临界点
盈亏临界点也称盈亏平衡点或保本点,是指项目收入和成本相等的经营状态,就是既不盈利又不亏损的状态。相关公式如下:
利润=(销售单价−单位变动成本)×销售量−总固定成本
盈亏临界点销售量=总固定成本/(销售单价−单位可变成本)。
盈亏临界点销售额=总固定成本/(1−总可变成本/销售收入)。
2、信息系统架构的设计理论与实践
综合3~5分
案例、论文
综合3~5分
案例、论文
2.1 信息系统架构概述
定义
信息系统架构(Information System Architecture,ISA)是一种总体架构,其自顶向下体现政府、企(事)业单位的信息系统的各个组成部分和各部分之间的关系,表现为【信息系统】与【相关业务】的关系,体现了【信息系统】与【信息技术】的关系,是展示了【信息】、【技术】与【企业】及其【业务】之间关系的模型。
信息系统架构是系统的结构|抽象:由软件【元素】、元素【外部可见属性】和元素【间关系】组成。
信息系统架构是元素的集合:元素组成系统,元素外部可见属性表现系统功能,元素间关系表现系统对外部刺激的响应;
信息系统架构是软件系统【结构】、【行为】和【属性】的高级抽象,由系统元素描述、元素间相互作用、元素集成模式及模式约束组成。
信息系统架构是系统的基础组织,体现为【构件】、【构件间】关系、【构件和环境】间关系、构件【设计和演进】的原则。
理解
架构是结构的组合:结构从功能角度描述元素间关系。
系统必然存在架构:无论是否存在抽象、模型和具体的描述文档
从静态角度,架构关注系统的总体结构(模式);从动态角度,架构关注系统行为的共同特征。
架构具有重复性问题的通用解决方案的复用性,架构在系统设计过程中通过设计决策对系统造成深远影响,这种影响反映架构敏感
架构隐含设计决策:架构是对关键功能和非功能性需求进行设计与决策的最终设计结果。
影响架构的因素
外部干系人:对系统有不同的关注和需求。
内部干系人:知识结构、素质、经验、技术环境影响需求和设计
架构对影响因素也具有反作用
影响外部干系人:业务影响组织结构
影响内部干系人:架构具有示范性、复用性,提供商机
信息系统架构风格
数据流体系结构风格:批处理,管道-过滤器。
调用/返回体系结构风格:主程序/子程序,面向对象,层次结构。
独立构件体系结构风格:进程通信,事件系统。
虚拟机体系结构风格:解释器,规则系统。
仓库体系结构风格:数据库,超文本,黑板
信息系统物理结构:单体应用、分布式
信息系统逻辑结构
横向综合:将同一管理层次的各个业务职能综合到一起。
纵向综合:将同一业务的各个管理层次智能综合到一起。
纵横综合:将各个业务的各个管理层次统一综合到一起,主要从信息模型和处理模型两方面着手,建立公用的数据库和统一的信息处理系
四种架构模型
单体应用:指运行在单台物理机器上的独立应用程序。应用领域就是信息系统领域,也就是以数据处理为核心的系统。
客户机/服务器
二层 C/S(胖客户端):主要是指前台客户端 + 后台数据库的形式
三层C/S(瘦客户端):前台界面和业务逻辑处理分离,前台客户端仅含前台界面。前台客户端+后台服务端+后台数据库
三层B/S:Web 浏览器+Web 服务器+后台数据库。
B/S 本质是浏览器与服务器间采用基于TCP/IP 或 UDP 的 HTTP 协议。
前台客户端与后台服务端通信协议有:TCP/IP 协议,基于 TCP/IP 协议通过 Socket 自定义实现的协议,RPC 协议,【CORBA/IIOP 协议】,Java RMI 协议,J2EE JMS 协议,HTTP协议。
多层 C/S:是指三层以上的结构,形式是前台客户端+后台服务端+中间件/应用层+数据库,其中,中间件/应用层的作用有以下 3 点:①提高并发性能和可伸缩性;②请求转发,业务逻辑处理;③增加数据安全性。
多层 B/S:是指三层以上的结构,形式是 Web 浏览器+Web 服务器+中间件/应用层+数据库。
模型-视图-控制器(Model-View-Controller,MVC)。在 J2EE 架构中,形式是:Web 浏览器(View)+ Web 服务器(Controller 也可以是加上中间件/应用层的形式)+数据库,关于模型层可根据实际情况与 MV 一起置于 Web 服务器,或单独置于应用层。
面向服务架构(SOA)模式
在SOA中服务的概念是指能提供一组整体功能的独立应用系统。这个应用系统被去掉任何一层服务,都将不能正常工作。
在实践中,要实现SOA可以借助诸如消息中间件、交易中间件等中间件来实现。
SOA 的应用模式最典型、最流行的就是 Web Service,即两个互联网应用之间可以互相向对方开放一些功能模块、函数、过程等服务,然后通过消息机制或远程过程调用(RPC)这样的中间件去调用对方的服务。
面向服务架构主要实践有异构系统集成、同构系统聚合、联邦架构等。
企业服务/数据总线(ESB/EDB):应用间信息交换的公共通道
连接软件系统,主要提供服务代理功能和服务注册表。
可以基于中间件(消息中间件、事务中间件)或CORBA/IIOP 协议开发构建
主要功能:按照预定义的配置或消息头定义,进行数据 (data)、 请 求 (request) 或回复 (response) 的接收与分发。
企业信息系统的总体框架
ISA是多维度、分层次、高度集成化的模型。
战略系统:是指企业中与战略制定、高层决策有关的管理活动和计算机辅助系统。战略系统由企业战略规划体系、以计算机为基础的高层决策支持系统组成。战略系统是信息系统对企业高层管理者决策支持的能力,也是企业战略规划对信息系统建设的影响和要求。企业战略可以分为长期与短期两种,长期规划较为稳定,如调整产品结构。而短期规划适用于如决定新产品的类型的情况。
业务系统:是指企业中完成一定业务功能的各个部分组成的系统,其中的功能通过一些业务过程来完成,业务过程由一系列相互依赖的业务活动、业务活动先后次序、业务活动执行角色、业务活动处理相关数据组成。业务系统的作用有:①对企业现有业务系统,过程,活动建模;②在企业战略指导下,采用业务过程重组优化业务过程;③对企业优化业务系统,过程,活动建模;④确定相对稳定数据;⑤以稳定数据为基础,进行应用系统开发和信息基础设施建设。
应用系统:应用系统是指信息系统中的应用软件部分。应用系统包括内部功能和外部界面两个部分。界面部分是应用系统中相对变化较多的部分,主要由用户对界面形式要求的变化引起;功能实现部分中,相对来说处理的数据变化较小,而程序的算法和控制结构的变化较多,主要由用户对应用系统功能需求的变化和对界面形式要求的变化引起。
企业信息基础设施:(Enterprises Information Infrastructure,EII)是指根据企业当前业务和可预见的发展趋势,及对信息采集、处理、存储和流通的要求,构筑由信息设备、通信网络、数据库、系统软件和支持性软件等组成的环境。
2.2 信息系统架构设计方法(ADM)
开放式企业架构框架标准TOGAF
核心思想是模块化架构,为架构产品提供内容框架,为大型组织开发提供扩展指南,适用于不同架构风格。
组件:架构开发方法、架构开发方法指南和技术、架构内容框架、企业连续序列和工具、架构框架参考模型、架构能力框架
目标
(1)节省时间和成本,更有效、合理地利用资源。
(2)实现可观的投资回报率。
(3)确保从关键利益相关方到团队成员的所有用户都使用相同的语言。
(4)避免被“锁定”到企业架构的专有解决方案。
架构开发方法ADM由一组按照架构领域的架构开发顺序而排列成一个环的多个阶段所构成。这些阶段是:预备、需求管理、架构愿景、业务架构、信息系统架构、技术架构、机会和解决方案、迁移规划、实施治理、架构变更管理
2.3 信息化总体架构方法
信息化包括4个方面的内容:信息网络体系、信息产业基础、社会运行环境、效用积累过程
信息化具有6个要素:开发利用信息资源、建设国家信息网络、推进信息技术应用、发展信息技术和产业、培育信息化人才、制订和完善信息化政策。
信息化包括了7个平台:知识管理平台、日常办公平台、信息集成平台、信息发布平台、协同工作平台、公文流转平台、企业通信平台。
信息化也具有9个特征:易用性、健壮性、平台化、灵活性、扩展性、安全性、门户化、整合性、移动性(手机看)
信息化工程建设方法
信息化架构模式
数据导向架构:关注数据模型和数据质量。
流程导向架构:关注端到端流程整合及对流程变化的适应度。
信息化建设生命周期:系统规划、系统分析、系统设计、系统实施、系统运行和维护
信息化工程总体规划的方法论
关键成功因素法(Critical Success Factors,CSF)。通过分析找出使得企业成功的关键因素,然后再围绕这些关键因素来确定系统的需求,并进行规划。
战略目标集转化法(Strategy Set Transformation,SST)。把整个战略目标看成是一个“信息集合”,由使命、目标、战略等组成,SST反映了各种人的要求,而且给出了按这种要求的分层,然后转化为信息系统目标的结构化方法。它能保证目标比较全面,疏漏较少,但它在突出重点方面不如关键成功因素法
企业系统规划法(Business System Planning,BSP)。BSP 通过自上而下地识别系统目标、企业【过程和数据】,然后对数据进行分析,自下而上地设计信息系统。
2.4 案例分析
价值驱动的体系结构
Web服务在HL7上的应用
以服务为中心的企业整合
3、层次式架构的设计理论与实践
综合2~5分
案例
综合2~5分
案例
3.1 层次式架构概述
层次式架构的定义和特性
层次式架构的一般组成(表现层、中间层、数据访问层和数据层)
3.2 表现层框架设计
设计模式(MVC、MVP和MVVM)
XML 技术
UIP 设计思想
动态生成设计思想
3.3中间层架构设计
业务逻辑层组件设计
业务逻辑层工作流设计
业务逻辑层实体设计
业务逻辑层框架
3.4数据访问层设计
访问模式
ORM、Hibernate 与CMP 2.0 设计思想
灵活运用 XML Schema
事务处理设计
连接对象管理设计
3.5数据层架构规划与设计
数据库设计与类的设计融合的方法
数据库设计与 XML设计融合的方法
3.6物联网的层次架构设计
物联网的一般层次架构(三层体系结构)
3.7 案例分析
电子商务网站
基于物联网架构的电子小票服务系统
4、云原生架构设计理论与实践
综合2~4分
案例、论文
综合2~4分
案例、论文
4.1 云原生架构概述
云原生的背景、定义和特征
云原生架构的设计原则
架构模式(服务化架构模式、Mesh 化架构模式、Serverless 模式、存储计算分离模式、分布式事务模式、可观测架构和事件驱动架构)
4.2 云原生架构相关技术
容器技术
云原生微服务技术
微服务
优点
每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
微服务能使用不同的语言开发。
去中心化。每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。
缺点
很难在不采用分布式事务的情况下跨服务实现功能
测试工作更加困难
跨服务实现要求功能要求团队之间的紧密协作
部署复杂
应用网关的作用
提供统一入口
可以进行权限身份认证等安全管理
可以根据流量进行限流
数据缓存
性能监控等
异常重试
服务降级
无服务器技术
服务网格
4.3 案例分析
某旅行公司云原生改造
某汽车公司数字化转型实践
某快递公司核心业务系统改造
某电商业务改造
某体育用品公司基于云原生架构的业务中台构建
某汽车公司数字化转型实践
某快递公司核心业务系统改造
某电商业务改造
某体育用品公司基于云原生架构的业务中台构建
5、面向服务的架构设计理论与实践
综合2~5分
案例
综合2~5分
案例
5.1 面向服务的架构概述
SOA的定义和发展现状
面向 Web 服务的业务流程执行语言(BPEL)·
SOA 的参考架构(IBM的Websphere 业务集成参考架构)
SOA主要遵守的协议和规范(UDDI协议、WSDL规范、SOAP 协议和 REST 规范)
SOA 的作用
5.2 面向服务的架构设计
SOA的设计原则
SOA的设计模式(服务注册表模式、企业服务总线模式、微服务模式)设计
SOA 架构应注意的问题
5.3 面向服务的架构实施过程
选择 SOA 解决方案
业务流程分析(建立服务模型和建立业务流程)
6、嵌入式系统的架构设计理论与实践
案例
案例
6.1 嵌入式系统概述
嵌入式系统的定义和发展现状
嵌入式系统的硬件体系结构
嵌入式微处理器及其分类
存储器及其分类
内、外总线及其分类
看门狗电路
嵌入式系统软件架构概述
6.2 嵌入式系统软件架构的原理与特征
嵌入式软件架构原理(层次化模式和递归模式)
嵌入式操作系统
嵌入式操作系统的定义、特点和分类
嵌入式操作系统的一般架构
嵌入式操作系统的基本功能及典型调度算法
EDF早截止期调度算法:根据任务的截止时间来确定其优先级,对于时间期限最近的任务,分配最高的优先级。
LLF最低松弛度优先算法:根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,使之优先执行。
RMS(Rate Monotonic Scheduling)是一种静态优先级调度算法,是经典的任务周期调度算法,周期越短,优先级越高。
典型嵌入式操作系统产品的比较
嵌入式数据库
嵌入式数据库的定义、特点和分类
嵌入式数据库的定义、特点和分类
嵌入式数据库管理系统一般只提供本机服务接口,为前端应用提供基本的数据支持。
嵌入式数据库的一般架构(内存类、文件类和网络类)
嵌入式数据库的主要功能
典型嵌入式数据库产品的比较
嵌入式中间件
嵌入式中间件的定义、特点和分类
嵌入式中间件的定义、特点和分类
嵌入式中间件的一般架构(消息中间件和分布式对象中间件)
嵌入式中间件的主要功能
典型嵌入式中间件产品(CORBA和DDS)
嵌入式系统软件开发环境
嵌入式软件开发环境的定义、特点和分类
嵌入式软件开发环境的一般架构(基于Eclipse框架的嵌入式软件开发环境的层次结构)
嵌入式软件开发环境的主要功能
典型嵌入式软件的开发环境(基于GCC开源工具的软件开发环境、Wokbench 软件开发环境、MULTI集成开发环境)
6.3 嵌入式系统软件架构设计方法
基于架构的软件开发方法(ABSD)
属性驱动的软件设计方法(ADD)
实时系统的设计方法(DARTS)
6.4 案例分析
鸿蒙操作系统架构案例分析
面向安全攸关系统的跨领域 GeneSys 系统架构
物联网操作系统软件架构
7、通信系统架构的设计理论与实践
案例
案例
7.1 通信系统的架构
局域网网络架构(单核心架构、双核心架构、坏型架构和层次局域网架构)
局域网网络协议的应用
互为主备的交换或路由:VRRP、HSRP和
GLBP
GLBP
二层网络:STP和LACP
三层设备:OSPF、RIP和BGPF
广域网网络架构(单核心架构、双核心架构、环型架构、半冗余、对等子域和层次子域)
移动通信网网络架构(5GS与DN互连、5G网络边缘计算等)
存储网络架构(DAS、NAS和SAAN)
软件定义网络架构(SDN)
SDN网络架构有三层,分别是:
(1)应用层。对应用户不同的业务和应用。
(2)控制层。主要负责处理数据平面资源的编排,维护网络拓扑、状态信息等。
(3)数据转发层。负责用户数据的转发。
7.2 网络构建的关键技术
·网络高可用设计(定义、架构和协议配置)·
IPV4与 IPV6 融合组网关键技术(双协议栈、隧道技术和地址翻译机制等)
SDN 技术
子主题
7.3 网络构建和设计方法
网络需求分析步骤(业务需求、用户需求、计算机平台需求和网络需求)
网络技术遴选(局域、广域、地址规划模型、路由协议、层次化网络模型设计和高可用设计)
绿色网络设计方法(目的、作用和设计原则)
7.4 网络安全相关技术
防火墙布设(包过滤型、应用层网关和代理服务型)
VPN技术(IPSec、GRE、MPLS VPN 和VPDN)
访问控制技术(认证、策略和审计)
网络安全隔离(子网隔离、VLAN 隔离、逻辑隔离和物理隔离等)
网络安全协议(SSL、SET和HTTPS)
7.5 案例分析
高可用网络构建分析
园区网双栈构建分析
5G 网络应用
8、安全架构的设计理论与实践
案例、论文
案例、论文
8.1 安全架构概述
信息安全面临的威胁
安全架构的定义和范围(产品安全架构、安全技术体系架构和审计架构)
信息安全相关的国内外标准及组织
主要安全模型
状态机模型(BLP)模型
Bell-LaPadula 模型
Biba 模型
Clark-Wilson(CWM)模型
ChineseWall 模型
Bell-LaPadula 模型
Biba 模型
Clark-Wilson(CWM)模型
ChineseWall 模型
8.2 系统安全体系架构规划框架
安全技术体系架构
信息系统安全体系规划(技术体系、组织机构体系和管理体系)
信息系统安全规划框架
8.3 信息安全整体架构设计(WPDRRC模型)
WPDRRC体系架构模型概述(6个环节和3大要素)
信息安全体系架构设计方法
安全保障体系(确定安全策略、统一配置和管理防病毒系统、网络安全管理)
信息安全体系架构(物理安全、系统安全、网络安全、应用安全和安全管理)
面向企业安全控制系统的安全架构设计
8.4 网络安全体系架构设计
OSI的安全体系架构概述
OSI安全架构(7层协议)
鉴别框架
访问控制框架
机密性框架
完整性框架
抗抵赖框架
8.5 数据库系统的安全设计
数据库安全设计的评估标准
数据库的完整性设计方法(设计原则、作用和示例)
8.6 系统架构的脆弱性分析
软件脆弱性的定义、特点和分类
软件脆弱性的生命周期
软件脆弱性的分析方法
典型的软件架构脆弱性分析(分层、C/S、B/S、事件驱动、MVC、微内核和微服务)
8.7 案例分析
电子商务系统的安全性设计
基于混合云的工业安全架构设计
9、大数据架构设计理论与实践
案例、论文
案例、论文
9.1 大数据处理系统概述
传统数据处理系统存在的问题
大数据处理系统面临的挑战
大数据处理系统的定义、范围和特征
9.2 典型的大数据架构
Lambda 架构
Lambda 的来源、定义、应用场景和优缺点
Lambda的体系结构(BatchLayer(批处理层)、Speed Layer(加速层)、Serving Layer(服务层))
Kappa 架构
Kappa 的来源、定义、应用场景和优缺点
Kappa 的体系结构
常见 kappa 架构的变形架构
9.3 案例分析
某网在奥运转播中的大数据应用
某网广告平台的应用与演进
某证券公司大数据系统
某电商智能决策大数据系统
论文
1、软件系统建模
定义问题与归结模型
软件系统建模是在系统需求分析和系统实现之间架起的一座桥梁,系统开发人员按照软件系统模型开发出符合设计目标的软件系统,并基于该模型进行软件的维护和改进。
软件系统建模(Software System Modeling)是软件开发中的重要环节,通过构建软件系统模型可以帮助系统开发人员理解系统、抽取业务过程和管理系统的复性,也可以方便各类人员之间的交流。
结构化系统建模
结构化建模方法
结构化建模方法是以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。结构化建模方法所绘制的模型称为数据流图(DFD)。对于流程较为稳定的系统可考虑结构化建模方法。
结构化建模方法是以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。结构化建模方法所绘制的模型称为数据流图(DFD)。对于流程较为稳定的系统可考虑结构化建模方法。
面向对象系统建模
面向对象建模方法将“数据”和“过程”集成到被称为“对象”的结构中,消除了数据和过程的人为分离现象。面向对象建模方法所创建的模型被称为对象模型。随着面向对象技术的不断发展和应用,形成了面向对象的建模标准,即UML(统一建模语言)。UML定义了几种不同类型的型图,这些模型图以对象的形式共建一个信息系统或应用系统,是目前比较常用的建模方法。
数据库建模
信息工程建模方法(或数据库建模方法)信息工程建模方法是一种以数据为中心,但过程敏感的技术,它强调在分析和研究过程需求之前,首先研究和分析数据需求。信息工程建模方法所创建的模型被称为实体联系图(ERD)。主要用于数据建模。
子主题
可靠性建模
系统评估建模
2、软件架构设计
软件架构风格选择
软件架构设计
特定领域软件架构
基于架构的软件开发方法
属性驱动的软件设计方法
实时系统设计方法
软件架构演化
架构质量和评估
架构脆弱性分析
3、系统设计
信息系统的总体框架设计
大数据处理系统流程设计
SOA 及分布式系统总体设计
系统人-机界面设计
嵌入式系统设计
数据库系统设计
文件设计、存储设计
通信和网络应用系统设计
系统运行环境的集成与设计
系统性能设计
系统安全性和可靠性设计
中间件、构件化系统设计
5、系统的可靠性分析与设计
系统的故障模型和可靠性模型
提高系统可靠性的措施
系统的故障对策和系统的备份与恢复
系统可靠性分析、预计与评估
6、系统的安全性和保密性设计
系统的访问控制技术
数据的完整性
数据与文件的加密
系统抗攻击设计
通信的安全性
系统安全性评估与认证
重点
综合
系统工程
系统工程生命周期方法
【计划驱动】方法:需求->设计->构建->测试->部署(简单、理想化)
【渐进迭代】式开发:提供连续交付以达到期望的系统
精益开发:起源于丰田,是一个动态的、知识驱动的,以客户为中心的过程
敏捷开发:适应性、以人为本、迭代增量、小项目
系统工程方法(科学决策方法)
霍尔的三维结构
硬科学方法论
硬科学方法论
美国系统工程专家霍尔(A.D.Hall)等人于 1969 年提出的一种系统工程方法论,
逻辑维:即解决问题的逻辑过程,包括:明确问题、确定目标、系统综合、系统分析、优化、决策、实施 7 个逻辑步骤;
时间维:即工作进程,包括:规划、拟订方案、研制、生产、安装、运行、更新 7 个时间阶段;
知识维:即专业科学知识,包括:工程、医学、建筑、商业、法律、管理、社会科学、艺术等知识和技能。
切克兰德方法
软科学方法论
软科学方法论
核心不是“最优化”而是“比较”与“探寻”。
将工作过程分为7个步骤:认识问题、根底定义、建立概念模型、比较及探寻、选择、设计与实施、评估与反馈。
并行工程方法
是对产品及其相关过程(包括制造过程和支持过程)进行并行、集成化处理的系统方法和综合技术
强调三个方面:产品设计开发期间最快速度按质完成,各项工作问题协调解决,适当的信息系统工具
目标:提高质量、降低成本、缩短产品开发周期和产品上市时间。
综合集成法
钱学森等提出,从系统的本质出发可以把系统分为简单系统和巨系统两大类
四原则:整体论、相互联系、有序性、【动态】
主要性质:开放性、复杂性、进化与涌现性、层次性和巨量性。
WSR系统方法
是懂物理—明事理—通人理方法论的简称。
具有中国传统哲学的思辨思想,是多种方法的综合统一,属于定性与定量分析综合集成的东方系统思想。
工作过程可理解为:理解意图、制定目标、调查分析、构造策略、选择方案、协调关系和实现构想 7 步。
基于模型的系统工程(MBSE)
建模方法的形式化应用
在需求分析阶段,产生需求图、用例图及包图
在功能分析与分配阶段,产生顺序图、活动图及状态机图
在设计综合阶段,产生模块定义图、内部块图及参数图等
信息系统
信息系统是由【计算机软硬件】、【网络和通信设备】、【信息资源】、【用户和规章制度】组成的以处理信息流为目的的人机一体化系统。
信息系统的功能有:输入、存储、处理、输出和【控制】
信息系统的功能有:输入、存储、处理、输出和【控制】
信息系统发展阶段:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段和成熟阶段
信息系统生命周期
产生阶段:提出想法,对需求进行调研和分析
开发阶段:总体规划、系统分析、系统设计、系统实现、系统验收
运行阶段:通过验收、移交之后
消亡阶段:更新改造、功能扩展、报废重建
信息系统建设原则
高层人员介入:如:CIO介入
用户参与开发:用户确定范围、核心用户全程参与、用户深度参与
自顶向下规划:以此减少信息不一致的现象
工程化:引入软件工程
其它原则:创新性原则、整体性原则、发展性原则、经济性原则
信息系统开发方法
原型法:构造简易原型解决需求不明确问题
按功能分
水平原型:行为原型,用于界面。细化需求但并未实现功能。
垂直原型:结构化原型,用于复杂算法的实现,实现了部分功能
按最终结果分
抛弃原型:探索式原型,解决需求不确定性、二义性、不完整性、含糊性等
演化原型:逐步演化为最终系统,用于易于升级和优化的场合,适用于Web项目
结构化方法:自顶向下,逐步分解求精,目标清晰化、不灵活
面向对象方法:自底向上,阶段界限不明,灵活应变更好复用、符合人类思维
面向服务方法:面向对象基础上、粗粒度松耦合、跨构件接口调用、抽象级别(操作【低】-服务【中】->业务流程【高)),详见案例5
构件化方法:解决复杂环境下软件的规模与复杂性
获取方式:
从现有构件中获得符合要求的构件
通过遗留工程提取,
从市场上购买现成的商业构件
开发新的符合要求的构件
分类方式
关键字分类法:将应用领域的概念按照从抽象到具体的顺序逐次分解为树型或有向无回路图结构,每个概念用一个描述性的关键字表示
刻面分类法:定义若干用于刻画构件特征的“刻面”,每个面包含若干概念,这些概念描述构件在刻面上的特征。刻面可以描述构件执行的功能、被操作的数据、构件应用的语境或其他特征
超文本方法:所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联想思维方式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索
检索方法
基于关键字的检索、刻面检索法、超文本检索法。
敏捷方法:适应性、以人为本、迭代增量、小项目,详见4.1.3 软件过程模型
软件工程
软件的生命周期:需求分析、软件设计、软件开发、运行维护、【淘汰】
软件过程模型(软件生命周期模型)
瀑布模型(结构方法、需求明确)
特点:
严格区分阶段,每个阶段因果关系紧密相连;
只适合需求明确的项目
缺陷:需求难以一次确定、变更的代价高、结果难以预见、各阶段工作不能并行。
过程:需求分析SRS,软件设计,【程序设计】,编码实现,单元测试,集成测试,系统测试,运行维护
原型模型(迭代方法、需求不明确)
特点:适合需求不明确的项目
阶段:原型开发阶段、目标软件开发阶段
分类
抛弃型原型:快速原型模型
演化型原型:演化模型
与其他模型结合:
与瀑布结合为螺旋模型
增量模型
敏捷模型
过程:
螺旋模型(迭代方法、快速原型+瀑布,强调风险,大型软件开发)
考虑了风险问题
以快速原型为基础+瀑布模型
支持大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法
过程:把整个软件开发流程分成多个阶段,每一个阶段都由目标设定(决定目标、方案和限制)、风险分析(评价方案、识别风险、消除风险)、开发和有效性验证、评审 4 部分组成。
敏捷模型(迭代增量、适应性、以人为本、小型项目)
特点:适应性的、以人为本、增量选代、适合小型项目
敏捷宣言
个体和交互胜过过程和工具
可工作的软件胜过大量的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
敏捷方法
极限编程XP:高效、低风险、【测试先行】、近螺旋式的开发方法。
4大价值观
沟通交流【加强面对面沟通】
简单朴素【不过度设计】
反馈【及时反馈】
勇气【接受变更的勇气】
水晶Cockburn:提倡机动性,强调不同的项目采用不同策略
并列争球SCRUM:1到4周为一个选代周期,按照需求优先级实现,侧重于项目管理
该方法侧重于项目管理。Scrum包括一系列实践和预定义角色的过程骨架(是一种流程、计划、模式,用于有效率地开发软件)。
在Scrum 中,使用产品 Backlog来管理产品的需求,产品Backlog 是一个按照商业价值排序的需求列表。
根据 Backlog 的内容,将整个开发过程分为若干个短的迭代周期(Sprint),在 Sprint 中,Scrum 团队从产品Backlog 中挑选最高优先级的需求组成 Sprint Backlog。
在每个迭代结束时,Scrum 团队将递交潜在可交付的产品增量。当所有 Sprint 结束时,团队提交最终的软件产品
在Scrum 中,使用产品 Backlog来管理产品的需求,产品Backlog 是一个按照商业价值排序的需求列表。
根据 Backlog 的内容,将整个开发过程分为若干个短的迭代周期(Sprint),在 Sprint 中,Scrum 团队从产品Backlog 中挑选最高优先级的需求组成 Sprint Backlog。
在每个迭代结束时,Scrum 团队将递交潜在可交付的产品增量。当所有 Sprint 结束时,团队提交最终的软件产品
特征驱动开发方法FDD:认为有效的软件开发需要3要素【人、过程、技术】,将【开发人员分类】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。
开放式源码:采用虚拟团队,开发成员分布各地
自适应ASD:采用预测猜测--协作合作--学习的方式进行开发
动态系统开发方法DSDM:倡导以业务为核心
统一过程模型(UP|RUP)(迭代增量、用例驱动、以架构为中心、重量级)
RUP是一种重量级过程模型,属于构件化开发使用的软件过程模型。将项目管理、业务建模、分析与设计等统一起来,贯穿整个开发过程
特点:用例驱动、以架构为核心、迭代和增量
阶段、生命周期
初始:定义最终产品视图和业务模型;确定系统范围
细化:设计及确定系统架构;制定工作计划及资源要求
构造:开发剩余构件和应用程序功能,把这些构件集成为产品,并进行详细测试
移交:确保软件对最终用户是可用的,进行β测试,制作产品发布版本
每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经满足。如果评审结果令人满意,就可以允许项目进入下一个阶段。这样做的好处是在软件开发的早期就可以对关键的、影响大的风险进行处理。
核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、【环境】
“4+1”视图模型(被UML吸收采纳)
逻辑视图:对应最终用户,主要支持功能性需求,即在为用户提供服务方面系统所应该提供的功能。逻辑视图常用类图、对象图、状态图、协作图表示。
实现视图:又称为开发视图,对应程序员,关注软件开发环境下实际模块的组织,描述系统的各部分如何被组织为模块和组件即开发环境中软件的静态组织结构。该视图通常包含包图和组件图。
进程视图:又叫过程视图,对应系统集成人员,考虑一些非功能性的需求,如性能和可用性,它可以解决并发性、分布性、系统完整性、容错性的问题。进程视图常用活动图表示。
部署视图:又叫物理视图,对应系统、网络工程师。描述如何将前三个视图中所述的系统设计实现为一组现实世界的实体。展示了如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通信等问题。
用例视图:所有其他视图都依靠用例视图(场景)来指导它们,这就是将模型称为“4+1”的原因。
其他模型
V模型(测试并行)
特点
测试贯穿于始终
测试分阶段,测试计划提前
过程
构件组装模型(重用灵活)
优点:易扩展、易重用、降低成本、安排任务更灵活。
缺点:构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其它指标(如性能)、第三方构件质量难控制,
示例:方仓医院、乐高积木
过程:需求分析和定义、设计构建组装、建立构件库、构建应用组件、测试和发布
快速开发模型(RAD)(构件+瀑布、不适合新技术)
定义:
基于瀑布和构件模型而来的开发方法,主流程用瀑布,每个阶段用构件提升构建速度
基于构件的开发方法,用户参与、开发或复用构件、模块化要求高,不适合新技术
过程:业务建模、数据建模、过程建模、应用生成、测试与交付
变换模型:适用于形式化开发;
智能模型:基于规则系统的专家系统
喷泉模型:面向对象方法,复用性好,开发过程无间隙,节省时间;
需求工程
需求工程概述
需求工程的发展、内容和特点
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望
活动阶段
需求开发:需求获取、需求分析、形成需求规格(形成SRS)、需求确认与验证【形成需求基线(经过评审的SRS)】
需求管理(对需求基线的管理):变更控制、版本控制、需求跟踪、需求状态跟踪
需求获取
分层
业务需求(整体全局):反映了组织机构或客户对系统、产品高层次的目标要求
用户需求(用户视角):描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望。通常采取用户访谈和问卷调查等方式,对用户使用的场景(scenarios)进行整理,从而建立用户需求。业务需求和用户需求构成了用户原始需求文档的内容
系统需求(软件需求)
功能需求:从系统操作的角度定义了开发人员必须实现的软件功能,来满足业务需求和用户需求。
非功能需求(性能等)
系统约束
项目管理维度QFD
基本需求(明示,常规需求)
期望需求(隐含)
兴奋需求(多余)
需求获取的基本步骤
(1)开发高层的业务模型。
(2)定义项目范围和高层需求。
(3)识别用户角色和用户代表。
(4)获取具体的需求。
(5)确定目标系统的业务工作流。
(6)需求整理与总结。
(2)定义项目范围和高层需求。
(3)识别用户角色和用户代表。
(4)获取具体的需求。
(5)确定目标系统的业务工作流。
(6)需求整理与总结。
需求获取的方法
用户面谈:1对1-3,有代表性的用户,了解主观想法,交互好,成本高,要有领域知识支撑。
需求专题讨论会(JRP)联合需求计划:高度组织的群体会议,各方参与,了解想法,消除分歧,交互好,成本高
问卷调查:用户多,无法一一访谈,成本低。
现场观察:针对较为复杂的流程和操作。
原型化方法:通进简易系统方式解决早期需求不确定问题。
头脑风暴法:一群人围绕新业务,发散思维,不产生新的观点。
需求定义SRS
严格定义法
所有需求都能够被预先定义
开发人员与用户之间能够准确而清晰地交流
采用图形/文字可以充分体现最终系统
原型法
并非所有的需求都能在开发前被准确的说明
项目参加者之间通常都存在交流上的困难
需要实际的、可供用户参与的系统模型
有合适的系统开发环境
反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
需求确认与验证
需求评审:正式评审、非正式评审
需求测试
用户确认签字
验收标准之一
需求变更
变更控制过程
问题分析和变更描述
变更分析和成本计算:CCB来决策审批
变更实现
变更控制委员会CCB由项目所涉及的多方成员共同组成,通常包括用户和实施方的决策人员。
CCB是决策机构,不是作业机构,通常 CCB 的工作是通过评审手段来决定项目是否能变更,但不提出变更方案。
过程及操作步骤为制定决策、交流情况、重新协商约定。
过程及操作步骤为制定决策、交流情况、重新协商约定。
需求追踪
双向跟踪及需求跟踪矩阵
正向跟踪:用户原始需求->软件需求->下游产品
逆向跟踪:下游产品->软件需求->用户原始需求
UC需求跟踪矩阵:纵列能看出做的多余功能,横列能看出未做的功能
系统分析与设计
结构化方法(面向功能、数据流、DFD、模块)
结构化方法又称为面向功能的软件开发方法或面向数据流的软件开发方法
结构化分析SA(DFD和数据字典)
利用图形表达用户需求中的功能需求,使用的手段主要有数据流图(Data Flow Diagram,DFD)、数据字典、结构化语言、判定表以及判定树等。
DFD组成元素:数据流、处理/加工、数据存储和外部项。
DFD图规则:
父图数据流必须在子图中出现;
一个处理至少有一个输入流和一个输出流;
一个存储必定有流入和流出;
一个数据流至少有一端是处理端;
模型表达的信息是全面的、完整的、正确的和一致的。
一个处理至少有一个输入流和一个输出流;
一个存储必定有流入和流出;
一个数据流至少有一端是处理端;
模型表达的信息是全面的、完整的、正确的和一致的。
分析步骤为:明确目标、确定系统范围、建立顶层DFD图、构建第一层DFD分解图、开发DFD层次结构图、检查确认DFD图
数据字典(Data Dictionary)是一种标记用户可以访问的数据项和元数据的目录,是对系统中使用的所有数据元素定义的集合,包括数据项、数据结构、数据流、数据存储和处理过程。
结构化设计SD(模块(功能、逻辑、状态)、概要设计(模块结构图)、详细设计(流程图、问题分析图))
SD是一种面向数据流的设计方法,以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程
软件结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。
模块是实现功能的基本单位,一般具有功能、逻辑和状态3个基本属性。
模块独立性原则(高内聚、低耦合、四要素)
模块的四要素
输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
处理功能:指模块把输入转换成输出所做的工作。
内部数据:模块本身引用的数据。
程序代码:指用来实现模块功能的程序。
耦合:模块间的关联
非直接耦合
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合
一组模块借助参数表传递简单数据
标记耦合
一组模块通过参数表传递记录信息(数据结构)
控制耦合
模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合
一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息
公共耦合
多个模块都访问同一个公共数据结构
内容耦合
一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口
内聚:模块内部件的联系程度
功能内聚
完成一个单一功能各个部分协同工作,缺一不可
顺序内聚
处理元素相关,而且必须顺序执行
通信内聚
所有处理元素集中在一个数据结构的区域上
过程内聚
处理元素相关,而且必须按特定的次序执行
时间内聚(瞬时内聚)
所包含的任务必须在同一时间间隔内执行
逻辑内聚
完成逻辑上相关的一组任务
偶然内聚(巧合内聚)
完成一组没有关系或松散关系的任务
保持模块的大小适中
多扇入,少扇出
深度和宽度均不宜过高:防止模块过于复杂,深度代表调用别的模块层次多、宽度代表调用别的模块数量多
阶段
没有原型设计
概要设计【外部设计】:功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块|系统结构图
详细设计【内部设计】:为每个具体任务选择适当的技术手段和处理方法,详细设计的表示工具有图形工具、表格工具和语言工具。图形有业务流图、程序流程图、问题分析图(Problem AnalysisDiagram,PAD)、NS 流程图等。
结构化编程SP(顺序、分支、循环)
SP通过顺序、分支和循环三种基本的控制结构可以构造出任何单入口单出口的程序。
SP强调:自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。
P原则:程序=(算法)+(数据结构)。两者分开设计,以算法(函数或过程)为主。
数据库设计(E-R实体关系图)
面向对象方法(对象类、结构、主题、属性、服务|方法;类、对象)
面向对象方法的定义、内涵、过程和设计原则
面向对象分析方法OOA(对象类、结构、主题、属性、服务|方法)
5个层次:主题层、对象类层、结构层、属性层和服务层
5个活动:标识对象类、标识结构、定义主题、定义属性和定义服务
5个步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法
基本原则:抽象、封装、继承、分类、聚合、关联、消息通信、粒度控制和行为分析
面向对象设计方法OOD(边界类、控制类、实体类)
类封装了信息和行为,是具有相同属性、方法和关系的对象集合的总称
类的类型
边界类:跟外界打交道
人机交互:用户界面
黄金三法则
置于用户控制之下
以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式;
提供灵活的交互;
允许用户交互可以被中断和撤销;
当技能级别增加时可以使交互流水化并允许定制交互;
使用户隔离内部技术细节;
设计应允许用户和出现在屏幕上的对象直接交互;
提供灵活的交互;
允许用户交互可以被中断和撤销;
当技能级别增加时可以使交互流水化并允许定制交互;
使用户隔离内部技术细节;
设计应允许用户和出现在屏幕上的对象直接交互;
减少用户的记忆负担
减少对短期记忆的要求
建立有意义的缺省
定义直觉性的捷径
界面的视觉布局应该基于真实世界的隐喻
以不断进展的方式揭示信息
建立有意义的缺省
定义直觉性的捷径
界面的视觉布局应该基于真实世界的隐喻
以不断进展的方式揭示信息
保持界面的一致性
允许用户将当前任务放入有意义的语境
在应用系列内保持一致性
如过去的交互模型已建立起了用户期望,除非有迫不得已的理由不要改变它
在应用系列内保持一致性
如过去的交互模型已建立起了用户期望,除非有迫不得已的理由不要改变它
机器:API
例:显示屏、窗体、打印机接口、通信协议、对话框、菜单、购物车、报表、二维码
控制类:调用实体类,进行演算得到结果给边界类
应用逻辑、业务逻辑、实体访问逻辑
例如:身份验证器
实体类
对接数据库,实体和关系的映射
基本过程
面向对象程序设计OOP(对象,设计模式、封装继承多态)
设计原则
单一职责原则:设计目的单一的类,只完成一个职能,关系简单,使系统达到高内聚低耦合
开闭原则:对扩展开放,对修改封闭,防止破坏原有代码的功能
李氏(Liskov)替换原则:子类可以替换父类,泛华关系,子类不能重写父类的方法
依赖倒置原则:要依赖于抽象,而不是具体实现,针对接口编程,不要针对实现编程,防止过度耦合,灵活性、可扩展性都会更好
接口隔离原则:使用多个专门的接口比使用单一的总接口要好
组合重用原则:要尽量使用组合,而不是继承关系达到重用目的,防止继承的紧耦合
迪米特(Demeter)原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解,信息隐蔽原则
软件设计模式
创建型:单抽原件厂,用来创建对象
单例模式:Singleton、每次只实例化一个对象(唯一实例)
保证一个类只有一个实例,并提供一个访问它的全局访问点
抽象工厂模式:Abstract Factory、抽象接口,生产成系列对象
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类
原型模式:Prototype、复用、拷贝原型
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象
建造者模式:Builder、类与构造分离,复杂对象构造
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
工厂方法模式:Factory Method、子类实例化对象,动态生产对象
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟
结构型:外侨组员戴配饰,处理类或对象的组合
外观模式:Fagade、对外统一接口
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用
桥接模式:Bridge、抽象实现分离,继承
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化
组合模式:Composite、部分与整体的关系、树形目录结构
将对象组合成树型结构以表示“整体·部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
享元模式:Flyweight、细粒度复用共享,汉字编码
提供支持大量细粒度对象共享的有效方法
代理模式:Proxy、代理控制、快捷方式
为其他对象提供一种代理以控制这个对象的访问
适配器模式:Adapter、接口转换、兼容
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作
装饰器模式:Decorator、动态附加职责
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
行为型:观摩对策、责令解放、戒忘台,描述类与对象之间怎样交互、怎样分配职责
观察者模式:Observer、通知、自动更新,联动
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
模板方法:Template Method、算法结构不变,子类定义步骤、框架
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定 义算法的某些特定步骤
迭代模式:lterator、顺序访问、数据集
提供一种方法来顺序访问一个聚合对象中的各个元素
策略模式:Strategy,算法替换、多方案切换
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化
责任链模式:Chain of Responsi bility,传递请求、职责、链接
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求
命令模式:Command,参数化、日志记录、可撤销
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,
解释器模式:Interpreter,文法、解释、虚拟机
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器根据文法表示来解释语言中的句子
访问者模式:Visitor,类不变、新操作,数据与操作分离
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作
中介者模式:Mediator,不直接引用
用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对 象间的交互
备忘录模式:Memento,保存、恢复、游戏存档
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态
状态模式:State,状态变成类
允许一个对象在其内部状态改变时改变它的行为
OOP以对象为核心,该方法认为程序由一系列对象组成。
基本特点有:封装、继承和多态
封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作组装到一起。
继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。继承可以分为4类,分别为取代继承、包含继承、受限继承
和特化继承。
和特化继承。
多态指同一操作作用于不同的对象,可以产生不同的结果。
数据持久化与数据库(SQL、JDBC和JDO)
永久保存对象的状态,需要进行对象的持久化(Persistence),把内存中的对象保存到数据库或可永久保存的存储设备中。
在多层软件设计和开发中采用持久层(Persistence Layer)专注于实现数据持久化,将对象持久化到关系数据库中,需要进行对象/关系的映射(Object/Relation Mapping,ORM)。目前主流的持久化技术框架包括 Hibernate、iBatis/Mybatis和 JDO 等
其他设计方法
构件与软件重用
软件重用是使用已有软件产品来开发新的软件系统的过程,分为水平式重用(标准函数库)和垂直式重用(区块链、域分析)两种类型
逆向工程
相关概念
(1)重构/重组(Restructuring)。重构是指在【同一抽象级别】上【转换系统描述形式】
(2)设计恢复(Design recovery)。设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。逆向工程得出的设计是设计恢复,但不一定能够抽象还原到原设计。
(3)逆向工程(Reverse engineering):逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。
(4)正向工程(Forward engineering)。正向工程是指不仅从现有系统中恢复设计信息且使用该信息去改变或重构现有系统,以改善其整体质量。
(5)再工程/重构工程(Re-engineering)。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。
过程
现有工程
再/重构工程
逆向工程
实现级:包括程序的抽象语法树、符号表、过程的设计表示
结构级:包括反映程序分量各部分之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型
新需求
正向工程
新系统
形式化方法:净室软件工程
净室软件工程(盒子结构规约、形式化方法、正确性、函数、抽样)
使用盒子结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制。
理论基础:函数和抽样理论
缺点:太理想化、忽视测试、传统软件工程的弊端
技术手段
统计过程控制下的增量式开发:控制迭代
基于函数的规范和设计
行为视图(黑盒)
有限状态机视图(状态盒)
过程视图(明盒)
正确性验证:净室工程的核心,使用正确性验证替代测试
统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法
基于构件的软件工程(CBSE、分布对象、复用)
CBSE的定义、作用和特点
定义:是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。
构件特征
可组装性:所有外部交互必须通过公开定义的接口进行。
可部署性:必须能作为一个独立实体在提供其构件模型实现的构件平台上运行
文档化:构件必须是完全文档化的。
独立性:构件应该是独立的,如确实需要其他构件提供服务,则应显示声明
标准化:符合某种标准化的构件模型。
构件和构件模型
构件模型定义了构件实现、文档化以及开发的标准。目前主流的构件模型是Web Services模型、Sun 公司的 EJB 模型和微软的.NET 模型。
构建模型要素:接口、使用信息和部署信息。
构件模型提供了一组被构件使用的通用服务,包括平台服务和支持服务。
容器是构件模型基础设施,是支持服务的一个实现加上一个接口定义,构件必须提供该接口定义以便和容器整合在一起。
CBSE 过程
支持基于构件组装的软件开发过程主要包括:
(1)系统需求概览。
(2)识别候选构件。
(3)根据发现的构件修改需求。
(4)体系结构设计。
(5)构件定制与适配。
(6)组装构件,创建系统。
(1)系统需求概览。
(2)识别候选构件。
(3)根据发现的构件修改需求。
(4)体系结构设计。
(5)构件定制与适配。
(6)组装构件,创建系统。
CBSE 过程与传统的软件开发过程的不同点:
(1)早期需要完整的需求,以便尽可能多地识别出可复用的构件。
(2)早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE。
(3)架构设计完成后,可能需要修改构件以适合功能和架构的需求。
(4)开发过程就是组装构件的过程,有时需要开发适配器。
(5)CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围
(1)早期需要完整的需求,以便尽可能多地识别出可复用的构件。
(2)早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE。
(3)架构设计完成后,可能需要修改构件以适合功能和架构的需求。
(4)开发过程就是组装构件的过程,有时需要开发适配器。
(5)CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围
构件组装
顺序组装:按顺序调用己经在在的构件,可以用两个已经存在的构件来创造一个新的构件
层次组装:被调用构件的“提供”接口必须和调用构件的“请求”接口兼容。
叠加组装:多个构件合并形成新构件,新构件整合原构件的功能,对外提供新的接口
构件组装可能面临接口不兼容的问题,常见的有参数不兼容、操作不兼容和操作不完备 3 种。这时需要编写适配器构件来解决
不兼容的问题。
不兼容的问题。
数据库设计
数据模型三要素:数据结构、数据操作、数据约束(实体、参照、用户定义完整性)
数据库系统的体系结构
基本理论:函数依赖、平凡依赖、非平凡依赖、完全依赖、部分依赖、传递依赖
设计范式:1NF(非主属性部分依赖主码)、1NF(非主属性完全依赖主码)、1NF(非主属性不传递依赖主码)、BCNF(属性不传递依赖候选码)
数据库设计:需求分析(SA)、概念结构设计(选取局部应用、逐一分ER图、合并ER图)、逻辑结构设计(数据模型、ER转换到数据模型、确定完整性约束、用户视图)、物理设计(数据分布、存储结构、访问接口)、实施(创建数据库、载入数据、试运行、评估)、运维(性能监控改善、故障恢复、数据库重构或重组)
用户访问数据库的标准接口:OCI、嵌入SQL、ODBC、ORM
NoSOL的四层框架:数据【持久层】、【数据分布】层、数据【逻辑模型层】和【接口层】
分布式数据库
特性:共享性、自治性、可用性、分布性
分布透明性:分片透明性、位置透明性、局部数据模型透明性
数据库优化
集中数据库优化:冗余列、派生列、表重组、水平分表、垂直分表
分布式数据库优化:主从复制、读写分离、分表、分库
系统架构(体系结构)设计
软件体系结构包括:软件的构件、构件的外部可见属性、构件间的关系
软件架构设计包含:【数据库设计】和【软件结构设计】(关注软件构件的结构、属性和交互作用,并通过多种视图全面描述)
软件架构的重要性
(1)架构设计能够满足系统的品质。
(2)架构设计使受益人达成一致的目标。
(3)架构设计能够【支持计划编制过程】。
(4)架构设计对系统开发的指导性。
(5)架构设计能够有效地管理复杂性。
(6)架构设计为复用奠定了基础。
(7)架构设计能够降低维护费用。
(8)架构设计能够【支持冲突分析】
(2)架构设计使受益人达成一致的目标。
(3)架构设计能够【支持计划编制过程】。
(4)架构设计对系统开发的指导性。
(5)架构设计能够有效地管理复杂性。
(6)架构设计为复用奠定了基础。
(7)架构设计能够降低维护费用。
(8)架构设计能够【支持冲突分析】
软件架构设计的生命周期
需求阶段(需求模型):需求模型(空间)到架构模型(解空间)的转换和保证可追溯性
设计阶段(架构模型,构建、连接子)
架构模型的描述:构件和连接子的建模,ADL(构件间互联机制),模型(4+1模型)多视图(UML视图)
架构模型的【设计与分析】方法
架构【设计经验的总结与复用】
开发阶段(开发过程、实现途径、测试技术)
研究内容:基于SA的开发过程支持、寻求从SA向实现过渡的途径、研究基于SA的测试技术
缩小架构设计与底层实现差距的手段:模型转换技术、封装底层的实现细节、在SA模型中引入实现阶段的概念(如用程序设计语言描述)。
构件组装阶段(连接子实现)
对SA设计模型中规约的连接子(互联)的实现提供支持
组装过程中,如何检测并消除体系结构失配问题(构件本身的失配;连接子的失配;部分和整体的失配
部署阶段(软硬件模型)
提供高层的体系结构视图描述部署阶段的软硬件模型
基于软件架构模型可以分析部署方案的质量属性,从而选择合理的部署方案
后开发阶段
动态软件体系结构
体系结构恢复与重建:手工体系结构重建、【工具】支持的手工重建、通过【查询语言】来【自动】建立【聚集】、使用其他技术(如数据挖掘)
基于架构的软件开发方法(ABSD)
ABSD方法是架构驱动,即强调由【商业】、【质量】和【功能】需求的组合驱动架构设计。
ABSD是一个自顶向下,递归细化的软件开发方法,软件系统的体系结构通过该方法得到细化,直到能产生【软件构件】和【类】
ABSD方法有三个基础:功能的分解;选择架构风格实现质量和商业需求;软件模板的使用
体系结构需求
需求获取:体系结构需求的获取一般来自三个方面:质量目标、系统的商业目标和系统开发人员的商业目标。
标识构件:标识构件分三步完成:生成类图→对类进行分组→把类打包成构件。
需求评审:审查重点包括需求是否真实反映了用户的要求、类的分组是否合理、构件合并是否合理等
体系结构设计
提出软件体系结构模型 → 映射构件 → 分析构件相互作用 → 产生体系结构设计评审
设计评审必须邀请独立于系统开发的外部人员。
设计评审必须邀请独立于系统开发的外部人员。
体系结构文档化
主要输出结果是 体系结构规格说明 和 测试体系结构需求的质量设计说明书。
文档的完整性和质量是软件架构成功的关键因素。
关于文档的三大注意事项:文档要从使用者的角度进行编写;必须分发给所有与系统有关的开发人员;必须保证开发者手上的文档是最新的
关于文档的三大注意事项:文档要从使用者的角度进行编写;必须分发给所有与系统有关的开发人员;必须保证开发者手上的文档是最新的
体系结构复审
一个主版本的软件体系结构分析之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。
复审的目的是:标识潜在的风险,及早发现体系结构设计中的缺陷和错误,必要时,可搭建一个可运行的最小化系统用于评估和测试体系结构是否满足需要
复审的目的是:标识潜在的风险,及早发现体系结构设计中的缺陷和错误,必要时,可搭建一个可运行的最小化系统用于评估和测试体系结构是否满足需要
体系结构实现
以复审后的文档化体系结构说明书为基础的,体系结构说明书中定义了系统中构件与构件之间的关系
过程:分析与设计→构件实现→构件组装→系统测试(单个构件的功能性测试、被组装应用的整体功能、性能测试)
体系结构的演化
使用系统演化步骤去修改应用,以满足新的需求。
过程:需求变化归类→体系结构演化计划→构件变动→更新构件的相互作用→构件组装与测试→技术评审→演化后的体系结构
软件架构风格(数据流、调用返回、以数据为中心、虚拟机、独立构件、C2)
体系结构风格反映了领域中众多系统所共有的【结构】和【语义】特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统
体系结构风格定义一个系统家族,包括【架构定义】、【架构词汇表(构件和连接件)】和【架构约束(构件和连接件的组合方式)】
数据流风格
批处理
无需用户交互,每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,且数据以【整体】的方式传递
应用场景:传统编译器
管道-过滤器
弱用户交互,把系统分为几个序贯地处理步骤,每个步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入
传统编译器
调用/返回风格(分而治之)
定义:是一种分而治之的策略,主要思想是将一个复杂的大系统分解为若干个子系统,降低复杂度,增加可修改性
主程序/子程序风格
主程序显示调用子程序,采用【单线程】控制,构件即为主程序和子程序。
面向对象风格
构件是对象,即抽象数据类型的实例,通过【函数和过程的调用】来交互,可以通过减少功能调用层次提高系统性能
层次型风格
每一层为上层服务,并为下层提供接口。仅相邻层间具有层接口,层次越多效率越差
物联网
客户端/服务器风格(C/S)
二层 C/S 模式
组成:客户应用程序(前台:完成与用户交互任务)、网络、数据库服务器(后台:负责数据管理)
优点:客户应用和服务器构件分别运行在不同的计算机上。
缺点:开发成本高,客户端设计复杂,信息内容和形式单一,不利于推广,软件移植困难,软件维护和升级困难。
优点:客户应用和服务器构件分别运行在不同的计算机上。
缺点:开发成本高,客户端设计复杂,信息内容和形式单一,不利于推广,软件移植困难,软件维护和升级困难。
三层 C/S (瘦客户端)
表示层:用户接口与应用逻辑层的交互,不影响业务逻辑,通常使用图形用户界面。
功能层:实现具体的业务处理逻辑。
数据层:数据库管理系统。
功能层:实现具体的业务处理逻辑。
数据层:数据库管理系统。
浏览器/服务器风格(B/S)
其三层结构分别为:浏览器;Web服务器;数据库服务器。
相比于C/S的不足之处:动态页面的支持能力弱、系统拓展能力差、安全性难以控制、响应速度不足、数据交互性不强。
以数据为中心的风格
仓库风格
以数据为中心,存储和维护数据的中心场所。由中央数据结构(说明当前数据状态)和一组独立构件(对中央数据进行操作)组成
黑板风格(问题求解)
是一种问题求解模型,是【组织推理步骤】、【控制状态数据】和【问题求解之领域知识】的概念框架。
可通过选取各种【黑板】、【知识源】和【控制模块】的构件来设计
应用于信号处理领域,如语普识别、模式识别、图像处理、知识推理
可通过选取各种【黑板】、【知识源】和【控制模块】的构件来设计
应用于信号处理领域,如语普识别、模式识别、图像处理、知识推理
应用场景:信号处理领域,如语音识别和模式识别。另一应用是松耦合代理数据共享存取。
虚拟机风格
定义:人为构建一个运行环境,可以解析与运行自定义的语言,增加架构的灵活性
解释器风格
组成:解释引擎、被解释的代码的存储区、记录工作状态、进度的数据结构
通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异,缺点是执行效率较低,典型例子是专家系统
规则系统风格
包括:知识库(规则集、事实集)、规则解释器、规则/数据选择器及工作内存(程序运行存储区)
独立构件风格
定义:独立构件体系结构风格强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活度
进程通信风格
构件是独立的命名过程,连接件是消息传递(点到点、异步或同步方式及远程过程调用)
事件系统风格
构件不直接调用一个过程,而是触发或广播一个或多个事件。
隐式调用
C2风格
通过连接件【连接】构件或某个构件组,构件与构件之间【无连接】
软件架构的复用技术
分类:机会复用(开发中)、系统复用(开发前)
目的:减少开发工作、减少开发事件、降低开发成本、提高生产力、提高产品质量,更好的【互操作性】
一般形式的复用包括:函数的复用、库的复用、面向对象开发中的类、接口和包的复用
复用的过程:构建/获取(前提)->管理(构件库、分类、检索)-->使用(修改、扩展、配置、组装与集成)
特定领域软件架构(DSSA、反复螺旋模型)
特征:领域性、普遍性、抽象性、可复用性
活动:领域分析(领域模型)、领域设计(领域架构模型、适应性)、领域实现(可重用信息)
人员:领域专家、领域分析师、领域设计人、领域实现人
领域分析者的任务是:控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中
领域设计者的任务是:根据领域模型和现有系统开发出DSSA,并对DSSA的准确性和一致性进行验证
三个层次:领域开发环境(领域架构师);领域特定应用开发环境(应用工程师);应用执行环境(操作员)
五个阶段:定义领域范围;定义领域元素;定义领域设计和实现需求约束;定义领域【模型和体系结构】;产生、搜集可重用的产品单元)
系统质量属性
软件系统质量属性是一个系统的可测量或可测试的属性,用来描述系统满足利益相关者 (Stakeholders) 需求的程度。
按生命周期分类的质量属性
开发期质量属性
易理解性:指设计被开发人员理解的难易程度
可扩展性(灵活性):软件因适应新需求或需求变化而增加新功能的能力
可重用性:指重用软件系统或某一部分的难易程度
可测试性:对软件测试以证明其满足需求规范的难易程度,对系统的行为进行控制与调试
可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度
可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度
运行期质量属性
性能:软件系统及时提供相应服务的能力,如速度、吞吐量和容量等
【可伸缩性】:当用户数和数据量增加时,软件系统维持高服务质量的能力
互操作性:软件系统与其他系统交换数据和相互调用服务的难易程度
可靠性:软件系统在一定的时间内持续无故障运行的能力
可用性:系统在一定时间内正常工作的时间所占比例
鲁棒性(健壮性、容错性):软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力
安全性:软件系统同时兼顾向合法用户提供服务,以及阻止非授权用户使用的能力
面向架构评估的质量属性
【功能性】:需求的满足程度
【可变性】:架构经扩充或变更而成为新架构的能力
【互操作性】:与其他系统互操作,通过可视化或接口方式提供更好的交互操作体验
可修改性:快速地以较高的性价比对系统作出修改的能力
结构重组:不影响主体进行的灵活配置
可扩展性:因松散耦合更易实现新特性/功能,不影响架构
可维护性:能做局部的修复,使故障对架构的负面影响最小化
可移植性:适用于多样的环境(硬件平台、语言、操作系统等)
设计策略
局部化修改:抽象、高内聚低耦合、预测变更、使模块通用。
防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。
推迟绑定时间:运行时注册、多态、配置文件。
性能:单位时间内能处理的工作量
设计策略
资源 需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
资源管理:并发机制、增加资源
资源仲裁:优先级队列、先来先服务、固定优先级、动态优先级、静态调度
可靠性:在一定的时间内持续无故障运行的能力
可靠性通常用平均失效等待时间 (Mean Time To Failure,MTTF) 和平均失效间隔时间 (Mean Time Between Failure,MTBF) 来衡量
容错:出现错误后仍能保证系统正常运行,且自行修正错误
健壮性:错误不对系统产生影响,按既定程序忽略错误
可用性:正常运行的时间比例
设计策略
错误检测:心跳、Ping/Echo、异常
错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚
错误避免:服务下线、事务、进程监控器
安全性:系统给合法用户提供服务并阻止非法用户的能力
设计策略
抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问
检测攻击:入侵检测系统、追踪/审计
从攻击中恢复:恢复状态、识别攻击者
质量属性场景描述
刺激源(Source):某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)
刺激(Stimulus):指当刺激到达系统时需要考虑的条件
环境(Environment):指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况
制品(Artifact):某个制品被激励。可能是整个系统,也可能是系统的一部分
响应(Response):指在激励到达后所采取的行动
响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试
系统架构评估
系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策
核心概念
风险点:指架构设计中潜在的、存在问题的架构决策所带来的【隐患】
非风险点:某些做法是可行的、可接受的
敏感点:为了实现某种特定质量属性,一个或多个系统组件所具有的特性
权衡点:是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性
风险承担者或利益相关人:影响体系结构或被体系结构影响的群体
场景:确定架构质量评估目标的【交互机制】,一般采用【触发】机制(教材中解释为“刺激”)、【环境】和【影响】三方面来描述。
评估方法分类
基于【调查问卷】或【检查表】的方法:该方式的关键是要设计好问卷或检查表,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于评估人员的主观推断。
基于【场景】的评估方法:通过分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度,应用在架构权衡分析法(ATAM)和软件架构分析方法(SAAM)中。
基于【度量】的评估方法:制定一些定量值来度量架构,如代码行数等;建立【质量属性和度量之间的映射原则】 → 在软件文档中获取度量信息 → 分析推导系统质量属性。
软件架构分析方法(SAAM)
SAAM 是卡耐基梅隆大学软件工程研究所的Kazman等人于1983年提出的一种【非功能质量属性】的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法
SAAM的主要输入是【问题描述、需求说明(需求分析)和架构描述(架构设计)】,其分析过程主要包括【场景开发、架构描述、单个场景评估、场景交互评估、总体评估】
架构权衡分析方法(ATAM)
ATAM是一种系统架构评估方法,主要在系统开发之前,针对【性能、可修改性、可用性、安全性】等质量属性进行【评价和折中】
ATAM4个活动领域(阶段):场景和需求收集、架构视图和场景实现、【属性模型】构造和分析、架构【决策与折中】,整个评估过程强调以【属性】作为架构评估的核心概念。
现代ATAM采用效用树对质量属性进行分类和优先级排序
演示介绍阶段
介绍ATAM方法:描述ATAM评估过程。
描述商业目标:着重业务视角,提供相关系统功能、主要利益相关方、业务目标和其他限制等信息。
描述体系结构:侧重可用性以及体系结构的质量要求
调查和分析阶段
确定架构方法:涉及能够理解系统关键需求的关键架构方法
生成质量属性效用树:确定最重要的质量属性,并确定优先次序
分析体系结构方法:彻底调查和分析,找出处理相应质量属性架构的方法。
包括4个主要阶段:调查架构方法 → 创建分析问题 → 分析问题的答案 → 找出风险、非风险、敏感点和权衡点。
包括4个主要阶段:调查架构方法 → 创建分析问题 → 分析问题的答案 → 找出风险、非风险、敏感点和权衡点。
测试阶段
头脑风暴和优先场景:将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较
分析架构方法:分析上一步中高优先级的质量属性,检查相应的架构设计方案是否可支持满足这些属性,重复第6步来完善体系结构方法
报告阶段
提供评估期间收集的所有信息(效用树、场景、分析问题、风险和非风险、架构方法),呈现给利益相关者
SAAM和ATAM对比
特定目标:通过程序文档验证体系结构,注重发现潜在问题,可用于评价单系统或进行多系统比较;确定在多个质量属性之间折中的必要性
评估技术:场景技术;场景技术、启发式分析方法
质量属性:可修改性是主要分析内容;性能、可用性、安全性和可修改性
风险承担者:所有参与者;场景和需求收集过程中的相关人
架构描述:围绕功能、结构和分配描述;五个基本结构及其映射关系
方法活动:场景开发、体系结构描述、单个场景评估、场景交互和总体评估;场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中
知识库可复用性:不涉及;有基于属性的体系模型,可复用
方法验证:空中交通管制系统、嵌入式音频系统、修正控制系统、根据上下文查找关键词系统;仍处于研究中
成本效益分析法(CBAM)
成本效益分析法(Cost Benefit Analysis Method,CBAM)分为整理场景 → 场景求精 → 确定场景的优先级 → 分配效用 → 架构策略涉及哪些质量属性及响应级别 → 使用内插法确定“期望的”质量属性响应级别的效用 → 计算各架构策略的总收益 → 根据受成本限制影响的ROI选择架构策略
UML组成元素
基本构造块
事务(结构、行为、分组、注释)
结构事物:名词、静态部分,用于描述概念或物理元素,包括:类、接口、协作、用例、主动类、构件、制品和节点
子主题
行为事物:动词,描述了跨越时间和空间的行为。包括:交互Interaction、状态机StateMachine和活动Activity,也有成为消息、动作次序、连接
子主题
分组事物:包是最常用的分组事物,结构事物、行为事物甚至其他分组事物都可以放进包内。
注释事物:UML模型的解释部分。描述、说明和标注模型的元素
关系(依赖、关联(聚合、组合)、泛华、实现)
依赖关系:其中一个事物发生变化会影响另一个事物。依赖关系是一种使用的关系。
关联关系:是一种拥有的关系,关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。
聚合关系:表示类之间的整体与部分的关系,其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。
组合关系:也是表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。
泛化关系:泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。
实现关系:在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间
子主题
图(支配基本构造块如何放置在一起的规则)
静态图(结构图)
类图:一组类、接口、协作和它们之间的关系
子主题
对象图:一组对象及它们之间的关系
子主题
构件图:一个封装的类和它的接口,是物理上独立的东西,他可以单独维护、升级、替换。
子主题
包图:由模型本身分解而成的组织单元,以及它们之间的依赖关系
子主题
部署图:软硬件之间映射
子主题
制品图:系统的物理结构
组合结构图
动态图(行为图)
用例图:展现了一组用例、参与者(Actor)以及它们之间的关系
用例之间有扩展关系(<<extend >>)和包含关系(<<include >>)和泛华关系,
包含关系的特点是当两个或多个用例中共用一组相同的动作时,可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享;
扩展关系则是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
包含关系的特点是当两个或多个用例中共用一组相同的动作时,可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享;
扩展关系则是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
参与者和用例之间有关联关系
参与者与参与者之间有泛化关系
子主题
状态机图:状态转换变迁
子主题
活动图:可以描述系统的工作流程和并发行为
活动图泳道分区
并行活动图示例
交互图
顺序图(序列):强调按时间顺序
仅用消息的形式表达
用消息+返回值的形式表达
通信图:(协作图),是“顺序图”的另外一种表示方式。
子主题
定|计时图:时序图也叫时间图。强调实际时间
子主题
交互概览图
公共机制:所有元素达到的共识
规格说明:事物语义的细节描述,它是模型真正的核心
修饰:通过修饰来表达更多的信息
公共分类:类与对象、接口与实现
扩展机制:允许添加新的规则
计算题
硬件计算
流水线执行周期 = 最慢那个指令执行时间;
流水线执行时间 = 所有指令顺序执行时间 +(指令总数-1)* 流水线执行周期;
流水线的吞吐率 = 指令执行条数/流水线执行时间
流水线执行时间 = 所有指令顺序执行时间 +(指令总数-1)* 流水线执行周期;
流水线的吞吐率 = 指令执行条数/流水线执行时间
主频 = 外频 * 倍频
总线的时钟周期=时钟频率的倒数;
总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
性能计算
每秒百万次指令数MIPS = 指令条数/(执行时间×10的6次方)
峰值计算,是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。
理论浮点峰值= CPU主频 × CPU每个时钟周期执行浮点运算的次数× 系统中CPU数
理论浮点峰值= CPU主频 × CPU每个时钟周期执行浮点运算的次数× 系统中CPU数
等效指令速度法或吉普森(Gibson)法,早期用加法指令的运算速度来衡量计算机的速度,后来发展为各个指令的运算时间乘以占比。
通常加、减法指令占 50%,乘法指令占 15%,除法指令占 5%,程序控制指令占 15%,其他指令占 15%。
式中:Wi 为第 i 种指令的使用占比;Ti 为第 i 种指令的运算时间。
通常加、减法指令占 50%,乘法指令占 15%,除法指令占 5%,程序控制指令占 15%,其他指令占 15%。
式中:Wi 为第 i 种指令的使用占比;Ti 为第 i 种指令的运算时间。
盈亏平衡分析
子主题
注意可变成本的计算为销售额的百分比
案例
第一题,我们需要会默写质量属性、敏感点、权衡点、风险点、非风险点、五大架构风格以及架构风格的优缺点。
第二题(UML图),我们需要辨别各种图的长相以及它们的优缺点,这里建议多查阅网上的资料,增加知识储备。
http://www.zhihu.com/tardis/bd/art/405447739
第四题(数据库设计),对数据库比较熟悉的后端同学可以秒刷,
(1)缓存穿透。大量请求访问了没有缓存的key,即大量的key在Redis里是不存在的,从而导致请求直接访问数据库,数据库压力增大。
可能的原因如下:
1)恶意攻击,造成大量访问不存在的key。例如登录时使用无效的用户名,在软考网站查询成绩时输入不存在的身份证号、准考证号。
解决方案:
①针对比较少的请求来源,主动限制其访问次数,或者拉入黑名单;
②应用程序来检查 key的合法性,提前拒绝不合法的请求;③使用布隆过滤器。
1)恶意攻击,造成大量访问不存在的key。例如登录时使用无效的用户名,在软考网站查询成绩时输入不存在的身份证号、准考证号。
解决方案:
①针对比较少的请求来源,主动限制其访问次数,或者拉入黑名单;
②应用程序来检查 key的合法性,提前拒绝不合法的请求;③使用布隆过滤器。
2)大量请求访问数据库里有但Redis没有的key。例如新业务刚刚上线,此时Redis是空的。
解决方案:
①预热 Redis,运行一个批处理脚本,将可能会大量访问的数据预先加载到 Redis,业务再“开张”:
②在最前端进行流量控制,逐步把请求释放进来。给出一段时间,让 Redis 逐步加载热数据;
③如果是在数据库里也没有的key,也需要在Redis 中设置key,使其值为 null 或空。
解决方案:
①预热 Redis,运行一个批处理脚本,将可能会大量访问的数据预先加载到 Redis,业务再“开张”:
②在最前端进行流量控制,逐步把请求释放进来。给出一段时间,让 Redis 逐步加载热数据;
③如果是在数据库里也没有的key,也需要在Redis 中设置key,使其值为 null 或空。
(2)缓存雪崩。大量请求访问到缓存中的key,这些 key 是存在的,但同时到了过期时间,从而导致请求直接访问数据库,数据库压力增大。缓存雪崩可能进而影响一系列的雪崩,影响到上下游的所有应用服务。可能的原因如下:
1)Redis 故障。比如Redis 宕机,网络出现抖动等。解决方案:
①使用主从复制提高可用性,使用cluster 集群方案降低故障时影响的范围:
②如果出现故障,则可以采取服务降级、熔断、限流等措施。
①使用主从复制提高可用性,使用cluster 集群方案降低故障时影响的范围:
②如果出现故障,则可以采取服务降级、熔断、限流等措施。
2)大量的key采用了相同的过期时间。例如在同一时刻设置了大量的key,但过期时间都是5分钟。解决方案:
过期时间加上一个随机值,使得众多key均匀过期。
分布式锁保证访问Redis的请求数
后台更新:避免竞争
双key策略:一个key有过期时间,一个key不过期,放味不过期key时触发时间更新key1和key2
过期时间加上一个随机值,使得众多key均匀过期。
分布式锁保证访问Redis的请求数
后台更新:避免竞争
双key策略:一个key有过期时间,一个key不过期,放味不过期key时触发时间更新key1和key2
(3)缓存击穿。少量热点的key缓存时间失效了,使得请求直接访问数据库。
可能的原因:热点的key设置了太短的过期时间。例如秒杀业务下的“库存数量”。解决方案:
①将key设置较长的过期时间。对于非常重要的key,则设置永久有效。但需要解决好与数据库中的 key 的一致性问题;
②使用分布式锁。如果热点key 失效了,要控制好访问后端数据库的流量。只允许一个请求去访问数据库,取出最新的key,存放到Redis,其他请求则必须
3使用二级本地缓存,将热点key缓存到本机
①将key设置较长的过期时间。对于非常重要的key,则设置永久有效。但需要解决好与数据库中的 key 的一致性问题;
②使用分布式锁。如果热点key 失效了,要控制好访问后端数据库的流量。只允许一个请求去访问数据库,取出最新的key,存放到Redis,其他请求则必须
3使用二级本地缓存,将热点key缓存到本机
论文
详细请看《系统架构设计师考试32小时通关(第二版)》的论文篇

收藏
0 条评论
下一页