admin 管理员组

文章数量: 887021

说明

    本文档对2009到2022年试卷的综合知识进行了归纳总结,同时对叶宏主编的《系统架构设计师教程》划分重点。

第一章:关于架构、架构师概述

1.1 重要知识点:

模块化开发规则:
    1> 最高模块内聚,即在一个模块内部的元素最大限度地关联,只实现一种功能的模块是高内聚,具有三种以上功能的模块是低内聚;
    2> 最低耦合,即不同模块之间的关系极可能弱,以利于软件的升级和扩展;
    3> 模块大小适度,即模块不要太大或者大小,太大维护困难,太小又会导致模块间耦合增加;
    4> 模块调用链的深度(嵌套层次)不可过多
    5> 接口简单、精炼(扇入扇出数不宜过大),具有信息隐蔽能力
    6> 尽可能复用已有模块

软件架构的常用分类:
    1)分层架构,这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口进行通信。

    2)事件驱动架构

    3)微核架构,微核架构又称为插件架构,是指软件的内核相对较小,主要功能和业务通过插件实现。内核通过只包含系统运行的最小功能。插件是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题。

    4)微服务架构,微服务架构是服务导向架构的升级,每一个服务就是一个独立的部署单元,这些单元都是分布式,互相解耦,通过远程通信协议联系。
        1> RESTful API模式:服务器通过API提供,云服务就属于这一类
        2> RESTful 应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部。
        3> 集中消息模式:采用消息代理可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败。

    5)云架构,云架构主要解决扩展性和并发问题,是最容易扩展的架构。

软件架构常用建模方法:
    1)结构模型:最直观的方法,此方法以架构的构件、连接件和其他概念来刻画结构。并力图通过结构来反映系统的重要语义内容,包括系统配置、约束、隐含的假设调教、风格和性质。研究结构模型的核心是架构描述语言。
    2)框架模型:框架模型与结构模型类型,但它更侧重于整体结构,主要以特殊问题为目标建立结构。
    3)动态模型:是对结构和框架模型的补充,动态是指系统总体结构的配置、建立或拆除通信或计算的过程。
    4)过程模型:研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。
这四种模型并不是完全独立的,通过有机结合形成一个完整的模型来刻画软件架构

架构师需要具备的专业知识:
    1)掌握业务领域知识
    2)掌握技术知识 关注技术的重要因素,而不是细节
    3)掌握设计技能 设计过程是架构设计的核心内容,架构是关键设计决策的具体化,关键设计决策指的是关键结构设计决策、特定模型的选择和指导规格说明书等。
    4)具备编程技能
    5)具备沟通能力
    6)具备决策能力
    7)知道组织策略 对政治敏感并知道其在组织中的权利
    8)应是谈判专家

成为一个技术全面的架构师需要具备6个角色:
    1)作为领导者
        像导师,带领团队前进,仔细听取意见。
    2)作为开发者
        权衡理想架构状态和软件系统的当前状态,不要做象牙塔式架构设计师(象牙塔架构师,因为他们没有真正去参与一线的开发。他们不会明白压力来自哪里,现实是怎样的,只会告诉别人使用某种技术)
    3)作为系统综合者、聚焦系统
        不仅要专注于了解代码,还要考虑部署过程、自动化测试、性能、安全和可支持性等多个方面,寻找能够满足不同利益相关者需求的解决方案。
    4)具备企业家思维
        技术选型考虑相关的成本和利益
    5)具备战略技术专家的权衡思维与战术思维
        寻求敏捷度(允许团队快速采取行动)和一致性(保持足够的一致性)之间良好平衡。建立自己的技术雷达进行练习是用战略思维探索技术的一个有用工具。
    6)具备良好的沟通能力
        可以使用图表和小组讨论方式来建立和完善技术愿景,并进行书面记录(架构决策日志或wifi等),从而为将来留下可追朔的历史。

第二章:计算机系统基础知识

2.1 重要知识点:


处理器:
        处理器的指令集按照复杂度可以分为复杂指令集(CISC: Intel、AMD等)和精简指令集(RISC:ARM、Power等),RISC已经成为计算机指令集发展趋势,后期基本都是RISC架构。

        常见的处理器芯片有:图形处理器(GPU:数百或数千个内核,用于深度学习)、信号处理器(DSP:专用于实时数字信号处理)、以及现场可编程逻辑门阵列(FPGA)、单片机微控制器(MCU)、ARM高性能RISC等。(除GPU外,后面的都是CPU在不同应用场景的使用)。

存储器:
    按硬件结构可分为:
        1> SRAM(静态随机存储器:只要保持通电,里面的数据就可以一直保存)(片上和片外)
        2> DRAM(动态随机存取内存,与SRAM最大的不同是, DRAM需要通过刷新操作来保持其存储的内容。容量比SRAM大,保存速度比SRAM慢,常用于PC的主存储器)
        3> NVRAM(非易失性随机访问存储器:指断电后仍能保持数据的一种RAM。)
        4> Flash(Flash存储器:内存器件的一种,是非易失性内存)
        5> EPROM(电可擦可编程只读存储器:是一种能够电子擦除和重新编程数据的非易失性存储器)
        6> Disk(磁盘)

    按采用分层体系,按照与处理器的物理距离可以分为4个层次:
        1>片上缓存:在处理器核心中直接集成的缓存,一般为SRAM结构、实现数据的快速读取。(16KB~512KB)
        2>片外缓存:在处理器核心外的缓存,需要通过交换互联开关访问,一般也是SRAM结构。(256KB-4MB)
        3>主存(内存):通常采用DRAM结构,以独立部件/芯片存在,通过总线与处理器连接,DRAM依赖不断充电维持其中的数据。(数百MB至数十GB)

总线:
    总线是指计算机部件之间遵循某一特定协议实现数据交换的形式,即以一种特定格式按照规定的控制逻辑实现部件间的数据传输。
    按位置划分:
        1>内总线:用于芯片内部互联,可称为片上总线或片内总线
        2>系统总线:指计算机中CPU、主存、I/O接口总线,广义上经由系统总线再次级联的总线,又成为局部总线。
        3>外部总线: 计算机板和外部设备之间或计算机系统之间互联的总线,又称为通信总线。总线之间通过桥实现连接,它是一种特殊外设,主要实现总线协议间的转换。

    总线存在很多种类,有:
        1>并行总线:PCI、PCIe、ATA(IDE)等
        2>串行总线:USB、SATA、CAN、RS232、RS485、RapidIO、以太网等。

操作系统:
    1>批处理操作系统(单道批处理,一次只有一个作业装入内存执行。多道批处理操作系统允许多个作业装入内存执行。)
    2>分时操作系统(将CPU工作时间划分为许多很短的时间片,轮流为各个终端用户服务。)
    3>实时操作系统(分为实时控制系统(用于生产自动控制)和实时信息处理系统(用于订票系统、情报系统))
    4>网络操作系统(使联网计算机能方便有效地共享网络资源。)
    5>分布式操作系统(由多个分散的计算机连接而成的计算机系统)
    6>微型计算机操作系统(微型计算机操作系统)
    7>嵌入式操作系统(运行在嵌入式智能设备环境中)

文件:
    文件结构分类:
        1>逻辑结构,分为有结构的记录式文件和无结构的流式文件。
        2>物理结构,
            连续结构(将逻辑上连续的文件信息一次存放在连续编号的物理块上,只要知道物理块号和文件长度就能存取);
            链接结构(存放在不连续的物理块,每个物理块设有一个指针指向下一个物理块);
            索引结构(存放在不连续的物理块,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始位置放在与文件对应的文件目录项中)。

    文件共享:
        1>硬链接,文件的硬链接是指两个文件目录表指向同一个索引节点的链接,硬链接不利于文件主删除它拥有的文件,必须先删除所有硬链接。
        2>符号链接,建立新的文件或目录,并与原来文件或目录的路径进行映射,当访问一个符号链接时,系统通过映射找到原文件路径,并对其访问。

    文件保护:
        存取控制矩阵,规定不同用户对文件访问有不同的权限。

中间件:
    作为应用软件与各种操作系统之间的标准化编程接口和协议,可以起承上启下作用,使应用软件的开发相对独立于计算机硬件和操作系统,并能在不同的系统上运行,实现相同的应用功能。中间件处在操作系统、网络和数据库之上,应用软件的下层。

    按中间件在分布式系统中承担的职责不同,可以划分为:
        1>通信处理(消息)中间件
        2>事务处理(交易)中间件
        3>数据存取管理中间件
        4>web服务器中间件
        5>安全中间件
        6>跨平台和架构的中间件
        7>专用平台中间件

软件构件:
    构件又称组件,是一个自包容、可复用的程序集(一组程序的集合)。这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问构件,不用直接操作构件的内部。构件的两个最重要的特性是自包容和可重用。
    构件组装模型,优点是构件的自包容性让系统扩展变得更加容易;设计良好的构件更容易被重用;构件的粒度叫整个系统更小,因此安排开发任务更加灵活,可以将开发团队分成若干组,并行独立开发构件。缺点是对构件的设计需要经验丰富的架构设计师,在考虑软件按重用度时,往往会对其他方面做出让步,如性能等。


    商用构件标准规范:
        1>CORBA, 公共对象请求代理架构
        2>J2EE 基于Java语言开发面向企业分布的应用规范
        3>DNA 2000 提供ASP、COM、Cluster等应用支持。

嵌入式系统:

    按不同用途分为:
        1>嵌入式实时系统,能够在指定或者确定时间内完成系统功能和外部或内部、同步或异步时间做出相 应的系统。实时系统又分为强实时系统、弱实时系统
        2>嵌入式非实时系统

    按安全性要求分为:
        1>安全攸关系统,指不正确功能会导致人员伤亡,财产损失等后果的计算机系统。
        2>非安全攸关系统


    嵌入式系统的组成:
        1>硬件层, 核心是微处理器、存储器、IO接口、通用设备、总线、电源、时钟等。
        2>抽象层, 主要实现对硬件层硬件进行抽象(HAL),为操作系统提供虚拟硬件资源;板极支持包(BSP)是一种硬件驱动软件,面向硬件芯片或电路进行驱动,为操作系统管理硬件提供支持。
        3>操作系统层,由嵌入式操作系统、文件系统、图形用户接口、网络系统和通用组件等可配置模块组成。
        4>中间件层,中间件是指一种独立的系统软件或服务程序,分布式应用系统借助这种软件可在不同的技术之间共享资源。中间件层是连接两个独立应用的桥梁。中间件分为服务中间件、集成中间件、数据中间件、消息中间件和安全中间件。
        5>应用层, 是指嵌入式系统的具体应用。

    嵌入式软件的主要特点:
        1>可裁剪性
        2>可配置性,可配置通常采用的设计方法包括数据驱动、静态编译和配置表等。
        3>强实时性,要求任务必须在规定时间内处理完成, 采用的设计方法包括表驱动、配置、动静态结合、汇编语言等
        4>安全性,在规定条件下规定时间内,不发生事故的能力,设计方法包括编码标准、安全保障机制、FMECA(故障模式、影响及危害性分析)
        5>可靠性,在规定条件下规定时间内,程序执行所要求的功能的能力。设计方法包括容错技术、余度技术和鲁棒性设计等。
        6>高确定性,系统运行期间,不能发生资源枯竭和未预计的状态出现都能情况,设计方法包括静态分配资源、越界检查、状态机、静态任务调度等。

    安全攸关软件的安全性设计:
        安全攸关软件设计的方法可以借鉴Do-178标准(美国民用飞机适航中的软件标准)。目标、过程、数据是Do-178的精髓。Do-178规定了软件整个生命周期需要达到66个目标,并将软件的安全等级分为A-E五级,不同安全等级软件,需要达到目标要求不同。Do-178把如软件生命周期中产生的文档、代码、报表、记录等称为软件生命周期数据。

        CMMI是从过程改进的视角,对软件开发技术与管理提出需求,覆盖个人、项目及组织三个层次的要求,更关注组织整体软件能力提升。DO-178是从适航审定视角,对软件开发技术和管理过程提出要求,更关注软件质量对于安全性的影响。

