# 1 ~

# 26 ~

1666101357834

软件构件是软件系统中具有一定意义的、相对独立的可重用单元。与对象相比,构件可以基于对象实现,也可以不作为对象实现。构件需要在容器中管理并获取容器提供的服务;客户程序可以在运行状态下利用接口动态确定构件所支持的功能并调用。

1666101466905

对象管理组织(OMG)基于 CORBA 基础设施定义了 4 种构件标准。实体(Entity) 构件需要长期持久化并主要用于事务性行为,由容器管理其持久化。加工(Process)构件同样需要容器管理其持久化,但没有客户端可访问的主键。会话(Session)构件不需要容器管理其持久化,其状态信息必须由构件自己管理。服务(Service)构件是无状态的。

1666101564068

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

1666101633276

软件构件是部署、版本控制和替换的基本单位。构件是一组通常需要同时部署的原子构件。原子构件通常成组地部署,但是它也能够被单独部署。构件与原子构件的区别在于,大多数原子构件永远都不会被单独部署,尽管它们可以被单独部署。大多数原子构件都属于一个构件家族,一次部署往往涉及整个家族。一个模块是不带单独资源的原子构件。

1666101869677

CORBA 标准中,OMG 接口定义语言 IDL 文件包含了六种不同的元素,包括模块定义、类型定义、常量定义、异常、接口描述和值类型,其中,接口描述是一个 IDL 文件最核心的内容,模块定义将被映射为 Java 语言中的包和 C++ 语言中的命名空间。

1666101976872

在一个典型的基于 MVC (Model VIew Controller)的 J2EE 应用中,系统的界面由 JSP 构件实现,分发客户请求、有效组织其他构件为客户端提供服务的控制器由 Servlet 构件实现,数据库相关操作由 Entity Bean 构件实现,系统核心业务逻辑由 Session Bean 构件实现。

1666102084264

分布式系统开发分为 5 个逻辑计算层:表示层实现用户界面;表示逻辑层包括为了生成数据表示而必须进行的处理任务,如输入数据编辑等;应用逻辑层包括为支持实际业务应用和规则所需的应用逻辑和处理过程,如信用检查、数据计算和分析等;数据处理层包括存储和访问数据库中的数据所需的应用逻辑和命令,如查询语句和存储过程等:数据层是数据库中实际存储的业务数据。

上面有问题?

1666102391931

在 ANSI/IEEE 1471-2000 标准中,系统是为了达成利益相关人(Stakeholder)的某些使命(Mission),在特定环境 (Enviroment)中构建的。每一个系统都有一个架构(Architecture)。架构是对所有利益相关人的关注点(Concern)的响应和回答,通过架构描述(Architecture Description)来 说明。每一个利益相关人都有各自的关注点。这些关注点是指对其重要的,与系统的开发、运营或其他方面相关的利益。架构描述(Architecture Description)本质上是多视图的。每一个视图(View)是从一个特定的视角(Viewpoint)来表述架构的某一个独立的方面。试图用一个单一的视图来覆盖所有的关注点当然是最好的,但实际上这种表述方式将很难理解。视角(Viewpoint)的选择,基于要解决哪些利益相关人的哪些关注点。它决定了用来创建视图的语言、符号和模型等,以及任何与创建视图相关的建模方法或者分析技术。一个视图(View)包括一个或者多个架构模型(Model),一个模型也可能参与多个视图。模型较文本的表述的好处在于,可以更容易的可视化、检查、分析、管理和集成。

# 51 - 100

1664682801555

移植工作大体上分为计划阶段、准备阶段、转换阶段、测试阶段、验证阶段。1. 计划阶段,在计划阶段,要进行现有系统的调查整理,从移植技术、系统内容(是否进行系统提炼等)、系统运行三个方面,探讨如何转换成新系统,决定移植方法,确立移植工作体制及移植日程。2. 准备阶段,在准备阶段要进行移植方面的研究,准备转换所需的资料。该阶段的作业质量将对以后的生产效率产生很大的影响。3. 转换阶段,这一阶段是将程序设计和数据转换成新机器能根据需要工作的阶段。提高转换工作的精度,减轻下一阶段的测试负担是提高移

1664683072955

