软考-高级系统架构师
2025-09-13 13:39:13 0 举报
AI智能生成
软考-高级系统架构师考试是一门内容覆盖广泛的高级专业认证考试,旨在评估和认证候选人在系统架构设计、软件开发管理、信息资源规划以及相关技术领域的高级理论知识和实践能力。通过考核高级系统架构师的核心内容,考生将掌握先进的系统设计方法、系统建模技术、性能优化策略和数据安全防护等关键技能。此认证不仅是对个人技术实力的权威证明,也是信息技术行业内专业职位晋升的重要阶梯。通过备考者将获得行业认可的资格证书,极大地提升其在系统架构师领域的职业竞争力。考生应熟稔最新的信息技术趋势,如云计算、大数据、物联网以及人工智能等,以确保在高度竞争的信息化时代中脱颖而出。
作者其他创作
大纲/内容
考点分布
综合
计算机系统基础
计算机组成原理与体系结构:<font color="#e74f4c">磁盘管理 </font>0-1:0%-1.3%<br>
系统配置与性能评价:基准程序测试、计算机性能优化/性能评价、<font color="#e74f4c">计算机性能指标</font> 0-2:0%-2.7%<br>
操作系统:<font color="#e74f4c">概念、前趋图与 PV操作</font>、死锁与银行家算法,<font color="#e74f4c">段页式存储、页面置换算法、索引文件、位示图</font> 2-5:2.7%-6.7%<br>
嵌入式系统
嵌入式硬件、总线、嵌入式系统、嵌入式操作系统、微内核多核CPU、嵌入式系统开发设计<br>0-3:0%-4%<br>
计算机网络<br>
<font color="#e74f4c">网络技术、TCP/IP 协议簇、</font>网络规划与设计<br>2-3:2.7%-4%<br>
<b>数据库系统</b>
<font color="#e74f4c">数据库设计、规范化理论</font>、分布式数据库、<font color="#e74f4c">关系代数</font>、数据仓库、事务处理<br>4-5:5.3%-6.7%<br>
未来信息技术<br>
大数据、云计算、人工智能等<br>0-3:0%-4%<br>
法律法规与标准化<br>
<font color="#e74f4c">著作权保护期限、著作权法、侵权判定、商标法、商业秘密<br></font>3:4%<br>
数学与经济管理<br>
数学建模、线性规划、函数曲线<br>1-2:1.3%-2.7%<br>
系统工程与信息系统基础<br>
信息工程概念及方法、信息系统分类、信息系统战略规划电子政务、<font color="#e74f4c">企业信息化方法</font>、电子商务、<font color="#e74f4c">企业应用集成</font><br>0-6:0%-8%<br>
软件工程<br>
软件生命周期、<font color="#e74f4c">信息系统开发方法</font>、<font color="#e74f4c">开发模型</font>、逆向工程、需求工程、<font color="#e74f4c">面向对象基础</font>、UML、UML4+1视图、软件设计、设计模式[2]、业务流程设计、软件维护、<font color="#e74f4c">软件测试</font>、软件过程改进、遗留系统、软件开发环境、范围管理、配置管理、<font color="#e74f4c">进度管理</font>,<br>9-21:12%-28%
项目管理<br>
范围管理、配置管理、进度管理<br>1-4:1.3%-5.3%
软件架构设计<br>
<font color="#e74f4c">架构4+1视图</font>、构件技术、MVC模式、架构设计阶段、<font color="#e74f4c">架构设计基本概念</font>、软件架构需求、<font color="#e74f4c">ABSD</font>、软件架构文档、<font color="#e74f4c">软件架构风格选择</font>、架构模式、<font color="#e74f4c">架构评估方法</font>、<font color="#e74f4c">架构与质量属性</font>、敏感点与风险点、ADL、中间件<br>19-28:25.3%-37.3%
系统可靠性分析与设计<br>
可靠性计算、<font color="#e74f4c">可靠性分析与设计</font>、可靠性模型<br>0-3:0%-4%<br>
系统安全性与保密性设计<br>
安全政策与法律、<font color="#e74f4c">加密算法、</font>信息摘要与数字签名、<font color="#e74f4c">数字证书</font>、网络攻击、<font color="#e74f4c">网络安全协议</font><br>3-7:4%-9.3%<br>
专业英语<br>
软件架构风格、软件架构、信息系统设计、DFD<br>5:6.7%<br>
案例
需求工程:0-1<br>
软件架构:1-2<br>
数据库:0-2<br>
嵌入式:1<br>
Web应用系统开发:1<br>
其他:0-1<br>
论文
开发方法:较少考到<br>
软件架构:0-2<br>
可靠性与安全性:0-1<br>
数据库:0-1<br>
新技术:0-2<br>
答题技巧
综合
分析试题的技巧
先看清楚问题,再看选项<br>
判断题目到底考察的是<font color="#e74f4c">什么知识点</font>,排除<font color="#e74f4c">干扰项</font>
掌握答题的技巧
<br>题目往往会选择不是绝对最好或最差,选相对好的,比较稳妥的说法
当2个选项给出<font color="#e74f4c">截然相反的答案时</font>,可以断定其中<font color="#e74f4c">必有一个正确答案</font>
有些题可以选择走捷径:用<font color="#e74f4c">选项带入</font>计算的方式;<br>
案例
分析试题的技巧
建议<font color="#e74f4c">带着问题去看题干</font>;<br>
建议顺势而为去答题,根据<font color="#e74f4c">题干的倾向</font>去分析优劣以及选择的理由。
掌握答题的技巧<br>
建议不要成段答题,而是<font color="#e74f4c">分条目答题</font>,方便老师查看得分点,把自己认为对的都写上;<br>
答题时可以<font color="#e74f4c">根据分值决定条目的数量以及简略程度</font>,对于一些方法、策略等问题,可以先写名称,再简要说明,部分问题回答的时候可以捎带题干的一些内容,让答案更充实;
如果是填表形式的问答,可以结合表格已有内容去套用,尽量用<font color="#e74f4c">近似的说法去填</font>
论文
分析试题的技巧
不仅要看<font color="#e74f4c">主题</font>,也要看主题中的<font color="#e74f4c">三个小问题;</font>
分析以什么内容作为<font color="#e74f4c">核心论点</font>。
掌握答题的技巧<br>
选择自己最熟悉、<font color="#e74f4c">最有把握</font>的主题去写;
往往问题中有具体阐述、<font color="#e74f4c">详细阐述的</font>是需要<font color="#e74f4c">主要论述</font>的内容;
不要遗漏对<font color="#e74f4c">每个小问题的回应</font>;
大纲
综合
1、<font color="#e74f4c">计算机系统</font>基本知识<br> 软硬件、语言、多媒体:综合2~6 分<br> 嵌入式系统:综合5分、案例<br> 计算机网络:综合5分<br> 系统工程、系统性能:综合2~5分<br>
1.1 计算机系统<b>概述</b>
计算机系统的定义、组成和分类
计算机系统(Computer System)是指用于<b><font color="#e74f4c">数据管理</font></b>的计算机<b><font color="#e74f4c">硬件</font></b>、<b><font color="#e74f4c">软件</font></b>及<b><font color="#e74f4c">网络</font></b>组成的系统。<br>计算机系统可划分为<b>硬件(子系统)</b>和<b>软件(子系统)</b>两部分
1.2 计算机<b>硬件</b>
1.2.1 计算机硬件组成
<b>冯·诺依曼:<font color="#e74f4c">运算器</font>、<font color="#e74f4c">控制器</font>、<font color="#e74f4c">存储器</font>、<font color="#e74f4c">输入设备</font>和<font color="#e74f4c">输出设备</font></b><br>
<b><font color="#e74f4c">哈佛</font>体系结构:<font color="#e74f4c">DSP</font><font color="#000000">数字信号</font>处理器</b><br>
1.2.2 处理器<br>
<b>典型的计算机体系结构</b>
中央处理器CPU、图像处理器GPU、信号处理器DSP、现场可编程逻辑门阵列FPGA
AI芯片的技术架构包括:<font color="#e74f4c">GPU、FPGA、ASIC</font><br>
<b>指令集</b>:<b><font color="#e74f4c">CISC</font>复杂指令集和<font color="#e74f4c">RISC</font>精简指令集</b><br>
CISC兼容性强,指令繁多、长度可变,由<font color="#e74f4c">微程序</font>实现。
RISC指令少,使用频率接近,主要依靠<font color="#e74f4c">硬件实现</font>(通用寄存器、硬布线逻辑控制)。
国产处理器芯片结构
CPU中的运算器、控制器、寄存器组、图形处理器GPU、校验码
CPU访问内存通常是同步方式,CPU与I/O接口交换信息通常是同步方式,CPU与PCI总线交换信息通常是同步方式,<font color="#e74f4c">I/O接口与打印机交换信息则通常采用基于缓存池的<b>异步方式</b>。</font>
流水线<font color="#e74f4c">执行周期</font>=<font color="#e74f4c">最慢</font>那个指令执行时间;<br><br>流水线的<font color="#e74f4c">吞吐率</font>=<font color="#e74f4c">最慢</font>那个指令执行时间 <font color="#e74f4c">的倒数。</font><br><br>流水线<font color="#e74f4c">执行时间</font>=<font color="#e74f4c">所有指令顺序执行时间</font>+(<font color="#e74f4c">指令总数-1</font>)* 流水线<font color="#e74f4c">执行周期</font>;<br>
CPU的工作频率(主频)包括两个部分:<font color="#e74f4c">外频与倍频</font>,两者的<font color="#e74f4c">乘积</font>就是主频
计算机执行程序时,在一个指令周期的过程中,为了能够从内存中读指令操作码,首先是将<font color="#e74f4c">程序计数器(PC)</font>的内容送到地址总线上。<br>
<font color="#e74f4c">微程序</font>一般由<font color="#e74f4c">硬件</font>执行<br>
1.2.3 存储器<br>
<font color="#e74f4c"><b>片上缓存</b>、<b>片外缓存</b>、<b>主存(DRAM)</b>和<b>外存</b></font>等<br>
<b>固态硬盘</b>存储介质是<font color="#e74f4c">闪存芯片</font>,比机械硬盘<font color="#e74f4c">功耗低</font>
存储器中数据常用的存取方式有<font color="#e74f4c">顺序存取</font>、<font color="#e74f4c">直接存取</font>、<font color="#e74f4c">随机存取</font>和<font color="#e74f4c">相联存取(Cache)</font>等4种<br>
RAID<font color="#e74f4c">5</font>的容量是<font color="#e74f4c">(N-1)*最低容量</font>。
RAID<font color="#e74f4c">6</font>的容量是<font color="#e74f4c">(N-2)*最低容量</font>。
1.2.4 总线<br>
<b>按位置分:<font color="#e74f4c">内</font>总线</b>、<b><font color="#e74f4c">系统</font>总线</b>和<b><font color="#e74f4c">外部</font>总线</b>等<br>
内部总线:<b>内部芯片</b>级别的总线,<font color="#000000"><b>芯片</b></font>与<b>处理器</b>之间通信的总线。
系统总线:<b>板级</b>的总线,数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCl总线。<br>
外部总线:<b>设备</b>一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。
<font color="#e74f4c">并行</font>总线:<font color="#e74f4c">系统</font>总线(计算机<font color="#e74f4c">各部件</font>)、<font color="#e74f4c">多条双向</font>数据线,有传输延迟,适合<font color="#e74f4c">近距离</font>连接<br>
<font color="#e74f4c">串行</font>总线:<font color="#e74f4c">通信</font>总线(计算机之间或计算机与其他<font color="#e74f4c">系统间</font>)一条双向数据线或两条单向数据线,速率不高,但适合<font color="#e74f4c">长距离</font>连接,<br>
串行总线传输的波特率在使用中<font color="#e74f4c">可以改变</font>
串行总线的数据发送和接收可以使用多种方式,<font color="#e74f4c">程序查询方式</font>和<font color="#e74f4c">中断方式</font>都可
挂接在总线上的多个部件只能<font color="#e74f4c">分时向总线发送</font><font color="#000000">数据</font>,但可<font color="#e74f4c">同时从总线接收</font>数据
<font color="#e74f4c">数据总线宽度越大</font>,单位时间内能进出CPU的数据就越多,系统的<font color="#e74f4c">运算速度越快</font>。
总线的时钟周期=时钟频率的倒数;<br>总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。<br>
1.2.5 接口
显示、音频、网络和 SATA 等<br>
有输入输出接口如 <b>HDMI、SATA、RS-232</b> 等
网络接口如 <b>RJ45、FC</b> 等
<b>A/D </b>转换接口
1.2.6 外部设备
鼠标、显示器、扫描仪和摄像头等
<b>四大技术:<font color="#e74f4c">程序查询</font>方式、<font color="#e74f4c">程序中断</font>方式、<font color="#e74f4c">DMA</font>方式、<font color="#e74f4c">通道</font>方式</b><br>
1.3 计算机<b>软件</b><br>
1.3.1 计算机软件概述<br>
计算机软件的定义和作用
计算机软件是指计算机系统中的<b>程序及其文档</b>,是计算任务的<b>处理对象和处理规则</b>的描述。软<br>件系统是指在计算机硬件系统上运行的<b><font color="#e74f4c">程序</font></b>、相关的<b><font color="#e74f4c">文档资料</font></b>和<b><font color="#e74f4c">数据的集合</font></b>。
计算机软件的分类<br>
<b>系统软件</b>。为整个计算机系统配置的不依赖特定应用领域的<font color="#e74f4c">通用软件</font>,对计算机系统的<b>硬件和软件</b>资源进行控制和管理,并提供<b>运行服务支持</b>。<br>
<b>应用软件</b>。是指为某类应用需要或解决某个特定问题而设计的软件,常与<font color="#e74f4c">具体领域</font>相关联,如教学软件
1.3.2·操作系统<br>
操作系统的的组成、作用和类型<br>
操作系统特点
操作系统具有<font color="#e74f4c">并发性</font>、<font color="#e74f4c">共享性</font>、<font color="#e74f4c">虚拟性</font>和<font color="#e74f4c">不确定性</font>的特征。
批处理操作系统:根据同时执行的作业数又分为单道批处理和多道批处理。一个作业由<font color="#e74f4c">用户程序</font>、<font color="#e74f4c">数据</font>和<font color="#e74f4c">作业说明书</font>(作业控制语言)3 个部分组成。<br>
<font color="#e74f4c">分时</font>系统操作系统,将 CPU 的工作时间划分为许多很短的时间片,每个时间片分别为一个终端的用户提供服务或者执行一个作业,主要有4个特点:<font color="#e74f4c">多路</font><font color="#000000">性</font>、<font color="#e74f4c">独立</font>性、<font color="#e74f4c">交互</font>性和<font color="#e74f4c">及时</font>性。
<font color="#e74f4c">实时</font>操作系统:对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内<font color="#e74f4c">快速做出反应</font>,对<font color="#e74f4c">可靠性要求很高</font>,并且<font color="#e74f4c">不强制要求用户交互</font><br>
<b>网络操作系统:</b>使联网计算机能有效地<b>共享网络资源</b>,为网络用户提供各种服务和接口。特征包括【<b>硬件独立性</b>】和【<b>多用户支持</b>】等。<br>
<b>分布式操作系统:</b>指为分布式计算机系统配置的操作系统。分布式操作系统是网络操作系统的更高级形式,它保持网络系统所拥有的全部功能,同时又有<b>透明性、可靠性和高性能</b>等特性<br>
嵌入式操作系统:运行在嵌入式智能设备环境中,对整个智能硬件以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制,特点是【<font color="#e74f4c">微型化</font>】、【<font color="#e74f4c">可定制</font>】、【<font color="#e74f4c">可靠性</font>】和【<font color="#e74f4c">易移植性</font>】。常采用【<font color="#e74f4c">硬件抽象层</font>】(Hardware Abstraction Layer,HAL)和【<font color="#e74f4c">板级支撑包</font>】(Board Support Package,BSP)来<font color="#e74f4c">提高易移植性</font>,常见的嵌入式实时操作系统有 VxWorks、μClinux、PalmOS、WindowsCE、μC/OS-II 和 eCos 等。<br>
中断分类
<font color="#e74f4c">信号</font>中断通常是由<font color="#e74f4c">外部设备</font>或<font color="#e74f4c">定时器</font>发出的
<font color="#e74f4c">外部</font>中断由<font color="#e74f4c">硬件设备</font>(如键盘、鼠标、定时器等)触发
<font color="#e74f4c">溢出</font>中断发生在程序执行过程中产生<font color="#e74f4c">算术溢出</font>时,而非主动系统调用。<br>
<font color="#e74f4c">访管中断</font>是应用程序使用<font color="#e74f4c">特权指令</font>触发的,目的是请求操作<font color="#e74f4c">系统服务</font>(即系统调用)。
1.3.3数据库系统<br>
数据库的定义、作用和类型
数据库管理系统的基本原理
<b>关系型</b>数据库系统(数据模型、关系描述和数据库设计)<br>
<b>分布式</b>数据库系统(结构和应用)
数据库管理系统(定义、特点和产品(Oraclc、IBM DB2、Sybase 等))<br>
数据库是指长期存储在计算机内、有<font color="#e74f4c">组织的</font>、<font color="#e74f4c">统一管理</font>的相关数据的集合。<br>数据是按一定格式存放的,具有<font color="#e74f4c">较小的冗余度</font>、<font color="#e74f4c">较高的数据独立性</font>和<font color="#e74f4c">易扩展性</font>,可<font color="#e74f4c">为多个用户共享</font>。<br>
<b>分布式据库系统(Distributed DataBase System,DDBS)是针对地理上分散,而管理上又需要不同程度集中的需求而提出的一种数据管理信息系统。满足<font color="#e74f4c">分布性</font>、<font color="#e74f4c">逻辑相关性</font>、<font color="#e74f4c">场地透明性</font>和<font color="#e74f4c">场地自治性</font>的数据库系统被称为完全分布式数据库系统。<br><br>分布式数据库系统的特点是<font color="#e74f4c">数据的集中控制性</font>、<font color="#e74f4c">数据独立性</font>、<font color="#e74f4c">数据冗余可控性</font>、<font color="#e74f4c">场地自治性</font>和<font color="#e74f4c">存取的有效性</font>。</b><br>
1.3.4 文件系统
文件系统的定义、作用和类型·
按性质和用途分类:可将文件分为<b>系统</b>文件、<b>库</b>文件和<b>用户</b>文件。<br>按信息保存期限分类:可将文件分为<b>临时</b>文件、<b>档案</b>文件和<b>永久</b>文件。<br>按保护方式分类:可将文件分为<b>只读</b>文件、<b>读/写</b>文件、<b>可执行</b>文件和<b>不保护</b>文件。<br>UNIX 系统将文件分为:<b>普通</b>文件、<b>目录</b>文件和<b>设备</b>文件(特殊文件)。<br>
文件系统的组成和基本原理
文件系统的存取方式和存储管理
文件的存取方法:通常有<font color="#e74f4c">顺序存取</font>和<font color="#e74f4c">随机存取</font>两种方法。<br>文件的<font color="#e74f4c">组织方法</font>:有<font color="#e74f4c">连续</font><font color="#000000">结构</font>、<font color="#e74f4c">链接</font>结构和<font color="#e74f4c">索引</font>结构,还有<font color="#e74f4c">多重索引</font>方式。<br>空间管理的数据结构通常称为<font color="#e74f4c">磁盘分配表</font>(Disk Allocation Table),有<font color="#e74f4c">空闲区表</font>、<font color="#e74f4c">位示图</font>和<font color="#e74f4c">空闲块链</font>3种
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种。<br>(1)<font color="#e74f4c">顺序</font>存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的<font color="#e74f4c">线性顺序</font>进行。<font color="#e74f4c">磁带</font>存储器采用顺序存取的方式。<br>(2)<font color="#e74f4c">直接</font>存取:与顺序存取相似,直接存取也使用一个<font color="#e74f4c">共享的读写装置</font>对所有的数据进行访问。但是,<font color="#e74f4c">每个数据块都拥有唯一的地址标识</font>,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。<font color="#e74f4c">磁盘</font>存储器采用直接存取的方式。<br>(3)<font color="#e74f4c">随机</font>存取:存储器的<font color="#e74f4c">每一个可寻址单元</font>都具有<font color="#e74f4c">自己唯一的地址</font>和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。<font color="#e74f4c">主存储器</font>采用随机存取的方式。<br>(4)<font color="#e74f4c">相联</font>存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是<font color="#e74f4c">取决于其</font>【<font color="#e74f4c">内容</font>】<font color="#e74f4c">而不是其地址</font>。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,<font color="#e74f4c">Cache</font>采取相联存取的方式。<br>
1.3.5 网络协议
<font color="#e74f4c">局域</font>网协议(LAN)
<font color="#e74f4c">广域</font>网协议(WAN)
<font color="#e74f4c">无线</font>网协议
<font color="#e74f4c">移动</font>网协议
1.3.6 中间件
中间件的定义、作用和类型·
负责客户机与服务器之间的<font color="#e74f4c">连接和通信</font>,客户机与应用层之间的高效率通信机制。
提供应用层不同服务之间的<font color="#e74f4c">互操作</font>机制,应用层与数据库之间的<font color="#e74f4c">连接和控制</font>机制。
提供一个多层架构的应用<font color="#e74f4c">开发和运行</font>的平台,一个应用开发框架,支持模块化的应用开发。
屏蔽<font color="#e74f4c">硬件、操作系统、网络和数据库</font>的差异。
提供应用的<font color="#e74f4c">负载均衡和高可用性</font>、安全机制与管理功能,以及<font color="#e74f4c">交易管理机制</font>,保证<font color="#e74f4c">交易的一致性</font>。
提供一组<font color="#e74f4c">通用的服务</font>去执行不同的功能,避免重复的工作和使应用之间可以协作。
中间件的典型软件产品(IBM MQSeries、BEA Tuxedo )
(1)通信处理(<b>消息</b>)中间件,保证系统能在不同平台之间通信,例如 <b>MQSeries</b>。<br>(2)事务处理(<b>交易</b>)中间件,实现协调处理顺序、监视和调度、负载均衡等功能,例如<b>Tuxedo</b>。<br>(3)数据存取管理中间件,为不同种类数据的读写和加解密提供统一的接口。<br>(4)Web 服务器中间件,提供 Web 程序执行的运行时容器,例如 Tomcat、JBOSS 等。<br>(5)安全中间件,用中间件屏蔽操作系统的缺陷,提升安全等级。<br>(6)跨平台和架构的中间件,用于开发大型应用软件。<br>(7)专用平台中间件,为解决特定应用领域的开发设计问题提供构件库。<br>(8)网络中间件,包括网管工具、接入工具等。
1.3.7 软件构件
软件构件的定义和作用<br>
构件的两个最重要的特性是<font color="#e74f4c">自包容</font>与<font color="#e74f4c">可重用</font>,利用软件构件进行搭积木式地开发。<br>优点:<font color="#e74f4c">易扩展</font>、<font color="#e74f4c">可重用</font>、<font color="#e74f4c">并行开发</font>。<br>缺点:需要经验丰富的设计师、快速开发与质量属性之间需要妥协、构件质量影响软件整体的质量。<br>
软件构件是—个<font color="#e74f4c">独立可部署的软件单元</font>,<br>—个构件<font color="#e74f4c">不能有任何(外部的)可见状态</font>,但是可以<font color="#e74f4c">利用容器管理自身对外的可见状态</font><br>
软件构件的组装模型
商用构件标准规范(CORBA、J2EE和DNA2000等)<br>
(1)OMG 的公共对象请求代理架构(Common Object Request Broker Architecture,CORBA)<br>是一个纯粹的规范而不是产品,主要分为 3 个层次:对象请求代理(Object Request Broker,ORB)、<br>公共对象服务和公共设施。采用 IDL 定义接口,并易于转化为具体语言实现。<br>(2)SUN 的 J2EE,定义了完整的基于 Java 语言开发面向企业分布的应用规范,其中 EJB 是<br>J2EE 的构件标准,EJB 中的构件称为 Bean,可以分为<font color="#e74f4c">实体Bean、会话Bean</font>和<font color="#e74f4c">消息驱动Bean</font>。<br>(3)Microsoft的DNA2000,采用 DCOM/COM/COM+作为标准的构件。<br>
1.3.8 应用软件
<b>通用</b>软件的定义、范围和类别
<b>专用</b>软件的定义、范围和类别
1.4 嵌入式系统及软件<br>
1.4.1 嵌入式系统的组成及特点
嵌入式系统的定义、组成和用途
嵌入式系统(Embedded System)是以<b>特定应用</b>为中心、以计算机技术为基础,并将<b>可配置</b>与<b>可裁剪</b>的软、硬件集成于一体的专用计算机系统。
组成结构
<b>嵌入式处理器</b>,除满足<font color="#e74f4c">低功耗</font>、<font color="#e74f4c">体积小</font>等需求外,工艺可分为<b><font color="#e74f4c">民用</font>、<font color="#e74f4c">工业</font>和<font color="#e74f4c">军用</font></b>等三个档次,民用级器件的工作温度范围是 0~70℃、工业级的是−40~85℃、军用级的是−55~150℃。其应用环境常常非常恶劣,比如有高温、寒冷、电磁、震动、烟尘等环境因素。<br>
<b>支撑硬件</b>,指除处理器以外的其他硬件,如存储器、定时器、总线等。<br>
<b>嵌入式操作系统</b>,与通用操作系统不同,嵌入式操作系统应具备<font color="#e74f4c"><b>实时性</b></font>、<font color="#e74f4c"><b>可裁剪</b>性</font>和<font color="#e74f4c"><b>安全</b>性</font>等特征。<br>
<b>支撑软件</b>,其中的公共服务通常运行在操作系统之上,以<font color="#e74f4c">库的方式</font>被应用软件所引用。<br>
<b>应用软件</b>,是指为完成嵌入式系统的某一<font color="#e74f4c">专用目标</font>所开发的软件。<br>
特点
(1)专用性强,常常面向特定应用需求,配备多种传感器。
(2)技术融合,将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体
应用紧密结合难以拆分。
(3)软硬一体软件为主,在通用的嵌入式系统版本基础上裁剪冗余,高效设计。
(4)资源受限,由于低功耗、体积小和集成度高等要求,系统的资源非常少。
(5)程序代码固化在 ROM 中,以提高执行速度和系统可靠性。
(6)需专门开发工具和环境,见 2.3 节。
(7)体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强。
(8)对安全性和可靠性的要求高
嵌入式处理器及支撑硬件、环境要求及特点
硬件组成<br>
嵌入式微处理器<br>
(1)<b>微处理器(Microprocessor Unit,<font color="#e74f4c">MPU</font></b>):<b>微处理器+专门设计的电路板</b>,集成度低、可靠性高,主要有:Am186/88、386EX、SC-400、PowerPC、68000、MIPS、ARM 系列等。<br>(2)<b>微控制器(Microcontroller Unit,<font color="#e74f4c">MCU</font>)</b>:又称单片机,把<b>核心存储器和部分外设</b>封装在片内。优点是单片化、体积小、功耗和成本下降,可靠性提高。包括 8501,P5IXA,MCS-251,MCS-96/196/296,C166/167,MC68HC05/11/12/16,68300 和数目众多的 ARM 系列。<br>(3)<b>数字信号处理器(Digital Signal Processing,<font color="#e74f4c">DSP</font></b>):采用<b>哈佛结构</b>,对系统结构和指令进行了特殊设计,适合执行大量数据处理。包括 TMS320 系列(含 C2000、C5000、C6000、C8000系列)、DSP56000 系列、实时 DSP 处理器等。<br>(4)<b>图形处理器(Graphics Processing Unit,<font color="#e74f4c">GPU</font>)</b>:与 CPU 相比大幅加强了<b>浮点运算能</b>力和<b>多核并行</b>计算能力,因此常用于 AI 技术的深度学习的数据运算。<br>(5)<b><font color="#e74f4c">片上系统</font>(System on Chip,<font color="#e74f4c">SoC</font>)</b>:由多个具有特定功能的集成电路组合在一个芯片上形成的<b>系统或产品</b>,其中包含完整的硬件系统,如处理器、IP(Intellectual Property)核、存储器等及其承载的嵌入式软件,如操作系统和定制的用户软件。<br>
存储器
<b>随机存取存储器(Random Access Memory,RAM)</b>。工作需要<font color="#e74f4c">持续电力提供</font>,可<font color="#e74f4c">随机读写</font>。<br>1)动态随机存取存储器(Dynamic RAM,DRAM),采用<font color="#e74f4c">电容存</font>储信息,优点是集成度高、容量大、成本低,缺点是访问速度较慢、需要定期刷新。常作<font color="#e74f4c">主存DRAM</font>。<br>2)静态随机存取存储器(Static RAM,SRAM),采用多个<font color="#e74f4c">晶体管自锁</font>的方式保存状态,优点是访问速度快、不需要刷新,缺点是集成度低、容量小、成本高。常用作<font color="#e74f4c">高速缓存CACHE</font>。<br>
<b>只读存储器(Read Only Memory,ROM)</b>,存储的数据<font color="#e74f4c">不会因掉电而丢失</font>,<font color="#e74f4c">读取的速度比RAM快</font>,常见的有以下几种:<br>1)掩膜型只读存储器(Mask Programmed ROM,MROM),优点是通过<font color="#e74f4c">掩膜</font>大批量制造、成本低,缺点是同批数据全部一致且不可修改,只<font color="#e74f4c">适合大批量生产</font>。<br>2)可编程只读存储器(Programmable ROM,PROM),可以用专用编程设备<font color="#e74f4c">一次性烧录</font>数据,<font color="#e74f4c">适合少量制造</font>。<br>3)可擦可编程只读存储器(Erasable Programmable ROM,EPROM),优点是写入的数据可以通过<font color="#e74f4c">紫外线擦除重写</font><br>4)电可擦可编程只读存储器(Electrically Erasable Programmable ROM,EEPROM),优点是写入的数据可以通过<font color="#e74f4c">电压来清除</font>,但是<font color="#e74f4c">清除的速度很慢</font>。<br>5)快闪存储器(Flash Memory),优点是可以<font color="#e74f4c">联机擦写</font>数据且擦写的次数多、速度快,缺点是<font color="#e74f4c">读取的速度慢</font>(相对其他 ROM 的速度而言)。<br>
存储速度从快到慢分别是:寄存器组、Cache、内存、Flash。<br>
主存地址到Cache地址的变换由<font color="#e74f4c">硬件</font>完成,以<font color="#e74f4c">提高速度</font>
总线逻辑
传输信息种类分类
<b>数据总线</b>,用于传送需要处理或者需要存储的<font color="#e74f4c">数据</font>。
<b>地址总线</b>,用于指定在 RAM 之中存储的<font color="#e74f4c">数据的地址</font>。
<b>控制总线</b>,将微处理器<font color="#e74f4c">控制单元的信号</font>传送到周边设备
根据连接部件分类
<b><font color="#e74f4c">片内</font>总线</b>,连接<font color="#e74f4c">芯片内部</font>各元件。
<b><font color="#e74f4c">系统</font>总线或板级总线</b>,连接<font color="#e74f4c">计算机系统的核心</font>组件。
<b><font color="#e74f4c">局部</font>总线</b>,连接<font color="#e74f4c">局部少数</font>组件。
<b><font color="#e74f4c">通信</font>总线</b>,主机连接<font color="#e74f4c">外设</font>的总线。
数据传输的方向分类
<b><font color="#e74f4c">单工</font>总线</b>只能从一端向另一端传输而<font color="#e74f4c">不能反向</font>;
<b><font color="#e74f4c">双工</font>总线</b>能在两个方向传输。双工总线又分为半双工总线和全双工总线。<br><b> 半双工总线</b>只能<font color="#e74f4c">轮流</font>向两个方向传输;<br><b> 全双工总线</b>可以<font color="#e74f4c">同时</font>在两个方向传输。<br>
使用的信号类型分类
<b>并行总线</b>包含<font color="#e74f4c">多位</font>传输线,在同一时刻可以传输多位数据,但一致性要求高,传输<font color="#e74f4c">距离较近</font>;<br>
<b>串行总线</b>只使用<font color="#e74f4c">一位</font>传输线,同一时刻只传输一位数据,但<font color="#e74f4c">距离可以较远</font>。
定时/计数器
看门狗电路
嵌入式系统必须具备的一种<font color="#e74f4c">系统恢复</font>能力,可防止程序出错或者死锁
I/O接口和外部设备
嵌入式软件集成开发环境
1.4.2 嵌入式系统分类
用途分类
嵌入式<font color="#e74f4c">实时</font>(强实时、弱实时)系统:指能够在<font color="#e74f4c">规定的时间内</font>完成系统功能和做出响应的系统<br>
嵌入式<font color="#e74f4c">非实时</font>系统
安全性分类
安全攸关(Safety-Critical 或 Life-Critical):指其不正确的功能或者失效会<font color="#e74f4c">导致人员伤亡</font>、<font color="#e74f4c">财产损失</font>等严重后果的计算机系统<br>
非安全攸关
1.4.3 嵌入式软件的组成及特点
嵌入式软件的架构和特点
典型架构
<font color="#e74f4c">层次化</font>模式架构<br>
<font color="#e74f4c">递归</font>模式架构
特点
(1)<font color="#e74f4c">可剪裁</font>性:设计方法包括静态编译、动态库和控制函数流程实现功能控制等。<br>(2)<font color="#e74f4c">可配置</font>性:设计方法包括数据驱动、静态编译和配置表等。<br>(3)<font color="#e74f4c">强实时</font>性:设计方法包括表驱动、配置、静/动态结合、汇编语言等。<br>(4)<font color="#e74f4c">安全性</font>(Safety):设计方法包括编码标准、安全保障机制、FMECA(故障模式、影响及危害性分析)。<br>(5)<font color="#e74f4c">可靠</font>性:设计方法包括容错技术、余度技术和鲁棒性设计等。<br>(6)<font color="#e74f4c">高确定</font>性:设计方法包括静态分配资源、越界检查、状态机、静态任务调度等。<br>
嵌入式软件开发与传统软件开发方法的差异
综上所述,嵌入式软件的开发也与传统的软件开发方法差异较大。<br>在嵌入式系统设计时,要进行<font color="#e74f4c">低功耗设计</font>。主要技术有<font color="#e74f4c">编译优化</font><font color="#000000">技术</font>、<font color="#e74f4c">软硬件协同</font>设计、<font color="#e74f4c">算法优化</font>。<br>
低功耗设计可以从以下方面进行<br>(1)<font color="#e74f4c">软硬件协同</font>设计,即软件的设计要与硬件的匹配,考虑硬件因素。<br>(2)<font color="#e74f4c">编译优化</font>,采用低功耗优化的编译技术。<br>(3)减少系统的持续运行时间,可从<font color="#e74f4c">算法</font>角度进行优化。<br>(4)<font color="#e74f4c">用“中断”代替“查询</font>”。<br>(5)进行<font color="#e74f4c">电源的有效管理</font>。<br>
在嵌入式系统开发中,由于嵌入式设备不具备足够的处理器能力和存储空间,程序<font color="#e74f4c">开发一般用 PC(宿主机)</font>来完成,然后将可执行文件下载到<font color="#e74f4c">嵌入式系统(目标机)</font>中运行。<br>当宿主机与目标机的机器指令不同时,就需要<font color="#e74f4c">交叉工具链</font>(指<font color="#e74f4c">编译、汇编、链接</font>等一整套工具)。
1.4.4 安全攸关软件的安全性设计<br>
安全攸关软件的定义和作用
<font color="#e74f4c">IEEE</font> 定义安全攸关软件是“用于一个系统中,可能导致不可接受的风险的软件”。
安全性设计方法:<font color="#e74f4c">DO-178</font>目的、安全等级划分和生命周期等<br>
该标准的目的是为制造机载系统和设备的机载软件提供指导,使其能够提供在满足符合适航要<br>求的安全性水平下完成预期功能。
DO-178B标准将软件生命周期分为“<font color="#e74f4c">软件计划</font><font color="#000000">过程</font>”“<font color="#e74f4c">软件开发</font><font color="#000000">过程</font>”和“<font color="#e74f4c">软件综合</font>过程”,<br> 软件开发过程细分为软件<font color="#e74f4c">需求</font>过程、软件<font color="#e74f4c">设计</font>过程、软件<font color="#e74f4c">编码</font>过程和<font color="#e74f4c">集成</font>过程 4 个子过程;<br> 软件综合过程细分为软件<font color="#e74f4c">验证</font>过程、软件<font color="#e74f4c">配置管理</font>过程、软件<font color="#e74f4c">质量保证</font>过程、<font color="#e74f4c">审定联络</font>过程 4 个子过程。<br>
安全等级:<font color="#e74f4c">灾难</font>级(A)、<font color="#e74f4c">危害</font>级(B)、<font color="#e74f4c">严重</font>级(C)、<font color="#e74f4c">不严重</font>级(D)和<font color="#e74f4c">没有影响</font>级(E)。<br>
1.5 计算机网络<br>
1.5.1 网络的基本概念
计算机网络发展的四个阶段·
<b>基本功能</b>:<b>数据通信、资源共享、管理集中化、分布式处理和负荷均衡</b><br>
<font color="#e74f4c">性能</font>指标:从<font color="#e74f4c">速率</font>、<font color="#e74f4c">带宽</font>、<font color="#e74f4c">吞吐量</font>和<font color="#e74f4c">时延</font>等不同方面来度量计算机网络的性能<br>
非性能指标:从费用、质量、标准化、可靠性、可扩展性、可升级性、易管理性和可维护性等来度量。
1.5.2 通信技术
<b>数据与信道</b>:在通信中的数据包括<font color="#e74f4c">模拟信号</font>和<font color="#e74f4c">数字信号</font>,通过<font color="#e74f4c">信道</font>来传输,信息传输就是<font color="#e74f4c">信源和信宿</font>通过信道收发信息的过程。信道可分为逻辑信道和物理信道。逻辑信道是指在数据发送端和接收端之间存在的一条虚拟线路,可以是有连接的或无连接的,以物理信道为载体。信号在信源端和信宿端都需要经过信号变换,中间经过<font color="#e74f4c"><b>编码、交织、调制和解码</b></font>等过程。<br>
<b><font color="#e74f4c">复用</font>技术</b>:是指在<font color="#e74f4c">一条信道上同时传输多路数据</font>的技术,如 TDM 时分复用、FDM 频分复用和 CDM 码分复用等。即一条路上行驶多辆货车。<br>
<b><font color="#e74f4c">多址</font>技术</b>:是指在<font color="#e74f4c">一条线上同时传输多个用户数据</font>的技术,在接收端把多个用户的数据分离,如TDMA 时分多址、FDMA 频分多址和 CDMA 码分多址等。即一辆车上的货物属于不同用户。<br>
<b>5G通信网络:</b>作为新一代的移动通信技术,网络结构、网络能力和应用场景等都与过去有很大不同,具有高速率、低时延、接入用户数高等优点。<br>
1.5.3 网络技术
<b>局域网(LAN):</b>是指在有限地理范围内将若干计算机通过传输介质互联成的封闭型的计算机网络。局域网有<font color="#e74f4c"><b>总线型、星型、树型、环型、网状</b></font>五种拓扑结构<br>
<b>以太网(Ethernet):</b>是一种计算机<font color="#e74f4c">局域网组网</font>技术,由 <font color="#e74f4c">IEEE802.3</font> 定义。以太网数据帧的<font color="#000000">最小</font>长度必须不小于 <b><font color="#e74f4c">64</font></b> 字节,最大长度一般<b><font color="#e74f4c">1518</font></b>字节。设置最小帧长是为了避免冲突,最小帧长是根据网络中<b>检测<font color="#e74f4c">冲突的最长</font>时间</b>来定的。<br>
<b>无线局域网(WLAN)</b>:利用无线技术在<font color="#e74f4c">空中</font>传输<font color="#e74f4c">数据</font>、<font color="#e74f4c">话音</font>和<font color="#e74f4c">视频</font>信号。<br><b>WLAN 采用<font color="#e74f4c"> IEEE 802.11 </font>标准,有 <font color="#e74f4c">a、b、g、n、ac</font> 等子标准,802.11n传输速率可达 200Mb/s,802.11ac 则可达 1Gb/s。</b><br><b>WLAN 拓扑结构有<font color="#e74f4c">点对点型</font>、<font color="#e74f4c">Hub型</font>和<font color="#e74f4c">完全分布型</font>。点对点型用于<font color="#e74f4c">网络互联和延长</font>;HUB型用于<font color="#e74f4c">终端接入</font>;完全分布型则处于<font color="#e74f4c">理论探讨</font>阶段无具体应用。</b><br>
<b>广域网(WAN)</b>:是一种将分布于更广区域的计算机设备联接起来的网络,需要使用<font color="#e74f4c">路由器和网关</font>设备。<br><b>广域网由<font color="#e74f4c">通信</font><font color="#000000">子网</font>与<font color="#e74f4c">资源</font><font color="#000000">子网</font>组成</b>。<br><b>广域网可以分为<font color="#e74f4c">公共传输网络</font>、<font color="#e74f4c">专用传输网络</font>和<font color="#e74f4c">无线传输网络</font>3类。<br>广域网相关技术有<font color="#e74f4c">同步光网络(SONET)</font>、<font color="#e74f4c">同步数字体系(SDH)</font>、<font color="#e74f4c">数字数据网(DDN)</font>、<font color="#e74f4c">帧中继(FR)</font>和<font color="#e74f4c">异步传输技术(ATM)</font></b><br>
城域网(MAN)。是在<font color="#e74f4c">单个城市</font>范围内所建立的计算机通信网,采用 IEEE 802.6 标准。通常分为 3 个层次:<font color="#e74f4c">核心</font>层、<font color="#e74f4c">汇聚</font>层和<font color="#e74f4c">接入</font>层。
移动通信网。其发展经历了<font color="#e74f4c">1G模拟</font>信号传输、<font color="#e74f4c">2G数字</font>通信技术、<font color="#e74f4c">3G扩展</font>频谱、<font color="#e74f4c">4G快速</font>发展繁荣、<font color="#e74f4c">5G多业务</font>、多技术融合等5代。<br>5G 网络的主要特征为<font color="#e74f4c">服务化架构</font>和<font color="#e74f4c">网络切片</font>。<br>
服务化架构(Service-Based Architecture,SBA)可以实现网络功能的灵活定制和按需组合,以及软件快速迭代和升级。<br>网络切片技术可以在单个物理网络中切分出多个分离的逻辑网络用于不同业务。5G 还引入了基于灵活以太网(Flexible Ethernet,FlexE)的硬切片技术。
1.5.4 组网技术<br>
基本网络设备<br>
<font color="#e74f4c">网络</font>层:<font color="#e74f4c">路由器</font>Router<font color="#e74f4c">、防火墙</font>Firewall<br>
<font color="#e74f4c">数据链路</font>层:<font color="#e74f4c">网桥</font>Bridge、<font color="#e74f4c">交换机</font>Switcher<br>
<font color="#e74f4c">物理</font>层:<font color="#e74f4c">集线器</font>Hub、<font color="#e74f4c">中继器</font>Repeater<br>
交换技术、路由技术及相关协议
<b>交换机Switcher</b>功能包括<font color="#e74f4c">集线</font>功能、<font color="#e74f4c">中继</font>功能、<font color="#e74f4c">桥接</font>功能、<font color="#e74f4c"><b>隔离冲突域</b></font>功能。<br>
交换机协议有:<br>(1)<font color="#e74f4c">生成树协议(STP)</font>,可以很好地解决<font color="#e74f4c">链路环路</font>问题。<br>(2)<font color="#e74f4c">链路聚合</font>协议,可以提升与邻接交换设备之间的端口带宽和提高链路<font color="#e74f4c">可靠性</font>。<br>
<b>路由器(Router)</b>提供<font color="#e74f4c">路由</font>功能,包括<font color="#e74f4c">异种网络互连</font>、<font color="#e74f4c">子网协议转换</font>、<font color="#e74f4c">数据路由</font>、<font color="#e74f4c">速率适<br>配</font>、<font color="#e74f4c">隔离网络</font>、<font color="#e74f4c">报文分片和重组</font>、<font color="#e74f4c">备份和流量控制</font>。<br>
路由器协议主要有:<br>(1)<font color="#e74f4c">内部网关协议</font>(Interior Gateway Protocol,IGP):指在一个<font color="#e74f4c">自治系统(AutonomousSystem,AS)内</font>运行的路由协议。<br>(2)<font color="#e74f4c">外部网关协议</font>(Exterior Gateway Protocol,EGP):指在 <font color="#e74f4c">AS 之间</font>的路由协议。EGP 是为简单的<font color="#e74f4c">树型拓扑</font>结构设计的。<br>(3)<font color="#e74f4c">边界网关协议</font>(Border Gateway Protocol,BGP):Internet 的网络规模庞大,网络情况复杂,EGP 已不适用,在 EGP 的经验之上制定了新的网关协议即 BGP,也是 <font color="#e74f4c">Internet 上唯一的网关协议</font>。
开放系统互连参考模型(OSI/RM)·
分层参考模型
OSI/RM协议集<br>
应用层<br>
处理<font color="#e74f4c">网络应用</font> 直接为终端用户服务,提供各类应用过程的接口和用户接口
表示层<br>
管理<font color="#e74f4c">数据表示方式</font> 使应用层可以根据其服务解释数据的含义。通常包括<font color="#e74f4c">数据编码</font>的约定、<font color="#e74f4c">本地句法</font>的转换,使不同类型的终端可以互相通信
会话层<br>
建立和维护<font color="#e74f4c">会话连接</font> 负责管理远程用户或进程间的通信,通过安全验证和退出机制确保<font color="#e74f4c">上下文</font>环境的安全,重建中断的会话场景,维持双方的同步
传输层 <br>
<font color="#e74f4c">端到端</font>传输 实现发送端和接收端的端到端的数据透明传送,TCP 协议保证数据包<font color="#e74f4c">无差错</font>、<font color="#e74f4c">按顺序</font>、无丢失和无冗余地传输。其服务访问点为<font color="#e74f4c">端口</font>
网络层<br>
在<font color="#e74f4c">源节点和目的节点</font>之间传输 虚电路分组交换和数据报分组交换、<font color="#e74f4c">路由选择算法</font>、<font color="#e74f4c">阻塞控制</font>方法,<font color="#e74f4c">网络互连</font>,以及对网络的诊断等
数据链路层 <br>
提供点到点的<font color="#e74f4c">帧</font>传输 将网络层报文数据封装成帧,建立、维持和释放网络实体之间的数据<br>链路,在链路上传输帧并进行差错控制、流量控制等
物理层
在物理链路上传输<font color="#e74f4c">比特流</font> 通过一系列协议定义了物理链路所具备的机械特性、电气特性、功能<br>特性以及规程特性
TCP/IP协议集
应用层:会话层、表示层、应用层<br>传输层:传输层<br><font color="#e74f4c">网际</font>层:网络层<br><font color="#e74f4c">网络接口层:数据链路层<br>硬件层:物理层</font><br>
<font color="#e74f4c">FTP、Telnet</font>:TCP/IP/<font color="#e74f4c">Ethernet</font><br>
<font color="#e74f4c">SMTP</font>:TCP/IP/<font color="#e74f4c">FDDI</font>
<font color="#e74f4c">NFS</font>:UDP/<font color="#e74f4c">ICMP</font>/TokenRing/硬件层<br>
<font color="#e74f4c">SNMP</font>网络管理:UDP/<font color="#e74f4c">RARP</font>/ARCnet<br>
子主题
协议集比较
应用层协议
<b>文件传输协议(File Transport Protocol,FTP)</b>:是网络上两台计算机<font color="#e74f4c">传送文件</font>的协议,运行在 TCP 之上,是通过 Internet 将文件从一台计算机传输到另一台计算机的一种途径。FTP 在客户机和服务器之间需建立两条 TCP 连接,一条用于传送<font color="#e74f4c">控制信息(使用21</font>号端口),另一条用于<font color="#e74f4c">传送文件内容(使用20</font>号端口)
<b>简单文件传输协议(Trivial File Transfer Protocol,TFTP)</b>:是用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP 建立在 <font color="#e74f4c">UDP之上</font>,<font color="#e74f4c">69</font>号端口;提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。
<b>超文本传输协议(Hypertext Transfer Protocol,HTTP)</b>:是用于从 WWW 服务器传输超文本到本地浏览器的传送协议。HTTP 建立在 TCP 之上,使用 <font color="#e74f4c">80</font> 号端口。
<b>安全超文本传输协议(Hypertext Transfer Protocol Secure,HTTPS)</b>:是以安全为目标的HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP的基础下加入安全套接层(Secure Socket Layer,<font color="#e74f4c">SSL)或 TLS</font>,HTTPS 使用的 <font color="#e74f4c">443</font> 号端口。
<font color="#e74f4c">POP3</font>,邮件<font color="#e74f4c">接收</font>协议,缺省端口<font color="#e74f4c">110</font><br><font color="#e74f4c">SMTP</font>,邮件<font color="#e74f4c">发送</font>协议,缺省端口<font color="#e74f4c">25</font><br><font color="#e74f4c">IMAP</font>,交互式邮件<font color="#e74f4c">存取</font>协议,缺省端口<font color="#e74f4c">143</font>
<b>动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)</b>:通常被应用在<font color="#e74f4c">大型的局域网络</font>环境中,主要作用是集中地管理、分配 IP 地址,使网络环境中的主机动态地获得<font color="#e74f4c"> IP 地址</font>、<font color="#e74f4c">网关地址</font>、<font color="#e74f4c">DNS 服务器地址</font>等信息,并能够提升地址的使用率。在网络范围内可能存在多个 DHCP服务器,各自负责不同的网段,也可能由同一个 DHCP 服务器,负责多个不同网段的地址分配。<br>如果网络中有多个 DHCP 服务器发送 OFFER 报文,客户端只根据<font color="#e74f4c">第一个收到的 OFFER</font> 报文,返回 <font color="#e74f4c">REQUEST</font> 报文。<br>
<b>域名系统(Domain Name System,DNS)</b>:DNS 把主机<font color="#e74f4c">域名解析为 IP 地址</font>的系统,<br><b><font color="#e74f4c">PTR</font>(Pointer Record)</b>负责将<font color="#e74f4c"> IP 地址映射到域名</font>的解析。<br>DNS 查询过程有两种方法<br><b>迭代查询</b>:查询得到的是<font color="#e74f4c">其他服务器的引用</font>,本地服务器就要访问被引用的服务器,做进一步的查询<br><b>递归查询</b>:查询方式要求服务器<font color="#e74f4c">彻底地进行名字解析</font>,并返回最后的结果<br>
传输层协议
<b>TCP</b>:传输控制协议(Transmission Control Protocol,)。TCP 是<font color="#e74f4c">可靠</font>的、<font color="#e74f4c">面向连接</font>的网络协<br>议。具有差错校验和重传、流量控制、拥塞控制等功能。适用于<font color="#e74f4c">数据量比较少</font>,且对可靠性要求高<br>的场合。<br>
<b>UDP</b>:用户数据报协议(User Datagram Protocol,UDP)。UDP 是<font color="#e74f4c">不可靠</font>的、<font color="#e74f4c">无连接</font>的网络协议。<br>UDP 适合<font color="#e74f4c">数据量大</font>,对可靠性要求不是很高,但要求<font color="#e74f4c">速度快</font>的场合。<br>
网络层协议
IPv6 被称为“下一代互联网协议”,IP 数据报的目的地址有<font color="#e74f4c">单播</font>、<font color="#e74f4c">多播/组播</font>、<font color="#e74f4c">任播</font>。<br>IPv4 to IPv6 过渡技术主要有:<font color="#e74f4c">双协议栈</font>技术、<font color="#e74f4c">隧道</font>技术、<font color="#e74f4c">NAT-PT</font> 技术<br>
1.5.5 网络工程
网络建设工程
<font color="#e74f4c"><b>网络规划</b></font>:以<font color="#e74f4c">需求</font>为导向,兼顾<font color="#e74f4c">技术和工程</font>可行性。<br>
<font color="#e74f4c"><b>网络设计</b></font>:包括<font color="#e74f4c">逻辑</font>设计和<font color="#e74f4c">物理</font>设计,逻辑设计指<font color="#e74f4c">网络结构</font>设计、网络<font color="#e74f4c">技术选型</font>、I<font color="#e74f4c">P 地址</font>和<font color="#e74f4c">路由设计</font>、<font color="#e74f4c">网络冗余</font>设计以及<font color="#e74f4c">网络安全</font>设计等;物理设计指布线设计、机房设计、设备选型等。<br><b>网络冗余设计</b>的目的就是避免网络组件<font color="#e74f4c">单点失效造成应用失效</font>;<br><b> 备用路径</b>是在<font color="#e74f4c">主路径失效时启用</font>,其<font color="#e74f4c">和主路径承担<b>不同</b>的网络负载</font>;<br><b> 负载分担</b>是网络冗余设计中的一种设计方式,其通过<font color="#e74f4c">并行链路提供流量分担</font>来提高性能;<br> 网络中存在备用链路时,可以考虑加入负载分担设计来减轻主路径负担。<br>
<font color="#e74f4c"><b>网络实施</b></font>:包括工程实施计划、网络设备验收、设备安装和调试、系统试运行和切换、用户培训等。
分层设计
<font color="#e74f4c">接入层</font>:直接面向用户连接或访问网络的部分,主要解决<font color="#e74f4c">相邻用户之间的互访需求</font>,并且为这些访问提供足够的带宽,接入层还应当适当负责一些用户管理功能(如地址认证、用户认证、计费管理等),以及用户信息收集工作(如用户的 IP 地址、MAC 地址、访问日志等)。<br>
<font color="#e74f4c">汇聚层</font>:是核心层和接入层的分界面,完成网络<font color="#e74f4c">访问策略控制</font>、<font color="#e74f4c">数据包处理</font>、<font color="#e74f4c">过滤</font>、<font color="#e74f4c">寻址</font>,以及其他数据处理的任务。汇聚层的存在与否要视网络规模大小而定。<br>
<font color="#e74f4c">核心层</font>:网络<font color="#e74f4c">主干</font>部分称为核心层,核心层的主要目的在于通过<font color="#e74f4c">高速转发</font>通信,提供优化、<font color="#e74f4c">可靠</font>的<font color="#e74f4c">骨干</font>传输结构,因此,核心层交换机应拥有更高的可靠性、性能和吞吐量。核心层的设备采用<font color="#e74f4c">双机冗余热备份</font>是非常必要的,也可以使用<font color="#e74f4c">负载均衡</font>功能来改善网络性能。<br>
1.6 计算机语言
1.6.1 计算机语言的组成
计算机语言(Computer Language)是指人与计算机之间用于交流的一种语言,主要由<font color="#e74f4c">一套指令</font>组成,而这套指令一般包括<font color="#e74f4c">表达式</font>、<font color="#e74f4c">流程控制</font>和<font color="#e74f4c">集合</font>三大部分内容。
1.6.2计算机语言的类别
<font color="#e74f4c">机器</font>语言(<font color="#e74f4c">指令</font>格式、<font color="#e74f4c">寻址</font>):指令格式由<font color="#e74f4c">操作码</font>和<font color="#e74f4c">操作数</font>两部分组成<br>
<font color="#e74f4c">汇编</font>语言(<font color="#e74f4c">语句</font>格式、<font color="#e74f4c">伪指令</font>):每条语句均由<font color="#e74f4c">名字、操作符、操作数和注释</font>4个字段(Fields)组成<br>
<font color="#e74f4c">高级</font>语言(更<font color="#e74f4c">贴近于人类</font>使用的语言,C、C++、Java和 Python等)<br>
<font color="#e74f4c">建模</font>语言(UML统一建模语言(<font color="#e74f4c">平台无关</font>、<font color="#e74f4c">语言无关</font>、<font color="#e74f4c">组成要素</font>、<font color="#e74f4c">关系</font>和<font color="#e74f4c">五种视图</font>)<br>
组成元素
基本构造块
事务(结构、行为、分组、注释)<br>
<font color="#e74f4c">结构</font>事物:名词、<font color="#e74f4c">静态</font>部分,用于描述概念或物理元素,包括:类、接口、<font color="#e74f4c">协作</font>、<font color="#e74f4c">用例</font>、<font color="#e74f4c">主动类</font>、<font color="#e74f4c">构件、制品</font><font color="#000000">和</font><font color="#e74f4c">节点</font><br>
子主题
<font color="#e74f4c">行为</font>事物:<font color="#e74f4c">动词</font>,描述了跨越<font color="#e74f4c">时间和空间</font>的行为。包括:<font color="#e74f4c">交互</font>Interaction、<font color="#e74f4c">状态机</font>StateMachine和<font color="#e74f4c">活动</font>Activity,也有成为<font color="#e74f4c">消息、动作次序、连接</font><br>
子主题
<font color="#e74f4c">分组</font>事物:<font color="#e74f4c">包</font>是最常用的分组事物,<font color="#e74f4c">结构事物</font>、<font color="#e74f4c">行为事物</font>甚至<font color="#e74f4c">其他分组事物</font>都可以放进包内。<br>
<font color="#e74f4c">注释</font>事物:UML模型的解释部分。<font color="#e74f4c">描述、说明和标注</font>模型的元素<br>
关系(依赖、关联(聚合、组合)、泛华、实现)<br>
<font color="#e74f4c">依赖</font>关系:其中一个事物发生变化会<font color="#e74f4c">影响另一个事物</font>。依赖关系是一种<font color="#e74f4c">使用</font>的关系。<br>
<font color="#e74f4c">关联</font>关系:是一种<font color="#e74f4c">拥有</font>的关系,关联提供了不同类的对象之间的结构关系,它在一段时间内<font color="#e74f4c">将多个类的实例连接在一起</font>。
<b><font color="#e74f4c">聚合</font>关系:</b>表示类之间的整体与部分的关系,其含义是<font color="#e74f4c">“部分”可能同时属于多个“整体”</font>,“部分”与“整体”的<font color="#e74f4c">生命周期可以不相同</font>。<br>
<b><font color="#e74f4c">组合</font>关系:</b>也是表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”<font color="#e74f4c">只能属于一个</font>“整体”,“部分”与“整体”的<font color="#e74f4c">生命周期相同</font>,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。<br>
<font color="#e74f4c">泛化</font>关系:泛化是一种<font color="#e74f4c">特殊/一般</font>关系,特殊元素(<font color="#e74f4c">子</font>元素)的对象可替代一般元素(<font color="#e74f4c">父</font>元素)的对象。<br>
<font color="#e74f4c">实现</font>关系:在两种情况下会使用实现关系:一种是在<font color="#e74f4c">接口</font>和实现它们的<font color="#e74f4c">类</font>或构件之间;另一种是在<font color="#e74f4c">用例</font>和实现它们的<font color="#e74f4c">协作</font>之间<br>
子主题
图(支配基本构造块如何放置在一起的规则)<br>
<font color="#e74f4c">静态</font>图(<font color="#e74f4c">结构</font>图)<br>
类图:<font color="#e74f4c">一组类</font>、接口、协作和它们之间的<font color="#e74f4c">关系</font><br>
子主题
对象图:<font color="#e74f4c">一组对象</font>及它们之间的关系<br>
子主题
构件图:<font color="#e74f4c">一个封装</font>的类和它的<font color="#e74f4c">接口,</font>是物理上独立的东西,他可以单独维护、升级、替换。<br>
子主题
包图:由<font color="#e74f4c">模型本身分解</font>而成的<font color="#e74f4c">组织单元</font>,以及它们之间的<font color="#e74f4c">依赖</font>关系<br>
子主题
部署图:软硬件之间映射<br>
子主题
制品图:系统的<font color="#e74f4c">物理</font>结构<br>
组合结构图
<font color="#e74f4c">动态</font>图(<font color="#e74f4c">行为</font>图)<br>
<font color="#e74f4c">用例图</font>:展现了一组<font color="#e74f4c">用例</font>、<font color="#e74f4c">参与者</font>(Actor)以及它们之间的关系<br>
<font color="#e74f4c">用例之间</font>有<font color="#e74f4c">扩展</font>关系(<<extend >>)和<font color="#e74f4c">包含</font>关系(<<include >>)和<font color="#e74f4c">泛华</font>关系,<br><font color="#e74f4c">包含</font>关系的特点是当两个或多个用例中共用一组相同的动作时,可以将这组<font color="#e74f4c">相同的动作抽出来作为一个独立的子用例</font>,供<font color="#e74f4c">多个基用例所共享</font>;<br><font color="#e74f4c">扩展</font>关系则是<font color="#e74f4c">对基用例的扩展</font>,基用例是一个完整的用例,<font color="#e74f4c">即使没有子用例的参与,也可以完成一个完整的功能</font>。<br>
<font color="#e74f4c">参与者和用例</font>之间有<font color="#e74f4c">关联</font>关系
<font color="#e74f4c">参与者与参与者</font>之间有<font color="#e74f4c">泛化</font>关系
子主题
状态机图:<font color="#e74f4c">状态转换</font>变迁<br>
子主题
<font color="#e74f4c">活动</font>图:可以描述系统的<font color="#e74f4c">工作流程</font>和<font color="#e74f4c">并发行为</font><br>
活动图泳道分区
并行活动图示例
交互图
<font color="#e74f4c">顺序</font>图(<font color="#e74f4c">序列</font>):强调按<font color="#e74f4c">时间顺序</font><br>
仅用消息的形式表达
用消息+返回值的形式表达
<font color="#e74f4c">通信</font>图:(<font color="#e74f4c">协作</font>图),是“顺序图”的另外一种表示方式。<br>
子主题
定|计时图:时序图也叫时间图。强调<font color="#e74f4c">实际时间</font><br>
子主题
交互概览图
公共机制:所有元素达到的共识<br>
<font color="#e74f4c">规格说明</font>:<font color="#e74f4c">事物</font>语义的细节描述,它是模型真正的核心<br>
<font color="#e74f4c">修饰</font>:通过修饰来<font color="#e74f4c">表达更多的信息</font><br>
公共<font color="#e74f4c">分类</font>:类与对象、接口与实现<br>
<font color="#e74f4c">扩展</font>机制:允许添加新的规则<br>
UML4+1视图<br>
<font color="#e74f4c">逻辑</font>视图:系统<font color="#e74f4c">功能</font>,<font color="#e74f4c">类与对象</font>、针对系统<font color="#e74f4c">分析设计人员</font><br>
<font color="#e74f4c">实现</font>视图:<font color="#e74f4c">物理代码文件</font>和组件、针对<font color="#e74f4c">程序员</font><br>
<font color="#e74f4c">进程</font>视图:线程、进程、<font color="#e74f4c">并发</font>,针对<font color="#e74f4c">系统集成人员</font><br>
<font color="#e74f4c">部署</font>视图:<font color="#e74f4c">软件到硬件</font>的映射、针对<font color="#e74f4c">系统和网络工程师</font><br>
1<font color="#e74f4c">用例</font>试图:<font color="#e74f4c">需求分析模型</font>、针对<font color="#e74f4c">最终用户</font><br>
UML体系<font color="#e74f4c">运行的原则</font><br>
范围:给一个名字以特定含义的语境<br>
可见性:怎样使用或看见名字<br>
完整性:事物如何正确、一致地相互联系<br>
执行:运行或模拟动态模型的含义是什么<br>
详细使用:http://www.zhihu.com/tardis/bd/art/405447739<br>
<font color="#e74f4c">形式化</font>语言(规格说明、分类、开发过程,<font color="#e74f4c">Z语言</font>具有“状态—操作”风格):是把概念、判断、推理转化成特定的形式符号后,<br>对形式符号表达系统进行研究的方法。<br>
1.7 <b>多媒体</b>
<br>1.7.1 多媒体概述
多媒体的定义、特征、基本组成及应用
1.7.2多媒体的主要关键技术<br>
<b>视音频</b>技术:视频技术包括视频数字化和视频编码技术两个方面;音频技术包括音频数字化、语音处理、语音合成及语音识别 4 个方面。<br>
<b>通信</b>技术:是多媒体系统中的一项关键技术,通常包括<b>数据传输信道技术</b>和<b>数据传输</b>技术<br>
<b>数据压缩</b>技术:包括即时压缩和非即时压缩、数据压缩和文件压缩、无损压缩与有损压缩等<br>
VR/AR技术:主要分为<font color="#e74f4c">桌面式</font>、<font color="#e74f4c">分布式</font>、<font color="#e74f4c">沉浸式</font>和<font color="#e74f4c">增强式</font> 4 种
1.8 <b>系统工程</b><br>
1.8.1 系统工程的基本概念
系统工程是一种<font color="#000000">方法论</font>,从宏观上对如何<font color="#e74f4c">创建</font>和<font color="#e74f4c">管理</font>一个信息化工程提出了理论框架
系统工程是运用系统方法,对系统进行<font color="#e74f4c">规划</font>、<font color="#e74f4c">研究</font>、<font color="#e74f4c">设计</font>、<font color="#e74f4c">制造</font>、<font color="#e74f4c">试验</font>和<font color="#e74f4c">使用</font>的<font color="#e74f4c">组织管理</font>技术,是人们用科学方法解决<font color="#e74f4c">复杂问题</font>的一门技术
系统工程从<font color="#e74f4c">整体</font>出发、从<font color="#e74f4c">系统观念</font>出发,以求【<font color="#e74f4c">整体最优</font>】<br>
系统工程方法的特点:<font color="#e74f4c">整体</font>性、<font color="#e74f4c">综合</font>性、<font color="#e74f4c">协调</font>性、<font color="#e74f4c">科学</font>性和<font color="#e74f4c">实践</font>性<br>
1.8.2 系统工程方法(<font color="#e74f4c">科学决策</font>方法)<br>
<font color="#e74f4c">霍尔的三维</font>结构<br> <font color="#e74f4c">硬科学</font>方法论<br>
美国系统工程专家霍尔(A.D.Hall)等人于 <font color="#e74f4c">1969 </font>年提出的一种系统工程方法论,<br>
<font color="#e74f4c">逻辑</font>维:即解决问题的<font color="#e74f4c">逻辑过程</font>,包括:明确<font color="#e74f4c">问题</font>、确定<font color="#e74f4c">目标</font>、<font color="#000000">系统</font><font color="#e74f4c">综合</font>、系统<font color="#e74f4c">分析</font>、<font color="#e74f4c">优化</font>、<font color="#e74f4c">决策</font>、<font color="#e74f4c">实施</font> 7 个逻辑步骤;<br>
<font color="#e74f4c">时间</font>维:即<font color="#e74f4c">工作进程</font>,包括:<font color="#e74f4c">规划</font>、<font color="#e74f4c">拟订方案</font>、<font color="#e74f4c">研制</font>、<font color="#e74f4c">生产</font>、<font color="#e74f4c">安装</font>、<font color="#e74f4c">运行</font>、<font color="#e74f4c">更新</font> 7 个时间阶段;<br>
<font color="#e74f4c">知识</font>维:即专业<font color="#e74f4c">科学知识</font>,包括:工程、医学、建筑、商业、法律、管理、社会科学、艺术等知识和技能。
<font color="#e74f4c">切克兰德</font>方法<br> <font color="#e74f4c">软科学</font>方法论<br>
核心<font color="#e74f4c">不是“最优化”</font>而是“<font color="#e74f4c">比较”与“探寻</font>”。<br>
将工作过程分为7个步骤:<font color="#e74f4c">认识问题</font>、<font color="#e74f4c">根底定义</font>、建立<font color="#e74f4c">概念模型</font>、<font color="#e74f4c">比较及探寻</font>、<font color="#e74f4c">选择</font>、<font color="#e74f4c">设计与实施</font>、<font color="#e74f4c">评估与反馈</font>。<br>
<font color="#e74f4c">并行工程</font>方法
是对产品及其相关过程(包括<font color="#e74f4c">制造</font><font color="#000000">过程</font>和<font color="#e74f4c">支持</font>过程)进行<font color="#e74f4c">并行、集成</font><font color="#000000">化</font>处理的系统方法和综合技术<br>
强调三个方面:产品设计开发期间<font color="#e74f4c">最快速度按质</font>完成,各项工作<font color="#e74f4c">问题协调解决</font>,适当的<font color="#e74f4c">信息系统工具</font><br>
目标:提高<font color="#e74f4c">质量</font>、降低<font color="#e74f4c">成本</font>、<font color="#e74f4c">缩短</font>产品开发<font color="#e74f4c">周期</font>和产品上市时间。<br>
<font color="#e74f4c">综合集成</font>法
<font color="#e74f4c">钱学森</font>等提出,从系统的本质出发可以把系统分为<font color="#e74f4c">简单系统</font>和<font color="#e74f4c">巨系统</font>两大类<br>
四原则:<font color="#e74f4c">整体论</font>、相互<font color="#e74f4c">联系</font>、<font color="#e74f4c">有序</font>性、【<font color="#e74f4c">动态</font>】<br>
主要性质:<font color="#e74f4c">开放</font>性、<font color="#e74f4c">复杂</font>性、<font color="#e74f4c">进化与涌现</font>性、<font color="#e74f4c">层次</font>性和<font color="#e74f4c">巨量</font>性。
<font color="#e74f4c">WSR系统</font>方法
是<font color="#e74f4c">懂物理</font>—<font color="#e74f4c">明事理</font>—<font color="#e74f4c">通人理</font>方法论的简称。<br>
具有<font color="#e74f4c">中国传统哲学</font>的思辨思想,是多种方法的综合统一,属于<font color="#e74f4c">定性与定量</font>分析综合集成的东方系统思想。<br>
一般工作过程可理解为:<font color="#000000">理解</font><font color="#e74f4c">意图</font>、<font color="#000000">制定</font><font color="#e74f4c">目标</font>、<font color="#000000">调查</font><font color="#e74f4c">分析</font>、<font color="#000000">构造</font><font color="#e74f4c">策略</font>、<font color="#000000">选择</font><font color="#e74f4c">方案</font>、<font color="#e74f4c">协调关系</font>和<font color="#e74f4c">实现构想</font> 7 步。<br>
1.8.3 系统工程的全生命周期
对系统工程生命周期进行定义的目的是以<font color="#e74f4c">有序而且高效</font>的方式建立一个满足<font color="#e74f4c">利益攸关者</font>需求的框架。
<font color="#000000">生命周期</font>:<font color="#e74f4c">探索</font>研究、<font color="#e74f4c">概念</font>阶段、<font color="#e74f4c">开发</font>阶段、<font color="#e74f4c">生产</font>阶段、<font color="#e74f4c">使用</font>阶段、<font color="#e74f4c">保障</font>阶段和<font color="#e74f4c">退役</font>阶段<br>
生命周期方法<br>
<font color="#000000">【</font><font color="#e74f4c">计划</font>】<font color="#e74f4c">驱动</font>方法:需求->设计->构建->测试->部署(<font color="#e74f4c">简单、理想化</font>)<br>
<font color="#e74f4c">渐进迭代</font>式开发:提供<font color="#e74f4c">连续交付</font>以达到期望的系统<br>
<font color="#e74f4c">精益</font>开发:起源于丰田,是一个<font color="#e74f4c">动态的、知识驱动</font>的,以<font color="#e74f4c">客户为中心</font>的过程<br>
<font color="#e74f4c">敏捷</font>开发:<font color="#e74f4c">适应</font>性、<font color="#e74f4c">以人为本</font>、<font color="#e74f4c">迭代增量</font>、<font color="#e74f4c">小项目</font><br>
1.8.4 基于<font color="#e74f4c">模型</font>的系统工程(<font color="#e74f4c">MBSE</font>)<br>
MBSE是<font color="#e74f4c">建模</font><font color="#000000">方法</font>的<font color="#e74f4c">形式化</font>应用,以使建模方法支持系统【<font color="#e74f4c">需求</font>、<font color="#e74f4c">分析</font>、<font color="#e74f4c">设计</font>、【<font color="#e74f4c">验证</font>】和【<font color="#e74f4c">确认</font>】】等活动,持续贯穿到所有生命周期阶段。<br>
产物:<br>
在<font color="#e74f4c">需求分析</font>阶段,产生<font color="#000000">需求图</font>、<font color="#000000">用例图</font>及【<font color="#e74f4c">包图</font>】
在<font color="#e74f4c">功能分析与分配</font>阶段,产生<font color="#e74f4c">顺序图</font>、<font color="#e74f4c">活动图</font>及<font color="#e74f4c">状态机</font>图
在<font color="#e74f4c">设计综合</font>阶段,产生【<font color="#e74f4c">模块定义</font>图】、【<font color="#e74f4c">内部块</font>图】及【<font color="#e74f4c">参数</font>图】等<br>
<b>MBSE的三大支柱技术</b>:<b>建模<font color="#e74f4c">语言</font>、建模<font color="#e74f4c">工具</font>和建模<font color="#e74f4c">思路</font></b><br>
1.9 <b>系统性能</b><br>
1.9.1 性能指标
<b>系统性能评价指标是<font color="#e74f4c">软件</font>、<font color="#e74f4c">硬件</font>的性能指标的集成</b>
计算机的性能指标:时钟频率(<font color="#e74f4c">主频</font>)、<font color="#e74f4c">运算速度</font>、<font color="#e74f4c">运算精度</font>、<font color="#e74f4c">数据处理速率</font>(Processing Data Rate,PDR)、<font color="#e74f4c">吞吐率</font><br>
路由器的性能指标:设备吞吐量、端口吞吐量、全双工线速转发能力、<font color="#000000">路由表</font>能力、<font color="#000000">背板</font>能力、<font color="#e74f4c">丢包率、时延、时延抖动、【协议支持</font>】等<br>
交换机的性能指标:【<font color="#e74f4c">端口速率</font>】、【<font color="#e74f4c">背板吞吐量</font>】、【<font color="#e74f4c">缓冲区大小</font>】、【<font color="#e74f4c">MAC地址表</font>大小】<br>
网络的性能指标:<font color="#e74f4c">设备级</font>性能指标、<font color="#e74f4c">网络级</font>性能指标、<font color="#e74f4c">应用级</font>性能指标、<font color="#e74f4c">用户级</font>性能指标和【<font color="#e74f4c">吞吐量</font>】<br>
操作系统的性能指标:系统<font color="#e74f4c">上下文切换</font>、系统<font color="#e74f4c">响应时间</font>、<font color="#e74f4c">系统的吞吐率</font>(量)、系统<font color="#e74f4c">资源利用率</font>、<font color="#e74f4c">可靠性</font>和【<font color="#e74f4c">可移植性</font>】<br>
数据库管理系统的性能指标:【最大<font color="#e74f4c">连接数</font>】、<font color="#000000">最大</font><font color="#e74f4c">并发事务处理</font>能力、【<font color="#e74f4c">负载均衡</font>能力】<br>
Web服务器的性能指标:最大<font color="#e74f4c">并发连接数</font>、<font color="#e74f4c">响应延迟</font>和【<font color="#e74f4c">吞吐量</font>】<br>
1.9.2 性能计算
主要方法:<font color="#e74f4c">定义</font>法、<font color="#e74f4c">公式</font>法、<font color="#e74f4c">程序检测</font>法和<font color="#e74f4c">仪器检测</font>法<br>
每秒<font color="#e74f4c">百万次</font>指令数<font color="#e74f4c">MIPS </font>= 指令条数/(执行时间×<font color="#e74f4c">10的6次方</font>)
峰值计算,是指计算机<font color="#e74f4c">每秒</font>钟能完成的<font color="#e74f4c">浮点</font>计算<font color="#e74f4c">最大次数</font>。包括理论浮点峰值和实测浮点峰值。<br><font color="#e74f4c">理论浮点峰值</font>= 系统中<font color="#e74f4c">CPU数</font> × <font color="#e74f4c">CPU主频 </font>× CPU<font color="#e74f4c">每个时钟周期</font><font color="#000000">执行</font><font color="#e74f4c">浮点运算</font><font color="#000000">的次数</font><br>
<font color="#e74f4c">等效指令速度</font>法或<font color="#e74f4c">吉普森</font>(Gibson)法,早期用<font color="#e74f4c">加法</font>指令的运算速度来衡量计算机的速度,后来发展为各个指令的<font color="#e74f4c">运算时间乘以占比</font>。<br>通常加、减法指令占 <font color="#e74f4c">50</font>%,乘法指令占 <font color="#e74f4c">15</font>%,除法指令占 <font color="#e74f4c">5</font>%,程序控制指令占 <font color="#e74f4c">15</font>%,其他指令占 <font color="#e74f4c">15</font>%。<br>式中:Wi 为第 i 种指令的使用占比;Ti 为第 i 种指令的运算时间。<br>
1.9.3 性能设计<br>
系统调整、Amdah1 解决方案、响应特性和负载均衡
性能调整由<font color="#e74f4c">查找</font>和<font color="#e74f4c">消除</font>瓶颈组成<br>
对于<font color="#e74f4c">数据库</font>系统,性能调整主要包括 <font color="#e74f4c">CPU/内存</font>使用状况、优化<font color="#e74f4c">数据库设计</font>、优化<font color="#e74f4c">数据库管理</font>以及<font color="#e74f4c">进程/线程状态</font>、<font color="#e74f4c">硬盘I/O及剩余空间</font>、<font color="#e74f4c">日志文件大小</font>等
对于<font color="#e74f4c">应用系统</font>,性能调整主要包括应用系统的<font color="#e74f4c">可用性</font>、<font color="#e74f4c">响应时间</font>、<font color="#e74f4c">并发用户数</font>以及特定应用的系统<font color="#e74f4c">资源占用</font>等
阿姆达尔定律<br>
计算机系统中对<font color="#e74f4c">某一部件</font>采用某种<font color="#e74f4c">更快的执行方式</font>所获得的系统<font color="#e74f4c">性能改变程度</font>,取决于这种方式所占<font color="#e74f4c">总执行时间的比例</font>。<br><br>加速比=<font color="#e74f4c">使用</font>增强部件时完成整个任务的时间/<font color="#e74f4c">不使用</font>增强部件时完成<font color="#e74f4c">整个任务的时间</font><br><br>新的执行时间=原来的执行时间×[(1−增强比例)+增强比例/增强加速比]<br><br>总加速比=原来的执行时间/新的执行时间=1/[(1−增强比例)+增强比例/增强加速比]<br><br>加速比主要取决于两个因素:在原有的计算机上,能被改进并增强的部分在总执行时间中所占的比例,这个值称为增强比例,它永远小于等于 1;通过增强的执行方式所取得的改进,即如果整个程序使用了增强的执行方式,那么这个任务的执行速度会有多少提高,这个值是在原来条件下程<br>序的执行时间与使用增强功能后程序的执行时间之比。<br>
1.9.4 性能评估<br>
<b>基准测试</b>程序
定义:把应用程序中<font color="#e74f4c">应用最频繁</font>的那部分<font color="#e74f4c">核心程序</font>作为评价计算机性能的标准程序<br>
基准测试程序中,评测的准确程度依次递减:<font color="#e74f4c">真实的</font><font color="#000000">程序</font>、<font color="#e74f4c">核心</font>程序、<font color="#e74f4c">小型基准</font><font color="#000000">程序</font>和<font color="#e74f4c">合成基准</font><font color="#000000">程序</font>
基准测试程序有<font color="#e74f4c">DLWST</font>:<font color="#e74f4c">整数Dhrystone</font>测试程序 、<font color="#e74f4c">浮点Linpack</font>测试程序 、【<font color="#e74f4c">Whetstone</font>】 基准测试程序、【<font color="#e74f4c">SPEC</font>】基准测试程序和【<font color="#e74f4c">TPC</font>】基准程序<br>
Web服务器的性能评测方法有:[<font color="#e74f4c">基准性能</font>]测试、[<font color="#e74f4c">压力</font>]测试和[<font color="#e74f4c">可靠性</font>]测试。<br>
<b>系统监视的方法通常有:系统<font color="#e74f4c">内置命令</font>、查阅<font color="#e74f4c">系统日志</font>、<font color="#e74f4c">可视化技术</font> 3 种方式。</b><br>
可靠性Reliability
定义:指系统在规定条件下<font color="#e74f4c">持续无故障运行</font>的能力,强调“<font color="#e74f4c">正确性</font>”和“<font color="#e74f4c">长期稳定性</font>”,<br>影响因素:主要受<font color="#e74f4c">软件缺陷密度</font>、<font color="#e74f4c">硬件质量</font>等内在<font color="#e74f4c">因素</font>影响。<br>核心目标:<font color="#e74f4c">减少故障发生频率</font>,通常通过<font color="#e74f4c">硬件寿命测试</font>、<font color="#e74f4c">软件压力测试</font>等手段验证。<br><font color="#000000">衡量指标</font><br><font color="#e74f4c"> 平均无故障时间(MTBF)</font>:系统两次故障之间的平均<font color="#e74f4c">间隔</font>时间。<br><font color="#e74f4c"> 故障率(FR)</font>:单位时间内系统发生故障的概率。<br>
可用性Availability
定义:指系统在特定时间段内可供<font color="#e74f4c">正常使用的概率</font>,强调“<font color="#e74f4c">可访问性</font>”和“<font color="#e74f4c">即时恢复能力</font>”;<br>影响因素:除了可靠性的因素外还涉及<font color="#e74f4c">运维效率</font>、<font color="#e74f4c">故障恢复机制</font>等<font color="#e74f4c">外部</font>因素。<br>核心目标:<font color="#e74f4c">缩短服务中断时间</font>,提升用户感知的连续性。<br><font color="#000000">衡量指标</font><br><font color="#e74f4c"> 正常使用时间占比</font>:MTBF / (MTBF + MTTR),其中MTTR为平均修复时间。<br>
2、<font color="#e74f4c">信息系统</font>基础知识<br> 综合2~6分<br>
2.1 信息系统概述<br>
2.1.1信息系统的定义
信息系统是由【计算机<font color="#e74f4c">软硬件</font>】、【<font color="#e74f4c">网络</font><font color="#000000">和通信设备</font>】、【<font color="#e74f4c">信息资源</font>】、【<font color="#e74f4c">用户和规章制度</font>】组成的以处理信息流为目的的人机一体化系统。<br>信息系统的功能有:<font color="#e74f4c">输入、存储、处理、输出</font><font color="#000000">和【</font><font color="#e74f4c">控制</font>】<br>
2.1.2 信息系统的发展
发展的六个阶段:<font color="#e74f4c">初始</font>阶段、<font color="#e74f4c">传播</font>阶段、<font color="#e74f4c">控制</font>阶段、<font color="#e74f4c">集成</font>阶段、<font color="#e74f4c">数据管理</font>阶段和<font color="#e74f4c">成熟</font>阶段<br>
2.1.3 信息系统的分类<br>
<font color="#e74f4c">业务(数据)处理</font>系统TPS:数据输入、数据处理、<font color="#e74f4c">批处理</font>、<font color="#e74f4c">OLTP</font>、数据库维护、文件报表产生<br>
<font color="#e74f4c">管理信息</font>系统MIS:高度<font color="#e74f4c">集成化</font>的人机信息系统,<font color="#e74f4c">金字塔</font>结构:分【<font color="#e74f4c">多个层</font>】级<br>
<font color="#e74f4c">决策支持</font>系统OSS:由<font color="#e74f4c">语言系统</font>、<font color="#e74f4c">知识系统</font>和<font color="#e74f4c">问题处理</font>系统组成。用于<font color="#e74f4c">辅助决策</font>、支持决策。<br>
<font color="#e74f4c">专家</font>系统ES:<font color="#e74f4c">知识+推理</font>=专家系统。人工智能的一个重要分支。<br>
<font color="#e74f4c">办公自动化</font>系统OAS:由计算机设备、<font color="#e74f4c">办公设备</font>、数据通信及网络设备、软件系统组成。<br>
综合性信息系统:ERP打通供应链,集成,整合<br>
2.1.4 信息系统的生命周期:<font color="#e74f4c">产生、开发、运行、消亡</font><br>
<font color="#e74f4c">产生</font>阶段:提出想法,对<font color="#e74f4c">需求</font>进行调研和分析<br>
<font color="#e74f4c">开发</font>阶段:总体<font color="#e74f4c">规划</font>、系统<font color="#e74f4c">分析</font>、系统<font color="#e74f4c">设计</font>、系统<font color="#e74f4c">实现</font>、系统<font color="#e74f4c">验收</font><br>
<font color="#e74f4c">运行</font>阶段:<font color="#e74f4c">通过验收</font>、移交之后<br>
<font color="#e74f4c">消亡</font>阶段:<font color="#e74f4c">更新</font>改造、功能<font color="#e74f4c">扩展</font>、报废<font color="#e74f4c">重建</font><br>
2.1.5 信息系统的建设原则<br>
【<font color="#e74f4c">高层人员</font>介入】:如:CIO介入<br>
【<font color="#e74f4c">用户参与开发</font>】:用户确定范围、核心用户全程参与、用户深度参与<br>
【<font color="#e74f4c">自顶向下规划</font>】:】以此减少信息不一致的现象<br>
【<font color="#e74f4c">工程化</font>】:引入软件工程<br>
其它原则:创新性原则、整体性原则、发展性原则、经济性原则<br>
2.1.6 信息系统开发方法<br>
<font color="#e74f4c">原型</font>法:构造简易原型解决<font color="#e74f4c">需求不明确</font>问题<br>
按功能分<br>
<font color="#e74f4c">水平</font>原型:<font color="#e74f4c">行为</font>原型,用于<font color="#e74f4c">界面</font>。细化需求但<font color="#e74f4c">并未实现功能</font>。<br>
<font color="#e74f4c">垂直</font>原型:<font color="#e74f4c">结构化</font>原型,用于<font color="#e74f4c">复杂算法</font>的实现,<font color="#e74f4c">实现了部分功能</font><br>
按最终结果分
<font color="#e74f4c">抛弃</font>原型:<font color="#e74f4c">探索式</font>原型,解决需求<font color="#e74f4c">不确定性</font>、二义性、不完整性、含糊性等<br>
<font color="#e74f4c">演化</font>原型:逐步<font color="#e74f4c">演化为最终</font>系统,用于易于升级和优化的场合,适用于<font color="#e74f4c">Web项目</font><br>
<font color="#e74f4c">结构化</font>方法:<font color="#e74f4c">自顶向下</font>,逐步分解求精,<font color="#e74f4c">目标清晰</font>化、<font color="#e74f4c">不灵活</font><br>
<font color="#e74f4c">面向对象</font>方法:<font color="#e74f4c">自底向上</font>,阶段界限不明,灵活应变更好复用、<font color="#e74f4c">符合人类思维</font><br>
<font color="#e74f4c">面向服务</font>方法:面向对象基础上、<font color="#e74f4c">粗粒度松耦合</font>、【<font color="#e74f4c">跨构件接口调用</font>】、抽象级别(<font color="#e74f4c">操作</font>【低】-<font color="#e74f4c">服务</font>【中】-><font color="#e74f4c">业务流程</font>【高)),详见案例5<br>
<font color="#e74f4c">构件化</font>方法:解决复杂环境下软件的<font color="#e74f4c">规模与复杂性</font><br>
获取方式:<br>
从<font color="#e74f4c">现有构件</font>中获得符合要求的构件
通过<font color="#e74f4c">遗留工程</font>提取
从市场上<font color="#e74f4c">购买</font>现成的商业构件
<font color="#e74f4c">开发</font>新的符合要求的构件
分类方式
<b><font color="#e74f4c">关键字</font>分类法:</b>将应用领域的概念按照从<font color="#e74f4c">抽象到具体</font>的顺序逐次分解为<font color="#e74f4c">树型</font>或<font color="#e74f4c">有向无回路图</font>结构,每个概念用一个描述性的关键字表示<br>
<b><font color="#e74f4c">刻面</font>分类法:</b>刻面可以描述构件执行的<font color="#e74f4c">功能</font>、<font color="#000000">被操作的</font><font color="#e74f4c">数据</font>、构件应用的<font color="#e74f4c">语境</font>或<font color="#e74f4c">其他特征</font><br>
<b><font color="#e74f4c">超文本</font>方法</b>:所有构件必须辅以<font color="#e74f4c">详尽</font>的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照<font color="#e74f4c">人类的联想思维方式任意跳转</font>到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索<br>
检索方法
基于<font color="#e74f4c">关键字</font>的检索、<font color="#e74f4c">刻面</font>检索法、<font color="#e74f4c">超文本</font>检索法。
构件<font color="#e74f4c">组装方式</font>:基于【<font color="#e74f4c">功能</font>】组装、基于【<font color="#e74f4c">数据</font>】组装、【<font color="#e74f4c">面向对象</font>】组装<br>
构建<font color="#e74f4c">组装的三个层次</font>:【<font color="#e74f4c">定制</font>】、【<font color="#e74f4c">集成</font>】、【<font color="#e74f4c">扩展</font>】<br>
<font color="#e74f4c">敏捷</font>方法:<font color="#e74f4c">适应性、以人为本、迭代增量、小项目</font><font color="#000000">,详</font>见4.1.3<br>
2.1.7综合性信息系统<br>
企业资源规划(ERP)<br>
仓储管理系统(WMS)
制造过程管理系统(MES/SFC)
产品数据管理系统(PDM)
2.2 业务处理系统(TPS)
2.2.1 业务处理系统的概念·
<font color="#000000">TPS是服务于组织管理层次中</font>最低层、最基础<font color="#000000">的信息系统。</font>
2.2.2业务处理系统的功能
对事务所发生的数据进行<font color="#e74f4c">输入</font>、<font color="#e74f4c">处理</font>和<font color="#e74f4c">输出</font>(即<font color="#e74f4c"> IPO</font>)
<b>TPS的五个基本功能:</b>【<b><font color="#e74f4c">数据输入</font></b>】<b><font color="#e74f4c">、</font></b>【<b><font color="#e74f4c">数据处理</font></b>】<b><font color="#e74f4c">(批处理、OLAT)、</font></b>【<b><font color="#e74f4c">数据库</font></b>】<b><font color="#e74f4c">维护、</font></b>【<b><font color="#e74f4c">文件报表</font></b>】<b><font color="#e74f4c">的产生和</font></b>【<b><font color="#e74f4c">查询处理</font></b>】<br>
<font color="#e74f4c">结构化</font>生命周期法开发<br>
2.3 管理信息系统(MIS)
2.3.1 管理信息系统的概念
是在TPS基础上<font color="#e74f4c">引进大量管理方法对企业整体信息进行处理</font>,并利用信息进行预测、控<br>制、计划、辅助企业全面管理的信息系统。
MIS系统的<font color="#e74f4c">上层</font>是<font color="#e74f4c">子系统和功能</font>,<font color="#e74f4c">底层</font>是<font color="#e74f4c">各个过程</font>,<font color="#e74f4c">功能由过程组合实现</font>
四大部件:<font color="#e74f4c">信息源、信息处理器、信息用户和信息管理者</font><br>
2.3.2 管理信息系统的功能
功能结构
<b><font color="#e74f4c">开环</font>结构</b>:控制<font color="#e74f4c">电视</font><br>
<b><font color="#e74f4c">闭环</font>结构</b>:不断收集信息,不断发送给决策者,控制<font color="#e74f4c">空调</font><br>
功能-过程结构图
<br>2.3.3·管理信息系统的组成
一个MIS系统可以用一个【<font color="#e74f4c">功能/层次</font>矩阵】表示<br>
七个基本子系统:有销售市场子系统、生产子系统、后勤子系统、人事子系统、财务和会计子系统、信息处理子系统和高层管理子系统<br>
2.4 决策支持系统(DSS)
2.4.1 决策支持系统的概念
决策支持系统(DecisionSupportSystem,DSS)是一个由【<font color="#e74f4c">语言</font>】<font color="#e74f4c">系统、</font>【<font color="#e74f4c">知识</font>】<font color="#e74f4c">系统</font><font color="#000000">和</font>【<font color="#e74f4c">问题处理</font>】<font color="#e74f4c">系统</font>3个互相关联的部分组成的,基于计算机的系统。<br>
DSS是一个<font color="#e74f4c">交互式</font>的、<font color="#e74f4c">灵活</font>的、<font color="#e74f4c">适应性强</font>的基于计算机的信息系统
DSS的基本结构:【<font color="#e74f4c">两库</font>】结构和<font color="#e74f4c">基于</font>【<font color="#e74f4c">知识</font>】<font color="#e74f4c">的</font>结构<br>
DSS的主要资源:【<font color="#e74f4c">数据</font>】<font color="#e74f4c">和</font>【<font color="#e74f4c">模型</font>】<br>
2.4.2 决策支持系统的功能
DSS 支撑九项基本功能:<br>①多层决策,为决策整理和提供数据;<br>②收集、存储和提供外部信息;<br>③收集和提供活动的反馈信息;<br>④具有模型的存储和管理能力;<br>⑤对常用的各种方法的存储和管理;<br>⑥对各种数据、模型、方法进行管理;<br>⑦数据加工;<br>⑧具有人—机接口和图形加工;<br>⑨支持分布使用方式<br>
2.4.3 决策支持系统的特点
DSS用来<font color="#e74f4c">支援用户作决策</font>而不是代替用户作决策。
DSS主要用于解决<font color="#e74f4c">半结构化及非结构化</font>问题。
DSS的作用在于<font color="#e74f4c">提高决策的有效性</font>而不是提高决策的效率。
特点是<font color="#e74f4c">面向决策者</font>、<font color="#e74f4c">支持半结构化问题</font>、<font color="#e74f4c">辅助支持</font>、【<font color="#e74f4c">过程动态</font>】、【<font color="#e74f4c">交互</font>】
2.4.4 决策支持系统的组成<br>
组建过程是:【<font color="#e74f4c">数据重组</font>】、<font color="#000000">建立</font>【<font color="#e74f4c">数据仓库</font>】、<font color="#000000">建立</font>【<font color="#e74f4c">数据字典</font>】、【<font color="#000000">数据</font><font color="#e74f4c">挖掘</font>】、【建立<font color="#e74f4c">模型</font>】
2.5 专家系统(ES)<br>
2.5.1 专家系统的概念<br>
ES的基本概念、定义和范畴
人工智能(AI)的基本概念、特点和分支
专家系统(ExpertSystem,ES)是一个<font color="#e74f4c">智能</font>计算机程序系统,其内部含有某个领域具有<font color="#e74f4c">专家水平的大量知识与经验</font>,能够利用人类专家的知识和解决问题的方法来处理该领域的问题。
专家系统分支包括:<font color="#e74f4c">机器人技术</font>、<font color="#e74f4c">视觉系统</font>、<font color="#e74f4c">自然语言处理</font>、<font color="#e74f4c">学习系统</font>和<font color="#e74f4c">神经网络等</font>
2.5.2专家系统的特点<br>
ES具有<font color="#e74f4c">超越时间限制</font>、<font color="#e74f4c">操作成本低廉</font>、<font color="#e74f4c">易于传递与复制</font>、<font color="#e74f4c">处理手段一致</font>、<font color="#e74f4c">善于克服难题</font>、<font color="#e74f4c">适用特定领域</font>等特点
专家系统和计算机系统的差别<br>
解决问题、<font color="#e74f4c">解释结果、进行判断与决策</font>
处理数字与<font color="#e74f4c">符号</font>
多属准结构性或非结构性,<font color="#e74f4c">可处理不确定的知识,使用于特定的领域</font>
2.5.3 专家系统的组成<br>
ES的组成:<font color="#e74f4c">知识获取</font>、<font color="#e74f4c">知识库</font>、<font color="#e74f4c">综合数据库</font>、<font color="#e74f4c">推理机</font>、<font color="#e74f4c">解释程序</font>和<font color="#e74f4c">人-机接口</font><br>
子主题
2.6 办公自动化系统(OAS)
2.6.1 办公自动化系统的概念
OAS 的发展、目标、定义和范围
OAS是一个集<font color="#e74f4c">文字、数据、语言、图像</font>为一体的综合性、跨学科的人机信息处理系统
2.6.2办公自动化系统的功能:【<font color="#e74f4c">事务处理</font>】、【<font color="#e74f4c">信息管理</font>】、【<font color="#e74f4c">辅助决策</font>】<br>
2.6.3 办公自动化系统的组成:<font color="#e74f4c">计算机设备</font>、<font color="#e74f4c">办公设备</font>、<font color="#e74f4c">数据通信及网络设备</font>、<font color="#e74f4c">软件系统</font><br>
2.7 企业资源规划(ERP)
2.7.1企业资源规划的概念 <br>
ERP 的目标、定义、范围和发展
ERP是在信息技术基础上集成了企业的所有资源信息,为企业提供<font color="#e74f4c">决策</font>、<font color="#e74f4c">计划</font>、<font color="#e74f4c">控制</font>与<font color="#e74f4c">经营业绩评估</font>的全方位和系统化的管理平台。<br>
企业的所有资源包括三大流:<font color="#e74f4c">物流</font>、<font color="#e74f4c">资金流</font>和<font color="#e74f4c">信息流</font>
ERP的管理范围:涉及企业的<font color="#e74f4c">所有供需</font>过程,是对<font color="#e74f4c">供应链</font>的全面管理,还与<font color="#e74f4c">人事系统</font>和 <font color="#e74f4c">CRM</font> 等关联。
2.7.2 企业资源规划的结构<br>
基本结构:生产预测、销售管理、经营计划、主生产计划、物料需求计划、能力需求计划、车间作业计划、采购与库存管理、质量与设备管理和财务管理<br>
2.7.3 企业资源规划的功能
支持决策的功能、不同行业的针对性IT解决方案、全行业和跨行业的供应销
PDM、CRM 在企业的应用
ERP的功能有:<font color="#e74f4c">支持决策</font>、不同行业的<font color="#e74f4c">针对性IT解决方案</font>、提供全行业和跨行业的<font color="#e74f4c">供应链</font>。<br>
MRPII:核心是<font color="#e74f4c">物流</font>,主线是<font color="#e74f4c">计划</font><br>
ERP:打通了<font color="#e74f4c">供应链</font>,扩展到非制造业,重心转移到了<font color="#e74f4c">财务</font>上<br>
2.8 典型信息系统架构模型
2.8.1 政府信息化与电子政务<font color="#e74f4c">EG</font><br>
行为主体是:<font color="#e74f4c">政府G</font>overnment、<font color="#e74f4c">企(事)业单位B</font>usiness及<font color="#e74f4c">居民C</font>itizen
重点注意:信息采集处理和利用属于G2G,如人口数据<br>
2.8.2·企业信息化<font color="#e74f4c">EI</font>与电子商务<font color="#e74f4c">EC</font><br>
企业信息化的概念和目的
信息化是指在国家宏观信息政策指导下,通过<font color="#e74f4c">信息技术开发</font>、<font color="#e74f4c">信息产业的发展</font>、<font color="#e74f4c">信息人才的配置</font>,最大限度地利用信息资源以满足全社会的<font color="#e74f4c">信息需求</font>,从而加速社会各个领域的共同发展以<font color="#e74f4c">推进信息社会的过程</font>。<br>
信息化的生体是全体社会成员(政府、企业、团体和个人),时域是一个<font color="#e74f4c">长期过程空域</font>是经济和社会的一切领域,手段是<font color="#e74f4c">先进社会生产工具</font>。
三类创新
【<b><font color="#e74f4c">技术</font>创新</b>】在生产工艺设计、产品设计中使用计算机辅助设计系统,并通过互联网及时了解和掌握创新的技术信息,加快技术向生产的转化。还有,生产技术与信息技术相结合,能够大幅度提高技术水平和产品的竞争力。<br>【<b><font color="#e74f4c">管理</font>创新</b>】按照市场发展的要求,要对企业现有的管理流程重新整合,从作为管理核心的财务资金管理,转向技术、物资、人力资源的管理,并延伸到企业技术创新、工艺设计、产品设计、产制造过程的管理,进而还要扩展到客户关系管理、供应链的管理乃至发展到电子商务。<br>【<b><font color="#e74f4c">制度</font>创新</b>】那些不适应企业信息化的管理体制、管理机制和管理制度必须得到创新。
企业信息化是<font color="#e74f4c">技术和业务</font>的融合,从<font color="#000000">企业</font><font color="#e74f4c">战略</font>、<font color="#e74f4c">业务运作</font>和<font color="#e74f4c">管理运作</font>3个层面去实现。
企业信息化工程核心技术:【<font color="#e74f4c">信息</font>技术】【<font color="#e74f4c">制造</font>技术】【<font color="#e74f4c">自动化</font>技术】【<font color="#e74f4c">现代管理</font>技术】<br>
组织信息化需求通常包含三个层次,其中<font color="#e74f4c">战略需求</font>的目标是提升组织的竞争能力,为组织的可持续发展提供支持环境。<font color="#e74f4c">运作需求</font>包含实现信息化战略目标的需求、运营策略的需求和人才培养的需求等三个方面。<font color="#e74f4c">技术需求</font>主要强调在信息层技术层面上对系统的完善、升级、集成和整合提出的需求。
企业信息化的规划和方法
方法
<b>业务流程重构方法:"</b>彻底的、根本性的”<font color="#e74f4c">重新设计流程</font>。<br>
<b>核心业务应用方法:</b>围绕<font color="#e74f4c">核心业务</font>推动信息化<br>
<b>信息系统建设方法</b>:建设<font color="#e74f4c">信息系统</font>作为企业信息化的重点和关键<br>
<b>主题数据库方法</b>:建立面向企业的<font color="#e74f4c">核心业务的数据库</font>,消除“<font color="#e74f4c">信息孤岛</font>”<br>
<b>资源管理方法</b>:切入点是为<font color="#e74f4c">企业资源管理</font>提供强大的能力。如:ERP、SCM。<br>
<b>人力资本投资方法</b>:人力资本理论【注意不是人力资源管理】把<font color="#e74f4c"><b>一部分</b>企业的<b>优秀员工</b>看作是一种资本</font>,能够取得投资收益。<br>
规划
第一阶段以<font color="#e74f4c">数据处理</font>为核心围绕<font color="#e74f4c">职能部门</font>需求
关键成功因素法(CSF,Critical Success Factors),确定开发<font color="#e74f4c">优先级</font><br>战略集合转化法(SST, Strategy Set Transformation),信息系统战略目标<br>企业系统规划法(BSP,BusinessSystem Planning),<br>此外还有:投资回收法、征费法、零线预算法、阶石法<br>
关键成功因素法通过对关键成功因素的识别,找出实现目标所需要的关键信息集合,从而确定系统开发的<font color="#e74f4c">优先次序</font>。关键成功因素来源于组织的目标,通过组织的<font color="#e74f4c">目标分解</font>和<font color="#e74f4c">关键成功因素识别</font>、<font color="#e74f4c">性能指标</font>识别,一直到产生<font color="#e74f4c">数据字典</font>。
第二阶段以<font color="#e74f4c">企业内部MIS</font>为核心围绕<font color="#e74f4c">企业整体</font>需求
战略数据规划法(SDP,StrategicDataPlanning):主题数据库<br>信息工程法(lE,Information Engineering)<br>战略栅格法(SG,Strategic Grid)<br>
第三阶段综合考虑企业内外环境以<font color="#e74f4c">集成</font>为核心,围绕<font color="#e74f4c">企业战略</font>需求
价值链分析法(VCA,Value Chain Analysis)<br>战略一致性模型(SAM,Strategic Alignment Model)<br>
业务流程优化方法
BPR:业务流程【<font color="#e74f4c">重组</font>】,<font color="#e74f4c">颠覆</font>原有流程,彻底性的<font color="#e74f4c">再设计</font><br>
BPM:业务流程【<font color="#e74f4c">管理</font>】,使用<font color="#e74f4c">PDCA(计划、执行、检查、行动)</font>循环,<font color="#e74f4c">持续改进</font><br>
客户关系管理CRM:目的是<font color="#e74f4c">提高收入</font>最大程度地帮助企业实现其<font color="#e74f4c">经营目标</font>,核心思想是以<font color="#e74f4c">客户</font>为中心<br>
<b>主要模块</b>:<font color="#e74f4c">销售</font>自动化、<font color="#e74f4c">营销</font>自动化、<font color="#e74f4c">客户服务与支持</font>、<font color="#e74f4c">商业智能</font><br>
<b>价值</b>:提高工作效率、节省开支、提高客户<font color="#e74f4c">满意度</font>、提高客户的<font color="#e74f4c">忠诚度</font><br>
供应链管理SCM:整合与优化“<font color="#e74f4c">三流</font>”、<font color="#e74f4c">打通企业间“信息孤岛”</font>,严格的数据交换标准。<br>
<font color="#e74f4c">信息流(核心)</font><br>
<font color="#e74f4c">需求</font>信息流(需方到供方):如<font color="#e74f4c">客户订单</font>、<font color="#e74f4c">生产计划</font>、<font color="#e74f4c">采购合同</font>等
<font color="#e74f4c">供应</font>信息流(供方到需方):如入库单、完工报告单、库存记录、可供销售量、提货发运单等
<font color="#e74f4c">资金</font>流:辅助<br>
<font color="#e74f4c">物流</font>:辅助<br>
商业智能BI:<font color="#e74f4c">决策分析</font>,分析历史数据<font color="#e74f4c">预测未来</font><br>
数据仓库
子主题
子主题
<font color="#e74f4c">OLAP</font>:联机分析处理<br>
数据挖掘
子主题
数据湖
数据湖是一个存储企业的<font color="#e74f4c">各种各样原始</font>数据的大型仓库,其中的数据可供<font color="#e74f4c">存取、处理、分析及传输</font>。
数据仓库仅支持数据分析处理。<br>数掘湖既支持<font color="#e74f4c">数据分析处理</font>,也支持<font color="#e74f4c">事务处理。</font>
子主题
企业应用集成EAI
定义:<br>
EAI用于消除<font color="#e74f4c">信息孤岛</font>(烟囱式架构),系统<font color="#e74f4c">互联互通</font><br>
共识度较高的分类
<font color="#e74f4c">表示</font>集成(<font color="#e74f4c">界面</font>集成):原有界面做一个集成页面,集成原有功能和页面<br>
<font color="#e74f4c">数据</font>集成:深入数据层级,一个系统更新时去<font color="#e74f4c">更新另一系统</font>相关模型的数据<br>
<font color="#e74f4c">控制</font>集成(应用集成、<font color="#e74f4c">API集成</font>):调用其他系统的API<br>
<font color="#e74f4c">业务流程</font>集成(<font color="#e74f4c">过程集成</font>、B2B):有<font color="#e74f4c">业务流程的优化</font><br>
<font color="#e74f4c">门户</font>集成:将内部系统对接到<font color="#e74f4c">互联网</font>上<br>
<b>企业<font color="#e74f4c">信息</font>门户(ElP)</b>:使员工/合作伙伴/客户/供应商都能够访问企业内部网络和因特网存储的各种自己所需的信息。【<font color="#e74f4c">统一访问入口</font>】<br>
<b>企业<font color="#e74f4c">知识</font>门户(EKP)</b>:企业网站的基础上增加知识性内容。【企业<font color="#e74f4c">知识库</font>】
<b>企业<font color="#e74f4c">应用</font>门户(EAP)</b>:以商业流程和企业应用为核心,把<font color="#e74f4c">商业流程中功能不同的应用模块</font>通过门户技术集成在一起。【企业信息系统的网上集成界】
<b><font color="#e74f4c">垂直</font>门户</b>:为某一<font color="#e74f4c">特定的行业</font>服务的,传送的信息只属于人们感兴趣的领域。
按信息传递分类
<b><font color="#e74f4c">消息</font>集成</b>:<font color="#e74f4c">数据量小</font>,交互频繁,立即地,<font color="#e74f4c"><b>异步</b></font><br>
<font color="#e74f4c">共享数据库</font>:<span style="font-weight:normal;">交互频繁,立即地,<font color="#e74f4c">同步</font></span><br>
<font color="#e74f4c">文件</font>传递:<span style="font-weight:normal;"><font color="#e74f4c">数据量大</font>,交互<font color="#e74f4c">频度小</font>,<font color="#e74f4c">即时性要求低</font>(月末,年末)</span><br>
电子商务
数字化转型
【数字化】是新一代信息技术真正的实现推动整个【<font color="#e74f4c">商业模式的变革</font>】,推动<font color="#e74f4c">产业链的重构</font>,推动改进企业与消费者之间的关系,以及企业与合作伙伴之间的关系。
发展阶段
<b><font color="#e74f4c">初始级</font>发展阶段:数<font color="#e74f4c">码</font>化</b>:<font color="#e74f4c">信息的数字化</font>,记录、储存、传输<font color="#e74f4c">数码化</font>。<br>
<b><font color="#e74f4c">单元级</font>发展阶段</b>:<b>数<font color="#e74f4c">量</font>化</b>:提升<font color="#e74f4c">单项业务</font>的运行规范性和效率。<br>
<b><font color="#e74f4c">流程级</font>发展阶段</b>:<b>数<font color="#e74f4c">字</font>化</b>:<font color="#e74f4c">关键业务流程</font>及关键业务与设备设施、软硬件、行为活动等要素间的<font color="#e74f4c">集成优化</font>。<br>
<b><font color="#e74f4c">网络级</font>发展阶段</b>:<b>数<font color="#e74f4c">模</font>化</b>:<font color="#e74f4c">组织(企业)</font>级数字化和产业互联网级网络化,实现以数据为驱动的<font color="#e74f4c">业务模式创新</font>。<br>
<b><font color="#e74f4c">生态级</font>发展阶段</b>:<b>数<font color="#e74f4c">用</font>化</b>:<font color="#e74f4c">生态级</font>数字化和泛在物联网级网络化,推动与生态合作伙伴间资源、业务、能力等要素的<font color="#e74f4c">开放共享和协同合作</font>。<br>
智能制造
智能特性:【<font color="#e74f4c">资源要素</font>】、<font color="#e74f4c">互联互通</font>、<font color="#e74f4c">融合共享</font>、<font color="#e74f4c">系统集成</font>、【<font color="#e74f4c">新兴业态</font>】<br>
生命周期:【<font color="#e74f4c">设备</font>】、生产、物流、销售、服务<br>
系统层级<br>
【<font color="#e74f4c">设备</font>层】传感器、仪器仪表、机器、<font color="#e74f4c">装置</font>等
【<font color="#e74f4c">单元</font>层】<font color="#e74f4c">企业内</font>处理信息、实现监测和控制物理流程的层级
【<font color="#e74f4c">车间</font>层】面向工厂或<font color="#e74f4c">车间</font>的生产管理的层级<br>
【<font color="#e74f4c">企业</font>层】面向<font color="#e74f4c">企业</font>经营<font color="#e74f4c">管理</font>的层级
【<font color="#e74f4c">协同</font>层】其内部和外部信息互联和共享,实现跨<font color="#e74f4c">企业间</font>业务协同的层级
3、<font color="#e74f4c">信息安全</font>技术基础知识<br> 综合5分
3.1 信息安全基础知识
3.1.1 <b>信息</b>安全概述<br>
信息安全的定义、基本要素、作用与意义
信息安全是指为数据处理系统而采取的技术的和管理的安全保护,保护计算机硬件、软件、数据不因偶然的或恶意的原因而遭到破坏、更改和泄露。<br>
信息安全的<font color="#e74f4c">基本要素</font>:<font color="#e74f4c">机密</font>性、<font color="#e74f4c">完整</font>性、<font color="#e74f4c">可用</font>性、<font color="#e74f4c">可控</font>性与<font color="#e74f4c">可审查</font>性。<br>
信息安全的<font color="#e74f4c">范围包括</font>:<font color="#e74f4c">设备</font>安全、<font color="#e74f4c">数据</font>安全、<font color="#e74f4c">内容</font>安全和<font color="#e74f4c">行为</font>安全。<br>
<font color="#e74f4c">数据安全</font>即采取措施确保数据免受未授权的泄露、篡改和毁坏,包括<font color="#e74f4c">秘密性(泄露)</font>、<font color="#e74f4c">完整性(篡改)</font>和<font color="#e74f4c">可用性(损坏)</font> 3 个方面。<br>
3.1.2 <b><font color="#e74f4c">信息存储</font></b>安全
信息存储安全的定义、作用与意义
<font color="#e74f4c">信息存储</font>安全的范围:<font color="#000000">数据的</font><font color="#e74f4c">加密</font>、<font color="#000000">信息</font><font color="#e74f4c">使用</font>的安全、<font color="#000000">系统安全</font><font color="#e74f4c">监控</font>、计算机<font color="#e74f4c">病毒</font><font color="#000000">防治</font>、和<font color="#000000">防止非法的</font><font color="#e74f4c">攻击</font>等。<br>
3.1.3 <b><font color="#e74f4c">网络</font></b>安全
网络安全的定义、作用与意义
网络安全的范围(安全漏洞、安全威胁和安全措施)<br>
<font color="#e74f4c">安全漏洞</font>和隐患表现在:<font color="#e74f4c">物理</font>安全性、<font color="#e74f4c">软件</font>安全漏洞、<font color="#e74f4c">不兼容使用</font>安全漏洞等方面。<br>
<font color="#e74f4c">安全威胁</font>表现在:<font color="#e74f4c">非授权访问</font>、信息<font color="#e74f4c">泄露或丢失</font>、破坏数据<font color="#e74f4c">完整性</font>、<font color="#e74f4c">拒绝服务攻击</font>、利用网络<font color="#e74f4c">传播病毒</font>等方面<br>
<font color="#e74f4c">安全措施</font>的目标包括:<font color="#e74f4c">访问控制</font>、<font color="#e74f4c">认证</font>、<font color="#e74f4c">完整性</font>、<font color="#e74f4c">审计</font>和<font color="#e74f4c">保密</font>等5个方面<br>
3.2 信息系统安全的<b>作用与意义</b>
国家安全与信息化领导小组的职能
国家对信息安全的相关要求和标准
3.3 信息安全系统的<font color="#e74f4c">组成框架</font>
3.3.1 <font color="#e74f4c">技术</font>体系<br>
<b><font color="#e74f4c">基础安全设备</font>、<font color="#e74f4c">终端设备</font>安全</b>、<b><font color="#e74f4c">计算机网络</font><font color="#000000">安全</font>、<font color="#e74f4c">操作系统</font><font color="#000000">安全</font>、<font color="#e74f4c">数据库</font>安全</b><br>
3.3.2 <font color="#e74f4c">组织机构</font>体系<br>
<b><font color="#e74f4c">决策</font>层、<font color="#e74f4c">管理</font>层、<font color="#e74f4c">执行</font>层</b><br>
3.3.3 <font color="#e74f4c">管理</font>体系
<b><font color="#e74f4c">法律</font>管理、<font color="#e74f4c">制度</font>管理和<font color="#e74f4c">培训</font>管理</b><br>
3.4 信息<font color="#e74f4c">加解密技术</font><br>
3.4.1 数据加密
数据加密的作用、意义和内涵
保密通信模型
数据加密是防止<font color="#e74f4c">未经授权的用户访问敏感信息</font>的手段,保障系统的<font color="#e74f4c">机密性</font>要素
3.4.2<font color="#e74f4c">对称</font>密钥加密算法
对称密钥算法的加密密钥和解密<font color="#e74f4c">密钥相同</font>,又称为共享密钥算法
<b>DES</b>:使用密钥加密的块算法(Data Encryption Standard),明文切分为 <font color="#e74f4c">64</font> 位的块(即分组),由<font color="#e74f4c"> 56 </font>位的密钥控制变换成<font color="#e74f4c"> 64 </font>位的密文。<br>
<b>三重DES</b>(Triple-DES)是 DES 的改进算法,使用<font color="#e74f4c">两把 56 位(112 位)</font>的密钥对明文做<font color="#e74f4c">三次 DES</font>加解密,。<br>
<b>AES</b>:高级加密标准(Advanced Encryption Standard,),分组长度 <font color="#e74f4c">128</font> 位,支持 <font color="#e74f4c">128 位、192 位和 256 </font>位 3 种密钥长度,用于替换脆弱的 DES 算法,且可以通过<font color="#e74f4c">软件或硬件</font>实现高速加解密。<br>
<b>IDEA</b>:<font color="#e74f4c">国际</font>数据加密算法(International Data Encryption Algorithm),分组长度 <font color="#e74f4c">64</font> 位,密钥长度 <font color="#e74f4c">128 </font>位,已经成为<font color="#e74f4c">全球通用</font>的加密标准。<br>
<b>SM<font color="#e74f4c">4</font>:</b><font color="#e74f4c">国密</font>算法,分组长度和密钥长度都是 <font color="#e74f4c">128</font> 位。<br>
3.4.3<font color="#e74f4c">非对称</font>密钥加密算法
用<font color="#e74f4c">公钥加密</font>,私钥解密,可实现<font color="#e74f4c">保密通信</font>;<br>用<font color="#e74f4c">私钥加密</font>,公钥解密,可实现<font color="#e74f4c">数字签名</font>;<br>
<b>RSA</b>(Rivest,Shamir and Adleman):是一种<font color="#e74f4c">国际通用</font>的公钥加密算法,安全性基于<font color="#e74f4c">大素数分解</font>的困难性,密钥的长度可以选择,但目前安全的密钥长度已经高达 2048 位。RSA 的计算速度比同样安全级别的对称加密算法慢 1000 倍左右。<br>
<b>SM<font color="#e74f4c">2</font></b>:<font color="#e74f4c">国密</font>算法,基于<font color="#e74f4c">椭圆曲线离散对数</font>问题,在相同安全程度的要求下,密钥长度和计算规模都比 RSA 小得多。<br>
3.5 <font color="#e74f4c">密钥管理</font>技术<br>
3.5.1 <font color="#e74f4c">对称密钥</font>的分配与管理
密钥的使用控制(密钥标签和控制矢量)
控制密钥的安全性:主要有<font color="#e74f4c">密钥标签</font>和<font color="#e74f4c">控制矢量</font>两种技术。<br>
密钥的分配方法有:<font color="#e74f4c">物理</font>方式、<font color="#e74f4c">加密</font>方式和<font color="#e74f4c">第三方加密</font>方式<font color="#e74f4c">DKC</font>。该第三方即密钥分配中心(Key Distribution Center,KDC)。<br>
3.5.2 <font color="#e74f4c">公钥</font>加密体制的密钥管理
<font color="#e74f4c">直接公开</font><font color="#000000">发布</font><font color="#e74f4c">PGP</font>
公用目录表
公钥管理机构
<font color="#e74f4c">公钥证书</font>及管理机构(<font color="#e74f4c">CA</font>)
3.5.3 公钥加密分配单钥密码体制的密钥
单钥密码体制的密钥分配方法
3.6 <font color="#e74f4c">访问控制</font>及<font color="#e74f4c">数字签名</font>技术
3.6.1 访问控制技术<br>
访问控制的基本模型:<font color="#e74f4c">主体</font>、<font color="#e74f4c">客体</font>和<font color="#e74f4c">控制策略</font><br>
访问控制的实现技术<br>
<font color="#e74f4c">控制矩阵</font>ACM:以<font color="#e74f4c">主体为行</font>索引,以<font color="#e74f4c">客体为列</font>索引的矩阵,该技术是后面三个技术的基础,当主客体元素很多的时候实现困难。<br>
<font color="#e74f4c">控制表</font>ACL:<font color="#e74f4c">按列</font>(即客体)保存访问矩阵,是目前最流行、<font color="#e74f4c">使用最多</font>的访问控制实现技术。<br>
<font color="#e74f4c">能力表</font>Capabilities:<font color="#e74f4c">按行</font>(即主体)保存访问矩阵<br>
<font color="#e74f4c">授权关系表</font>Authorization Relations:抽取访问矩阵中的<font color="#e74f4c">非空元素</font>保存,当矩阵是<font color="#e74f4c">稀疏矩阵</font>的时候很有效,常用于安全<font color="#e74f4c">数据库</font>系统<br>
3.6.2 数字签名
数字签名的定义和条件
数字签名是<font color="#e74f4c">公钥加密</font>技术与<font color="#e74f4c">数字摘要</font>技术的应用。
数字签名的条件是:<font color="#e74f4c">可信</font>、<font color="#e74f4c">不可伪造</font>、<font color="#e74f4c">不可重用</font>、<font color="#e74f4c">不可改变</font>和<font color="#e74f4c">不可抵赖</font>。
身份认证分类(数字签名、密钥和口令)
基于<font color="#e74f4c">对称密钥的签名</font>只能在<font color="#e74f4c">两方间</font>实现,而且需要双方共同信赖的<font color="#e74f4c">仲裁人</font>
基于<font color="#e74f4c">公钥</font>加密算法的数字签名则可以在<font color="#e74f4c">任意多方</font>间实现,不需要仲裁且可重复多次验证。<br>实际应用时先对<font color="#e74f4c">文件做摘要</font>,再对<font color="#e74f4c">摘要签名</font>,这样可以大大提升数字签名的速度。同时摘要的泄露不影响文件保密<br>
3.7 信息安全的<font color="#e74f4c">抗攻击</font>技术
3.7.1 密钥的选择
密钥的分类:<font color="#e74f4c">数据加密</font>密钥(<font color="#e74f4c">DK</font>)、<font color="#e74f4c">密钥加密</font>密钥(<font color="#e74f4c">KK</font>)<br>
<b>密钥生成涉及的三个因素:<font color="#e74f4c">增大密钥空间</font>、<font color="#e74f4c">选择强钥</font>和密钥的<font color="#e74f4c">随机性</font></b><br>
3.7.2 拒绝服务攻击与防御
DoS是使系统<font color="#e74f4c">不可访问</font>并因此拒绝合法的用户服务要求的行为,侵犯系统的<font color="#e74f4c">可用性</font>要素
传统拒绝服务攻击的分类:<font color="#e74f4c">消耗资源</font>、破坏或更改<font color="#e74f4c">配置信息</font>、物理破坏或改变<font color="#e74f4c">网络部件</font>、利用服务<font color="#e74f4c">程序中的处理错误</font>使服务失效<br>
分布式拒绝服务攻击(DDoS)<br>
现有的DDoS工具一般采用 Client(<font color="#e74f4c">客户端</font>)、Handler(<font color="#e74f4c">主控端</font>)、Agent(<font color="#e74f4c">代理端</font>)三级结构。
防御方法:<font color="#e74f4c">防火墙</font>、通信<font color="#e74f4c">数据量的统计</font>、<font color="#e74f4c">特征识别</font>、<font color="#e74f4c">修正问题和漏洞</font><br>
3.7.3 欺骗攻击与防御
<font color="#e74f4c">ARP</font>欺骗:ARP协议解析IP地址为<font color="#e74f4c">MAC</font>网卡物理地址,欺骗该机制即可<font color="#e74f4c">阻断正常的网络访问</font>。<br> 常用防范办法为<font color="#e74f4c">固化ARP表</font>、使用<font color="#e74f4c">ARP服务器</font>、<font color="#e74f4c">双向绑定</font>和<font color="#e74f4c">安装防护软件</font><br>
<font color="#e74f4c">DNS</font>欺骗:DNS协议解析域名为<font color="#e74f4c">IP</font>地址,欺骗该机制可以使用户<font color="#e74f4c">访问错误的服务器地址</font>。<br> 其检测有<font color="#e74f4c">被动监听检测</font>、<font color="#e74f4c">虚假报文探测</font>和<font color="#e74f4c">交叉检查查询</font> 3 种方法。<br>
<font color="#e74f4c">IP</font>欺骗:攻击者修改IP数据报的报头,把自身的IP地址<font color="#e74f4c">修改为另一个IP</font>,以获取信任。<br> 常用<font color="#e74f4c">防火墙</font>等防范 IP 欺骗。
3.7.4 端口扫描
端口扫描的目的和基本原理。
<b>原理</b>:尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复,则说明该端口开放,甚至可以获取一些信息<br><b>目的</b>:入侵者<font color="#e74f4c">搜集信息</font>的几种常用手法之一。<br>
端口扫描原理分类:<font color="#e74f4c">全TCP</font>连接、半打开式<font color="#e74f4c">SYN</font>扫描、<font color="#e74f4c">FIN</font>扫描和<font color="#e74f4c">代理</font>扫描<br>
3.7.5 强化TCP/IP堆栈以抵御拒绝服务攻击
<b><font color="#e74f4c">同步包风暴</font>(SYN Flooding)</b>:是应用最广泛的一种<font color="#e74f4c">DoS攻击</font>方式,攻击 TCP 协议<font color="#e74f4c">建立连接</font>的三次握手,让目标主机等待连接完成而耗尽资源。可以<font color="#e74f4c">减少等待超时时间</font>来防范。<br>
<b><font color="#e74f4c">ICMP</font>攻击</b>:例如“<font color="#e74f4c">Ping of Death</font>”攻击操作系统的<font color="#e74f4c">网络层缓冲区</font>,旧版操作系统会崩溃死机。防范方法是<font color="#e74f4c">流量过滤</font>、<font color="#e74f4c">打补丁</font>、<font color="#e74f4c">升级到新版</font>操作系统。<br>
<b><font color="#e74f4c">SNMP</font>攻击</b>:SNMP 协议常用于<font color="#e74f4c">管理网络设备</font>,早期的 SNMP V1 协议缺少认证,可能被攻击者入侵。防范方法是<font color="#e74f4c">升级 SNMP 协议到 V2 </font>以上并<font color="#e74f4c">设置访问密码</font>。
3.7.6 <b>系统漏洞扫描</b><br>
系统漏洞扫描的基本原理和意义
基于<font color="#e74f4c">网络</font>的漏洞扫描方法:通过<font color="#e74f4c">网络</font>来扫描目标主机的漏洞,常常被<font color="#e74f4c">主机边界的防护</font>所封堵,因而获取到的信息比较有限。<br>
基于<font color="#e74f4c">主机</font>的漏洞扫描方法:通常在目标系统上安装了一个<font color="#e74f4c">代理</font>(Agent)或者是<font color="#e74f4c">服务</font>(Services),因而能扫描到更多的漏洞。有扫描的漏洞<font color="#e74f4c">数量多</font>、<font color="#e74f4c">集中化</font>管理、<font color="#e74f4c">网络流量负载小</font>等优点<br>
3.8 信息安全的<font color="#e74f4c">保障体系</font>与<font color="#e74f4c">评估方法</font>
3.8.1 计算机信息系统安全保护等级
GB 17859—1999安全保护能力的5个等级<br>
第 1 级C1:<font color="#e74f4c">用户自主</font>保护级(对应 TCSEC 的 <font color="#e74f4c">C1</font> 级)
第 2 级C2:<font color="#e74f4c">系统审计</font>保护级(对应 TCSEC 的 <font color="#e74f4c">C2</font> 级)<br>
第 3 级B1:<font color="#e74f4c">安全标记</font>保护级(对应 TCSEC 的 <font color="#e74f4c">B1 </font>级)<br>
第 4 级B2:<font color="#e74f4c">结构化</font>保护级(对应 TCSEC 的 <font color="#e74f4c">B2 </font>级)
第 5 级B3:<font color="#e74f4c">访问验证</font>保护级(对应 TCSEC 的 <font color="#e74f4c">B3 </font>级)
安全性规章与保护私有信息规则(<b>信息系统安全法规与制度</b>、<b>计算机防病毒</b>制度和<b>保护私有信息</b>规则)
安全保密技术主要有
<b>DLP</b>:<font color="#e74f4c">数据泄密防护</font>(Data Leakage Prevention):通过一定的技术手段,防止企业的指定数据或信息资产以<font color="#e74f4c">违反安全策略</font>规定的形式<font color="#e74f4c">流出</font>企业的一种策略。<br>
<b>DW</b>:<font color="#e74f4c">数字水印</font>(Digital Watermark):通过数字信号处理方法,在数字化的媒体文件中嵌入<font color="#e74f4c">特定的标记</font>。水印分为<font color="#e74f4c">可感知</font>的和<font color="#e74f4c">不易感知</font>的两种。<br>
常用安全协议:<br>
<font color="#e74f4c">SSL</font>协议:是介于<font color="#e74f4c">应用层</font>和<font color="#e74f4c">TCP</font>层之间的安全通信协议,提供<font color="#e74f4c">保密性通信</font>、<font color="#e74f4c">点对点身份认证</font>、<font color="#e74f4c">可靠性通信</font> 3 种安全通信服务。<br>
<b>PGP</b>(Pretty Good Privacy):是一种<font color="#e74f4c">加密软件</font>,应用了多种密码技术,包括 RSA、IDEA、完整性检测和数字签名算法,实现了一个比较完善的密码系统。广泛地用于<font color="#e74f4c">电子邮件安全</font>。<br>
<b>IPSec</b>:互联网安全协议(Internet Protocol Security)。IPSec 是工作在<font color="#e74f4c">网络层</font>的安全协议,主要优点是它的<font color="#e74f4c">透明性</font>,提供安全服务<font color="#e74f4c">不需要更改应用程序</font>。<br>
<b><font color="#e74f4c">SET</font> 协议</b>。主要用于解决用户、商家和银行之间通过<font color="#e74f4c">信用卡支付</font>的交易问题,保证支付信息的机密、支付过程的完整、商户和持卡人身份合法性及可操作性。<br>
<b>HTTPS 协议</b>。详见第 3 小时,这里不再赘述。
3.8.2 安全风险管理
<b>风险评估</b>的基本要素及其关系(<b>脆弱性、资产、威胁、风险和安全措施</b>)
<b>安全风险</b>管理的定义、作用和重要性
<b>安全威胁</b>的定义和内涵<br>
<b>脆弱性</b>评估方法
安全风险是指由于系统存在的<font color="#e74f4c">脆弱性</font>所导致的安全事件<font color="#e74f4c">发生的概率</font>和可能<font color="#e74f4c">造成的影响</font>。
<b>风险评估</b>是对信息系统及由其处理、传输和存储的信息的<font color="#e74f4c">保密性</font>、<font color="#e74f4c">完整性</font>和<font color="#e74f4c">可用性</font>等安全属性进行科学评价的过程,是信息安全保障体系建立过程中重要的评价方法和决策机制
风险评估的基本要素为:<font color="#e74f4c">资产</font>、<font color="#e74f4c">脆弱性</font>、<font color="#e74f4c">威胁</font>、<font color="#e74f4c">风险</font>和<font color="#e74f4c">安全措施</font><br>
<font color="#000000">风险计算模型</font>包含:<font color="#e74f4c">信息资产</font>、<font color="#e74f4c">弱点/脆弱性</font>、<font color="#e74f4c">威胁</font>等关键要素。<br>
<b>脆弱性评估:</b>安全风险评估中的重要内容,脆弱性不仅包括各种资产<font color="#e74f4c">本身存在的脆弱性</font>,<font color="#e74f4c">没有正确实施的安全保护</font>措施本身也可能是一个安全薄弱环节<br>
<b>安全威胁</b>:一种对<font color="#e74f4c">机构</font>及其<font color="#e74f4c">资产</font>构成<font color="#e74f4c">潜在破坏</font>的可能性<font color="#e74f4c"><b>因素</b></font>或者<font color="#e74f4c"><b>事件</b></font>。<br>
4、<font color="#e74f4c">软件工程</font>基础知识<br> 综合8~15分<br> 案例、论文<br>
4.1软件工程
4.1.1软件工程概述
软件工程是以<font color="#e74f4c">工程的管理方法</font>去管理软件项目
软件危机(Software Crisis)具体表现为:软件开发<font color="#e74f4c">进度</font>难以预测、软件开发<font color="#e74f4c">成本</font>难以控制、软件<font color="#e74f4c">功能</font>难以满足用户期望、软件<font color="#e74f4c">质量</font>无法保证、软件难以<font color="#e74f4c">维护</font>和软件缺少适当的<font color="#e74f4c">文档</font>资料。
软件的<font color="#e74f4c">生命周期</font>:<font color="#e74f4c">需求</font>分析、软件<font color="#e74f4c">设计</font>、软件<font color="#e74f4c">开发</font>、运行<font color="#e74f4c">维护</font>、【<font color="#e74f4c">淘汰</font>】<br>
4.1.2 软件<font color="#e74f4c">过程</font>模型(软件<font color="#e74f4c">生命周期</font>模型)<br>
瀑布模型(<font color="#e74f4c">结构</font>方法、<font color="#e74f4c">需求明确</font>)<br>
特点:<br>
严格区分阶段,每个阶段<font color="#e74f4c">因果关系紧密相连</font>;
只适合<font color="#e74f4c">需求明确</font>的项目<br>
缺陷:<font color="#e74f4c">需求难以一次确定</font>、<font color="#e74f4c">变更的代价高</font>、<font color="#e74f4c">结果难以预见</font>、各阶段工作<font color="#e74f4c">不能并行</font>。<br>
过程:<font color="#e74f4c">需求分析SRS,软件设计,【程序设计</font>】<font color="#e74f4c">,编码实现,单元测试,集成测试,系统测试,运行维护</font><br>
原型模型(<font color="#e74f4c">迭代</font>方法、<font color="#e74f4c">需求不明确</font>)<br>
特点:适合<font color="#e74f4c">需求不明确</font>的项目<br>
阶段:<font color="#e74f4c">原型开发</font>阶段、<font color="#e74f4c">目标软件开发</font>阶段<br>
分类
<font color="#e74f4c">抛弃型</font>原型:快速原型模型<br>
<font color="#e74f4c">演化型</font>原型:演化模型<br>
与其他模型结合:<br>
与<font color="#e74f4c">瀑布</font>结合为<font color="#e74f4c">螺旋</font>模型
<font color="#e74f4c">增量</font>模型
<font color="#e74f4c">敏捷</font>模型
过程:<br>
螺旋模型(<font color="#e74f4c">循环迭代</font>方法、<font color="#e74f4c">快速原型+瀑布</font>,强调<font color="#e74f4c">风险,大型软件</font><font color="#000000">开发</font>)<br>
考虑了<font color="#e74f4c">风险</font>问题
以<font color="#e74f4c">快速原型</font>为基础+<font color="#e74f4c">瀑布</font>模型<br>
支持<font color="#e74f4c">大型软件</font>开发,适用于面向<font color="#e74f4c">规格说明</font>、面向<font color="#e74f4c">过程</font>和面向<font color="#e74f4c">对象</font>的软件开发方法
过程:把整个软件开发流程分成<font color="#e74f4c">多个阶段</font>,每一个阶段都由<font color="#e74f4c">目标设定(决定目标、方案和限制)</font>、<font color="#e74f4c">风险分析(评价方案、识别风险、消除风险)</font>、<font color="#e74f4c">开发和有效性验证</font>、<font color="#e74f4c">评审</font> 4 部分组成。<br>
4.1.3 敏捷模型(<font color="#e74f4c">迭代</font>增量、<font color="#e74f4c">适应性、以人为本、小型项目</font>)<br>
特点:<font color="#e74f4c">适应性</font>的、<font color="#e74f4c">以人为本</font>、<font color="#e74f4c">增量选代</font>、适合<font color="#e74f4c">小型项目</font><br>
敏捷宣言
<font color="#e74f4c">个体和交互</font>胜过<font color="#e74f4c">过程和工具</font><br>
<font color="#e74f4c">可工作的软件</font>胜过大量的<font color="#e74f4c">文档</font>
<font color="#e74f4c">客户合作</font>胜过合同<font color="#e74f4c">谈判</font>
<font color="#e74f4c">响应变化</font>胜过<font color="#e74f4c">遵循计划</font>
敏捷方法
极限编程<font color="#e74f4c">XP</font>:高效、<font color="#e74f4c">低风险</font>、【<font color="#e74f4c">测试先行</font>】、<font color="#e74f4c">近螺旋式</font>的开发方法。<br>
4大价值观
沟通交流【<font color="#e74f4c">加强面对面沟通</font>】
简单朴素【<font color="#e74f4c">不过度设计</font>】
反馈【<font color="#e74f4c">及时反馈</font>】
勇气【<font color="#e74f4c">接受变更的勇气</font>】
水晶<font color="#e74f4c">Cockburn</font>:<span>提倡<font color="#e74f4c">机动性</font>,强调不同的项目采用<font color="#e74f4c">不同策略</font></span><br>
并列争球<font color="#e74f4c">SCRUM</font>:1到4周为一个<font color="#e74f4c">选代周期</font>,按照<font color="#e74f4c">需求优先级</font>实现,侧重于<font color="#e74f4c">项目管理</font><br>
该方法侧重于项目管理。Scrum包括一系列实践和预定义角色的过程骨架(是一种<font color="#e74f4c">流程</font>、<font color="#e74f4c">计划</font>、<font color="#e74f4c">模式</font>,用于有效率地开发软件)。<br>在Scrum 中,使用产品 <font color="#e74f4c">Backlog</font>来管理<font color="#e74f4c">产品的需求</font>,产品Backlog 是一个按照商业价值排序的需求列表。<br>根据 Backlog 的内容,将整个开发过程分为若干个短的迭代周期(<font color="#e74f4c">Sprint</font>),在 Sprint 中,Scrum 团队从产品Backlog 中挑选<font color="#e74f4c">最高优先级</font>的需求组成 <font color="#e74f4c">Sprint Backlog</font>。<br>在每个迭代结束时,Scrum 团队将递交潜在可交付的<font color="#e74f4c">产品增量</font>。当所有 Sprint 结束时,团队提交最终的软件产品<br>
特征驱动开发方法<font color="#e74f4c">FDD</font>:认为有效的软件开发需要3要素【<font color="#e74f4c">人</font>、<font color="#e74f4c">过程</font>、<font color="#e74f4c">技术</font>】,将【<font color="#e74f4c">开发人员分类</font>】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。<br>
开放式源码<span style="font-weight:normal;">:采用<font color="#e74f4c">虚拟团队</font>,开发成员<font color="#e74f4c">分布各地</font></span>
自适应<font color="#e74f4c">ASD</font>:采用<font color="#e74f4c">预测猜测</font>--<font color="#e74f4c">协作合作</font>--<font color="#e74f4c">学习</font>的方式进行开发<br>
动态系统开发方法<font color="#e74f4c">DSDM</font>:倡导以<font color="#e74f4c">业务</font>为核心<br>
4.1.4 统一<font color="#e74f4c">过程</font>模型(UP|<font color="#e74f4c">RUP</font>)(<font color="#e74f4c">迭代</font>增量、<font color="#e74f4c">用例驱动、以架构为中心、重量级</font>)<br>
RUP是一种<font color="#e74f4c">重量级</font>过程模型,属于<font color="#e74f4c">构件化开发</font>使用的软件过程模型。将<font color="#e74f4c">项目管理</font>、<font color="#e74f4c">业务建模</font>、<font color="#e74f4c">分析与设计</font>等统一起来,贯穿整个开发过程
特点:<font color="#e74f4c">用例驱动</font>、<font color="#e74f4c">以架构为核心</font>、<font color="#e74f4c">迭代和增量</font><br>
阶段、生命周期
<font color="#e74f4c">初始</font>:定义最终产品视图和业务模型;确定<font color="#e74f4c">系统范围</font><br>
<font color="#e74f4c">细化</font>:设计及确定<font color="#e74f4c">系统架构</font>;制定<font color="#e74f4c">工作计划及资源要求</font><br>
【<font color="#e74f4c">构造</font>】:开发剩余构件和应用程序功能,把这些构件<font color="#e74f4c">集成为产品</font>,并进行<font color="#e74f4c">详细测试</font><br>
【<font color="#e74f4c">移交</font>】:确保软件对最终用户是可用的,进行<font color="#e74f4c">β测试</font>,制作产品<font color="#e74f4c">发布版本</font><br>
每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经满足。如果评审结果令人满意,就可以允许项目进入下一个阶段。这样做的好处是在软件开发的<font color="#e74f4c">早期就可以对关键的、影响大</font>的风险进行处理。<br>
核心工作流:<font color="#e74f4c">业务建模</font>、<font color="#000000">需求、分析与设计、实现、测试、部署</font>、<font color="#e74f4c">配置与变更管理</font>、<font color="#e74f4c">项目管理</font>、【<font color="#e74f4c">环境</font>】<br>
“4+1”视图模型(被UML吸收采纳)<br>
<font color="#e74f4c">逻辑</font>视图:对应<font color="#e74f4c">最终用户</font>,主要支持<font color="#e74f4c">功能性需求</font>,即在为用户提供服务方面系统所应该提供的功能。逻辑视图常用<font color="#e74f4c">类图</font>、<font color="#e74f4c">对象</font>图、<font color="#e74f4c">状态</font>图、<font color="#e74f4c">协作</font>图表示。<br>
<font color="#e74f4c">实现</font>视图:又称为<font color="#e74f4c">开发</font>视图,对应<font color="#e74f4c">程序员</font>,关注软件开发环境下实际模块的组织,描述系统的各部分如何被组织为模块和组件即开发环境中软件的静态组织结构。该视图通常包含<font color="#e74f4c">包图</font>和<font color="#e74f4c">组件图</font>。<br>
<font color="#e74f4c">进程</font>视图:又叫<font color="#e74f4c">过程</font>视图,对应<font color="#e74f4c">系统集成人员</font>,考虑一些非功能性的需求,如<font color="#e74f4c">性能和可用性</font>,它可以解决并发性、分布性、系统完整性、容错性的问题。进程视图常用<font color="#e74f4c">活动图</font>表示。<br>
<font color="#e74f4c">部署</font>视图:又叫<font color="#e74f4c">物理</font>视图,对应<font color="#e74f4c">系统、网络工程师</font>。描述如何将前三个视图中所述的系统设计实现为一组现实世界的实体。展示了如何把<font color="#e74f4c">软件映射到硬件</font>上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通信等问题。
<font color="#e74f4c">用例</font>视图:所有其他视图都依靠用例视图(场景)来<font color="#e74f4c">指导</font>它们,这就是将模型称为“4+1”的原因。
其他模型
V模型(<font color="#e74f4c">测试并行</font>)<br>
特点<br>
<font color="#e74f4c">测试</font>贯穿于始终
测试分阶段,<font color="#e74f4c">测试计划提前</font>
过程
构件组装模型(<font color="#e74f4c">重用灵活</font>)<br>
<b>优点:易<font color="#e74f4c">扩展</font>、易<font color="#e74f4c">重用</font>、<font color="#e74f4c">降低成本</font>、安排任务更<font color="#e74f4c">灵活</font>。</b><br>
缺点:构件设计要求<font color="#e74f4c">经验丰富的架构师</font>、<font color="#e74f4c">设计不好的构件难重用</font>、强调重用<font color="#e74f4c">可能牺牲其它指标(如性能)</font>、<font color="#e74f4c">第三方构件质量难控制</font>,<br>
示例:<font color="#e74f4c">方仓医院</font>、<font color="#e74f4c">乐高</font>积木<br>
过程:需求分析和定义、设计构建组装、建立构件库、构建应用组件、测试和发布<br>
快速开发模型(<font color="#e74f4c">RAD</font>)(<font color="#e74f4c">构件+瀑布、不适合新技术</font>)<br>
定义:<br>
基于<font color="#e74f4c">瀑布</font>和<font color="#e74f4c">构件</font>模型而来的开发方法,主流程用瀑布,每个阶段用构件提升构建速度
<font color="#e74f4c">基于构件</font>的开发方法,<font color="#e74f4c">用户参与</font>、开发或复用构件、模块化要求高,<font color="#e74f4c">不适合新技术</font><br>
过程:<font color="#e74f4c">业务</font>建模、<font color="#e74f4c">数据</font>建模、<font color="#e74f4c">过程</font>建模、<font color="#e74f4c">应用生成</font>、<font color="#e74f4c">测试与交付</font><br>
变换模型:适用于<font color="#e74f4c">形式化</font>开发;<br>
智能模型:基于<font color="#e74f4c">规则</font>系统的<font color="#e74f4c">专家</font>系统<br>
喷泉模型:<font color="#e74f4c">面向对象</font>方法,复用性好,开发过程无间隙,节省时间;<br>
4.1.5 软件能力成熟度模型<br>
软件能力<font color="#e74f4c">成熟度</font>模型(Capability Maturity Model for Software,CMM) 是一个概念模型,模型<font color="#e74f4c">框架和表示</font>是<font color="#e74f4c">刚性</font>的,不能随意改变,但模型的<font color="#e74f4c">解释和实现</font>有一定<font color="#e74f4c">弹性</font>。
软件能力<font color="#e74f4c">成熟度模型集成</font>(Capability Maturity Model Integration for Software,CMMI)是在 CMM 的基础上发展而来的。CMMI 提供了一个软件能力成熟度的<font color="#e74f4c">框架</font>,它将软件过程改进的步骤组织成5个成熟度等级:<font color="#e74f4c">初始</font>级、<font color="#e74f4c">已管理</font>级、<font color="#e74f4c">已定义</font>级、<font color="#e74f4c">量化管理</font>级、<font color="#e74f4c">优化</font>级。量化管理级与已定义级的区别是对<font color="#e74f4c">过程性能的可预测</font>。
4.2需求工程<br>
4.2.1 需求工程概述<br>
需求工程的发展、内容和特点<br>
软件需求是指<font color="#000000">用户对系统</font>在<font color="#e74f4c">功能、行为、性能、设计约束</font>等方面的<font color="#000000">期望</font>
活动阶段<br>
需求<font color="#e74f4c">开发</font>:需求<font color="#e74f4c">获取</font>、需求<font color="#e74f4c">分析</font>、形成需求<font color="#e74f4c">规格</font>(形成<font color="#e74f4c">SRS</font>)、需求<font color="#e74f4c">确认与验证</font>【形成<font color="#e74f4c">需求基线</font>(经过评审的SRS)】<br>
需求<font color="#e74f4c">管理</font>(对<font color="#e74f4c">需求基线</font>的管理):<font color="#e74f4c">变更控制、版本控制、需求跟踪、需求状态跟踪</font><br>
4.2.1 需求获取<br>
分层<br>
<font color="#e74f4c">业务</font><font color="#000000">需求</font>(整体<font color="#e74f4c">全局</font>):反映了组织机构或客户对系统、产品高层次的<font color="#e74f4c">目标</font>要求<br>
<font color="#e74f4c">用户</font><font color="#000000">需求</font>(<font color="#e74f4c">用户</font>视角):描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望。通常采取用户访谈和问卷调查等方式,对用户使用的场景(scenarios)进行整理,从而建立用户需求。业务需求和用户需求构成了用户原始<font color="#e74f4c">需求文档</font>的内容<br>
<font color="#e74f4c">系统</font>需求(<font color="#e74f4c">软件需求</font>)<br>
<font color="#e74f4c">功能</font>需求:从系统操作的角度定义了开发人员必须实现的软件功能,来满足业务需求和用户需求。<br>
业务需求
<font color="#e74f4c">非功能</font>需求(性能等)<br>
系统<font color="#e74f4c">约束</font>
项目管理维度QFD
基本需求<font color="#000000">(明示,常规需求)</font>
<font color="#e74f4c">期望</font>需求(<font color="#e74f4c">隐含</font>)<br>
<font color="#e74f4c">兴奋</font>需求(<font color="#e74f4c">多余</font>)
需求获取的基本步骤<br>
(1)开发高层的业务模型。<br>(2)定义项目范围和高层需求。<br>(3)识别用户角色和用户代表。<br>(4)获取具体的需求。<br>(5)确定目标系统的业务工作流。<br>(6)需求整理与总结。<br>
需求获取的方法
<b>用户面谈</b>:1对1-3,有<font color="#e74f4c">代表性的用户</font>,了解主观想法,交互好,<font color="#e74f4c">成本高</font>,要有<font color="#e74f4c">领域知识</font>支撑。<br>
需求专题讨论会(JRP)联合需求计划:高度组织的<font color="#e74f4c">群体会议</font>,各方参与,了解想法,<font color="#e74f4c">消除分歧</font>,<font color="#000000">交互好</font>,<font color="#e74f4c">成本高</font><br>
问卷调查:用户多,无法一一访谈,<font color="#e74f4c">成本低</font>。<br>
现场观察:针对较为<font color="#e74f4c">复杂的流程</font>和操作。<br>
原型化方法:通进<font color="#e74f4c">简易系统</font>方式解决早期<font color="#e74f4c">需求不确定</font>问题。<br>
头脑风暴法:一群人围绕<font color="#e74f4c">新业务</font>,<font color="#e74f4c">发散思维</font>,不产生新的观点。<br>
需求分析SA
参见4.3<br>
需求定义SRS
<font color="#e74f4c">严格定义</font>法
所有需求都<font color="#e74f4c">能够被预先定义</font><br>
开发人员与用户之间能够<font color="#e74f4c">准确而清晰</font>地交流
采用图形/文字可以<font color="#e74f4c">充分体现最终系统</font>
<font color="#e74f4c">原型</font>法
并非所有的需求都能在开发前被准确的说明
项目参加者之间通常都存在交流上的困难
需要实际的、可供用户参与的系统模型
有合适的系统开发环境
<font color="#e74f4c">反复</font>是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
需求确认与验证
需求<font color="#e74f4c">评审</font>:正式评审、非正式评审<br>
需求<font color="#e74f4c">测试</font>
用户确认签字
<font color="#e74f4c">验收标准</font>之一
4.2.2 需求变更
变更控制过程<br>
<font color="#e74f4c">问题分析</font>和<font color="#e74f4c">变更描述</font>
<font color="#e74f4c">变更分析</font><font color="#000000">和</font><font color="#e74f4c">成本计算</font>:<font color="#e74f4c">CCB来决策审批</font><br>
变更实现
变更控制委员会CCB由项目所涉及的多方成员共同组成,通常包括<font color="#e74f4c">用户</font>和<font color="#e74f4c">实施方</font>的决策人员。
CCB是<font color="#e74f4c">决策</font>机构,不是作业机构,通常 CCB 的工作是通过<font color="#e74f4c">评审</font>手段来决定项目<font color="#e74f4c">是否能变更</font>,但<font color="#e74f4c">不提出变更方案</font>。<br>过程及操作步骤为<font color="#e74f4c">制定决策</font>、<font color="#e74f4c">交流情况</font>、<font color="#e74f4c">重新协商约定</font>。
4.2.3 需求追踪<br>
双向跟踪及需求跟踪矩阵
<font color="#e74f4c">正向</font>跟踪:用户原始需求->软件需求->下游产品<br>
<font color="#e74f4c">逆向</font>跟踪:下游产品->软件需求->用户原始需求<br>
UC<font color="#e74f4c">需求跟踪矩阵</font>:纵列能看出做的多余功能,横列能看出未做的功能<br>
4.3 系统分析与设计<br>
系统分析与设计的目标、意义和范围
4.3.1 <font color="#e74f4c">结构化</font>方法(面向<font color="#e74f4c">功能</font>、<font color="#e74f4c">数据流</font>,<font color="#e74f4c">DFD</font>、<font color="#e74f4c">模块</font>)
结构化方法的定义、合理性准则和使用的手段
结构化分析、设计和实现图示(DFD、ERD、UML、流程图、NS图、PAD、PDL和E-R图)<br>
结构化方法又称为<font color="#e74f4c">面向功能</font>的软件开发方法或<font color="#e74f4c">面向数据流</font>的软件开发方法<br>
结构化<font color="#e74f4c">分析SA</font>(定义、分析步骤、<font color="#e74f4c">DFD</font>和数据字典)
利用<font color="#e74f4c">图形</font>表达用户需求中的功能需求,使用的手段主要有<font color="#e74f4c">数据流图(Data Flow Diagram,DFD)</font>、<font color="#e74f4c">数据字典</font>、<font color="#e74f4c">结构化语言</font>、<font color="#e74f4c">判定表</font>以及<font color="#e74f4c">判定树</font>等。
DFD组成元素:<font color="#e74f4c">数据流</font>、<font color="#e74f4c">处理/加工</font>、<font color="#e74f4c">数据存储</font>和<font color="#e74f4c">外部项</font>。
DFD图规则:
<font color="#e74f4c">父图</font>数据流必须在子图中出现;<br>一个处理至少有一个输入流和一个输出流;<br>一个存储必定有流入和流出;<br>一个数据流至少有一端是处理端;<br>模型表达的信息是<font color="#e74f4c">全面</font>的、<font color="#e74f4c">完整</font>的、<font color="#e74f4c">正确</font>的和<font color="#e74f4c">一致</font>的。<br>
分析步骤为:<font color="#000000">明确</font><font color="#e74f4c">目标</font><font color="#000000">、确定系统</font><font color="#e74f4c">范围</font><font color="#000000">、建立</font><font color="#e74f4c">顶层DFD</font><font color="#000000">图、构建</font><font color="#e74f4c">第一层DFD</font><font color="#000000">分解图、</font><font color="#e74f4c">开发DFD层次结构图</font><font color="#000000">、</font><font color="#e74f4c">检查确认DFD</font><font color="#000000">图</font><br>
数据字典(Data Dictionary)是一种标记用户可以访问的<font color="#e74f4c">数据项</font>和<font color="#e74f4c">元数据</font>的目录,是对系统中使用的所有数据元素定义的集合,包括<font color="#e74f4c">数据项</font>、<font color="#e74f4c">数据结构</font>、<font color="#e74f4c">数据流</font>、<font color="#e74f4c">数据存储</font>和<font color="#e74f4c">处理过程</font>。
结构化<font color="#e74f4c">设计SD</font>(基本思想、<font color="#e74f4c">模块</font>结构、概要设计、详细设计)<br>
SD是一种<font color="#e74f4c">面向数据流</font>的设计方法,以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个<font color="#e74f4c">自顶向下</font>、<font color="#e74f4c">逐步求精</font>和<font color="#e74f4c">模块化</font>的过程<br>
软件结构化设计包括<font color="#e74f4c">架构</font><font color="#000000">设计</font>、<font color="#e74f4c">接口</font>设计、<font color="#e74f4c">数据</font>设计和<font color="#e74f4c">过程</font>设计等任务。<br>
<font color="#e74f4c">模块</font>是实现功能的基本单位,一般具有<font color="#e74f4c">功能</font>、<font color="#e74f4c">逻辑</font>和<font color="#e74f4c">状态</font>3个基本属性。
模块<font color="#e74f4c">独立性</font>原则(高内聚、低耦合、四要素)<br>
模块的四要素
<font color="#e74f4c">输入和输出</font>:模块的输入来源和输出去向都是<font color="#e74f4c">同一个调用者</font>,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。<br>
<font color="#e74f4c">处理功能</font>:指模块把<font color="#e74f4c">输入转换成输出所做的工作</font>。<br>
<font color="#e74f4c">内部数据</font>:模块本身<font color="#e74f4c">引用的数据</font>。<br>
<font color="#e74f4c">程序代码</font>:指用来<font color="#e74f4c">实现模块功能的程序</font>。<br>
<font color="#e74f4c">耦合</font>:模块<font color="#e74f4c">间</font>的关联<br>
<font color="#e74f4c">非直接</font>耦合<br>
两个模块之间<font color="#e74f4c">没有直接关系</font>,它们之间的联系完全是通过主模块的控制和调用来实现的<br>
<font color="#e74f4c">数据</font>耦合<br>
一组模块借助参数表传递<font color="#e74f4c">简单数据</font><br>
<font color="#e74f4c">标记</font>耦合<br>
一组模块通过参数表传递<font color="#e74f4c">记录信息(数据结构</font>)
<font color="#e74f4c">控制</font>耦合<br>
模块之间<font color="#e74f4c">传递的信息</font>中包含用于<font color="#e74f4c">控制模块内部逻辑</font>的信息
<font color="#e74f4c">外部</font>耦合<br>
一组模块都访问<font color="#000000">同一</font><font color="#e74f4c">全局简单变量</font>,而且不是通过参数表传递该全局变量的信息<br>
<font color="#e74f4c">公共</font>耦合<br>
多个模块都访问<font color="#000000">同一个</font><font color="#e74f4c">公共数据结构</font>
<font color="#e74f4c">内容</font>耦合
一个模块直接访问另一个模块的<font color="#e74f4c">内部数据</font>;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序<font color="#e74f4c">代码重叠;</font>一个模块有多个入口
<font color="#e74f4c">内聚</font>:<font color="#000000">模块</font><font color="#e74f4c">内</font>部件的联系程度<br>
<font color="#e74f4c">功能</font>内聚<br>
完成一个<font color="#e74f4c">单一功能</font>各个部分协同工作,缺一不可
<font color="#e74f4c">顺序</font>内聚<br>
处理元素相关,而且必须<font color="#e74f4c">顺序</font>执行
<font color="#e74f4c">通信</font>内聚<br>
所有处理元素集中在<font color="#e74f4c">一个数据结构</font>的区域上
<font color="#e74f4c">过程</font>内聚
处理元素相关,而且必须按<font color="#e74f4c">特定的次序</font>执行<br>
<font color="#e74f4c">时间</font>内聚(<font color="#e74f4c">瞬时</font>内聚)<br>
所包含的任务必须在<font color="#e74f4c">同一时间间隔内</font>执行<br>
<font color="#e74f4c">逻辑</font>内聚
完成<font color="#e74f4c">逻辑上相关</font>的一组任务<br>
<font color="#e74f4c">偶然</font>内聚(<font color="#e74f4c">巧合</font>内聚)<br>
完成一组<font color="#e74f4c">没有关系或松散关系</font>的任务
保持模块的<font color="#e74f4c">大小</font>适中
多扇入,少扇出<br>
<font color="#e74f4c">深度和宽度</font>均不宜过高:防止模块<font color="#e74f4c">过于复杂</font>,深度代表调用别的模块层次多、宽度代表调用别的模块数量多<br>
阶段
<b>没有原型设计</b>
<font color="#e74f4c">概要</font>设计【外部设计】:功能需求分配给软件模块,确定每个<font color="#e74f4c">模块</font>的<font color="#e74f4c">功能和调用关系</font>,形成<font color="#e74f4c">模块|系统结构图</font><br>
<font color="#e74f4c">详细</font>设计【内部设计】:为每个<font color="#e74f4c">具体任务</font>选择适当的<font color="#e74f4c">技术手段</font>和<font color="#e74f4c">处理方法,</font>详细设计的表示工具有<font color="#e74f4c">图形</font>工具、<font color="#e74f4c">表格</font>工具和<font color="#e74f4c">语言</font>工具。图形有业务流图、程序流程图、问题分析图(Problem AnalysisDiagram,PAD)、NS 流程图等。<br>
结构化<font color="#e74f4c">编程SP</font>(基本思想、步骤和结构化程序设计的原则)<br>
SP通过<font color="#e74f4c">顺序</font>、<font color="#e74f4c">分支</font>和<font color="#e74f4c">循环</font>三种基本的控制结构可以构造出任何单入口单出口的程序。<br>
SP强调:<font color="#e74f4c">自顶向下</font>,<font color="#e74f4c">逐步细化</font>;<font color="#e74f4c">清晰第一,效率第二</font>;<font color="#e74f4c">书写规范,缩进格式</font>;<font color="#e74f4c">基本结构,组合而成</font>。
P原则:程序=(<font color="#e74f4c">算法</font>)+(<font color="#e74f4c">数据结构)</font>。两者分开设计,以<font color="#e74f4c">算法(函数或过程)</font>为主。
数据库设计(概念结构设计、逻辑结构设计和<font color="#e74f4c">E-R</font>)
建立抽象的概念数据模型,通常采用<font color="#e74f4c">实体-联系</font>图(Entity Relationship Diagram,<font color="#e74f4c">E-R</font>图)来表示。
4.3.2 <font color="#e74f4c">面向对象</font>方法(对象类、结构、主题、属性、服务|方法;类、对象;)<br>
面向对象方法的定义、内涵、过程和设计原则
面向对象<font color="#e74f4c">分析方法OOA(对象类、结构、主题、属性、服务|方法)</font><br>
5个层次:主题层、对象类层、结构层、属性层和服务层<br>
5个活动:标识对象类、标识结构、定义主题、定义属性和定义服务<br>
5个步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法
基本原则:抽象、封装、继承、分类、聚合、关联、<font color="#e74f4c">消息通信</font>、<font color="#e74f4c">粒度控制</font>和<font color="#e74f4c">行为分析</font><br>
面向对象<font color="#e74f4c">设计方法OOD</font>(边界<font color="#e74f4c">类</font>、控制类、实体类)<br>
类封装了<font color="#e74f4c">信息</font>和<font color="#e74f4c">行为</font>,是具有相同<font color="#e74f4c">属性</font>、<font color="#e74f4c">方法</font>和<font color="#e74f4c">关系</font>的对象集合的总称
类的类型
<font color="#e74f4c">边界</font>类:跟<font color="#e74f4c">外界</font>打交道<br>
<font color="#e74f4c">人机</font>交互:用户<font color="#e74f4c">界面</font><br>
黄金三法则
置于<font color="#e74f4c">用户控制之下</font><br>
以<font color="#e74f4c">不强迫</font>用户进入不必要的或不希望的动作的方式来定义交互方式;<br>提供<font color="#e74f4c">灵活的交互</font>;<br>允许用户交互<font color="#e74f4c">可以被中断和撤销</font>;<br>当技能级别增加时可以使交互流水化并允许定制交互;<br>使用户<font color="#e74f4c">隔离内部技术细节</font>;<br>设计应允许用户和出现在屏幕上的对象直接交互;
减少用户的记忆负担<br>
减少对短期记忆的要求<br>建立有意义的<font color="#e74f4c">缺省</font><br>定义直觉性的<font color="#e74f4c">捷径</font><br>界面的视觉布局应该基于<font color="#e74f4c">真实世界的隐喻</font><br>以<font color="#e74f4c">不断进展</font>的方式揭示信息<br>
保持<font color="#e74f4c">界面的一致性</font>
允许用户将当前任务放入有意义的语境<br>在应用系列内保持<font color="#e74f4c">一致性</font><br>如过去的交互模型已建立起了用户期望,除非有迫不得已的理由不要改变它<br>
<font color="#e74f4c">机器</font>:<font color="#e74f4c">API</font><br>
例:显示屏、窗体、打印机接口、通信协议、对话框、菜单、购物车、报表、二维码
<font color="#e74f4c">控制</font>类:<font color="#e74f4c">调用实体类,进行演算得到结果给边界类</font><br>
应用逻辑、业务逻辑、实体访问逻辑
例如:身份验证器<br>
<font color="#e74f4c">实体</font>类
对接<font color="#e74f4c">数据库</font>,实体和关系的映射
<b>基本过程</b>
面向对象<font color="#e74f4c">程序设计OOP</font>(<font color="#e74f4c">对象</font>,设计模式、封装继承多态)<br>
设计原则
<font color="#e74f4c">单一职责</font>原则:设计<font color="#e74f4c">目的单一</font>的类,只完成一个职能,关系简单,使系统达到<font color="#e74f4c">高内聚低耦合</font><br>
<font color="#e74f4c">开闭</font>原则:对<font color="#e74f4c">扩展开放</font>,对<font color="#e74f4c">修改封闭</font>,防止破坏原有代码的功能<br>
<font color="#e74f4c">李氏(Liskov)替换</font>原则:<font color="#e74f4c">子类可以替换父类</font>,泛华关系,子类<font color="#e74f4c">不能重写</font>父类的方法<br>
<font color="#e74f4c">依赖倒置</font>原则:要依赖于<font color="#e74f4c">抽象</font>,而不是具体实现,针对<font color="#e74f4c">接口</font>编程,不要针对实现编程,防止<font color="#e74f4c">过度耦合,灵活性、可扩展性</font><font color="#000000">都会更好</font><br>
<font color="#e74f4c">接口隔离</font>原则:使用<font color="#e74f4c">多个专门的接口</font>比使用单一的总接口要好<br>
<font color="#e74f4c">组合重用</font>原则:要尽量<font color="#e74f4c">使用组合</font>,而不是继承关系达到重用目的,防止继承的<font color="#e74f4c">紧耦合</font><br>
<b><font color="#e74f4c">迪米特</font>(Demeter)原则(<font color="#e74f4c">最少知识</font>原则):一个对象应当对其他对象有<font color="#e74f4c">尽可能少的了解</font><font color="#000000">,</font><font color="#e74f4c">信息隐蔽</font><font color="#000000">原则</font></b><br>
软件设计模式
<b>创建型</b>:单抽原件厂,用来<font color="#e74f4c">创建对象</font><br>
单例模式:Singleton、每次只实例化一个对象(唯一实例)<br>
保证一个类只有一个实例,并提供一个访问它的全局访问点
抽象工厂模式:Abstract Factory、抽象接口,生产成系列对象<br>
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类
原型模式:Prototype、复用、拷贝原型<br>
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象
建造者模式:Builder、类与构造分离,复杂对象构造<br>
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
工厂方法模式:Factory Method、子类实例化对象,动态生产对象<br>
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟
<b>结构型</b>:外侨组员戴配饰,处理<font color="#e74f4c">类或对象的组合</font><br>
外观模式:Fagade、对外统一接口<br>
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用
桥接模式:Bridge、<font color="#e74f4c">抽象实现分离</font>,继承<br>
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化
组合模式:Composite、部分与整体的关系、树形目录结构<br>
将对象组合成树型结构以表示“整体·部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
享元模式:Flyweight、<font color="#e74f4c">细粒度复用共享</font>,汉字编码<br>
提供支持大量细粒度对象共享的有效方法
代理模式:Proxy、代理控制、快捷方式<br>
为其他对象提供一种代理以控制这个对象的访问
适配器模式:Adapter、接口转换、兼容<br>
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作
装饰器模式:Decorator、动态附加职责<br>
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
<b>行为型</b>:观摩对策、责令解放、戒忘台,描述类与对象之间怎样交互、怎样<font color="#e74f4c">分配职责</font><br>
观察者模式:Observer、<font color="#e74f4c">通知、自动更新,联动</font><br>
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
模板方法:Template Method、算法结构不变,子类定义步骤、框架<br>
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定 义算法的某些特定步骤
迭代模式:lterator、<font color="#e74f4c">顺序访问</font>、<font color="#e74f4c">数据集</font><br>
提供一种方法来顺序访问一个聚合对象中的各个元素
策略模式:Strategy,算法替换、多方案切换<br>
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化
责任链模式:Chain of Responsi bility,传递请求、职责、链接<br>
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求
命令模式:Command,参数化、日志记录、可撤销<br>
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,
解释器模式:Interpreter,文法、解释、虚拟机<br>
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器根据文法表示来解释语言中的句子<br>
访问者模式:Visitor,类不变、新操作,<font color="#e74f4c">数据与操作分离</font><br>
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作
中介者模式:Mediator,不直接引用<br>
用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对 象间的交互
备忘录模式:Memento,<font color="#e74f4c">保存、恢复</font>、游戏存档<br>
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态
状态模式:State,状态变成类
允许一个对象在其内部状态改变时改变它的行为
OOP以<font color="#e74f4c">对象</font>为核心,该方法认为程序由一系列对象组成。<br>
基本特点有:<font color="#e74f4c">封装</font>、<font color="#e74f4c">继承</font>和<font color="#e74f4c">多态</font><br>
封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作组装到一起。
继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。继承可以分为4类,分别为<font color="#e74f4c">取代</font>继承、<font color="#e74f4c">包含</font>继承、<font color="#e74f4c">受限继</font>承<br>和<font color="#e74f4c">特化</font>继承。
多态指同一操作作用于不同的对象,可以产生不同的结果。
数据持久化与数据库(SQL、JDBC和JDO)<br>
永久保存对象的状态,需要进行对象的<font color="#e74f4c">持久化</font>(Persistence),把内存中的对象保存到数据库或可永久保存的存储设备中。
在多层软件设计和开发中采用持久层(Persistence Layer)专注于实现数据持久化,将对象持久化到关系数据库中,需要进行对象/关系的映射(Object/Relation Mapping,<font color="#e74f4c">ORM</font>)。目前主流的持久化技术框架包括 Hibernate、iBatis/Mybatis和 JDO 等
4.3.3 其他设计方法
构件与<font color="#e74f4c">软件重用</font>
软件重用是使用<font color="#e74f4c">已有软件</font>产品来开发新的软件系统的过程,分为<font color="#e74f4c">水平</font>式重用(标准<font color="#e74f4c">函数库</font>)和<font color="#e74f4c">垂直</font>式重用(<font color="#e74f4c">区块链、域分析</font>)两种类型<br>
软件架构重用是一个<font color="#e74f4c">解释</font>性、<font color="#e74f4c">交互</font>式和<font color="#e74f4c">反复迭代</font>的过程,包括了多项活动。<br><font color="#e74f4c">信息提取</font>通过分析系统现有设计和实现工件来构造它的模型。其结果用于在后续活动中构造系统的视图。<br><font color="#e74f4c">数据库构建</font>活动把视图中包含的元素和关系转换为数据库中的标准存储格式。<br><font color="#e74f4c">视图融合</font>活动包括定义和操作数据库中存储的信息理顺、加强并建立起元素之间的连接。<br>重构由两个主要活动组成:<font color="#e74f4c">可视化和交互式</font>及<font color="#e74f4c">模式定义与识别</font>。前者提供了一种让用户操作架构元素的机制,后者则提供了用于架构重构的设施<br>
逆向工程
<b>相关概念</b>
<b>(1)重构/重组(Restructuring)</b>。重构是指在【<font color="#e74f4c">同一抽象级别</font>】上【<font color="#e74f4c">转换</font>系统描述形式】
(<b>2)设计恢复(Design recovery)</b>。设计恢复是指借助<font color="#e74f4c">工具</font>从已有程序中抽象出有关<font color="#e74f4c">数据设计、总体结构设计和过程设计</font>等方面的信息。<font color="#e74f4c">逆向工程得出的设计是设计恢复</font>,但不一定能够抽象还原到原设计。
<b>(3)逆向工程(Reverse engineering):</b>逆向工程是<font color="#e74f4c">分析程序</font>,力图在比源代码<font color="#e74f4c">更高</font>抽象层次上建立<font color="#e74f4c">程序的表示过程</font>,逆向工程是<font color="#e74f4c">设计的恢复过程</font>。<br>
<b>(4)正向工程(Forward engineering)</b>。正向工程是指不仅从现有系统中恢复设计信息且使用该信息去<font color="#e74f4c">改变或重构现有系统</font>,以<font color="#e74f4c">改善其整体质量。</font><br>
<b>(5)再工程/重构工程(Re-engineering)</b>。再工程是对<font color="#e74f4c">现有系统的重新开发过程</font>,包括<font color="#e74f4c">逆向工程、新需求的考虑过程和正向工程</font>三个步骤。
过程
现有工程
再/重构工程<br>
逆向工程
<font color="#e74f4c">实现</font>级:包括程序的<font color="#e74f4c">抽象语法树、符号表、过程</font>的设计表示<br>
<font color="#e74f4c">结构</font>级:包括反映<font color="#e74f4c">程序分量各部分之间</font>相互依赖关系的信息,例如<font color="#e74f4c">调用图、结构图、程序和数据结构</font>
<font color="#e74f4c">功能</font>级:包括反映<font color="#e74f4c">程序段功能</font>及<font color="#e74f4c">程序段之间</font>关系的信息,例如<font color="#e74f4c">数据和控制流模型</font>
<font color="#e74f4c">领域</font>级:包括反映程序分量或程序诸<font color="#e74f4c">实体与应用领域</font>概念之间对应关系的信息,例如<font color="#e74f4c">实体关系模型</font>
新需求
正向工程
新系统
<font color="#e74f4c">形式化</font>方法:净室软件工程<br>
4.4 软件测试
软件测试的目的和意义
测试是确保软件的<font color="#e74f4c">质量</font>,确认软件以正确的方式做了用户所期望的事情。<br>软件测试通常在规定的<font color="#e74f4c">时间</font>和<font color="#e74f4c">成本</font>内完成,以尽量多地发现漏洞,但不能保证发现所有的漏洞。<br>
4.4.1 测试方法
按程序<font color="#e74f4c">执行状态</font>分<br>
<font color="#e74f4c">动态</font>测试是通过运行程序发现错误,包括黑盒测试(<font color="#e74f4c">等价类</font>划分、<font color="#e74f4c">边界值</font>分析法、<font color="#e74f4c">错误推测</font>法)与白盒测试(各种类型的<font color="#e74f4c">覆盖测试</font>)。
<font color="#e74f4c">静态</font>测试是人工测试方式,包括<font color="#e74f4c">桌面检查</font>、<font color="#e74f4c">代码走查</font>、<font color="#e74f4c">代码审查</font>。
按程序<font color="#e74f4c">执行方式</font>分:人工测试、自动化测试<br>
按是否关注<font color="#e74f4c">内部实现和结构</font>分:黑盒测试、白盒测试<br>
4.4.2 测试阶段
阶段<br>
<font color="#e74f4c">单元</font>测试:主要是对该软件的<font color="#e74f4c">模块</font>进行测试,往往由程序员自己完成。常采用<font color="#e74f4c">白盒的静态</font><font color="#000000">测试</font>如静态分析、代码审查等,也可以采用<font color="#e74f4c">自动化的动态</font>测试。<br>
<font color="#e74f4c">集成</font>测试:对通过单元测试的<font color="#000000">模块进行</font><font color="#e74f4c">组装</font>测试,以验证组装的正确性,一般采用<font color="#e74f4c">白盒</font>测试和<font color="#e74f4c">黑盒</font>测试结合的方法。集成测试可以分为<font color="#e74f4c">一次性</font>组装和<font color="#e74f4c">增量式</font>组装,增量式组装测试效果更好。集成测试<font color="#e74f4c">计划</font>一般在<font color="#e74f4c">概要设计阶段</font>完成。<br>
<font color="#e74f4c">系统</font>测试:检查组装完成的系统是否符合 <font color="#e74f4c">SRS 的要求</font>。主要测试内容包括<font color="#e74f4c">功能</font>测试、<font color="#e74f4c">性能</font>测试、<font color="#e74f4c">健壮性</font>测试、<font color="#e74f4c">安全性</font>测试等,结束标志是测试工作已满足测试目标所规定的需求覆盖率,并且测试所发现的缺陷都已全部归零。<br>
<font color="#e74f4c">验收</font>测试:确认系统满足<font color="#e74f4c">用户需求</font>或者<font color="#e74f4c">协议</font>的要求,确保系统能<font color="#e74f4c">支撑业务运行</font><br>
测试项:<font color="#e74f4c">代码</font>审查、<font color="#e74f4c">语句覆盖</font>测试、<font color="#e74f4c">结构覆盖</font>测试、功能测试、性能测试、<font color="#e74f4c">鲁棒性测试(瞬时稳定性)</font>、压力测试、安全性测试、<font color="#e74f4c">可靠性测试(长期持久性)</font>和验收测试<br>
其他测试还有 <font color="#e74f4c">AB</font> 测试、<font color="#e74f4c">Web</font> 测试、<font color="#e74f4c">链接</font>测试和<font color="#e74f4c">表单</font>测试等。
<b>4.5 <font color="#e74f4c">净室</font>软件工程(<font color="#e74f4c">盒子结构规约</font>、<font color="#e74f4c">形式化</font>方法</b>、<b><font color="#e74f4c">正确</font>性、函数、抽样)</b><br>
净室软件工程的定义、意义和作用
净室即无尘室、洁净室。也就是<font color="#e74f4c">一个受控污染级别的环境</font>。
使用<font color="#e74f4c">盒子结构规约</font>(或<font color="#e74f4c">形式化方法</font>)进行分析和设计建模,并且强调将<font color="#e74f4c">正确性验证,而不是测试</font>,作为发现和消除错误的主要机制。
4.5.1 理论基础:<font color="#e74f4c">函数</font>和<font color="#e74f4c">抽样</font>理论<br>
4.5.2 技术手段
统计过程控制下的增量式开发:<font color="#e74f4c">控制迭代</font><br>
基于<font color="#e74f4c">函数</font>的规范和设计
<font color="#e74f4c">行为</font>视图(<font color="#e74f4c">黑</font>盒)<br>
<font color="#e74f4c">有限状态机</font>视图(<font color="#e74f4c">状态</font>盒)<br>
<font color="#e74f4c">过程</font>视图(<font color="#e74f4c">明盒</font>)
正确性验证:净室工程的核心,使用<font color="#e74f4c">正确性验证</font>替代<font color="#e74f4c">测试</font><br>
统计测试和软件认证:使用<font color="#e74f4c">统计学</font>原理,总体太大时必须采用<font color="#e74f4c">抽样方法</font><br>
4.5.3 应用与缺点:<font color="#e74f4c">太理想化</font>、<font color="#e74f4c">忽视测试</font>、<font color="#e74f4c">传统软件工程的弊端</font><br>
4.6 基于<font color="#e74f4c">构件</font>的软件工程(<font color="#e74f4c">CBSE</font>、<font color="#e74f4c">分布对象</font>、<font color="#e74f4c">复用</font>)<br>
CBSE的定义、作用和特点
定义:是一种基于<font color="#e74f4c">分布对象</font>技术、强调通过可复用构件设计与构造软件系统的软件<font color="#e74f4c">复用</font>途径。<br>
构件特征<br>
<font color="#e74f4c">可组装</font>性:所有<font color="#e74f4c">外部交互</font>必须通过<font color="#e74f4c">公开定义的接口</font>进行。<br>
<font color="#e74f4c">可部署</font>性:必须能作为一个<font color="#e74f4c">独立实体</font>在提供其构件模型实现的构件平台上<font color="#e74f4c">运行</font><br>
<font color="#e74f4c">文档</font>化:构件必须是<font color="#e74f4c">完全文档化</font>的。<br>
<font color="#e74f4c">独立</font>性:构件应该是<font color="#e74f4c">独立的</font>,如确实需要其他构件提供服务,则应<font color="#e74f4c">显示声明</font><br>
<font color="#e74f4c">标准</font>化:符合<font color="#e74f4c">某种标准化</font>的构件模型。<br>
4.6.1 构件和构件模型
构件模型定义了<font color="#e74f4c">构件实现</font>、<font color="#e74f4c">文档化</font>以及<font color="#e74f4c">开发的标准</font>。目前主流的构件模型是<font color="#e74f4c">Web Services</font>模型、Sun 公司的 <font color="#e74f4c">EJB </font>模型和微软的<font color="#e74f4c">.NET</font> 模型。
构建模型要素:<font color="#e74f4c">接口</font>、<font color="#e74f4c">使用信息</font>和<font color="#e74f4c">部署信息</font>。<br>
构件模型提供了一组被构件使用的通用服务,包括<font color="#e74f4c">平台</font>服务和<font color="#e74f4c">支持</font>服务。<br>
<font color="#e74f4c">容器</font>是构件模型基础设施,是支持服务的一个实现加上一个接口定义,构件必须提供该接口定义以便和容器整合在一起。
4.6.2 CBSE 过程
支持基于构件组装的软件开发过程主要包括:<br>(1)系统需求概览。<br>(2)识别候选构件。<br>(3)根据发现的构件修改需求。<br>(4)体系结构设计。<br>(5)构件定制与适配。<br>(6)组装构件,创建系统。<br>
CBSE 过程与传统的软件开发过程的不同点:<br>(1)早期需要完整的需求,以便尽可能多地识别出可复用的构件。<br>(2)早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE。<br>(3)架构设计完成后,可能需要修改构件以适合功能和架构的需求。<br>(4)开发过程就是组装构件的过程,有时需要开发适配器。<br>(5)CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围
4.6.3 构件组装
<font color="#e74f4c">顺序</font>组装:按<font color="#e74f4c">顺序调用</font>己经在在的构件,可以用两个已经存在的构件来创造一个新的构件<br>
<font color="#e74f4c">层次</font>组装:被调用构件的“提供”接口必须和调用构件的“请求”<font color="#e74f4c">接口兼容</font>。<br>
<font color="#e74f4c">叠加</font>组装:<font color="#e74f4c">多个构件合并形成新构件</font>,新构件整合原构件的功能,对外<font color="#e74f4c">提供新的接口</font><br>
构件组装可能面临接口不兼容的问题,常见的有<font color="#e74f4c">参数</font><font color="#000000">不兼容</font>、<font color="#e74f4c">操作</font><font color="#000000">不兼容</font>和<font color="#e74f4c">操作不完备</font> 3 种。这时需要编写<font color="#e74f4c">适配器构件</font>来解决<br>不兼容的问题。
4.7 软件项目管理<br>
4.7.1 项目管理概述
软件项目管理的主要内容(<font color="#e74f4c">进度、配置、质量、风险</font>管理)<br>
4.7.2 软件<font color="#e74f4c">进度</font>管理(<font color="#e74f4c">活动</font>)<br>可能案例题<br>
工作分解结构(Work Breakdown Structure,<font color="#e74f4c">WBS</font>)是把一个<font color="#e74f4c">项目</font>,按一定的原则分解成<font color="#e74f4c">任务</font>,任务再分解成一项项<font color="#e74f4c">工作</font>,再把一项项工作分配到每个人的<font color="#e74f4c">活动</font>中,直到分解不下去为止。以<font color="#e74f4c">可交付成果</font>为导向,对<font color="#e74f4c">项目要素</font>进行的分组,总是处于计划过程的<font color="#e74f4c">中心</font>。<br>
软件进度管理一般包括:<font color="#000000">活动</font><font color="#e74f4c">定义</font>、<font color="#000000">活动</font><font color="#e74f4c">排序</font>、活动<font color="#e74f4c">资源估计</font>、活动<font color="#e74f4c">历时估计</font>、<font color="#e74f4c">制定进度计划</font>和<font color="#e74f4c">进度控制</font> 6 个过程<br>
活动定义:根据WBS工作包定义活动<br>
活动排序:定义工作包的先后顺序<br>
活动资源估算:这个工作由N人天完成<br>
<b>活动历时估算</b>:几个人几人天干完,存在不可压缩工期<br>
专家判断法
三点估算法
功能点估算法
自上而下的估算
自下而上的估算
<b>制定进度计划</b>:通过<font color="#e74f4c">关键路径法或甘特图</font>来确定项目的整体规划<br>
<b>关键活动为<font color="#e74f4c">最长</font>路径<br>最短完成时间</b>为<font color="#e74f4c">关键路径</font>的时间<br>
<b>进度控制</b>:任务执行过程中是否需要调整<br>
判断是否调整
是否为关键活动<br>偏差是否大于总时差<br>偏差是否大于自由时差(不影响别人)<br>
调整方法
赶工:增加资源,<font color="#e74f4c">加班、加人</font><br>快速跟进:活动<font color="#e74f4c">并行执行</font>
活动定义是指确定完成项目的各个可交付成果所必须进行的各项具体活动,还需要明确每个活动的<font color="#e74f4c">前驱</font>、<font color="#e74f4c">持续时间</font>、<font color="#e74f4c">必须完成日期</font>、<font color="#e74f4c">里程碑</font>或<font color="#e74f4c">可交付成果</font>
任务活动图是项目进度管理、项目成本管理等一系列项目管理活动的基础,通常采用<font color="#e74f4c">甘特图</font>等方式来展示和管理项目活动
4.7.3 软件<font color="#e74f4c">配置</font>管理(SCM,<font color="#e74f4c">变更</font>控制、<font color="#e74f4c">版本</font>控制)<br>
SCM是一种<font color="#e74f4c">标识、组织和控制[</font>修改<font color="#e74f4c">]</font>的技术
SCM目的:使<font color="#e74f4c">错误降为最小</font>并最有效地<font color="#e74f4c">提高生产效率</font><br>
SCM核心内容
<font color="#e74f4c">变更控制</font>(Change Control)是指对变更进行管理,确保变更<font color="#e74f4c">有序进行</font>。
<font color="#e74f4c">版本控制</font>(Version Control)是指对软件开发过程中各种<font color="#e74f4c">文件变更</font>的管理,最主要的功能就是<font color="#e74f4c">追踪和记录</font>文件的变更、[<font color="#e74f4c">并行开发</font>]
4.7.4 软件<font color="#e74f4c">质量</font>管理<br>
软件质量保证(Software Quality Assurance,SOA)的主要任务:<font color="#e74f4c">审计与评审</font>、<font color="#e74f4c">报告</font>、<font color="#e74f4c">处理不符合问题</font>和【<font color="#e74f4c">体系认证</font>】<br>
软件质量保证(SQA)的目的是:使<font color="#e74f4c">软件过程</font><font color="#000000">对于</font><font color="#e74f4c">管理人员</font><font color="#000000">来说是</font><font color="#e74f4c">可见的</font>。<br>
软件质量认证,国内软件企业主要采用的是【通用<font color="#e74f4c">ISO 9001</font>】和【软件<font color="#e74f4c">CMMI(初始、已管理、已定义、量化管理、优化</font>)】。<br>
质量保证QA:一般是<font color="#e74f4c">每隔一定时间</font>(例如,每个阶段末)进行的,主要通过系统的<font color="#e74f4c">质量审计</font>和<font color="#e74f4c">过程分析</font>来保证项目的质量。<br>
质量控制QC:是<font color="#e74f4c">实时</font>监控项目的<font color="#e74f4c">具体结果</font>,以判断它们是否符合相关质量标准;<font color="#e74f4c">制定有效方案</font>,以消除产生质量问题的原因。<br>
4.7.5 软件<font color="#e74f4c">风险</font>管理
软件项目风险是指在软件开发过程中遇到的<font color="#e74f4c">预算</font>和<font color="#e74f4c">进度</font>等方面的问题以及这些问题对软件项目的影响。<br>
风险管理的主要目标是【<font color="#e74f4c">预防风险</font>】,及【<font color="#e74f4c">应对发生的风险</font>】<br>
风险管理体系<br>
<font color="#e74f4c">Bochm</font>把风险管理活动分成:<font color="#e74f4c">风险估计</font>(风险<font color="#e74f4c">辨识</font>、风险<font color="#e74f4c">分析</font>、风险<font color="#e74f4c">排序</font>)和<font color="#e74f4c">风险控制</font>(风险<font color="#e74f4c">管理计划</font>、风险<font color="#e74f4c">处理</font>、风险<font color="#e74f4c">监督</font>)两大阶段。<br>
<font color="#e74f4c">Charette</font>把风险分成:<font color="#e74f4c">分析</font>(<font color="#e74f4c">辨识</font>、<font color="#e74f4c">估计</font>、<font color="#e74f4c">评价</font>)和<font color="#e74f4c">管理</font>(<font color="#e74f4c">计划</font>、<font color="#e74f4c">控制</font>、<font color="#e74f4c">监督</font>)两大阶段。<br>
软件过程活动工具:软件<font color="#e74f4c">开发</font>工具、软件<font color="#e74f4c">维护</font>工具、软件<font color="#e74f4c">管理</font>工具、软件<font color="#e74f4c">支持</font>工具<br>
5、<font color="#e74f4c">数据库设计</font>基础知识<br> 综合2~5分<br> 案例<br>
5.1 数据库基本概念
5.1.1 数据库技术的发展及分类
数据库的定义和发展阶段<br>
DB、DBS 和 DBMS 区分方法
数据库分类(分布式数据库系统、并行数据库系统、数据仓库与数据挖掘)
基本概念
数据(Data):是描述事物的<font color="#e74f4c">符号</font>记录,它具有多种表现形式,如文字、图形、图像、声音和语言等。<br>数据库(DataBase,DB):是统一管理的、长期储存在计算机内的,有组织的相关<font color="#e74f4c">数据的集合</font>。<br>数据库系统(DataBase System,DBS):是采用了<font color="#e74f4c">数据库</font>技术,有组织地、<font color="#e74f4c">动态地</font>存储<font color="#e74f4c">大量相关联</font>数据,从而方便<font color="#e74f4c">多用户</font>访问的<font color="#e74f4c">计算机系统</font>。<br>数据库管理系统(DataBase Management System,DBMS):是<font color="#e0c431">数据库系统的</font><font color="#e74f4c">核心软件</font>,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。<br>DBMS通常分三类:<font color="#e74f4c">关系</font>数据库系统(Relation DataBase System,RDBS)、<font color="#e74f4c">面向对象</font>的数据库系统(Object-OrientedDataBase Systems,OODBS)、<font color="#e74f4c">对象关系</font>数据库系统(Objective Relational DataBase System,ORDBS)。<br>
发展阶段
1、<font color="#e74f4c">人工</font>管理阶段。<br>特点:数据量较少、数据不保存、没有软件系统对数据进行处理。<br>缺点:应用程序与数据之间依赖性太强、数据组与数据组之间存在数据冗余。<br>
2、<font color="#e74f4c">文件系统</font>阶段。<br>特点:数据可长期保留、数据不属于某个特定应用、文件组织形式多样化。<br>缺点:数据冗余、数据不一致性、数据孤立。<br>
3、<font color="#e74f4c">数据库系统</font>阶段。<br>特点:采用复杂的数据模型表示数据结构、有较高的数据独立性。<br>优点:对应用程序的高度独立性、数据的充分共享性、操作方便性。
5.1.2 数据模型
层次和网状数据库系统
关系数据库系统
第三代数据库系统
数据模型三要素
数据<font color="#e74f4c">结构</font>
数据<font color="#e74f4c">操作</font>
数据的<font color="#e74f4c">约束条件</font><br>
<font color="#e74f4c">实体</font><font color="#000000">完整性</font>:是指实体的<font color="#e74f4c">主属性</font><font color="#e0c431">不能取空</font>值。<br>
<font color="#e74f4c">参照</font><font color="#000000">完整性</font><font color="#e74f4c">:</font>在关系数据库中主要是指<font color="#e74f4c">外键</font>参照的完整性。若 A 关系中的某个或者某些属性参照 B 关系或其他几个关系中的属性,那么在关系 A 中该属性要么为空,要么必须出现在 B关系或者其他的关系的对应属性中。<br>
<font color="#e74f4c">用户定义</font><font color="#000000">完整性</font>:某一个具体应用所对应的数据<font color="#e74f4c">必须满足</font>一定的<font color="#e74f4c">约束条件</font>。例如,软考成绩不能小于 0,也不能大于 75。<br>
5.1.3 数据库管理系统
DBMS的定义和范围
DBMS的功能及特点
数据库管理系统的主要功能包括:数据<font color="#e74f4c">定义</font>,数据<font color="#e74f4c">组织</font>、<font color="#e74f4c">存储</font>和<font color="#e74f4c">管理</font>、数据<font color="#e74f4c">库操作</font>,数据<font color="#e74f4c">库运行管理</font>,数据库的建立和维护。<br>
数据库管理系统的特点:<font color="#e74f4c">数据结构化</font>且<font color="#e74f4c">统一管理</font>、有较高的<font color="#e74f4c">数据独立性</font>、<font color="#e74f4c">数据控制</font>功能。<br>数据控制功能包括:保证护具的<font color="#e74f4c">安全性</font>和<font color="#e74f4c">完整性</font>以及<font color="#e74f4c">并发控制</font>的能力。
5.1.4数据库三级模式
数据库三级模式的定义和划分
数据库系统的<font color="#e74f4c">体系结构</font>:<font color="#e74f4c">视图</font>层、<font color="#e74f4c">逻辑</font>层、<font color="#e74f4c">物理</font>层,向用户屏蔽系统的复杂性,简化用户与系统的交互<br>
数据库系统的<font color="#e74f4c">三级模式</font><br>
<font color="#e74f4c">外</font>模式:又叫子模式或用户模式,用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据<br>
<font color="#e74f4c">概念</font>模式:是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共<font color="#e74f4c">数据视图</font><br>
<font color="#e74f4c">内</font>模式:是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式等<br>
<font color="#e74f4c">三级模式之间</font>提供了<font color="#e74f4c">两级映像</font>
<font color="#e74f4c">外/概念</font>模式映像、<font color="#e74f4c">概念/内</font>模式映像,保证了数据库中的数据具有较高的<font color="#e74f4c">逻辑独立性</font>和<font color="#e74f4c">物理独立性</font>
<font color="#e74f4c">逻辑</font>独立性:对应外模式和概念模式之间的映像。指<font color="#e74f4c">应用程序</font>与数据库中的<font color="#e74f4c">逻辑结构</font>独立,当数据的逻辑结构改变时,应用<font color="#e74f4c">程序不变</font><br>
<font color="#e74f4c">物理</font>独立性:对应概念模式和内模式之间的映像。指<font color="#e74f4c">应用程序</font>与磁盘中的<font color="#e74f4c">数据</font>互相独立,当数据的物理存储改变时,应用<font color="#e74f4c">程序不变</font><br>
数据库系统的<font color="#e74f4c">体系结构</font>
5.2 关系数据库
5.2.1 关系数据库基本概念
关系数据库的定义及发展
关系数据库模式
基本术语
<font color="#e74f4c">属性</font>(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些<font color="#e74f4c">特征</font>称为属性。<br>
<font color="#e74f4c">域</font>(Domain):每个<font color="#e74f4c">属性的取值范围</font>对应一个值的集合,称为该属性的域。<br>
<font color="#e74f4c">目或度</font>(Degree):目或度指的是一个关系中<font color="#e74f4c">属性的个数</font>。<br>
<font color="#e74f4c">候选码</font>(Candidate Key):或称<font color="#e74f4c">唯一键</font>,若关系中的某一属性或属性组的值,能<font color="#000000">唯一地标识</font>一个元组,则称该属性或属性组为候选码。<br>
<font color="#e74f4c">主码</font>(Primary Key):或称<font color="#e74f4c">主键</font>,若一个关系有多个候选码,则选定其中一个作为主码。<br>
<font color="#e74f4c">外码</font>(Foreign Key):或称<font color="#e74f4c">外键</font>,关系模式 R 中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性对模式 R 而言是外码。<br>
<font color="#e74f4c">全码</font>(All-key):关系模型的<font color="#e74f4c">所有属性组是这个关系模式的候选码</font>,称为全码
<font color="#e74f4c">主属性</font>(Prime Attribute):包含在<font color="#e74f4c">任何候选码中的属性</font>称为主属性。<br>
关系的完整性约束:<font color="#e74f4c">实体</font>完整性、<font color="#e74f4c">参照</font>完整性和<font color="#e74f4c">用户定义</font>完整性<br>
5.2.2 关系运算
<font color="#e74f4c">集合</font>运算符
<font color="#e74f4c">∪并</font>:关系 R 与 S 的并是由属于 R 或属于 S 的元组构成的集合<br>
<font color="#e74f4c">-差</font>:关系 R 与 S 的差是由属于 R 但不属于 S 的元组构成的集合<br>
<font color="#e74f4c">∩交</font>:关系 R 与 S 的交是由属于 R 同时又属于 S 的元组构成的集合<br>
<font color="#e74f4c">×笛卡儿积</font>:两个关系分别为 n 列和 m 列的关系 R 和 S 的笛卡儿积是一个(n+m)列的元组的集合(a,b)×(0,1)={(a,0), (a,1), (b,0),(b, 1)}<br>
<font color="#e74f4c">关系</font>运算符<br>
<font color="#e74f4c">σ选择</font>:取得关系R中符合条件的<font color="#e74f4c">行</font><br>
<font color="#e74f4c">π投影</font>: 取得关系R中符合条件的<font color="#e74f4c">列</font><br>
<font color="#e74f4c">等值</font>连接:选取关系 R、S,取两者<font color="#e74f4c">笛卡儿积</font>中<font color="#e74f4c">属性值相等</font>的元组。<br><font color="#e74f4c">自然</font>连接:一种特殊的等值连接,它要求比较的属性列必须是相同的属性组,并且把结果中<font color="#e74f4c">重复属性去掉</font><br><font color="#e74f4c">左外</font><font color="#000000">链接:左全,右没有null填充</font><br><font color="#e74f4c">右外</font>连接:右全,左没有null填充<br><font color="#e74f4c">全</font>连接:左外 并 右外 <font color="#e74f4c">去除相等的</font><br>
<font color="#e74f4c">÷ 除</font>:给定关系 R(X,Y) 和 S(Y,Z),其中 X,Y,Z 为属性组。R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集。R 与 S 的除运算得到一个新的关系P(X),P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在<font color="#e74f4c">X上分量值x</font>的<font color="#e74f4c">象集Yx</font>包含<font color="#e74f4c">S在Y上投影的集合</font><br>
子主题
<font color="#e74f4c">算术比较</font>符:> < == <><br>
<font color="#e74f4c">逻辑运算</font>符:+ - * / % & | !<br>
5.2.3 关系数据库设计基本理论
<font color="#e74f4c">函数依赖</font>:指关系中<font color="#e74f4c">一个或一组属性的值</font>可以决定<font color="#e74f4c">其它属性的值</font>。函数依赖就像一个函数y = f(x)一样,x的值给定后,y的值也就唯一地确定了。<br>
<font color="#e74f4c">平凡</font>的函数依赖:如果 X→Y,Y⊆X(<font color="#e74f4c">Y是X的子集</font>),则称 X→Y 是平凡的函数依赖。<br>例如:在学生表(学号,姓名,年级)中,(学号,姓名)可以推出<font color="#e74f4c">学号和姓名其中的任何一个</font>,这就是平凡函数依赖.<br>
<font color="#e74f4c">非平凡</font>的函数依赖:如果 X→Y,Y⊈X(<font color="#e74f4c">Y不是X子集</font>),则称 X→Y 是非平凡的函数依赖。<br>例如:在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的<font color="#e74f4c">年级</font>,但<font color="#e74f4c">年级不是(学号,姓名)的子集</font>,这是非平凡函数依赖<br>
<font color="#e74f4c">完全</font>函数依赖:例如,有学生关系模式(学号,系号,系主任,课程号,成绩),该关系模式的主码是学号+课程号,(学号,课程号)→成绩是完全函数依赖。
<font color="#e74f4c">部分</font>函数依赖:上述例子中,(学号,课程号)→系号就属于部分函数依赖,因为对于系号来说有学号就可以推出系号。
<font color="#e74f4c">传递依赖</font>:上述例子中,学号→系号,系号→系主任名,则称系主任名传递依赖于学号
函数依赖的公理系统(Armstrong 公理系统):从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则,这些规则常被称作“Armstrong 公理”。设关系式 R(U,F),U 是关系模式 R 的<font color="#e74f4c">属性集</font>,F 是 U 上的一组<font color="#e74f4c">函数依赖</font><br>
推理规则:<br><font color="#e74f4c">自反</font>律:若 Y<font color="#e74f4c">⊆</font>X<font color="#e74f4c">⊆</font>U,则 X→Y 为 F 所蕴含<br><font color="#e74f4c">增广</font>律:若 X→Y ,Z⊆U,则 XZ→YZ 为 F 所蕴含<br><font color="#e74f4c">合并</font>规则:若 X→Y,X→Z,则 X→YZ 为 F 所蕴含<br><font color="#e74f4c">分解</font>规则:若 X→Y,Z⊆Y,则 X→Z 为 F 所蕴含<br><font color="#e74f4c">传递</font>律:若 X→Y,Y→Z 为 F 所蕴含,则 X→Z 为 F 所蕴含<br><font color="#e74f4c">伪传递</font>规则:若 X→Y,WY→Z,则 XW→Z 为 F 所蕴含<br>
设计范式<br>
第一范式(1NF):关系模式 R 的每一个<font color="#e74f4c">分量是不可再分</font>的数据项,<font color="#e74f4c">非主属性【</font>部分依赖】<font color="#e74f4c">主码</font><br>
第二范式(2NF):当1NF,且任何【<font color="#e74f4c">非主属性列</font>】【<font color="#e74f4c">完全依赖</font>】【<font color="#e74f4c">主码</font>】<br>
第三范式(3NF):当2NF,且任何【<font color="#e74f4c">非主属性列</font>】【<font color="#e74f4c">不传递依赖</font>】【<font color="#e74f4c">主码</font>】<br>
<font color="#e74f4c">BC</font> 范式(BCNF):如果关系模式 R∈1NF,且每个<font color="#e74f4c">属性都</font>【<font color="#e74f4c">不传递依赖</font>】【<font color="#e74f4c">候选码</font>】<br>
4NF
5NF
事务管理
特性:<font color="#e74f4c">原子</font>性、<font color="#e74f4c">一致</font>性、<font color="#e74f4c">隔离</font>性、<font color="#e74f4c">持久</font>性
begin transaction;commit;rollback
并发控制
排他型封锁(X 封锁):如果事务 T 对数据 A(可以是数据项、记录、数据集以至整个数据库)实现了 X 封锁,那么<font color="#e74f4c">只允许事务 T 读取和修改数据 A</font>,其他事务要等事务 T 解除 X <font color="#e74f4c">封锁以后</font>,<font color="#e74f4c">才能</font>对数据 A 实现<font color="#e74f4c">任何类型的封锁</font>。可见 X 封锁只允许一个事务独锁某个数据,具有排他性。<br>
共享型封锁(S 封锁):如果事务 T 对数据 A 实现了 S 封锁,那么<font color="#e74f4c">允许事务 T 读取</font>数据A,但<font color="#e74f4c">不能修改</font>数据 A,在所有 S 封锁解除之前决<font color="#e74f4c">不允许任何事务对数据 A 实现 X </font>封锁。
备份恢复
备份分类
<font color="#e74f4c">静态</font>备份:指备份期间<font color="#e74f4c">不允许</font>对数据库进行任何存取、修改活动。静态备份简单,但备份必须等待用户事务结束才能进行,新的事务必须等待备份结束才能执行。这<font color="#e74f4c">降低</font>了数据库的<font color="#e74f4c">可用性</font>。<br><font color="#e74f4c">动态</font>备份:指备份期间<font color="#e74f4c">允许</font>对数据库进行存取或修改,即备份和用户事务可以<font color="#e74f4c">并发执行</font>。动态备份可克服静态备份的缺点,但备份结束时后援副本上的数据并<font color="#e74f4c">不能保证正确有效</font>。<br>
<font color="#e74f4c">海量</font>备份:指每次备份<font color="#e74f4c">全部</font>数据库。<br><font color="#e74f4c">增量</font>备份:指每次只备份<font color="#e74f4c">上次备份后更新过</font>的数据。如果数据库很大,事务处理又十分频繁,则增量备份方式是很有效的。
4类故障:<font color="#e74f4c">事务</font>故障、<font color="#e74f4c">系统</font>故障、<font color="#e74f4c">介质</font>故障、<font color="#e74f4c">计算机病毒</font>
<font color="#e74f4c">事务故障的恢复</font>有两个操作:<font color="#e74f4c">撤销事务</font>(UNDO)和<font color="#e74f4c">重做事务</font>(REDO)。
<font color="#e74f4c">介质故障的恢复</font>由数据库管理员装入<font color="#e74f4c">数据库的副本</font>和<font color="#e74f4c">日记文件副本</font>,再由系统执行<font color="#e74f4c">撤销和重做</font>操作。
5.3 数据库设计
5.3.1 数据库设计的基本步骤
数据库设计的六个步骤(<font color="#e74f4c">用户需求、概念设计、逻辑设计、物理设计、数据库实施、运行和维护</font>)<br>
5.3.2 <font color="#e74f4c">数据需求</font>分析(SA)<br>
分析和表达用户需求的方法:<font color="#e74f4c">结构化分析</font>方法(SA)<br>
用户需求分析是综合各用户的应用需求,对现实世界要处理的对象进行详细调查,在了解先行系统的概况,确定新系统功能的过程中,协助用户明确对新系统的<font color="#e74f4c">信息</font>要求、<font color="#e74f4c">处理</font>要求和<font color="#e74f4c">系统</font>要求,确定新系统的边界。
5.3.3 <font color="#e74f4c">概念结构</font>设计(ER)<br>
概念数据模型又称为<font color="#e74f4c">实体-联系</font>模型,它按照用户的观点来对数据和信息建模,主要用于数据库设计。<br>概念模型主要用实体-联系方法(Entity-Relationship Approach)表示,简称<font color="#e74f4c">E-R</font>方法。<br>
设计步骤:【<font color="#000000">选择</font><font color="#e74f4c">局部应用</font>】<font color="#000000">、</font>【<font color="#000000">逐一</font><font color="#e74f4c">设计分E-R图</font>】<font color="#000000">、</font>【<font color="#000000">E-R图</font><font color="#e74f4c">合并</font>】<br>
在进行E-R图合并时,需解决<font color="#e74f4c">属性</font>冲突、<font color="#e74f4c">命名</font>冲突和<font color="#e74f4c">结构</font>冲突。
E-R 图的三个要素有:<br>1)<font color="#e74f4c">实体</font>(型):用<font color="#e74f4c">矩形</font>框表示,框内标注实体名称。<br>2)<font color="#e74f4c">属性</font>:用<font color="#e74f4c">椭圆</font>形表示,并用连线与实体连接起来。<br>3)实体之间的<font color="#e74f4c">联系</font>:用<font color="#e74f4c">菱形</font>框表示,框内标注联系名称,用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
5.3.4 <font color="#e74f4c">逻辑结构</font>设计(数据模型)<br>
工作步骤:【确定<font color="#e74f4c">数据模型</font>】、【将<font color="#e74f4c">E-R图转换</font>成指定的数据模型】、【确定<font color="#e74f4c">完整性约束</font>】和【确定<font color="#e74f4c">用户视图</font>】<br>
5.3.5 <font color="#e74f4c">物理设计</font><br>
设计步骤:确定【<font color="#e74f4c">数据分布</font>】、【<font color="#e74f4c">存储结构</font>】、【<font color="#e74f4c">访问方式</font>】<br>
5.3.6 数据库<font color="#e74f4c">实施</font>设计
根据逻辑和物理设计的结果,在计算机上【建立实际的<font color="#e74f4c">数据库结构</font>】,【<font color="#e74f4c">数据加载</font>(装入)】,【<font color="#e74f4c">试运行</font>】和【<font color="#e74f4c">评价</font>】。<br>
5.3.7 数据库<font color="#e74f4c">运行维护</font><br>
主要包括对数据库【<font color="#e74f4c">性能的监测和改善</font>】、【<font color="#e74f4c">故障恢复</font>】、【<font color="#e74f4c">数据库的重组和重构</font>】<br>
商业智能(Business Intelligence,BI)是企业对商业数据的<font color="#e74f4c">搜集、管理和分析</font>的系统过程,目的是使企业的各级决策者获得知识或洞察力,帮助他们作出对企业更有利的决策。一般认为<font color="#e74f4c">数据仓库</font>、<font color="#e74f4c">联机分析处理</font>(OLAP)和<font color="#e74f4c">数据挖掘</font>是商业智能的三大组成部分
数据仓库(Data Warehouse)是一个<font color="#e74f4c">面向主题</font>的、<font color="#e74f4c">集成</font>的、<font color="#e74f4c">相对稳定</font>(非易失)且<font color="#e74f4c">随时间变化</font>(时变)的数据集合,用于支持管理决策<br>
数据挖掘:是在<font color="#e74f4c">没有明确假设</font>的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有<font color="#e74f4c">先知</font>、<font color="#e74f4c">有效</font>和<font color="#e74f4c">实用</font>三个特征。先前未知的信息是指该信息是预先未曾预料到的,即数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越是出乎意料,就可能越有价值。<br>
5.4 用户访问数据库的标准接口
5.4.1 <font color="#e74f4c">库函数</font>级别访问接口<font color="#e74f4c">OCI</font><br>
库函数级别的数据访问接口是数据库提供的<font color="#e74f4c">最底层</font>的<font color="#e74f4c">高级程序语言</font>访问数据接口,如 Oracle数据库的 Oracle Call Interface(OCI)。<br>OCI 由一组<font color="#e74f4c">应用程序开发接口</font>(API)组成,实际是将结构化查询语言(<font color="#000000">SQ</font>L)和高级语言程序相结合。其缺点是强依赖于特定的数据库,需数据库开发人员对数据库机制有较深的理解,学习难度较大,开发效率不是很高。<br>
5.4.2 <font color="#e74f4c">嵌入SOL</font>访问接口
是一种将<font color="#e74f4c">SQL</font>语句直接<font color="#e74f4c">写入</font>某些<font color="#e74f4c">高级程序语言源代码</font>中的方法。
5.4.3 通用数据接口标准(<font color="#e74f4c">ODBC</font>)<br>
开放数据库连接(Open DataBase Connectivity,ODBC)是为解决<font color="#e74f4c">异构</font>数据库间的数据共享产生的。优点是不依赖于任何 DBMS,能以统一的方式处理所有的关系数据库。<br>常见数据库接口包括数<font color="#e74f4c">据库访问对象</font>(Data Access Object,DAO)、<font color="#e74f4c">远程数据库对象</font>(Remote Data Object,RDO)、<font color="#e74f4c">ActiveX 数据对象</font>(Active Data Object,ADO)、<font color="#e74f4c">Java 数据库连接</font>(java DataBaseConnection,JDBC)。<br>
5.4.4 <font color="#e74f4c">ORM</font>访问接口
对象关系映射(Object Relationship Mapping,ORM)用于实现<font color="#e74f4c">面向对象</font>编程语言里不同类型系统数据之间的转换。
Hibernate:<font color="#e74f4c">全自动化</font>的框架,强大、复杂、笨重、学习成本高。<br>
Mybatis:<font color="#e74f4c">半自动</font>的框架
JPA:<font color="#e74f4c">Java 自带</font>的框架。
5.5 NoSOL数据库系统
No SQL 的定义、基本功能和用途
NoSQL 是一种概念,泛指<font color="#e74f4c">非关系型</font>的数据库,区别于关系数据库,它们<font color="#e74f4c">不保证关系数据的ACID </font>特性
5.5.1 分类与特点
四类 No SOL 数据库:<font color="#e74f4c">列式</font>存储数据库、<font color="#e74f4c">键值对</font>存储数据库、<font color="#e74f4c">文档</font>型数据库、<font color="#e74f4c">图</font>数据库<br>
No SQL 的特点:易扩展、大数据量、高性能、灵活的数据模型、高可用<br>
5.5.2 体系框架<br>
NoSOL的四层框架:数据【<font color="#e74f4c">持久</font>层】、【数据<font color="#e74f4c">分布</font>】层、数据【<font color="#e74f4c">逻辑模型</font>层】和【<font color="#e74f4c">接口</font>层】<br>
No SOL数据库的适应场景:数据<font color="#e74f4c">模型比较简单</font>、需<font color="#e74f4c">灵活性</font>更强的 IT 系统、对数据库<font color="#e74f4c">性能</font>要求较高、不需要高度的数据一致性<br>
分布式数据库
体系结构
特点
<font color="#e74f4c">共享</font>性:不同的节点的数据共享。<br><font color="#e74f4c">自治</font>性:每个节点对本地数据都能独立管理。<br><font color="#e74f4c">可用</font>性:某一场地故障时,可以使用其他场地上的副本而不至于使整个系统瘫痪。<br><font color="#e74f4c">分布</font>性:数据分布在不同场地上存储。
<font color="#e74f4c">分布</font>透明性
指用户不必关心数据的<font color="#e74f4c">逻辑分片</font>,不必关心数据存储的<font color="#e74f4c">物理位置</font>分配细节,也不必关心局部场地上数据库的<font color="#e74f4c">数据模型</font>
<font color="#e74f4c">分片透明性</font>是:分布透明性的<font color="#e74f4c">最高层次</font>。所谓分片透明性是指用户或应用程序只对<font color="#e74f4c">全局关系</font>进行操作而不必考虑数据的分片。<br>
<font color="#e74f4c">位置透明性</font>是:分布透明性的下一层次。所谓位置透明性是指用户或应用程序应当<font color="#e74f4c">了解分片</font><font color="#000000">情况</font>,但<font color="#e74f4c">不必了解片段的存储</font>场地。<br>
<font color="#e74f4c">局部数据模型</font>透明性(逻辑透明)是:指用户或应用程序应当<font color="#e74f4c">了解分片及各片断存储的场地</font>,但<font color="#e74f4c">不必了解</font>局部场地上使用的是何种<font color="#e74f4c">数据模型</font>。<br>
数据库优化技术
<font color="#e74f4c">集中式</font>数据库优化
最常见的是<font color="#e74f4c">反规范化</font>设计,主要包括增加<font color="#e74f4c">冗余列</font>、增加<font color="#e74f4c">派生列</font>、<font color="#e74f4c">重新组表</font>、<font color="#e74f4c">水平分割表</font>、<font color="#e74f4c">垂直分割表</font>。
反规范化设计的<font color="#e74f4c">优点</font>是<font color="#e74f4c">避免</font>进行表之间的<font color="#e74f4c">连接</font>操作,从而可以提高数据操作的<font color="#e74f4c">性能</font>;<br>
反规范化设计的<font color="#e74f4c">缺点</font>是会造成数据的<font color="#e74f4c">重复存储</font>,浪费了<font color="#e74f4c">磁盘空间</font>,会产生数据的<font color="#e74f4c">不一致性</font>问题。<br>若要避免数据不一致的问题,可以通过设置<font color="#e74f4c">触发器</font>、采用<font color="#e74f4c">事务机制</font>(适用于单体数据库中)、<font color="#e74f4c">应用保证</font>(适用于异构数据库之间)以及<font color="#e74f4c">批处理脚本</font>的方式,这些方式的优缺点这里不再赘述。<br>
<font color="#e74f4c">分布式</font>数据库优化
主从复制
主从复制是建立一个和主数据库完全一样的数据库环境,称为从数据库
做数据的<font color="#e74f4c">热备</font>:作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。<br>
<font color="#e74f4c">架构的扩展</font>:业务量越来越大,I/O 访问频率过高,单机无法满足,此时做多库的存储,降低磁盘 I/O 访问的频率,提高单个机器的 I/O 性能。<br>
<font color="#e74f4c">读写分离</font>:使数据库能支持更大的并发。<br>
在MySQL数据库中,主从数据库同步的模式有<font color="#e74f4c">全同步</font>、<font color="#e74f4c">半同步</font>、<font color="#e74f4c">异步</font>三种方式
binlog日志有3种模式:<font color="#e74f4c">SQL</font>模式(绑定变量问题)、<font color="#e74f4c">行</font>模式(数据量大)、<font color="#e74f4c">混合</font>模式(自动选择)<br>
读写分离:让<font color="#e74f4c">主</font>数据库负责数据的<font color="#e74f4c">写</font>操作,<font color="#e74f4c">从</font>数据库负责数据的<font color="#e74f4c">读</font>操作。通过角色分担的策略,分别提升读写<font color="#e74f4c">性能</font>,有效减少数据并发操<br>作的<font color="#e74f4c">延迟</font>。<br>
分表:分表也叫分片,可以提升数据库<font color="#e74f4c">并发</font>以及<font color="#e74f4c"> I/O </font>的性能<br>
分库:将原本存放在一个实例上<font color="#e74f4c">众多分类</font>的数据(表),分开存放到不同的实例上,有利于差异化管理。<br>
分布式缓存技术Redis
数据类型主要包括: <font color="#e74f4c">string </font>、<font color="#e74f4c">hash </font>、<font color="#e74f4c">set </font>、<font color="#e74f4c">list </font>、<font color="#e74f4c">zset</font><br>
访问方式
读数据:①根据 key 读缓存;②读取成功则直接返回;③若 key 不在缓存中,则根据 key读数据库;④读取成功后,写缓存;⑤成功返回<br>
写数据:①根据 key 值<font color="#e74f4c">写数据库</font>;②成功后<font color="#e74f4c">更新缓存</font> key 值;③成功返回
过期策略:<font color="#e74f4c">定期</font>删除、<font color="#e74f4c">懒性</font>删除<br>
持久化方式:<font color="#e74f4c">RDB</font>内存快照、<font color="#e74f4c">AOF</font>日志<br>
集群部署方式:<font color="#e74f4c">主从复制</font>集群、<font color="#e74f4c">哨兵</font>集群、<font color="#e74f4c">Cluster</font>集群<br>
分片方式:<font color="#e74f4c">客户端</font>分片、<font color="#e74f4c">代理</font>分片、<font color="#e74f4c">服务端</font>分片<br>
缓存<font color="#e74f4c">穿透</font>(<font color="#e74f4c">没key</font>)<br>
大量请求访问了没有缓存的 key,即大量的 key 在 Redis 里是不存在的,从而导致请求直接访问数据库,数据库压力增大。可能的原因如下:
1)<font color="#e74f4c">恶意攻击</font>,造成大量访问不存在的 key。例如登录时使用无效的用户名,在软考网站查询成绩时输入不存在的身份证号、准考证号。<br>解决方案:<br>①针对比较少的<font color="#e74f4c">请求来源IP</font>,主动限制其访问次数,或者拉入黑名单;<br>②应用程序来检查key的<font color="#e74f4c">合法性</font>,提前拒绝不合法的请求;<br>③使用<font color="#e74f4c">布隆过滤器</font>。<br>
2)大量请求访问数据库里有但 Redis <font color="#e74f4c">没有的 key</font>。例如新业务刚刚上线,此时 Redis 是空的。<br>解决方案:<br>①<font color="#e74f4c">预热 Redis</font>,运行一个批处理脚本,将可能会大量访问的数据预先加载到 Redis,业务再“开张”;<br>②在最<font color="#e74f4c">前端进行流量控制</font>,逐步把请求释放进来。给出一段时间,让 Redis 逐步加载热数据;<br>③如果是在数据库里也没有的 key,也需要在 Redis 中设置 key,使<font color="#e74f4c">其值为 null</font> 或空<br>
缓存<font color="#e74f4c">雪崩</font>(<font color="#e74f4c">同时过期</font>)<br>
大量请求访问到缓存中的 key,这些 key 是存在的,但<font color="#e74f4c">同时到了过期</font>时间,从而导致请求直接访问数据库,数据库压力增大。缓存雪崩可能进而影响一系列的雪崩,影响到上下游的所有应用服务。可能的原因如下:
1)Redis 故障。比如 Redis 宕机,网络出现抖动等。<br>解决方案:<br>①使用主从复制<font color="#e74f4c">提高可用性</font>,使用 cluster 集群方案降低故障时影响的范围;<br>②如果出现故障,则可以采取服务<font color="#e74f4c">降级、熔断、限流</font>等措施。<br>
2)大量的key采用了<font color="#e74f4c">相同的过期时间</font>。例如在同一时刻设置了大量的 key,但过期时间都是 5分钟。<br>解决方案:过期时间加上一个<font color="#e74f4c">随机值</font>,使得众多 key 均匀过期。
缓存<font color="#e74f4c">击穿</font>(<font color="#e74f4c">热点Key</font>过期)<br>
少量<font color="#e74f4c">热点的 key</font> 缓存时间失效了,使得请求直接访问数据库。
可能的原因:热点的key设置了太短的过期时间。例如秒杀业务下的“库存数量”。<br>解决方案:<br>①将key设置<font color="#e74f4c">较长的过期时间</font>。对于非常重要的 key,则设置永久有效。但需要解决好与数据库中的 key 的一致性问题;<br>②使用<font color="#e74f4c">分布式锁</font>。如果热点 key 失效了,要控制好访问后端数据库的流量。只允许一个请求去访问数据库,取出最新的 key,存放到 Redis,其他请求则必须等待<br>
6、<font color="#e74f4c">系统架构设计</font>基础知识<br> 综合8~15分<br> 案例、论文
6.1 软件架构概念
6.1.1 软件架构的定义
软件<font color="#e74f4c">架构</font>(Software Architecture)或称软件<font color="#e74f4c">体系结构</font>,是指系统的一个或者多个结构,这些结构包括<font color="#000000">软件的</font><font color="#e74f4c">构件</font>(可能是程序模块、类或者是中间件)、<font color="#e74f4c">构件的外部可见属性</font>及其之间的<font color="#e74f4c">相互关系</font>。
软件架构设计包含:<font color="#e74f4c">数据库</font><font color="#000000">设计 和 </font><font color="#e74f4c">软件结构</font><font color="#000000">设计(</font>关注软件构件的【<font color="#e74f4c">结构</font>】、【<font color="#e74f4c">属性</font>】和【<font color="#e74f4c">交互作用</font>】,并通过<font color="#e74f4c">多种视图全面描述</font><font color="#000000">)</font><br>
6.1.2 软件架构设计与<font color="#e74f4c">生命周期</font>
<font color="#e74f4c">需求</font>分析阶段(<font color="#e74f4c">需求模型</font>)<br>
需求关注的是<font color="#e74f4c">问题空间</font>,架构关注的是<font color="#e74f4c">解空间</font>,需要保持二者的<font color="#e74f4c">可追踪性</font>和<font color="#e74f4c">转换</font>。<br>
从软件需求模型向软件架构模型的转换主要关注两个问题:<br>1)<font color="#e74f4c">如何</font>根据<font color="#e74f4c">需求</font>模型<font color="#e74f4c">构建</font>软件<font color="#e74f4c">架构模型</font>。<br>2)如何保证模型转换的<font color="#e74f4c">可追踪性</font>。
<font color="#e74f4c">设计</font>阶段(<font color="#e74f4c">架构模型</font>、构件、连接子)<br>
架构模型的<font color="#e74f4c">描述</font><br>
即【<font color="#e74f4c">构件</font>】和【<font color="#e74f4c">连接子</font>】的<font color="#e74f4c">建模</font>。<br>
<font color="#e74f4c">体系架构描述语言ADL</font>(Architecture Describe Language)。是用于描述软件体系架构的语言,与其他建模语言最大的区别在于其更关注<font color="#e74f4c">构件间互联</font>机制(连接子),典型的 ADL 语言包括 Unicon、Rapide、Darwin、Wright、C2SADL、Acme、XADLOL、XYZ/ADL 和 ABC/ADL 等
<font color="#e74f4c">多视图:</font>反映的是一组系统的不同方面,体现了关注点分散的思想,通常与 ADL 结合起来描述系统的体系结构。<br>典型的模型包括:<font color="#e74f4c">4+1 </font>模型、Hofmesiter 的<font color="#e74f4c"> 4 视图</font>模型、CMU-Sei 的<font color="#e74f4c"> Viewsand Beyond </font>模型。<br>视图标准包括:IEEE 的 I471-2000、RM-ODP、<font color="#e74f4c">UML </font>以及 IBM 的 Zachman。<br>
架构模型的【<font color="#e74f4c">设计与分析</font>】<font color="#e74f4c">方法</font>
架构【<font color="#e74f4c">设计经验的总结与复用</font>】<br>
<font color="#e74f4c">实现</font>阶段(开发过程、实现途径、测试技术)<br>
研究内容:基于SA的<font color="#e74f4c">开发过程支持</font>、寻求从<font color="#e74f4c">SA向实现过渡的途径</font>、研究基于SA的<font color="#e74f4c">测试技术</font><br>
缩小架构设计与底层实现概念差距的手段:<font color="#e74f4c">模型转换技术</font>、<font color="#e74f4c">封装底层的实现细节</font>、在<font color="#e74f4c">SA模型中引入实现阶段的概念</font>(如用程序设计语言描述)。
<b><font color="#e74f4c">构件组装</font>阶段(连接子)</b><br>
<font color="#e74f4c">如何支持</font>可复用构件的<font color="#e74f4c">互联</font>,即对SA设计模型中规约的<font color="#e74f4c">连接子的实现提供支持</font>
组装过程中,如何<font color="#e74f4c">检测并消除</font>体系<font color="#e74f4c">结构失配</font>问题(<font color="#e74f4c">构件</font>本身的失配;<font color="#e74f4c">连接子</font>的失配;<font color="#e74f4c">部分和整体</font>的失配<br>
<font color="#e74f4c">部署</font>阶段(软硬件模型)
提供高层的<font color="#e74f4c">体系结构视图</font>描述部署阶段的<font color="#e74f4c">软硬件模型</font>
基于软件架构模型可以分析部署方案的<font color="#e74f4c">质量</font>属性,从而选择合理的部署方案
<font color="#e74f4c">后开发</font>阶段
<font color="#e74f4c">动态</font>软件体系结构
体系结构<font color="#e74f4c">恢复与重建</font>:<font color="#e74f4c">手工</font>体系结构重建、【<font color="#e74f4c">工具</font>】<font color="#e74f4c">支持的手工</font>重建、通过【<font color="#e74f4c">查询语言</font>】<font color="#e74f4c">来</font>【<font color="#e74f4c">自动</font>】<font color="#e74f4c">建立</font>【<font color="#e74f4c">聚集</font>】、使用其他技术(如<font color="#e74f4c">数据挖掘</font>)<br>
6.1.3 软件架构的重要性<br>
(1)架构设计能够满足系统的<font color="#e74f4c">品质</font>。<br>(2)架构设计使<font color="#e74f4c">受益人</font>达成<font color="#e74f4c">一致的目标</font>。<br>(3)架构设计能够【支持<font color="#e74f4c">计划编制</font>过程】。<br>(4)架构设计对<font color="#e74f4c">系统开发的指导</font>性。<br>(5)架构设计能够有效地<font color="#e74f4c">管理复杂性</font>。<br>(6)架构设计为<font color="#e74f4c">复用</font>奠定了基础。<br>(7)架构设计能够<font color="#e74f4c">降低维护</font>费用。<br>(8)架构设计能够【支持<font color="#e74f4c">冲突分析</font>】<br>
6.2 基于架构的软件开发方法(<font color="#e74f4c">ABSD</font>)
6.2.1 体系结构的设计方法概述
ABSD方法是<font color="#e74f4c">架构</font>驱动,即强调由【<font color="#e74f4c">商业</font>】、【<font color="#e74f4c">质量</font>】和【<font color="#e74f4c">功能</font>】<font color="#e74f4c">需求</font>的组合驱动架构设计。<br>
ABSD是一个自顶向下,递归细化的软件开发方法,软件系统的体系结构通过该方法得到细化,直到能产生【<font color="#e74f4c">软件构件</font>】和【<font color="#e74f4c">类</font>】
ABSD方法有三个基础。<br>第一个基础是<font color="#e74f4c">功能的分解</font>。在功能分解中,ABSD方法使用已有的基于模块的<font color="#e74f4c">内聚和耦合</font>技术;<br>第二个基础是通过<font color="#e74f4c">选择架构风格</font>来实现<font color="#e74f4c">商业</font><font color="#000000">和</font><font color="#e74f4c">质量</font>需求;<br>第三个基础是<font color="#e74f4c">软件模板</font>的使用。<br>
6.2.2 概念与术语
视角与视图:从不同的<font color="#e74f4c">视角来检查</font>,所以会有不同的<font color="#e74f4c">视图</font>。<br><font color="#e74f4c">用例</font>用来捕获<font color="#e74f4c">功能需求</font><br><font color="#e74f4c">质量</font>场景【<font color="#e74f4c">刺激</font>、<font color="#e74f4c">环境</font>、<font color="#e74f4c">响应</font>】用来捕获<font color="#e74f4c">质量需求</font>。<br>
6.2.3 基于体系结构的开发模型
6.2.4 体系结构<font color="#e74f4c">需求</font>
<font color="#e74f4c">需求获取</font>:体系结构需求的获取一般来自三个方面:<font color="#e74f4c">质量目标</font>、<font color="#e74f4c">系统</font>的<font color="#000000">商业目标</font>和<font color="#e74f4c">系统开发人员</font>的<font color="#e74f4c">商业目标</font>。<br>
<font color="#e74f4c">标识构件</font>:标识构件分三步完成:生成<font color="#e74f4c">类图</font>→对<font color="#e74f4c">类进行分组</font>→把<font color="#e74f4c">类打包成构件</font>。<br>
<font color="#e74f4c">需求评审</font>:审查重点包括需求是否真实反映了<font color="#e74f4c">用户的要求</font>、<font color="#e74f4c">类的分组</font>是否合理、<font color="#e74f4c">构件合并</font>是否合理等<br>
6.2.5 体系结构<font color="#e74f4c">设计</font>
<font color="#e74f4c">提出</font>软件体系结构<font color="#e74f4c">模型 </font>→ <font color="#e74f4c">映射构件 </font>→ 分析<font color="#e74f4c">构件相互作用 </font>→ <font color="#e74f4c">产生</font>体系结构设计<font color="#e74f4c">评审</font><br>设计评审必须邀请独立于系统开发的<font color="#e74f4c">外部人员</font>。<br>
6.2.6 体系结构<font color="#e74f4c">文档化</font><br>
主要输出结果是 体系结构<font color="#e74f4c">规格说明 </font>和 测试体系结构需求的<font color="#e74f4c">质量设计说明书</font>。
文档的<font color="#e74f4c">完整性</font>和<font color="#e74f4c">质量</font>是软件架构成功的关键因素。<br>关于文档的三大注意事项:文档要从<font color="#e74f4c">使用者的角度</font>进行编写;必须分发给<font color="#e74f4c">所有与系统有关</font>的开发人员;必须保证开发者手上的文档是<font color="#e74f4c">最新的</font><br>
6.2.7 体系结构<font color="#e74f4c">复审</font>
一个主版本的软件体系结构分析之后,要安排一次由<font color="#e74f4c">外部人员</font>(<font color="#e74f4c">用户</font>代表和<font color="#e74f4c">领域</font>专家)参加的复审。<br>复审的目的是:<font color="#e74f4c">标识潜在的风险</font>,及早发现体系结构设计中的缺陷和错误,必要时,可搭建一个可运行的<font color="#e74f4c">最小化系统</font>用于评估和测试体系结构是否满足需要<br>
6.2.8 体系结构<font color="#e74f4c">实现</font>
以<font color="#e74f4c">复审后</font>的文档化<font color="#e74f4c">体系结构说明书</font>为基础的,体系结构说明书中定义了系统中<font color="#e74f4c">构件与构件之间的关系</font>
过程:<font color="#e74f4c">分析与设计</font>→构件<font color="#e74f4c">实现</font>→构件<font color="#e74f4c">组装</font>→<font color="#e74f4c">系统测试</font>(<font color="#e74f4c">单个</font>构件的<font color="#e74f4c">功能</font>性测试、被<font color="#e74f4c">组装应用</font>的<font color="#e74f4c">整体功能</font>、<font color="#e74f4c">性能</font>测试)<br>
6.2.9 体系结构的<font color="#e74f4c">演化</font>
使用<font color="#e74f4c">系统演化步骤</font>去修改应用,以满足<font color="#e74f4c">新的需求</font>。<br>
过程:需求<font color="#e74f4c">变化归类</font>→体系结构<font color="#e74f4c">演化计划</font>→<font color="#e74f4c">构件变动</font>→<font color="#e74f4c">更新构件的相互作用</font>→构件<font color="#e74f4c">组装与测试</font>→<font color="#e74f4c">技术评审</font>→<font color="#e74f4c">演化后的体系结构</font><br>
6.3 软件架构风格
6.3.1软件架构风格概述
软件架构设计的核心目标:是<font color="#e74f4c">重复的体系结构模式</font>(软件<font color="#e74f4c">复用</font>/重用)<br>
软件架构风格是:描述<font color="#e74f4c">某一特定应用领域</font>中【<font color="#e74f4c">系统组织方式</font>】的【<font color="#e74f4c">惯用模式</font>】<br>
体系结构风格反映了领域中众多系统所共有的【<font color="#e74f4c">结构</font>】和【<font color="#e74f4c">语义</font>】特性,并指导<font color="#e74f4c">如何</font>将各个模块和子系统有效地<font color="#e74f4c">组织</font>成一个<font color="#e74f4c">完整的系统</font>
体系结构风格定义一个系统家族,包括【架构<font color="#e74f4c">定义</font>】、【架构<font color="#e74f4c">词汇表</font>(<font color="#e74f4c">构件</font>和<font color="#e74f4c">连接件</font>)】和【架构<font color="#e74f4c">约束</font>(构件和连接件的<font color="#e74f4c">组合方式</font>)】<br>
6.3.2 <font color="#e74f4c">数据流</font>风格
<font color="#e74f4c">批处理</font>
<font color="#e74f4c">无需用户交互,</font>每个处理步骤是一个<font color="#e74f4c">独立的程序</font>,每一步必须在<font color="#e74f4c">前一步结束后才能开始</font>,且<font color="#000000">数据</font>以【<font color="#e74f4c">整体</font>】的方式传递<br>
传统编译器
<font color="#e74f4c">管道-过滤器</font>
弱用户交互,把系统分为几个<font color="#e74f4c">序贯地处理步骤</font>,每个步骤之间通过<font color="#e74f4c">数据流</font>连接,一个步骤的输出是另一个步骤的输入<br>
6.3.3<font color="#e74f4c"> 调用/返回</font>风格(<font color="#e74f4c">分而治之</font>) <br>
定义:是一种<font color="#e74f4c">分而治之</font>的策略,主要思想是将一个复杂的大系统分解为<font color="#e74f4c">若干个子系统</font>,降低复杂度,增加可修改性<br>
<font color="#e74f4c">主程序/子程序</font><font color="#000000">风</font>格<br>
主程序<font color="#e74f4c">显示调用</font>子程序,采用【<font color="#e74f4c">单线程</font>】控制,构件即为<font color="#e74f4c">主程序和子程序</font>。<br>
<font color="#e74f4c">面向对象</font>风格
构件是<font color="#e74f4c">对象</font>,即抽象数据类型的<font color="#e74f4c">实例</font>,通过【<font color="#e74f4c">函数和过程的调用</font>】来交互,可以通过<font color="#e74f4c">减少功能调用层次</font>提高系统性能<br>
<font color="#e74f4c">层次型</font>风格
每一层为<font color="#e74f4c">上层服务</font>,并为<font color="#e74f4c">下层提供接口</font>。仅相邻层间具有<font color="#e74f4c">层接口,</font>层次越多效率越差<br>
物联网
<font color="#e74f4c">客户端/服务器</font>风格(C/S)<br>
二层 C/S 模式
组成:<font color="#e74f4c">客户应用程序</font>(前台:完成与用户交互任务)、<font color="#e74f4c">网络</font>、<font color="#e74f4c">数据库</font>服务器(后台:负责数据管理)<br>优点:客户应用和服务器构件分别运行在不同的计算机上。<br>缺点:开发<font color="#e74f4c">成本高</font>,客户端<font color="#e74f4c">设计复杂</font>,信息内容和形式单一,<font color="#e74f4c">不利于推广</font>,软件<font color="#e74f4c">移植困难</font>,软件<font color="#e74f4c">维护和升级困难</font>。<br>
三层 C/S (瘦客户端)<br>
<font color="#e74f4c">表示</font>层:用户接口与应用逻辑层的交互,不影响业务逻辑,通常使用<font color="#e74f4c">图形用户界面</font>。<br><font color="#e74f4c">功能</font>层:实现具体的<font color="#e74f4c">业务处理逻辑</font>。<br><font color="#e74f4c">数据</font>层:<font color="#e74f4c">数据库</font>管理系统。
<font color="#e74f4c">浏览器/服务器</font>风格(B/S)
其三层结构分别为:<font color="#e74f4c">浏览器</font>;<font color="#e74f4c">Web</font><font color="#000000">服务器</font>;<font color="#e74f4c">数据库</font>服务器。
相比于C/S的不足之处:<font color="#e74f4c">动态页面</font>的支持能力弱、系统<font color="#e74f4c">拓展能力</font>差、<font color="#e74f4c">安全性</font>难以控制、<font color="#e74f4c">响应速度</font>不足、数据<font color="#e74f4c">交互性</font>不强。
6.3.4 <font color="#e74f4c">以数据为中心</font>的风格
<font color="#e74f4c">仓库</font>风格
以<font color="#e74f4c">数据</font>为中心,存储和维护数据的中心场所。由<font color="#e74f4c">中央数据结构</font>(说明当前数据<font color="#e74f4c">状态</font>)和<font color="#e74f4c">一组独立构件</font>(对中央数据进行<font color="#e74f4c">操作</font>)组成<br>
<font color="#e74f4c">黑板</font>风格(问题求解)<br>
是一种<font color="#e74f4c">问题求解</font>模型,是【<font color="#e74f4c">组织推理步骤</font>】、【<font color="#e74f4c">控制状态数据</font>】和【<font color="#e74f4c">问题求解之领域知识</font>】的概念框架。<br>可通过选取<font color="#e74f4c">各种</font>【<font color="#e74f4c">黑板</font>】、【<font color="#e74f4c">知识源</font>】和【<font color="#e74f4c">控制模块</font>】的构件来设计<br>
应用场景:<font color="#e74f4c">信号处理</font>领域,如语音识别和模式识别。另一应用是松耦合代理<font color="#e74f4c">数据共享存取</font>。<br>
集成开发环境(IDE)需要面对不同的数据结构,不同的数据类型与形态,在这种以数据为核心的系统中,采用数据共享机制显然是最为合适的。
6.3.5 <font color="#e74f4c">虚拟机</font>风格
定义:<font color="#e74f4c">人为</font>构建一个<font color="#e74f4c">运行环境</font>,可以解析与运行<font color="#e74f4c">自定义的语言</font>,增加架构的<font color="#e74f4c">灵活性</font><br>
<font color="#e74f4c">解释器</font>风格
组成:<font color="#e74f4c">解释引擎</font>、被解释的<font color="#e74f4c">代码的存储区</font>、记录<font color="#e74f4c">工作状态</font>、<font color="#e74f4c">进度</font>的<font color="#e74f4c">数据结构</font><br>
通常被用来建立一种虚拟机以弥合<font color="#e74f4c">程序语义</font>与<font color="#e74f4c">硬件语义</font>之间的差异,缺点是执行<font color="#e74f4c">效率较低</font>
典型例子是专家系统
<font color="#e74f4c">规则系统</font>风格
包括:<font color="#e74f4c">知识库</font>(<font color="#e74f4c">规则</font>集、<font color="#e74f4c">事实</font>集)、<font color="#e74f4c">规则解释器</font>、<font color="#e74f4c">规则/数据选择器</font>及<font color="#e74f4c">工作内存</font>(程序运行存储区)<br>
6.3.6<font color="#e74f4c">独立构件</font>风格
定义:独立构件体系结构风格强调系统中的每个构件都是<font color="#e74f4c">相对独立的个体</font>,它们之间不直接通信,以降低耦合度,提升灵活度<br>
<font color="#e74f4c">进程通信</font>风格
<font color="#e74f4c">构件</font>是独立的<font color="#e74f4c">命名过程</font>,<font color="#e74f4c">连接件</font>是<font color="#e74f4c">消息传递</font>(点到点、异步或同步方式及远程过程调用)<br>
<font color="#e74f4c">事件系统</font>风格
构件<font color="#e74f4c">不直接调用</font>一个过程,而是通过<font color="#e74f4c">触发</font>或广播一个或多个<font color="#e74f4c">事件</font>。<br>
隐式调用
<font color="#e74f4c">C2</font>风格
通过<font color="#e74f4c">连接件</font>【<font color="#e74f4c">连接</font>】构件或某个构件组,<font color="#e74f4c">构件与构件之间</font>【<font color="#e74f4c">无连接</font>】<br>
6.4 软件架构的复用技术
6.4.1 软件架构复用的定义及分类
定义:开发<font color="#e74f4c">一组</font>基本的<font color="#e74f4c">软件构件模块</font>,以覆盖不同的需求/体系结构之间的<font color="#e74f4c">相似性</font>,提高系统<font color="#e74f4c">开发的效率</font>、<font color="#e74f4c">质量</font>和<font color="#e74f4c">性能</font>。<br>
分类:<font color="#e74f4c">机会</font>复用(在<font color="#e74f4c">开发过程</font>中,只要发现有可复用的资产就复用)、<font color="#e74f4c">系统</font>复用(在<font color="#e74f4c">开发前</font>进行规划,决定哪些复用)<br>
6.4.2软件架构复用的原因
减少<font color="#e74f4c">开发工作</font>、减少<font color="#e74f4c">开发事件</font>、降低<font color="#e74f4c">开发成本</font>、提高<font color="#e74f4c">生产力</font>、提高<font color="#e74f4c">产品质量</font>,更好的【<font color="#e74f4c">互操作性</font>】<br>
6.4.3软件架构复用的对象及形式
可复用的<font color="#e74f4c">资产</font>包括:<font color="#e74f4c">需求、架构设计、元素、建模分析、测试、项目规划、过程+方法+工具、人员、样本系统、缺陷消除</font>。
一般形式的复用包括:<font color="#e74f4c">函数</font>的复用、<font color="#e74f4c">库</font>的复用、<font color="#e74f4c">面向对象</font>开发中的<font color="#e74f4c">类</font>、<font color="#e74f4c">接口</font>和<font color="#e74f4c">包</font>的复用
6.4.4 软件架构复用的基本过程
<font color="#e74f4c">分析</font>可复用资产
<font color="#e74f4c">构建/获取</font>可复用的软件资产(复用前提)
<font color="#e74f4c">管理</font>复用资产(构件<font color="#e74f4c">库</font>、构件<font color="#e74f4c">分类</font>和<font color="#e74f4c">检索</font>)
<font color="#e74f4c">使用</font>复用资产(资产的修改、扩展、配置、组装与集成)
6.5 特定领域软件架构(DSSA,螺旋模型)<br>
6.5.1DSSA 的定义
在一个<font color="#e74f4c">特定应用领域</font>中,为一组应用提供组织结构参考的<font color="#e74f4c">标准软件体系结构</font>。<br>
DSSA 的特征:<font color="#e74f4c">领域</font>性、<font color="#e74f4c">普遍</font>性、<font color="#e74f4c">抽象</font>性、<font color="#e74f4c">可复用</font>性
6.5.2 DSSA的基本活动<br>
领域<font color="#e74f4c">分析</font>:获得【<font color="#e74f4c">领域模型</font>】。领域模型描述领域中系统之间<font color="#e74f4c">共同的需求</font>,即领域需求。<br>
领域<font color="#e74f4c">设计</font>:获得【<font color="#e74f4c">特定领域软件架构</font>】。DSSA需要具备<font color="#e74f4c">领域需求变化</font>的<font color="#e74f4c">适应性</font><br>
领域<font color="#e74f4c">实现</font>:获取【<font color="#e74f4c">可重用</font>信息】,并对基础软件架构进行实现<br>
6.5.3 DSSA的人员<br>
<font color="#000000">领域</font><font color="#e74f4c">专家</font><font color="#000000">、领域</font><font color="#e74f4c">分析师</font><font color="#000000">、领域</font><font color="#e74f4c">设计人员</font><font color="#000000">和领域</font><font color="#e74f4c">实现人员</font><br>
领域<font color="#e74f4c">分析</font>者的任务是:控制整个领域分析过程,进行知识获取,将获取的知识组织到<font color="#e74f4c">领域模型</font>中<br>
领域<font color="#e74f4c">设计</font>者的任务是:根据领域模型和现有系统<font color="#e74f4c">开发出DSSA</font>,并对DSSA的准确性和一致性进行验证<br>
6.5.4 DSSA 的建立过程<br>
DSSA的建立过程是<font color="#e74f4c">并发</font>的、<font color="#e74f4c">递归</font>的、<font color="#e74f4c">反复的螺旋</font>模型
三个层次:领域<font color="#e74f4c">开发环境</font>(领域<font color="#e74f4c">架构师</font>);领域<font color="#e74f4c">特定应用开发环境</font>(<font color="#e74f4c">应用工程师</font>);应用<font color="#e74f4c">执行环境</font>(<font color="#e74f4c">操作员</font>)<br>
五个阶段:定义领域<font color="#e74f4c">范围</font>,定义领域<font color="#e74f4c">元素</font>,定义领域设计和实现<font color="#000000">需求</font><font color="#e74f4c">约束</font>,定义<font color="#e74f4c">领域模型和体系结构</font>,产生、搜集<font color="#e74f4c">可重用的产品单元</font>)<br>
7、系统<font color="#e74f4c">质量属性</font>与<font color="#e74f4c">架构评估</font><br> 综合8~15分<br> 案例、论文
7.1 软件系统质量属性
7.1.1 质量属性概念
GB/T 16260.1标准
从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性:功能性、可靠性、易用性、效率、维护性与可移植性。<br> 功能性包括适合性、准确性、互操作性、依从性、安全性;<br> 可靠性包括容错性、易恢复性、成熟性;<br> 易用性包括易学性、易理解性、易操作性;<br> 效率包括资源特性和时间特性;<br> 维护性包括可测试性、可修改性、稳定性和易分析性;<br> 可移植性包括适应性、易安装性、一致性和可替换性<br>
软件系统质量属性是一个系统的<font color="#e74f4c">可测量</font>或<font color="#e74f4c">可测试</font>的属性,用来描述系统满足<font color="#e74f4c">利益相关者</font> (Stakeholders) 需求的程度。
基于软件系统的<font color="#e74f4c">生命周期</font><font color="#000000">分类</font><br>
<font color="#e74f4c">开发期</font>质量属性
<font color="#e74f4c">易理解</font>性:指<font color="#e74f4c">设计</font>被开发人员<font color="#e74f4c">理解</font>的难易程度<br>
<font color="#e74f4c">可扩展</font>性(<font color="#e74f4c">灵活</font>性):软件因<font color="#e74f4c">适应</font><font color="#000000">新需求</font>或需求变化而增加<font color="#e74f4c">新功能</font>的能力<br>
<font color="#e74f4c">可重用</font>性:指<font color="#e74f4c">重用</font>软件系统或某一部分的难易程度<br>
<font color="#e74f4c">可测试</font>性:对软件<font color="#e74f4c">测试</font>以证明其满足需求规范的难易程度,对系统的行为进行<font color="#e74f4c">控制与调试</font><br>
<font color="#e74f4c">可维护</font>性:当需要修改缺陷、增加功能、提高质量属性时,<font color="#e74f4c">识别</font>修改点并<font color="#e74f4c">实施修改</font>的难易程度<br>
<font color="#e74f4c">可移植</font>性:将软件系统从一个运行环境转移到另一个不同的<font color="#e74f4c">运行环境</font>的难易程度<br>
<font color="#e74f4c">运行期</font>质量属性
<font color="#e74f4c">性能</font>:软件系统及时提供相应服务的能力,如<font color="#e74f4c">速度</font>、<font color="#e74f4c">吞吐量</font>和<font color="#e74f4c">容量</font>等<br>
【<font color="#e74f4c">可伸缩</font>性】:当<font color="#e74f4c">用户数和数据量</font>增加时,软件系统维持高<font color="#e74f4c">服务质量</font>的能力<br>
<font color="#e74f4c">互操作</font>性:软件系统与其他系统交换数据和<font color="#e74f4c">相互调用</font>服务的难易程度<br>
<font color="#e74f4c">可靠</font>性:软件系统在一定的时间内<font color="#e74f4c">持续无故障运行</font>的<font color="#e74f4c">能力</font><br>
<font color="#e74f4c">可用</font>性:系统在一定时间内<font color="#e74f4c">正常工作</font>的时间所占<font color="#e74f4c">比例</font><br>
<font color="#e74f4c">鲁棒</font>性(<font color="#e74f4c">健壮</font>性、<font color="#e74f4c">容错</font>性):软件系统在<font color="#e74f4c">非正常情况</font>(用户进行<font color="#e74f4c">非法操作</font>、相关软硬件系统<font color="#e74f4c">发生故障</font>)下仍<font color="#e74f4c">正常运行的能力</font><br>
<font color="#e74f4c">安全</font>性:软件系统同时兼顾向<font color="#e74f4c">合法用户提供服务</font>,以及<font color="#e74f4c">阻止非授权用户</font>使用的能力<br>
7.1.2 面向架构评估的质量属性<br>
【<font color="#e74f4c">功能</font><font color="#000000">性</font>】:<font color="#e74f4c">需求</font>的满足程度<br>
【<font color="#e74f4c">可变</font><font color="#000000">性</font>】:架构经<font color="#e74f4c">扩充</font>或<font color="#e74f4c">变更</font>而成为<font color="#e74f4c">新架构</font>的能力<br>
【<font color="#e74f4c">互操作</font><font color="#000000">性</font>】:与其他系统互操作,通过<font color="#e74f4c">可视化</font>或<font color="#e74f4c">接口</font>方式提供更好的交互操作体验
<font color="#e74f4c">可修改</font>性:快速地以较高的性价比对系统作出修改的能力
<font color="#e74f4c">结构重组</font>:不影响主体进行的<font color="#e74f4c">灵活配置</font><br>
<font color="#e74f4c">可扩展</font>性:因<font color="#e74f4c">松散耦合</font>更易实现新特性/功能,不影响架构<br>
<font color="#e74f4c">可维护</font>性:能做<font color="#e74f4c">局部的修复</font>,使故障对架构的<font color="#e74f4c">负面影响最小化</font><br>
<font color="#e74f4c">可移植</font>性:适用于<font color="#e74f4c">多样的环境</font>(硬件平台、语言、操作系统等)<br>
设计策略<br>
局部化修改:<font color="#e74f4c">抽象</font>、高内聚低耦合、预测变更、使模块通用。
防止连锁反应:<font color="#e74f4c">信息隐藏</font>、维持现有接口、<font color="#e74f4c">限制通信路径</font>、使用中介。
推迟绑定时间:<font color="#e74f4c">运行时注册</font>、多态、配置文件。
<font color="#e74f4c">性能</font>:单位时间内能处理的工作量<br>
设计策略<br>
资源的需求:<font color="#e74f4c">减少</font>处理事件时对<font color="#e74f4c">资源的占用</font>、减少处理事件的数量、<font color="#e74f4c">控制资源的使用</font>。
资源管理:<font color="#e74f4c">并发</font>机制、<font color="#e74f4c">增加资源</font>
资源仲裁:<font color="#e74f4c">优先级队列</font>、先来先服务、固定<font color="#000000">优先级</font>、动态优先级、静态调度
<font color="#e74f4c">可靠性:</font>在一定的时间内持续无故障运行的能力<br>
可靠性通常用<font color="#e74f4c">平均失效等待时间</font> (Mean Time To Failure,MTTF) 和<font color="#e74f4c">平均失效间隔时间 </font>(Mean Time Between Failure,MTBF) 来衡量
<font color="#e74f4c">容错</font>:出现错误后仍能保证系统正常运行,且<font color="#e74f4c">自行修正</font>错误<br>
<font color="#e74f4c">健壮性</font>:错误不对系统产生影响,按既定程序<font color="#e74f4c">忽略错误</font><br>
<font color="#e74f4c">可用</font>性:正常运行的时间比例
<b>设计策略</b>
错误<font color="#e74f4c">检测</font>:<font color="#e74f4c">心跳</font>、<font color="#e74f4c">Ping/Echo</font>、<font color="#e74f4c">异常</font>
错误<font color="#e74f4c">恢复</font>:<font color="#e74f4c">表决</font>、<font color="#e74f4c">主动冗余</font>、<font color="#e74f4c">被动冗余</font>、<font color="#e74f4c">重新同步</font>、<font color="#e74f4c">内测</font>、<font color="#e74f4c">检查点/回滚</font>
错误<font color="#e74f4c">避免</font>:服务<font color="#e74f4c">下线</font>、<font color="#e74f4c">事务</font>、<font color="#e74f4c">进程监控</font>器
<font color="#e74f4c">安全</font>性:系统给<font color="#e74f4c">合法</font>用户<font color="#e74f4c">提供</font>服务并<font color="#e74f4c">阻止非法</font>用户的能力
设计策略
抵抗攻击:用户<font color="#e74f4c">身份验证</font>、用户<font color="#e74f4c">授权</font>、维护数据机密性与完整性、限制暴露、<font color="#e74f4c">限制访问</font>
检测攻击:入侵检测系统、追踪/审计
从攻击中恢复:恢复状态、识别攻击者
7.1.3 质量属性场景描述
质量属性场景是一种面向特定质量属性的需求,由<font color="#e74f4c">刺激源</font>、<font color="#e74f4c">刺激</font>、<font color="#e74f4c">环境</font>、<font color="#e74f4c">制品</font>、<font color="#e74f4c">响应</font>、<font color="#e74f4c">响应度量</font>组成
<font color="#e74f4c">刺激源</font>(Source):某个<font color="#e74f4c">生成该刺激的实体</font>(人、计算机系统或者任何其他刺激器)
<font color="#e74f4c">刺激</font>(Stimulus):指当刺激<font color="#e74f4c">到达系统</font>时需要<font color="#e74f4c">考虑</font>的<font color="#e74f4c">条件</font>
<font color="#e74f4c">环境</font>(Environment):指该刺激在<font color="#e74f4c">某些条件内发生</font>。当激励发生时,系统可能处于过载、运行或者其他情况
<font color="#e74f4c">制品</font>(Artifact):某个<font color="#e74f4c">制品被激励</font>。可能是整个系统,也可能是系统的一部分
<font color="#e74f4c">响应</font>(Response):指在<font color="#e74f4c">激励到达</font>后所<font color="#e74f4c">采取的行动</font><br>
<font color="#e74f4c">响应度量</font>(Measurement):当<font color="#e74f4c">响应发生</font>时,应当能够以<font color="#e74f4c">某种方式对其进行度量</font>,以对需求进行测试。
7.2 系统架构评估
7.2.1 系统架构评估中的重要概念<br>
架构评估的基木概念
系统架构评估是在对架构<font color="#000000">分析、评估</font>的基础上,对<font color="#e74f4c">架构策略</font>的选取进行<font color="#e74f4c">决策</font>
核心概念
<font color="#e74f4c">风险</font>点:指架构设计中<font color="#e74f4c">潜在</font>的、<font color="#e74f4c">存在问题</font>的架构<font color="#e74f4c">决策</font>所带来的【<font color="#e74f4c">隐患</font>】<br>
<font color="#e74f4c">非风险</font>点:某些做法是<font color="#e74f4c">可行</font>的、<font color="#e74f4c">可接受</font>的
<font color="#e74f4c">敏感</font>点:为了实现某种<font color="#e74f4c">特定质量属性</font>,一个或多个系统<font color="#e74f4c">组件</font>所具有的<font color="#e74f4c">特性</font><br>
<font color="#e74f4c">权衡</font>点:是影响多个质量属性,并对<font color="#e74f4c">多个质量属性</font>来说都是<font color="#e74f4c">敏感点</font>的系统属性<br>
<font color="#e74f4c">风险</font>承担者或<font color="#e74f4c">利益</font>相关人:<font color="#e74f4c">影响体系结构</font>或<font color="#e74f4c">被体系结构影响</font>的<font color="#e74f4c">群体</font>
<font color="#e74f4c">场景</font>:确定架构质量评估<font color="#e74f4c">目标</font>的【<font color="#e74f4c">交互机制</font>】,一般采用【<font color="#e74f4c">触发</font>】机制(教材中解释为“<font color="#e74f4c">刺激</font>”)、【<font color="#e74f4c">环境</font>】和【<font color="#e74f4c">影响</font>】三方面来描述。<br>
评估方法分类<br>
基于【<font color="#e74f4c">调查问卷</font>】或【<font color="#e74f4c">检查表</font>】的方法:该方式的关键是要<font color="#e74f4c">设计好问卷或检查表</font>,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于<font color="#e74f4c">评估人员的主观推断</font>。<br>
基于【<font color="#e74f4c">场景</font>】的评估方法:通过分析软件架构对<font color="#e74f4c">场景的支持程度</font>,从而判断该架构对这一场景所代表的<font color="#e74f4c">质量需求的满足程度</font>,应用在架构权衡分析法(<font color="#e74f4c">ATAM</font>)和软件架构分析方法(<font color="#e74f4c">SAAM</font>)中。<br>
基于【<font color="#e74f4c">度量</font>】的评估方法:制定一些<font color="#e74f4c">定量值</font>来度量架构,如代码行数等;建立【<font color="#e74f4c">质量属性</font>和<font color="#e74f4c">度量</font>之间的<font color="#e74f4c">映射原则</font>】<font color="#e74f4c"> </font>→ 在软件文档中<font color="#e74f4c">获取度量信息 </font>→ <font color="#e74f4c">分析推导</font>系统<font color="#e74f4c">质量属性</font>。<br>
7.2.2系统架构评估方法
软件架构分析方法(<font color="#e74f4c">SAAM</font>)
SAAM 是卡耐基梅隆大学软件工程研究所的Kazman等人于<font color="#e74f4c">1983</font>年提出的一种【<font color="#e74f4c">非功能</font>质量属性】的架构分析方法,是<font color="#e74f4c">最早形成文档</font>并得到广泛应用的软件架构分析方法
SAAM的主要输入是【<font color="#e74f4c">问题描述</font>、<font color="#e74f4c">需求说明(需求分析)</font>和<font color="#e74f4c">架构描述(架构设计)</font>】,其分析过程主要包括【<font color="#e74f4c">场景开发</font>、<font color="#e74f4c">架构描述</font>、<font color="#e74f4c">单个场景评估</font>、<font color="#e74f4c">场景交互评估、总体评估</font>】<br>
架构权衡分析方法(<font color="#e74f4c">ATAM</font>)
ATAM是一种系统架构评估方法,主要在系统<font color="#e74f4c">开发之前</font>,针对【<font color="#e74f4c">性能</font>】、【<font color="#e74f4c">可修改</font>】性、【<font color="#e74f4c">可用</font>】<font color="#000000">性</font>、【<font color="#e74f4c">安全</font>】<font color="#000000">性</font>等质量属性进行【<font color="#e74f4c">评价和折中</font>】<br>
ATAM4个活动领域(阶段):<font color="#e74f4c">场景和需求收集</font>、<font color="#e74f4c">架构视图和场景实现</font>、【<font color="#e74f4c">属性模型</font>】<font color="#e74f4c">构造和分析</font>、<font color="#e74f4c">架构</font>【<font color="#e74f4c">决策与折中</font>】,整个评估过程强调以【<font color="#e74f4c">属性</font>】作为架构评估的核心概念。<br>
现代ATAM采用<font color="#e74f4c">效用树</font>对质量属性进行<font color="#e74f4c">分类和优先级</font>排序
<font color="#e74f4c">演示介绍</font><font color="#000000">阶段</font><br>
<font color="#e74f4c">介绍ATAM</font>方法:描述ATAM<font color="#e74f4c">评估过程</font>。<br>
描述<font color="#e74f4c">商业目标</font>:着重<font color="#e74f4c">业务视角</font>,提供有关系统<font color="#e74f4c">功能</font>、主要<font color="#e74f4c">利益相关方</font>、<font color="#e74f4c">业务目标</font>和其他<font color="#e74f4c">限制</font>等信息。
描述<font color="#e74f4c">体系结构</font>:侧重<font color="#e74f4c">可用性</font>以及体系结构的<font color="#e74f4c">质量要求</font>
<font color="#e74f4c">调查和分析</font>阶段
<font color="#e74f4c">确定</font>架构<font color="#e74f4c">方法</font>:能够理解系统<font color="#e74f4c">关键需求</font>的<font color="#e74f4c">关键架构</font>方法<br>
生成<font color="#e74f4c">质量属性效用树</font>:确定<font color="#e74f4c">最重要</font>的质量属性,并确定优先<font color="#e74f4c">次序</font>
<font color="#e74f4c">分析</font>体系结构<font color="#e74f4c">方法</font>:彻底调查和分析,找出处理<font color="#e74f4c">相应质量属性架构的方法</font>。包括4个主要阶段:<font color="#e74f4c">调查</font>架构方法 → <font color="#e74f4c">创建</font>分析问题 → 分析问题的<font color="#e74f4c">答案 </font>→ 找出<font color="#e74f4c">风险</font>、<font color="#e74f4c">非风险</font>、<font color="#e74f4c">敏感点</font>和<font color="#e74f4c">权衡点</font>。<br>
<font color="#e74f4c">测试</font>阶段
<font color="#e74f4c">头脑风暴和优先场景</font>:将<font color="#e74f4c">头脑风暴的优先列表</font>与生成质量属性<font color="#e74f4c">效用树</font>中所获取的优先方案进行比较<br>
<font color="#e74f4c">分析架构方法</font>:分析<font color="#e74f4c">上一步</font>中高优先级的质量属性,检查相应的架构设计方案<font color="#e74f4c">是否可支持</font>满足这些属性,<font color="#e74f4c">重复</font>第6步来完善体系结构方法<br>
<font color="#e74f4c">报告</font>阶段
提供评估期间收集的<font color="#e74f4c">所有信息</font>(场景、效用树、分析问题、风险和非风险、架构方法),呈现给<font color="#e74f4c">利益相关者</font><br>
SAAM和ATAM对比<br>
特定目标:通过<font color="#e74f4c">程序文档</font>验证体系结构,注重发现潜在问题,可用于评价单系统或进行<font color="#e74f4c">多系统比较</font>;确定在<font color="#e74f4c">多个质量属性之间折中</font>的必要性<br>
评估技术:<font color="#e74f4c">场景</font>技术;<font color="#e74f4c">场景</font>技术、<font color="#e74f4c">启发式分析</font>方法<br>
质量属性:<font color="#e74f4c">可修改性</font>;<font color="#e74f4c">性能、可用性、安全性和可修改</font>性<br>
风险承担者:<font color="#e74f4c">所有</font>参与者;<font color="#e74f4c">场景和需求收集</font>过程中的相关人<br>
架构描述:围绕<font color="#e74f4c">功能、结构和分配</font>描述;<font color="#e74f4c">五个基本结构及其映射</font>关系<br>
方法活动:<font color="#e74f4c">场景开发、体系结构描述、单个场景评估、场景交互和总体评估</font>;<font color="#e74f4c">场景和需求收集、架构视图和场景实现、属性模型构造和分析、折中</font><br>
知识库可复用性:<font color="#e74f4c">不涉及</font>;有<font color="#e74f4c">基于属性</font>的体系模型,<font color="#e74f4c">可复用</font><br>
方法验证:<font color="#e74f4c">空中交通管制</font>系统、<font color="#e74f4c">嵌入式音频</font>系统、<font color="#e74f4c">修正控制</font>系统、根据上下文<font color="#e74f4c">查找关键词</font>系统;仍处于研究中<br>
<font color="#e74f4c">成本效益</font>分析法(CBAM)
成本效益分析法(Cost Benefit Analysis Method,CBAM)分为<font color="#e74f4c">整理场景 </font>→ 场景<font color="#e74f4c">求精 </font>→ 确定场景的<font color="#e74f4c">优先级 </font>→ <font color="#e74f4c">分配效用 </font>→ 架构策略涉及哪些<font color="#e74f4c">质量属性及响应级别</font> → 使用<font color="#e74f4c">内插法</font>确定“期望的”质量属性响应级别的<font color="#e74f4c">效用 </font>→ 计算各架构策略的<font color="#e74f4c">总收益 </font>→ 根据受成本限制影响的<font color="#e74f4c">ROI</font>选择架构策略
其他评估法
<font color="#e74f4c">SAEM</font>方法:将软件架构看作一个<font color="#e74f4c">最终产品</font>以及涉及过程中的一个<font color="#e74f4c">中间产品</font>,从<font color="#e74f4c">外部质量属性</font>和<font color="#e74f4c">内部质量属性</font>阐述的评估模型。<br>
<font color="#e74f4c">SAABNet</font>方法:辅助架构的<font color="#e74f4c">定性评估</font>,帮助诊断软件问题的可能原因,分析架构中的修改给质量属性带来的影响、预测架构的质量属性,帮助架构设计人员做决策。SAABNet 度量的对象包括<font color="#e74f4c">架构属性</font>、<font color="#e74f4c">质量准则</font>和<font color="#e74f4c">质量因素</font>。<br>
<font color="#e74f4c">SACMM</font>方法:一种软件<font color="#e74f4c">架构修改的度量</font>方法,首先基于内核定义差异度量准则来计算两个软件架构之间的<font color="#e74f4c">距离</font>,然后分析对象之间的<font color="#e74f4c">相似性</font>。
<font color="#e74f4c">SASAM</font>方法:通过对<font color="#e74f4c">预期架构</font>和<font color="#e74f4c">实际架构</font>进行<font color="#e74f4c">映射和比较</font>来<font color="#e74f4c">静态</font>地评估软件架构。<br>
<font color="#e74f4c">ALRRA</font>方法:是软件架构<font color="#e74f4c">可靠性风险</font>评估方法,使用<font color="#e74f4c">动态复杂度</font>准则和<font color="#e74f4c">动态耦合度</font>准则来定义组件和连接件的复杂性因素。
<font color="#e74f4c">AHP</font>方法:把<font color="#e74f4c">定性分析</font>和<font color="#e74f4c">定量计算</font>相结合,对各种决策因素进行处理。
<font color="#e74f4c">COSMIC</font>+UML方法:针对不同表达方式的软件架构,采用统一的软件度量<font color="#e74f4c">COSMIC</font>方法来进行度量和评估
8、<font color="#e74f4c">软件可靠性</font>技术<br> 综合2~3分<br> 论文
8.1 软件可靠性基本概念
8.1.1 软件可靠性定义
软件可靠性是指在【<font color="#e74f4c">规定的时间</font>】内,软件不引起【<font color="#e74f4c">系统失效</font>】的【<font color="#e74f4c">概率</font>】。<br>该概率是【<font color="#e74f4c">系统输入</font>】和【<font color="#e74f4c">系统使用的函数</font>】,也是【<font color="#e74f4c">软件中存在的缺陷函数</font>】;<br><font color="#e74f4c">系统输入</font>将确定是否会遇到已存在的缺陷。<br>
8.1.2 软件可靠性的定量描述
软件的可靠性是在【<font color="#000000">软件</font><font color="#e74f4c">使用条件</font>】、【在<font color="#e74f4c">规定时间</font>内】、【系统的<font color="#e74f4c">输入/输出</font>】、【<font color="#e74f4c">系统使用</font>】等变量构成的<font color="#e74f4c">数学表达式</font>,<br>
规定时间:<font color="#e74f4c">自然</font>时间、<font color="#e74f4c">运行</font>时间(启动到结束)、<font color="#e74f4c">执行</font>时间(cpu执行指令的时间)<br>
<font color="#000000">失效</font><font color="#e74f4c">概率</font>:从软件运行<font color="#e74f4c">开始</font>,到某一<font color="#e74f4c">时刻t为止</font>,出现失效的概率。可以看作是关于软件<font color="#e74f4c">运行时间</font>的一个<font color="#e74f4c">随机函数</font><br>
失效<font color="#e74f4c">强</font>度:<font color="#e74f4c">单位时间</font>软件系统出现失效的概率<br>
可靠<font color="#e74f4c">度</font>:表示可靠性<font color="#e74f4c">最为直接的方式</font>,是指软件系统在【规定的<font color="#e74f4c">条件</font>下】、【规定的<font color="#e74f4c">时间</font>内】不发生失效的概率<br>
平均<font color="#e74f4c">无失效时间</font>:软件<font color="#e74f4c">运行后</font>,到<font color="#e74f4c">下一次失效</font>的平均时间,更直观地反映软件的可靠度<br>
平均故障间隔时间:<font color="#e74f4c">失效或维护</font>中所需的<font color="#000000">平均时间</font>,包括<font color="#e74f4c">故障时间</font>以及<font color="#e74f4c">检测和维护</font>设备的时间。<br>
8.1.3 可靠性目标
指用户对所使用的软件的性能<font color="#e74f4c">满意程度</font>的期望。可以用【<font color="#e74f4c">可靠度</font>】、【<font color="#e74f4c">平均失效时间</font>】和【<font color="#e74f4c">故障强度</font>】等来描述。<br>
8.1.4 可靠性测试的意义
意义
1、软件失效可能造成<font color="#e74f4c">灾难性的后果</font>。<br>2、软件的失效在整个<font color="#e74f4c">计算机系统</font>失效中的<font color="#e74f4c">比例较高</font>。<br>3、相比硬件可靠性技术,软件可靠性<font color="#e74f4c">技术不成熟</font>。<br>4、软件可靠性问题会造成<font color="#e74f4c">软件费用增长</font>。<br>5、系统对软件的依赖性强,对生产活动和社会生活<font color="#e74f4c">影响日益增大</font><br>
目的
1、<font color="#e74f4c">发现</font>软件<font color="#000000">系统的</font><font color="#e74f4c">缺陷</font><br>2、为软件的使用和维护提供<font color="#e74f4c">可靠性依据</font><br>3、确认软件是否达到<font color="#e74f4c">可靠性</font>的<font color="#e74f4c">定量要求</font>
8.1.5 广义与狭义的可靠性测试
广义:为了最终评价软件系统的可靠性而运用【<font color="#e74f4c">建模</font>】、【<font color="#e74f4c">统计</font>】、【<font color="#e74f4c">分析</font>】、【<font color="#e74f4c">试验</font>】和【<font color="#e74f4c">评价</font>】等一系列手段对软件系统实施的一种测试。<br>
狭义:指为了获取可靠性数据,按<font color="#e74f4c">预先确定好的</font>【<font color="#e74f4c">测试用例</font>】,在软件【<font color="#e74f4c">预期使用环境</font>】中,对软件实施的一种测试<br>
8.2 软件可靠性<font color="#e74f4c">建模</font>
8.2.1 影响软件可靠性的因素<br>
【<font color="#e74f4c">运行环境</font>】、【<font color="#e74f4c">软件规模</font>】、【软件的<font color="#e74f4c">内部结构</font>】、【软件的<font color="#e74f4c">开发方法</font>和开发<font color="#e74f4c">环境</font>】、【软件的<font color="#e74f4c">可靠性投入</font>】<br>
8.2.2 软件可靠性的建模方法
可靠性模型的组成:【<font color="#e74f4c">模型假设</font>】、【<font color="#e74f4c">性能度量</font>】、【<font color="#e74f4c">参数估计方法</font>】、【<font color="#e74f4c">数据要求</font>】<br>
可靠性模型的特性:【基于<font color="#e74f4c">可靠的假设</font>】、【<font color="#e74f4c">简单</font>】、【<font color="#e74f4c">计算一些有用的量</font>】、【给出<font color="#e74f4c">未来失效行为的好的映射</font>】、【可<font color="#e74f4c">广泛应用</font>】<br>
8.2.3 软件可靠性的模型分类<br>
可靠性模型分类:【<font color="#e74f4c">种子</font>法】、【<font color="#e74f4c">失效率</font>类】、【<font color="#e74f4c">曲线拟合</font>类】、【<font color="#e74f4c">可靠性增长</font>】、【<font color="#e74f4c">程序结构</font>分析】、【<font color="#e74f4c">输入域</font>分类】、【<font color="#e74f4c">执行路径</font>分析方法】、【<font color="#e74f4c">非齐次泊松</font>过程】、【<font color="#e74f4c">马尔可夫</font>过程】、【<font color="#e74f4c">贝叶斯</font>分析】<br>
8.3 软件可靠性<font color="#e74f4c">管理</font>
管理阶段:1.<font color="#e74f4c">需求分析</font>阶段、2.<font color="#e74f4c">概要设计</font>阶段、3.<font color="#e74f4c">详细设计</font>阶段、4.<font color="#e74f4c">编码</font>阶段、5.【<font color="#e74f4c">测试</font>】阶段、6.【<font color="#e74f4c">实施</font>】阶段<br>
8.4 软件可靠性<font color="#e74f4c">设计</font><br>
软件可靠性设计方法<font color="#e74f4c">准则</font>:【<font color="#e74f4c">简化</font>】设计、【<font color="#e74f4c">重用</font>】设计和【<font color="#e74f4c">健壮性</font>】设计<br>
8.4.1 <font color="#e74f4c">容错</font>设计技术<br>
分类:【<font color="#e74f4c">信息</font>】容错、【<font color="#e74f4c">结构</font>】容错<br>
方法:【<font color="#e74f4c">日志和副本</font>】、【<font color="#e74f4c">指令复执</font>和<font color="#e74f4c">程序卷回</font>】、【<font color="#e74f4c">冗余</font>】、【<font color="#e74f4c">N版本</font>(NVP)】和【<font color="#e74f4c">恢复块</font>(RB)】<br>
<font color="#e74f4c">冗余</font>设计:在一套完整的软件系统之外,设计一种<font color="#e74f4c">不同</font>【<font color="#e74f4c">路径</font>】、不同【<font color="#e74f4c">算法</font>】或不同【<font color="#e74f4c">实现方式</font>】方法的模块或系统作为【<font color="#e74f4c">备份</font>】,在出现故障时可使用冗余部分进行替换。
<font color="#e74f4c">N版本</font>程序设计:通过设计多个模块或<font color="#e74f4c">不同版本</font>,对相同<font color="#e74f4c">初始条件和输入</font>的操作结果,实行【<font color="#e74f4c">多数表决</font>】,防止其中某一软件模块/版本的故障提供错误的服务。
<font color="#e74f4c">恢复块</font>设计:选择【<font color="#e74f4c">一组操作</font>】作为容错设计【<font color="#e74f4c">单元</font>】,把普通的程序块变成恢复块
8.4.2 <font color="#e74f4c">检错</font>设计技术<br>
检错技术代价低于容错技术和冗余技术,但是<font color="#e74f4c">不能自动解决故障</font>,需要<font color="#e74f4c">人工干预</font>。
检错设计技术的重点考虑要素:【<font color="#e74f4c">检测对象</font>】、【<font color="#e74f4c">检测延时</font>】、【<font color="#e74f4c">实现方式</font>】和【<font color="#e74f4c">处理方式</font>】<br>
检错设计方法:【<font color="#e74f4c">简单</font>】原理、【<font color="#e74f4c">同型</font>】原理、【<font color="#e74f4c">对称</font>】原理、【<font color="#e74f4c">层次</font>】原理和【<font color="#e74f4c">安全</font>】原理等<br>
8.4.3 <font color="#e74f4c">降低复杂度</font>设计<br>
降低复杂度设计思想是在保证实现软件功能基础上,【<font color="#e74f4c">简化软件结构</font>】、【缩短程序<font color="#e74f4c">代码长度</font>】、【优化软件<font color="#e74f4c">数据流向</font>】、【降低<font color="#000000">软件</font><font color="#e74f4c">复杂度</font>】、【提高软件<font color="#e74f4c">可靠性</font>】。<br>
故障树分析(<font color="#000000">FTA</font>)、失效模式与效应分析(FMEA)方法的应用
8.4.4 <font color="#e74f4c">系统配置</font>技术<br>
<font color="#e74f4c">双机热备</font>技术
采用【“<font color="#e74f4c">心跳</font>”】方法保证主系统与备用系统的联系<br>
根据两台服务器的工作方式分为:双机【<font color="#e74f4c">热备</font>】模式(一台工作,<font color="#e74f4c">一台后备</font>)、双机【<font color="#e74f4c">互备</font>】模式(两台运行相对<font color="#e74f4c">独立应用</font>,<font color="#e74f4c">互为后备</font>)、双机【<font color="#e74f4c">双工</font>】模式(两台同时运行<font color="#e74f4c">相同应用</font>,<font color="#e74f4c">互为后备</font>)。<br>
<font color="#e74f4c">服务器集群</font>技术:集群内各节点服务器通过【<font color="#e74f4c">内部局域网</font>】相互通信,若某节点服务器发生故障,这台服务器运行的应用被另一节点服务器【<font color="#e74f4c">自动接管</font>】<br>
8.5 软件可靠性<font color="#e74f4c">测试</font><br>
8.5.1 软件可靠性测试概述<br>
软件可靠性测试分类:可靠性【<font color="#e74f4c">摸底</font>】测试、可靠性【<font color="#e74f4c">验证</font>】测试和可靠性【<font color="#e74f4c">增长</font>】测试)<br>
软件可靠性测试包括:可靠性【<font color="#e74f4c">目标的确定</font>】、【<font color="#e74f4c">运行剖面的开发</font>】、【<font color="#e74f4c">测试用例的设计</font>】、【测试<font color="#e74f4c">实施</font>】、【测试<font color="#e74f4c">结果分析</font>】等。<br>
8.5.2 定义软件<font color="#e74f4c">运行剖面</font>
为软件的【<font color="#e74f4c">使用行为建模(</font>马尔可夫链<font color="#e74f4c">)</font>】,【<font color="#e74f4c">开发使用模型</font>】,【<font color="#e74f4c">明确需测试内容</font>】<br>
8.5.3 可靠性<font color="#e74f4c">测试用例设计</font>
设计测试用例就是针对【<font color="#e74f4c">特定功能</font>】或【<font color="#e74f4c">组合功能</font>】设计测试<font color="#e74f4c">方案</font>,并编写成【<font color="#e74f4c">文档</font>】<br>
典型测试用例的基本组成
【测试用例<font color="#e74f4c">标识</font>】<br>【<font color="#e74f4c">被测对象</font>】<br>【测试<font color="#e74f4c">环境及条件</font>】<br>【测试<font color="#e74f4c">输入</font>】<br>【操作<font color="#e74f4c">步骤</font>】<br>【<font color="#e74f4c">预期输出</font>】<br>【判断输出<font color="#e74f4c">结果是否符合标准</font>】<br>【<font color="#e74f4c">测试对象的特殊需求</font>】
8.5.4 可靠性测试的<font color="#e74f4c">实施</font>
用时间定义的软件可靠性数据分为4类:【<font color="#e74f4c">失效时间</font>数据】、【<font color="#e74f4c">失效间隔时间</font>数据】、【分组时间<font color="#e74f4c">内的失效数</font>】、【分组时间的<font color="#e74f4c">累积失效数</font>】<br>
测试记录组成:【测试<font color="#e74f4c">人员</font>】、【测试<font color="#e74f4c">时间</font>】、含有【测试用例的<font color="#e74f4c">说明或标识</font>】、所有与测试有关的【<font color="#e74f4c">测试结果</font>,包括<font color="#e74f4c">失效数据</font>】<br>
测试报告组成:测试【<font color="#e74f4c">时间</font>】、【<font color="#e74f4c">软件产品标识</font>】、【测试<font color="#e74f4c">环境配置</font>】、测试【<font color="#e74f4c">依据</font>】、测试【<font color="#e74f4c">结果</font>】、测试【<font color="#e74f4c">问题</font>】<br>
8.6 软件可靠性<font color="#e74f4c">评估</font>
8.6.1 软件可靠性评价概述
可靠性评估过程:【<font color="#e74f4c">选择</font>可靠性<font color="#e74f4c">模型</font>】、【<font color="#e74f4c">收集</font>可靠性<font color="#e74f4c">数据</font>】、可靠性【<font color="#e74f4c">评估和预测</font>】<br>
8.6.2 可靠性<font color="#e74f4c">模型的选择</font><br>
应考虑的方面:【模型<font color="#e74f4c">假设的适用性</font>】、【预测的<font color="#e74f4c">能力与质量</font>】、模型输出值【<font color="#e74f4c">是否满足</font>可靠性<font color="#e74f4c">评价需求</font>】、使用的【<font color="#e74f4c">简便性</font>】<br>
8.6.3 可靠性<font color="#e74f4c">数据的收集</font>
存在的问题
可靠性数据的【<font color="#e74f4c">规范不统一</font>】
数据【收集工作的<font color="#e74f4c">连续性</font>】不能保证
<font color="#e74f4c">缺乏</font>有效的数据【<font color="#e74f4c">收集手段</font>】
【<font color="#e74f4c">数据的完整性</font>】不能保证。
【<font color="#e74f4c">数据质量和准确性</font>】不能保证
收集办法
<font color="#e74f4c">尽可能</font>【<font color="#e74f4c">早</font>地<font color="#e74f4c">确定</font>可靠性<font color="#e74f4c">模型</font>】
数据<font color="#e74f4c">收集计划</font>要有较强的【<font color="#e74f4c">可操作性</font>】
重视【<font color="#e74f4c">测试数据的分析和整理</font>】<br>
充分利用【<font color="#e74f4c">技术手段</font>(数据库技术)】来完成测试数据的存储和统计分析
8.6.4 软件可靠性的<font color="#e74f4c">评估和预测</font>
目的:是<font color="#e74f4c">评估</font>软件系统的【<font color="#e74f4c">可靠性状况</font>】和【<font color="#e74f4c">预测将来</font>一段时间的<font color="#e74f4c">可靠性水平</font>】<br>
以软件【<font color="#e74f4c">可靠性模型分析</font>】为主,以【<font color="#e74f4c">失效数据的图形分析法</font>】和【<font color="#e74f4c">试探性数据分析</font>】技术等为辅。<br>
9、软件架构的<font color="#e74f4c">演化和维护</font><br> 综合3~5分<br> 案例、论文
9.1 软件架构演化概述
9.1.1 演化的重要性
保障软件系统具备<font color="#e74f4c">诸多好的特性</font><br>
有效<font color="#e74f4c">管控</font>软件系统的整体<font color="#e74f4c">复杂性</font>和<font color="#e74f4c">变化性</font>,降低软件<font color="#e74f4c">检修和修改成本</font><br>
保证软件系统演化的<font color="#e74f4c">一致性</font>和<font color="#e74f4c">正确性</font>,增加<font color="#e74f4c">便捷性</font>
9.1.2 演化和定义的关系
软件架构演化主要关注点:【<font color="#e74f4c">组件</font><font color="#000000">(基本要素)</font>】<font color="#e74f4c">、</font>【<font color="#e74f4c">连接件</font><font color="#000000">(组件间的交互关系)</font>】<font color="#e74f4c">和</font>【<font color="#e74f4c">约束</font><font color="#000000">(组件和连接件的拓扑关系和配置)</font>】<br>
9.2 <font color="#e74f4c">面向对象</font>软件架构演化过程<br>
9.2.1 <font color="#e74f4c">对象</font>演化<br>
对象自身的演化是组件本身的【<font color="#e74f4c">接口</font>】、【<font color="#e74f4c">类型</font>】和【<font color="#e74f4c">语义</font>】等属性的演化<br>
<font color="#e74f4c">AO</font>:是在系统需要<font color="#e74f4c">添加</font>新的对象来实现某种新的功能,或需将现有对象的某个功能独立以增加架构<font color="#e74f4c">灵活性</font>时发生
<font color="#e74f4c">DO</font>:是在系统需要<font color="#e74f4c">移除</font>某个现有的功能,或需合并某些对象及其功能来降低架构的<font color="#e74f4c">复杂度</font>的时候发生
在发生对象演化时,一般会伴随着相应的消息演化,新增相应的消息以完成交互,从而对架构的【<font color="#e74f4c">正确性</font>】或【<font color="#e74f4c">时态属性</font>】产生影响。
9.2.2 <font color="#e74f4c">消息</font>演化
消息演化的核心元素:【<font color="#e74f4c">名称</font>】、【<font color="#e74f4c">源对象</font>】、【<font color="#e74f4c">目标对象</font>】、【<font color="#e74f4c">时序</font>】等信息。<br>
<font color="#e74f4c">A</font>M:<font color="#e74f4c">增添</font>一条新的消息,产生在对象之间需要增加新的交互行为的时候。<br>
<font color="#e74f4c">D</font>M:<font color="#e74f4c">删除</font>当前的一条消息,产生在需要移除某交互行为的时候。
<font color="#e74f4c">SMO</font>:<font color="#e74f4c">交换</font>两条消息的<font color="#e74f4c">时间顺序</font>,发生在需要改变两个交互行为之间的时候。<br>
<font color="#e74f4c">OM</font>:<font color="#e74f4c">反转</font>消息的<font color="#e74f4c">发送对象与接收对象</font>,发生在需要修改某个交互行为本身的时候。
<font color="#e74f4c">CMM</font>:<font color="#e74f4c">改变</font>消息的<font color="#e74f4c">发送或接收对象</font>,发生在需要修改某个交互行为本身的时候。
9.2.3 <font color="#e74f4c">复合片段</font>演化<br>
复合片段是<font color="#e74f4c">对象交互关系</font>的【<font color="#e74f4c">控制流</font>】描述,表示可能发生在不同场合的交互,与消息同属于<font color="#e74f4c">连接件</font>范畴。<br>
复合片段本身的信息包括【<font color="#e74f4c">类型</font>】、【<font color="#e74f4c">成立条件</font>】和【<font color="#e74f4c">内部执行序列</font>】<br>
<font color="#e74f4c">AF</font>:在某几条消息上新增复合片段,发生在需要<font color="#e74f4c">增添</font>新的<font color="#e74f4c">控制流</font>时
<font color="#e74f4c">DF</font>:删除某个现有的复合片段,发生在需要<font color="#e74f4c">移除</font>当前<font color="#e74f4c">某段控制流</font>时。<br>
<font color="#e74f4c">FTC</font>:<font color="#e74f4c">改变</font>复合片段的<font color="#e74f4c">类型</font>,发生在需要改变某段控制流时。<br>
<font color="#e74f4c">FCC</font>:<font color="#e74f4c">改变</font>复合片段内部<font color="#e74f4c">执行的条件</font>,发生在改变当前控制流的执行条件时
9.2.4 <font color="#e74f4c">约束</font>演化<br>
约束演化对应着【<font color="#e74f4c">架构配置</font>】的演化<br>
<font color="#e74f4c">AC</font>:直接<font color="#e74f4c">添加</font>新的约束信息,需判断<font color="#e74f4c">当前设计是否满足</font>新添加的<font color="#e74f4c">约束要求</font>
<font color="#e74f4c">DC</font>:直接<font color="#e74f4c">移除</font>某条约束信息,发生在去除某些不必要条件的时候。<br>
9.3 软件架构的演化<font color="#e74f4c">分类</font>
按照软件架构的实现方式和实施粒度分类:基于【<font color="#e74f4c">过程和函数</font>】的演化、【<font color="#e74f4c">面向对象</font>】的演化、基于【<font color="#e74f4c">组件</font>】的演化、基于【<font color="#e74f4c">架构</font>】的演化
按照研究方法分类<br>
对<font color="#e74f4c">演化的支持</font>,如<font color="#e74f4c">代码模块化</font>的准则、<font color="#e74f4c">可维护性的指示</font>(如内聚和耦合)、<font color="#e74f4c">代码重构</font>等
版本和工程的<font color="#e74f4c">管理工具</font>,如CVS和COCOMO
架构<font color="#e74f4c">变换的形式</font>方法,包括系统<font color="#e74f4c">结构和行为变换</font>的模型,以及架构演化的<font color="#e74f4c">重现风格</font>等<br>
架构<font color="#e74f4c">演化的成本收益</font>分析,决定如何增加系统的<font color="#e74f4c">弹性</font><br>
按软件架构的演化过程是否处于系统运行时期:【<font color="#e74f4c">静态</font>】演化、【<font color="#e74f4c">动态</font>】演化<br>
9.3.1 软件架构演化<font color="#e74f4c">时期</font><br>
【<font color="#e74f4c">设计时</font>】演化:发生在体系结构模型与之相关的<font color="#e74f4c">代码编译之前</font><br>
【<font color="#e74f4c">运行前</font>】演化:发生在执行之前、<font color="#e74f4c">编译之后</font>
【<font color="#e74f4c">有限制运行时</font>】演化:只发生在某些<font color="#e74f4c">特定约束</font>满足时
【<font color="#e74f4c">运行时</font>】演化:发生在<font color="#e74f4c">运行时</font>不能满足要求时
9.3.2 软件架构<font color="#e74f4c">静态演化</font>
静态演化<font color="#e74f4c">需求</font>:<font color="#e74f4c">设计时</font>演化需求、<font color="#e74f4c">运行前</font>演化需求
一般过程:软件<font color="#e74f4c">理解</font> → 需求<font color="#e74f4c">变更分析</font> → 演化<font color="#e74f4c">计划</font> → 系统<font color="#e74f4c">重构</font> → 系统<font color="#e74f4c">测试</font>
<font color="#e74f4c">原子</font>演化操作:基于<font color="#e74f4c">UML</font>模型表示的软件架构,在逻辑语义上<font color="#e74f4c">粒度最小</font>的架构修改操作<br>
<font color="#000000">静态演化</font><font color="#e74f4c">实例</font><font color="#000000">:【</font><font color="#e74f4c">正交</font>】软件架构<br>
与<font color="#e74f4c">可维护性</font>相关的架构演化操作:增、删、拆分、聚合<font color="#e74f4c">模块</font>;增、删<font color="#e74f4c">模块间的依赖关系</font>;增、删<font color="#e74f4c">模块间的接口</font>;AM、RM、SM(Split Module)、AGM(Aggregate Modules)、AMD(Add Module Dependence)、RMD、AMI(Add Module Interface)、RMI、
与<font color="#e74f4c">可靠性</font>相关的架构演化操作:增删<font color="#e74f4c">对象</font>;增删<font color="#e74f4c">消息</font>;增删改<font color="#e74f4c">片段</font>;增删<font color="#e74f4c">用例</font>;增删<font color="#e74f4c">执行者</font>;AO、RO、AMS、RMS、AF、RF、CF、AU(Add Use Case)、RU、AA(Add Actor)、RA<br>
9.3.3 软件架构<font color="#e74f4c">动态演化</font>
动态演化<font color="#e74f4c">需求</font>:软件【<font color="#e74f4c">内部执行</font>】所导致的【<font color="#e74f4c">体系结构改变</font>】、软件系统【<font color="#e74f4c">外部的请求</font>】对软件进行的【<font color="#e74f4c">重配置</font>】<br>
动态演化<font color="#e74f4c">等级</font>:【<font color="#e74f4c">交互</font>】动态性、【<font color="#e74f4c">结构</font>】动态性、【<font color="#e74f4c">架构</font>】动态性<br>
动态演化<font color="#e74f4c">内容</font>:【<font color="#e74f4c">属性改名</font>】、【<font color="#e74f4c">行为</font>】变化、【<font color="#e74f4c">拓扑结构</font>】改变、【<font color="#e74f4c">风格</font>】变化
动态软件<font color="#e74f4c">架构</font>(DSA)
基本原理是:运行时刻体系结构<font color="#e74f4c">相关信息的改变</font>可用来<font color="#e74f4c">触发、驱动</font>系统<font color="#e74f4c">自身的动态调整</font>。<br>
描述语言:基于<font color="#e74f4c">行为</font>视角的<font color="#e74f4c">π</font>-ADL、基于<font color="#e74f4c">反射</font>视角的<font color="#e74f4c">Pilar</font>、基于<font color="#e74f4c">协调</font>视角的<font color="#e74f4c">LIME</font>
演化工具:使用【<font color="#e74f4c">反射</font>】机制、基于【<font color="#e74f4c">组件操作</font>】、基于【<font color="#e74f4c"> π 演算</font>】、利用<font color="#e74f4c">外部</font>的体系结构【<font color="#e74f4c">演化管理器</font>】<br>
应用实例—<font color="#e74f4c">PKUAS</font>:包括【<font color="#e74f4c">容器系统</font>】、【<font color="#e74f4c">微内核</font>】、【<font color="#e74f4c">公共服务</font>】、【<font color="#e74f4c">工具</font>】 4 种类型。<br>
动态<font color="#e74f4c">重配置</font>(DR)<br>
模式:【<font color="#e74f4c">主从</font>】模式、【<font color="#e74f4c">中央控制</font>】模式、【<font color="#e74f4c">客户端/服务器</font>】模式、【<font color="#e74f4c">分布式</font>】控制模式
难点:约束<font color="#e74f4c">定义困难</font>、<font color="#e74f4c">性能</font>约束难以<font color="#e74f4c">静态衡量</font>、难以<font color="#e74f4c">管理所有</font>方面、需同时保证组件系统<font color="#e74f4c">完整性</font>和重配置策略的<font color="#e74f4c">正确和安全</font>性。
应用实例:可<font color="#e74f4c">重用</font>、可<font color="#e74f4c">配置</font>的<font color="#e74f4c">产品线架构</font>
9.4 软件架构<font color="#e74f4c">可持续演化原则</font>
(1)<font color="#e74f4c">成本</font><font color="#000000">控制</font>原则:演化成本要控制在预期的范围之内。
(2)<font color="#e74f4c">进度</font>可控原则:架构演化要在预期的时间内完成。
(3)<font color="#e74f4c">风险</font>可控原则:架构演化中的<font color="#e74f4c">经济</font>风险、<font color="#e74f4c">时间</font>风险、<font color="#e74f4c">人力</font>风险、<font color="#e74f4c">技术</font>风险和<font color="#e74f4c">环境</font>风险在可控范围内。
(4)<font color="#e74f4c">主体维持</font>原则:软件演化的<font color="#e74f4c">平均增量</font>的增长须保持<font color="#e74f4c">平稳</font>,保证软件系统主体行为稳定。
(5)系统<font color="#e74f4c">总体结构优化</font>原则:使演化后的软件系统整体结构(布局)更加合理。
(6)<font color="#e74f4c">平滑演化</font>原则:软件的<font color="#e74f4c">演化速率</font>趋于稳定
(7)<font color="#e74f4c">目标一致</font>原则:架构演化的<font color="#e74f4c">阶段</font>目标和<font color="#e74f4c">最终</font>目标要一致。
(8)<font color="#e74f4c">模块独立演化</font>原则:软件中各模块自身的演化最好相互独立。
(9)<font color="#e74f4c">影响可控</font>原则:如果一个模块发生变更,给其他模块带来的影响在可控范围内。
(10)<font color="#e74f4c">复杂性可控</font>原则:必须控制架构的复杂性,保障软件的复杂性在可控范围内。
(11)<font color="#e74f4c">有利于重构</font>原则:使演化后软件架构便于重构。
(12)<font color="#e74f4c">有利于重用</font>原则:演化最好能维持,甚至提高整体架构的可重用性。
(13)<font color="#e74f4c">设计原则遵循</font>性原则:架构演化最好不能与架构设计原则冲突。
(14)<font color="#e74f4c">适应新技术</font>原则:软件要独立于特定的技术手段,可运行于不同平台。
(15)<font color="#e74f4c">环境适应性</font>原则:架构演化后的软件版本比较容易适应新的硬件环境和软件环境。
(16)<font color="#e74f4c">标准依从性</font>原则:演化不违背相关质量标准(国际标准、国家标准、行业标准等)。
(17)<font color="#e74f4c">质量向好</font>原则:使所关注的某个质量指标或质量指标的综合效果变更好。
(18)<font color="#e74f4c">适应新需求</font>原则:很容易适应新的需求变更。
9.5 软件架构<font color="#e74f4c">演化评估</font><font color="#000000">方法</font>
9.5.1 演化<font color="#e74f4c">过程已知</font>的评估
<font color="#e74f4c">评估流程</font>:将架构<font color="#e74f4c">度量</font>应用到演化过程中,通过对<font color="#e74f4c">演化前后</font>的不同版本的架构分别进行<font color="#e74f4c">度量</font>,得到度量结果的<font color="#e74f4c">差值</font>及其<font color="#e74f4c">变化趋势</font>,并<font color="#e74f4c">计算</font>架构间质量属性<font color="#e74f4c">距离</font>,进而对相关<font color="#e74f4c">质量属性</font>进行评估。
9.5.2 演化<font color="#e74f4c">过程未知</font>的评估<br>
架构演化的评估过程
9.6 软件架构<font color="#e74f4c">演化实例</font>分析
第一阶段:<font color="#e74f4c">单体</font>架构:应用程序、数据库、文件等所有资源都在一台服务器上。<br>
第二阶段:<font color="#e74f4c">垂直</font><font color="#000000">架</font>构:将应用和数据分离,整个网站使用 3 台服务器:应用服务器、文件服务器、数据服务器<br>
第三阶段:使用<font color="#e74f4c">缓存</font>改善网站性能:包括在应用服务器上的<font color="#e74f4c">本地缓存</font>和在专门的分布式缓存服务器上的<font color="#e74f4c">远程缓存</font>。<br>
第四阶段:使用服务<font color="#e74f4c">集群</font>改善网站并发处理能力:通过<font color="#e74f4c">负载均衡</font>调度服务器,将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,解决高并发、海量数据问题。<br>
第五阶段:<font color="#e74f4c">数据库读写分离</font>:应用服务器在写数据时,访问主数据库,主服务器通过主从复制机制将数据更新同步到从服务器。在应用服务器读数据时,访问从数据库。<br>
第六阶段:使用<font color="#e74f4c">反向代理</font>和<font color="#e74f4c">CDN</font>加速网站响应:CDN 部署在网络提供商的机房,用户在请求网站服务时,可在<font color="#e74f4c">距离最近</font>的网络提供商机房获取数据。反向代理部署在网站的中心机房,用户请求到达中心机房后,先访问反向代理服务器。<br>
第七阶段:使用<font color="#e74f4c">分布式文件系统</font>和<font color="#e74f4c">分布式数据库</font>系统:进行<font color="#e74f4c">业务分库</font>,将不同业务的数据部署在不同的物理服务器上。<br>
第八阶段:使用<font color="#e74f4c">NoSQL</font>和<font color="#e74f4c">搜索引擎</font>
第九阶段:<font color="#e74f4c">业务拆分</font>:将一个网站拆分成许多不同的<font color="#e74f4c">应用</font>,每个应用<font color="#e74f4c">独立部署</font>。<br>
第十阶段:<font color="#e74f4c">分布式服务</font>:共用的业务提取出来,独立部署;可复用的业务连接数据库,提供共用业务服务<br>
子主题
9.7 软件架构<font color="#e74f4c">维护</font>
9.7.1 软件架构【<font color="#e74f4c">知识</font>】管理<br>
架构<font color="#e74f4c">知识 </font>= <font color="#000000">架构【</font><font color="#e74f4c">设计</font>】<font color="#e74f4c"> </font><font color="#000000">+ 架构</font>【<font color="#e74f4c">设计决策</font>】<br>
架构知识管理的含义:侧重于软件开发和实现过程所涉及的<font color="#e74f4c">架构静态演化</font>,在架构文档等信息来源中捕捉架构知识,提供架构的<font color="#e74f4c">质量属性</font>及其<font color="#e74f4c">设计依据</font>进行记录和评价
架构知识管理的需求:防止<font color="#e74f4c">关键</font>的设计知识“<font color="#e74f4c">沉没</font>”在软件架构中。
9.7.2 软件架构【<font color="#e74f4c">修改</font>】管理
主要是建立一个<font color="#e74f4c">隔离区域</font>,保障该区域中任何修改对其他部分影响最小。
9.7.3 软件架构【<font color="#e74f4c">版本</font>】管理<br>
为软件架构演化的版本演化<font color="#e74f4c">控制</font>、<font color="#e74f4c">使用</font>和<font color="#e74f4c">评价</font>提供可靠依据。
9.7.4 软件架构<font color="#e74f4c">可维护性度量</font>实践
<font color="#e74f4c">圈复杂度</font>CCN:度量整个架构的独立执行路径的条数<br>
<font color="#e74f4c">扇入扇出度</font>FFC
<font color="#e74f4c">模块的响应</font>RFC
<font color="#e74f4c">模块间耦合度</font>CBO
<font color="#e74f4c">紧内聚度</font>TCC
<font color="#e74f4c">松内聚度</font>LCC
10、<font color="#e74f4c">未来</font>信息综合技术<br> 综合3~5分<br> 案例<br>
10.1 信息物理系统(<font color="#e74f4c">CPS</font>)技术
信息物理系统(Cyber-Physical System,CPS),最早由美国国家航空航天局于 1992 年提出,后科学家海伦·吉尔给出详细描述。信息物理系统是<font color="#e74f4c">控制系统</font>、<font color="#e74f4c">嵌入式系统</font>的扩展与延伸。CPS通过集成先进的<font color="#e74f4c">感知</font>、<font color="#e74f4c">计算</font>、<font color="#e74f4c">通信</font>、<font color="#e74f4c">控制</font>等信息技术和<font color="#e74f4c">自动控制</font>技术,构建了物理空间与信息空间中<font color="#e74f4c">人、机、物、环境、信息</font>等要素相互映射、适时交互、高效协同的复杂系统,实现系统内资源配置和运行的<font color="#e74f4c">按需响应</font>、<font color="#e74f4c">快速迭代</font>、<font color="#e74f4c">动态优化</font>。<br>
CPS的本质是:构建一套<font color="#e74f4c">信息空间</font>与<font color="#e74f4c">物理空间</font>之间基于<font color="#e74f4c">数据自动流动</font>的<font color="#e74f4c">状态感知</font>、<font color="#e74f4c">实时分析</font>、<font color="#e74f4c">科学决策</font>、<font color="#e74f4c">精准执行</font>的闭环赋能体系,解决生产制造、应用服务过程中的复杂性和不确定性问题,提高资源配置效率,实现<font color="#e74f4c">资源优化</font>。<br>
体系结构:【<font color="#e74f4c">单元</font>】级、【<font color="#e74f4c">系统</font>】级、【<font color="#e74f4c">SOS</font>】级<br>
技术体系:CPS【<font color="#e74f4c">总体</font>】技术(顶层设计技术)、CPS【<font color="#e74f4c">支撑</font>】技术(基于应用支撑)、CPS【<font color="#e74f4c">核心</font>】技术(基础技术)。<br>
技术分为四大核心技术要素:【“<font color="#e74f4c">硬</font>”】(感知和自动控制,是CPS实现的<font color="#e74f4c">硬件支撑</font>)、【“<font color="#e74f4c">软</font>”】(工业软件,CPS<font color="#e74f4c">核心</font>)、【“<font color="#e74f4c">网</font>”】(工业网络,是<font color="#e74f4c">网络载体</font>)、【“<font color="#e74f4c">平台</font>”】(工业云和智能服务平台,是<font color="#e74f4c">支撑上层解决方案</font>的基础)。
建设路径:CPS【<font color="#e74f4c">体系设计</font>】、【<font color="#e74f4c">单元</font>级CPS建设、【<font color="#e74f4c">系统</font>级】CPS建设、【<font color="#e74f4c">SOS</font>级】CPS建设<br>
典型应用场景<br>
智能【<font color="#e74f4c">设计</font>】方面:产品及工艺设计、生产线/工厂设计。<br>
智能【<font color="#e74f4c">生产</font>】方面:设备管理应用场景、生产管理应用场景、柔性制造应用场景
智能【<font color="#e74f4c">服务</font>】方面:健康管理、智能维护、远程征兆诊断、协同优化、共享服务。
智能【<font color="#e74f4c">应用</font>】方面:<font color="#e74f4c">无人装备</font>、<font color="#e74f4c">产业链</font>互动、<font color="#e74f4c">价值链</font>共赢
10.2 人工智能(<font color="#e74f4c">AI</font>)技术
人工智能是利用<font color="#e74f4c">数字计算机</font>或<font color="#000000">数字计算机控制</font>的<font color="#e74f4c">机器模拟</font>,延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
发展历程:<font color="#e74f4c">图灵测试</font>→ “人工智能”<font color="#e74f4c">术语</font>→ <font color="#e74f4c">机器学习</font>→ <font color="#e74f4c">专家系统</font>→ 计算机战胜<font color="#e74f4c">双陆棋</font>世界冠军→ <font color="#e74f4c">决策树</font>模型和<font color="#e74f4c">神经网络</font>→ IBM深蓝战胜<font color="#e74f4c">国际象棋</font>世界冠军→ <font color="#e74f4c">深度学习</font>→ 爆发式发展。<br>
人工智能根据是否能真正实现推理、思考和解决问题,分为<font color="#e74f4c">弱</font>人工智能和<font color="#e74f4c">强</font>人工智能。
关键技术
<font color="#e74f4c">自然语言</font>处理:包括机器翻译、语义理解、问答系统等。
<font color="#e74f4c">计算机视觉</font>:如自动驾驶、机器人、智能医疗。
<font color="#e74f4c">知识图谱</font>:可用于发欺诈、不一致性验证、组团欺诈等对公共<font color="#e74f4c">安全保障</font>形成威胁的领域。
<font color="#e74f4c">人机交互</font>:传统的基本交互、图形交互、语音交互、情感交互、体感交互及脑机交互等。
<font color="#e74f4c">虚拟现实或增强现实</font>:在一定范围内生成与真实环境在视觉、听觉等方面高度近似的数字化环境。
机器学习
<font color="#e74f4c">学习模式</font>的不同
<font color="#e74f4c">有监督</font>(有标注的样本集):是利用已标记的有限训练数据集,通过某种学习策略/方法建立一个模型,从而实现对新数据/实例的标记(分类)/映射<br>
<font color="#e74f4c">无监督</font>(无标注):利用无标记的有限数据描述隐藏在未标记数据中的结构/规律<br>
<font color="#e74f4c">半监督</font>(少量标注和大量无标注):利用少量的标注样本和大量的未标识样本进行训练和分类,从而达到减少标注代价、提高学习能力的目的<br>
<font color="#e74f4c">强化</font>学习(反馈机制):强化学习可以学习从环境状态到行为的映射,使得智能体选择的行为能够获得环境的最大奖赏,最终目标是使外部环境对学习系统在某种意义下的评价最佳<br>强化学习在<font color="#e74f4c">机器人控制</font>、<font color="#e74f4c">无人驾驶</font>、<font color="#e74f4c">工业控制</font>等领域获得成功应用。<br>强化学习的常见算法包括Q-Leamning、 时间差学习等。<br>
<font color="#e74f4c">学习方法</font>的不同
<font color="#e74f4c">传统机器</font>学习(需<font color="#e74f4c">手动</font>完成)<br>
传统机器学习的领域特征需要<font color="#e74f4c">手动</font>完成,且需要大量<font color="#e74f4c">领域专业知识</font>
定义:从一些观测(训练)样本出发,试图发现不能通过原理分析获得的规律,实现对未来数据行为或趋势的准确预测<br>
特点:平衡了学习结果的有效性与学习模型的可解释性,为解决有限样本的学习问题提供了一种框架。<br>
应用场景:传统机器学习方法在<font color="#e74f4c">自然语言处理</font>、<font color="#e74f4c">语音识别</font>、<font color="#e74f4c">图像识别</font>、<font color="#e74f4c">信息检索</font>等许多计算机领域获得了广泛应用。<br>
常用算法:逻辑回归、隐马尔科夫方法、支持向量机方法、 K 近邻方法、<font color="#e74f4c">三层人工神经网络</font>方法、 Adaboost算法、贝叶斯方法以及决策树方法等。<br>
<font color="#e74f4c">深度</font>学习(需大量<font color="#e74f4c">训练数据集</font>和<font color="#e74f4c">GPU</font>提供算力)<br>
深度学习不需要人工特征提取,但需要<font color="#e74f4c">大量的训练数据集</font>以及<font color="#e74f4c">强大的GPU服务器来提供算力</font>
定义:基于<font color="#e74f4c">多层神经网络</font>并以<font color="#e74f4c">海量数据</font>作为输入规则的自学习方法,依靠提供给它的大量实际行为数据(训练数据集),进行参数和规则调整<br>
典型的深度学习算法包括:<font color="#e74f4c">卷积</font>神经网络 (CNN)、<font color="#e74f4c"> 循环</font>神经网络 (RNN) 等<br>
常见算法:【<font color="#e74f4c">主动</font>】学习、【<font color="#e74f4c">演化</font>】学习、【<font color="#e74f4c">迁移</font>】学习<br>
10.3 机器人技术
定义:具体【<font color="#e74f4c">脑、手、脚</font>】等三要素个体;具有【<font color="#e74f4c">非接触</font>】传感器和【<font color="#e74f4c">接触</font>】传感器;具有【<font color="#e74f4c">平衡觉</font>】和【<font color="#e74f4c">固定觉</font>】的传感器。<br>
发展历程:第一代机器人(【<font color="#e74f4c">示教再现</font>】型机器人)→第二代机器人(【<font color="#e74f4c">感觉</font>】型机器人)→第三代机器人(【<font color="#e74f4c">智能</font>】型机器人)。
核心技术:【<font color="#e74f4c">云-边-端的无缝协同计算</font>】、【<font color="#e74f4c">持续学习与协同学习</font>】、【<font color="#e74f4c">知识图谱</font>】、【<font color="#e74f4c">场景自适应</font>】、【<font color="#e74f4c">数据安全</font>】<br>
控制方式分类:【<font color="#e74f4c">操作</font>】机器人、【<font color="#e74f4c">程序</font>】机器人、【<font color="#e74f4c">示教再现</font>】机器人、【<font color="#e74f4c">智能</font>】机器人和【<font color="#e74f4c">综合</font>】机器人<br>
按照应用行业来分:【<font color="#e74f4c">工业</font>】机器人、【<font color="#e74f4c">服务</font>】机器人和【<font color="#e74f4c">特殊领域</font>】机器人。<br>
研究内容:机械手设计;机器人运动学、<font color="#e74f4c">动力学和控制</font>;轨迹设计和<font color="#e74f4c">路径规划</font>;传感器;机器人视觉;机器人语言;<font color="#e74f4c">装置与系统结构</font>;机器人智能等。<br>
10.4 边缘计算技术
定义
边缘计算就是将<font color="#e74f4c">数据的处理</font>、<font color="#e74f4c">应用程序的运行</font>以及一些<font color="#e74f4c">功能服务的实现</font>,由<font color="#e74f4c">网络中心</font>下放到<font color="#e74f4c">网络边缘节点</font>上
边缘计算产业联盟 (ECC) 对于边缘计算的定义:云计算在数据中心之外汇聚节点的延伸和演进,主要包括<font color="#e74f4c">云边缘</font>、<font color="#e74f4c">边缘云</font>和<font color="#e74f4c">云化网关</font>三类落地形态;以“<font color="#e74f4c">边云协同</font>”和“<font color="#e74f4c">边缘智能</font>”为核心能力发展方向<br>
OpenStack社区的定义概念:为应用开发者和服务提供商在<font color="#000000">网络的边缘侧</font>提供<font color="#e74f4c">云服务和IT环境服务</font>;目标是在靠近数据输入或用户的地方提供计算、存储和网络带宽。<br>
ISO/IEC JTC1/SC38 对边缘计算给出的定义:在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台,就近提供<font color="#e74f4c">边缘智能服务</font><br>
国际标准组织ETSI的定义:提供移动网络边缘<font color="#e74f4c"> IT 服务和计算能力</font>,靠近移动用户,以减少网络操作和服务交付的时延,提高用户体验。<br>
特点
<font color="#e74f4c">联接</font>性:所联接物理对象的多样性及应用场景的多样性,需要边缘计算具备丰富的联接功能,如各种<font color="#e74f4c">网络接口</font>、<font color="#e74f4c">网络协议</font>等。
<font color="#e74f4c">数据第一入口</font>:边缘计算拥有大量、实时、完整的数据,可基于数据全生命周期进行管理与价值创造,将更好地支撑预测性维护、资产效率与管理等创新应用。
<font color="#e74f4c">约束</font>性:边缘计算产品需适配工业现场相对恶劣的工作条件与运行环境。在工业互联场景下,对边缘计算设备的功耗、成本、空间也有较高的要求。边缘计算产品需要考虑通过软硬件集成与优化,以适配各种条件约束,支撑行业数字化多样性场景。
<font color="#e74f4c">分布</font>性:边缘计算实际部署天然具备分布式特征。这要求边缘计算支持分布式计算与存储、实现分布式资源的动态调度与统一管理、支撑分布式智能、具备分布式安全等能力。<br>
边云协同
<font color="#e74f4c">资源</font>协同:边缘节点提供计算、存储、网络、虚拟化等基础设施资源,具有本地资源调度管理能力,同时可与云端协同,接受并执行云端资源调度管理策略,包括边缘节点的设备管理、资源管理以及网络连接管理。
<font color="#e74f4c">数据</font>协同:边缘节点主要负责现场/终端数据的<font color="#e74f4c">采集</font>,按照规则或数据模型对数据进行<font color="#e74f4c">初步处理与分析</font>,并将<font color="#e74f4c">处理结果</font>以及相关数据<font color="#e74f4c">上传给云端</font>;云端提供海量数据的存储、分析与价值挖掘。边缘与云的数据协同,支持数据在边缘与云之间可控有序流动,形成完整的数据流转路径,高效低成本对数据进行生命周期管理与价值挖掘。
<font color="#e74f4c">智能</font>协同:边缘节点执行<font color="#e74f4c">推理</font>,实现分布式智能;云端开展模型训练,并将<font color="#e74f4c">模型下发边缘节点</font>。
【<font color="#e74f4c">应用管理</font>】协同:边缘节点提供<font color="#e74f4c">应用部署与运行环境</font>,并对本节点<font color="#e74f4c">多个应用</font>的生命周期进行<font color="#e74f4c">管理</font>调度;云端主要提供应用开发、测试环境,以及应用的生命周期管理能力。<br>
【<font color="#e74f4c">业务管理</font>】协同:边缘节点提供模块化、微服务化的应用/数字孪生/网络等<font color="#e74f4c">应用实例</font>;云端主要提供按照客户需求实现应用/数字孪生/网络等的业务<font color="#e74f4c">编排</font>能力。
【<font color="#e74f4c">服务</font>】协同:边缘节点<font color="#e74f4c">按照云端策略实现部分ECSaaS 服务</font>,通过 ECSaaS 与云端 SaaS 的协同实现面向客户的按需 SaaS 服务;云端主要提供SaaS服务在云端和边缘节点的服务分布策略,以及云端承担的 SaaS 服务能力。
边缘安全的价值体现在:提供可信的【<font color="#e74f4c">基础设施</font>】、为边缘应用提供【<font color="#e74f4c">可信赖的安全服务</font>】、提供安全可信的【<font color="#e74f4c">网络和覆盖</font>】<br>
应用场景:<font color="#e74f4c">视频监控</font>、<font color="#e74f4c">智慧园区</font>、<font color="#e74f4c">工业物联网</font>、<font color="#e74f4c">安卓云与云游戏</font>、<font color="#e74f4c">CloudVR</font><br>
10.5 数字孪生技术
数字孪生是跨层级、跨尺度的<font color="#e74f4c">现实世界</font>和<font color="#e74f4c">虚拟世界</font>建立沟通的桥梁,是第四次工业革命的通用目的技术和核心技术体系之一,是支撑万物互联的综合技术体系,是数字经济发展的基础,是未来智能时代的信息基础设施。
数字孪生体是现有或将有的<font color="#e74f4c">物理实体对象</font>的<font color="#e74f4c">数字模型</font>,通过<font color="#e74f4c">实测、仿真和数据分析</font>来实时<font color="#e74f4c">感知、诊断、预测</font>物理实体对象的状态,通过<font color="#e74f4c">优化和指令</font>来调控物理实体对象的行为,通过相关数字模型间的<font color="#e74f4c">相互学习</font>来进化自身,同时改进利益相关方在物理实体对象生命周期内的决策。
关键技术
<b><font color="#e74f4c">建模</font>:将我们对物理世界的理解进行简化和模型化</b><br>
<font color="#e74f4c">仿真</font>:是验证和确认这种理解的正确性和有效性<br>
<font color="#e74f4c">其他技术</font>(<font color="#e74f4c">基于数据融合的</font>【<font color="#e74f4c">数字线程</font>】):目前VR、AR以及MR等增强现实技术、数字线程、系统工程和MBSE、 物联网、云计算、雾计算、边缘计算、大数据技术、机器学习和区块链技术,仍为数字孪生体构建过程中的内外围核心技术。<br>
应用场景
<font color="#e74f4c">制造</font>:在制造领域,一些传统的技术,如CAD和CAE, 天然就是为物理产品数字化而生,一些新兴技术,如AI、AR、loT也为更逼真、更智能、更交互的数字孪生体插上了翅膀<br>
<font color="#e74f4c">产业</font>:数字孪生体以<font color="#e74f4c">云计算</font>、<font color="#e74f4c">大数据</font>、<font color="#e74f4c">物联网</font>、<font color="#e74f4c">人工智能</font>和【<font color="#e74f4c">区块链</font>】等IT和DT使能技术为支撑,与行业趋势和产业升级需求相结合,构建实体的数字镜像。<br>
<font color="#e74f4c">城市</font>:要建成新型智慧城市,首先要构建城市的数字孪生体。城市级的整体数字化是城级智慧化的前提条件。<br>
<font color="#e74f4c">战场</font>
10.6 云计算和大数据技术
云计算
云计算是同时描述一个系统平台或一类应用程序的术语,包含【<font color="#e74f4c">平台</font>】和【<font color="#e74f4c">应用</font>】。<br>云计算平台<font color="#e74f4c">按需</font>进行动态部署、配置、重新配置以及取消服务等。<br>
服务方式
<font color="#e74f4c">软件</font>即服务(<font color="#e74f4c">SaaS</font>):服务提供商将<font color="#e74f4c">应用软件</font>统一部署在云计算服务器上
<font color="#e74f4c">平台</font>即服务(<font color="#e74f4c">PaaS</font>):服务提供商将分布式<font color="#e74f4c">开发环境与平台</font>作为一种服务来提供。
<font color="#e74f4c">基础设施</font>即服务(<font color="#e74f4c">IaaS</font>):服务提供商将多台服务器组成“云端”<font color="#e74f4c">基础设施</font>作为计量服务提供给客户。<br>
部署模式:【<font color="#e74f4c">公有</font>】云、【<font color="#e74f4c">社区</font>】云、【<font color="#e74f4c">私有</font>】云、【<font color="#e74f4c">混合</font>】云<br>
大数据<br>
大数据是指其<font color="#e74f4c">大小</font>或<font color="#e74f4c">复杂性</font>无法通过现有常用的软件工具,以<font color="#e74f4c">合理的成本</font>并在<font color="#e74f4c">可接受的时限</font>内对其进行捕获、管理和处理的数据集。<br>这些困难包括数据的【收入】、【存储】、【搜索】、【共享】、【分析】和【可视化】。<br>
三个量化指标:【<font color="#e74f4c">数据量</font>】、【<font color="#e74f4c">数据种类</font>】和【<font color="#e74f4c">处理速度</font>】
大数据分析步骤:数据<font color="#e74f4c">获取和</font>记录→信息<font color="#e74f4c">抽取/清洗</font>→数据【<font color="#e74f4c">集成/聚集/表现</font>】→数据【<font color="#e74f4c">分析/建模</font>】→数据【<font color="#e74f4c">解释</font>】
大数据应用领域:<font color="#e74f4c">制造</font>业、<font color="#e74f4c">服务</font>业、<font color="#e74f4c">交通</font>行业、<font color="#e74f4c">医疗</font>行业。
11、标准化与<font color="#e74f4c">知识产权</font><br> 综合3分
标准分类:<font color="#e74f4c">国际</font>标准、<font color="#e74f4c">美国</font>标准、<font color="#e74f4c">国家</font>标准、<font color="#e74f4c">国家军用</font>标准、<font color="#e74f4c">行业</font>标准、<font color="#e74f4c">地方</font>标准和<font color="#e74f4c">企业</font>标准<br>
标准化机构
知识产权(专利和著作权)
特性
【<font color="#e74f4c">无体</font>】性:知识产权的对象没有具体形体,不能用五官触觉去感受,是一种抽象财富。<br>
【<font color="#e74f4c">专有</font>】性:知识产权的专有性指除权利人同意或法律规定外,权利人以外的任何人不得享有或使用该项权利。<br>
【<font color="#e74f4c">地域</font>】性:知识产权的地域性是指知识产权只在授予其权利的国家或确认其权利的国家产生,并且只能在该国范围内受法律保护,而其他国家则对其没有必须给予法律保护的义务。<br>
【<font color="#e74f4c">时间</font>】性:知识产权一旦超过规定的法律期限,相关知识产品即成为整个社会的共同财富,为全人类共同使用。<br>
中华人民共和国<font color="#e74f4c">著作权</font>法
第三条 本法所称的作品,是指文学、艺术和科学领域内具有独创性并能以一定形式表现的智力成果,包括:<br>(一)文字作品;<br>(二)口述作品;<br>(三)音乐、戏剧、曲艺、舞蹈、杂技艺术作品;<br>(四)美术、建筑作品;<br>(五)摄影作品;<br>(六)视听作品;<br>(七)工程设计图、产品设计图、地图、示意图等图形作品和模型作品;<br>(八)计算机软件;<br>(九)<font color="#e74f4c">符合作品特征</font>的其他<font color="#e74f4c">智力成果</font>。<br>
第五条 本法不适用于:<br>(一)法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;<br>(二)<font color="#e74f4c">单纯事实消息</font>;<br>(三)历法、<font color="#e74f4c">通用</font>数表、通用表格和公式。<br>
第十条 著作权包括下列人身权和财产权:<br>(一)发表权,即决定作品是否公之于众的权利;<br>(二)署名权,即表明作者身份,在作品上署名的权利;<br>(三)修改权,即修改或者授权他人修改作品的权利;<br>(四)保护作品完整权,即保护作品不受歪曲、篡改的权利;<br>(五)复制权,即以印刷、复印、拓印、录音、录像、翻录、翻拍、数字化等方式将作品制作<br>一份或者多份的权利;<br>(六)发行权,即以出售或者赠与方式向公众提供作品的原件或者复制件的权利;<br>(七)出租权,即有偿许可他人临时使用视听作品、计算机软件的原件或者复制件的权利,计<br>算机软件不是出租的主要标的的除外;<br>(八)展览权,即公开陈列美术作品、摄影作品的原件或者复制件的权利;<br>(九)表演权,即公开表演作品,以及用各种手段公开播送作品的表演的权利;<br>(十)放映权,即通过放映机、幻灯机等技术设备公开再现美术、摄影、视听作品等的权利;<br>(十一)广播权,即以有线或者无线方式公开传播或者转播作品,以及通过扩音器或者其他传<br>送符号、声音、图像的类似工具向公众传播广播的作品的权利,但不包括本款第十二项规定的权利;<br>(十二)信息网络传播权,即以有线或者无线方式向公众提供,使公众可以在其选定的时间和<br>地点获得作品的权利;<br>(十三)摄制权,即以摄制视听作品的方法将作品固定在载体上的权利;<br>(十四)改编权,即改变作品,创作出具有独创性的新作品的权利;<br>(十五)翻译权,即将作品从一种语言文字转换成另一种语言文字的权利;<br>(十六)汇编权,即将作品或者作品的片段通过选择或者编排,汇集成新作品的权利;<br>(十七)应当由著作权人享有的其他权利。<br>著作权人可以许可他人行使前款第五项至第十七项规定的权利,并依照约定或者本法有关规定获得报酬。<br>著作权人可以全部或者部分转让本条第一款第五项至第十七项规定的权利,并依照约定或者本法有关规定获得报酬。<br>
第十八条 <font color="#e74f4c">自然人为完成法人或者非法人组织工作任务所创作的作品是</font>【<font color="#e74f4c">职务作品</font>】,除本条第二款的规定以外,<font color="#e74f4c">著作权由作者享有</font>,但<font color="#e74f4c">法人</font>或者非法人组织有权在其业务范围内<font color="#e74f4c">优先使用</font>。作品完成两年内,未经单位同意,作者不得许可第三人以与单位使用的相同方式使用该作品。<br>有下列情形之一的职务作品,作者享有署名权,著作权的其他权利由法人或者非法人组织享有,法人或者非法人组织可以给予作者奖励:<br>(一)主要是利用法人或者非法人组织的物质技术条件创作,并由法人或者非法人组织承担责任的工程设计图、产品设计图、地图、示意图、计算机软件等职务作品;<br>(二)报社、期刊社、通讯社、广播电台、电视台的工作人员创作的职务作品;<br>(三)法律、行政法规规定或者合同约定著作权由法人或者非法人组织享有的职务作品。<br>
第十九条 受委托创作的作品,著作权的归属由委托人和受托人通过合同约定。合同<font color="#e74f4c">未作明确约定</font>或者没有订立合同的,著作权属于<font color="#e74f4c">受托人</font>
第二十条 作品原件所有权的转移,不改变作品著作权的归属,但美术、摄影作品原件的展览权由原件所有人享有。<br>作者将未发表的美术、摄影作品的原件所有权转让给他人,受让人展览该原件不构成对作者发表权的侵犯
第二十二条 作者的<font color="#e74f4c">署名权</font>、<font color="#e74f4c">修改权</font>、<font color="#e74f4c">保护作品完整权</font>的<font color="#e74f4c">保护期不受限制</font>。<br>
第二十四条 在下列情况下使用作品,可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名或者名称、作品名称,并且不得影响该作品的正常使用,也不得不合理地损害著作权人的合法权益:<br>(一)为个人学习、研究或者欣赏,使用他人已经发表的作品;<br>(二)为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品;<br>(三)为报道新闻,在报纸、期刊、广播电台、电视台等媒体中不可避免地再现或者引用已经发表的作品;<br>(四)报纸、期刊、广播电台、电视台等媒体刊登或者播放其他报纸、期刊、广播电台、电视台等媒体已经发表的关于政治、经济、宗教问题的时事性文章,但著作权人声明不许刊登、播放的除外;<br>(五)报纸、期刊、广播电台、电视台等媒体刊登或者播放在公众集会上发表的讲话,但作者声明不许刊登、播放的除外;<br>(六)为学校课堂教学或者科学研究,翻译、改编、汇编、播放或者少量复制已经发表的作品,供教学或者科研人员使用,但不得出版发行;<br>(七)国家机关为执行公务在合理范围内使用已经发表的作品;<br>(八)图书馆、档案馆、纪念馆、博物馆、美术馆、文化馆等为陈列或者保存版本的需要,复制本馆收藏的作品;<br>(九)免费表演已经发表的作品,该表演未向公众收取费用,也未向表演者支付报酬,且不以营利为目的;<br>(十)对设置或者陈列在公共场所的艺术作品进行临摹、绘画、摄影、录像;<br>(十一)将中国公民、法人或者非法人组织已经发表的以国家通用语言文字创作的作品翻译成少数民族语言文字作品在国内出版发行;<br>(十二)以阅读障碍者能够感知的无障碍方式向其提供已经发表的作品;<br>(十三)法律、行政法规规定的其他情形。<br>
中华人民共和国<font color="#e74f4c">专利</font>法
第二条 本法所称的发明创造是指<font color="#e74f4c">发明</font>、<font color="#e74f4c">实用新型</font>和<font color="#e74f4c">外观设计</font>。<br>发明,是指对<font color="#e74f4c">产品、方法或者其改进</font>所提出的新的技术方案。<br>实用新型,是指对产品的<font color="#e74f4c">形状、构造</font>或者其结合所提出的适于<font color="#e74f4c">实用的新的</font>技术方案。<br>外观设计,是指对产品的整体或者局部的形状、图案或者其结合以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计。
第六条 执行本单位的任务或者主要是利用本单位的物质技术条件所完成的发明创造为<font color="#e74f4c">职务发明创造</font>。<br>职务发明创造申请专利的权利<font color="#e74f4c">属于该单位</font>,申请被批准后,该单位为专利权人。该单位可以依法处置其职务发明创造申请专利的权利和专利权,促进相关发明创造的实施和运用。<br>非职务发明创造,申请专利的权利属于发明人或者设计人;申请被批准后,该发明人或者设计人为专利权人。<br>利用本单位的物质技术条件所完成的发明创造,单位与发明人或者设计人订有合同,对申请专利的权利和专利权的归属作出约定的,从其约定。<br>
第七条 对发明人或者设计人的非职务发明创造专利申请,任何单位或者个人不得压制。
第八条 两个以上单位或者个人合作完成的发明创造、一个单位或者个人接受其他单位或者个人委托所完成的发明创造,除另有协议的以外,申请专利的权利属于完成或者共同完成的单位或者个人;申请被批准后,申请的单位或者个人为专利权人。<br>
第九条 同样的发明创造只能授予一项专利权。但是,同一申请人同日对同样的发明创造既申请实用新型专利又申请发明专利,先获得的实用新型专利权尚未终止,且申请人声明放弃该实用新型专利权的,可以授予发明专利权。<br>两个以上的申请人分别就同样的发明创造申请专利的,专利权授予最先申请的人。<br>
第二十五条 对下列各项,<font color="#e74f4c">不授予专利权</font>:<br>(一)<font color="#e74f4c">科学发现</font>;<br>(二)<font color="#e74f4c">智力活动的规则和方法</font>;<br>(三)<font color="#e74f4c">疾病的诊断和治疗方法</font>;<br>(四)<font color="#e74f4c">动物和植物品种</font>;<br>(五)<font color="#e74f4c">原子核变换方法以及用原子核变换方法获得的物质</font>;<br>(六)对平面印刷品的图案、色彩或者二者的结合作出的主要起标识作用的设计。<br>对前款第(四)项所列产品的生产方法,可以依照本法规定授予专利权。<br>
中华人民共和国<font color="#e74f4c">商标</font>法
第五条 两个以上的自然人、法人或者其他组织可以共同向商标局申请注册同一商标,共同享有和行使该商标专用权。<br>
第六条 法律、行政法规规定必须使用注册商标的商品,必须申请商标注册,未经核准注册的,不得在市场销售。<br>
第十条 下列标志不得作为商标使用:<br>(一)同中华人民共和国的国家名称、国旗、国徽、国歌、军旗、军徽、军歌、勋章等相同或者近似的,以及同中央国家机关的名称、标志、所在地特定地点的名称或者标志性建筑物的名称、图形相同的;<br>(二)同外国的国家名称、国旗、国徽、军旗等相同或者近似的,但经该国政府同意的除外;<br>(三)同政府间国际组织的名称、旗帜、徽记等相同或者近似的,但经该组织同意或者不易误导公众的除外;<br>(四)与表明实施控制、予以保证的官方标志、检验印记相同或者近似的,但经授权的除外;<br>(五)同“红十字”、“红新月”的名称、标志相同或者近似的;<br>(六)带有民族歧视性的;<br>(七)带有欺骗性,容易使公众对商品的质量等特点或者产地产生误认的;<br>(八)有害于社会主义道德风尚或者有其他不良影响的。<br>县级以上行政区划的地名或者公众知晓的外国地名,不得作为商标。但是,地名具有其他含义或者作为集体商标、证明商标组成部分的除外;已经注册的使用地名的商标继续有效。<br>
第十一条 下列标志不得作为商标注册:
(一)仅有本商品的通用名称、图形、型号的;
(二)仅直接表示商品的质量、主要原料、功能、用途、重量、数量及其他特点的;
(三)其他缺乏显著特征的。
前款所列标志经过使用取得显著特征,并便于识别的,可以作为商标注册。
第三十一条 两个或者两个以上的商标注册申请人,在同一种商品或者类似商品上,以相同或者近似的商标申请注册的,初步审定并公告<font color="#000000">申请在先</font>的商标;同一天申请的,<font color="#e74f4c">初步审定并公告使用在先</font>的商标,<font color="#e74f4c">驳回其他人的申请,不予公告</font>。<br>
第五十六条 注册商标的专用权,以核准注册的商标和核定使用的商品为限。
第五十七条 有下列行为之一的,均属侵犯注册商标专用权:<br>(一)未经商标注册人的许可,在同一种商品上使用与其注册商标相同的商标的;<br>(二)未经商标注册人的许可,在同一种商品上使用与其注册商标近似的商标,或者在类似商品上使用与其注册商标相同或者近似的商标,容易导致混淆的;<br>(三)销售侵犯注册商标专用权的商品的;<br>(四)伪造、擅自制造他人注册商标标识或者销售伪造、擅自制造的注册商标标识的;<br>(五)未经商标注册人同意,更换其注册商标并将该更换商标的商品又投入市场的;<br>(六)故意为侵犯他人商标专用权行为提供便利条件,帮助他人实施侵犯商标专用权行为的;<br>(七)给他人的注册商标专用权造成其他损害的。<br>
中华人民共和国<font color="#e74f4c">反不正当竞争</font>法
第九条 经营者不得实施下列侵犯商业秘密的行为:<br>(一)以盗窃、贿赂、欺诈、胁迫、电子侵入或者其他不正当手段获取权利人的商业秘密;<br>(二)披露、使用或者允许他人使用以前项手段获取的权利人的商业秘密;<br>(三)违反保密义务或者违反权利人有关保守商业秘密的要求,披露、使用或者允许他人使用其所掌握的商业秘密;<br>(四)教唆、引诱、帮助他人违反保密义务或者违反权利人有关保守商业秘密的要求,获取、披露、使用或者允许他人使用权利人的商业秘密。<br>经营者以外的其他自然人、法人和非法人组织实施前款所列违法行为的,视为侵犯商业秘密。<br><font color="#e74f4c">第三人明知或者应知商业秘密权利人的员工、前员工或者其他单位、个人实施本条第一款所列违法行为,仍获取、披露、使用或者允许他人使用该商业秘密的,视为</font>【<font color="#e74f4c">侵犯商业秘密</font>】<br>本法所称的商业秘密,是指不为公众所知悉、具有商业价值并经权利人采取相应保密措施的技术信息、经营信息等商业信息。<br>
计算机<font color="#e74f4c">软件保护条例</font>
第二条 本条例所称计算机软件(以下简称软件),是指<font color="#e74f4c">计算机程序</font>及其<font color="#e74f4c">有关文档</font>。
第三条 本条例下列用语的含义:<br>(一)计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。<br>(二)文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。<br>(三)软件开发者,是指实际组织开发、直接进行开发,并对开发完成的软件承担责任的法人或者其他组织;或者依靠自己具有的条件独立完成软件开发,并对软件承担责任的自然人。<br>(四)软件著作权人,是指依照本条例的规定,对软件享有著作权的自然人、法人或者其他组织。<br>
第四条 受本条例保护的软件必须由开发者独立开发,并已固定在某种有形物体上。
第五条 中国公民、法人或者其他组织对其所开发的软件,不论是否发表,依照本条例享有著作权。
第六条 本条例对软件著作权的保护不延及开发软件所用的思想、处理过程、操作方法或者数学概念等。<br>
第九条 软件著作权属于软件开发者,本条例另有规定的除外。
如无相反证明,在软件上署名的自然人、法人或者其他组织为开发者
第十条 由两个以上的自然人、法人或者其他组织合作开发的软件,其著作权的归属由合作开发者签订书面合同约定。无书面合同或者<font color="#e74f4c">合同未作明确约定</font>,合作开发的软件可以分割使用的,开发者对<font color="#e74f4c">各自开发</font>的部分可以<font color="#e74f4c">单独享有著作权</font>;但是,行使著作权时,不得扩展到合作开发的软件整<br>体的著作权。合作开发的软件<font color="#e74f4c">不能分割使用的</font>,其著作权由各合作开发者共同享有,通过协商一致行使;不能协商一致,又无正当理由的,任何一方不得阻止他方行使除转让权以外的其他权利,但是所得收益应当合理分配给所有合作开发者
第十一条 接受他人委托开发的软件,其著作权的归属由委托人与受托人签订书面合同约定;<font color="#e74f4c">无书面合同</font>或者合同未作明确约定的,其著作权由<font color="#e74f4c">受托人</font>享有。
第十四条 软件著作权自<font color="#e74f4c">软件</font>【<font color="#e74f4c">开发完成之日</font>】<font color="#e74f4c">起产生</font>。<br>自然人的软件著作权,保护期为自然人终生及其死亡后<font color="#e74f4c"> </font><font color="#000000">50</font> 年,截止于<font color="#e74f4c">自然人死亡</font>后第<font color="#e74f4c"> 50 年的12 月 31 日</font>;软件是合作开发的,截止于最后死亡的自然人死亡后第 50 年的 12 月 31 日。<br>法人或者其他组织的软件著作权,保护期为 50 年,截止于软件<font color="#e74f4c">首次发表</font>后第 <font color="#e74f4c">50 年的 12 月 31</font>日,但软件自开发完成之日起 50 年内未发表的,本条例不再保护。<br>
<font color="#000000">软件产品</font>管理办法
第四条 软件产品的开发、生产、销售、进出口等活动应遵守我国有关法律、法规和标准规范。任何单位和个人不得开发、生产、销售、进出口含有以下内容的软件产品:<br>(一)<font color="#e74f4c">侵犯他人知识产权</font>的;<br>(二)含有计算机<font color="#e74f4c">病毒</font>的;<br>(三)可能危害计算机<font color="#e74f4c">系统安全</font>的;<br>(四)含有<font color="#e74f4c">国家规定禁止传播</font>的内容的;<br>(五)不符合<font color="#e74f4c">我国软件标准</font>规范的。<br>
12、应用<font color="#e74f4c">数学</font><br> 综合2分
图论之<font color="#e74f4c">最小生成树</font>(<font color="#e74f4c">最短路径问题</font>,<font color="#e74f4c">依次选取长度最小的边,边数=节点数-1</font>)<br>
定义:在连通的带权图的所有生成树中,<font color="#e74f4c">权值和最小</font>的那棵生成树(包含图中所有顶点的树),称作最小生成树
针对问题:带权图的<font color="#e74f4c">最短路径</font>问题
最小生成树的解法:有<font color="#e74f4c">普里姆(Prim)</font>算法和<font color="#e74f4c">克鲁斯卡尔(Kruskal)</font>算法,我们常用克鲁斯卡尔算法。<br>
示例
子主题
<b>解:【</b><font color="#e74f4c">依次</font>】<font color="#e74f4c">选取</font>【<font color="#e74f4c">长度最小</font>】<font color="#e74f4c">的边</font><b>,图 24.2 中有<font color="#e74f4c"> 6 个节点,则需要5条边</font>(边数=节点数-1),因此有:AE、FD 为 200,AB、BF、AF、CD 为300,所以最终方案有 3 种,如图 24.3 所示。</b><br>
图论之<font color="#e74f4c">最大流量(道路运输管道流量问题,依次计算每条路径最大流量计算,剩余为0断开)</font><br>
最大流量问题是一个特殊的<font color="#e74f4c">线性规划</font>问题。
针对问题:<font color="#e74f4c">道路运输</font>能力问题,<font color="#e74f4c">管道流量</font>问题等
示例
子主题
【解】在本题中,从节点①到节点⑥可以同时沿多条路径运输,总的最大流量应是<font color="#e74f4c">各条路径上的最大流量之和</font>,每条路径上的最大流量应是其各段流量的最小值。<br>解题时,<font color="#e74f4c">每找出一条路径算出流量后,该路径上各段线路上的流量应扣除已经算过的流量,形成剩余流量。剩余流量为 0 的线段应将其删除(断开)</font>。例如,路径①③⑤⑥的最大流量为 10 万吨,计算过后,该路径上各段流量应都减少 10 万吨。从而①③之间断开,③⑤之间的剩余流量是 4 万吨,⑤⑥之间的剩余流量为 11 万吨,如图 24.5 所示。<br>同理,依次执行类似步骤:<br>(1)路径①②⑤⑥的剩余最大流量为 6 万吨。计算过后,该路径上各段流量应都减少 6 万吨。从而①②之间断开,②⑤之间的剩余流量是 1 万吨,⑤⑥之间的剩余流量为 5 万吨,如图 24.6 所示。<br>(2)路径①④⑥的剩余最大流量为 5 万吨。计算过后,该路径上各段流量应都减少 5 万吨。从而④⑥之间将断开,①④之间的剩余流量是 5 万吨,如图 24.7 所示。<br>(3)路径①④③⑤⑥的剩余最大流量为 1 万吨。计算过后,该路径上各段流量应都减少 1 万吨。从而④③之间断开,①④之间的剩余流量是 4 万吨,③⑤之间的剩余流量是 3 万吨,⑤⑥之间的剩余流量是 4 万吨,如图 24.8 所示。<br>(4)路径①④②⑤⑥的剩余最大流量为 1 万吨。计算过后,该路径上各段流量应都减少 1 万吨。从而②⑤之间断开,①④之间、④②之间、⑤⑥之间的剩余流量是 3 万吨,如图 24.9 所示。<br>至此,从节点①到节点⑥已经没有可通的路径,因此,从节点①到节点⑥的最大流量应该是所有可能运输路径上的最大流量之和,即10+6+5+1+1=23 万吨。<br>
子主题
子主题
子主题
子主题
子主题
线性规划(<font color="#e74f4c">资源约束下的生产问题</font>)<br>
定义:线性规划是研究在【<font color="#e74f4c">有限的资源</font>】条件下,如何有效地使用这些资源达到预定目标的数学方法。从数学的角度来说,就是在一组约束条件下寻找目标表达式的<font color="#e74f4c">极值</font>问题。<br>
针对问题:在<font color="#e74f4c">资源约束下的生产问题</font>等。
线性规划的常用解法是<font color="#e74f4c">图解</font>法和<font color="#e74f4c">联立方程组</font>法
示例
子主题
解题:直接把答案带入资源表,对比最终结果<br>
动态规划(<font color="#e74f4c">最优化</font>问题,依次选择<font color="#e74f4c">单位利润最高</font>的)<br>
定义:动态规划是一种将问题实例<font color="#e74f4c">分解为更小的、相似的子问题</font>,并存储子问题的解而避免计算重复的子问题,以解决<font color="#e74f4c">最优化问题</font>的算法策略。
针对问题:装货<font color="#e74f4c">最大价值</font>问题
示例
【解】若想获得最高利润最理想的方式是 10 吨都装满,且装的货物是单位利润最高的那些货物。因此,将每种货物的单位利润计算出来,见表 24.4。由表中数据可知,D 单位利润最大,可以装 2 件 8 吨,剩余 2 吨可以选择单位利润第二大的 A,装 2 件,此时的最大利润为 538 元。<br>答案为 D。
子主题
决策分析(<font color="#e74f4c">期望值决策树</font>问题,从<font color="#e74f4c">右向左</font>逐层化简)<br>
定义:决策分析指从若干可能的方案中通过决策分析技术,例如<font color="#e74f4c">期望值</font>法或<font color="#e74f4c">决策树</font>法等选择其一的决策过程,是一种<font color="#e74f4c">定量分析</font>方法
针对问题:<font color="#e74f4c">期望值</font>问题,<font color="#e74f4c">决策树</font>问题。
预期货币价值或者期望货币值(Expected Monetary Value,EMV):把某方案的每个可能结果所获得的收益与其发生概率相乘之后加总,即得到该方案的 EMV。通过比较各方案的 EMV来决策采用哪一个方案。该方法常常与决策树技术相辅相成。<br>
解题技巧:决策树在最左边做决策,所以需要<font color="#e74f4c">从右向左逐层</font>计算化简,特别是条件复杂时更应如此。
示例
【例】某货运公司要从 A 地向 B 地的用户发送一批价值为 9000 元的货物。从 A 地到 B 地有水、陆两条路线。走陆路时比较安全,其运输成本为 1000 元;走水路时一般情况下的运输成本只要 700 元,不过一旦遇到暴风雨天气,则会造成相当于这批货物总价值 10%的损失。根据历年情<br>况,这期间出现暴风雨天气的概率为 15%,那么该货运公司该选哪一个方案?
【解】先画出决策树,如图 24.11 所示。根据图 24.11,走水路时,成本为 700 元的概率为 85%,成本为 1600 元的概率为 15%,因此,走水路的期望成本为(700×85%)+(1600×15%)=835 元;走陆路时,其成本为(1000×85%)+(1000×15%)=1000 元。所以,走水路的期望成本小于走陆路的成本,应该选择走水路。
<font color="#e74f4c">不确定型决策</font>论(<font color="#e74f4c">乐观(最大最大)</font>、<font color="#e74f4c">悲观(最小最大)</font>、<font color="#e74f4c">后悔值(最大反悔值选最小)</font>)<br>
定义:不确定型决策是在<font color="#e74f4c">无法估计</font>系统行动方案所处状态<font color="#e74f4c">概率</font>的情况下进行的决策<br>
决策者根据自己的主观倾向进行决策,可分为5种准则
<font color="#e74f4c">乐观主义</font>准则,也称为“最大最大准则”,其决策原则是【<font color="#e74f4c">大中取大</font>】。决策者依次在决策表中的各个投资方案所对应的各个结果中选择出<font color="#e74f4c">最大结果</font>并记录,最后再从这些结果中<font color="#e74f4c">选出最大者</font>,其所对应的方案就是应该采取的决策方案。<br>
<font color="#e74f4c">悲观主义</font>准则,也称为“最大最小准则”,其决策原则是【<font color="#e74f4c">小中取大</font>】。决策者依次在决策表中的各个投资方案所对应的各个结果中选择出<font color="#e74f4c">最小结果</font>并记录,再从这些结果中选出<font color="#e74f4c">最大者</font>,其所对应的方案就是应该采取的决策方案。
<font color="#e74f4c">后悔值</font>准则,也称为【<font color="#e74f4c">最大后悔值选最小</font>】,该决策法的基本原理为:将每种自然状态的<font color="#e74f4c">最高值</font>(指收益矩阵,如果是损失矩阵应取最低值)定为该状态的<font color="#e74f4c">理想目标</font>,并将该状态中的其他值与最高值相比,所得<font color="#e74f4c">之差</font>作为未达到理想的<font color="#e74f4c">后悔值</font>。为了提高决策的可靠性,在每一方案中<font color="#e74f4c">选取最大的后悔值</font>,再在各方案的【<font color="#e74f4c">最大后悔值中选取最小值</font>】作为决策依据,与该值所对应的方案即为入选方案。<br>
示例
13、专业<font color="#e74f4c">英语</font><br> 综合5分
掌握本领域的英语术语
架构风格
An <font color="#e74f4c">architectural style</font> defines as a family of such systems in terms of a pattern of structural organization. More specifically,an architectural style defines a <font color="#e74f4c">vocabulary</font> of <font color="#e74f4c">components构件 </font>and <font color="#e74f4c">connector</font> types连接类型,and a set of <font color="#e74f4c">constraints约束</font> on how they can be combined. For many styles there may also exist one or more <font color="#e74f4c">semantic models语义模型</font> 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.<br>The best-known examples of<font color="#e74f4c"> pipe-and-filter</font> architectures are programs written in the <font color="#e74f4c">UNIX shell</font>.<br>一种架构风格以一种结构化组织模式定义一组这样的系统。具体来说,一种架构风格定义了一个构件及连接器类型的词汇表,以及一组关于它们如何能够被关联的约束。对于许多风格来说,可能也存在一个或多个语义模型,从系统部件的特性来确定系统的整体特性。许多架构风格已经发展了很多年,众所周知的管道-过滤器架构就是用 UNIX shell 编写的程序。<br>
非功能需求
The <font color="#e74f4c">architecture design</font> specifies the overall architecture and the <font color="#e74f4c">placement布局</font> of software and hardware that will be used. Architecture design is a very complex process that is often left to experienced architecture designers and <font color="#e74f4c">consultants顾问</font>. 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 <font color="#e74f4c">requirements需求</font> and the <font color="#e74f4c">architecture design架构设计</font> are used to develop the hardware and software <font color="#e74f4c">specification规范</font>. There are four primary types of nonfunctional requirements that can be important in designing the architecture. A <font color="#e74f4c">operational操作</font> requirements specify the operating environment(s) in which the system must perform and how those may change over time. <font color="#e74f4c">Performance性能</font> requirements focus on the nonfunctional requirements issues such as response time, <font color="#e74f4c">capacity容量</font>, and <font color="#e74f4c">reliability可靠性</font>. <font color="#e74f4c">Security</font> requirements are the abilities to protect the information system from disruption and data loss, whether caused by an intentional act. <font color="#e74f4c">Cultural and political文化和政治<br></font> requirements are specific to the countries in which the system will be used<br>架构设计指定了将要使用的软件和硬件的总体架构和布局。架构设计是一个非常复杂的过程,往往留给经验丰富的架构设计师和顾问。第一步是将非功能需求细化为更详细的要求,然后用于帮助选择要使用的体系结构以及要放置在每个设备上的软件组件。在基于客户端的架构中,还必须决定是使用两层、三层还是 n 层架构。然后使用需求和体系结构设计来开发硬件和软件规范。有 4 种主要的非功能需求类型可能在设计架构时非常重要。操作要求指定系统必须执行的操作环境以及这些操作环境如何随时间变化。性能要求侧重于非功能性需求问题,如响应时间、容量和可靠性。安全要求是指是否有能力保护信息系统免受故意行为造成的破坏和数据丢失。文化和政治要求明确了特定系统将被使用的国家。<br>
应用架构
An<font color="#e74f4c"> application architecture应用架构</font> specifies the technologies to be used to implement one or more <font color="#e74f4c">information systems信息系统<br></font>. It serves as an <font color="#e74f4c">outline大纲 </font>for detailed design, <font color="#e74f4c">construction构造,</font> and implementation. Given the models and details, include logical <font color="#e74f4c">DFD</font> and <font color="#e74f4c">ERD</font>, we can distribute data and processes to create a <font color="#e74f4c">general design概要设计</font> of application architecture. The design will normally be constrained by<font color="#e74f4c"> architecture standards架构标准</font>,<font color="#e74f4c">project objectives项目目标</font>, and <font color="#e74f4c">the feasibility of techniques used使用技术的可行性</font>. The first physical DFD to be drawn is the <font color="#e74f4c">network architecture</font> DFD. The next step is to distribute data stores to different <font color="#e74f4c">processors处理器</font>. Data <font color="#e74f4c">partitioning分区</font> and <font color="#e74f4c">replication复制 </font>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<br>应用架构说明了实现一个或多个信息系统所使用的技术,它作为详细设计、构造和实现的一个大纲。通过给定的包括逻辑数据流图和实体联系图在内的模型和详细资料,我们可以分配数据和过程以创建应用架构的一个概要设计。概要设计通常会受到架构标准、项目目标和所使用技术的可行性的制约。需要绘制的第一个物理数据流图是<font color="#e74f4c">网络架构数据流图</font>。接下来是分配数据存储到不同的处理器。数据分区和复制是大多数关系型数据库支持的两种分布式数据形式。有许多分配方法用于数据分布。在不同服务器上存储特定表的情况下,我们应该将每个表记为物理数据流图中的一个数<br>据存储,并将其连接到相应的服务器。<br>
软件架构重用
Software architecture <font color="#e74f4c">reconstruction重用</font> is an interpretive, interactive, and iterative process including many activities. <font color="#e74f4c">Information extraction信息提取</font> 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. <font color="#e74f4c">The database construction activity数据库构建</font> converts the elements and relations contained in the view into a standard format for storage in a database. <font color="#e74f4c">The view fusion activity视图融合</font> involves defining and manipulating the information stored in database to reconcile, augment, and establish connections between the elements. <br>Reconstruction consists of two primary activities: <font color="#e74f4c">visualization and interaction可视化与交互</font>, <font color="#e74f4c">pattern definition and recognition模式定义和重构</font>. The former provides a mechanism机制 for the user to<font color="#e74f4c"> manipulate操作</font> architectural elements, and the latter provides <font color="#e74f4c">facilities设施</font> for architecture reconstruction<br>软件架构重用是一个解释性、交互式和反复迭代的过程,包括了多项活动。<br>信息提取通过分析系统现有设计和实现工件来构造它的模型。其结果用于在后续活动中构造系统的视图。<br>数据库构建活动把视图中包含的元素和关系转换为数据库中的标准存储格式。<br>视图融合活动包括定义和操作数据库中存储的信息,理顺、加强并建立起元素之间的连接。<br>重构由两个主要活动组成:可视化和交互式及模式定义与识别。前者提供了一种让用户操作架构元素的机制,后者则提供了用于架构重构的设施。<br>
系统架构
A system's architecture is a <font color="#e74f4c">representation表示 </font>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 <font color="#e74f4c">human interaction人机交互<br></font> with these components. That is, system architecture is concerned with a total system, including hardware, software, and humans.<br>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.).<br><br>functionality 、 software architecture、Module structures、Component and connector structures、Allocation structures<br>系统架构是一个系统的一种表示,包含了<font color="#e74f4c">功能</font>到<font color="#e74f4c">软硬件构件</font>的映射、<font color="#e74f4c">软件架构</font>到<font color="#e74f4c">硬件架构</font>的映射以及对于这些组件<font color="#e74f4c">人机交互</font>的关注。也就是说,系统架构关注于整个系统,包括硬件、软件和使用者。<br>软件架构结构根据其所展示元素的广义性质,可以分为3个主要类别。<br>(1)<font color="#e74f4c">模块结构</font>将决策体现为一组需要被构建或采购的代码或数据单元。<br>(2)<font color="#e74f4c">构件连接器结构</font>将决策体现为系统如何被结构化为一组具有运行时行为和交互的元素。<br>(3)<font color="#e74f4c">分配结构</font>将决策体现为系统如何在其环境中关联到非软件结构,如 CPU、文件系统、网络、开发团队等。<br>
架构设计
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 (请作答此空).<br>architecturedesign、datastorage、dataaccesslogic、applicationlogic、clients,servers,andnetwork<br><font color="#e74f4c">架构设计</font>的目标是确定应用软件的哪些部分将被分配到何种硬件。识别出正在开发系统的主要软件构件并分配到系统将要运行的硬件构件。所有软件系统可分为四项基本功能。首项是<font color="#e74f4c">数据存储</font>。大多数信息系统需要数据进行存储并检索,无论是一个小文件,比如一个字处理器产生的一个备忘录,还是一个大型数据库,比如存储一个企业会计记录的数据库。第二项功能是<font color="#e74f4c">数据访问逻辑</font>,处理过程需要访问数据,这通常是指用SQL进行数据库查询。第三项功能是<font color="#e74f4c">应用程序逻辑</font>,这些逻辑通过数据流图,用例和功能需求来记录。第四项功能是<font color="#e74f4c">表示逻辑</font>,给用户显示信息并接收用户命令。一个系统的三类主要硬件构件是<font color="#e74f4c">客户机、服务器和网络</font>。<br>
数据字典
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.<br><br>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.<br><br>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.<br><br>metadata、DFD、consistent、CASE tools、cataloging<br>数据字典是日常生活中用作参考的各类字典的专门应用。数据字典是关于数据(即<font color="#e74f4c">元数据</font>)的数据参考书,由系统分析师编写,指导他们进行分析和设计。作为文档,数据字典收集并协调特定的数据术语,并确认每个术语对组织中不同人员的含义。前面介绍的<font color="#e74f4c">数据流图</font>是收集数据字典条目的绝佳起点。<br><br>维护数据字典的一个重要原因是保持数据干净。这意味着数据必须是<font color="#e74f4c">一致的</font>。如果您将有关男性性别的数据存储为一条记录中的“M”,第二条记录中的“男”,第三条记录中的数字“1”,则数据不干净。维持数据字典将在这方面有所帮助。<br><br>自动数据字典(前面提到的<font color="#e74f4c">CASE工具</font>的一部分)因其交叉引用数据项的能力而非常有价值,从而允许对共享公共元素的所有程序进行必要的程序更改。此功能取代了随意更改的程序,或者它可以防止等到程序无法运行为止,因为尚未在共享更新项目的所有程序中实施更改。显然,自动化数据字典对于产生数千个需要<font color="#e74f4c">编目</font>和交叉引用的数据元素的大型系统变得非常重要。<br>
案例
1、系统计划<br>
系统规划的主要步骤
(1)对【<font color="#e74f4c">现有系统</font>】进行初步调查<br>
(2)分析和确定【<font color="#e74f4c">系统目标</font>】
(3)分析【<font color="#e74f4c">子系统</font>】<font color="#e74f4c">的组成</font>和<font color="#e74f4c">基本功能</font>
(4)拟定系统的【<font color="#e74f4c">实施方案</font>】
(5)进行系统的【<font color="#e74f4c">可行性研究</font>】,编写<font color="#e74f4c">可行性研究报告</font>,召开可<font color="#e74f4c">行性论证会</font><br>
(6)制订系统【<font color="#e74f4c">建设方案</font>】
系统调查
<font color="#e74f4c">初步</font>调查:在规划阶段进行初步调查可了解企业的<font color="#e74f4c">组织结构</font>和<font color="#e74f4c">系统功能</font>等。具体包括:<font color="#e74f4c">初步需求分析</font>、<font color="#e74f4c">企业基本状况</font>、<font color="#e74f4c">管理方式</font>和<font color="#e74f4c">基础数据管理状况</font>、<font color="#e74f4c">现有系统状况</font>。<br>
<font color="#e74f4c">详细</font>调查:深入了解系统的<font color="#e74f4c">处理流程</font>。调查的内容有:现有系统的【<font color="#e74f4c">运行环境和状况</font>】、【<font color="#e74f4c">业务流程</font>】、【<font color="#e74f4c">数据资源与数据流程</font>】、【<font color="#e74f4c">资源情况</font>】、【<font color="#e74f4c">约束条件</font>】、【<font color="#e74f4c">薄弱环节</font>】、<font color="#e74f4c">组织结构</font>、<font color="#e74f4c">系统功能</font>等。<br>
成本效益分析技术
成本
<font color="#e74f4c">固定</font>成本:是指其总额在一定时期和一定业务量范围内,<font color="#e74f4c">不受业务量变动</font>的影响而保持固定不变的成本。如【<font color="#e74f4c">管理人员的工资</font>】、【<font color="#e74f4c">员工培训费</font>】、<font color="#e74f4c">办公费</font>、<font color="#e74f4c">固定资产折旧费</font>等。<br>
<font color="#e74f4c">变动</font>成本:也叫可变成本,指在一定时期和一定业务量范围内其总额<font color="#e74f4c">随着业务量的变动</font>而成正比例变动的成本。如直接材料费、产品包装费、【<font color="#e74f4c">外包费用</font>】、【<font color="#e74f4c">开发奖金</font>】等。<br>
<font color="#e74f4c">混合</font>成本:即混合了固定成本和变动成本的性质的成本。这些成本通常有一个<font color="#e74f4c">基数</font>,超过这个基数就会随业务量的增大而增大。如【<font color="#e74f4c">质量保证人员的工资</font>】、【<font color="#e74f4c">设备动力费</font>】等成本在一定业务量内是不变的,超过了这个量便会随业务量的增加而增加。<br>
盈亏临界点
盈亏临界点也称盈亏平衡点或保本点,是指项目收入和成本相等的经营状态,就是既不盈利又不亏损的状态。相关公式如下:<br>
<font color="#e74f4c">利润</font>=(<font color="#e74f4c">销售单价−单位变动成本</font>)×<font color="#e74f4c">销售量</font>−<font color="#e74f4c">总固定成本</font>
盈亏临界点销售量=总固定成本/(销售单价−单位可变成本)。
盈亏临界点销售额=总固定成本/(1−总可变成本/销售收入)。
2、信息系统架构的设计理论与实践<br> 综合3~5分<br> 案例、论文<br>
2.1 信息系统架构概述<br>
定义
信息系统架构(Information System Architecture,ISA)是一种总体架构,其<font color="#e74f4c">自顶向下</font>体现政府、企(事)业单位的信息系统的各个<font color="#000000">组成部分</font>和各部分之间的<font color="#e74f4c">关系</font>,表现为【<font color="#e74f4c">信息系统</font>】与【<font color="#e74f4c">相关业务</font>】的关系,体现了【<font color="#e74f4c">信息系统</font>】与【<font color="#e74f4c">信息技术</font>】的关系,是展示了【<font color="#e74f4c">信息</font>】、【<font color="#e74f4c">技术</font>】与【<font color="#e74f4c">企业</font>】及其【<font color="#e74f4c">业务</font>】之间关系的模型。<br>
信息系统架构是<font color="#e74f4c">系统的结构|抽象</font>:由<font color="#e74f4c">软件</font>【<font color="#e74f4c">元素</font>】、<font color="#e74f4c">元素</font>【<font color="#e74f4c">外部可见属性</font>】和<font color="#e74f4c">元素</font>【<font color="#e74f4c">间关系</font>】组成。<br>
信息系统架构是<font color="#e74f4c">元素的集合</font>:元素组成<font color="#e74f4c">系统</font>,元素外部可见属性表现<font color="#e74f4c">系统功能</font>,元素间关系表现<font color="#e74f4c">系统对外部刺激的响应</font>;<br>
信息系统架构是<font color="#e74f4c">软件系统</font>【<font color="#e74f4c">结构</font>】、【<font color="#e74f4c">行为</font>】和【<font color="#e74f4c">属性</font>】的高级抽象,由系统<font color="#e74f4c">元素描述</font>、元素<font color="#e74f4c">间相互作用</font>、元素<font color="#e74f4c">集成模式</font>及<font color="#e74f4c">模式约束</font>组成。
信息系统架构是<font color="#e74f4c">系统的基础组织</font>,体现为【<font color="#e74f4c">构件</font>】、【<font color="#e74f4c">构件间</font>】关系、【<font color="#e74f4c">构件和环境</font>】<font color="#e74f4c">间</font>关系、构件【<font color="#e74f4c">设计和演进</font>】<font color="#e74f4c">的原则</font>。<br>
理解
架构是<font color="#e74f4c">结构的组合</font>:结构从<font color="#e74f4c">功能角度</font>描述元素间关系。
系统必然存在架构:无论是否存在<font color="#e74f4c">抽象</font>、<font color="#e74f4c">模型</font>和具体的描述<font color="#e74f4c">文档</font>
从<font color="#e74f4c">静态</font>角度,架构关注系统的<font color="#e74f4c">总体结构</font>(模式);从<font color="#e74f4c">动态</font>角度,架构关注系统行为的<font color="#e74f4c">共同特征</font>。
架构具有重复性问题的通用解决方案的<font color="#e74f4c">复用</font>性,架构在系统设计过程中通过设计决策对系统造成深远影响,这种影响反映<font color="#e74f4c">架构敏感</font>
架构隐含设计决策:架构是对<font color="#e74f4c">关键功能</font>和<font color="#e74f4c">非功能性需求</font>进行设计与决策的最终设计结果。
影响架构的因素
<font color="#e74f4c">外部</font>干系人:对系统有<font color="#e74f4c">不同的关注和需求</font>。
<font color="#e74f4c">内部</font>干系人:<font color="#e74f4c">知识结构</font>、<font color="#e74f4c">素质</font>、<font color="#e74f4c">经验</font>、<font color="#e74f4c">技术环境</font>影响需求和设计
架构对影响因素也具有反作用
影响<font color="#e74f4c">外部</font>干系人:<font color="#e74f4c">业务影响组织结构</font>
影响<font color="#e74f4c">内部</font>干系人:架构具有<font color="#e74f4c">示范性</font>、<font color="#e74f4c">复用性</font>,提供<font color="#e74f4c">商机</font>
信息系统架构风格
数据流体系结构风格:批处理,管道-过滤器。
调用/返回体系结构风格:主程序/子程序,面向对象,层次结构。
独立构件体系结构风格:进程通信,事件系统。
虚拟机体系结构风格:解释器,规则系统。
仓库体系结构风格:数据库,超文本,黑板<br>
信息系统物理结构:单体应用、分布式<br>
信息系统逻辑结构
横向综合:将同一管理层次的各个业务职能综合到一起。
纵向综合:将同一业务的各个管理层次智能综合到一起。
纵横综合:将各个业务的各个管理层次统一综合到一起,主要从信息模型和处理模型两方面着手,建立公用的数据库和统一的信息处理系
四种架构模型
<font color="#e74f4c">单体</font>应用:指运行在单台物理机器上的独立应用程序。应用领域就是信息系统领域,也就是以数据处理为核心的系统。<br>
客户机/服务器<br>
二层 C/S(胖客户端):主要是指前台客户端 + 后台数据库的形式<br>
三层C/S(瘦客户端):前台界面和业务逻辑处理分离,前台客户端仅含前台界面。前台客户端+后台服务端+后台数据库<br>
三层B/S:Web 浏览器+Web 服务器+后台数据库。
B/S 本质是浏览器与服务器间采用基于TCP/IP 或 UDP 的 HTTP 协议。
前台客户端与后台服务端通信协议有:<font color="#e74f4c">TCP/IP</font> 协议,基于 TCP/IP 协议通过 Socket <font color="#e74f4c">自定义实现</font>的协议,<font color="#e74f4c">RPC </font>协议,【<font color="#e74f4c">CORBA/IIOP</font> 协议】,Java <font color="#e74f4c">RMI </font>协议,J2EE <font color="#e74f4c">JMS </font>协议,<font color="#e74f4c">HTTP</font>协议。<br>
多层 C/S:是指三层以上的结构,形式是前台客户端+后台服务端+<font color="#e74f4c">中间件/应用层</font>+数据库,其中,中间件/应用层的作用有以下 3 点:①提高<font color="#e74f4c">并发性能</font>和<font color="#e74f4c">可伸缩</font>性;②<font color="#e74f4c">请求转发</font>,业务逻辑处理;③增加<font color="#e74f4c">数据安全</font>性。
多层 B/S:是指三层以上的结构,形式是 Web 浏览器+Web 服务器+<font color="#e74f4c">中间件/应用层</font>+数据库。<br>
模型-视图-控制器(Model-View-Controller,MVC)。在 J2EE 架构中,形式是:Web 浏览器(View)+ Web 服务器(Controller 也可以是加上中间件/应用层的形式)+数据库,关于模型层可根据实际情况与 MV 一起置于 Web 服务器,或单独置于应用层。
面向服务架构(<font color="#e74f4c">SOA</font>)模式<br>
在SOA中<font color="#e74f4c">服务的概念</font>是指能提供一组整体功能的<font color="#e74f4c">独立应用系统</font>。这个应用系统被去掉任何一层服务,都将不能正常工作。<br>
在实践中,要实现SOA可以借助诸如<font color="#e74f4c">消息</font>中间件、<font color="#e74f4c">交易</font>中间件等中间件来实现。
SOA 的应用模式最典型、最流行的就是 Web Service,即两个互联网应用之间可以互相向对方开放一些功能模块、函数、过程等服务,然后通过消息机制或远程过程调用(RPC)这样的中间件去调用对方的服务。
面向服务架构主要实践有异构系统集成、同构系统聚合、联邦架构等。
企业服务/数据总线(<font color="#e74f4c">ESB</font>/EDB):应用间信息交换的<font color="#e74f4c">公共通道</font><br>
连接软件系统,主要提供<font color="#e74f4c">服务代理功能</font>和<font color="#e74f4c">服务注册表</font>。
可以基于中间件(消息中间件、事务中间件)或CORBA/IIOP 协议开发构建<br>
主要功能:按照预定义的配置或消息头定义,进行数据 (data)、 请 求 (request) 或回复 (response) 的接收与分发。<br>
企业信息系统的总体框架
ISA是多维度、分层次、高度集成化的模型。
战略系统:是指企业中与战略制定、高层决策有关的管理活动和计算机辅助系统。战略系统由企业战略规划体系、以计算机为基础的高层决策支持系统组成。战略系统是信息系统对企业高层管理者决策支持的能力,也是企业战略规划对信息系统建设的影响和要求。企业战略可以分为长期与短期两种,长期规划较为稳定,如调整产品结构。而短期规划适用于如决定新产品的类型的情况。<br>
业务系统:是指企业中完成一定业务功能的各个部分组成的系统,其中的功能通过一些业务过程来完成,业务过程由一系列相互依赖的业务活动、业务活动先后次序、业务活动执行角色、业务活动处理相关数据组成。业务系统的作用有:①对企业现有业务系统,过程,活动建模;②在企业战略指导下,采用业务过程重组优化业务过程;③对企业优化业务系统,过程,活动建模;④确定相对稳定数据;⑤以稳定数据为基础,进行应用系统开发和信息基础设施建设。<br>
应用系统:应用系统是指信息系统中的应用软件部分。应用系统包括内部功能和外部界面两个部分。界面部分是应用系统中相对变化较多的部分,主要由用户对界面形式要求的变化引起;功能实现部分中,相对来说处理的数据变化较小,而程序的算法和控制结构的变化较多,主要由用户对应用系统功能需求的变化和对界面形式要求的变化引起。<br>
企业信息基础设施:(Enterprises Information Infrastructure,EII)是指根据企业当前业务和可预见的发展趋势,及对信息采集、处理、存储和流通的要求,构筑由信息设备、通信网络、数据库、系统软件和支持性软件等组成的环境。<br>
2.2 信息系统架构设计方法(ADM)
开放式企业架构框架标准TOGAF
核心思想是模块化架构,为架构产品提供内容框架,为大型组织开发提供扩展指南,适用于不同架构风格。<br>
组件:架构开发方法、架构开发方法指南和技术、架构内容框架、企业连续序列和工具、架构框架参考模型、架构能力框架<br>
目标
(1)节省时间和成本,更有效、合理地利用资源。
(2)实现可观的投资回报率。
(3)确保从关键利益相关方到团队成员的所有用户都使用相同的语言。
(4)避免被“锁定”到企业架构的专有解决方案。
架构开发方法ADM由一组按照架构领域的架构开发顺序而排列成一个环的多个阶段所构成。这些阶段是:预备、需求管理、架构愿景、业务架构、信息系统架构、技术架构、机会和解决方案、迁移规划、实施治理、架构变更管理<br>
2.3 信息化总体架构方法<br>
信息化包括4个方面的内容:信息网络体系、信息产业基础、社会运行环境、效用积累过程
信息化具有6个要素:开发利用信息资源、建设国家信息网络、推进信息技术应用、发展信息技术和产业、培育信息化人才、制订和完善信息化政策。
信息化包括了7个平台:知识管理平台、日常办公平台、信息集成平台、信息发布平台、协同工作平台、公文流转平台、企业通信平台。
信息化也具有9个特征:易用性、健壮性、平台化、灵活性、扩展性、安全性、门户化、整合性、移动性(手机看)<br>
信息化工程建设方法<br>
信息化架构模式
数据导向架构:关注数据模型和数据质量。<br>
流程导向架构:关注端到端流程整合及对流程变化的适应度。<br>
信息化建设生命周期:系统<font color="#e74f4c">规划</font>、系统<font color="#e74f4c">分析</font>、系统<font color="#e74f4c">设计</font>、系统<font color="#e74f4c">实施</font>、系统<font color="#e74f4c">运行和维护</font><br>
信息化工程总体规划的方法论<br>
<font color="#e74f4c">关键成功因素</font>法(Critical Success Factors,<font color="#e74f4c">CSF</font>)。通过分析找出使得企业<font color="#e74f4c">成功的关键</font>因素,然后再围绕这些关键因素来确定系统的需求,并进行规划。<br>
<font color="#e74f4c">战略目标集转化</font>法(Strategy Set Transformation,<font color="#e74f4c">SST</font>)。把整个战略目标看成是一个“信息集合”,由<font color="#e74f4c">使命</font>、<font color="#e74f4c">目标</font>、<font color="#e74f4c">战略</font>等组成,SST反映了<font color="#e74f4c">各种人的要求</font>,而且给出了按这种要求的<font color="#e74f4c">分层</font>,然后转化为信息系统目标的结构化方法。它能保证<font color="#e74f4c">目标比较全面</font>,疏漏较少,但它在突出重点方面不如关键成功因素法<br>
<font color="#e74f4c">企业系统规划</font>法(Business System Planning,<font color="#e74f4c">BSP</font>)。BSP 通过<font color="#e74f4c">自上而下</font>地识别<font color="#e74f4c">系统目标</font>、<font color="#e74f4c">企业</font>【<font color="#e74f4c">过程和数据</font>】,然后对数据进行分析,自下而上地设计信息系统。<br>
2.4 案例分析
价值驱动的体系结构
Web服务在HL7上的应用
以服务为中心的企业整合
3、层次式架构的设计理论与实践<br> 综合2~5分<br> 案例<br>
3.1 层次式架构概述
层次式架构的定义和特性
层次式架构的一般组成(表现层、中间层、数据访问层和数据层)
3.2 表现层框架设计<br>
设计模式(MVC、MVP和MVVM)
XML 技术
UIP 设计思想
动态生成设计思想
3.3中间层架构设计<br>
业务逻辑层组件设计<br>
业务逻辑层工作流设计
业务逻辑层实体设计
业务逻辑层框架
3.4数据访问层设计<br>
访问模式
ORM、Hibernate 与CMP 2.0 设计思想
灵活运用 XML Schema<br>
事务处理设计<br>
连接对象管理设计
3.5数据层架构规划与设计
数据库设计与类的设计融合的方法
数据库设计与 XML设计融合的方法
3.6物联网的层次架构设计
物联网的一般层次架构(三层体系结构)
3.7 案例分析<br>
电子商务网站<br>
基于物联网架构的电子小票服务系统
4、云原生架构设计理论与实践<br> 综合2~4分<br> 案例、论文<br>
4.1 云原生架构概述
云原生的背景、定义和特征
云原生架构的设计原则<br>
架构模式(服务化架构模式、Mesh 化架构模式、Serverless 模式、存储计算分离模式、分布式事务模式、可观测架构和事件驱动架构)
4.2 云原生架构相关技术
容器技术
云原生微服务技术
微服务
优点
每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
微服务能使用不同的语言开发。
去中心化。每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。
缺点
很难在不采用分布式事务的情况下跨服务实现功能<br>
测试工作更加困难<br>
跨服务实现要求功能要求团队之间的紧密协作<br>
部署复杂
应用网关的作用
提供统一入口<br>
可以进行权限身份认证等安全管理
可以根据流量进行限流<br>
数据缓存
性能监控等<br>
异常重试<br>
服务降级
无服务器技术
服务网格
4.3 案例分析
某旅行公司云原生改造<br>某汽车公司数字化转型实践<br>某快递公司核心业务系统改造<br>某电商业务改造<br>某体育用品公司基于云原生架构的业务中台构建
5、面向服务的架构设计理论与实践<br> 综合2~5分<br> 案例<br>
5.1 面向服务的架构概述
SOA的定义和发展现状
面向 Web 服务的业务流程执行语言(BPEL)·
SOA 的参考架构(IBM的Websphere 业务集成参考架构)
SOA主要遵守的协议和规范(UDDI协议、WSDL规范、SOAP 协议和 REST 规范)
SOA 的作用
5.2 面向服务的架构设计
SOA的设计原则
SOA的设计模式(服务注册表模式、企业服务总线模式、微服务模式)设计
SOA 架构应注意的问题
5.3 面向服务的架构实施过程<br>
选择 SOA 解决方案
业务流程分析(建立服务模型和建立业务流程)
6、嵌入式系统的架构设计理论与实践<br> 案例
6.1 嵌入式系统概述
嵌入式系统的定义和发展现状
嵌入式系统的硬件体系结构
嵌入式微处理器及其分类
存储器及其分类
内、外总线及其分类
看门狗电路
嵌入式系统软件架构概述
6.2 嵌入式系统软件架构的原理与特征
嵌入式软件架构原理(层次化模式和递归模式)
嵌入式操作系统
嵌入式操作系统的定义、特点和分类
嵌入式操作系统的一般架构
嵌入式操作系统的基本功能及典型调度算法
<font color="#e74f4c">EDF</font>早截止期调度算法:根据任务的<font color="#e74f4c">截止时间</font>来确定其优先级,对于时间期限最近的任务,分配最高的优先级。
<font color="#e74f4c">LLF</font>最低松弛度优先算法:根据<font color="#e74f4c">任务紧急(或松弛)的程度</font>,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,使之优先执行。<br>
<font color="#e74f4c">RMS</font>(Rate Monotonic Scheduling)是一种<font color="#e74f4c">静态优先级</font>调度算法,是经典的<font color="#e74f4c">任务周期</font>调度算法,周期越短,优先级越高。<br>
典型嵌入式操作系统产品的比较
嵌入式数据库
<br>嵌入式数据库的定义、特点和分类
嵌入式数据库管理系统一般只提供<font color="#e74f4c">本机服务接口</font>,为<font color="#e74f4c">前端应用</font>提供基本的数据支持。<br>
嵌入式数据库的一般架构(内存类、文件类和网络类)
嵌入式数据库的主要功能
典型嵌入式数据库产品的比较
嵌入式中间件
<br>嵌入式中间件的定义、特点和分类
嵌入式中间件的一般架构(消息中间件和分布式对象中间件)
嵌入式中间件的主要功能
典型嵌入式中间件产品(CORBA和DDS)
嵌入式系统软件开发环境
嵌入式软件开发环境的定义、特点和分类
嵌入式软件开发环境的一般架构(基于Eclipse框架的嵌入式软件开发环境的层次结构)
嵌入式软件开发环境的主要功能
典型嵌入式软件的开发环境(基于GCC开源工具的软件开发环境、Wokbench 软件开发环境、MULTI集成开发环境)
6.3 嵌入式系统软件架构设计方法
基于架构的软件开发方法(ABSD)
属性驱动的软件设计方法(ADD)
实时系统的设计方法(DARTS)
6.4 案例分析
鸿蒙操作系统架构案例分析
面向安全攸关系统的跨领域 GeneSys 系统架构
物联网操作系统软件架构
7、通信系统架构的设计理论与实践<br> 案例
7.1 通信系统的架构<br>
局域网网络架构(单核心架构、双核心架构、坏型架构和层次局域网架构)<br>
局域网网络协议的应用<br>
互为主备的交换或路由:VRRP、HSRP和<br>GLBP
二层网络:STP和LACP
三层设备:OSPF、RIP和BGPF
广域网网络架构(单核心架构、双核心架构、环型架构、半冗余、对等子域和层次子域)
移动通信网网络架构(5GS与DN互连、5G网络边缘计算等)<br>
存储网络架构(DAS、NAS和SAAN)
软件定义网络架构(SDN)
SDN网络架构有三层,分别是:
(1)应用层。对应用户不同的业务和应用。
(2)控制层。主要负责处理数据平面资源的编排,维护网络拓扑、状态信息等。
(3)数据转发层。负责用户数据的转发。
7.2 网络构建的关键技术<br>
·网络高可用设计(定义、架构和协议配置)·
IPV4与 IPV6 融合组网关键技术(双协议栈、隧道技术和地址翻译机制等)<br>
SDN 技术
子主题
7.3 网络构建和设计方法
网络需求分析步骤(业务需求、用户需求、计算机平台需求和网络需求)
网络技术遴选(局域、广域、地址规划模型、路由协议、层次化网络模型设计和高可用设计)
绿色网络设计方法(目的、作用和设计原则)
7.4 网络安全相关技术
防火墙布设(包过滤型、应用层网关和代理服务型)
VPN技术(IPSec、GRE、MPLS VPN 和VPDN)
访问控制技术(认证、策略和审计)
网络安全隔离(子网隔离、VLAN 隔离、逻辑隔离和物理隔离等)<br>
网络安全协议(SSL、SET和HTTPS)
7.5 案例分析
高可用网络构建分析
园区网双栈构建分析<br>
5G 网络应用
8、安全架构的设计理论与实践<br> 案例、论文<br>
8.1 安全架构概述<br>
信息安全面临的威胁<br>
安全架构的定义和范围(产品安全架构、安全技术体系架构和审计架构)<br>
信息安全相关的国内外标准及组织
主要安全模型<br>
状态机模型(BLP)模型<br>Bell-LaPadula 模型<br>Biba 模型<br>Clark-Wilson(CWM)模型<br>ChineseWall 模型
8.2 系统安全体系架构规划框架<br>
安全技术体系架构<br>
信息系统安全体系规划(技术体系、组织机构体系和管理体系)
信息系统安全规划框架
8.3 信息安全整体架构设计(WPDRRC模型)<br>
WPDRRC体系架构模型概述(6个环节和3大要素)
信息安全体系架构设计方法<br>
安全保障体系(确定安全策略、统一配置和管理防病毒系统、网络安全管理)
信息安全体系架构(物理安全、系统安全、网络安全、应用安全和安全管理)
面向企业安全控制系统的安全架构设计
8.4 网络安全体系架构设计
OSI的安全体系架构概述
OSI安全架构(7层协议)<br>
鉴别框架
访问控制框架
机密性框架
完整性框架
抗抵赖框架
8.5 数据库系统的安全设计
数据库安全设计的评估标准
数据库的完整性设计方法(设计原则、作用和示例)
8.6 系统架构的脆弱性分析
软件脆弱性的定义、特点和分类
软件脆弱性的生命周期
软件脆弱性的分析方法
典型的软件架构脆弱性分析(分层、C/S、B/S、事件驱动、MVC、微内核和微服务)
8.7 案例分析
电子商务系统的安全性设计
基于混合云的工业安全架构设计
9、大数据架构设计理论与实践<br> 案例、论文<br>
9.1 大数据处理系统概述
传统数据处理系统存在的问题<br>
大数据处理系统面临的挑战
大数据处理系统的定义、范围和特征
9.2 典型的大数据架构<br>
Lambda 架构<br>
Lambda 的来源、定义、应用场景和优缺点<br>
Lambda的体系结构(BatchLayer(批处理层)、Speed Layer(加速层)、Serving Layer(服务层))
Kappa 架构<br>
Kappa 的来源、定义、应用场景和优缺点
Kappa 的体系结构
常见 kappa 架构的变形架构
9.3 案例分析
某网在奥运转播中的大数据应用
某网广告平台的应用与演进
某证券公司大数据系统
某电商智能决策大数据系统
论文
1、软件系统建模
定义问题与归结模型
软件系统建模是在<font color="#e74f4c">系统需求分析</font>和系统<font color="#e74f4c">实现</font>之间架起的一座桥梁,系统开发人员<font color="#e74f4c">按照软件系统模型开发</font>出符合设计目标的软件系统,并基于该模型进行软件的<font color="#e74f4c">维护和改进</font>。
软件系统建模(Software System Modeling)是<font color="#e74f4c">软件开发</font>中的重要环节,通过<font color="#e74f4c">构建软件系统模型</font>可以帮助系统开发人员<font color="#e74f4c">理解系统</font>、<font color="#e74f4c">抽取业务过程</font>和<font color="#e74f4c">管理系统的复性</font>,也可以方便各类<font color="#e74f4c">人员之间的交流</font>。<br>
结构化系统建模
结构化建模方法<br>结构化建模方法是以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。结构化建模方法所绘制的模型称为<font color="#e74f4c">数据流图(DFD)</font>。对于<font color="#e74f4c">流程较为稳定</font>的系统可考虑结构化建模方法。
面向对象系统建模
面向对象建模方法将“<font color="#e74f4c">数据</font>”和“<font color="#e74f4c">过程</font>”集成到被称为“<font color="#e74f4c">对象</font>”的结构中,消除了数据和过程的人为分离现象。面向对象建模方法所创建的模型被称为<font color="#e74f4c">对象模型</font>。随着面向对象技术的不断发展和应用,形成了面向对象的建模标准,即<font color="#e74f4c">UML(统一建模语言)</font>。UML定义了几种不同类型的型图,这些模型图以对象的形式共建一个信息系统或应用系统,是目前比较常用的建模方法。
数据库建模
信息工程建模方法(或数据库建模方法)信息工程建模方法是一种<font color="#e74f4c">以数据为中心</font>,但<font color="#e74f4c">过程敏感</font>的技术,它强调在分析和研究过程需求之前,首先研究和分析<font color="#e74f4c">数据需求</font>。信息工程建模方法所创建的模型被称为<font color="#e74f4c">实体联系图(ERD)</font>。主要用于数据建模。
子主题
可靠性建模
系统评估建模
2、软件架构设计
软件架构风格选择
软件架构设计
特定领域软件架构
基于架构的软件开发方法
属性驱动的软件设计方法
实时系统设计方法
软件架构演化
架构质量和评估
架构脆弱性分析
3、系统设计
信息系统的总体框架设计
大数据处理系统流程设计
SOA 及分布式系统总体设计<br>
系统人-机界面设计
嵌入式系统设计
数据库系统设计
文件设计、存储设计
通信和网络应用系统设计
系统运行环境的集成与设计
系统性能设计
系统安全性和可靠性设计
中间件、构件化系统设计
5、系统的可靠性分析与设计
系统的故障模型和可靠性模型
提高系统可靠性的措施
系统的故障对策和系统的备份与恢复
系统可靠性分析、预计与评估
6、系统的安全性和保密性设计
系统的访问控制技术
数据的完整性
数据与文件的加密
系统抗攻击设计
通信的安全性
系统安全性评估与认证
重点
综合
系统工程
系统工程<font color="#e74f4c">生命周期</font>方法<br>
<font color="#000000">【</font><font color="#e74f4c">计划</font><font color="#e74f4c">驱动</font>】方法:需求->设计->构建->测试->部署(<font color="#e74f4c">简单、理想化</font>)<br>
【<font color="#e74f4c">渐进迭代</font>】式开发:提供<font color="#e74f4c">连续交付</font>以达到期望的系统<br>
<font color="#e74f4c">精益</font>开发:起源于丰田,是一个<font color="#e74f4c">动态的、知识驱动</font>的,以<font color="#e74f4c">客户为中心</font>的过程<br>
<font color="#e74f4c">敏捷</font>开发:<font color="#e74f4c">适应</font>性、<font color="#e74f4c">以人为本</font>、<font color="#e74f4c">迭代增量</font>、<font color="#e74f4c">小项目</font><br>
系统工程<font color="#e74f4c">方法</font>(<font color="#e74f4c">科学决策</font>方法)<br>
<font color="#e74f4c">霍尔的三维</font>结构<br> <font color="#e74f4c">硬科学</font>方法论<br>
美国系统工程专家霍尔(A.D.Hall)等人于 <font color="#e74f4c">1969 </font>年提出的一种系统工程方法论,<br>
<font color="#e74f4c">逻辑</font>维:即解决问题的<font color="#e74f4c">逻辑过程</font>,包括:明确<font color="#e74f4c">问题</font>、确定<font color="#e74f4c">目标</font>、<font color="#000000">系统</font><font color="#e74f4c">综合</font>、系统<font color="#e74f4c">分析</font>、<font color="#e74f4c">优化</font>、<font color="#e74f4c">决策</font>、<font color="#e74f4c">实施</font> 7 个逻辑步骤;<br>
<font color="#e74f4c">时间</font>维:即<font color="#e74f4c">工作进程</font>,包括:<font color="#e74f4c">规划</font>、<font color="#e74f4c">拟订方案</font>、<font color="#e74f4c">研制</font>、<font color="#e74f4c">生产</font>、<font color="#e74f4c">安装</font>、<font color="#e74f4c">运行</font>、<font color="#e74f4c">更新</font> 7 个时间阶段;<br>
<font color="#e74f4c">知识</font>维:即专业<font color="#e74f4c">科学知识</font>,包括:工程、医学、建筑、商业、法律、管理、社会科学、艺术等知识和技能。
<font color="#e74f4c">切克兰德</font>方法<br> <font color="#e74f4c">软科学</font>方法论<br>
核心<font color="#e74f4c">不是“最优化”</font>而是“<font color="#e74f4c">比较”与“探寻</font>”。<br>
将工作过程分为7个步骤:<font color="#e74f4c">认识问题</font>、<font color="#e74f4c">根底定义</font>、建立<font color="#e74f4c">概念模型</font>、<font color="#e74f4c">比较及探寻</font>、<font color="#e74f4c">选择</font>、<font color="#e74f4c">设计与实施</font>、<font color="#e74f4c">评估与反馈</font>。<br>
<font color="#e74f4c">并行工程</font>方法
是对产品及其相关过程(包括<font color="#e74f4c">制造</font><font color="#000000">过程</font>和<font color="#e74f4c">支持</font>过程)进行<font color="#e74f4c">并行、集成</font><font color="#000000">化</font>处理的系统方法和综合技术<br>
强调三个方面:产品设计开发期间<font color="#e74f4c">最快速度按质</font>完成,各项工作<font color="#e74f4c">问题协调解决</font>,适当的<font color="#e74f4c">信息系统工具</font><br>
目标:提高<font color="#e74f4c">质量</font>、降低<font color="#e74f4c">成本</font>、<font color="#e74f4c">缩短</font>产品开发<font color="#e74f4c">周期</font>和产品上市时间。<br>
<font color="#e74f4c">综合集成</font>法
<font color="#e74f4c">钱学森</font>等提出,从系统的本质出发可以把系统分为<font color="#e74f4c">简单系统</font>和<font color="#e74f4c">巨系统</font>两大类<br>
四原则:<font color="#e74f4c">整体论</font>、相互<font color="#e74f4c">联系</font>、<font color="#e74f4c">有序</font>性、【<font color="#e74f4c">动态</font>】<br>
主要性质:<font color="#e74f4c">开放</font>性、<font color="#e74f4c">复杂</font>性、<font color="#e74f4c">进化与涌现</font>性、<font color="#e74f4c">层次</font>性和<font color="#e74f4c">巨量</font>性。
<font color="#e74f4c">WSR系统</font>方法
是<font color="#e74f4c">懂物理</font>—<font color="#e74f4c">明事理</font>—<font color="#e74f4c">通人理</font>方法论的简称。<br>
具有<font color="#e74f4c">中国传统哲学</font>的思辨思想,是多种方法的综合统一,属于<font color="#e74f4c">定性与定量</font>分析综合集成的东方系统思想。<br>
工作过程可理解为:<font color="#000000">理解</font><font color="#e74f4c">意图</font>、<font color="#000000">制定</font><font color="#e74f4c">目标</font>、<font color="#000000">调查</font><font color="#e74f4c">分析</font>、<font color="#000000">构造</font><font color="#e74f4c">策略</font>、<font color="#000000">选择</font><font color="#e74f4c">方案</font>、<font color="#e74f4c">协调关系</font>和<font color="#e74f4c">实现构想</font> 7 步。<br>
基于<font color="#e74f4c">模型</font>的系统工程(MBSE)
建模方法的<font color="#e74f4c">形式化</font>应用
在<font color="#e74f4c">需求分析</font>阶段,产生<font color="#e74f4c">需求图</font>、<font color="#e74f4c">用例图</font>及<font color="#e74f4c">包图</font>
在<font color="#e74f4c">功能分析与分配</font>阶段,产生<font color="#e74f4c">顺序图</font>、<font color="#e74f4c">活动图</font>及<font color="#e74f4c">状态机</font>图
在<font color="#e74f4c">设计综合</font>阶段,产生<font color="#e74f4c">模块定义</font>图、<font color="#e74f4c">内部块</font>图及<font color="#e74f4c">参数</font>图等
信息系统
信息系统是由【计算机<font color="#e74f4c">软硬件</font>】、【<font color="#e74f4c">网络</font><font color="#000000">和通信设备</font>】、【<font color="#e74f4c">信息资源</font>】、【<font color="#e74f4c">用户和规章制度</font>】组成的以处理信息流为目的的人机一体化系统。<br>信息系统的功能有:<font color="#e74f4c">输入、存储、处理、输出</font><font color="#000000">和【</font><font color="#e74f4c">控制</font>】<br>
信息系统<font color="#e74f4c">发展阶段</font>:<font color="#e74f4c">初始</font>阶段、<font color="#e74f4c">传播</font>阶段、<font color="#e74f4c">控制</font>阶段、<font color="#e74f4c">集成</font>阶段、<font color="#e74f4c">数据管理</font>阶段和<font color="#e74f4c">成熟</font>阶段<br>
信息系统<font color="#e74f4c">生命周期</font>
<font color="#e74f4c">产生</font>阶段:提出想法,对<font color="#e74f4c">需求</font>进行调研和分析<br>
<font color="#e74f4c">开发</font>阶段:总体<font color="#e74f4c">规划</font>、系统<font color="#e74f4c">分析</font>、系统<font color="#e74f4c">设计</font>、系统<font color="#e74f4c">实现</font>、系统<font color="#e74f4c">验收</font><br>
<font color="#e74f4c">运行</font>阶段:<font color="#e74f4c">通过验收</font>、移交之后<br>
<font color="#e74f4c">消亡</font>阶段:<font color="#e74f4c">更新</font>改造、功能<font color="#e74f4c">扩展</font>、报废<font color="#e74f4c">重建</font><br>
信息系统<font color="#e74f4c">建设原则</font><br>
<font color="#e74f4c">高层人员</font>介入:如:CIO介入<br>
<font color="#e74f4c">用户参与开发</font>:用户确定范围、核心用户全程参与、用户深度参与<br>
<font color="#e74f4c">自顶向下规划</font>:以此减少信息不一致的现象<br>
<font color="#e74f4c">工程化</font>:引入软件工程<br>
其它原则:创新性原则、整体性原则、发展性原则、经济性原则<br>
信息系统<font color="#e74f4c">开发方法</font><br>
<font color="#e74f4c">原型</font>法:构造简易原型解决<font color="#e74f4c">需求不明确</font>问题<br>
按功能分<br>
<font color="#e74f4c">水平</font>原型:<font color="#e74f4c">行为</font>原型,用于<font color="#e74f4c">界面</font>。细化需求但<font color="#e74f4c">并未实现功能</font>。<br>
<font color="#e74f4c">垂直</font>原型:<font color="#e74f4c">结构化</font>原型,用于<font color="#e74f4c">复杂算法</font>的实现,<font color="#e74f4c">实现了部分功能</font><br>
按最终结果分
<font color="#e74f4c">抛弃</font>原型:<font color="#e74f4c">探索式</font>原型,解决需求<font color="#e74f4c">不确定性</font>、二义性、不完整性、含糊性等<br>
<font color="#e74f4c">演化</font>原型:逐步<font color="#e74f4c">演化为最终</font>系统,用于易于升级和优化的场合,适用于<font color="#e74f4c">Web项目</font><br>
<font color="#e74f4c">结构化</font>方法:<font color="#e74f4c">自顶向下</font>,逐步分解求精,<font color="#e74f4c">目标清晰</font>化、<font color="#e74f4c">不灵活</font><br>
<font color="#e74f4c">面向对象</font>方法:<font color="#e74f4c">自底向上</font>,阶段界限不明,<font color="#e74f4c">灵活应变更好复用</font>、<font color="#e74f4c">符合人类思维</font><br>
<font color="#e74f4c">面向服务</font>方法:面向对象基础上、<font color="#e74f4c">粗粒度松耦合</font>、<font color="#e74f4c">跨构件接口调用</font>、抽象级别(<font color="#e74f4c">操作</font>【低】-<font color="#e74f4c">服务</font>【中】-><font color="#e74f4c">业务流程</font>【高)),详见案例5<br>
<font color="#e74f4c">构件化</font>方法:解决复杂环境下软件的<font color="#e74f4c">规模与复杂性</font><br>
获取方式:<br>
从现有构件中获得符合要求的构件
通过遗留工程提取,
从市场上购买现成的商业构件
开发新的符合要求的构件
分类方式
<b><font color="#e74f4c">关键字</font>分类法:</b>将应用领域的概念按照从<font color="#e74f4c">抽象到具体</font>的顺序逐次分解为<font color="#e74f4c">树型</font>或<font color="#e74f4c">有向无回路图</font>结构,每个概念用一个描述性的关键字表示<br>
<b><font color="#e74f4c">刻面</font>分类法:</b>定义若干用于<font color="#e74f4c">刻画构件特征</font>的“刻面”,每个面包含若干概念,这些概念描述构件在刻面上的特征。刻面可以描述构件执行的功能、被操作的数据、构件应用的语境或其他特征<br>
<b><font color="#e74f4c">超文本</font>方法</b>:所有构件必须辅以<font color="#e74f4c">详尽</font>的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的<font color="#e74f4c">联想思维方式任意跳转</font>到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索<br>
检索方法
基于<font color="#e74f4c">关键字</font>的检索、<font color="#e74f4c">刻面</font>检索法、<font color="#e74f4c">超文本</font>检索法。
<font color="#e74f4c">敏捷</font>方法:<font color="#e74f4c">适应性、以人为本、迭代增量、小项目</font><font color="#000000">,详</font>见4.1.3 软件过程模型<br>
软件工程
软件的<font color="#e74f4c">生命周期</font>:<font color="#e74f4c">需求</font>分析、软件<font color="#e74f4c">设计</font>、软件<font color="#e74f4c">开发</font>、运行<font color="#e74f4c">维护</font>、【<font color="#e74f4c">淘汰</font>】<br>
软件<font color="#e74f4c">过程</font>模型(软件<font color="#e74f4c">生命周期</font>模型)<br>
瀑布模型(<font color="#e74f4c">结构</font>方法、<font color="#e74f4c">需求明确</font>)<br>
特点:<br>
严格区分阶段,每个阶段<font color="#e74f4c">因果关系紧密相连</font>;
只适合<font color="#e74f4c">需求明确</font>的项目<br>
缺陷:<font color="#e74f4c">需求难以一次确定</font>、<font color="#e74f4c">变更的代价高</font>、<font color="#e74f4c">结果难以预见</font>、各阶段工作<font color="#e74f4c">不能并行</font>。<br>
过程:<font color="#e74f4c">需求分析SRS,软件设计,【程序设计</font>】<font color="#e74f4c">,编码实现,单元测试,集成测试,系统测试,运行维护</font><br>
原型模型(<font color="#e74f4c">迭代</font>方法、<font color="#e74f4c">需求不明确</font>)<br>
特点:适合<font color="#e74f4c">需求不明确</font>的项目<br>
阶段:<font color="#e74f4c">原型开发</font>阶段、<font color="#e74f4c">目标软件开发</font>阶段<br>
分类
<font color="#e74f4c">抛弃型</font>原型:快速原型模型<br>
<font color="#e74f4c">演化型</font>原型:演化模型<br>
与其他模型结合:<br>
与<font color="#e74f4c">瀑布</font>结合为<font color="#e74f4c">螺旋</font>模型
<font color="#e74f4c">增量</font>模型
<font color="#e74f4c">敏捷</font>模型
过程:<br>
螺旋模型(<font color="#e74f4c">迭代</font>方法、<font color="#e74f4c">快速原型+瀑布</font>,强调<font color="#e74f4c">风险,大型软件</font><font color="#000000">开发</font>)<br>
考虑了<font color="#e74f4c">风险</font>问题
以<font color="#e74f4c">快速原型</font>为基础+<font color="#e74f4c">瀑布</font>模型<br>
支持<font color="#e74f4c">大型软件</font>开发,适用于面向<font color="#e74f4c">规格说明</font>、面向<font color="#e74f4c">过程</font>和面向<font color="#e74f4c">对象</font>的软件开发方法
过程:把整个软件开发流程分成<font color="#e74f4c">多个阶段</font>,每一个阶段都由<font color="#e74f4c">目标设定(决定目标、方案和限制)</font>、<font color="#e74f4c">风险分析(评价方案、识别风险、消除风险)</font>、<font color="#e74f4c">开发和有效性验证</font>、<font color="#e74f4c">评审</font> 4 部分组成。<br>
敏捷模型(<font color="#e74f4c">迭代</font>增量、<font color="#e74f4c">适应性、以人为本、小型项目</font>)<br>
特点:<font color="#e74f4c">适应性</font>的、<font color="#e74f4c">以人为本</font>、<font color="#e74f4c">增量选代</font>、适合<font color="#e74f4c">小型项目</font><br>
敏捷宣言
<font color="#e74f4c">个体和交互</font>胜过<font color="#e74f4c">过程和工具</font><br>
<font color="#e74f4c">可工作的软件</font>胜过大量的<font color="#e74f4c">文档</font>
<font color="#e74f4c">客户合作</font>胜过合同<font color="#e74f4c">谈判</font>
<font color="#e74f4c">响应变化</font>胜过<font color="#e74f4c">遵循计划</font>
敏捷方法
极限编程<font color="#e74f4c">XP</font>:高效、<font color="#e74f4c">低风险</font>、【<font color="#e74f4c">测试先行</font>】、<font color="#e74f4c">近螺旋式</font>的开发方法。<br>
4大价值观
沟通交流【<font color="#e74f4c">加强面对面沟通</font>】
简单朴素【<font color="#e74f4c">不过度设计</font>】
反馈【<font color="#e74f4c">及时反馈</font>】
勇气【<font color="#e74f4c">接受变更的勇气</font>】
水晶<font color="#e74f4c">Cockburn</font>:<span>提倡<font color="#e74f4c">机动性</font>,强调不同的项目采用<font color="#e74f4c">不同策略</font></span><br>
并列争球<font color="#e74f4c">SCRUM</font>:1到4周为一个<font color="#e74f4c">选代周期</font>,按照<font color="#e74f4c">需求优先级</font>实现,侧重于<font color="#e74f4c">项目管理</font><br>
该方法侧重于项目管理。Scrum包括一系列实践和预定义角色的过程骨架(是一种<font color="#e74f4c">流程</font>、<font color="#e74f4c">计划</font>、<font color="#e74f4c">模式</font>,用于有效率地开发软件)。<br>在Scrum 中,使用产品 <font color="#e74f4c">Backlog</font>来管理<font color="#e74f4c">产品的需求</font>,产品Backlog 是一个按照商业价值排序的需求列表。<br>根据 Backlog 的内容,将整个开发过程分为若干个短的迭代周期(<font color="#e74f4c">Sprint</font>),在 Sprint 中,Scrum 团队从产品Backlog 中挑选<font color="#e74f4c">最高优先级</font>的需求组成 <font color="#e74f4c">Sprint Backlog</font>。<br>在每个迭代结束时,Scrum 团队将递交潜在可交付的<font color="#e74f4c">产品增量</font>。当所有 Sprint 结束时,团队提交最终的软件产品<br>
特征驱动开发方法<font color="#e74f4c">FDD</font>:认为有效的软件开发需要3要素【<font color="#e74f4c">人</font>、<font color="#e74f4c">过程</font>、<font color="#e74f4c">技术</font>】,将【<font color="#e74f4c">开发人员分类</font>】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。<br>
开放式源码<span style="font-weight:normal;">:采用<font color="#e74f4c">虚拟团队</font>,开发成员<font color="#e74f4c">分布各地</font></span>
自适应<font color="#e74f4c">ASD</font>:采用<font color="#e74f4c">预测猜测</font>--<font color="#e74f4c">协作合作</font>--<font color="#e74f4c">学习</font>的方式进行开发<br>
动态系统开发方法<font color="#e74f4c">DSDM</font>:倡导以<font color="#e74f4c">业务</font>为核心<br>
统一<font color="#e74f4c">过程</font>模型(UP|<font color="#e74f4c">RUP</font>)(<font color="#e74f4c">迭代</font>增量、<font color="#e74f4c">用例驱动、以架构为中心、重量级</font>)<br>
RUP是一种<font color="#e74f4c">重量级</font>过程模型,属于<font color="#e74f4c">构件化开发</font>使用的软件过程模型。将<font color="#e74f4c">项目管理</font>、<font color="#e74f4c">业务建模</font>、<font color="#e74f4c">分析与设计</font>等统一起来,贯穿整个开发过程
特点:<font color="#e74f4c">用例驱动</font>、<font color="#e74f4c">以架构为核心</font>、<font color="#e74f4c">迭代和增量</font><br>
阶段、生命周期
<font color="#e74f4c">初始</font>:定义最终产品视图和业务模型;确定<font color="#e74f4c">系统范围</font><br>
<font color="#e74f4c">细化</font>:设计及确定<font color="#e74f4c">系统架构</font>;制定<font color="#e74f4c">工作计划及资源要求</font><br>
<font color="#e74f4c">构造</font>:开发剩余构件和应用程序功能,把这些构件<font color="#e74f4c">集成为产品</font>,并进行<font color="#e74f4c">详细测试</font><br>
<font color="#e74f4c">移交</font>:确保软件对最终用户是可用的,进行<font color="#e74f4c">β测试</font>,制作产品<font color="#e74f4c">发布版本</font><br>
每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经满足。如果评审结果令人满意,就可以允许项目进入下一个阶段。这样做的好处是在软件开发的<font color="#e74f4c">早期就可以对关键的、影响大</font>的风险进行处理。<br>
核心工作流:<font color="#e74f4c">业务建模</font>、<font color="#000000">需求、分析与设计、实现、测试、部署</font>、<font color="#e74f4c">配置与变更管理</font>、<font color="#e74f4c">项目管理</font>、【<font color="#e74f4c">环境</font>】<br>
“4+1”视图模型(被UML吸收采纳)<br>
<font color="#e74f4c">逻辑</font>视图:对应<font color="#e74f4c">最终用户</font>,主要支持<font color="#e74f4c">功能性需求</font>,即在为用户提供服务方面系统所应该提供的功能。逻辑视图常用<font color="#e74f4c">类图</font>、<font color="#e74f4c">对象</font>图、<font color="#e74f4c">状态</font>图、<font color="#e74f4c">协作</font>图表示。<br>
<font color="#e74f4c">实现</font>视图:又称为<font color="#e74f4c">开发</font>视图,对应<font color="#e74f4c">程序员</font>,关注软件开发环境下实际模块的组织,描述系统的各部分如何被组织为模块和组件即开发环境中软件的静态组织结构。该视图通常包含<font color="#e74f4c">包图</font>和<font color="#e74f4c">组件图</font>。<br>
<font color="#e74f4c">进程</font>视图:又叫<font color="#e74f4c">过程</font>视图,对应<font color="#e74f4c">系统集成人员</font>,考虑一些非功能性的需求,如<font color="#e74f4c">性能和可用性</font>,它可以解决并发性、分布性、系统完整性、容错性的问题。进程视图常用<font color="#e74f4c">活动图</font>表示。<br>
<font color="#e74f4c">部署</font>视图:又叫<font color="#e74f4c">物理</font>视图,对应<font color="#e74f4c">系统、网络工程师</font>。描述如何将前三个视图中所述的系统设计实现为一组现实世界的实体。展示了如何把<font color="#e74f4c">软件映射到硬件</font>上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通信等问题。
<font color="#e74f4c">用例</font>视图:所有其他视图都依靠用例视图(场景)来<font color="#e74f4c">指导</font>它们,这就是将模型称为“4+1”的原因。
其他模型
V模型(<font color="#e74f4c">测试并行</font>)<br>
特点<br>
<font color="#e74f4c">测试</font>贯穿于始终
测试分阶段,<font color="#e74f4c">测试计划提前</font>
过程
构件组装模型(<font color="#e74f4c">重用灵活</font>)<br>
<b>优点:易<font color="#e74f4c">扩展</font>、易<font color="#e74f4c">重用</font>、<font color="#e74f4c">降低成本</font>、安排任务更<font color="#e74f4c">灵活</font>。</b><br>
缺点:构件设计要求<font color="#e74f4c">经验丰富的架构师</font>、<font color="#e74f4c">设计不好的构件难重用</font>、强调重用<font color="#e74f4c">可能牺牲其它指标(如性能)</font>、<font color="#e74f4c">第三方构件质量难控制</font>,<br>
示例:<font color="#e74f4c">方仓医院</font>、<font color="#e74f4c">乐高</font>积木<br>
过程:需求分析和定义、设计构建组装、建立构件库、构建应用组件、测试和发布<br>
快速开发模型(<font color="#e74f4c">RAD</font>)(<font color="#e74f4c">构件+瀑布、不适合新技术</font>)<br>
定义:<br>
基于<font color="#e74f4c">瀑布</font>和<font color="#e74f4c">构件</font>模型而来的开发方法,主流程用瀑布,每个阶段用构件提升构建速度
<font color="#e74f4c">基于构件</font>的开发方法,<font color="#e74f4c">用户参与</font>、开发或复用构件、模块化要求高,<font color="#e74f4c">不适合新技术</font><br>
过程:<font color="#e74f4c">业务</font>建模、<font color="#e74f4c">数据</font>建模、<font color="#e74f4c">过程</font>建模、<font color="#e74f4c">应用生成</font>、<font color="#e74f4c">测试与交付</font><br>
变换模型:适用于<font color="#e74f4c">形式化</font>开发;<br>
智能模型:基于<font color="#e74f4c">规则</font>系统的<font color="#e74f4c">专家</font>系统<br>
喷泉模型:<font color="#e74f4c">面向对象</font>方法,复用性好,开发过程无间隙,节省时间;<br>
需求工程
需求工程概述<br>
需求工程的发展、内容和特点<br>
软件需求是指<font color="#000000">用户对系统</font>在<font color="#e74f4c">功能、行为、性能、设计约束</font>等方面的<font color="#000000">期望</font>
活动阶段<br>
需求<font color="#e74f4c">开发</font>:需求<font color="#e74f4c">获取</font>、需求<font color="#e74f4c">分析</font>、形成需求<font color="#e74f4c">规格</font>(形成<font color="#e74f4c">SRS</font>)、需求<font color="#e74f4c">确认与验证</font>【形成<font color="#e74f4c">需求基线</font>(经过评审的SRS)】<br>
需求<font color="#e74f4c">管理</font>(对<font color="#e74f4c">需求基线</font>的管理):<font color="#e74f4c">变更控制、版本控制、需求跟踪、需求状态跟踪</font><br>
需求获取<br>
分层<br>
<font color="#e74f4c">业务</font><font color="#000000">需求</font>(整体<font color="#e74f4c">全局</font>):反映了组织机构或客户对系统、产品高层次的<font color="#e74f4c">目标</font>要求<br>
<font color="#e74f4c">用户</font><font color="#000000">需求</font>(<font color="#e74f4c">用户</font>视角):描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望。通常采取用户访谈和问卷调查等方式,对用户使用的场景(scenarios)进行整理,从而建立用户需求。业务需求和用户需求构成了用户原始<font color="#e74f4c">需求文档</font>的内容<br>
<font color="#e74f4c">系统</font>需求(<font color="#e74f4c">软件需求</font>)<br>
<font color="#e74f4c">功能</font>需求:从系统操作的角度定义了开发人员必须实现的软件功能,来满足业务需求和用户需求。<br>
<font color="#e74f4c">非功能</font>需求(性能等)<br>
系统<font color="#e74f4c">约束</font>
项目管理维度QFD
基本需求<font color="#000000">(明示,常规需求)</font>
<font color="#e74f4c">期望</font>需求(<font color="#e74f4c">隐含</font>)<br>
<font color="#e74f4c">兴奋</font>需求(<font color="#e74f4c">多余</font>)
需求获取的基本步骤<br>
(1)开发高层的业务模型。<br>(2)定义项目范围和高层需求。<br>(3)识别用户角色和用户代表。<br>(4)获取具体的需求。<br>(5)确定目标系统的业务工作流。<br>(6)需求整理与总结。<br>
需求获取的方法
<b>用户面谈</b>:1对1-3,有<font color="#e74f4c">代表性的用户</font>,了解主观想法,交互好,<font color="#e74f4c">成本高</font>,要有<font color="#e74f4c">领域知识</font>支撑。<br>
需求专题讨论会(JRP)联合需求计划:高度组织的<font color="#e74f4c">群体会议</font>,各方参与,了解想法,<font color="#e74f4c">消除分歧</font>,<font color="#000000">交互好</font>,<font color="#e74f4c">成本高</font><br>
问卷调查:用户多,无法一一访谈,<font color="#e74f4c">成本低</font>。<br>
现场观察:针对较为<font color="#e74f4c">复杂的流程</font>和操作。<br>
原型化方法:通进<font color="#e74f4c">简易系统</font>方式解决早期<font color="#e74f4c">需求不确定</font>问题。<br>
头脑风暴法:一群人围绕<font color="#e74f4c">新业务</font>,<font color="#e74f4c">发散思维</font>,不产生新的观点。<br>
需求定义SRS
<font color="#e74f4c">严格定义</font>法
所有需求都<font color="#e74f4c">能够被预先定义</font><br>
开发人员与用户之间能够<font color="#e74f4c">准确而清晰</font>地交流
采用图形/文字可以<font color="#e74f4c">充分体现最终系统</font>
<font color="#e74f4c">原型</font>法
并非所有的需求都能在开发前被准确的说明
项目参加者之间通常都存在交流上的困难
需要实际的、可供用户参与的系统模型
有合适的系统开发环境
<font color="#e74f4c">反复</font>是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
需求确认与验证
需求<font color="#e74f4c">评审</font>:正式评审、非正式评审<br>
需求<font color="#e74f4c">测试</font>
用户确认签字
<font color="#e74f4c">验收标准</font>之一
需求变更
变更控制过程<br>
<font color="#e74f4c">问题分析</font>和<font color="#e74f4c">变更描述</font>
<font color="#e74f4c">变更分析</font><font color="#000000">和</font><font color="#e74f4c">成本计算</font>:<font color="#e74f4c">CCB来决策审批</font><br>
变更实现
变更控制委员会CCB由项目所涉及的多方成员共同组成,通常包括<font color="#e74f4c">用户</font>和<font color="#e74f4c">实施方</font>的决策人员。
CCB是<font color="#e74f4c">决策</font>机构,不是作业机构,通常 CCB 的工作是通过<font color="#e74f4c">评审</font>手段来决定项目<font color="#e74f4c">是否能变更</font>,但<font color="#e74f4c">不提出变更方案</font>。<br>过程及操作步骤为<font color="#e74f4c">制定决策</font>、<font color="#e74f4c">交流情况</font>、<font color="#e74f4c">重新协商约定</font>。
需求追踪<br>
双向跟踪及需求跟踪矩阵
<font color="#e74f4c">正向</font>跟踪:用户原始需求->软件需求->下游产品<br>
<font color="#e74f4c">逆向</font>跟踪:下游产品->软件需求->用户原始需求<br>
UC<font color="#e74f4c">需求跟踪矩阵</font>:纵列能看出做的多余功能,横列能看出未做的功能<br>
系统<font color="#e74f4c">分析与设计</font><br>
<font color="#e74f4c">结构化</font>方法(面向功能、数据流、DFD、模块)<br>
结构化方法又称为<font color="#e74f4c">面向功能</font>的软件开发方法或<font color="#e74f4c">面向数据流</font>的软件开发方法<br>
结构化<font color="#e74f4c">分析SA</font>(<font color="#e74f4c">DFD</font>和数据字典)
利用<font color="#e74f4c">图形</font>表达用户需求中的功能需求,使用的手段主要有<font color="#e74f4c">数据流图(Data Flow Diagram,DFD)</font>、<font color="#e74f4c">数据字典</font>、<font color="#e74f4c">结构化语言</font>、<font color="#e74f4c">判定表</font>以及<font color="#e74f4c">判定树</font>等。
DFD组成元素:<font color="#e74f4c">数据流</font>、<font color="#e74f4c">处理/加工</font>、<font color="#e74f4c">数据存储</font>和<font color="#e74f4c">外部项</font>。
DFD图规则:
<font color="#e74f4c">父图</font>数据流必须在子图中出现;<br>一个处理至少有一个输入流和一个输出流;<br>一个存储必定有流入和流出;<br>一个数据流至少有一端是处理端;<br>模型表达的信息是<font color="#e74f4c">全面</font>的、<font color="#e74f4c">完整</font>的、<font color="#e74f4c">正确</font>的和<font color="#e74f4c">一致</font>的。<br>
分析步骤为:<font color="#000000">明确</font><font color="#e74f4c">目标</font><font color="#000000">、确定系统</font><font color="#e74f4c">范围</font><font color="#000000">、建立</font><font color="#e74f4c">顶层DFD</font><font color="#000000">图、构建</font><font color="#e74f4c">第一层DFD</font><font color="#000000">分解图、</font><font color="#e74f4c">开发DFD层次结构图</font><font color="#000000">、</font><font color="#e74f4c">检查确认DFD</font><font color="#000000">图</font><br>
数据字典(Data Dictionary)是一种标记用户可以访问的<font color="#e74f4c">数据项</font>和<font color="#e74f4c">元数据</font>的目录,是对系统中使用的所有数据元素定义的集合,包括<font color="#e74f4c">数据项</font>、<font color="#e74f4c">数据结构</font>、<font color="#e74f4c">数据流</font>、<font color="#e74f4c">数据存储</font>和<font color="#e74f4c">处理过程</font>。
结构化<font color="#e74f4c">设计SD</font>(<font color="#e74f4c">模块</font><font color="#000000">(功能、逻辑、状态)</font>、概要设计(模块结构图)、详细设计(流程图、问题分析图))<br>
SD是一种<font color="#e74f4c">面向数据流</font>的设计方法,以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个<font color="#e74f4c">自顶向下</font>、<font color="#e74f4c">逐步求精</font>和<font color="#e74f4c">模块化</font>的过程<br>
软件结构化设计包括<font color="#e74f4c">架构</font><font color="#000000">设计</font>、<font color="#e74f4c">接口</font>设计、<font color="#e74f4c">数据</font>设计和<font color="#e74f4c">过程</font>设计等任务。<br>
<font color="#e74f4c">模块</font>是实现功能的基本单位,一般具有<font color="#e74f4c">功能</font>、<font color="#e74f4c">逻辑</font>和<font color="#e74f4c">状态</font>3个基本属性。
模块<font color="#e74f4c">独立性</font>原则(高内聚、低耦合、四要素)<br>
模块的四要素
<font color="#e74f4c">输入和输出</font>:模块的输入来源和输出去向都是<font color="#e74f4c">同一个调用者</font>,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。<br>
<font color="#e74f4c">处理功能</font>:指模块把<font color="#e74f4c">输入转换成输出所做的工作</font>。<br>
<font color="#e74f4c">内部数据</font>:模块本身<font color="#e74f4c">引用的数据</font>。<br>
<font color="#e74f4c">程序代码</font>:指用来<font color="#e74f4c">实现模块功能的程序</font>。<br>
<font color="#e74f4c">耦合</font>:模块<font color="#e74f4c">间</font>的关联<br>
<font color="#e74f4c">非直接</font>耦合<br>
两个模块之间<font color="#e74f4c">没有直接关系</font>,它们之间的联系完全是通过主模块的控制和调用来实现的<br>
<font color="#e74f4c">数据</font>耦合<br>
一组模块借助参数表传递<font color="#e74f4c">简单数据</font><br>
<font color="#e74f4c">标记</font>耦合<br>
一组模块通过参数表传递<font color="#e74f4c">记录信息(数据结构</font>)
<font color="#e74f4c">控制</font>耦合<br>
模块之间<font color="#e74f4c">传递的信息</font>中包含用于<font color="#e74f4c">控制模块内部逻辑</font>的信息
<font color="#e74f4c">外部</font>耦合<br>
一组模块都访问<font color="#000000">同一</font><font color="#e74f4c">全局简单变量</font>,而且不是通过参数表传递该全局变量的信息<br>
<font color="#e74f4c">公共</font>耦合<br>
多个模块都访问<font color="#000000">同一个</font><font color="#e74f4c">公共数据结构</font>
<font color="#e74f4c">内容</font>耦合
一个模块直接访问另一个模块的<font color="#e74f4c">内部数据</font>;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序<font color="#e74f4c">代码重叠;</font>一个模块有多个入口
<font color="#e74f4c">内聚</font>:<font color="#000000">模块</font><font color="#e74f4c">内</font>部件的联系程度<br>
<font color="#e74f4c">功能</font>内聚<br>
完成一个<font color="#e74f4c">单一功能</font>各个部分协同工作,缺一不可
<font color="#e74f4c">顺序</font>内聚<br>
处理元素相关,而且必须<font color="#e74f4c">顺序</font>执行
<font color="#e74f4c">通信</font>内聚<br>
所有处理元素集中在<font color="#e74f4c">一个数据结构</font>的区域上
<font color="#e74f4c">过程</font>内聚
处理元素相关,而且必须按<font color="#e74f4c">特定的次序</font>执行<br>
<font color="#e74f4c">时间</font>内聚(<font color="#e74f4c">瞬时</font>内聚)<br>
所包含的任务必须在<font color="#e74f4c">同一时间间隔内</font>执行<br>
<font color="#e74f4c">逻辑</font>内聚
完成<font color="#e74f4c">逻辑上相关</font>的一组任务<br>
<font color="#e74f4c">偶然</font>内聚(<font color="#e74f4c">巧合</font>内聚)<br>
完成一组<font color="#e74f4c">没有关系或松散关系</font>的任务
保持模块的<font color="#e74f4c">大小</font>适中
多扇入,少扇出<br>
<font color="#e74f4c">深度和宽度</font>均不宜过高:防止模块<font color="#e74f4c">过于复杂</font>,深度代表调用别的模块层次多、宽度代表调用别的模块数量多<br>
阶段
<b>没有原型设计</b>
<font color="#e74f4c">概要</font>设计【外部设计】:功能需求分配给软件模块,确定每个<font color="#e74f4c">模块</font>的<font color="#e74f4c">功能和调用关系</font>,形成<font color="#e74f4c">模块|系统结构图</font><br>
<font color="#e74f4c">详细</font>设计【内部设计】:为每个<font color="#e74f4c">具体任务</font>选择适当的<font color="#e74f4c">技术手段</font>和<font color="#e74f4c">处理方法,</font>详细设计的表示工具有<font color="#e74f4c">图形</font>工具、<font color="#e74f4c">表格</font>工具和<font color="#e74f4c">语言</font>工具。图形有业务流图、程序流程图、问题分析图(Problem AnalysisDiagram,PAD)、NS 流程图等。<br>
结构化<font color="#e74f4c">编程SP(顺序、分支、循环)</font><br>
SP通过<font color="#e74f4c">顺序</font>、<font color="#e74f4c">分支</font>和<font color="#e74f4c">循环</font>三种基本的控制结构可以构造出任何单入口单出口的程序。<br>
SP强调:<font color="#e74f4c">自顶向下</font>,<font color="#e74f4c">逐步细化</font>;<font color="#e74f4c">清晰第一,效率第二</font>;<font color="#e74f4c">书写规范,缩进格式</font>;<font color="#e74f4c">基本结构,组合而成</font>。
P原则:程序=(<font color="#e74f4c">算法</font>)+(<font color="#e74f4c">数据结构)</font>。两者分开设计,以<font color="#e74f4c">算法(函数或过程)</font>为主。
数据库设计(<font color="#e74f4c">E-R实体关系图</font>)
<font color="#e74f4c">面向对象</font>方法(对象类、结构、主题、属性、服务|方法;类、对象)<br>
面向对象方法的定义、内涵、过程和设计原则
面向对象<font color="#e74f4c">分析方法OOA(对象类、结构、主题、属性、服务|方法)</font><br>
5个层次:主题层、对象类层、结构层、属性层和服务层<br>
5个活动:标识对象类、标识结构、定义主题、定义属性和定义服务<br>
5个步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法
基本原则:抽象、封装、继承、分类、聚合、关联、<font color="#e74f4c">消息通信</font>、<font color="#e74f4c">粒度控制</font>和<font color="#e74f4c">行为分析</font><br>
面向对象<font color="#e74f4c">设计方法OOD</font>(边界<font color="#e74f4c">类</font>、控制类、实体类)<br>
类封装了<font color="#e74f4c">信息</font>和<font color="#e74f4c">行为</font>,是具有相同<font color="#e74f4c">属性</font>、<font color="#e74f4c">方法</font>和<font color="#e74f4c">关系</font>的对象集合的总称
类的类型
<font color="#e74f4c">边界</font>类:跟<font color="#e74f4c">外界</font>打交道<br>
<font color="#e74f4c">人机</font>交互:用户<font color="#e74f4c">界面</font><br>
黄金三法则
置于<font color="#e74f4c">用户控制之下</font><br>
以<font color="#e74f4c">不强迫</font>用户进入不必要的或不希望的动作的方式来定义交互方式;<br>提供<font color="#e74f4c">灵活的交互</font>;<br>允许用户交互<font color="#e74f4c">可以被中断和撤销</font>;<br>当技能级别增加时可以使交互流水化并允许定制交互;<br>使用户<font color="#e74f4c">隔离内部技术细节</font>;<br>设计应允许用户和出现在屏幕上的对象直接交互;
减少用户的记忆负担<br>
减少对短期记忆的要求<br>建立有意义的<font color="#e74f4c">缺省</font><br>定义直觉性的<font color="#e74f4c">捷径</font><br>界面的视觉布局应该基于<font color="#e74f4c">真实世界的隐喻</font><br>以<font color="#e74f4c">不断进展</font>的方式揭示信息<br>
保持<font color="#e74f4c">界面的一致性</font>
允许用户将当前任务放入有意义的语境<br>在应用系列内保持<font color="#e74f4c">一致性</font><br>如过去的交互模型已建立起了用户期望,除非有迫不得已的理由不要改变它<br>
<font color="#e74f4c">机器</font>:<font color="#e74f4c">API</font><br>
例:显示屏、窗体、打印机接口、通信协议、对话框、菜单、购物车、报表、二维码
<font color="#e74f4c">控制</font>类:<font color="#e74f4c">调用实体类,进行演算得到结果给边界类</font><br>
应用逻辑、业务逻辑、实体访问逻辑
例如:身份验证器<br>
<font color="#e74f4c">实体</font>类
对接<font color="#e74f4c">数据库</font>,实体和关系的映射
<b>基本过程</b>
面向对象<font color="#e74f4c">程序设计OOP</font>(<font color="#e74f4c">对象</font>,设计模式、封装继承多态)<br>
设计原则
<font color="#e74f4c">单一职责</font>原则:设计<font color="#e74f4c">目的单一</font>的类,只完成一个职能,关系简单,使系统达到<font color="#e74f4c">高内聚低耦合</font><br>
<font color="#e74f4c">开闭</font>原则:对<font color="#e74f4c">扩展开放</font>,对<font color="#e74f4c">修改封闭</font>,防止破坏原有代码的功能<br>
<font color="#e74f4c">李氏(Liskov)替换</font>原则:<font color="#e74f4c">子类可以替换父类</font>,泛华关系,子类<font color="#e74f4c">不能重写</font>父类的方法<br>
<font color="#e74f4c">依赖倒置</font>原则:要依赖于<font color="#e74f4c">抽象</font>,而不是具体实现,针对<font color="#e74f4c">接口</font>编程,不要针对实现编程,防止<font color="#e74f4c">过度耦合,灵活性、可扩展性</font><font color="#000000">都会更好</font><br>
<font color="#e74f4c">接口隔离</font>原则:使用<font color="#e74f4c">多个专门的接口</font>比使用单一的总接口要好<br>
<font color="#e74f4c">组合重用</font>原则:要尽量<font color="#e74f4c">使用组合</font>,而不是继承关系达到重用目的,防止继承的<font color="#e74f4c">紧耦合</font><br>
<b><font color="#e74f4c">迪米特</font>(Demeter)原则(<font color="#e74f4c">最少知识</font>原则):一个对象应当对其他对象有<font color="#e74f4c">尽可能少的了解</font><font color="#000000">,</font><font color="#e74f4c">信息隐蔽</font><font color="#000000">原则</font></b><br>
软件设计模式
<b>创建型</b>:单抽原件厂,用来<font color="#e74f4c">创建对象</font><br>
单例模式:Singleton、每次只实例化一个对象(唯一实例)<br>
保证一个类只有一个实例,并提供一个访问它的全局访问点
抽象工厂模式:Abstract Factory、抽象接口,生产成系列对象<br>
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类
原型模式:Prototype、复用、拷贝原型<br>
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象
建造者模式:Builder、类与构造分离,复杂对象构造<br>
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
工厂方法模式:Factory Method、子类实例化对象,动态生产对象<br>
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟
<b>结构型</b>:外侨组员戴配饰,处理<font color="#e74f4c">类或对象的组合</font><br>
外观模式:Fagade、对外统一接口<br>
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用
桥接模式:Bridge、<font color="#e74f4c">抽象实现分离</font>,继承<br>
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化
组合模式:Composite、部分与整体的关系、树形目录结构<br>
将对象组合成树型结构以表示“整体·部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
享元模式:Flyweight、细粒度复用共享,汉字编码<br>
提供支持大量细粒度对象共享的有效方法
代理模式:Proxy、代理控制、快捷方式<br>
为其他对象提供一种代理以控制这个对象的访问
适配器模式:Adapter、接口转换、兼容<br>
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作
装饰器模式:Decorator、动态附加职责<br>
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
<b>行为型</b>:观摩对策、责令解放、戒忘台,描述类与对象之间怎样交互、怎样<font color="#e74f4c">分配职责</font><br>
观察者模式:Observer、通知、自动更新,联动<br>
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
模板方法:Template Method、算法结构不变,子类定义步骤、框架<br>
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定 义算法的某些特定步骤
迭代模式:lterator、<font color="#e74f4c">顺序访问</font>、<font color="#e74f4c">数据集</font><br>
提供一种方法来顺序访问一个聚合对象中的各个元素
策略模式:Strategy,算法替换、多方案切换<br>
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化
责任链模式:Chain of Responsi bility,传递请求、职责、链接<br>
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求
命令模式:Command,参数化、日志记录、可撤销<br>
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,
解释器模式:Interpreter,文法、解释、虚拟机<br>
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器根据文法表示来解释语言中的句子<br>
访问者模式:Visitor,类不变、新操作,<font color="#e74f4c">数据与操作分离</font><br>
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作
中介者模式:Mediator,不直接引用<br>
用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对 象间的交互
备忘录模式:Memento,保存、恢复、游戏存档<br>
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态
状态模式:State,状态变成类
允许一个对象在其内部状态改变时改变它的行为
OOP以<font color="#e74f4c">对象</font>为核心,该方法认为程序由一系列对象组成。<br>
基本特点有:<font color="#e74f4c">封装</font>、<font color="#e74f4c">继承</font>和<font color="#e74f4c">多态</font><br>
封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作组装到一起。
继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。继承可以分为4类,分别为<font color="#e74f4c">取代</font>继承、<font color="#e74f4c">包含</font>继承、<font color="#e74f4c">受限继</font>承<br>和<font color="#e74f4c">特化</font>继承。
多态指同一操作作用于不同的对象,可以产生不同的结果。
数据持久化与数据库(SQL、JDBC和JDO)<br>
永久保存对象的状态,需要进行对象的<font color="#e74f4c">持久化</font>(Persistence),把内存中的对象保存到数据库或可永久保存的存储设备中。
在多层软件设计和开发中采用持久层(Persistence Layer)专注于实现数据持久化,将对象持久化到关系数据库中,需要进行对象/关系的映射(Object/Relation Mapping,<font color="#e74f4c">ORM</font>)。目前主流的持久化技术框架包括 Hibernate、iBatis/Mybatis和 JDO 等
其他设计方法
构件与<font color="#e74f4c">软件重用</font>
软件重用是使用<font color="#e74f4c">已有软件</font>产品来开发新的软件系统的过程,分为<font color="#e74f4c">水平</font>式重用(标准<font color="#e74f4c">函数库</font>)和<font color="#e74f4c">垂直</font>式重用(<font color="#e74f4c">区块链、域分析</font>)两种类型<br>
逆向工程
<b>相关概念</b>
<b>(1)重构/重组(Restructuring)</b>。重构是指在【<font color="#e74f4c">同一抽象级别</font>】上【<font color="#e74f4c">转换</font>系统描述形式】
(<b>2)设计恢复(Design recovery)</b>。设计恢复是指借助<font color="#e74f4c">工具</font>从已有程序中抽象出有关<font color="#e74f4c">数据设计、总体结构设计和过程设计</font>等方面的信息。<font color="#e74f4c">逆向工程得出的设计是设计恢复</font>,但不一定能够抽象还原到原设计。
<b>(3)逆向工程(Reverse engineering):</b>逆向工程是<font color="#e74f4c">分析程序</font>,力图在比源代码<font color="#e74f4c">更高</font>抽象层次上建立<font color="#e74f4c">程序的表示过程</font>,逆向工程是<font color="#e74f4c">设计的恢复过程</font>。<br>
<b>(4)正向工程(Forward engineering)</b>。正向工程是指不仅从现有系统中恢复设计信息且使用该信息去<font color="#e74f4c">改变或重构现有系统</font>,以<font color="#e74f4c">改善其整体质量。</font><br>
<b>(5)再工程/重构工程(Re-engineering)</b>。再工程是对<font color="#e74f4c">现有系统的重新开发过程</font>,包括<font color="#e74f4c">逆向工程、新需求的考虑过程和正向工程</font>三个步骤。
过程
现有工程
再/重构工程<br>
逆向工程
实现级:包括程序的<font color="#e74f4c">抽象语法树、符号表、过程</font>的设计表示<br>
结构级:包括反映<font color="#e74f4c">程序分量各部分之间</font>相互依赖关系的信息,例如<font color="#e74f4c">调用图、结构图、程序和数据结构</font>
功能级:包括反映<font color="#e74f4c">程序段功能</font>及<font color="#e74f4c">程序段之间</font>关系的信息,例如<font color="#e74f4c">数据和控制流模型</font>
领域级:包括反映程序分量或程序诸<font color="#e74f4c">实体与应用领域</font>概念之间对应关系的信息,例如<font color="#e74f4c">实体关系模型</font>
新需求
正向工程
新系统
<font color="#e74f4c">形式化</font>方法:净室软件工程<br>
<b><font color="#e74f4c">净室</font>软件工程(<font color="#e74f4c">盒子结构规约</font>、<font color="#e74f4c">形式化</font>方法</b>、<b><font color="#e74f4c">正确</font>性、函数、抽样)</b><br>
使用<font color="#e74f4c">盒子结构规约</font>(或<font color="#e74f4c">形式化方法</font>)进行分析和设计建模,并且强调将<font color="#e74f4c">正确性验证,而不是测试</font>,作为发现和消除错误的主要机制。
理论基础:<font color="#e74f4c">函数</font>和<font color="#e74f4c">抽样</font>理论<br>
缺点:<font color="#e74f4c">太理想化</font>、<font color="#e74f4c">忽视测试</font>、<font color="#e74f4c">传统软件工程的弊端</font><br>
技术手段
统计过程控制下的增量式开发:<font color="#e74f4c">控制迭代</font><br>
基于<font color="#e74f4c">函数</font>的规范和设计
<font color="#e74f4c">行为</font>视图(<font color="#e74f4c">黑</font>盒)<br>
<font color="#e74f4c">有限状态机</font>视图(<font color="#e74f4c">状态</font>盒)<br>
<font color="#e74f4c">过程</font>视图(<font color="#e74f4c">明盒</font>)
正确性验证:净室工程的核心,使用<font color="#e74f4c">正确性验证</font>替代<font color="#e74f4c">测试</font><br>
统计测试和软件认证:使用<font color="#e74f4c">统计学</font>原理,总体太大时必须采用<font color="#e74f4c">抽样方法</font><br>
基于<font color="#e74f4c">构件</font>的软件工程(<font color="#e74f4c">CBSE</font>、<font color="#e74f4c">分布对象</font>、<font color="#e74f4c">复用</font>)<br>
CBSE的定义、作用和特点
定义:是一种基于<font color="#e74f4c">分布对象</font>技术、强调通过可复用构件设计与构造软件系统的软件<font color="#e74f4c">复用</font>途径。<br>
构件特征<br>
<font color="#e74f4c">可组装</font>性:所有<font color="#e74f4c">外部交互</font>必须通过<font color="#e74f4c">公开定义的接口</font>进行。<br>
<font color="#e74f4c">可部署</font>性:必须能作为一个<font color="#e74f4c">独立实体</font>在提供其构件模型实现的构件平台上<font color="#e74f4c">运行</font><br>
<font color="#e74f4c">文档</font>化:构件必须是<font color="#e74f4c">完全文档化</font>的。<br>
<font color="#e74f4c">独立</font>性:构件应该是<font color="#e74f4c">独立的</font>,如确实需要其他构件提供服务,则应<font color="#e74f4c">显示声明</font><br>
<font color="#e74f4c">标准</font>化:符合<font color="#e74f4c">某种标准化</font>的构件模型。<br>
构件和构件模型
构件模型定义了<font color="#e74f4c">构件实现</font>、<font color="#e74f4c">文档化</font>以及<font color="#e74f4c">开发的标准</font>。目前主流的构件模型是<font color="#e74f4c">Web Services</font>模型、Sun 公司的 <font color="#e74f4c">EJB </font>模型和微软的<font color="#e74f4c">.NET</font> 模型。
构建模型要素:<font color="#e74f4c">接口</font>、<font color="#e74f4c">使用信息</font>和<font color="#e74f4c">部署信息</font>。<br>
构件模型提供了一组被构件使用的通用服务,包括<font color="#e74f4c">平台</font>服务和<font color="#e74f4c">支持</font>服务。<br>
<font color="#e74f4c">容器</font>是构件模型基础设施,是支持服务的一个实现加上一个接口定义,构件必须提供该接口定义以便和容器整合在一起。
CBSE 过程
支持基于构件组装的软件开发过程主要包括:<br>(1)系统需求概览。<br>(2)识别候选构件。<br>(3)根据发现的构件修改需求。<br>(4)体系结构设计。<br>(5)构件定制与适配。<br>(6)组装构件,创建系统。<br>
CBSE 过程与传统的软件开发过程的不同点:<br>(1)早期需要完整的需求,以便尽可能多地识别出可复用的构件。<br>(2)早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE。<br>(3)架构设计完成后,可能需要修改构件以适合功能和架构的需求。<br>(4)开发过程就是组装构件的过程,有时需要开发适配器。<br>(5)CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围
构件组装
<font color="#e74f4c">顺序</font>组装:按<font color="#e74f4c">顺序调用</font>己经在在的构件,可以用两个已经存在的构件来创造一个新的构件<br>
<font color="#e74f4c">层次</font>组装:被调用构件的“提供”接口必须和调用构件的“请求”<font color="#e74f4c">接口兼容</font>。<br>
<font color="#e74f4c">叠加</font>组装:<font color="#e74f4c">多个构件合并形成新构件</font>,新构件整合原构件的功能,对外<font color="#e74f4c">提供新的接口</font><br>
构件组装可能面临接口不兼容的问题,常见的有<font color="#e74f4c">参数</font><font color="#000000">不兼容</font>、<font color="#e74f4c">操作</font><font color="#000000">不兼容</font>和<font color="#e74f4c">操作不完备</font> 3 种。这时需要编写<font color="#e74f4c">适配器构件</font>来解决<br>不兼容的问题。
数据库设计
数据模型三要素:数据结构、数据操作、数据约束(实体、参照、用户定义完整性)<br>
数据库系统的<font color="#e74f4c">体系结构</font>
基本理论:函数依赖、平凡依赖、非平凡依赖、完全依赖、部分依赖、传递依赖<br>
设计范式:1NF(非主属性部分依赖主码)、1NF(非主属性完全依赖主码)、1NF(非主属性不传递依赖主码)、BCNF(属性不传递依赖候选码)<br>
数据库设计:需求分析(SA)、概念结构设计(选取局部应用、逐一分ER图、合并ER图)、逻辑结构设计(数据模型、ER转换到数据模型、确定完整性约束、用户视图)、物理设计(数据分布、存储结构、访问接口)、实施(创建数据库、载入数据、试运行、评估)、运维(性能监控改善、故障恢复、数据库重构或重组)<br>
用户访问数据库的标准接口:OCI、嵌入SQL、ODBC、ORM<br>
NoSOL的四层框架:数据【<font color="#e74f4c">持久</font>层】、【数据<font color="#e74f4c">分布</font>】层、数据【<font color="#e74f4c">逻辑模型</font>层】和【<font color="#e74f4c">接口</font>层】<br>
分布式数据库
特性:共享性、自治性、可用性、分布性<br>
分布透明性:分片透明性、位置透明性、局部数据模型透明性<br>
数据库优化
集中数据库优化:冗余列、派生列、表重组、水平分表、垂直分表<br>
分布式数据库优化:主从复制、读写分离、分表、分库<br>
系统架构(体系结构)设计<br>
软件体系结构包括:软件的<font color="#e74f4c">构件</font>、构件的<font color="#e74f4c">外部可见属性</font>、构件间的<font color="#e74f4c">关系</font><br>
软件<font color="#e74f4c">架构设计</font>包含:【<font color="#e74f4c">数据库</font><font color="#000000">设计</font>】<font color="#000000">和</font>【<font color="#e74f4c">软件结构</font><font color="#000000">设计</font>】<font color="#000000">(</font>关注软件<font color="#e74f4c">构件</font>的<font color="#e74f4c">结构</font>、<font color="#e74f4c">属性</font>和<font color="#e74f4c">交互作用</font>,并通过<font color="#e74f4c">多种视图全面描述</font><font color="#000000">)</font><br>
软件架构的重要性<br>
(1)架构设计能够满足系统的<font color="#e74f4c">品质</font>。<br>(2)架构设计使<font color="#e74f4c">受益人</font>达成<font color="#e74f4c">一致的目标</font>。<br>(3)架构设计能够【支持<font color="#e74f4c">计划编制</font>过程】。<br>(4)架构设计对<font color="#e74f4c">系统开发的指导</font>性。<br>(5)架构设计能够有效地<font color="#e74f4c">管理复杂性</font>。<br>(6)架构设计为<font color="#e74f4c">复用</font>奠定了基础。<br>(7)架构设计能够<font color="#e74f4c">降低维护</font>费用。<br>(8)架构设计能够【支持<font color="#e74f4c">冲突分析</font>】<br>
<font color="#000000">软件架构设计</font>的<font color="#e74f4c">生命周期</font>
<font color="#e74f4c">需求</font>阶段(需求模型):需求模型(空间)到架构模型(解空间)的<font color="#e74f4c">转换</font>和保证<font color="#e74f4c">可追溯性</font><br>
<font color="#e74f4c">设计</font>阶段(架构模型,构建、连接子)<br>
架构模型的<font color="#e74f4c">描述</font>:<font color="#e74f4c">构件</font>和<font color="#e74f4c">连接子</font>的建模,<font color="#e74f4c">ADL</font>(构件间<font color="#e74f4c">互联</font>机制),模型(<font color="#e74f4c">4+1模型</font>)多视图(<font color="#e74f4c">UML视图</font>)<br>
架构模型的【<font color="#e74f4c">设计与分析</font>】<font color="#e74f4c">方法</font>
架构【<font color="#e74f4c">设计经验的总结与复用</font>】<br>
<font color="#e74f4c">开发</font>阶段(开发过程、实现途径、测试技术)
研究内容:基于SA的<font color="#e74f4c">开发过程支持</font>、寻求从<font color="#e74f4c">SA向实现过渡的途径</font>、研究基于SA的<font color="#e74f4c">测试技术</font><br>
缩小架构设计与底层实现差距的手段:<font color="#e74f4c">模型转换</font><font color="#000000">技术</font>、<font color="#e74f4c">封装底层的实现细节</font>、在<font color="#e74f4c">SA模型中引入实现阶段的概念</font>(如用程序设计语言描述)。
<font color="#e74f4c">构件组装</font>阶段(连接子实现)<br>
对SA设计模型中规约的<font color="#e74f4c">连接子(互联)的实现提供支持</font><br>
组装过程中,如何<font color="#e74f4c">检测并消除</font>体系<font color="#e74f4c">结构失配</font>问题(<font color="#e74f4c">构件</font>本身的失配;<font color="#e74f4c">连接子</font>的失配;<font color="#e74f4c">部分和整体</font>的失配<br>
<font color="#e74f4c">部署</font>阶段(软硬件模型)<br>
提供高层的<font color="#e74f4c">体系结构视图</font>描述部署阶段的<font color="#e74f4c">软硬件模型</font>
基于软件架构模型可以分析部署方案的<font color="#e74f4c">质量</font>属性,从而选择合理的部署方案
<font color="#e74f4c">后开发</font>阶段
<font color="#e74f4c">动态</font>软件体系结构
体系结构<font color="#e74f4c">恢复与重建</font>:<font color="#e74f4c">手工</font>体系结构重建、【<font color="#e74f4c">工具</font>】<font color="#e74f4c">支持的手工</font>重建、通过【<font color="#e74f4c">查询语言</font>】<font color="#e74f4c">来</font>【<font color="#e74f4c">自动</font>】<font color="#e74f4c">建立</font>【<font color="#e74f4c">聚集</font>】、使用其他技术(如<font color="#e74f4c">数据挖掘</font>)<br>
基于架构的软件开发方法(<font color="#e74f4c">ABSD</font>)
ABSD方法是<font color="#e74f4c">架构</font>驱动,即强调由【<font color="#e74f4c">商业</font>】、【<font color="#e74f4c">质量</font>】和【<font color="#e74f4c">功能</font>】<font color="#e74f4c">需求</font>的组合驱动架构设计。<br>
ABSD是一个自顶向下,递归细化的软件开发方法,软件系统的体系结构通过该方法得到细化,直到能产生【<font color="#e74f4c">软件构件</font>】和【<font color="#e74f4c">类</font>】
ABSD方法有三个基础:<font color="#e74f4c">功能的分解</font>;选择<font color="#e74f4c">架构风格</font>实现质量和商业需求;<font color="#e74f4c">软件模板</font>的使用<br>
体系结构<font color="#e74f4c">需求</font>
<font color="#e74f4c">需求获取</font>:体系结构需求的获取一般来自三个方面:<font color="#e74f4c">质量目标</font>、<font color="#e74f4c">系统</font>的<font color="#000000">商业目标</font>和<font color="#e74f4c">系统开发人员</font>的<font color="#e74f4c">商业目标</font>。<br>
<font color="#e74f4c">标识构件</font>:标识构件分三步完成:生成<font color="#e74f4c">类图</font>→对<font color="#e74f4c">类进行分组</font>→把<font color="#e74f4c">类打包成构件</font>。<br>
<font color="#e74f4c">需求评审</font>:审查重点包括需求是否真实反映了<font color="#e74f4c">用户的要求</font>、<font color="#e74f4c">类的分组</font>是否合理、<font color="#e74f4c">构件合并</font>是否合理等<br>
体系结构<font color="#e74f4c">设计</font>
<font color="#e74f4c">提出</font>软件体系结构<font color="#e74f4c">模型 </font>→ <font color="#e74f4c">映射构件 </font>→ 分析<font color="#e74f4c">构件相互作用 </font>→ <font color="#e74f4c">产生</font>体系结构设计<font color="#e74f4c">评审</font><br>设计评审必须邀请独立于系统开发的<font color="#e74f4c">外部人员</font>。<br>
体系结构<font color="#e74f4c">文档化</font><br>
主要输出结果是 体系结构<font color="#e74f4c">规格说明 </font>和 测试体系结构需求的<font color="#e74f4c">质量设计说明书</font>。
文档的<font color="#e74f4c">完整性</font>和<font color="#e74f4c">质量</font>是软件架构成功的关键因素。<br>关于文档的三大注意事项:文档要从<font color="#e74f4c">使用者的角度</font>进行编写;必须分发给<font color="#e74f4c">所有与系统有关</font>的开发人员;必须保证开发者手上的文档是<font color="#e74f4c">最新的</font><br>
体系结构<font color="#e74f4c">复审</font>
一个主版本的软件体系结构分析之后,要安排一次由<font color="#e74f4c">外部人员</font>(<font color="#e74f4c">用户</font>代表和<font color="#e74f4c">领域</font>专家)参加的复审。<br>复审的目的是:<font color="#e74f4c">标识潜在的风险</font>,及早发现体系结构设计中的缺陷和错误,必要时,可搭建一个可运行的<font color="#e74f4c">最小化系统</font>用于评估和测试体系结构是否满足需要<br>
体系结构<font color="#e74f4c">实现</font>
以<font color="#e74f4c">复审后</font>的文档化<font color="#e74f4c">体系结构说明书</font>为基础的,体系结构说明书中定义了系统中<font color="#e74f4c">构件与构件之间的关系</font>
过程:<font color="#e74f4c">分析与设计</font>→构件<font color="#e74f4c">实现</font>→构件<font color="#e74f4c">组装</font>→<font color="#e74f4c">系统测试</font>(<font color="#e74f4c">单个</font>构件的<font color="#e74f4c">功能</font>性测试、被<font color="#e74f4c">组装应用</font>的<font color="#e74f4c">整体功能</font>、<font color="#e74f4c">性能</font>测试)<br>
体系结构的<font color="#e74f4c">演化</font>
使用<font color="#e74f4c">系统演化步骤</font>去修改应用,以满足<font color="#e74f4c">新的需求</font>。<br>
过程:需求<font color="#e74f4c">变化归类</font>→体系结构<font color="#e74f4c">演化计划</font>→<font color="#e74f4c">构件变动</font>→<font color="#e74f4c">更新构件的相互作用</font>→构件<font color="#e74f4c">组装与测试</font>→<font color="#e74f4c">技术评审</font>→<font color="#e74f4c">演化后的体系结构</font><br>
软件架构风格(数据流、调用返回、以数据为中心、虚拟机、独立构件、C2)<br>
体系结构风格反映了领域中众多系统所共有的【<font color="#e74f4c">结构</font>】和【<font color="#e74f4c">语义</font>】特性,并指导<font color="#e74f4c">如何</font>将各个模块和子系统有效地<font color="#e74f4c">组织</font>成一个<font color="#e74f4c">完整的系统</font>
体系结构风格定义一个系统家族,包括【架构<font color="#e74f4c">定义</font>】、【架构<font color="#e74f4c">词汇表</font>(<font color="#e74f4c">构件</font>和<font color="#e74f4c">连接件</font>)】和【架构<font color="#e74f4c">约束</font>(构件和连接件的<font color="#e74f4c">组合方式</font>)】<br>
<font color="#e74f4c">数据流</font>风格
<font color="#e74f4c">批处理</font>
<font color="#e74f4c">无需用户交互,</font>每个处理步骤是一个<font color="#e74f4c">独立的程序</font>,每一步必须在<font color="#e74f4c">前一步结束后才能开始</font>,且<font color="#000000">数据</font>以【<font color="#e74f4c">整体</font>】的方式传递<br>
应用场景:<font color="#e74f4c">传统编译器</font><br>
<font color="#e74f4c">管道-过滤器</font>
弱用户交互,把系统分为几个<font color="#e74f4c">序贯地处理步骤</font>,每个步骤之间通过<font color="#e74f4c">数据流</font>连接,一个步骤的输出是另一个步骤的输入<br>
传统编译器
<font color="#e74f4c">调用/返回</font>风格(分而治之) <br>
定义:是一种<font color="#e74f4c">分而治之</font>的策略,主要思想是将一个复杂的大系统分解为<font color="#e74f4c">若干个子系统</font>,降低复杂度,增加可修改性<br>
<font color="#e74f4c">主程序/子程序</font><font color="#000000">风</font>格<br>
主程序<font color="#e74f4c">显示调用</font>子程序,采用【<font color="#e74f4c">单线程</font>】控制,构件即为<font color="#e74f4c">主程序和子程序</font>。<br>
<font color="#e74f4c">面向对象</font>风格
构件是<font color="#e74f4c">对象</font>,即抽象数据类型的实例,通过【<font color="#e74f4c">函数和过程的调用</font>】来交互,可以通过<font color="#e74f4c">减少功能调用层次</font>提高系统性能<br>
<font color="#e74f4c">层次型</font>风格
每一层为<font color="#e74f4c">上层服务</font>,并为<font color="#e74f4c">下层提供接口</font>。仅相邻层间具有<font color="#e74f4c">层接口,</font>层次越多效率越差<br>
物联网
<font color="#e74f4c">客户端/服务器</font>风格(C/S)<br>
二层 C/S 模式
组成:<font color="#e74f4c">客户应用程序</font>(前台:完成与用户交互任务)、<font color="#e74f4c">网络</font>、<font color="#e74f4c">数据库</font>服务器(后台:负责数据管理)<br>优点:客户应用和服务器构件分别运行在不同的计算机上。<br>缺点:开发<font color="#e74f4c">成本高</font>,客户端<font color="#e74f4c">设计复杂</font>,信息内容和形式单一,<font color="#e74f4c">不利于推广</font>,软件<font color="#e74f4c">移植困难</font>,软件<font color="#e74f4c">维护和升级困难</font>。<br>
三层 C/S (瘦客户端)<br>
<font color="#e74f4c">表示</font>层:用户接口与应用逻辑层的交互,不影响业务逻辑,通常使用<font color="#e74f4c">图形用户界面</font>。<br><font color="#e74f4c">功能</font>层:实现具体的<font color="#e74f4c">业务处理逻辑</font>。<br><font color="#e74f4c">数据</font>层:<font color="#e74f4c">数据库</font>管理系统。
<font color="#e74f4c">浏览器/服务器</font>风格(B/S)
其三层结构分别为:<font color="#e74f4c">浏览器</font>;<font color="#e74f4c">Web</font><font color="#000000">服务器</font>;<font color="#e74f4c">数据库</font>服务器。
相比于C/S的不足之处:<font color="#e74f4c">动态页面</font>的支持能力弱、系统<font color="#e74f4c">拓展能力</font>差、<font color="#e74f4c">安全性</font>难以控制、<font color="#e74f4c">响应速度</font>不足、数据<font color="#e74f4c">交互性</font>不强。
<font color="#e74f4c">以数据为中心</font>的风格
<font color="#e74f4c">仓库</font>风格
以<font color="#e74f4c">数据</font>为中心,存储和维护数据的中心场所。由<font color="#e74f4c">中央数据结构</font>(说明当前数据<font color="#e74f4c">状态</font>)和<font color="#e74f4c">一组独立构件</font>(对中央数据进行<font color="#e74f4c">操作</font>)组成<br>
<font color="#e74f4c">黑板</font>风格(问题求解)<br>
是一种<font color="#e74f4c">问题求解</font>模型,是【<font color="#e74f4c">组织推理步骤</font>】、【<font color="#e74f4c">控制状态数据</font>】和【<font color="#e74f4c">问题求解之领域知识</font>】的概念框架。<br>可通过选取<font color="#e74f4c">各种</font>【<font color="#e74f4c">黑板</font>】、【<font color="#e74f4c">知识源</font>】和【<font color="#e74f4c">控制模块</font>】的构件来设计<br>应用于<font color="#e74f4c">信号处理</font>领域,如<font color="#e74f4c">语普识别</font>、<font color="#e74f4c">模式识别</font>、<font color="#e74f4c">图像处理</font>、<font color="#e74f4c">知识推理</font><br>
应用场景:<font color="#e74f4c">信号处理</font>领域,如语音识别和模式识别。另一应用是松耦合代理<font color="#e74f4c">数据共享存取</font>。<br>
<font color="#e74f4c">虚拟机</font>风格
定义:<font color="#e74f4c">人为</font>构建一个<font color="#e74f4c">运行环境</font>,可以解析与运行<font color="#e74f4c">自定义的语言</font>,增加架构的<font color="#e74f4c">灵活性</font><br>
<font color="#e74f4c">解释器</font>风格
组成:<font color="#e74f4c">解释引擎</font>、被解释的<font color="#e74f4c">代码的存储区</font>、记录<font color="#e74f4c">工作状态</font>、<font color="#e74f4c">进度</font>的<font color="#e74f4c">数据结构</font><br>
通常被用来建立一种虚拟机以弥合<font color="#e74f4c">程序语义</font>与<font color="#e74f4c">硬件语义</font>之间的差异,缺点是执行<font color="#e74f4c">效率较低</font>,典型例子是<font color="#e74f4c">专家系统</font>
<font color="#e74f4c">规则系统</font>风格
包括:<font color="#e74f4c">知识库</font>(<font color="#e74f4c">规则</font>集、<font color="#e74f4c">事实</font>集)、<font color="#e74f4c">规则解释器</font>、<font color="#e74f4c">规则/数据选择器</font>及<font color="#e74f4c">工作内存</font>(程序运行存储区)<br>
<font color="#e74f4c">独立构件</font>风格
定义:独立构件体系结构风格强调系统中的每个构件都是<font color="#e74f4c">相对独立的个体</font>,它们之间不直接通信,以降低耦合度,提升灵活度<br>
<font color="#e74f4c">进程通信</font>风格
<font color="#e74f4c">构件</font>是独立的<font color="#e74f4c">命名过程</font>,<font color="#e74f4c">连接件</font>是<font color="#e74f4c">消息传递</font>(点到点、异步或同步方式及远程过程调用)<br>
<font color="#e74f4c">事件系统</font>风格
构件<font color="#e74f4c">不直接调用</font>一个过程,而是<font color="#e74f4c">触发</font>或广播一个或多个<font color="#e74f4c">事件</font>。<br>
隐式调用
<font color="#e74f4c">C2</font>风格
通过<font color="#e74f4c">连接件</font>【连接】构件或某个构件组,<font color="#e74f4c">构件与构件之间</font>【<font color="#e74f4c">无连接</font>】<br>
软件架构的复用技术
分类:<font color="#e74f4c">机会</font>复用(开发中)、<font color="#e74f4c">系统</font>复用(开发前)<br>
目的:减少<font color="#e74f4c">开发工作</font>、减少<font color="#e74f4c">开发事件</font>、降低<font color="#e74f4c">开发成本</font>、提高<font color="#e74f4c">生产力</font>、提高<font color="#e74f4c">产品质量</font>,更好的【<font color="#e74f4c">互操作性</font>】<br>
一般形式的复用包括:<font color="#e74f4c">函数</font>的复用、<font color="#e74f4c">库</font>的复用、面向对象开发中的<font color="#e74f4c">类</font>、<font color="#e74f4c">接口</font>和<font color="#e74f4c">包</font>的复用
复用的过程:<font color="#e74f4c">构建/获取</font>(前提)-><font color="#e74f4c">管理</font>(构件库、分类、检索)--><font color="#e74f4c">使用</font>(修改、扩展、配置、组装与集成)<br>
特定领域软件架构(<font color="#e74f4c">DSSA、反复螺旋模型</font>)<br>
特征:<font color="#e74f4c">领域</font>性、<font color="#e74f4c">普遍</font>性、<font color="#e74f4c">抽象</font>性、<font color="#e74f4c">可复用</font>性
活动:领域<font color="#e74f4c">分析</font>(领域模型)、领域<font color="#e74f4c">设计</font>(领域架构模型、适应性)、领域<font color="#e74f4c">实现</font>(可重用信息)<br>
人员:领域<font color="#e74f4c">专家</font>、领域<font color="#e74f4c">分析师</font>、领域<font color="#e74f4c">设计人</font>、领域<font color="#e74f4c">实现人</font><br>
领域<font color="#e74f4c">分析</font>者的任务是:控制整个领域分析过程,进行知识获取,将获取的知识组织到<font color="#e74f4c">领域模型</font>中<br>
领域<font color="#e74f4c">设计</font>者的任务是:根据领域模型和现有系统<font color="#e74f4c">开发出DSSA</font>,并对DSSA的准确性和一致性进行验证<br>
三个层次:领域<font color="#e74f4c">开发环境</font>(领域<font color="#e74f4c">架构师</font>);领域<font color="#e74f4c">特定应用开发环境</font>(<font color="#e74f4c">应用工程师</font>);应用<font color="#e74f4c">执行环境</font>(<font color="#e74f4c">操作员</font>)<br>
五个阶段:定义领域<font color="#e74f4c">范围</font>;定义领域<font color="#e74f4c">元素</font>;定义领域<font color="#e74f4c">设计</font>和实现<font color="#000000">需求</font><font color="#e74f4c">约束</font>;定义<font color="#e74f4c">领域</font>【<font color="#e74f4c">模型和体系结构</font>】;产生、搜集<font color="#e74f4c">可重用的产品单元</font>)<br>
系统质量属性
软件系统质量属性是一个系统的<font color="#e74f4c">可测量</font>或<font color="#e74f4c">可测试</font>的属性,用来描述系统满足<font color="#e74f4c">利益相关者</font> (Stakeholders) 需求的程度。
按<font color="#e74f4c">生命周期</font>分类的质量属性
<font color="#e74f4c">开发期</font>质量属性
<font color="#e74f4c">易理解</font>性:指<font color="#e74f4c">设计</font>被开发人员<font color="#e74f4c">理解</font>的难易程度<br>
<font color="#e74f4c">可扩展</font>性(<font color="#e74f4c">灵活</font>性):软件因<font color="#e74f4c">适应</font><font color="#000000">新需求</font>或需求变化而增加<font color="#e74f4c">新功能</font>的能力<br>
<font color="#e74f4c">可重用</font>性:指<font color="#e74f4c">重用</font>软件系统或某一部分的难易程度<br>
<font color="#e74f4c">可测试</font>性:对软件<font color="#e74f4c">测试</font>以证明其满足需求规范的难易程度,对系统的行为进行<font color="#e74f4c">控制与调试</font><br>
<font color="#e74f4c">可维护</font>性:当需要修改缺陷、增加功能、提高质量属性时,<font color="#e74f4c">识别</font>修改点并<font color="#e74f4c">实施修改</font>的难易程度<br>
<font color="#e74f4c">可移植</font>性:将软件系统从一个运行环境转移到另一个不同的<font color="#e74f4c">运行环境</font>的难易程度<br>
<font color="#e74f4c">运行期</font>质量属性
<font color="#e74f4c">性能</font>:软件系统及时提供相应服务的能力,如<font color="#e74f4c">速度</font>、<font color="#e74f4c">吞吐量</font>和<font color="#e74f4c">容量</font>等<br>
【<font color="#e74f4c">可伸缩</font>性】:当<font color="#e74f4c">用户数和数据量</font>增加时,软件系统维持高<font color="#e74f4c">服务质量</font>的能力<br>
<font color="#e74f4c">互操作</font>性:软件系统与其他系统交换数据和<font color="#e74f4c">相互调用</font>服务的难易程度<br>
<font color="#e74f4c">可靠</font>性:软件系统在一定的时间内<font color="#e74f4c">持续无故障运行</font>的<font color="#e74f4c">能力</font><br>
<font color="#e74f4c">可用</font>性:系统在一定时间内<font color="#e74f4c">正常工作</font>的时间所占<font color="#e74f4c">比例</font><br>
<font color="#e74f4c">鲁棒</font>性(健壮性、容错性):软件系统在<font color="#e74f4c">非正常情况</font>(用户进行<font color="#e74f4c">非法操作</font>、相关软硬件系统<font color="#e74f4c">发生故障</font>)下仍<font color="#e74f4c">正常运行的能力</font><br>
<font color="#e74f4c">安全</font>性:软件系统同时兼顾向<font color="#e74f4c">合法用户提供服务</font>,以及<font color="#e74f4c">阻止非授权用户</font>使用的能力<br>
面向架构评估的质量属性
【<font color="#e74f4c">功能</font><font color="#000000">性</font>】:<font color="#e74f4c">需求</font>的满足程度<br>
【<font color="#e74f4c">可变</font><font color="#000000">性</font>】:架构经<font color="#e74f4c">扩充</font>或<font color="#e74f4c">变更</font>而成为<font color="#e74f4c">新架构</font>的能力<br>
【<font color="#e74f4c">互操作</font><font color="#000000">性</font>】:与其他系统互操作,通过<font color="#e74f4c">可视化</font>或<font color="#e74f4c">接口</font>方式提供更好的交互操作体验
<font color="#e74f4c">可修改</font>性:快速地以较高的性价比对系统作出修改的能力
<font color="#e74f4c">结构重组</font>:不影响主体进行的<font color="#e74f4c">灵活配置</font><br>
<font color="#e74f4c">可扩展</font>性:因<font color="#e74f4c">松散耦合</font>更易实现新特性/功能,不影响架构<br>
<font color="#e74f4c">可维护</font>性:能做<font color="#e74f4c">局部的修复</font>,使故障对架构的<font color="#e74f4c">负面影响最小化</font><br>
<font color="#e74f4c">可移植</font>性:适用于<font color="#e74f4c">多样的环境</font>(硬件平台、语言、操作系统等)<br>
设计策略<br>
局部化修改:<font color="#e74f4c">抽象</font>、<font color="#e74f4c">高内聚低耦</font>合、预测变更、使模块通用。
防止连锁反应:<font color="#e74f4c">信息隐藏</font>、维持现有接口、<font color="#e74f4c">限制通信路径</font>、使用<font color="#e74f4c">中介</font>。
推迟绑定时间:<font color="#e74f4c">运行时注册</font>、多态、配置文件。
<font color="#e74f4c">性能</font>:单位时间内能处理的工作量<br>
设计策略<br>
资源 需求:<font color="#e74f4c">减少</font>处理事件时对<font color="#e74f4c">资源的占用</font>、减少处理事件的数量、<font color="#e74f4c">控制资源的使用</font>。
资源管理:<font color="#e74f4c">并发</font>机制、<font color="#e74f4c">增加资源</font>
资源仲裁:<font color="#e74f4c">优先级队列</font>、先来先服务、固定<font color="#000000">优先级</font>、动态优先级、静态调度
<font color="#e74f4c">可靠性:</font>在一定的时间内持续无故障运行的能力<br>
可靠性通常用<font color="#e74f4c">平均失效等待时间</font> (Mean Time To Failure,MTTF) 和<font color="#e74f4c">平均失效间隔时间 </font>(Mean Time Between Failure,MTBF) 来衡量
<font color="#e74f4c">容错</font>:出现错误后仍能保证系统正常运行,且<font color="#e74f4c">自行修正</font>错误<br>
<font color="#e74f4c">健壮性</font>:错误不对系统产生影响,按既定程序<font color="#e74f4c">忽略错误</font><br>
<font color="#e74f4c">可用</font>性:正常运行的时间比例
<b>设计策略</b>
错误<font color="#e74f4c">检测</font>:<font color="#e74f4c">心跳</font>、<font color="#e74f4c">Ping/Echo</font>、<font color="#e74f4c">异常</font>
错误<font color="#e74f4c">恢复</font>:<font color="#e74f4c">表决</font>、<font color="#e74f4c">主动冗余</font>、<font color="#e74f4c">被动冗余</font>、<font color="#e74f4c">重新同步</font>、<font color="#e74f4c">内测</font>、<font color="#e74f4c">检查点/回滚</font>
错误<font color="#e74f4c">避免</font>:服务<font color="#e74f4c">下线</font>、<font color="#e74f4c">事务</font>、<font color="#e74f4c">进程监控</font>器
<font color="#e74f4c">安全</font>性:系统给<font color="#e74f4c">合法</font>用户<font color="#e74f4c">提供</font>服务并<font color="#e74f4c">阻止非法</font>用户的能力
设计策略
抵抗攻击:用户<font color="#e74f4c">身份验证</font>、用户<font color="#e74f4c">授权</font>、维护数据机密性与完整性、限制暴露、<font color="#e74f4c">限制访问</font>
检测攻击:入侵检测系统、<font color="#e74f4c">追踪/审计</font>
从攻击中恢复:恢复状态、识别攻击者
质量属性场景描述
<font color="#e74f4c">刺激源</font>(Source):某个<font color="#e74f4c">生成该刺激的实体</font>(人、计算机系统或者任何其他刺激器)
<font color="#e74f4c">刺激</font>(Stimulus):指当刺激<font color="#e74f4c">到达系统时需要考虑</font>的<font color="#e74f4c">条件</font>
<font color="#e74f4c">环境</font>(Environment):指该刺激在<font color="#e74f4c">某些条件内发生</font>。当激励发生时,系统可能处于过载、运行或者其他情况
<font color="#e74f4c">制品</font>(Artifact):某个<font color="#e74f4c">制品被激励</font>。可能是整个系统,也可能是系统的一部分
<font color="#e74f4c">响应</font>(Response):指在<font color="#e74f4c">激励到达</font>后所<font color="#e74f4c">采取的行动</font><br>
<font color="#e74f4c">响应度量</font>(Measurement):当<font color="#e74f4c">响应发生</font>时,应当能够以<font color="#e74f4c">某种方式对其进行度量</font>,以<font color="#e74f4c">对需求进行测试</font>
系统架构评估<br>
系统架构评估是在对架构<font color="#000000">分析、评估</font>的基础上,对<font color="#e74f4c">架构策略</font>的选取进行<font color="#e74f4c">决策</font>
核心概念
<font color="#e74f4c">风险</font>点:指架构设计中<font color="#e74f4c">潜在</font>的、<font color="#e74f4c">存在问题</font>的架构<font color="#e74f4c">决策</font>所带来的【<font color="#e74f4c">隐患</font>】<br>
<font color="#e74f4c">非风险</font>点:某些做法是<font color="#e74f4c">可行</font>的、<font color="#e74f4c">可接受</font>的
<font color="#e74f4c">敏感</font>点:为了实现某种<font color="#e74f4c">特定质量属性</font>,一个或多个系统<font color="#e74f4c">组件</font>所具有的<font color="#e74f4c">特性</font><br>
<font color="#e74f4c">权衡</font>点:是影响多个质量属性,并对<font color="#e74f4c">多个质量属性</font>来说都是<font color="#e74f4c">敏感点</font>的系统属性<br>
<font color="#e74f4c">风险</font>承担者或<font color="#e74f4c">利益</font>相关人:<font color="#e74f4c">影响体系结构</font>或<font color="#e74f4c">被体系结构影响</font>的<font color="#e74f4c">群体</font>
<font color="#e74f4c">场景</font>:确定架构质量评估<font color="#e74f4c">目标</font>的【<font color="#e74f4c">交互机制</font>】,一般采用【<font color="#e74f4c">触发</font>】机制(教材中解释为“<font color="#e74f4c">刺激</font>”)、【<font color="#e74f4c">环境</font>】和【<font color="#e74f4c">影响</font>】三方面来描述。<br>
评估方法分类<br>
基于【<font color="#e74f4c">调查问卷</font>】或【<font color="#e74f4c">检查表</font>】的方法:该方式的关键是要<font color="#e74f4c">设计好问卷或检查表</font>,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于<font color="#e74f4c">评估人员的主观推断</font>。<br>
基于【<font color="#e74f4c">场景</font>】的评估方法:通过分析软件架构对<font color="#e74f4c">场景的支持程度</font>,从而判断该架构对这一场景所代表的<font color="#e74f4c">质量需求的满足程度</font>,应用在架构权衡分析法(<font color="#e74f4c">ATAM</font>)和软件架构分析方法(<font color="#e74f4c">SAAM</font>)中。<br>
基于【<font color="#e74f4c">度量</font>】的评估方法:制定一些<font color="#e74f4c">定量值</font>来度量架构,如代码行数等;建立【<font color="#e74f4c">质量属性</font>和<font color="#e74f4c">度量</font>之间的<font color="#e74f4c">映射原则</font>】<font color="#e74f4c"> </font>→ 在软件文档中<font color="#e74f4c">获取度量信息 </font>→ <font color="#e74f4c">分析推导</font>系统<font color="#e74f4c">质量属性</font>。<br>
软件架构分析方法(<font color="#e74f4c">SAAM</font>)
SAAM 是卡耐基梅隆大学软件工程研究所的Kazman等人于<font color="#e74f4c">1983</font>年提出的一种【<font color="#e74f4c">非功能</font>质量属性】的架构分析方法,是<font color="#e74f4c">最早形成文档</font>并得到广泛应用的软件架构分析方法
SAAM的主要输入是【<font color="#e74f4c">问题描述</font>、<font color="#e74f4c">需求说明(需求分析)</font>和<font color="#e74f4c">架构描述(架构设计)</font>】,其分析过程主要包括【<font color="#e74f4c">场景开发</font>、<font color="#e74f4c">架构描述</font>、<font color="#e74f4c">单个场景评估</font>、<font color="#e74f4c">场景交互评估、总体评估</font>】<br>
架构权衡分析方法(<font color="#e74f4c">ATAM</font>)
ATAM是一种系统架构评估方法,主要在系统<font color="#e74f4c">开发之前</font>,针对【<font color="#e74f4c">性能</font>、<font color="#e74f4c">可修改</font>性、<font color="#e74f4c">可用</font><font color="#000000">性</font>、<font color="#e74f4c">安全</font><font color="#000000">性</font>】等质量属性进行【<font color="#e74f4c">评价和折中</font>】<br>
ATAM4个活动领域(阶段):<font color="#e74f4c">场景和需求收集</font>、<font color="#e74f4c">架构视图和场景实现</font>、【<font color="#e74f4c">属性模型</font>】<font color="#e74f4c">构造和分析</font>、<font color="#e74f4c">架构</font>【<font color="#e74f4c">决策与折中</font>】,整个评估过程强调以【<font color="#e74f4c">属性</font>】作为架构评估的核心概念。<br>
现代ATAM采用<font color="#e74f4c">效用树</font>对质量属性进行<font color="#e74f4c">分类和优先级</font>排序
<font color="#e74f4c">演示介绍</font><font color="#000000">阶段</font><br>
<font color="#e74f4c">介绍ATAM</font>方法:描述ATAM<font color="#e74f4c">评估过程</font>。<br>
描述<font color="#e74f4c">商业目标</font>:着重<font color="#e74f4c">业务视角</font>,提供相关系统<font color="#e74f4c">功能</font>、主要<font color="#e74f4c">利益相关方</font>、<font color="#e74f4c">业务目标</font>和其他<font color="#e74f4c">限制</font>等信息。
描述<font color="#e74f4c">体系结构</font>:侧重<font color="#e74f4c">可用性</font>以及体系结构的<font color="#e74f4c">质量要求</font>
<font color="#e74f4c">调查和分析</font>阶段
<font color="#e74f4c">确定</font>架构<font color="#e74f4c">方法</font>:涉及能够理解系统<font color="#e74f4c">关键需求</font>的<font color="#e74f4c">关键架构</font>方法<br>
生成<font color="#e74f4c">质量属性效用树</font>:确定<font color="#e74f4c">最重要</font>的质量属性,并确定优先<font color="#e74f4c">次序</font>
<font color="#e74f4c">分析</font>体系结构<font color="#e74f4c">方法</font>:彻底调查和分析,找出处理相应质量属性架构的方法。<br> 包括4个主要阶段:<font color="#e74f4c">调查</font>架构方法 → <font color="#e74f4c">创建</font>分析问题 → 分析问题的<font color="#e74f4c">答案 </font>→ 找出<font color="#e74f4c">风险</font>、<font color="#e74f4c">非风险</font>、<font color="#e74f4c">敏感点</font>和<font color="#e74f4c">权衡点</font>。<br>
<font color="#e74f4c">测试</font>阶段
<font color="#e74f4c">头脑风暴和优先场景</font>:将<font color="#e74f4c">头脑风暴的优先列表</font>与生成质量属性<font color="#e74f4c">效用树</font>中所获取的优先方案进行比较<br>
<font color="#e74f4c">分析架构方法</font>:分析<font color="#e74f4c">上一步</font>中高优先级的质量属性,检查相应的架构设计方案<font color="#e74f4c">是否可支持</font>满足这些属性,<font color="#e74f4c">重复第6步</font>来完善体系结构方法<br>
<font color="#e74f4c">报告</font>阶段
提供评估期间收集的<font color="#e74f4c">所有信息</font>(效用树、场景、分析问题、风险和非风险、架构方法),呈现给利益相关者<br>
SAAM和ATAM对比<br>
特定目标:通过程序文档验证体系结构,注重发现潜在问题,可用于评价单系统或进行<font color="#e74f4c">多系统比较</font>;确定在<font color="#e74f4c">多个质量属性之间折中</font>的必要性<br>
评估技术:<font color="#e74f4c">场景</font>技术;场景技术、<font color="#e74f4c">启发式分析</font>方法<br>
质量属性:<font color="#e74f4c">可修改性</font>是主要分析内容;<font color="#e74f4c">性能、可用性、安全性和可修改</font>性<br>
风险承担者:<font color="#e74f4c">所有</font>参与者;<font color="#e74f4c">场景和需求收集</font>过程中的相关人<br>
架构描述:围绕<font color="#e74f4c">功能、结构和分配</font>描述;<font color="#e74f4c">五个基本结构及其映射</font>关系<br>
方法活动:<font color="#e74f4c">场景开发、体系结构描述、单个场景评估、场景交互和总体评估</font>;场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中<br>
知识库可复用性:<font color="#e74f4c">不涉及</font>;有<font color="#e74f4c">基于属性</font>的体系模型,<font color="#e74f4c">可复用</font><br>
方法验证:<font color="#e74f4c">空中交通管制</font>系统、<font color="#e74f4c">嵌入式音频</font>系统、<font color="#e74f4c">修正控制</font>系统、根据上下文<font color="#e74f4c">查找关键词</font>系统;仍处于研究中<br>
<font color="#e74f4c">成本效益</font>分析法(CBAM)
成本效益分析法(Cost Benefit Analysis Method,CBAM)分为<font color="#e74f4c">整理场景 </font>→ 场景<font color="#e74f4c">求精 </font>→ 确定场景的<font color="#e74f4c">优先级 </font>→ <font color="#e74f4c">分配效用 </font>→ 架构策略涉及哪些<font color="#e74f4c">质量属性及响应级别</font> → 使用<font color="#e74f4c">内插法</font>确定“期望的”质量属性响应级别的<font color="#e74f4c">效用 </font>→ 计算各架构策略的<font color="#e74f4c">总收益 </font>→ 根据受成本限制影响的<font color="#e74f4c">ROI</font>选择架构策略
UML组成元素
基本构造块
事务(结构、行为、分组、注释)<br>
<font color="#e74f4c">结构</font>事物:名词、<font color="#e74f4c">静态</font>部分,用于描述概念或物理元素,包括:类、接口、<font color="#e74f4c">协作</font>、<font color="#e74f4c">用例</font>、<font color="#e74f4c">主动类</font>、<font color="#e74f4c">构件、制品</font><font color="#000000">和</font><font color="#e74f4c">节点</font><br>
子主题
<font color="#e74f4c">行为</font>事物:<font color="#e74f4c">动词</font>,描述了跨越<font color="#e74f4c">时间和空间</font>的行为。包括:<font color="#e74f4c">交互</font>Interaction、<font color="#e74f4c">状态机</font>StateMachine和<font color="#e74f4c">活动</font>Activity,也有成为<font color="#e74f4c">消息、动作次序、连接</font><br>
子主题
<font color="#e74f4c">分组</font>事物:<font color="#e74f4c">包</font>是最常用的分组事物,<font color="#e74f4c">结构事物</font>、<font color="#e74f4c">行为事物</font>甚至<font color="#e74f4c">其他分组事物</font>都可以放进包内。<br>
<font color="#e74f4c">注释</font>事物:UML模型的解释部分。<font color="#e74f4c">描述、说明和标注</font>模型的元素<br>
关系(依赖、关联(聚合、组合)、泛华、实现)<br>
<font color="#e74f4c">依赖</font>关系:其中一个事物发生变化会<font color="#e74f4c">影响另一个事物</font>。依赖关系是一种<font color="#e74f4c">使用</font>的关系。<br>
<font color="#e74f4c">关联</font>关系:是一种<font color="#e74f4c">拥有</font>的关系,关联提供了不同类的对象之间的结构关系,它在一段时间内<font color="#e74f4c">将多个类的实例连接在一起</font>。
<b><font color="#e74f4c">聚合</font>关系:</b>表示类之间的整体与部分的关系,其含义是<font color="#e74f4c">“部分”可能同时属于多个“整体”</font>,“部分”与“整体”的<font color="#e74f4c">生命周期可以不相同</font>。<br>
<b><font color="#e74f4c">组合</font>关系:</b>也是表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”<font color="#e74f4c">只能属于一个</font>“整体”,“部分”与“整体”的<font color="#e74f4c">生命周期相同</font>,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。<br>
<font color="#e74f4c">泛化</font>关系:泛化是一种<font color="#e74f4c">特殊/一般</font>关系,特殊元素(<font color="#e74f4c">子</font>元素)的对象可替代一般元素(<font color="#e74f4c">父</font>元素)的对象。<br>
<font color="#e74f4c">实现</font>关系:在两种情况下会使用实现关系:一种是在<font color="#e74f4c">接口</font>和实现它们的<font color="#e74f4c">类</font>或构件之间;另一种是在<font color="#e74f4c">用例</font>和实现它们的<font color="#e74f4c">协作</font>之间<br>
子主题
图(支配基本构造块如何放置在一起的规则)<br>
<font color="#e74f4c">静态</font>图(<font color="#e74f4c">结构</font>图)<br>
类图:<font color="#e74f4c">一组类</font>、接口、协作和它们之间的<font color="#e74f4c">关系</font><br>
子主题
对象图:<font color="#e74f4c">一组对象</font>及它们之间的关系<br>
子主题
构件图:<font color="#e74f4c">一个封装</font>的类和它的<font color="#e74f4c">接口,</font>是物理上独立的东西,他可以单独维护、升级、替换。<br>
子主题
包图:由<font color="#e74f4c">模型本身分解</font>而成的<font color="#e74f4c">组织单元</font>,以及它们之间的<font color="#e74f4c">依赖</font>关系<br>
子主题
部署图:软硬件之间映射<br>
子主题
制品图:系统的<font color="#e74f4c">物理</font>结构<br>
组合结构图
<font color="#e74f4c">动态</font>图(<font color="#e74f4c">行为</font>图)<br>
<font color="#e74f4c">用例图</font>:展现了一组<font color="#e74f4c">用例</font>、<font color="#e74f4c">参与者</font>(Actor)以及它们之间的关系<br>
<font color="#e74f4c">用例之间</font>有<font color="#e74f4c">扩展</font>关系(<<extend >>)和<font color="#e74f4c">包含</font>关系(<<include >>)和<font color="#e74f4c">泛华</font>关系,<br><font color="#e74f4c">包含</font>关系的特点是当两个或多个用例中共用一组相同的动作时,可以将这组<font color="#e74f4c">相同的动作抽出来作为一个独立的子用例</font>,供<font color="#e74f4c">多个基用例所共享</font>;<br><font color="#e74f4c">扩展</font>关系则是<font color="#e74f4c">对基用例的扩展</font>,基用例是一个完整的用例,<font color="#e74f4c">即使没有子用例的参与,也可以完成一个完整的功能</font>。<br>
<font color="#e74f4c">参与者和用例</font>之间有<font color="#e74f4c">关联</font>关系
<font color="#e74f4c">参与者与参与者</font>之间有<font color="#e74f4c">泛化</font>关系
子主题
状态机图:<font color="#e74f4c">状态转换</font>变迁<br>
子主题
<font color="#e74f4c">活动</font>图:可以描述系统的<font color="#e74f4c">工作流程</font>和<font color="#e74f4c">并发行为</font><br>
活动图泳道分区
并行活动图示例
交互图
<font color="#e74f4c">顺序</font>图(<font color="#e74f4c">序列</font>):强调按<font color="#e74f4c">时间顺序</font><br>
仅用消息的形式表达
用消息+返回值的形式表达
<font color="#e74f4c">通信</font>图:(<font color="#e74f4c">协作</font>图),是“顺序图”的另外一种表示方式。<br>
子主题
定|计时图:时序图也叫时间图。强调<font color="#e74f4c">实际时间</font><br>
子主题
交互概览图
公共机制:所有元素达到的共识<br>
<font color="#e74f4c">规格说明</font>:<font color="#e74f4c">事物</font>语义的细节描述,它是模型真正的核心<br>
<font color="#e74f4c">修饰</font>:通过修饰来<font color="#e74f4c">表达更多的信息</font><br>
公共<font color="#e74f4c">分类</font>:类与对象、接口与实现<br>
<font color="#e74f4c">扩展</font>机制:允许添加新的规则<br>
计算题
硬件计算
流水线<font color="#e74f4c">执行周期 </font>= <font color="#e74f4c">最慢</font>那个指令执行时间;<br>流水线<font color="#e74f4c">执行时间 </font>= <font color="#e74f4c">所有指令顺序执行时间 </font>+(<font color="#e74f4c">指令总数-1</font>)* 流水线<font color="#e74f4c">执行周期</font>;<br>流水线的<font color="#e74f4c">吞吐率</font> = <font color="#e74f4c">指令执行条数</font>/<font color="#e74f4c">流水线执行时间</font><br>
主频 = 外频 * 倍频<br>
总线的时钟周期=时钟频率的倒数;<br>总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
性能计算
每秒<font color="#e74f4c">百万次</font>指令数<font color="#e74f4c">MIPS </font>= 指令条数/(执行时间×<font color="#e74f4c">10的6次方</font>)
峰值计算,是指计算机<font color="#e74f4c">每秒</font>钟能完成的<font color="#e74f4c">浮点</font>计算<font color="#e74f4c">最大次数</font>。包括理论浮点峰值和实测浮点峰值。<br><font color="#e74f4c">理论浮点峰值</font>= <font color="#e74f4c">CPU主频 </font>× CPU<font color="#e74f4c">每个时钟周期执行浮点运算的次数</font>× 系统中<font color="#e74f4c">CPU数</font><br>
<font color="#e74f4c">等效指令速度</font>法或<font color="#e74f4c">吉普森</font>(Gibson)法,早期用<font color="#e74f4c">加法</font>指令的运算速度来衡量计算机的速度,后来发展为各个指令的<font color="#e74f4c">运算时间乘以占比</font>。<br>通常加、减法指令占 <font color="#e74f4c">50</font>%,乘法指令占 <font color="#e74f4c">15</font>%,除法指令占 <font color="#e74f4c">5</font>%,程序控制指令占 <font color="#e74f4c">15</font>%,其他指令占 <font color="#e74f4c">15</font>%。<br>式中:Wi 为第 i 种指令的使用占比;Ti 为第 i 种指令的运算时间。<br>
盈亏平衡分析
子主题
注意可变成本的计算为销售额的百分比
案例
第一题,我们需要会默写<font color="#e74f4c">质量属性、敏感点、权衡点、风险点、非风险点、五大架构风格以及架构风格的优缺点</font>。
第二题(UML图),我们需要辨别各种图的长相以及它们的优缺点,这里建议多查阅网上的资料,增加知识储备。
http://www.zhihu.com/tardis/bd/art/405447739
第四题(数据库设计),对数据库比较熟悉的后端同学可以秒刷,
(1)缓存穿透。大量请求访问了<font color="#e74f4c">没有缓存的key</font>,即大量的key在Redis里是不存在的,从而导致请求直接访问数据库,数据库压力增大。
可能的原因如下:<br>1)<b>恶意攻击</b>,造成大量访问不存在的key。例如登录时使用无效的用户名,在软考网站查询成绩时输入不存在的身份证号、准考证号。<br>解决方案:<br>①针对比较少的请求来源,主动<font color="#e74f4c">限制其访问次数</font>,或者拉入黑名单;<br>②应用程序来检查 <font color="#e74f4c">key的合法性</font>,提前拒绝不合法的请求;③使用<font color="#e74f4c">布隆过滤器</font>。<br>
2)大量请求访问<b>数据库里有但Redis没有的key</b>。例如新业务刚刚上线,此时Redis是空的。<br>解决方案:<br>①<font color="#e74f4c">预热 Redis</font>,运行一个批处理脚本,将可能会大量访问的数据预先加载到 Redis,业务再“开张”:<br>②在最<font color="#e74f4c">前端进行流量控制,逐步把请求释放进来</font>。给出一段时间,让 Redis 逐步加载热数据;<br>③如果是在数据库里也没有的key,也需要在Redis 中设置key,使其<font color="#e74f4c">值为 null 或空</font>。<br>
(2)缓存雪崩。大量请求访问到缓存中的key,这些 key 是存在的,但<font color="#e74f4c">同时到了过期时间</font>,从而导致请求直接访问数据库,数据库压力增大。缓存雪崩可能进而影响一系列的雪崩,影响到上下游的所有应用服务。可能的原因如下:
1)<b>Redis 故障</b>。比如Redis 宕机,网络出现抖动等。解决方案:<br>①使用<font color="#e74f4c">主从复制提高可用性</font>,使用<font color="#e74f4c">cluster 集群方案降低故障时影响的范围:</font><br>②如果出现故障,则可以采取服务<font color="#e74f4c">降级、熔断、限流</font>等措施。<br>
2)大量的key采用了<b>相同的过期时间</b>。例如在同一时刻设置了大量的key,但过期时间都是5分钟。解决方案:<br>过期时间加上一<font color="#e74f4c">个随机值</font>,使得众多key均匀过期。<br><font color="#e74f4c">分布式锁</font>保证访问Redis的请求数<br><font color="#e74f4c">后台更新</font>:避免竞争<br><font color="#e74f4c">双key</font>策略:一个key有过期时间,一个key不过期,放味不过期key时触发时间更新key1和key2<br>
(3)缓存击穿。少量<font color="#e74f4c">热点的key</font>缓存时间失效了,使得请求直接访问数据库。
可能的原因:热点的key设置了太短的过期时间。例如秒杀业务下的“库存数量”。解决方案:<br>①将key设置<font color="#e74f4c">较长的过期时间</font>。对于非常重要的key,则设置永久有效。但需要解决好与数据库中的 key 的一致性问题;<br>②使用<font color="#e74f4c">分布式锁</font>。如果热点key 失效了,要控制好访问后端数据库的流量。只允许一个请求去访问数据库,取出最新的key,存放到Redis,其他请求则必须<br>3使用<font color="#e74f4c">二级本地缓存</font>,将热点key缓存到本机<br>
论文
详细请看《系统架构设计师考试32小时通关(第二版)》的论文篇
收藏
0 条评论
下一页