计算机网络:
    网络性能指标:
        1)速率(也称为比特率、单位是b/s 比特每秒 , 传送数据的速率)
        2)带宽,对于信号,带宽表示频率范围;对于计算机网络,表示单位时间内从网络一个结点到另一个结点所能通过的最高速率,单位是比特每秒。
        3)吞吐量,单位时间内通过某个网络的数据量。例如对于带宽100Mb/s的以太网,速率是100M每秒,对于100M/s的以太网,典型吞吐量可能只有70Mb/s。单位时间内成功地传送数据的数量(以比特、字节、分组等测量)
        4)时延,指数据从网络一端传递到另一端所需的时间。
        5) 往返时间(RTT),表示从发送方发送数据开始到发送方收到来自接收方的确认总共经历的时间。
        6)利用率,有信道利用率(信道被利用的概率,以百分数表示)和网络利用率(全网络的信道利用率的加权平均值)两种。

    非性能指标:费用、质量、标准化、可靠性、易管理和维护性

    信道传输是指:信源发出信息,发信机负责将信息进行编码和调制转换成适合在信道上传输的信号,收信机从信道接收信号,进行解调和译码,将信号转化成信息发送给信宿。

    香农公式:可以计算信道容量(信道的最大传输速率)

        按公式来说,带宽越大、信噪比越大,对应信道容量越大。

    网络通常按照网络覆盖区域和通信介质分为:
        1>局域网(LAN),拓扑结构有星状结构、树状结构、总线结构、环形结构。以太网技术:
        以太网是当今应用最为普遍的局域网技术,IEEE 802.3标准给出了以太网的技术标准。以太网帧结构:

        2>无线局域网(WLAN),WLAN拓扑结构有点对点、HUB型、完全分布型。
        3>广域网(WAN),广域网是一种将分布于更广区域,比如一个城市、一个国家的计算机设备连接起来的网络。广域网分类:公共传输网络、公共传输网络、无线传输网络。
        4>城域网(MAN),是在单个城市范围内建立的计算机通信网。
        5>移动通信网,发展:1G(采用模拟信号传输,只能传输语音)-》2G(采用数字调制技术,手机可上网,网速慢) -》3G(数字传输,同时开辟新电磁波频谱,网速得到提升)-》4G(采用更先进的通信协议和技术,网速为3G的几十倍,可以流畅观看视频 ) -》5G(多业务、多技术融合的网络,以用户为中心的信息生态系统,高速率相当于4G的20倍、低时延、海量设备连接、低功耗)

    网络设备:
        1>集线器(Hub),物理层,用来将该集线器连接到其他集线器或路由器设备以便形成更大的网络。
        2>中继器(RP repeater),物理层,用于完全相同的两个网络的互连,主要功能是通过对数据信号的重新发送或者转发,来扩大局域网环境下网络传输的距离。
        3>网桥(Bridge),数据链路层, 网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞。扩展局域网最常见的方法是使用网桥,后来被交换机所取代。

        4>交换机,数据链路层,交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
        5>路由器,网络层,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法(路由表)把各数据包按最佳路线传送到指定位置。
        6>防火墙,作为网络的门户,为网络安全运行提供保障,通过对防火墙设置安全规则实现对进出网络数据进行监视和过滤。

    网络协议:

计算机语言:
    1>机器语言
    2>汇编语言
    3>高级语言
    4>建模语言,UML作为主要的建模语言,成为可视化建模语言的工业标准。UML的作用不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。

UML的5种视图:
    1>用例视图(中心地位)
    2>逻辑视图(描述如何实现系统内部功能)
    3>进程视图(描述系统的并发性,并处理这些线程间的通信和同步)
    4>实现视图(描述系统代码构件组织和实现模块及它们之间的依赖关系)
    5>部署视图(定位系统中软硬件的物理体系结构及连接)

形式化语言
    Z语言,具有“状态-操作”风格的像是画规范说明语言,具备将数学进行结构化设计方式。
    形式化方法开发过程:按照软件工程“自顶向下,逐步求精”的原则,软件生命周期可分为可行性分析、需求分析、体系结构分析(将用户需求转换为计算机可以实现的目标系统)、详细分析、编码和测试发布6个阶段,形式化方法贯穿软件工程整个生命周期。

多媒体:
    音视频压缩方法有:
        1>有损压缩,解压缩后的数据与压缩前的数据不一致,在压缩过程中丢失一些人眼耳不敏感的图像或音频信息,这些丢失的信息是不可恢复,有损压缩常见格式有:MP3、WMA、OGG等。
        2>无损压缩,压缩前和压缩后的数据完全一致,多数采用RLE行程编码算法。无损压缩常见格式:WAV、PCM、TTA、FLAC等。

    数据压缩技术,按类别分为:
        1>即时压缩和非即时压缩,即时压缩是将语音信号转化为数字信号,同时进行压缩,然后即时通过Internet传送出去。
        2>数据压缩和文件压缩,数据压缩包含了文件压缩。
        3>无损压缩与有损压缩,无损压缩利用数据的统计冗余进行压缩,所以无损压缩的压缩比一般比较低。

    图像编码:静态图像压缩编码的国际标准(JPEG),是一种静态图像压缩和编码算法。动态图像视频编码标准(MPEG),面向运动图像压缩的标准。

    虚拟现实(VR)/ 增强现实(AR)技术:
        VR是一种可以创建和体验虚拟世界的计算机仿真系统,利用计算机生成一种模拟环境,使用户沉浸到该环境中。
        AR是把原本现实世界中很难体验到的实体信息(视觉、味觉、声音等),通过模拟仿真后,叠加到现实世界中被人类感官所感知。

系统工程(SE):
    系统工程是运用系统方法,对系统进行规划、研究、设计、制造、试验和使用的组织管理技术。
    生命周期方法:
        1)计划驱动方法,整个过程遵守规定流程的系统化方法。需求、设计、构建、测试、部署。
        2)渐进迭代式开发(IID),该方法允许为项目提供一个初始能力,随之提供连续交付以达到期望的系统。该方法适合较小、不太复杂的系统。
        3)精益开发,目标是通过彻底消除生产线上的浪费,不一致性及不合理需求,高效地生产出优质产品。它是一个动态的、知识驱动的、以客户为中心的过程。
        4)敏捷开发,目标在于灵活性、当风险可接受时允许从序列种排除特定事件。

    基于模型的系统工程(MBSE):MBSE的三大支柱分别是建模语言(sysML)、建模工具、建模思路

    系统性能与性能评估:
        1>计算机性能指标有:时钟频率(主频)、运算速度、运算精度、内存存储容量、存储器的存取周期、数据处理速率、吞吐率、各种响应时间、各种利用率、完整性和安全性、平均故障时间、兼容性、可扩展性和性价比。
        2>路由器性能指标有:设备吞吐量、端口吞吐量,全双工线速转发能力等。
        3>交换机性能指标有:最大Mac地址表大小、缓冲区大小、最大ATM端口数等。
        4>网络性能指标有:设备级性能指标、网络级性能指标、应用级性能指标和吞吐量。
        5>操作系统性能指标有:系统响应时间、系统吞吐率、系统资源利用率、可靠性和可移植性。
        6>数据库管理系统性能指标:数据库大小、数据库中表数量最大并发事务处理能力、负载均衡能力,最大连接数等。

    加速比反映了使用增强部件后完成一个任务比不适用加快了多少,加速比取决于:
        1>在原有的计算机,能被改进并增强的部分在总执行时间中所占的比例,这个值称为增强比例,它永远小于1.
        2>通过增强的执行方式所取得的改进,这个值是在原来条件下程序的执行时间与使用增强功能后程序的执行时间之比。

基准测试程序:
    4种评价程序,准确度依次递减:真实的程序、核心程序、小型基准程序和合成基准程序。把应用程序中用得最多,最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序。

web服务器性能评估:
    最大并发连接数、响应延迟和吞吐量等,常见的web服务器性能评测方法由基准性能测试、压力测试和可靠性测试。

2.2 考题总结:
2.2.1 嵌入式系统










2.2.2 计算机网络

层次化网络设计:(核心层、汇聚层、接入层):
三层模型将网络划分为核心层(在区域间高速转发数据分组,提供最优传送路径)、汇聚层(将网络业务连接到接入层,并实施与安全、流量负载和路由相关的策略)、接入层(为局域网或终端用户访问网络提供接入)。核心层是互联网络的高速骨干,在设计中应采用冗余组件设计。

















2.2.3 软件构件、中间件








2.2.4 计算机操作系统








2.2.5 计算机内存

















2.2.6 计算机总线


2.2.7 系统性能







2.2.8 计算机指令:CISC(复杂指令集计算机)、RISC(精简指令集计算机)





2.2.9 计算机语言



2.2.10 系统工程

第三章:信息系统

3.1 重要知识点:

信息系统概念:
    信息系统是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。
信息系统的5个基本功能:输入、存储、处理、输出、控制。

信息系统分类:
    1)业务处理系统(TPS),将计算机应用于企业局部业务的管理。