J2EE 核心组成: 容器:Applet Container、Application Container、Web Container、EJB Container 组件:Applet、Application、JSP/Servlet、EJB 服务: HTTP(Hypertext Transfer Protocol)超文本传输协议 RMI-IIOP(Remote Method Invocation ober the Internet Inter-ORB Protocol): 远程方法调用,融合了 Java RMI 和 CORBA(Common Object Rrquest Broker Architecture 公共对象请求代理体系结构) 在使用 Application 或 Web 端访问 EJB 端组件是使用 Java IDL(Java Interface Definition Language):Java 接口定义语言,主要用于访问外部的 CORBA 服务 JTA(Java Transaction API): 用于进行事务处理操作的 API JDBC(Java Database Connectivity): 为数据库操作提供的一组 API

JMS(Java Massage Service): 用于发送点对点消息的服务

JavaMail: 用于发送邮件

JAF(Java Activation Framework): 用于封装传递的邮件数据

JNDI(Java Naming and Directory Interface )JAXP(Java API for XML Parsing ): 专门用于 XML 解析操作的 API

JCA(J2EE Connector Architecture ):Java 连接器构架

JAAS (Java Authenticati on and Authorization Service)JSF (Java Server Faces)JSTL (JSP Standard Tag Library)SAAJ (SOAP with Attachments API for JAVA)JAXR (Java ApI for XML Registries)

1664683628738

在该方法中,架构用来激发和调整设计策略,不同的视图用来表达与质量目标有关的信息。架构设计是一个迭代过程,在建立软件架构的初期,选择一个合适的架构风格是首要的,在此基础上,开发人员通过架构模型,可以获得关于软件架构属性的理解,为将来的架构实现与演化过程建立了目标。

1664684002279

软件系统架构是关于软件系统的结构、行为和属性的高级抽象。在描述阶段,主要描述直接构成系统的抽象组件以及各个组件之间的连接规则,特别是相对细致地描述组件的交互关系。在实现阶段,这些抽象组件被细化为实际的组件,比如具体类或者对象。软件系统架构不仅指定了软件系统的组织和拓扑结构,而且显示了系统需求和组件之间的对应关系,包括设计决策的基本方法和基本原理。

# 101 ~ 150

1665963256926

软件架构风格描述某一特定领域中的系统组织方式和惯用模式,反映了领域中众多系统所共有的结构和语义两个方面的特征。对于语音识别、知识推理等问题复杂、解空间很大、求解过程不确定的这一类软件系统,通常会采用黑板架构风格以知识为中心进行分析与推理对于因数据而驱动,数据到达某个构件,经过内部处理,产生数据输出的系统通常采用管道 - 过滤器体系结构风格

1665963774419

ATAM 被分为四个主要的活动领域(或阶段) ,分别是场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。 SAAM 分析评估体系结构的过程包括五个步骤,即场景开发、体系结构描述、单个场景评估、场景交互和总体评估。SAAM 的主要输入问题是问题描述、需求声明和体系结构描述

1665963870199

软件架构文档是对软件架构的一种描述,帮助程序员使用特定的程序设计语言实现软件架构。软件架构文档的写作应该遵循一定的原则,这些原则包括:文档要从使用者 的角度进行编写;必须分发给所有与系统有关的开发人员;应该保持架构文档的即时更新,但更新不要过于频繁;架构文档中描述应该尽量避免不必要的重复;每次架构文档修改都应该记录进行修改的原则。

1665963999215

1665964007005

根据图中示波器的功能描述,结合示波器常见的功能和使用方式,可以看出图中的系统设计最大的缺陷在于没有建模系统与外界,特别是用户之间的交互方式。而与用户的交互无疑是示波器的一个十分重要的功能。

1665964134292

ABSD 以架构风格和质童属性为中心,强调由商业、质量和功能需求的组合驱动软件架构设计。ABSD 方法有三个基础:功能分解、选择架构风格实现质量及商业需求和软件模板的使用

1665964217931

外观模式是对象的结构模式,要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

1665964621677

1665964632640

根据题干描述,传统的编译器设计中,编译处理过程都以独立功能模块的形弍存在,程序源代码作为一个整体,依次在不同模块中进行传递,最终完成编译过程。针对这种设计思路,传统的编译器采用顺序批处理架构风格比较合适,因为在顺序批处理架构风格中,数据以整体的方式在不同的处理模块之间传递,符合题目要求。

