摘要
本文汇总了我在准备架构师考试时,在选择题环节遇到的常见错误及其详细解析。这些资料旨在帮助备考者更好地理解知识点,以便在考试的最后阶段进行有效的复习和补充。期望这些内容能够对您的备考有所裨益。
基础概念
- 企业应用集成(EAI):是伴随着企业信息系统的发展而产生和演变的。EAI 技术是将进程、软件、标准和硬件联合起来,在两个或更多的企业信息系统之间实现无缝集成,使他们就像一个整体一样。EAI 提供4个层次的服务,从下至上依次为通讯服务、信息传递与转化服务、应用连接服务、流程控制服务、最上层是流程控制服务。
- 应用集成:是指两个或多个应用系统根据业务逻辑的需要而进行的功能之间的相互调用和互操作。应用集成需要在数据集成的基础上完成。应用集成在底层的网络集成和数据集成的基础上实现异构应用系统之间语用层次上的互操作。他们共同构成了实现企业集成化运行最顶层会聚成所需要的,技术层次上的基础支持。
- 企业信息集成:是指企业在不同应用系统之间实现数据共享,即实现数据在不同数据格式和存储方式之间的转换。对来源不同、形态不同、内容不等的信息资源进行系统分析、辩清正误、消除冗余、合并同类,进而产生具有统一数据形式的有价值信息的过程。企业信息集成是一个十分复杂的问题,
- API 的含义是 Application Programming Interface,即应用程序编程接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组列程的能力,而又无需访问源码或理解内部工作机制的细节。
- 产品配置:是指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的文档、计算机程序、部件及数据的集合。该集合中的每个元素成为产品配置的一个配置项,配置项主要分为两大类:一类属于产品组成部分的工作成果;另一类属于项目管理和机构支撑过程域产生的文档。每个配置项的主要属性有名称、标识符、状态、版本、作者、日期等。
- 配置项:是一个独立存在的信息项,可以把它看成一个元素。单独的一个元素发挥不了什么作用,需要将各元素进行不同的组合,这个组合称配置,配置是一个产品在生存期各个阶段的配置项的集合,它具有完整的意义。
操作系统
文件系统
- Windows 操作系统通常采用NTFS 文件系统
- EXT4 是linux 系统中最常用的文件系统类型之一
- BtrFS(B-Tree文件系统)是Linux 系统中一个先进的文件系统。
- XFS 是linux 系统中一种高性能的日志文件系统,适用于大规模的企业级应用。
操作系统分类
- 分时操作系统:分时操作系统允许多个用户通过终端以交互方式使用计算机,系统为每个用户分配一定的CPU 时间,使得用户可以共享计算机资源。
- 实时操作系统:实时操作系统(Real-Time Operating System)是指能够在指定或者确定的时间内完成特定任务的操作系统,并且任务的执行结果要在严格的规定时间内对外部事件做出响应。实时操作系统广泛应用于需要高可靠性和即时响应的领域,如工业控制系统、航空航天、医疗设备等。
进程
接口
调度算法
- 时间片轮转:是一种常见的进程调度算法,其目的是确保所有进程都能公平的获得CPU 时间片。每个进程被分配一个固定大小的时间片,当一个进程用尽其时间片后,调度器将其移到队列的末尾,然后选择下一个进程执行
- 先来先服务:按照进程到达的先后顺序进行调度,不考虑执行时间的长短
- 短作业优先:选择执行时间最短的进程来先执行。这可能导致长作业等待时间过长,也无法保证所有进程都能公平的获得CPU 时间。
- 高响应比优先:基本思想是把CPU 分配给就绪队列中响应比最高的进程。高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待事件,综合了先来先服务和最短作业优先两种算法的特点。
系统性能评估
- 指令执行速度法常用每秒百万次指令运算(MIPS)评估系统性能
- 基准程序法主要针对CPU (有时包括主存)的性能,同时考虑I/O 结构、操作系统、编译程序的效率等对系统性能的影响
- 等效指令速度法评估系统性能时需要计算各类指令在程序中所占的比例
- 综合理论性能法(CPT)采用每秒百万次理论计算(MTOPS)评估系统性能
网络
- Internet 中服务器越多,之间的跳数愈多,延迟就越高。
- 对等网络(peer-to-peer)中,每一个节点的地位都是对等的,既当服务器,同时也享有其他节点提供的服务,因此P2P网络的迟延与终端数量是有关的;
层次化网络设计
层次化网络设计应该遵循一些简单的原则,这些原则可以保证设计出来的网络更具有层次的特性
- 在设计时,设计者应该尽量控制层次化的程度。一般情况下,有核心层、汇聚层、接入层 3个层次已足够。过多的层次会导致整体的网络性能下降,并且会增加网络的延迟,但是方便网络故障排查和文档编写。
- 在接入层应当保持对网络结构的严格控制,接入层的用户总是为了获得更大的外部网络访问带宽,而随意申请其他渠道访问外部网络是不允许的
- 为了保证网络的层次性,不能在设计中随意加入额外链接。额外链接是指打破层次性,在不同相邻层次间的连接,这些会导致网络中的各种问题。例如,缺乏汇聚层的访问控制和数据过滤等
- 在设计时,应当首先设计接入层。根据流量负载、流量和行为的分析,对上层进行更精细的容量规划,再依次完成各上层的设计
- 除去接入层的其他层次,应尽量采用模块化方式。每个层次由多个模块或者设备集合构成,每个模块间的边界应非常清晰
数据库
2. 数据库中,一个属性的所有可能取值的集合称为域。
数据库访问设计
- Java 数据对象(JDO)是java 标准中的持久化API,提供了透明的对象存储,并且支持多种数据存储类型。可以在任何数据底层上运行,包含非关系型数据库。
- DAO 模式将底层数据访问操作与高层业务逻辑分离开,是一种标准J2EE 设计模式。
- 工厂模式在数据访问层中常用于处理多种数据库的操作,通过定义一个操纵数据库的接口,并根据数据库的不同,由类工厂决定实例化哪个类
系统安全
加密
- 对称密钥加密算法在加密和解密的过程中使用相同的密钥,而非对称密钥加密算法则使用一对公钥和私钥,公钥用于加密,私钥用于解密。对称密钥算法速度快,非对称密钥算法速度则慢得多。对称密钥算法和非对称密钥算法都可以提供数字签名,但非对称密钥更容易实现安全分发。
计算机信息系统安全保护等级划分准则
《计算机信息系统安全保护等级划分准则》把计算机信息安全划分为5个等级:
建模语言
OMT 对象建模技术
OMT 方法是指对象建模技术(Object Modeling Technique),它是一种面向对象的系统分析和设计方法。OMT 是面向对象方法论中的一种,它提供了一套图形表示法,用于描述软件系统的对象模型、动态模型和功能模型。OMT 方法由 James Rumbaugh 及其同事在 1991 年提出,后来被集成到统一建模语言(UML)中。
- 对象模型:描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现;
- 动态模型:描述与时间和操作顺序有关的系统特征,例如激发事件、时间序列、确定事件先后关系的状态等,主要用状态图来实现动态模型;
- 功能模型:描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用DFD 来实现功能模型。
ADL 架构描述语言
处理流程工具
- 程序流程图(DFD)用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。流程图中能包括5种基本控制结构:顺序型、选择型、WHILE 循环型、UNTIL 循环型和多分支选择。
- IPO 图是由IBM 公司发起并逐步完善的一种流程描述工具,其主体是处理过程说明,可以采用流程图、判定树、判定表、盒图、问题分析图或过程设计语言来进行描述。IPO 图中的输入、输出与功能模块、文件及系统外部项都需要通过数据字典来描述,同时需要为其中的某些元素添加注释。
- N-S 图与PFD 类似,也包括5种控制结构,分别是顺序型、选择型、WHILE 循环型、UNTIL循环型和多分支选择型,任何一个N-S 图都是这5种基本控制结构相互组合与嵌套的结果。在N-S 图中,过程的作用域明确;它没有箭头,不能随意转换控制;而且容易表示嵌套关系和层次关系;并具有强烈的结构化特征。但是当问题很复杂时,N-S 图可能很大。
- 问题分析图(PAD )是继 PDF 和N-S 图后,又一种描述详细设计的工具。PAD 也包含5种基本控制结构,并允许递归使用。
- 过程设计语言(PDL)也称为结构化语言或伪代码,它是一种混合语言,采用自然语言的词汇和结构化程序设计语言的语法,用于描述处理过程怎么做,类似于编程语言。过程设计语言用于描述模块中算法和加工逻辑的具体细节,以便在开发人员之间比较精确地进行交流
- 对于具有多个相互联系的条件和可能产生多种结果的问题,用结构化语言描述则显得不够直观和紧凑,这时可以用以清楚、简明为特征的判定表来描述。判定表采用表格形式来表达逻辑判断问题,表格分成4个部分,左上部分为条件说明,左下部分为行动说明,右上部分为各种条件的组合说明,右下部分为各条件组合下相应的行动。
- 判定树也是用来表示逻辑判断问题的一种常用的图形工具,它用树来表达不同条件下的不同处理流程,比语言、表格的方式更为直观。判定树的左侧为加工名,中间是各种条件,所有行动都列于最右侧。
软件工程
软件管理
2. 项目配置管理中,配置项的状态通常包括草稿、正式发布和正在修改。
项目范围说明
2. 项目范围是为了达到项目目标,为了交付具有某种特制的产品和服务,项目所规定要做的。
3. 在信息系统项目中,
- 产品范围是指信息系统产品或者服务所应该包含的功能
- 项目范围是指为了能够交付信息系统项目所必须做的工作
- 产品范围是项目范围的基础,产品的范围定义是信息系统要求的度量,
- 项目范围的定义是生产项目计划的基础。
- 产品范围描述是项目范围说明书的重要组成部分。
标准化
DCMM 数据能力成熟度模型
DCMM(Data Capability Maturity Model,数据能力成熟度模型)是一种用于评估组织数据管理能力的框架。它提供了一套最佳实践,帮助组织识别其数据管理的强项和弱点,并制定改进计划。DCMM由CMMI Institute开发,旨在帮助组织在数据管理方面达到更高的成熟度。
成熟度级别:DCMM将数据管理能力分为五个成熟度级别,从初始级到优化级。
- 初始级:数据管理活动通常是临时性的、无计划的,且不受管理。
- 管理级:数据管理活动是计划性的、可重复的,并且有明确的责任和流程。
- 稳健级:数据管理活动被明确定义,并且在整个组织中被一致地实施。
- 量化管理级:数据管理活动通过量化指标进行管理,并且能够度量性能和效率。
- 优化级:数据管理活动持续改进,组织能够通过创新来优化数据管理实践。
数据战略、数据治理、数据架构、数据应用、数据安全、数据质量管理、数据标准、数据生命周期。这八个过程域共包含28个过程项,441项评价指标。
CMMI 软件能力成熟度模型集成
CMMI(Capability Maturity Model Integration)是一种过程级改进训练和评估程序。它旨在帮助组织改进其过程,并更有效地管理项目、产品和服务的开发和维护。CMMI是由卡内基梅隆大学软件工程研究所(SEI)开发的,它整合了多个早期的成熟度模型,包括软件能力成熟度模型(SW-CMM)和其他行业的能力成熟度模型。
软件分析
结构化分析
- 结构化分析方法的基本思想是自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。
- 结构化分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也成为状态模型)
面向对象分析
软件设计
- 外部设计处于软件设计的开始阶段,主要是按系统需求说明来确定此系统的软件结构和对应于系统需求说明,设计出各个功能部分的功能和接口;
- 内部设计处于软件工程的概要设计阶段,按照外部设计中确立的系统软件结构,来细化此系统各个功能部件以及各个部件接口的设计,并且详细给出各个功能部件详细的数据输入、输出设计。内部设计细化外部设计中的各种功能。
软件设计步骤
- 体系结构设计:定义软件系统各主要部件之间的关系
- 数据设计:将模型转换成数据结构的定义。好的数据设计将改善程序结构和模块划分,降低过程复杂性
- 接口设计:软件内部,软件和操作系统间以及软件和人之间如何通信
- 过程设计:系统结构部件转换成软件的过程描述
面向对象设计
设计模式
软件开发
- EJB 是企业级Java 构件,用于开发和部署多层结构的、分布式的、面向对象的Java 应用系统。
- EJB 分为会话Bean 、实体Bean 、消息驱动Bean
- 会话Bean :用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个会话Bean 来为客户端服务。会话Bean可以直接访问数据库,但更多时候,他会通过实体Bean 实现数据访问。
- 实体Bean:用于实现O/R 映射,负责将数据库中的表记录映射为内存中的实体对象,事实上,创建一个实体Bean 对象相当于新建一条记录,删除一个实体Bean 会同时从数据库中删除对应记录,修改一个实体Bean ,容器会自动将实体Bean 的状态和数据库同步。
- 消息驱动Bean :是EJB 3.0 中引入的新的企业Bean,它基于JMS 消息,只能接收客户端发送的JMS 消息然后处理。
- 软件开发环境(SDE)是指支持软件的工程化开发和维护而使用的一组软件,由软件工具集和环境集成机制构成。
- 软件开发环境应支持多种集成机制,如平台集成、数据集成、界面集成、控制集成、过程集成等。
- 软件开发环境应支持小组工作方式,并为其提供配置管理,环境的服务可用于支持各种软件开发活动,包括分析、设计、编程、调式和文档等。
- 软件开发环境三个部分
- 环境信息库:环境信息库是软件开发环境的核心,用以存储与系统开发有关的信息,并支持信息的交流与共享。环境信息库主要存储两类信息,一是开发过程中产生的有关被开发系统的信息,例如分析文档、设计文档和测试报告等;另一类是环境提供的支持信息,如文档模板、系统配置、过程模型和可复用构件等
- 过程控制与消息服务器:过程控制与消息服务器是实现过程集成和控制集成的基础。过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成使各工具之间进行并行通信和协同工作
- 环境用户界面:环境用户界面包括环境总界面和它实行统一控制的各环境部件及工具的界面。统一的、具有一致性的用户界面是软件开发环境的重要特征,是充分发挥环境的优越性、高效的使用工具并减轻用户学习负担的保证。
软件开发工具
软件测试
- 用户需依靠评价程序来评价机器的性能,对于真实程序、核心程序、小型基准程序和合成基准程序来说,其测评程度依次递减。
- 根据国家GB/T15532-2008 ,软件测试可分为单元测试、集成测试、配置项测试、系统测试、验收测试和回归测试等类别。
- 单元测试也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或面向对象软件中的类,其目的是检查每个模块是否正确的实现设计说明中的功能、性能、接口和其他设计约束等条件,发现模块内可能存在的各种差错。单元测试的依据是软件详细说明书
- 集成测试的目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。集成测试的依据是软件概要设计文档。
- 系统测试的对象是完整的,集成的计算机系统,系统测试的目的是在真实系统工作环境下,验证完整的软件配置项是否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。系统测试的依据是用户需求或开发合同。
- 配置项测试的对象是软件配置项,配置项测试的目的是检验软件配置项与软件需求规格说明的一致性
- 验收测试是针对软件需求规格说明,在交付前以用户为主进行的测试
- 回归测试的目的是测试软件变更之后,变更的部分的正确性和对变更需求的复合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。
- 单元测试策略主要包括自顶向下的单元测试、自底向上的单元测试、孤立测试和综合测试策略。
- 系统测试的主要内容包括
- 功能测试
- 健壮性测试
- 性能测试
- 用户界面测试
- 安全性测试
- 安装与反安装测试
- 软件集成测试也称为组装测试、联合测试。它将已通过单元测试的模块集成在一起,主要测试模块间的协作性。从组装策略而言,可以分为一次性组装测试和增量式组装(包括自顶向下、自底向上)两种
- 自动化测试工具主要使用脚本技术来生成测试用例,脚本是一组测试工具执行的指令集合。脚本的基本结构主要有5种:
软件开发方法
软件过程
形式化方法
形式化方法是一种具有坚实数学基础的方法,从而允许对系统和开发过程做严格处理和论证,适用于那些系统安全级别要求极高的软件的开发。形式化方法的主要优越性在于它能够数学的表述和研究应用问题及软件实现。但是它要求开发人员具备良好的数学基础。用形式化语言书写的大型应用问题的软件规格说明往往过于细节化,并且难于为用户和软件设计人员所理解。由于这些缺陷,形式化方法在目前的软件开发实践中并未得到普遍应用。
净室软件工程
CSE 是软件开发的一种形式化方法,可以开发较高质量的软件。它使用盒结构规约进行分析和建模,并且将正确性验证作为发现和排除错误的主要机制,使用统计测试来获取认证软件可靠性所需要的信息。CSE 强调在规约和设计上的严格性,还强调统计质量控制技术,包括基于客户对软件的预期使用测试。
基于构件的开发方法
敏捷开发
- 开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广。这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。
- 功用驱动开发方法(FDD)致力于短时的迭代,迭代和可见可用的功能。在FDD 中,编程开发人员分成首席程序员和"类“程序员两类。
RUP 统一过程开发方法
- RUP 是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。
- RUP 软件开发生命周期是一个二维的软件开发模型,其中有9个核心工作流
- 业务建模: 确定业务需求、理解业务环境和业务领域;建立业务用例模型,分析业务流程。
- 需求:收集和分析用户需求,定义系统功能;产生用例和补充规范,细化需求
- 分析与设计:分析问题领域,建立系统架构;设计组件和类,创建数据模型和体系结构模型。
- 实现:将设计转换为可执行代码;编写单元测试,进行编码和调式
- 测试:验证系统的正确性和质量;执行单元测试,集成测试,系统测试和验收测试
- 部署:将软件部署到生产环境中;确保软件能在目标环境中正常运行
- 配置与变更管理:跟踪和控制软件的版本和变更;管理软件配置项和基线
- 项目管理:规划、监督和控制项目进度;管理资源、风险和项目质量
- 环境:支持其他流程的工具和环境;包括过程工具、建模工具、代码生成工具等
软件可靠性
系统架构
- 软件架构贯穿于软件的整个生命周期,但在不同的阶段对软件架构的关注力度并不相同。
- 软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。架构设计能够满足系统的性能、可维护性等品质;能够使得不同的利益相关人达成一致的目标;能够支持项目计划和项目管理等活动;能够有效地管理复杂性;然而系统架构的给出必须建立在明确的基础上。
构件
- 构件又称为组件,是一个自包容,可复用的程序集。构件是一个程序集,或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制的代码。这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问构件,而不是直接操作构件的内部。构件的两个最重要的特性是自包容与可重用
系统移植
逆向工程
面向服务架构
- SOA 基于Web Serivces 实现的面向服务系统中,服务提供者、服务使用者和服务注册器之间的远程交互通过SOAP (简单对象访问协议)实现,服务内容描述通过 WSDL (web 服务描述语言)标准实现,服务注册信息通过UDDI (服务统一描述、发现和集成)框架实现,通过BPEL /BPEL4WS (业务过程执行语言)将分散的、功能单一的Web服务组织成一个复杂的有机应用。
架构风格
客户端/服务器风格
仓库风格
在仓库风格中有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有很大的变化。
闭环控制
系统架构评估
架构开发方法
DSSA
嵌入式
分类
微内核
从操作系统中去掉尽可能多的东西,而只留下一个最小的核心,称之为微内核。
新技术
比特币
- 挖矿,是指利用电脑硬件计算出比特币的位置并获取的过程。简单地说,挖矿就是一个记账的过程,矿工就是记账员,区块链就是账本。每隔一个时间点,通过哈希(Hash)算法,将过去一段时间内未经比特币全网认可的交易信息收集,整理,对全网所有节点进行广播,最终被所有节点承认并得到比特币的过程。比特币系统会在系统节点上生成一个随即代码,互联网中的所有计算机都可以去寻找此代码,谁找到此代码,就会产生一个区块,随即得到一个比特币,这个过程就是人们常说的挖矿。计算这个随即代码需要大量的GPU 运算,于是矿工们采购海量显卡用以更快速的获得比特币获利。同时,挖矿是发行新币的唯一方式,对于发行新币,维系比特币支付功能,保证系统安全,有着举足轻重的影响。
- 挖矿本身并不能防止双花(同一笔数字资产因不当操作被重复使用的情况)攻击。由于挖矿越来越难,耗电量也越来越大,我国已明文禁止。
数字孪生生态系统
边缘计算
信息系统
电子商务与电子政务
- 电子政务包含:政府对政府(G2G),政府对企业(G2B),政府对居民(G2C),企业对政府(B2G),居民对政府(C2G)
- 电子商务包含:B2B (企业对企业)、B2C(企业对居民)、C2C(居民对居民)
ERP
- 企业资源规划 (ERP)是一个有效组织、计划和实施企业的内外部资源的管理系统。它集信息技术和先进的管理思想于一身,是统一的集成系统、面向业务流程的系统、模块化可配置的系统、开放的系统。其功能包括财会管理、生产控制管理、物流管理和人力资源管理等。
- ERP 的关键是事前规划管理
CRM 集成化信息管理系统
- 具有整合各种客户联系渠道的能力,并把客户数据分为描述性、促销性和交易性数据三大类。
- 系统必须实现基本的数据挖掘模块,能对客户信息进行全方位的统一管理
- 能够提供销售、客户服务和营销三个业务的自动化工具,并具有可拓展性和可复用性