TPS,是最基础的信息系统,数据处理周期由5个阶段构成:
        1> 数据输入
        2>数据处理
        3>数据库维护
        4>文件报表产生
        5>查询处理

    2)管理信息系统(MIS),是由TPS发展而来, 是在TPS基础上引进了大量管理方法对企业整体信息进行处理, 并利用信息进行预测, 控制, 计划, 辅助企业全面管理的信息系统。
        管理信息系统由四大部件组成:
        1>信息源
        2>信息处理器
        3>信息用户
        4>信息管理者


        1>开环结构, 指在执行一个决策过程中不收集外部信息, 不根据信息情况改变决策, 直至产生本次决策的结果, 事后的评价只供以后的决策作参考.

        2>闭环结构, 指决策过程中不断收集信息, 不断发送给决策者, 不断调整决策.

    计算机实时处理系统均属于闭环系统, 而批处理系统均属于开环系统, 但对于一些较长的决策过程来说批处理系统也能构成闭环系统。

    一个管理信息系统可用一个功能/层次矩阵表示, 每一列表示一种管理功能, 每一行表示一个管理层次, 行列交叉表示一种功能子系统。


    3)决策支持系统(DSS),DSS是能帮助决策者利用数据和模型去解决半结构化决策问题和非结构化决策问题的交互系统。
        DSS由若干部件按一定结构组成, 部件不同或结构不同会构成功能略有差异的DSS, 但各种DSS结构都建立在某种基本模式之上. 如下图, 管理者处于核心地位, 运用自己的知识和经验, 结合决策支持系统提供的支持, 对其管理的"真实系统"进行决策。


    决策支持系统的组成:
        1>数据的重组和确认,从事务处理系统收集的数据必须经过重组和确认才能对决策支持有效。可以通过数据仓库实现。
        2>数据字典的建立,数据仓库是一个与作业层系统分离存在的数据库,通过对数据仓库的存取,管理者可以作出以事实为根据的决策来解决许多业务问题。
        3>数据挖掘和智能体,数据仓库建成后,可以使用智能体工具对数据进行存取和查询(数据挖掘)。
        4>模型建立, 模型管理是的目的是帮助决策者理解和分析。

    4)专家系统(ES),是一个智能计算机程序系统,应用人工智能技术,根据某领域一个或多个专家提供的知识和经验,模拟人类专家决策过程,以解决复杂问题。
        专家系统不同于传统应用程序(数据结构+算法=程序),也不同于其他类型的人工智能,主要表现在:
        1>属于人工智能范畴,解决的是半结构化或非结构化问题(传统程序解决的是结构化问题), 需要应用启发法或弱方法来解决,不同于传统程序算法。
        2>模拟的是人类专家在问题领域的推流(传统是通过建立数学模型模拟问题)
        3>专家系统由3个要素组成,描述问题状态的综合数据库、存放启发式经验知识的知识库,和对知识库的知识进行推理的推理机,三要素对应数据级、知识级、控制级(传统的至少有数据和程序两级结构)
        4>处理的问题属于现实中必须具备人类专家才能解决的问题
        5>从求解的手段来看,专家系统拥有高性能,但通用性较差。
        专家系统适合完成那些没有公认理论和方法,信息不完整,人类专家短缺或专门知识相对昂贵的工作,诸如规划设计,医疗诊断、质量监控等。

        人工智能的主要分支:

        专家系统的组成:

        推理机和知识一起构成专家系统的核心,推理机是一组用来控制系统运行、执行各种任务、根据知识库进行各种搜索和推理的程序模块。
        专家系统的常用推理方式有3种:
        1>正向推理或前向推理,数据驱动策略,从条件出发推出结论
        2>反向推流或逆向推理,目标驱动策略,先假设结论正确,再去验证条件是否满足。
        3>双向推理或混合推理,正向推理和反向推理同时进行,常用正向推理来确定各种假设的先后次序,用反向推理来验证假设是否成立。

    5)办公自动化系统(OAS),该系统将当代先进技术和设备应用于办公室的办公活动中,实现科学化、自动化以达到改善工作环境,提供工作效率。
        OAS主要功能有:
            1>事务处理
            2>信息管理
            3>辅助决策

    6)综合性信息系统,信息系统之间的关系不是取代关系,而是互相促进、共同发展的关系。在一个企业里,以上5个类型的信息系统,可能同时存在。目前企业主要使用的信息化系统主要有ERP(企业资源管理)、WMS系统(仓库管理系统)、MES系统(制造管理系统)、产品数据管理系统(PDM)。
        ERP是建立在信息技术基础上,利用现代企业的先进管理思想,全面继承了企业的所有资源信息(物流、资金流、信息流),并为企业提供决策、计划、控制与经营业绩评估的全方位和系统化的管理平台。


信息系统的生命周期:
    1)产生阶段
    2)开发阶段
    3) 运行阶段
    4)消亡阶段

信息系统的建设原则:
    1)高层管理人员介入原则。首席信息官(CIO)
    2)用户参与开发原则
    3)自顶向下规划原则
    4)工程化原则
    5)其他原则,例如:创新性原则,用于体现系统先进性;整体性原则,用来体现系统完整性;发展性原则,用来体现系统超前性;经济性原则,用来体现系统实用性。

信息系统的开发方法:
    1)结构化方法,目前最成熟、最广泛的信息系统开发方法之一。结构化开发过程一般是先把系统功能视为一个大的模块,再根据系统分析设计的要求对其进行进一步的模块分解或组合。其基本思想是将系统的生命周期划分为系统调查、系统分析、系统设计、系统实施、系统维护等阶段。结构化生命周期主要特点:
        1>开发目标清晰化, 遵循"用户第一"原则
        2>工作阶段程序化, 工程内容明确,注重开发过程的控制.
        3>开发文档规范化, 结构化方法的每一阶段完成后,要按照要求完成相应的文档,以保证各个工作阶段衔接与系统维护工作的便利.
        4>设计方法结构化, 采用自上而下的结构化,模块化分析与设计方法,使各个子系统间相互独立,便于系统分析,设计,实现与维护.

    2) 原型法, 指根据用户需求,利用系统开发工具,快速建立一个系统模型展现给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发方法.

    3) 面向对象方法, 面向对象的分析方法是利用面向对象的信息建模概念,如实体,关系,属性等,同时运用封装,继承,多态等机制来构造模拟现实系统的方法.传统的结构化设计方法基本点是面向过程,系统被分解成多个过程, 而在面向对象设计中,初始元素是对象,然后将具有共同特征的对象归类,组织类之间的等级关系,构造类库.在应用时,在类库中选择相应的类.

    4) 面向服务的方法, 面向对象的应用构建在类和对象上, 随后发展起来的建模技术将相关对象按照业务功能进行分组, 就形成了构建概念. 对于跨构建的功能调用,则采用接口形式, 进一步将接口的定义和实现进行解耦,便有了面向服务的开发方法.

典型的信息系统架构模型-电子政务:
    电子政务主要包括3个组成部分:
        1)政府部门内的电子化和网络办公
        2)政府部门间的信息共享和实时通信
        3)政府部门通过网络与居民之间的双向信息交流

    电子政务内容:
    围绕三个行为主体:政府与政府、政府与企业、政府与居民之间的互动构成5个不同、又相互关联的领域:
        1)政府与政府,中央政府与地方政府部门之间的互动
        2)政府对企业,包括政府对企业发布的各种政策
        3) 政府对居民,政府面向居民提供的服务
        4)企业对政府,企业面向政府的活动包括缴纳税款等
        5)居民对政府,包括个人缴纳税款等

企业信息化
    企业信息化目的在于提高企业的竞争力,企业信息化涉及:技术创新、管理创新、制度创新。

3.2 考题总结:
3.2.1 电子政务、电子商务



3.2.2 企业相关


3.2.3 ERP、CRM相关





3.2.4 信息系统













第四章:信息安全

4.1 重要知识点:

信息安全概念:
    信息安全包括5个基本要素:
    1)机密性
    2)完整性(不被篡改)
    3)可用性(可访问)
    4)可控性(可控制信息流向及行为方式)
    5)可审查性(对出现的问题提供调查依据和手段)

    信息安全范围包含:
    1)设备安全,包括:设备的稳定性(不出故障的概率)、可靠性(正常执行任务概率)、可用性(正常使用的概率)
    2)数据安全,包括:数据的秘密性、数据的完整性、数据的可用性(随时能正常使用)
    3)内容安全,包括:在政治上是健康的、符合法律法规、符合道德规范。
    4)行为安全,包括:秘密性、完整性、可控性

网络安全:
    网络安全威胁主要表现在:
    1>非授权访问
    2>信息泄露或丢失
    3>破坏数据完整性, 恶意添加、修改数据,干扰用户正常使用
    4>拒绝服务攻击,合法用户不能进入系统和得到相应服务
    5>利用网络传播病毒

    安全措施的目标,包括以下几个方面:
    1>访问控制
    2>认证
    3>完整性
    4>审计,确保任何繁盛的交易在事后可以被证实
    5>保密

信息安全系统的组成框架:
    信息系统安全系统框架的通常由下面内容共同构建:技术体系、组织机构体系、管理体系。

信息加解密技术:

    对称密钥加密算法:DES、IDEA、AES
        加密密钥和解密密钥是相同的,称为共享密码算法或对称密钥算法。

    DES (数据加密标准):
        明文被分成64位的块,对每个块进行19次变换(替换和换位)

    三重DES是对DES的改进算法,使用两把密钥对报文进行三次DES加密。
        密钥K1,K2的操作步骤:
            1> 用密钥K1进行DES加密
            2> 用K2对1>的结果进行DES解密
            3> 对2>的结果使用密钥K1进行DES加密

    IDEA(国际数据加密算法):
        使用128位密钥,把明文分成64位的块,进行8轮迭代加密,它可以使用软件或硬件实现,比DES快。IDEA是在DES算法的基础上发展出来的,类似于三重DES,发展IDEA也是因为感到DES具有密钥太短等缺点. IDEA的目标是提供比DES更强的安全性,并且保持相似的计算复杂度。

    AES (高级加密标准):
        作为DES加密算法的替代方案,提供的安全级别足以保护未来20~30年内的数据,可以通过软件或硬件实现。

    非对称密钥加密算法:RSA
        加密密钥和解密密钥不同称为不共享密钥算法或非对称密钥算法。用公钥加密,私钥解密可以实现保密通信。用私钥加密,公钥解密,可以实现数字签名。

    RSA,最有名的非对称加密算法 (公钥加密,私钥解密)。

    密钥管理学:
        KDC密钥分发协议
        公钥加密体制的密钥管理
        公钥加密分配单钥密码体制的密钥

    访问控制与数字签名:
        访问控制包括3个要素:主体(S或U)、客体(O)和控制策略(KS)。

        访问控制包括3个方面内容:认证(主客互为认证)、控制策略实现(主体对客体的访问规则集)、审计(对管理员的行为记录等)

        访问控制的实现技术:
            1>访问控制矩阵,通过矩阵形式表示访问控制规则和授权用户权限的方法。
            2>访问控制表,目前使用最多的访问控制技术,每个客体有一个访问控制表,是系统中每一个有权访问这个客体的主体的信息。实际上是按列保存访问矩阵。
            3>能力表,每个主体有个能力表,是该主体对系统中每个客体的访问权限信息。实际上是按行保存访问矩阵。
            4>授权关系表,按主体排序,查询时就能得到能力表,按客体排序,查询时就能得到访问控制表。既不对应行也不对应列的访问矩阵实现技术。

    数字签名:
        1>对称密钥签名:
使用相同的密钥进行签名和验证过程的数字签名,优点是容易实现互换使用,缺点是密钥暴露,系统变得不安全。(可推导)

        2>公开密钥签名:
        在公钥密码系统中,加密密钥和解密密钥是不同的。

        实践中,对长文件签名采用公钥密码算法效率太低,所以要和快速高效的摘要算法(hash函数)一起使用。这个过程是:首先用摘要算法对消息进行摘要,然后在把摘要值用信源的私钥加密;接收方先把接收的明文用同样的摘要算法摘要,形成“准签体”,然后再把准签体与用信源的公钥解密出的“签体”进行比较,如果相同就认为消息是完整的,否则消息不完整。

    抗攻击技术:
        密钥分为两类:数据加密密钥(DK)、密钥加密密钥(KK)
        密钥生成需要考虑三方面因素:增大密钥空间、选择强钥、密钥的随机性,好的生成密钥是一个随机位串。

        1) 拒绝服务攻击:
            传统拒绝服务攻击 (DoS)
            分布式拒绝服务攻击 (DDoS)

            拒绝服务器攻击的防御方法:
            1>加强对数据包的特征识别
            2>设备防火墙监视本地主机端口的使用情况
            3>对通信数据量进行统计
            4>尽可能的修正已发现的问题和系统漏洞

        2) 欺骗攻击:
            ARP欺骗
            ARP原理:A向C发送报文,如果本地ARP表有C的IP对应的MAC地址,就会通过该MAC地址进行数据传输。如果没有,就会发送一个ARP请求的广播包(带有自己的MAC和想要访问的IP),主机C在接收到广播包后,就会向A回复带有自己MAC信息的ARP相应报文,A收到相应报文后就会更新自己的ARP缓存,同时用C的MAC进行数据传输。

            ARP欺骗过程:

        ARP欺骗防范措施:
            1> 输入命令固化ARP表,阻止ARP欺骗,命令为:arp -s gate-way-ip gate-way-mac
            2> 使用ARP服务器
            3> 使用双向绑定的方法解决并且防止ARP欺骗
            4>ARP防护软件-ARP Guard

        DNS欺骗
            DNS欺骗原理:
            冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,用户上网只能看到攻击者的主页,它不是真的黑掉网站,而是冒名顶替。

            DNS欺骗的检测,根据手段不同,分为:
                1>被动监听检测,通过旁路监听方式,捕获所有DNS请求和应答数据包,并为其建立一个请求应答映射表,如果在一定时间间隔内,一个请求对应两个或两个以上结果不同的应答包,则怀疑是DSN欺骗攻击。
                2>虚假报文探测,通过主动向一个非DNS服务器发送探测包,正常来说是不会收到应答,但是攻击者不会验证是否是合法DNS服务器,要继续欺骗,会发送它的应答包,说明收到攻击了。
                3>交叉检查查询,客户端在收到DNS应答包之后,向DNS服务器反向查应答包中返回IP地址所对应的DNS名字,如果二者一致则说明没有收到攻击。

        IP欺骗
            IP地址欺骗是指行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。这是一种黑客的攻击形式,黑客使用一台计算机上网,而借用另外一台机器的IP地址,从而冒充另外一台机器与服务器打交道。

            IP欺骗的防范:
                1.删除UNIX中所有的/etc/hosts.equiv, $HOME/.rhosts文件,修改/etc/inetd.conf文件,使得RPC机制无法应用
                2.设置防火墙过滤来自外部而信源地址却是内部IP的报文

        3) 端口扫描:
            端口扫描原理:
                端口是由TCP/IP协议定义,用IP和端口作为套接字,成为socket,IP:端口来定位一台主机的进程,端口相当于两台计算机进程间的大门。端口扫描就是尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复,则说明该端口开放,即为活动端口。
                扫描原理分类:
                1>全TCP连接,经过三次握手,会被目标主机记录,方法古老。
                2>半打开式扫描(SYN扫描),扫描主机发送SYN数据段,目标主机如果回应SYN=1,ACK=1,则表示端口是活动的,则扫描主机发送一个RST给目标主机拒绝TCP连接;如果目标主机回应的是RST则端口是死的,扫描主机不会做反应。由于连接未建立,所以大大降低被记录的可能。
                3>FIN扫描,扫描主机发送一个FIN=1的TCP报文,如果端口是关闭的,报文会被丢掉,并返回一个RST报文。如果端口是活动的,不会返回任何反应。这种没有涉及TCP连接部分,比前两种安全,称为秘密扫描。
                4>第三方扫描,利用第三方主机(被入侵的主机,肉鸡)来代替入侵者进行扫描。

        4) TCP/IP堆栈攻击:
            1> 同步包风暴 (SYN Flooding),是当前最流行的DoS与DDos的攻击方式之一
            原理:
                TCP三次握手,用户向服务器发送SYN报文请求后突然死机,服务器发出SYN+ACK应答报文后无法收到客户端的ACK报文(第三次握手无法完成),这种情况服务器会重试,并等待一段时间(SYS Timeout:30s-2min)后丢弃这个未完成的连接,如果大规模模拟这种情况,服务器的TCP/IP就会溢出崩溃,服务器失去响应。
                2> ICMP攻击
                原理:
                    ICMP协议是TCP/IP协议集中的一个子协议,主要用于主机与路由器之间传递控制信息,包括报告错误、交换首先控制和状态信息等。ping命令通过发送ICMP回应请求信息并记录收到ICMP回应的回复消息,来判断主机或网络故障。“ping of Death”攻击利用ICMP数据最大尺寸不超过64KB,达到使TCP/IP堆栈崩溃。
                3> SNMP攻击
                原理:
                    SNMP 是TCP/IP网络中标准的管理协议,它允许网络中的各种设备和软件,包括交换机、路由器等,管理软件通信,汇报当前的行为和状态,入侵者一旦入侵成功,就能管理你的网络。

    5) 系统漏洞扫描:
        1> 基于网络的漏洞扫描器
        2> 基于主机的漏洞扫描器

信息安全的保障体系与评估方法:
    计算机系统安全保护能力的5个等级:
        1)第1级:用户自主保护级(C1), 计算机信息系统可信计算基通过隔离用户与数据 ,对用户实施访问控制,避免其他永固对数据非法读写与破坏
        2)第2级:系统审计保护级(C2),计算机信息系统可信计算基实施了粒度更细的自主访问控制, 通过登录规程、审计安全性相关事件和隔离资源,使用户对自己的行为负责。
        3)第3级:安全标记保护级,计算机信息系统可信计算基具有审计保护级所有有功能, 具有2级所有功能外,还提供有关安全策略模型、数据标记以及主体对客体强制访问控制的非形式化描述;具有准确标记输出信息的能力;消除通过测试发现的任何错误。
        4)第4级:结构化保护级,计算机信息系统可信计算基建立在一个明确定义的形式化安全策略模型之上,它要求将第3级别的自主和强制访问控制扩展到所有主体与客体。此外,还考虑隐蔽通道,接口明确定义,设计与实现经过更充分的恶测试与更完整的复审。
        5)第5级:访问验证保护级,计算机信息系统可信计算基满足访问监控器需求。支持安全管理员职能,扩充审计机制,提供系统恢复机制,系统具有很高的抗渗透能力。

    风险评估的基本要素为:脆弱性, 资产, 威胁, 风险和安全措施, 与这些要素相关的属性分别为业务战略, 资产价值, 安全需求, 安全事件和残余风险.

4.2 考题总结:
4.2.1 信息安全

4.2.2 网络安全









4.2.3 加密算法


4.2.4 数字证书、证书认证



第五章:软件工程

5.1 重要知识点:

软件工程定义:
    软件工程过程是指为获得软件产品,再软件工具的支持下由软件工程师完成的一系列软件工程活动,包括:
        1)软件规格说明(P/plan)
        2)软件开发 (D/Do)
        3)软件确认 (C/Check)
        4)软件演进 (A/Action)

    软件过程模型
        1)瀑布模型:
        前一个阶段工作的输出结果,是后一个阶段工作的输入。

        2)原型模型(快速模型):
            软件开发人员根据用户提出的软件系统定义,快速开发一个原型。该原型包含目标系统关键问题和反映目标系统大致面貌,展现目标系统的全部或部分功能、性能等。

        3)螺旋模型:
            是在快速原型的基础上扩展而成,这种模型把整个软件开发阶段分成多个阶段,每个阶段由4部分组成:
            1>目标设定,进行需求分析,确定目标,制定计划
            2>风险分析,进行风险识别和详细分析,制定解决办法
            3>开发和有效性验证,选择开发模型,进行原型开发
            4>评审,确定是否进入螺旋线的下一次回路,是的话就要制定下一阶段计划。
            螺旋模型是上诉4个部分的迭代过程,每迭代一次就增加一圈,生成一个新版本,经过若干次迭代后,成为目标版本。该模型支持大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法,也适用于集中开发方法的组合。

    敏捷模型:
        敏捷方法的特点:
            以产品为中心,注重结果而不强调过程;快速响应需求变更,拥抱变化。