集成开发环境(IDE)需要面对不同的数据结构,不同的数据类型与形态,在这种以数据为核心的系统中,采用数据共享机制显然是最为合适的。IDE 强调交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、语法错误提示、程序结构更新等多种功能的调用与结果呈现,这一需求的核心在于根据事件进行动作响应,采用隐式调用的架构风格最为合适

根据题干描述,公司需要对 IDE 进行适应性改造,支持采用现有编程语言进行编程,生成符合新操作系统要求的运行代码,并能够在现有操作系统上模拟出新操作系统的运行环境,以支持代码调试工作。针对上述要求,为了使 IDE 能够生成符合新操作系统要求的运行代码,应该是现有操作系统对新系统的一个适配过程,因此应该采用适配器架构设计策略比较合适模拟新操作系统的运行模式通常会采用虚拟机架构风格

1665965034783

针对题目给出的情况,公司的架构师决定采用 “包装器外观(Wrapper Facade)” 架构模式解决操作系统的差异问题。具体来说,服务端程序应该在包装器外观的实例上调用需要的方法,然后将请求和请求的参数发送给操作系统 API 函数,调用成功后将结果返冋。使用该模式提高了底层代码访问的一致性,但降低了服务端程序的调用性能。

1665965150798

该软件系统特别强调用户定义系统中对象的关系和行为这一特性,这需要在软件架构层面提供一种运行时的系统行为定义与改变的能力,根据常见架构风格的特点和适用环境,可以知道最合适的架构设计风格应该是解释器风格。

1665965216826

架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。

1665965349140

在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。

1665965425444

架构复审是基于架构开发中一个重要的环节。架构设计、文档化和复审是一个迭代的过程。从这个方面来说,在一个主版本的软件架构分析之后,要安排一次由 ** 外部人员 (用户代表和领域专家)** 参加的复审。架构复审过程中,通常会对一个可运行的最小化系统进行架构评估和测试。架构复审的目标是标识潜在的风险,及早发现架构设计的缺陷和错误。

1665965595846

根据题目描述,调温器需要实时获取外界的温度信息,与用户定义的温度进行比较并做出动作。根据该系统的应用领域和实际需求,可以看出这是一个典型的过程控制架构风格的应用场景。

1665965642268

根据题干描述,语音识别软件需要对用户的语音指令进行音节分割、重音判断、语法分析和语义分析,最终对用户的意图进行推断。由于语音识别具有不确定性,需要人工智能技术的支持和专家意见的汇总和决策, 并且需要支持识别过程中的推理和决策。根据上述分析,选项中列举的架构风格中,黑板风格最符合要求。

1665965694453

外观模式是对象的结构模式,要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

1665965800595

1665965863492

编程语言的集成开发环境需要提供代码编辑、语法高亮、代码编译、运行调试等功能,这些功能的特点是以软件代码为中心进行对应的编译处理与辅助操作。根据常见架构风格的特点和适用环境,可以知道最合适的架构设计风格应该是数据仓库风格。

1665965880656

架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。

1665965963301

Windows 操作系统在图形用户界面处理方面采用的是典型的 “事件驱动” 的架构风格,首先注册事件处理的是回调函数,当某个界面事件发生时(例如键盘敲击、鼠标移 动等),系统会查找并选择合适的回调函数处理该事件。Java 语言是一种解释型语言, 在 Java 虚拟机上运行,这从架构风格上看是典型的 “虚拟机” 风格,即通过虚拟机架构屏蔽不同的硬件环境。

1665966089263

根据题目描述,漫步者机器人需要根据自身状态和外界环境进行自动调整,这是一个典型的根据外部事件进行响应的场景。比较 4 个候选项,隐式调用比较适合根据外部事件进行处理和动作的情景。

1665966127218

根据题干描述,需要将现有的业务功能进行多种组合,形成新的业务功能。这种情况下,可以将业务功能封装成服务,并通过某种语言对业务流程进行描述,通过一个解释引擎对流程描述进行解释和执行。根据上述分析,选项中列举的架构风格中,解释器风格最符合要求。

1665966290857

