软考架构师常见考题

265 阅读38分钟

计算机网络

在域名解析过程中,一般有两种查询方式:递归查询和迭代查询
递归查询:服务器必须回大目标IP与域名的映射关系
迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他的DNS服务器的地址
​
Internet网络核心采取的交换方式为(分组交换)
​
多核CPU环境下进程的调度算法一般有全局队列调度和局部队列调度两种
(1)全局队列调度:操作系统维护一个全局的任务等待队列。当系统出现一个空闲的CPU内核时,操作系统就在全局任务等待队列中选取任务执行。全局队列调度优点是CPU核心利用率较高而且平均
(2)局部队列调度:操作系统为每个CPU内核维护一个局部的任务等待队列。当系统出现一个空闲的CPU内核时,操作系统就在该CPU内核的任务等待队列中选取任务执行。局部队列调度优点是任务无需在多个CPU核心间切换,提高了CPU核心同部缓存命中率;缺点是CPU利用率较低。
​
​
DHCP服务器收到客户端的请求时,会向客户端发送(DhcpOffer)报文

SDN

SDN利用分层的思想,将网络分为控制层和数据层

网络规划与设计

网络系统生命周期可以划分为5个阶段,实施这5个阶段的合理顺序是:
需求规范、通信规范、逻辑网络设计、物理网络设计、实施阶段。

计算机系统基础

计算机性能

衡量计算机的主要性能指标除了字长、存取周期、运算速度之外,通常还包括(主存储器容量大小),因为其反映了(计算机即时存储信息的能力)。

存储器

存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种:
(1)顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
(2)直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
(3)随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache采取相联存取的方式。

计算机性能评估

(等效指令速度法)考虑了各类指令在程计算机系统性能评估中序中所占的比例
(基准程序法)考虑了诸如I/O结构、操作系统、编译程序的效率对系统性能的影响,可以较为准确评估计算机系统的实际性能。

操作系统

段页式存储

段页式存储管理方式:先将用户程序根据逻辑分为若干段,再把每个段分成若干页,使用段页表来进行管理

逻辑地址与物理地址变换

如果计算机页面大小为2K,逻辑地址为十六进制1B1AH,计算逻辑地址经过变化后的物理地址
页面大小为2K,那么占用二进制11位
十六进制1B1AH为:1_1011_0001_1010, 右边11位为页面地址,左边的11位逻辑地址,即十进制3
那么我们现在把其余的物理块号地址套进去即可,比如物理块号是4,组合而成就是100_011_0001_1010,转换成十六进制,10_0011_0001_1010为2B1AH

磁盘块与缓冲区

假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为16us,由缓冲区送至用户区的时间是5us,在用户区内系统对每块数据的处理时间为1us。若用户需要将大小为10个磁盘块的Doc1文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(1)us;采用双缓冲区需要花费的时间为(2)μS。
​
众所周知,计算连续消耗时长的公式为:一段完整的时长 + 流水线时长 * (次数-1)
单缓冲区时长拉满:16+5+1+(16+5)*(10-1) = 166
双缓冲区减去送至用户的时间:16+5+1+16*(10-1) = 211

信号量

假设系统中有n个进程共享2台打印机,而且任一进程在任-时刻最多只能使用1台打印机。若用PV操作控制n个进程使用打印机,则相应信号量S的取值范围为: 2,1,0,-1, ..., -(n-2)
出事有2台打印机,信号量初始为2,n个进程调用P操作会使信号量减一,P做多只有n-2,那么S最多为-(n-2)

文件系统地址计算

某文件系统文件存储采用文件索引节点法。假设文件索引节点中有10个地址项iaddr[0]~iaddr[9],每个地址项大小为8字节,其中地址项iaddr[0]~iaddr[6]为直接地址索引,iaddr[7]是一级间接地址索引,iaddr[8]和iaddr[9]是二级间接地址索引,磁盘索引块和磁盘数据块大小均为8KB。该文件系统可表示的单个文件最大长度是(16777216)KB。若要访问dlhost.exe文件的逻辑块号分别为7、1540和65525,则系统应分别采用(一级、二级、二级)
​
直接索引范围:7*8KB=56KB,对应逻辑块号:0-6-级间接索引范围:(8KB/8B)*8KB=8192KB,对应逻辑块号:7-1030。二级间接索引范围:(8KB/8B)*(8KB/8B)*8KB*2=16777216KB,对应逻辑块号:1031以及上。单个文件最大长度是:56KB+8192KB+16777216KB=16785464KB