敏捷型开发区别于重型开发(长时间计划后开发)与计划驱动(开发人员服从一个过程)方法的两个特点:
            1>适应性和预设性,欢迎变化,允许改变自身来适应变化
            2>面向人而非面向过程,开发人员和管理人员在一个软件项目中有同等的领导地位,共同对整个开发过程负责。敏捷开发强调开发中相关人员主动交流,提测直接的面对面交流。敏捷开发一般按照高内聚、低耦合的原则将项目划分成若干个小组,以增加沟通,提高敏捷性及应变能力。

        主要的敏捷方法:
            1>极限编程(XP)
            2>水晶系列方法
            3>Scrum
            4>特征驱动开发方法(FDD)

    统一过程模型(RUP):
        RUP描述了如何有效利用商业的、可靠的方法开发和部署软件,是一种重量级过程。

        RUP的软件开发生命周期是一个二维的软件开发模型,RUP有9个核心工作流:
        1)业务建模,理解开发系统的机构及其商业运作,确保参与人员对开发系统的机构有共同认识
        2)需求,定义系统功能及用户界面,使客户知道系统功能,使开发人员理解系统需求
        3)分析与设计,需求分析结果转化为分析与设计模型
        4)实现,对开发代码做单元测试,将不同的开发模块集成可执行系统
        5)测试
        6)部署
        7)配置与变更管理,跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
        8)项目管理,为软件开发项目提供计划,人员分配、执行、监控等方面指导,为风险管理提供框架。
        9)环境,为软件开发机构提供软件开发环境

        RUP把软件开发周期划分为多个循环,每个循环产生一个新版本,每个循环依次由4个阶段组成:
        1)初始阶段,定义最终产品视图和业务模型
        2)细化阶段,设计系统的体系结构,制定工作计划
        3)构造阶段,构造产品并继续演进需求、体系结构、计划直至产品提交
        4)移交阶段,把产品交给客户
    每个阶段有个里程碑评估该阶段的工作,如未能通过,则决策者要做出决定取消还是继续项目工作。

        RUP中的核心概念:
        1)角色,who的问题, RUP预先定义了许多角色,例如体系结构师、设计人员、实现人员、测试和配置管理人员等。
        2)活动,how的问题, 活动是一个有明确目的的独立工作单元
        3)制品, what的问题,制品是活动生成、创建和修改的一段信息(产品、工件)。
        4)工作流,when的问题,描述了一个有意义的连续活动序列,每个工作流产生一些有价值的产品。

        RUP的特点:
        RUP是用例驱动的、以体系结构为中心、迭代和增量的软件开发过程。特点有:
        1)用例驱动,用例(Use Case)是一种通过用户的使用场景获得需求的技术。用例驱动指的是在软件开发过程中,采用用例方法捕获及分析业务需求,并确保由它们来驱动软件的设计、实现和测试,使最终系统更能满足最终用户的需要。
        2)以体系结构为中心,RUP的开发活动围绕体系结构(构件的集合)展开,体系结构的设计需要考虑多方面问题(例如系统功能、性能、可移植可修改、开发时间等),因此它是个多维结构,RUP采用4+1视图来描述软件体系结构:

        3)迭代与增量,把整个项目开发分成多个迭代过程,每次迭代,只考虑一部分需求进行分析、设计、实现、测试与部署过程,最终完成整个项目,优点是对早期风险可控、适合处理需求变更、鼓舞士气增加信心等。

软件能力成熟度模型(CMM):
    CMMI是软件能力程度模型集成是在CMM的基础上发展而来,主要用于指导软件开发过程的改进和进行软件开发能力的评估。

    CMMI提供了一个软件能力成熟度的框架,它将软件过程改进的步骤组织成5个成熟度等级,共包括18个关键过程域,52个过程目标,3168种关键时间。
    1)Level 1 初始级,过程随意且混乱,依赖于组织内人员的能力,能产出产品,但是经常超过计划预算和成本。
    2)Level 2 已管理级,意味着组织要确保策划、文档化、执行、监督和控制项目级的过程,并且需要为过程建立明确目标、并能实现成本、进度和质量目标等。
    3)Level 3 已定义级,企业能够根据自身的特殊情况定义适合自己企业和项目的标准流程,将这套管理体系于流程制度化,同时企业开始进行项目积累,企业资产的收集。
    4)Level 4 量化管理级,组织建立了产品质量、服务质量以及过程性能的定量目标,与级别3区别在对过程性能的可预测。
    5)Level 5 优化级,关注于通过增量式的与创新式的过程与技术改进,不断改进过程性能,处理级别5,组织使用从多个项目收集的数据对整体的组织级绩效进行关注。

需求工程:
    需求工程的目标:确定客户需求,定义设想中系统的所有外部特征,它的活动主要划分为几个阶段:
    1)需求获取
    2)需求分析
    3)形成需求规格书
    4)需求确认与验证
    5)需求管理,包括需求文档的追踪管理、变更控制、版本可控制等管理性活动。

    需求获取的基本步骤:
    1)开发高层的业务模型,如果对领域充分了解,可以建立业务模型,描述用户业务过程,确定用户初始需求,通过迭代,深入应用领域,该进业务模型。
    2)定义项目范围和高层需求,项目范围描述参与者(包括人、设备等)之间的关系,高层需求不涉及过多细节,主要表示系统需求的概貌。常见的有系统上下文图和系统顶层用例图等。
    3)识别用户角色和用户代表,确定所有涉众,包括用户角色(可以是人或部件)和用户角色代表(熟悉部件的人)
    4)获取具体的需求,获取每个涉众的具体、完整和详细的需求。
    5)确定目标系统的业务工作流,开发前确定系统的业务工作流和主要业务规则。
    6)需求整理与总结,最后对上面步骤的需求资料进行整理和总结。

    需求获取的方法:
    1)用户面谈
    2)需求专题讨论会,开会集体讨论
    3)问卷调查,可用于确认假设和收集统计倾向数据,它一般作为完成最初的面谈和分析后的一项协作技术。
    4)现场观察,通过观察用户实际执行业务的过程,来直观了解业务的执行过程。
    5)原型化方法,通过开发系统原型以及和用户多次迭代反馈,积极而早期阶段不确定的问题。
    6)头脑风暴法,新业务扩展项目,通过参会者敞开思想使各种设想碰撞中激起头脑风暴,从而确定具体需求。

    需求变更管理过程:

    变更控制委员会(CCB):
        由用户和实施方的决策人员组成,是决策机构,不是作业机构,通过评审手段决定项目是否能变 更,但不提变更方案。

    需求跟踪的两种方式:
    1)正向跟踪,根据检查《产品需求规格说明书》中的每个需求是否都能在后续工作成果中找出对应点。
    2)逆向跟踪,检查设计文档、代码、测试用例等工作成果是否都能在《产品需求规格说明书》中找到出处。

    系统分析与设计:
        系统分析是应用系统思想和方法,把复杂的对象分解为简单的组成部分,找出这些部分的基本属性和彼此之间关系的过程。系统设计包括概要设计与详细设计。

结构化方法:
结构化分析 (SA):
    给出一组帮助系统分析人员产生功能规约的原理与技术,它一般利用图形表达用户需求。
    步骤有:
    1>分析业务情况,做出反映当前物理模型的数据流图(DFD)
    2>推导出等价的逻辑模型的DFD
    3>设计新的逻辑系统,生成数据字典和基元描述
    4>建立人机接口,提出可供选择的目标系统物理模型DFD
    5>确定各种方案的成本和风险等级,据此对各种方案进行分析
    6>选择一种方案
    7>建立完整的需求规约

    结构化分析的常用手段是:
    1>数据流图(DFD),DFD由4种基本元素组成:
        1.数据流,用箭头表示,表示数据流向
        2.处理,用矩形框表示,表示数据进行的加工和转换。
        3.数据存储,表示用数据库(或文件)形式存储数据,对其进行的存储分别以指向或者离开数据存储的箭头表示
        4.外部项,数据源或者数据终端,用圆角框或平行四边形框表示。
    2>数据字典
        数据字典的作用是给数据流图DFD上每个元素加以定义和说明

结构化设计(SD)
    结构化设计是一种面向数据来的设计方法,以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,自顶向下、逐步求精和模块化的过程。SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成结构,分为概要设计(对系统进行模块划分,确定模块功能、接口和模块之间的调用关系)和详细设计(为每个模块设计实现细节)两个阶段。

    模块结构:
        紧密耦合表示模块之间的联系非常强,松散耦合表示模块之间联系比较弱,非直接耦合表示模块之间无任何直接联系;一般来说,各模块内聚高,模块间的耦合就低,但不是绝对,在模块分解中遵循"高内聚、低耦合"的设计原则。
内聚,表示模块内部各代码成分之间联系的紧密程度,一个好的内聚模块只做目标单一的一件事。

结构化编程(SP)
    结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过"顺序、选择、循环"的控制结构进行连接,并且只有一个入口和一个出口。

面向对象方法 (OO):
面向对象分析(OOA):
    OOA原则包括:
    1>抽象,(共同特征)包含过程抽象和数据抽象两方面
    2>封装,隐藏对象内部细节
    3>继承
    4>分类,把相同属性和服务划分为一类,用类来作为这些对象的抽象描述。
    5>聚合,把复杂事务看成若干个简单的事物的组装体,从而简化对复杂事物的描述
    6>关联,通过一个事物联想到另外的事物。
    7>消息通信,对象之间只能通过消息通信,不允许对象之外直接存取对象内部属性
    8>粒度控制,控制视野,考虑全局时,注意大的组成部分,考虑某部分细节时,暂时撇开其他部分。
    9>行为分析

OOA的基本步骤:
    1)确定对象和类
    2)确定结构
    3)确定主题
    4)确定属性
    5)确定方法

面向对象设计(OOD):
    是OOA方法的延续,基本思想包括抽象、封装和可扩展性(主要通过继承和多态实现)。设计类在OOD中最重要的组成部分,在OOD种,类可以分为3种类型:
    1)实体类,实体类映射需求中的每个实体
    2)控制类,用于控制用例工作的类,例如身份验证
    3)边界类,用于封装在用例内外流动的信息或数据流,它位于系统与边界的交接处,包括窗体、打印机等硬件接口以及其他系统的接口。

面向对象编程(OOP):
    OOP达到软件工程的3个目标:重用性、灵活性和扩展性。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

OOP的基本特点:
    1)封装,把数据和操作封装到类中,封装的最基本单位是对象,它是实现"高内聚、低耦合"所需要实现的最基本目标。
    2)继承,指一个对象针对与另一个对象的某些独有的特点、能力进行复制或延续。按继承源划分,可分为单继承、多继承;按包含内容划分,可分为取代继承、包含继承、受限继承、特化继承。
    3)多态,指当多个对象同时收到同一个完全相同的消息后,所表现出不同的动作。

软件测试:
测试方法:
    以测试过程中程序执行状态为依据,可分为:
        静态测试(ST),被测程序不执行,只通过对软件的需求规格说明书、设计说明书以及源程序做结构分析和流程图分析,找出错误。
        动态测试(DT),通过运行被测程序,对得到的运行结果与预期结果进行比较分析,同时分析运行效率和健壮性能等。分为三步骤:构造测试实例,执行程序以及分析结果。

    以具体实现算法细节和系统内部结构的相关情况分为:
        1)黑盒测试,将被测程序看成一个黑盒,不考虑任何程序内部结构和特性下,根据需求说明书设计测试用例,检查程序功能是否准确运行。主要是对软件界面和软件功能进行测试。黑盒测试必须加以量化才能有效保证软件质量。

        2)白盒测试,主要借助程序内部的逻辑和相关信息,通过检测内部动作是否按设计规格说明书设定进行,检查每一条通路能否正常工作。白盒测试是从程序结构方面出发对测试用例进行设计。常用的白盒测试法有控制流分析、数据流分析、路径分析、程序变异等。根据测试用例的覆盖程度,分为语句覆盖、判定覆盖、分支覆盖和路径覆盖等。

        3)灰盒测试,介于黑白盒之间,它只是简单靠一些象征的现象判断其内部运行情况,内部出现错误,输出正确可以采用灰盒测试方法,它比白盒高效,比黑盒适用性广。

    以程序执行的方法分类,分为:
        1)人工测试(MT)
        2)自动化测试(AT),将人驱动的测试行为转化为及其执行。