1665966301122

题干描述了某软件公司一款图像处理软件的需求分析与设计过程,并明确指出采用设计模式实现关键需求对系统灵活性与扩展性的要求。

针对需求 1,为了支持灵活的撤销与重做等行为,采用命令模式最为合适,因为命令模式可以将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,还可以对请求排队,或记录请求日志,以及支持可撤销的操作。

针对需求 2,为了封装图像操作与照片特征之间的复杂逻辑关系,采用状态模式最为合适,因为状态模式将每一个条件分支放入一个独立的类中,这样就可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化;

针对需求 3,为了实现图像处理算法的灵活选择与替换,采用策略模式最为合适,因为策略模式定义一系列的算法,把它们封装起来,并且使它们可相互替换,使得算法可独立于使用它的客户而变化。

1665966761046

软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。

1665966889615

规则系统体系结构风格是一个使用模式匹配搜索来寻找规则并在正确的时候应用正确的逻辑知识的虚拟机,其支持把频繁变化的业务逻辑抽取出来,形成独立的规则库。这些规则可独立于软件系统而存在,可被随时地更新。它提供了一种将专家解决问题的知识与技巧进行编码的手段,将知识表示为 “条件 - 行为” 的规则,当满足条件时,触发相应的行为,而不是将这些规则直接写在程序源代码中,规则一般用类似于自然语言的形式书写,无法被系统直接执行,故而需要提供解释规则执行的 “解释器”。

因此,本题中的扫地机器人系统适用于规则系统体系结构风格。

1665966998823

根据题目中描述,VIP 管理系统会根据不同商场活动,不定期更新 VIP 会员的审核标准和折扣标准,属于典型规则系统应用场景。

1665967049685

题目中提及 “支持玩家自行创建战役地图” 这说明系统要能应对 “自定义” 内容的解析,这需要用到解释器风格。

1665967167089

根据题干描述,现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。这种情况下,可以针对程序的各种形态构建数据库,通过中心数据库进行转换与处理。根据上述分析,选项中列举的架构风格中,数据共享风格最符合要求。

1665967388998

基于架构的软件设计(Architecture-Based Software Design,ABSD)方法有三个基础,分别是对系统进行功能分解、采用架构风格实现质量属性与商业需求、采用软件模板设计软件结构。ABSD 方法主要包括架构需求等 6 个主要活动,其中架构复审活动的目标是标识潜在的风险,及早发现架构设计中的缺陷和错误;架构演化活动针对用户的需求变化,修改应用架构,满足新的需求。 软件架构文档应该从使用者的角度进行书写,针对不同背景的人员采用不同的书写方式,并将文档分发给相关人员。架构文档要保持较新,但不要随时保证文档最新,要保持文档的稳定性。架构文档化的主要输出结果是架构规格说明书和架构质量说明书

1665967501766

1665967654653

解释器是一个用来执行其他程序的程序。解释器可针对不同的硬件平台实现一个虚拟机,将高抽象层次的程序翻译为低抽象层次所能理解的指令,以消除在程序语言与硬件之间存在的语义差异。作为一种体系结构风格,解释器已经被广泛应用在从系统软件到应用软件的各个层面,包括各类语言环境、Internet 浏览器、数据分析与转换等;LISP,Prolog、JavaScript、VBScript、HTML、Matlab、数据库系统(SQL 解释器)、各种通信协议等。 因此,本题目针对业务灵活组合这一要求,采用解释器体系结构风格最为合适。

1665967688879

用户会注册自己的兴趣,然后系统也会把新闻按兴趣分类,如果某个新闻事件发生,可以通过事件来触发推送动作,将新闻推送给对其感兴趣的用户。这是典型的事件驱动系统应用场景。

1665967706731

1665967790094

根据题干描述,Web 服务器服务端的核心功能是数据处理,由于 Web 服务在数据传输方面具有协议分层的特征,即底层协议会包装上层协议(HTTP 协议体中包含整个 SOAP 消息内容),因此需要数据内容的逐步分解与分阶段处理。比较选项中的架构风格, 由于管道 - 过滤器的架构风格支持分阶段数据处理,因此特别适合该服务端处理软件的要求。

1665967912092