软件工程

开发过程模型

软件过程是制作软件产品的一组活动,以及结果,这些活动主要由软件人员来完成,主要包括(软件描述、软件开发、软件有效性验证和软件进化)
​
瀑布模型:
特点是因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。
主要缺点有:
1.需求的完整性、正确性很难确定 
2.瀑布模型是一个严格串行化的过程模型,很长时间才能得到一个看得见的软件系统 
3.瀑布模型每个接断都需要一次性地解决该阶段的工作,不会出现遗漏和错误等情况,实际上这是不现实的
​
原型模型(Prototype Model):又称为快速原型。不适用大型软件
由于瀑布型模型的缺点,提出了原型模型。
原型模型主要有以下两个阶段:
1.原型开发阶段:根据用户提出对软件系统的定义,快速开发一个原型 
2.目标软件开发阶段,对原型进行修改完善,确定软件系统的需求并达到一致的理解。
实际工作中,由于各种原因,大多数原型都废弃不用,仅仅把建立原型的过程当作帮助定义软件需求的一种手段。原型模型后续发生了一些演变,出现了抛弃型模型和演化型模型。抛弃型模型是将原型作为需求确认的手段,在需求确认结束后,原型就被抛弃不用,重新采用一个完整的瀑布模型进行开发。演化型模型是在需求确认结束后,不断补充和完善原型,直至形成一个完整的产品
​
​
螺旋模型(Spiral Model)
是在快速原型的基础上扩展而成,螺旋模型分为4个阶段:1.目标设定 2.风险分析 3.开发和有效性验证 4.评审。螺旋模型的开发过程是这4个部分的迭代过程,直到用户接受的范围内。螺旋模型适合大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法
​
敏捷模型:
出现原因:1.面向对象编程开始替代面向过程变成 2.市场要求公司更快的交付产品
主要特点:1.适应性(adaptive)而非预设性(predictive) 
        2.面向人(people-oriented)而非面向过程(Process-oriented)
核心思想:
1.敏捷方法是适应型,而非可预测型。与传统方法不同,敏捷方法拥抱变化,也可以说它的初衷就是适应变化的需求,利用变化来发展,甚至改变自己,最后完善自己。
2.敏捷方法是以人为本,而非以过程为本。传统方法以过程为本,强调充分发挥人的特性,不去限制它。并且软件开发在无过程控制和过于严格烦琐的过程控制中取得一种平衡,以保证软件的质量。
3.迭代增量式的开发过程。敏捷方法以原型开发思想为基础,采用选代增量式开发,发行版本小型化。它根据客户需求的优先级和开发风险,制订版本发行计划,每一发行版都是在前一成功发行版的基础上进行功能需求扩充,最后满足客户的所有功能需求。
​
敏捷方法介绍
1.极限编程(Extreme Programming, XP):近乎螺旋式开发,将开发过程分解称一个个相对较小的周期,通过交流、反馈,开发人员和客户可以非常清楚开发进度,并根据实际情况及时地调整开发过程
2.水晶系列(Crystal):提倡"机动性"
3.Scrum:迭代式增量软件开发过程,包括了一些列实践和预定义角色
4.特征驱动开发方法(Feature Driven Development,FDD):FDD三要素:人、过程和技术。定义了6种关键角色:项目经理、首席架构设计师、开发经理、主程序员(FDD独有的)、程序员和领域专家
5.开放式源码(Open Source):特别之处是程序开发人员地域上分布很广,另一个突出特点是任何人发现了错误都可将改正源码的"补丁"发给维护者,然后由维护者将这些"补丁"并入源码库

开发模型

软件过程模型的基本概念:软件过程是制作软件产品的一组活动以及结果,这些活动主要由软件人员来完
成,软件活动主要有:
(1)软件描述。必须定义软件功能以及使用的限制
(2)软件开发。也就是软件的设计和实现,软件工程人员制作出能满足描述的软件
(3)软件有效性验证。软件必须经过严格的验证,以保证能够满足客户的需求。
(4)软件进化。软件随着客户需求的变化不断地改进