测试阶段:
    按阶段分为:
    1)单元测试,对软件模块进行测试,可以通过黑盒测试方法提出基本的测试用例,再用白盒测试方法进行验证。若用黑盒测试提出的测试用例不完整,可采用白盒增补新的测试用例。
    2)集成测试,对组装后的模块同时进行测试,一般采用黑白盒结合的方法进行测试。
    3)系统测试,一般情况下,系统测试采用黑盒测试,主要测试内容跟包括:
        1>功能测试
        2>性能测试,通过自动化测试工具模拟多种负载条件对系统各项性能指标进行测试。负载测试和压力测试,都属于性能测试。
        3>验收测试,最后一个阶段的测试,是由用户对要交付软件开展的一种测试工作。通过验收测试,软件可进行发布。Alpha测试是在开发内部的用户模拟实际操作环境下的测试,开发人员在该环境中。Beta测试是由软件的多个用户在实际使用环境中进行的测试,开发人员不在测试现场,通过用户记录问题后反馈给开发人员。一般Alpha测试先于Beta测试,通过Beta测试后就可以正式发布。

净室软件工程 (CSE):
    是一种应用数据域统计学理论以经济的方式生产高质量软件的工程技术。CSE不是先制作一个产品,再去消除缺陷,而是要求在规约和设计中消除错误,以"净"的方式制作,降低开发风险。通过第一次正确书写代码增量,并测试前验证它们正确性,来避免错误。它提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制。净室是针对高质量软件生产的。

    技术手段主要有4种:
        1)统计过程控制下的增量式开发
        2)基于函数的规范与设计,采用盒子结构(黑盒开始,被转化为状态盒,最后由明盒实现)
        3)正确性验证
        4)统计测试和软件验证

    应用与缺点:
        1)CSE太理论化,需要更多的数学知识.
        2)CSE开发小组不进行传统模块测试不现实
        3)CSE毕竟脱胎于传统软件工程,不可避免带有传统软件工程的弊端

基于构件的软件工程 (CBSE):
    是一种基于分布对象技术、强调通过可复用构件设计与构造系统的软件复用途径。CBSE体现了”购买而不是重新构造“的哲学,将软件开发的重点从程序编写转移到基于已有构件的组装,以更快地构造系统。工程师的焦点从实现变成了集成,开发可复用软件组件来满足共性的软件系统。

    构件组装指构件相互就直接集成或是用专门编写的”胶水代码“将它们整合在一起创造一个系统或另一个构件的过程。
    常见的组装构件有3种方式:
    1)顺序组装,上个构件的输出,与下个构件的输入,通过胶水代码整合
    2)层次组装,一个构件直接调用由另一个构件所提供的服务。
    3)叠加组装,两个或两个以上的构件放在一起创建一个新的构件。
对于接口不兼容情况,一般通过编写适配器构件使两个可复用构件接口相一致。

软件项目管理:
    软件管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员、产品、过程和项目进行分析和管理的活动。

工作分解结构 (WBS):
    把一个项目按一定的原则分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中。(项目—>任务—>工作—>日常活动)

软件配置管理(SCM):
    目标是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。
    软件配置管理核心内容包括:
    1)版本控制,记录文件更改内容,每次更改,版本号增加;并行开发,通过分支合并解决问题
    2)变更控制,不是控制变更发生,而是对变更进行管理,确保变更有序进行。

软件质量保证(SQA):
主要任务:
    1)SQA审计与评审,包括对工作产品、软件工具和设备的审计,评价是否符合标准。
    2)SQA报告,SQA人员记录结果,写入报告,发布给相关人员。
    3)处理不符合问题,SQA人员要对工作中发现的问题及时向有关人员反映。

软件质量认证:
    用于检测整个企业的质量水平,目前国内软件企业主要采用:
    1)ISO 9000认证
    2)CMM认证

5.2 考题总结:
5.2.1 软件测试

















5.2.2 需求工程








5.2.3 敏捷方法、敏捷开发、敏捷模型

5.2.4 项目管理











数据资产的特征包括:可增值或贬值、可共享、可控制、可量化、可变现。

5.2.5 面向对象





5.2.6 过程能力成熟度模型(CMM)



5.2.7 软件统一开发过程(RUP)






5.2.8 软件过程模型





5.2.9 净室软件工程(CSE)


5.2.10 系统分析与设计





5.2.11 软件设计、软件开发方法、开发工具








5.2.12 基于构件的软件工程(CBSE)


![在这里插入图片描述](https://img-blog.csdnimg/direct/15

5.2.13 软件维护

第六章:数据库设计

6.1 重要知识点:

数据库存储体系分类:
    1>关系型数据库,是最传统的数据库类型,是把复杂的数据结构归结未简单的二元关系,表之间有各种关系,通过对这些关联表格进行分类、合并、连接或选取等运算来实现数据库的管理。
    2>键值数据库,是一种非关系型数据库,使用简单的键值来存储数据。(map存储等)
    3>文档数据库,可以存放并获取文档,可以是XML、JSON、BSON等格式,这些文档具备可述性,呈现树状结构,包含映射表、集合和纯量值。文档数据库所存放的文档,相当于键值数据库所存放的值。
    4>搜索引擎数据库,应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量数据,并以特定格式进行存储,这样检索性能最优。

关系数据库设计步骤:
    1>数据需求分析,主要参与人员是分析人员与用户,分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析(SA)是从最上层的系统组织机构入手,采用逐层分解方式分析系统,并把每一层用数据流图和数据字典描述,以获得用户对系统的信息要求(保存哪些信息)、处理要求(什么样的操作功能)、系统要求(安全性包括用户权限等,使用环境等)。

    2> 概念结构设计,目标是产生反映系统信息需求的数据库概念结构,描述概念模型较理想的工具是E-R图。

    3>逻辑结构设计,进行数据模型设计,可以是层次、网状模型和关系模型。主要任务是确定数据模型,将E-R图转换为关系模式,确定完整性约束,确定用户视图。

    4>物理结构设计,对已确定的数据逻辑结构,采用DBMS所提供的方法与技术,以较优的存储结构和数据存取路径、合理的数据存放位置与存储分配,设计出一个高效、可实现的数据库物理结构。

    5>应用程序设计,是DBMS的二次开发,一方面是对用户信息的存储,另一方面是对用户处理要求的实现。要做的工作有选择设计方法、制定开发计划、选择系统架构和设计安全性策略。设计方法有结构化设计方法和面向对象设计方法两种。安全性策略主要指硬件平台、操作系统、数据库系统、网络及应用系统的安全。

    6>运行维护,要做的工作有数据库的转储和恢复,数据库的安全性和完整性控制,数据库性能的监督、分析和改造,数据库的重组和重构等。

    分布式数据库4层结构模式:

数据库系统与数据库管理系统:
    数据库系统(DBS)是一个采用了数据库技术,有组织地、动态存储大量相关联数据,方便多用户访问的计算机系统。
    数据库管理系统(DBMS)是数据库系统的核心软件,由相关联的数据集合和一组用以访问这些数据的软件组成。

    常用数据库管理系统:
    1>MySQL, 小型关系数据库管理系统。
    2>Access,小型关系数据库管理系统。
    3>Oracle, 适用于大型、中型和微型计算机的关系数据库管理系统。
    4>IBM DB2
大型关系型数据库平台,DB2采用多进程多线索体系结构,可运行在多种操作系统之上。
    5>Sybase,C/S结构的关系数据库系统,是世界上第一个真正基于C/S结构的RDBMS产品。
    6>Microsoft SQL Server,是一种典型的关系型数据库管理系统,可运行于多个操作系统上。

数据库三级模式:
    从数据库管理系统的角度,数据库也分为三级模式,分别是外模式(提供给用户)、概念模式(提供连接这两极模式的中间观点)、内模式(存储在磁盘)。


关系数据库概念:
    关系模型是关系数据库的基础,由关系数据结构、关系操作集合和关系完整性规则3部分组成。
关系数据库管理系统(RDBMS)
    关系的基本术语:
    1)属性(事物特征,例如学号)
    2)域(取值范围,例如学号的域是6为整型数)
    3)目或度(指属性的个数)
    4)候选码(可以唯一标识一个关系中元组的属性集合)
    5)主码(有多个候选码,选定其中一个作为主码)
    6)主属性(包含在候选码中的属性)
    7)外码(外码的定义是在一个表中创建一个外键,该外键与另一个表中的主键关联。)
    8)全码(若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码)
    9)笛卡尔积
        例如,如果集合A={1,2,3},集合B={a,b,c},那么集合A和集合B的笛卡尔积就是{(1,a),(1,b),(1,c),(2,a),(2,b),(2,c),(3,a),(3,b),(3,c)}。

候选码:可以用树形图推导
保持函数依赖:F=F1并F2
无损连接2个U:(R1∩R2)→(R1–R2)、(R1∩R2)→(R2–R1)
多个就看有没从F关系,直接分成F1、F2...

关系的完整性约束,分为3类:
    1)实体完整性,要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是唯一且非空值。
    2)参照完整性

    关系型数据库的关系运算:

    1)并:求并就是将两个关系的元组合起来,有重复的就保留一个
    2)交:R1∩R2就是保留R1与R2中都有的元组
    3)差:R1-R2就是从R1中删去R2中有的元组
    4)广义笛卡尔积:
假设集合A={0, 1},集合B={a, b, c},则两个集合的笛卡尔积为{(0, a), (0, b), (0, c), (1, a), (1, b), (1, c)}。
    5)投影 π







6.2 考题总结:
6.2.1 关系运算与数据库范式











6.2.2 数据库相关概念









6.2.3 数据库设计:E-R图




第七章:架构设计

7.1 重要知识点:

软件架构概念:
    软件架构的定义:软件架构设计通常考虑到设计金字塔中的两个层次:数据设计(封装属性和操作)、体系结构设计(关注构件结构、属性、交互)。

软件架构设计与生命周期:
    1)需求分析阶段,需求分析和SA设计面临两个不同对象:问题空间、解空间,保持两者的可追踪性和可转换性,在需求阶段分析SA,有助于SA的概念贯穿整个软件生命周期。

    2)设计阶段,是SA研究关注最早和最多的阶段,有关SA模型描述的研究分为3个层次:SA基本概念、体系结构描述语言(ADL)、SA模型多视图表示(典型的包括4+1模型:逻辑视图、进程视图、开发视图、物理视图)。

    3)实现阶段,典型方法:在SA模型引入程序设计语言等、通过模型转换,将高层SA模型逐步精化、封装底层细节,使之称为较大粒度构件。

    4)构件组装阶段,研究内容:如何支持可复用构件的互联、在组装中,如何检测并消除体系结构是失配问题。中间件支持的连接有2个优势:提供构件之间跨平台交互能力,如COM、J2EE等;可以提供强大的公共服务能力。适配问题主要包括三个方面:由构件引起的失配、由连接子引起的失配(包括交互协议等)、由系统成分对全局体系结构的假设存在冲突引起的失配。

    5)部署阶段,SA对软件部署作用:提供高层体系结构视图来描述部署阶段的软硬模型、基于SA模型可以分析部署方案的质量属性,从而选择合理的部署方案。

    6)后开发阶段,这一阶段的SA研究主要围绕维护、演化、复用等方面进行。研究方向包括:动态软件体系结构(研究可分为体系结构设计阶段的支持、运行时刻基础设施的支持)、体系结构恢复与重建(从已实现的系统中获取体系结构的过程,方法有:手工体系结构重建、工具支持的手工重建、通过查询语言来自动建立聚集、使用其他技术比如数据挖掘等)。