特定领域软件架构(DSSA)是在一个特定应用领域为一组应用提供组织结构参考的标准软件架构。实施 DSSA 的过程中包括一系列基本的活动,其中领域设计活动的主要目的是为了获得 DSSA。该活动参加人员中,领域专家的主要任务是提供关于领域中系统的需求规约和实现的知识。

1665967976508

根据题干描述,该系统需要能够支持不同芯片之间的数据交互,并能够独立改变芯片之间的数据交互过程。这种情况下,可以引入一个中介层,通过中介层屏蔽不同芯片之间的两两交互。根据上述分析,选项中列举的设计模式中,中介者模式最符合要求。

1665968026794

1665968106237

在对一个软件系统的架构进行设计与确认之后,需要进行架构复审。架构复审的目的是为了标识潜在的风险,及早发现架构设计中的缺陷和错误。在架构复审过程中,主要由用户代表与领域专家决定架构是否满足需求、质量需求是否在设计中得到体现。

1665968152435

特定领域软件架构(Domain Specific Software Architecture,DSSA)以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,其目标是支持一个特定领域中多个应用的生成。DSSA 的基本活动包括领域分析、领域设计和领域实现。其中领域分析的主要目的是获得领域模型,领域模型描述领域中系统之间共同的需求,即领域需求;领域设计的主要目标是获得 DSSA,DSSA 描述领域模型中表示需求的解决方案;领域实现的主要目标是依据领域模型和 DSSA 开发和组织可重用信息,并对基础软件架构进行实现。

# 151 ~ 162

1665968425934

C2 体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2 风格中的系统组织规则如下:①系统中的构件和连接件都有一个顶部和一个底部;②构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;③一个连接件可以和任意数目的其他构件和连接件连接;④当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

1665968455073

1665968585534

根据题干描述,调试器在设置端点时,其本质是在断点处设置一个事件监听函数,当程序执行到断点位置时,会触发并调用该事件监听函数,监听函数负责进行自动卷屏、刷新变量数值等动作。这是一个典型的回调机制,属于隐式调用的架构风格。

1665968647380

1665968788364

根据题干描述,系统需要支持用户在图像处理过程中的撤销和重做的动作,因此可以将用户动作封装成对象,通过对象之间的传递和转换实现撤销和重做等动作。根据上述分析,选项中列举的设计模式中,命令模式最符合要求。

1665968874146

1665969152683

设计模式基于面向对象技术,是人们在长期的开发实践中良好经验的结晶,提供了一个简单、统一的描述方法,使得人们可以复用这些软件设计方法、过程管理经验。按照设计模式的目的进行划分,现有的设计模式可以分为创建型、结构型和行为型三种模式。其中创建型模式主要包括 abstract factory、builder、factory method、prototype、singleton 等,结构型模式主要包括 adaptor、bridge、composite、decorator、facade、flyweight 和 proxy,行为型模型主要包括 chain of responsibility、command、interpreter、iterator、mediator、memento、observer、state、strategy、template method、visitor 等。

bridge 模式可以每一个复杂的组件分成功能性抽象和内部实现两个独立的但又相关的继承层次结构,改变组件的这两个层次结构很简单,以至于它们可以互相独立地变化,采用 bridge 模式可以将接口与实现分离,提高了可扩展性,并对客户端隐藏了实现的细节。

1665969335629

按照设计模式的目的进行划分,现有的设计模式可以分为创建型模式、结构型模式和行为型模式三类。

创建型模式通过采用抽象类所定义的接口,封装了系统中对象如何创建、组合等信息,其代表有工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、建造者模式(Builder Pattern)、原型模式(Prototype Pattern)、单例模式(Singleton Pattern)等。

结构型模式主要用于如何组合己有的类和对象以获得更大的结构,其代表有适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)、组合模式(Composite Pattern)、装饰者模式(Decorator Pattern)、外观模式(Facade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)等。