UML关系

COM不支持任何形式的继承
COM支持两种形式的对象组装:包含和聚集
在包含重用形式下,一个外部对象拥有指向一个内部对象的唯一引用,外部对象只是把请求转发给内部对象
在聚集重用形式下,直接把内部对象的接口引用传给外部对象的客户,而不再转发请求

设计模式

设计模式按照目的可以划分为三类,其中(创建型)模式是对对象实例化过程的抽象,例如(singleton)模式确保一个类只有一个实例,并提供了全局访问入口;(prototype)模式允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象;(Builder)模式将一个复杂对象的构建与其表示分离
​
Facade:外观,外观模式是对象的结构模式,要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
Builder:建造者
Prototype:原型
Singleton:单例

桥接模式的UML图:

需求工程

需求跟踪是将单个需求和其他系统元素之间的依赖关系和逻辑联系建立跟踪,这些元素包括各种类型的需求、业务规则、系统架构和构件、源代码、测试用例,以及帮助文件等。
​
需求管理是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法。而非对需求开发的管理。需求开发包括:需求获取、需求分析、需求定义和需求验证,而非需求管理。需求的跟踪属于需求管理的范畴。

软件设计

开发阶段需要的图
需求分析阶段:数据流图
概要设计阶段:模块结构图、层次图、HIPO图
详细设计阶段:程序流程图、伪代码、盒图

开发模型

XP(Extreme Programming,极限编程),在所有的敏捷型方法中,XP是最引人瞩目的。它源于Smalltalk圈子,特别是Kent Beck和Ward Cunningham在20世纪80年代末的密切合作。XP在一些对费用控制严格的公司中的使用,已经被证明是非常有效的。
​
水晶系列(Crystal)方法,它与XP方法一样,都有以人为中心的理念,但在实践上有所不同。Alistair考虑到人们一般很难严格遵循一个纪律约束很强的过程因此,与XP的高度纪律性不同,Alistair探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它
​
开放式源码(Open Source),这里提到的开放式源码指的是开放源码界所用的一种运作方式。开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。开放源码的一个突出特点就是查错排障(debug)的高度并行性,任何人发现了错误都可将改正源码的“补丁”文件发给维护者。然后由维护者将这些“补丁"或是新增的代码并入源码库。
​
SCRUM。SCRUM已经出现很久了,像前面所论及的方法一样,该方法强调这样一个事实,即明确定义了的可重复的方法过程只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用去解决明确定义了的可重复的问题。
​
Coad的功用驱动开发方法(FDD-Feature Driven Development)像其他方法一样,它致力于短时的选代阶段和可见可用的功能。在FDD中,一个选代周期一般是两周。在FDD中,编程开发人员分成两类:首席程序员和“类程序员(class owner)。首席程序员是最富有经验的开发人员,他们是项目的协调者、设计者和指导者而“类”程序员则主要做源码编写。
​
ASD(Adaptive Software Development)方法,其核心是三个非线性的、重善的开发阶段:猜测、合作与学习。
​
构件开发模型
基于构件的开发模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。基于构件的开发模型融合了螺旋模型的许多特征,本质上是演化形的,开发过程是迭代的。基于构件的开发模型由软件的需求分析定义、体系结构设计、构件库建立、应用软件构建以及测试和发布5个阶段组成。

软件测试