软件生命周期:

视角与视图:
    软件设计师考虑体系结构的不同属性,选择特定视角(如逻辑视图、进程视图、实现视图和配置视图)可以全方位的考虑体系结构设计。
用例和质量场景:
    用例时系统的一个结果值的功能点,用来捕获功能需求;质量场景包含预期和非预期场景

ABSD模型的6个子过程:

1)体系结构的需求:
        1>需求获取
        体系结构需求一般来自三个方面,分别是系统的质量目标、系统的商业目标和系统开发人员的商业目标。软件体系结构需求获取过程主要是定义开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足业务上的功能需求。

        2>标识构件
        包含生成类图、对类进行分组、把类打包成构件。

        3>架构需求评审
        由不同代表(设计人员、测试人员、客户等)组成的小组,对构件进行审查。

2)体系结构设计

3)体系结构文档化
主要输出两个文档:体系结构规格说明和测试体系结构的需求的质量设计说明书。

4)体系结构复审
安排一次外部人员(用户代表和领域专家)参加的复审,目的组要是标识潜在的风险,及早发现体系结构设计中的缺陷和错误

5)体系结构实现

6)体系结构演化
应对需求变化,系统结构演化使用系统演化步骤去修改应用,以满足新的需求:

软件架构风格:
    核心目标是体系结构级的软件重用。

数据流体系结构风格:
    1)批处理体系结构风格:
每个步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体方式传递。它的基本构件是独立的应用程序,连接件是某种类型的媒介。
    2)管道-过滤器体系结构风格:
当数据源源不断产生,需要把系统分解成几个处理步骤,这些步骤之间通过数据流连接,每个处理步骤(过滤器)都有一组输入和输出。

调用/返回体系结构风格:
    1)主程序/子程序风格,一般采用单线程控制,把问题划分为若干处理步骤。
    2)面向对象体系结构风格,数据的标识方法和它们的相应操作封装在一个抽象数据类型或对象中。




7.2 考题总结:
7.2.1 软件架构概念








7.2.2 基于体系结构的软件设计方法(ABSD)





7.2.3 设计模式













7.2.4 架构风格

















7.2.5 架构复用



7.2.6 特定领域软件体系结构-DSSA





第八章:质量属性与架构评估

8.1 重要知识点:

面向架构评估的质量属性
    1)性能,经过多长时间才能对某个事件做出响应
    2)可靠性,指意外发生情况下,维持软件系统的功能特性的基本能力。
    3)可用性,系统能正常运行的事件比例
    4)安全性,向合法用户提供服务的同时阻止非授权用户使用的企图。
    5)可修改性,能够快速地以较高的性价比对系统进行变更的能力
    6)功能性,系统能完成所期望工作的能力。
    7)可变性,架构经扩充或变更而称为新架构的能力
    8)互操作性,设计外部可视的软件接口,与其他系统的交互能力。

质量属性场景由6个部分组成:
    刺激源(生产刺激的实体,包括人、系统等)
    刺激(达到的调价)
    环境
    制品(被激励的对象,可以是系统等)
    响应(激励到达后采取的行动)
    响应度量(响应发生后,以某种方式对其进行度量)

系统架构评估:
    1)敏感点(一个或多个构件的特性)、权衡点(影响多个质量属性的特性,是多个质量属性的敏感点)
    2)风险承担者(或利益相关人)
    3)场景,为得出质量目标而采用的机制称为场景,一般采用刺激、环境、响应三方面来对场景进行描述。

系统架构评估方法:
1)SAAM方法
    1>特定目标,对描述应用程序属性的文档,以验证基本的架构假设和原则
    2>评估技术,采用场景技术
    3>质量属性,把任何形式的质量属性都具体化为场景,可修改性是SAAM分析的主要质量属性
    4>风险承担者,协调不同参与者之间感兴趣的共同方面
    5>架构描述,SAAM用于架构的最后版本,但早于详细设计。
    6>方法活动,主要输入是问题描述、需求生命和架构描述。SAAM分析评估架构的过程包括5个步骤:场景开发、架构描述、单个场景评估、场景交互和总体评估。

    7>已有知识库的可重用性:SAAM不考虑这个问题
    8>方法验证:是一个成熟的方法,已被应用到众多系统中。

2)ATAM方法(架构权衡分析方法),在SAAM基础上发展,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
    1>特定目标,在考虑多个相互影响的质量属性情况下,从原则上提供一种理解软件架构的能力的方法。在开发前,可以使用ATAM方法确定多个质量属性之间折中的必要性。
    2>质量属性,考虑的是系统的可修改性、安全性、性能和可用性。
    3>风险承担者,在场景、需求收集相关活动中,需要所有系统相关人员参与。
    4>架构描述,用一组消息顺序图表述运行时的交互和场景,对架构秒速加以注解。
    5>评估技术,使用场景技术,从不同搞得架构角度,有3种不同类型的场景,分布时用例、增长场景、探测场景。
    6>方法活动

    7>领域知识库的可重用性
    8>方法验证,ATAM方法采用效用树这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根–质量属性–属性分类–质量属性场景(叶子节点)。ATAM主要关注的4类质量属性:性能、安全性、可修改性和可用性,这4个质量属性是利益相关者最为关心的。

    用ATAM方法评估软件体系结构,工作主要分为4个基本阶段:
    1>演示
        介绍ATAM、介绍业务驱动因素、介绍要评估的体系结构:胡佛事件架构、银行事件架构
    2>调查和分析
        确定架构方法:胡佛或银行架构的详细解释、生成质量属性效用树、分析体系结构方法(找出风险、非风险、敏感点和权衡点)
        效用树表达了系统的整体”良好“程度。3个利益相关者:最终用户、架构师和应用程序开发人员。

    3>测试和报告ATAM:
        头脑风暴和优先场景、分析架构方法、报告ATAM

3)CBAM方法
    成本效益分析法,是在ATAM上构建,用来对架构设计决策的成本和收益进行建模。CBAM在ATAM结束后开始,它实际上使用了ATAM评估的结果。

8.2 考题总结:
8.2.1 质量属性










8.2.2 架构评估概念



8.2.3 架构评估方法







第九章:软件可靠性

9.1 重要知识点



9.2 考题总结
9.2.1 可靠性测试

第十章:架构演化与维护

10.1 重要知识点

软件架构演化概念:
    软件架构演化就是软件整体结构的演化,演化过程涵盖软件架构的全生命周期,包括需求获取,建模、文档、架构实现以及架构维护等。

    如果软件架构定义是SA,则说明软件架构包含组件(Components)、连接件(Connectors)、约束(Contranints)三大要素。

演化过程:
    对象演化:AO(AddObject,添加对象)和 DO(DeleteObject,删除对象)
    消息演化:AM(添加消息) 、DM (删除消息)、SMO(交换两条消息的时间顺序)、OM (反转消息的发送对象和接收对象)、CMM(改变消息的发送或接收对象)
    演化分为3类:
    第一类演化与当前约束无关,如AM,不会对架构设计的正确性或时态属性产生影响。
    第二类演化与约束直接关联但不会违背约束,如CMM,不会对架构设计的正确性或时态属性产生影响。
    第三类演化与约束直接关联并会违背约束,如DM,这类结构违背了约束,是不正确的演化。

软件架构演化方式的分类:
    3种典型的分类方法:
    1)按照软件架构的实现方式和实施粒度分类:基于过程和函数的演化,面向对象的演化、基于组件的演化和基于架构的演化。
    2)按照研究方法分为4类:对演化的支持、版本和工程的管理里工具、架构变换的形式方法、架构演化的成本收益分析
    3)针对演化过程是否在系统运行时期,可将软件架构分为静态演化和动态演化,前者发生在软件架构的设计、实现和维护过程中,软件系统还未运行或者处理运行停止状态,后者发生在软件系统运行过程中。

软件架构演化时期:
    设计时演化、运行前演化、有限制运行时演化(有具体条件)、运行时演化(最难实现)

静态演化的一般过程:
    软件静态演化时系统停止运行期间的修改和更新,即一般意义上的软件修复和升级。与此相对应的维护方法有3类:更正性维护、适应性维护和完善性维护。
    软件静态演化一般包括5个步骤:
    1)软件理解
    2)需求变更分析
    3)演化计划
    4)系统重构
    5)系统测试
    静态演化的实例:正交软件架构

软件架构动态演化:
    软件的动态性分为3个级别:
    1)交互动态性,要求数据在固定的结构下动态交互
    2)结构动态性,允许对结构进行修改,通常的形式是组件和连接件实例的添加和删除
    3)架构动态性,允许架构基本构造的变动,即结构可以被重定义,如新的组件类型的定义

软件架构演化原则:
    有18种软件架构可持续化原则

软件架构演化评估方法:
    1)演化过程已知的评估,通过计算质量属性距离;
    2)演化过程未知,我们无法像演化过程已知那样追踪架构在演化过程中的每一步变化,只能根据架构演化前后的度量结果逆向推测出架构发生了哪些改变,并分析这些改变与架构相关质量属性的关联关系。

大型网站系统架构演化:
    1)阶段一:单体架构
    2)阶段二:垂直架构
    3)阶段三:使用缓存改善网站性能
    4)阶段四:使用服务集群改善网站并发处理能力
    5)阶段五:数据库读写分离
    6)阶段六:使用反向代理和CDN加速网站响应
    7)阶段七:使用分布式文件系统和分布式数据库系统
    8)阶段八:使用NoSQL和搜索引擎
    9)阶段九:业务拆分
    10)阶段十:分布式服务

软件架构维护:
    1)软件架构知识管理
    2)软件架构修改管理
    3)软件架构版本管理

10.2 考题总结



第十一章:未来信息综合技术

11.1 重要知识点

信息物理系统技术(CPS):
    CPS通过集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建了物理空间与信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的复杂系统,实现系统内资源配置和运行的按需响应、快速迭代、动态优化。有单元级、系统级、SoS级。
    CPS的应用场景:智能设计、智能生产、智能服务、智能应用。