行为型模式主要用于对象之间的职责及其提供服务的分配方式,其代表有责任链模式(Chain of Responsibility Pattern)、命令模式(Command Pattern)、解释器模式(Interpreter Pattern)、迭代器模式(Iterator Pattern)、中介者模式(Mediator Pattern)、备忘录模式 (Memento Pattern)、观察者模式(Observer Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、模板方法模式(Template Method Pattern)、访问者模式(Visitor Pattern)等。

# 201 ~ 254

1665450179971

根据题干描述,“网站正常运行时,用户发起的交易请求应该在 3 秒内完成” 主要与性能这一质量属性相关,通常可采用资源调度、增加可用资源、资源仲裁等架构策略实现该属性;“在线交易主站宕机后,能够在 3 秒内自动切换至备用站点并恢复正常运行” 主要与可用性质量属性相关,通常可采用主动 / 被动冗余、心跳、检查点、选举等多种架构策略实现该属性;“系统应该具备一定的安全保护措施,从而能够抵挡恶意的入侵破坏行为,并对所有针对网站的攻击行为进行报警和记录” 主要与安全质量属性相关,通常可采用加密、认证、追踪审计等架构策略实现该属性。

对于题干描述:“在并发用户数量为 1000 人时,用户的交易请求需要在 0.5 秒内得到响应”,主要与性能这一质量属性相关,实现该属性的常见架构策略包括:增加计算资源、减少计算开销、 引入并发机制、采用资源调度等。“当系统由于软件故障意外崩溃后,需要在 0.5 小时内恢复正常运行” 主要与可用性质量属性相关,通常可采用心跳、Ping/Echo、主动冗余、被动冗余、选举等架构策略实现该属性;“系统应该能够抵挡恶意用户的入侵行为,并进行报警和记录” 主要与安全性质量属性相关,通常可采用入侵检测、用户认证、用户授权、追踪审计等架构策略实现该属性。

1665450304667

架构模式是软件设计中的高层决策,例如 C/S 结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策;设计模式主要关注软件系统的设计,与具体的实现语言无关;惯用法则是实现时通过某种特定的程序设计语言来描述构件与构件之间的关系,例如引用 - 计数就是 C++ 语言中的一种惯用法。

1665450542037

根据题干描述,在线文档系统需要根据用户的查询需求逐步将查询请求依次传递,对比 4 个候选项,其中在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。因此责任链模式是能够满足该要求的最好模式。

1665450638287

软件质量属性通常需要采用特定的设计策略实现,并且设计策略会对其他的质量属性产生影响。例如,心跳机制策略能提高该系统的可用性,优先级队列策略能够提高该系统的性能,限制访问策略能够提髙该系统的安全性。

架构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM)是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。ATAM 可以分为 4 个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。题干描述中,“系统在进行文件保存操作时,应该与 Windows 系统的操作方式保持一致”,讨论的是针对使用系统的用户的习惯问题,这与易用性相关。“系统应该提供一个开放的 API 接口,支持远程对系统的行为进行控制与调试” 这个描述与系统的可测试性相关。在识别出质量属性描述后,通常采用效用树对质量属性的描述进行刻画与排序。在评估过程中,权衡点是一个会影响多个质量属性的架构设计决策。

1665451069369

“对系统的消息中间件进行替换时,替换工作需要在 5 人 / 月内完成” 主要与可修改性质量属性相关,通常可采用接口 - 实现分类、抽象、信息隐藏等架构策略实现该属性。

1665451233551

根据题干描述,可以看出其基础是一个图形界面,并要求为图形界面提供一些定制的特效,例如带滚动条的图形界面,能够显示艺术字体且透明的图形界面等。这要求能够动态地对一个对象进行功能上的扩展,也可以对其子类进行功能上的扩展。对照选项中的 4 种设计模式,装饰模式最符合这一要求。

1665451426839

根据题干描述,应用系统需要使用某公司开发的类库,该应用系统由一组窗格组成,应用需要协调窗格之间的行为,并且不能引用窗格自身,在这种要求下,对比 4 个候选项,其中中介者模式用一个中介对象封装一系列的对象交互。中介者使用的各对象不需要显式的相互调用,从而使其耦合松散。可以看出该模式最符合需求。

1665451683741

风险是某个存在问题的架构设计决策,可能会导致问题:非风险与风险相对,是良好的架构设计决策; 敏感点是一个或多个构件的特性;权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。根据上述定义,可以看出 “改变业务数据编码方式会对系统的性能和安全性产生影响” 是对权衡点的描述,“假设用户请求的频率为每秒 1 个,业务处理时间小于 30 毫秒,则将请求响应时间设定为 1 秒钟是可以接受的” 是对非风险的描述。