黑盒测试也称为功能测试,主要用于集成测试,确认测试和系统测试阶段。黑盒测试根据软件需求规格说明所规定的功能来设计测试用例,一般包括功能分解、等价类划分、边界值分析、判定表、因果图、状态图、随机测试、错误推测和正交试验法等在设计测试用例时,等价类划分是用得最多的一种黑盒测试方法。所谓等价类就是某个输入域的集合,对每一个输入条件确定若干个有效等价类和若干个无效等价类,分别设计覆盖有效等价类和无效等价类的测试用例。无效等价类是用来测试非正常的输入数据的,所以要为每个无效等价类设计一个测试用例。边界值分析通过选择等价类边界作为测试用例,不仅重视输入条件边界,而且也必须考虑输出域边界。在实际测试工作中,将等价类划分法和边界值分析结合使用,能更有效地发现软件中的错误。因果图方法是从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表。正交试验设计法,就是使用已经造好了的正交表格来安排试验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率
​
静态分析通过解析程序文本从而识别出程序语句的各个部分,审查出可能的缺陷和异常之处,静态分析包括五个阶段:
(1)控制流分析阶段找出并突出显示那些带有多重出口或入口的循环以及不可达到的代码段;
(2)数据使用分析阶段突出程序中变量的使用情况;
(3)接口分析阶段检查子程序和过程说明及它们使用的一致性;
(4)信息流分析阶段找出输入变量和输出变量之间的依赖关系;
(5)路径分析阶段找出程序中所有可能的路径并画在此路径中执行的语句。
​
单元测试也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或OO软件中的类(统称为模块),其目的是检查每个模块能否正确地实现设计说明中的功能、性能、接口和其他设计约束等条件,发现模块内可能存在的各种差错。单元测试的技术依据是软件详细设计说明书。集成测试的目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。集成测试的技术依据是软件概要设计文档。集成测试是根据软件概要设计文档来进行测试,因为概要设计文档中设计了功能信息的相关信息及要求。
系统测试的对象是完整的、集成的计算机系统,系统测试的目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规走的要求。系统测试的技术依据是用户需求或开发合同,除应满足一般测试的准入条件外,在进行系统测试前,还应确认被测系统的所有配置项已通过测试,对需要固化运行的软件还应提供固件。
回归测试的目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。

McCabe度量

环路数计算:判断节点+1

数据库系统

概念结构设计

ER图集成时产生的冲突及解决办法:
属性冲突:包括属性域冲突和属性取值冲突。
命名冲突:包括同名异义和异名同义。
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同,

事务服务器进程

事务服务器包括多个在共享内存中访问数据的进程:
服务器进程:接收用户查询(事务)、执行查询并返回结果的进程。
锁管理器进程:包括锁授予、释放锁和死锁检测
数据库写进程:有一个或多个进程用来将修改过的缓冲块输出到基于连续方式的磁盘中。
日志写进程:该进程将日志记录从日志记录缓冲区输出到稳定存储器上。
检查点进程:定期执行检查点操作。
进程监控进程:监控其他进程。一旦有进程失败,它将为失败进程执行恢复动作。

分布式数据库

分布式数据库两阶段提交协议中的两个阶段是指: 表决阶段、执行阶段

软件架构设计

架构4+1视图

4+1视图中各个部分的情况如下
(1)逻辑视图。逻辑视图主要支持系统的功能需求即系统提供给最终用户的服务。一般用类图和对象图描述。
(2)开发视图。开发视图也称为模块视图,在UML中被称为实现视图,它主要侧重于软件模块的组织和管理。该视图可描述源代码,系统文件结构。
(3)过程视图。过程视图侧重于系统的运行特性,主要关注一些非功能性需求,例如,系统的性能和可用性等。过程视图强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的功能抽象如何适合进程结构等,它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。
(4)物理视图。物理视图在UML中被称为部署视图它主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构、系统安装和通信等问题。当软件运行于不同的物理节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小化。
(5)场景。场最可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。场景视图对应UML中的用例视图。

UML考题,重点

(1)逻辑视图: 也称为“设计视图”,它表示了设计模型中在架构方面具有重要意义的 部分,即类、子系统、包和用例实现的子集。
(2)进程视图:将可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发与同步结构。
(3)实现视图:对组成基于系统的物理代码的文件和构件进行建模。
(4)部署视图:把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。
(5)用例视图:最基本的需求分析模型

软件架构复用

软件架构复用的类型包括机会复用和系统复用。机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。

软件架构演化

软件架构演化时期包括:设计时演化、运行前演化、有限制运行时演化 和 运行时演化
教程第二版P336

系统分析与设计

逆向工程,重构和再工程

所谓软件的逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。一般认为,凡是在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动都可称为“逆向工程”。
​
与之相关的概念是重构(Restructuring):指在同一抽象级别上转换系统描述形式;
设计恢复(Design Recovery):指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计的信息(不一定是原设计);
再工程(Re-engineering)也称”修复和改造工程”,它是在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本。

软件架构风格

软件架构风格定义