人工智能(AI):
    人工智能分为:
        1)弱人工智能,没有自主意识,例如语音识别、图像处理和机器翻译等。
        2)强人工智能,有自主意识,分为类人和非类人两类
    人工智能关键技术:
        1)自然语言处理
        2)计算机视觉
        3)知识图谱
        4)人机交互
        5)虚拟现实(VR)或 增强现实(AR)
        6)机器学习(ML)

    按学习模式的不同,机器学习可以分为:
        1>监督学习,提供标注的样本集,已知的样本分类标签。
        2>无监督学习,不需要提供标注的样本集,不需要以人工标注数据作为训练样本。
        3>半监督学习,利用少量标注样本和大量未标注样本进行训练和分类。
        4>强化学习,需要反馈机制。

    按学习方法的不同,机器学习可分为:
        1>传统机器学习,从一些训练样本出发,试图发现不能通过原理分析获得的规律,实现对未来数据行为或趋势的准确预测。
        2>深度学习,是一种基于多层神经网络并以海量数据作为输入规则的自学习方法,依靠提供给它的大量实际行为数据,进行参数和规则调整。

    机器学习综合应用:数据挖掘、计算机视觉、自然语言处理、语音和手写识别等

机器人技术:
    1)第一代机器人:示教再现型机器人,这种机器人可以根据人当时示教的结果,再现出这种动作。(点焊机器人)
    2)第二代机器人:感觉型机器人,这种机器人拥有类似人在某种功能的感觉,如力觉、触觉等。
    3)第三代机器人:智能型机器人,这种机器人带有多种传感器,可以进行复杂的逻辑推理、判断及决策,在变化的内部状态与外部环境中,自主决定自身的行为。

    机器人4.0主要有以下几个核心技术:
    1)云-边-端的无缝协同计算
    2)持续学习与协同学习
    3)知识图谱
    4)场景自适应
    5)数据安全

边缘计算:
    章鱼使用”边缘计算“来解决实际问题,它拥有巨量的神经元,但60%分布在章鱼的八条腿上,脑部仅有40%,也就是说章鱼是用腿来解决问题的。
    边缘计算将数据的处理、应用程序的运行甚至一些功能服务的实现,由网络中心下发到网络边缘的节点上。在网络边缘测的智能网关上就近采集并且处理数据,不需要将大量未处理的原生数据上传到远处的大数据平台。

    云边缘:是云服务在边缘测的延申,逻辑上仍是云服务

    边缘云:是在边缘测构建中小规模的云服务能力(如多接入边缘计算MEC、CDN、华为云提供的IEC解决方案)

    边云协同:
        边缘计算与云计算各有所长,云计算擅长全局性,非实时,长周期的大数据处理与分析,能够在长周期维护、业务决策支撑等领域发挥优势;边缘计算更实用局部性、实时、短周期数据的处理与分析,能更好地支撑本地业务的实时智能化决策与执行。边缘计算与云计算不是替代关系,是互补协同关系。

    边缘计算应用场合:
        1)智慧园区
        2)安卓云与云游戏
        3)视频监控
        4)工业物联网
        5)Cloud VR

数字孪生体技术:
    数字孪生体是现有或将有的物理实体对象的数字模型,通过实测、仿真和数据分析来实时感知、诊断、预测物理实体对象的状态,通过优化和指令来调控物理实体对象的行为,通过相关数字模型间的相互学习来进化自身,同时改进利益相关方在物理实体对象生命周期内的决策。

    数字孪生体的关键技术:
        1)建模
        2)仿真
        3)其他技术,VR、AR、MR等增强现实技术。

云计算:
    云计算的服务方式:
        1)软件即服务(SaaS):软件作为一种服务提供
        2)平台即服务(PaaS)
        3)基础设施即服务(IaaS)

        灵活性(依次增强):SaaS-》PaaS -》IaaS
        方便性(依次增强):IaaS-》PaaS-》SaaS

    云计算的部署模式:
        1)公有云,云基础设施是公开的,可以自由地分配给公众。
        2)社区云,云基础设施分配给一些社区组织所专有
        3)私有云,云基础服务设施分配给由多种用户组成的单个组织
        4)混合云,是公有云、私有云、社区云的组合

大数据技术:
    大数据定义:海量+多样化+快速处理+价值+可变性+复杂性

11.2 考题总结

第十二章:信息系统架构设计

12.1 重要知识点





12.2 考题总结


第十三章:层次式架构设计

13.1 重要知识点





第十四章:云原生架构设计

14.1 重要知识点


第十五章:面向服务架构设计

15.1 重要知识点



15.2 考题总结


第十六章:嵌入式架构设计

16.1 重要知识点

嵌入式系统发展历程
    第一阶段:单片微型计算机(SCM)阶段,即单片机时代
    第二阶段:微控制器(MUC)阶段
    第三阶段:片上系统(SoC)
    第四阶段:以Internet为基础的嵌入式系统
    第五阶段:在智能化、云技术推动下的嵌入式系统

嵌入式系统组成:
    1)嵌入式微处理器
        1>微处理器(MPU),将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。
        2>微控制器(MCU),又称单片机
        3>信号处理器(DSP),DSP处理器对系统结构和指令进行了特殊设计,使其适合执行DSP算法,编译效率高,指令执行速度也高。
        4>图像处理器(GPU)
        5>片上系统(SoC),是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
    2)存储器,分为只读存取器(ROM)和 随机存取器(RAM)
        RAM(随机存取存储器),打开计算机,操作系统和应用程序的所有正在运行的数据和层序都会放置其中,需要次序电力供应,断电数据会被清空掉无法恢复,RAM内存又分为以下18种:
            1>DRAM (动态随机存取存储器),通常用于计算机内的主存储器
            2>静态随机存储器(SRAM),用作高速缓存
            3>VRAM (视频内存),用于显卡中的高档内存
            4>FPM DRAM (快速页切换模式动态随机存取存储器)

        ROM(可编程只读存储器),代码与数据将永久保存,并且不能够修改,它的读取速度比RAM慢很多,根据组成元件的不同,ROM内存分为以下5种:
            1>MASK ROM (掩模型只读存储器)
            2>PROM (可编程只读存储器),只能写入一次
            3>EPROM(可擦可编程只读存储器)
            4>EEPROM(电可擦可编程只读存储器),以20V电压进行清除。另外可以用电信号进行数据写入,多用于即插即用接口中。
            5>Flash Memory(快闪存储器)

    3)内(外)总线逻辑
        按照计算机所传输的信息种类:
        1>数据总线用于在CPU与RAM之间来回传送需要处理或者需要存储的数据;
        2>地址总线用于指定RAM之中的存储的数据的地址;
        3>控制总线将微处理器控制单元的信号传送到周边设备。

        总线存在不同拓扑结构:
            星形、树状、环形、总线型和交叉开关型。

        按连接部件分类,还可分为:
            1>片内总线(CPU芯片内部总线)
            2>系统总线(计算机内部总线,连接计算机系统的主要组件)
            3>局部总线(计算机内部总线,在少数组件之间交换数据的总线)
            4>通信总线(嵌入式系统主机外部总线,用于连接外部输入输出设备)

    4)看门狗电路
        是嵌入式系统必须具备的一种系统恢复能力,在系统发生软件问题时使系统重新启动。基本原理是通过定时计数器实现。

    5) I/O接口,是计算机与被控对象进行信息交流的纽带,处理器通过I/O接口与外部设备进行数据交换。常用接口有:
        1>串行接口
        2>并行接口

    6)外部设备,包括鼠标、键盘等

两种典型的嵌入式系统架构模式:
    1)层次化模式架构,分为封闭型和开放型,开放型性能较好,但破坏了封装
    2)递归模式架构,解决需要将一个非常复杂的系统进行分解,工作流程有自顶向下和自底向上。

嵌入式操作系统(EOS):
    嵌入式操作系统与通用操作系统相比,主要特点有:
    1)可裁剪性
    2)可移植性
    3)强实时性
    4)强紧凑性
    5)高质量代码
    6)强定制性
    7)标准接口
    8)强稳定性、弱交互性
    9)强确定性
    10)操作简洁、方便
    11)较强的硬件适应性
    12)可固化性

嵌入式操作系统通常分为两类:
    1>面向控制、通信等领域的嵌入式实时操作系统;
    2>是面向消费电子产品的非实时嵌入式操作系统(包括移动电话、机顶盒等)

    嵌入式操作系统主要存在4种结构:整体结构、层次结构、C/S结构和面向对象结构.

在实时系统的任务调度中,存在大量的实时调度方法,大致分为三种:
    1)离线和在线调度
    2)抢占和非抢占调度
    3)静态和动态调度(静态:优先级已确定 动态:优先级可变)。

存储管理的方法有:
    1)分区存储
    2)分页存储,将进程逻辑地址空间分成若干个大小相等的片,加以编号,内存空间也是如此。
    3)分段存储,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息
    4)段页存储,先将用户程序分成若干个段,再把每个段分成若干个页,并微每一个段赋予一个段名。
    5)虚拟存储,利用实际内存空间和相对大得多的外部存储器空间结合构成一个远远大于实际内存空间的虚拟存储空间。

任务间通信方式:
    1)共享内存,数据的简单共享
    2)信号量,提供任务间通信、同步和互斥的最优选择,提供任务间的最快速通信。操作系统有三种类型信号量:二进制信号量、互斥信号量、计数信号量
    3)消息队列,同一CPU内多任务间消息传递。管道是消息队列中的一种,按FIFO次序读出数据。
    4)Socket和远程调用,是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。
    5)Signals(信号),主要用来通知进程发生异步事件,用于异常处理。

嵌入式数据库:
    与传统数据库相比,嵌入式数据库系统有以下几个主要特点:
    嵌入式、实时性、移动性、伸缩性

按数据库存储位置的不同可以分为:
    1>基于内存的数据库系统(MMDB)
    2>基于文件的数据库系统(FDB), 例如SQLite
    3>基于网络的数据库系统(NDB), 嵌入式网络数据库是把功能强大的远程数据库映射到本地数据库。

嵌入式数据库的一般架构:
    Oracle、Sybase、MySQL、SQL Server等数据库属于数据库服务器,SQLite、Berkeley DB等属于嵌入式数据库。数据库服务器独立运行于一个守护进程(daemon)、嵌入式数据库与应用程序运行在同一进程。

    数据库服务器架构:数据库客户端通过数据库驱动程序如JDBC、ODBC等访问数据库服务器,属于C/S模式。
嵌入式数据库架构:不需要数据库驱动程序,直接将数据库库文件链接到应用程序中。嵌入式数据库的部署是与应用程序一起的。

嵌入式中间件:
    嵌入式中间件是在嵌入式系统中处于嵌入式应用和操作系统之间层次的中间软件,其主要作用是对嵌入式应用屏蔽底层操作系统的异构性,常见的功能有网络通信、内存管理和数据处理等。

16.2 考题总结



本文标签: 架构 试卷 上篇 设计师 软考