1665451910381

机器人系统主电源断电后,能够在 10 秒内自动启动备用电源并进行切换,恢复正常运行属于可用性,因为场景描述的是故障恢复问题。主动冗余是可用性的常见策略。机器人在正常运动过程中如果发现前方 2 米内有人或者障碍物,应在 1 秒内停止并在 2 秒内选择一条新的运行路径属于性能,资源调度是其常见策略。对机器人的远程控制命令应该进行加密,从而能够抵挡恶意的入侵破坏行为,并对攻击进行报警和记录属于安全性,常见的策略是追踪审计。

1665452084181

根据题干描述,可以看出本题的核心在于对某个具有固定结构的活动节点需要多种处理能力,且处理能力可扩展,也就是说要求在不改变原来类结构(活动节点)的基础上增加新功能。对照 4 个选项,发现访问者模式最符合要求。

1665452153578

根据题干描述,该编辑器需要在文档中高系统效率,需要避免同时创建这些图像。针对这些要求,对比候选项,可以发现代理模式可以解决直接访问对象时带来的问题,例如,要访问的对象在远程的机器上;对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问等。因此代理模式是最为合适的设计模式。

1665452229017

ATAM 是一种常用的软件架构评估方法,该方法强调对软件的质量属性进行分析、分类和优先级排序等工作,在此基础上构建质量属性效用树,并对风险点、非风险点、敏感点和权衡点进行识别和分析。

1665452480862

ATAM 是软件体系结构评估中的一种方法,主要对软件体系结构的设计结果进行评估。评估是软件系统详细设计、实现和测试之前的阶段工作,因此评估不涉及系统的实现代码和测试,因为评估是考査软件体系结构是否能够合适地解决软件系统的需求,并不对软件需求自身是否准确进行核实,而软件需求是否准确是需求评审阶段的工作。ATAM 并不是一种精确的评估方法,该方法表现的主要形式是评审会议。

1665452543250

正确识别风险点、非风险点、敏感点和权衡点是进行软件架构评价的关键步骤。其中敏感点是实现一个特定质量属性的关键特征,该特征为一个或多个软件构件所共有。系统权衡点会影响一个或多个属性,并对于多个属性来说都是敏感点。基于该定义,可以看出 “改变加密的级别可能会对安全性和性能都产生显著的影响” 正是一个对系统权衡点的描述。

1665452702461

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

上面的例题中让我对敏感点和权衡点产生了疑惑

敏感点应该是特性,而权衡点应该是敏感点的具体取的某个值

1665453931512

SAAM 是卡耐基梅隆大学软件工程研究所的 Kazman 等人于 1983 年提出的一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法。SAAM 的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估

1665454266416

1665454379520

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

1665454533245

加密子系统的加密级别会对安全性和性能产生影响,一般而言,加密程度越高,安全性越好,但是其性能会降低;而加密程度越低,安全性越差,但性能一般会提高。因此该子系统将在安全性和性能两个方面产生冲突,所以该子系统一定属于权衡点和敏感点。

1665454697647

正确识别风险点、非风险点、敏感点和权衡点是进行软件架构评价的关键步骤。其中敏感点是实现一个特定质量属性的关键特征,该特征为一个或多个软件构件所共有。 系统权衡点会影响一个或多个属性,并对于多个属性来说都是敏感点。基于该定义,可以看出 “改变加密的级别可能会对安全性和性能都产生显著的影响” 正是一个对系统权衡点的描述。

在上文的理解中,权衡点应该是此消彼长的。

1665454825290

1665455178811

1665455205470

与方案一相比,方案二服务器采用虚拟化技术,当一台服务器出现物理故障时将业务迁移到另外一台物理服务器上,保障了业务的连续性。网络的安全性、数据的安全性、业务的可用性都没有发生实质性变化。

当然方案二还有一些缺陷,首先缺少将数据进行统一的存储与管理的企业级磁盘阵列;其次缺少安全审计,不便于相关行为的记录、存储与分析;而且缺少内部财务用户接口,不便于快速管理与维护。但是如果加网闸,就不能实现对财务系统的访问。不能实现用户可通过校园网对财务系统的访问。