软件架构风格描述某一特定领域中的系统组织方式和惯用模式,反映了领域中众多系统所共有的(结构和语义)特征。对于语音识别、知识推理等问题复杂、解空间很大、求解过程不确定的这一类软件系统,通常会采用(黑板)架构风格。

调用返回风格

UDDl(Universal Description,Discovery&Integration),UDDI用于Web服务注册和服务查找
WSDL(Web Service Description Language),WSDL用于描述Web服务的接口和操作功能
SOAP(Simple ObjectAccess Protocol),SOAP为建立Web服务和服务请求之间的通信提供支持
BPEL(Business Process Execution Language ForWeb Services)翻译成中文的意思是面向Web服务的业务流程执行语言,也有的文献简写成BPEL4WS,它是一种使用 Web 服务定义和执行业务流程的语言。使用BPEL,用户可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构(SOA)。BPEL提供了一种相对简单易懂的方法,可将多个Web服务组合到一个新的复合服务(称作业务流程)中。
​
客户机/服务器系统开发时可以采用不同的分布式计算架构:
分布式表示架构是将表示层和表示逻辑层迁移到客户机,应用逻辑层、数据处理层和数据层仍保留在服务器上
分布式数据架构是将数据层和数据处理层放置于服务器,应用逻辑层、表示逻辑层和表示层放置于客户机
分布式数据和应用架构数据层和数据处理层放置在数据服务器上,应用逻辑层放置在应用服务器上,表示逻辑层和表示层放置在客户机。

架构风格

数据流风格:批处理序列、管道-过滤器
调用/返回风格:主程序/子程序、面向对象、层次结构。
独立构件风格:进程通信、事件驱动系统(隐式调用)。
虚拟机风格:解释器、基于规则的系统
仓库风格:数据库系统、超文本系统、黑板系统。
​
题目:某企业内部现有的主要业务功能已经封装为Web服务。为了拓展业务范围,需要将现有的业务功能进行多种组合,形成新的业务功能。针对业务灵活组合这一要求,采用(解释器)架构风格最为合适。

敏感点、权衡点、非风险点

敏感点是一个或多个构件(和/或构件之间的关系)的特性。研究敏感点可使设计人员或分析员明确在搞清楚如何实现质量目标时应注意什么。
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。例如,改变加密级别可能会对安全性和性能产生非常重要的影响。提高加密级别可以提高安全性,但可能要耗费更多的处理时间,影响系统性能。如果某个机密消息的处理有严格的时间延迟要求,则加密级别可能就会成为一个权衡点风
险点与非风险点不是以标准专业术语形式出现的,只是一个常规概念,即可能引起风险的因素,可称为风险点。某个做法如果有隐患,有可能导致一些问题,则为风险点:而如果某件事是可行的、可接受的,则为非风险点。

基于架构的软件开发方法

ABSDM(Architecture-Based Software Design lodel)把整个基于体系结构的软件过程划分为需求、设计、文档化、(复审)、(实现)和演化等 6个子过程。其中,(文档化)过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书
需求:获取用户需求,表示系统需要用到的构件
设计:与文档化和复审是一个迭代过程,可以从已有系统中抽取部分到新系统
文档化:主要输出规格说明和需求的质量设计说明书
复审:设计、文档化和复审是一个迭代过程
实现:根据设计文档实现构件并对构件做功能测试和组装应用的性能测试
演化:使用系统演化步骤去修改应用,以满足新的需求

结构化分析

结构化分析方法的基本思想是自顶向下,逐层分解。把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。经过逐层分解,每个最低层的问题都是足够简单、 容易解决的。结构化方法分析模型的核心是数据字典,围绕这个核心,有3个层次的模型,分别是数据模型、功能模型和行为模型(也称为“状态模型”)。在实际工作中一般使用 E-R图表示数据模型,用 DFD 表示功能模型,用状态转换图表示行为模型。这 3个模型有密切的关系,它们的建立不具有严格的时序性,而是一个迭代的过程。

软件质量属性

可修改性(modifiability):指能够快速地以较高的性价比对系统进行变更的能力
可修改性包含4个方面:
    1.可维护性
    2.可扩展性
    3.结构重构
    4.可移植性

构件与中间件技术

构件是一组通常需要同时部署的原子构件。构件和原子构件之间的区别在于,大多数原子构件永远都不会被单独部署,尽管它们可以被单独部署。相反,大多数原子构件都属于一个构件家族,一次部署往往涉及整个家族。
一个原子构件是一个模块和一组资源。原子构件是部署、版本控制和替换的基本单位。原子构件通常成组地部署,但是它也能够被单独部署。一个模块是不带单独资源的原子构件(在这个严格定义下,Java 包不是模块--在 Java 中部署的原子单元是类文件。一个单独的包被编译成多个单独的类文件--每个公共类都有一个)模块是一组类和可能的非面向对象的结构体,比如过程或者函数。
​
构建标准
EJB是企业级Java构件,用于开发和部署多层结构的、分布式的、面向对象的Java应用系统。其中,
(会话型构件)负责完成服务端与客户端的交互;
(实体型构件)用于数据持久化来简化数据库开发工作;
(消息驱动构件)主要用来处理并发和异步访问操作。

软件架构评估

体系结构权衡分析方法(ArchitectureTradeoff Analysis Method,ATAM)包含4个主要的活动领域,分别是场景和需求收集、体系结构视图和场景实现、(属性模型构造和分析)、折中。基于场景的架构分析方法(Scenarios-based Architecture Analysis Method,SAAM)的主要输入是问题描述、要需求声明和(体系结构描述)。
​
在架构评估中,场景是从(风险承担者)的角度对与系统交互的描述,一般采用(刺激,环境,响应)三方面来对场景进行描述

软件开发环境

软件开发环境应支持多种集成机制。根据功能不同,可以将集成机制分为三个部分:
(环境信息库),用以存储与系统开发有关的信息,并支持信息的交流与共享;
(过程控制与消息服务器),是实现过程集成和控制集成的基础;
(环境用户界面),它的统一性和一致性是软件开发环境的重要特征,

特定领域软件架构DSSA

特定领域软件架构(Domain Specific Software Architecture,DSSA)是指特定应用领域中为一组应用提供组织结构参考的标准软件架构。
​
DSSA通常是一个具有三个层次的系统模型,包括(领域开发)环境、领域特定应用开发环境和应用执行环境,其中(应用工程师)主要在领域特定应用开发环境中工作
​
从功能覆盖的范围角度,(垂直域)定义了一个特定的系统族,包含整个系统族内的多个系统,可作为该领域系统的可行解方案的一个通用软件架构;(水平域)定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能。
​
特定领域软件架构(Domain Specific Software Architecture,DSSA)以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,其目标是支持一个特定领域中多个应用的生成。DSSA的基本活动包括领域分析、领域设计和领域实现。其中领域分析的主要目的是获得(领域模型),领域模型描述领域中系统之间共同的需求,即领域需求;领域设计的主要目标是获得DSSA,DSSA描述领域模型中表示需求的解决方案;领域实现的主要目标是依据领域模型和DSSA(开发和组织可重用信息,并对基础软件架构进行实现)。
​
​

架构描述语言ADL

架构描述语言ADL(Architecture Description Language)是一种为明确说明软件系统的概念架构和为这些概念架构建模提供功能的语言,主要包括(组件、组件接口、连接件和架构配置)。ADL对连接件的重视成为区分它和其他建模语言的重要特征之一。

基于架构的软件开发ABSD

基于架构的软件开发(Architecture Based SoftwareDevelopment,ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计,它强调采用(视角与视图)来描述软件架构;采用(用例与质量场景)来描述需求。

架构权衡分析方法ATAM

架构权衡分析方法(Architecture Tradeoff AnalysisMethod,ATAM)是在基于场景的架构分析方法(Senarios-based Architecture Analysis Method, SAAM)基础之上发展起来的,主要包括场景和需求收集、(架构视图和场景实现)、属性模型构造和分析、属性模型折中等4个阶段。
ATAM方法要求在系统开发之前,首先对这些质量属性进行(评价)和折中。

系统架构集成技术

CBSE

用于CBSE的构件应该具备以下特征
(1)可组装型:对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外部访问。(2)可部署性:软件必须是自包含的,必须能作为独立实体在提供其构件模型实现的构件平台上运行构件总是二进制形式,无须在部署前编译。
(3)文档化:构件必须是完全文档化的,用户根据文桂来判断构件是否满足需求。
(4)独立性:构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署,如确实需要其他构件提供服务,则应显示声明。
(5)标准化:构件标准化意味着在CBSE过程中使用的件必须符合某种标准化的构件模型。

ESB

ESB的基本特征和能力包括:描述服务的元数据和服务注册管理;在服务请求者和提供者之间传递数据以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等;发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。

构件兼容问题

构件之间一般会出现3种不兼容情况:
(1)参数不兼容。接口每一侧的操作有相同的名字,但参数类型或参数个数不相同。
(2)操作不兼容。提供接口和请求接口的操作名不同。
(3)操作不完备。一个构件的提供接口是另一个构件请求接口的一个子集,或者相反。

构件组装问题

当用户选择构件的组装方式时,必须考虑系统所需要的(功能性需求)、(非功能性需求),以及当系统发生改变时,(一个构件能被另一个构件替代的难易程度)

系统工程与信息系统基础

信息系统战略规划

企业信息化程度是国家信息化建设的基础和关键,包括业务流程重组、供应链管理、人力资本投资等
​
企业信息化一定要建立在企业战略规划基础之上以企业战略规划为基础建立的企业管理模式是建立(企业战略数据模型)的依据。

AI芯片的关键特点

新型的计算范式、训练和推断、大数据处理能力、可重构的能力

项目管理

范围管理

在初步项目范围说明书中已文档化的主要的可交付物、假设和约束条件的基础上准备详细的项目范围说明书,是项目成功的关键。范围定义的输入包括以下内容:
1.项目章程。如果项目章程或初始的范围说明书没有在项目执行组织中使用,同样的信息需要进一步收集和开发,以产生详细的项目范围说明书。
2.项目范围管理计划。
3.组织过程资产.
4.批准的变更申请。
所以项目文档管理方案不属于范围定义的输入。

项目管理工具

项目管理工具用来辅助软件的项目管理活动。通常项目管理活动包括项目的计划、调度、通信、成本估算、资源分配及质量控制等。一个项目管理工具通常把重点放在某一个或某几个特定的管理环节上,而不提供对管理活动包罗万象的支持。项目管理工具具有以下特征:
(1)覆盖整个软件生存周期
(2)为项目调度提供多种有效手段
(3)利用估算模型对软件费用和工作量进行估算
(4)支持多个项目和子项目的管理
(5)确走关键路径,松弛时间,超前时间和滞后时间
(6)对项目组成员和项目任务之间的通信给予辅助
(7)自动进行资源平衡:
(8)跟踪资源的使用
(9)生成固定格式的报表和剪裁项目报告。
成本估算工具就是一种典型的项目管理工具

未来信息综合技术

场景自适应

(场景自适应)通过对当前场景进行三维语义理解的基础上,主动观察场景内人和物之间的变化,预测可能发生的事件,从而影响之后的行动模式

边缘计算

边缘计算的业务本质是云计算在数据中心之外汇聚节点的延伸和演进,主要包括云边缘、边缘云和(云化网关)三类落地形态。

容器

(容器)作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受环境限制,在不同计算环境间快速、可靠地运行。

商业智能

商业智能的核心技术包括:数据仓库、数据挖掘、联机分析处理

嵌入式系统架构

内核

vxworks5.5、VRTX 等嵌入式操作系统均采用的是宏内核
Linux、L4、WinCE 均采用的是微内核。

知识产权

中国著作权法对公民做拼的发表权的保护期限是(坐着有生之年加死后50年)
​
根据《软件产品管理办法》第四条 软件产品的开发,生产、销售、进出口等活动应遵守我国有关法律、法规和标准规范。任何单位和个人不得开发、生产、销售、进出口含有以下内容的软件产品:
1.侵犯他人知识产权的;
2.含有计算机病毒的;
3.可能危害计算机系统安全的;
4.含有国家规定禁止传播的内容的;
5.不符合我国软件标准规范的。
​
软件著作权的保护期限为50年,著作权中的署名权、修改权是永久的

软件著作权考题

软件著作权受法律保护的期限是自然人死亡后第(50年),一旦保护期满,权利将自行终止,成为社会公众可以自由使用的知识。