当前位置: 首页 > news >正文

2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)

在这里插入图片描述
在这里插入图片描述

二、软件架构复用

◆软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。

◆软件架构复用的类型包括机会复用和系统复用。机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。
◆可复用的资产包括:需求、架构设计、元素、建模与分析、测试、项目规划、过程方法和工具、人员、样本系统、缺陷消除。
◆复用的基本过程主要包括3个阶段: 首先构造/获取可复用的软件资产,其次管理这些资产
(构件库)
最后针对特定的需求,从这些资产中选择可复用的部分,以开发满足需求的应用系统

软件复用过程的主要阶段包括( )。

A:分析可复用的软件资产、管理可复用资产和使用可复用资产

B:构造/获取可复用的软件资产、管理可复用资产和使用可复用资产

C:构造/获取可复用的软件资产和管理可复用资产

D:分析可复用的软件资产和使用可复用资产

答案:B

解析:

软件复用是指系统化的软件开发过程:开发一组基本的软件构造模块,以覆盖不同的需求/体系结构之间的相似性,从而提高系统开发的效率、质量和性能。

复用的基本过程主要包含3个阶段:首先构造/获取可复用的软件资产,其次管理这些资产,最后针对特定的需求,从这些资产中选择可复用的部分,以开发满足需求的应用系统。

三、DSSA(特定领域软件架构)

DSSA(Domain Specific Software Architecture)就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构,实施DSSA的过程中包含了一项基本的活动。其中,领域模型是( )阶段的主要目标。

A:领域设计 B:领域实现

C:领域分析 D:领域工程
答案:C

特定领域软件架构( Domam Specifie Sottware Architecture . DSSA )是指特定应用领域中为一组应用提供组织结构参考的标准软件架构。从功能覆盖的范围角度,(1)定义了一个特定的系统族,包含整个系统族内的多个系统,可作为该领城系统的可行解决方案的一个通用软件架构;(2)定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能。

1-A:垂直域

1-B:水平域

1-C:功能域

1-D:属性域

2-A:垂直域

2-B:水平域

2-C:功能域

2-D:属性域

答案:A、B

◆DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合
◆DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。
◆垂直域: 在一个特定领域中的通用的软件架构,是一个完整的架构。
◆水平域: 在多个不同的特定领域之间的相同的部分的小工具(如购物和教育都有收费系统,收费系统即是水平域)

◆DSSA的三个基本活动:分析、设计、实现
①领域分析:这个阶段的主要目标是获得领域模型(领域需求)识别信息源,即整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等,在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。
②领域设计: 这个阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计(特定领域软件架构)。建立了领域模型之后,就可以派生出满足这些被建模的领域需求DSSA。
③领域实现: 这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。

◆参与DSSA的四种角色人员:
领域专家: 包括该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。提供关于领域中系统的需求规约和实现的知识,帮助组织规范的、一致的领域字典,帮助选择样本系统作为领域工程的依据,复审领域模型、DSSA等领域工程产品,等等

领域分析人员:由具有知识工程背景的有经验的系统分析员来担任。控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中。
领域设计人员: 由有经验的软件设计人员来担任。根据领域模型和现有系统开
发出DSSA,并对DSSA的准确性和一致性进行验证。
领域实现人员: 由有经验的程序设计人员来担任。根据领域模型和DSSA,开发
构件。

◆建立DSSA的过程:
定义领域范围: 领域中的应用要满足用户一系列的需求。
定义领域特定的元素: 建立领域的字典,归纳领域中的术语,识别出领域中相同和不相同的元素。
定义领域特定的设计和实现需求的约束: 识别领域中的所有约束,这些约束对领域的设计和实现会造成什么后果。
定义领域模型和架构: 产生一般的架构,并描述其构件说明
产生、搜集可复用的产品单元: 为DSSA增加复用构件,使可用于新的系统。

以上过程是并发的、递归的、反复的、螺旋型的。

三层次模型
领域开发环境: 领域架构师决定核心架构,产出参考结构、参考需求、架构、领域模型、开发工具。
领域特定的应用开发环境: 应用工程师根据具体环境来将核心架构实例化。
应用执行环境: 操作员实现实例化后的架构。

在这里插入图片描述

这里领域开发环境面向的是整个领域,比如通用的教育行业的领域;领域应用开发环境是特定的领域:比如教育行业下特定的盲人教育领域;

DSSA是在一个特定应用领域中为一组应用提供组织结构参考的软件体系结构,参与DSSA的人员可以划分为4种角色,包括领域专家、领域设计人员、领域实现人员和(),其基本活动包括领域分析、领域设计和()。
A.领域测试人员 B.领域顾问 C.领域分析师 D.领域经理
A.领域建模 B.架构设计 C.领域实现 D.领域评估

答案:C、C

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

A.参考设计 B.参考规约 C.参考架构 D.参考实现

A.领域边界 B.领域信息 C.领域对象 D.领域模型

A.特点领域软件需求 B.特定领域软件架构 C.特定领域软件设计模型 D.特定领域软件重用模型

答案:C、D、B

四、ABSD(基于架构的软件开发)

ABSD 方法是一个自顶向下、递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。

◆ABSD方法是架构驱动,强调由业务、质量和功能需求的组合驱动架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。进一步来说,用例描述的是功能需求,质量属性场景描述的是质量需求(或侧重于非功能需求)。

◆使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求获取和分析还没有完成,就开始了软件设计。
◆ABSD方法有三个基础。

第一个基础是功能的分解,使用已有的基于模块的内聚和耦合技术;

第二个基础是通过选择架构风格来实现质量和业务需求;

第三个基础是软件模板的使用,软件模板利用了一些软件系统的结构。
◆ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,架构总是清晰的,有助于降低架构设计的随意性。

注意:RUP(统一过程) 是用例驱动,ABSD是架构驱动。

用例:反映了大的方向的功能,比较泛,比如图书馆管理系统的管理员可以查询图书这个功能,那么查询书籍就是一个用例(这个用例没有详细的说怎么查等等);场景:反映了具体的流程,比较细,而查询书籍这个用例的场景就是比如:需要先登录账户、然后输入要查询的内容、查询到之后要2-3秒之内给个反馈等等。

所以用例更偏向于功能的描述,场景就相当于对用例的更详细的描述。

基于架构的软件开发过程可分为下列六步:架构需求、架构设计、架构文档化、架构复审、架构实现、架构演化(优化)

在这里插入图片描述

(1)架构需求:重在掌握标识构件的三步,如下左图。
(2)架构设计:将需求阶段的标识构件映射成构件进行分析,如下右图。
(3)架构(体系结构)文档化:主要产出两种文档,即架构(体系结构)规格说明,测试架构(体系结构)需求的质量设计说明书。文档是至关重要的,是所有人员通信的手段,关系开发的成败。
在这里插入图片描述

(4)架构复审:由外部人员(独立于开发组织之外的人,如用户代表和领域专家等)参加的复审,复审架构是否满足需求,质量问题,构件划分合理性等。若复审不过,则返回架构设计阶段进行重新设计、文档化,再复审。
(5)架构实现:用实体来显示出架构。实现构件,构件组装成系统,如下左图:
(6)架构演化:对架构进行改变,按需求增删构件,使架构可复用,如下右图:

在这里插入图片描述

在基于体系结构的软件设计方法中,采用()来描述软件架构,采用()来描述功能需求,采用()来描述质量需求,
A.类图和序列图 B.视角与视图 C.构件和类图 D.构件与功能
A.类图 B.视角 C.用例 D.质量场景
A.连接件 B.用例 C.质量场景 D.质量属性

答案:B、C、C

体系结构文档化有助于辅助系统分析人员和程序员去实现体系结构。体系结构文档化过程的主要输出包括()。
A.体系结构规格说明、测试体系结构需求的质量设计说明书
B.质量属性说明书、体系结构描述
C.体系结构规格说明、软件功能需求说明
D.多视图体系结构模型、体系结构验证说明

答案:A

基于体系结构的软件设计(Architecture-Based Software Design,ABSD)方法是体系结构驱动,是指构成体系结构的(1)的组合驱动的。 ABSD 方法是一个自顶向下、递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生(2)。

1-A:产品、功能需求和设计活动

1-B:商业、质量和功能需求

1-C:商业、产品和功能需求

1-D:商业、质量和设计活动

2-A:软件产品和代码

2-B:软件构件和类

2-C:软件构件和连接件

2-D:类和软件代码

答案:1-B、2-B

五、架构评估

1、质量属性

系统(1)是指在规定的时间内和规定条件下能有效地实现规定功能的能力。它不仅取决于规定的使用条件等因素,还与设计技术有关。常用的度量指标主要有故障率(或失效率)、平均失效等待时间、平均失效间隔时间和可靠度等。其中,(2)是系统在规定工作时间内无故障的概率。

1-A:可靠性

1-B:可用性

1-C:可理解性

1-D:可测试性

2-A:失效率

2-B:平均失效等待时间

2-C:平均失效间隔时间

2-D:可靠度

答案:1-A、2-D

解析:

可靠性(Reliability)是指产品在规定的条件下和规定的时间内完成规定功能的能力。

常用的度量指标主要有故障率(或失效率)、平均失效等待时间、平均失效间隔时间和可靠度等。

可靠度就是软件系统在规定的条件下、规定的时间内不发生失效的概率。

效用树是采用架构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM)进行架构评估的工具之一,其树形结构从根部到叶子节点依次为( )。

A:树根、属性分类、优先级、质量属性场景

B:树根、质量属性、属性分类、质量属性场景

C:树根、优先级、质量属性、质量属性场景

D:树根、质量属性、属性分类、优先级

答案:B

解析:

形成的一棵质量属性效用树结构为:树根-质量属性-属性细分(分类)-质量属性场景(叶子)

软件系统质量属性(Quality Attribute)是一个系统的可测量或者可测试的属性,它被用来描述系统满足利益相关者需求的程度,其中,(1)关注的是当需要修改缺陷、增加功能、提高质量属性时,定位修改点并实施修改的难易程度,(2)关注的是当用户数和数据量增加时,软件系统维持高服务质量的能力。

1-A:可靠性 1-B:可测试性

1-C:可维护性 1-D:可重用性

2-A:可用性 2-B:可扩展性

2-C:可伸缩性 2-D:可移植性

答案:C、C

1、性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如响应时间、吞吐量。
设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等。
2、可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。如MTTF、MTBF、MTTR
设计策略:心跳、Ping/Echo、冗余(备份)、选举
3、可用性:是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。
设计策略:心跳(检测主机是否坏了,然后备份机及时顶上)、Ping/Echo、冗余(备份)、选举。
4、安全性:是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。保密性、完整性、不可抵赖性、可控性。
设计策略:入侵检测、用户认证、用户授权、追踪审计。

在可用性、可靠性两者比较模糊时,优先考虑可用性方面。

可靠性:有了错误能不能恢复;可用性:故障间隔时间,系统正常使用的时间比例。

5、可修改性:指能够快速的以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量。
设计策略:接口-实现分类、抽象、信息隐藏。
6、功能性:是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。
7、可变性(可扩展性):指体系结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品的基础时,可变性是很重要的。
8、互操作性:作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,也影响应用的软件体系结构。

可以将软件系统质量属性分为运行期质量属性与开发期质量属性。

运行期质量属性:

  1. 性能:指软件系统及时提供相应服务的能力。(速度、吞吐量、持续高速性)
  2. 安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
  3. 易用性:指软件系统易于被使用的程度。
  4. 可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力。
  5. 互操作性:与其他系统交换数据和相互调用服务的难易程度。
  6. 可靠性:在一定的时间内无故障运行的能力。
  7. 持续可用性:指系统长时间无故障运行的能力。与可靠性相关联,常将其纳入可靠性中。
  8. 鲁棒性:是指软件系统在一些非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力。也称健壮性或容错性。

开发期质量属性:

  1. 易理解性:指设计被开发人员理解的难易程度。
  2. 可扩展性:软件因适应需求变化而增加新功能的能力。也称为灵活性。
  3. 可重用性:指重用软件系统或某一部分的难易程度。
  4. 可测试性:对软件测试以证明其满足需求规范的难易程度。
  5. 可维护性:当需要修改缺陷、增加功能、提高质量属性时,定位修改点并实施修改的难易程度。
  6. 可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
2、质量属性场景

质量属性场景是一种面向特定质量属性的需求。它由6 部分组成:
①刺激源(Source):这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)
②刺激(stimulus):该刺激是当刺激到达系统时需要考虑的条件
③环境(Environment):该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
④制品(Artifact):某个制品被激励。这可能是整个系统,也可能是系统的一部分。
⑤响应(Response):该响应是在激励到达后采取的行动
⑥响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。

可修改性质量属性场景描述实例:

在这里插入图片描述

刺激源在一定环境下对制品进行刺激;制品对于该刺激进行响应并进行响应度量。

为了精确描述软件系统的质量属性,通常采用质量属性场景(Quality Attribute Scenario)作为描述质量属性的手段。质量属性场景是一个具体的质量属性需求,是利益相关者与系统的交互的简短陈述,它由刺激源、刺激、环境、制品、(1)六部分组成。其中,想要学习系统特性、有效使用系统、使错误的影响最低、适配系统、对系统满意属于(2)质量属性场景的刺激。

1-A:响应和响应度量 1-B:系统和系统响应

1-C:依赖和响应 1-D:响应和优先

2-A:可用性 2-B:性能

2-C:易用性 2-D:安全性

答案:1-A、2-C

解析:

质量属性场景由刺激源、刺激、环境、制品、响应和响应度量六部分组成。

质量属性场景主要关注可用性、可修改性、性能、可测试性、易用性和安全性等6类质量属性。

3、软件架构评估

改变加密级别可能会对安全性和性能产生非常重要的影响,因此在软件架构评估中,该设计决策是一个( )。

A:敏感点

B:风险点

C:权衡点

D:非风险点

答案:C

解析:

系统架构评估中有一个重要概念,就是敏感点(Sensitivity Point)与权衡点(Tradeoff Point),其是关键的架构决策。

敏感点是一个或多个构件(和/或构件之间的关系)的特性。权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。

题干中,改变加密等级,影响了多个属性,就是属于权衡点。

在进行架构评估时,首先要明确具体的质量目标,并以之作为判定该架构优劣的标准。为得出这些目标而采用的机制叫做场景,场景是从()的角度对与系统的交互的简短措述。

A:用户 B:系统架构师

C:项目管理者 D:风险承担者

答案:D

解析:

场景(scenarios):在进行架构评估时,一般首先要精确地得出具体的质量目标,并以之作为判定该体系结构优劣的标准。为得出这些目标而采用的机制做场景。场景是从风险承担者的角度对与系统的交互的简短描述。在体系结构评估中,一般采用刺激(stimulus)、环境(environment)和响应(response)三方面来对场景进行描述。

◆敏感点:是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。
◆权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。
◆风险点与非风险点不是以标准专业术语形式出现的,只是一个常规概念,即可能引起风险的因素,可称为风险点。某个做法如果有隐患,有可能导致一些问题,则为风险点;而如果某件事是可行的可接受的,则为非风险点。
◆软件架构评估在架构设计之后,系统设计之前,因此与设计、实现、测试都没有关系。评估的目的是为了评估所采用的架构是否能解决软件系统需求,但不是单纯的确定是否满足需求(还要满足质量要求、成本要求等)。

比如为了实现某个功能,该功能要设计的考虑性能优先或安全优先,或者性能和安全并列优先。这里的性能、安全就是特性、敏感点;而既要考虑安全又要考虑性能(安全基本就要牺牲一定性能,性能基本就要牺牲一定安全)这就是权衡点。

1、三种常用的架构评估方式

基于调查问卷(检查表)的方式:类似于需求获取中的问卷调查方式,只不过是架构方面的问卷,要求评估人员对领域熟悉。
基于度量的方式:制定一些定量指标来度量架构,如代码行数、如几秒要打开等。要制定质量属性和度量结果之间的映射,要求评估人员对架构熟悉。

基于场景的方式:主要方法。首先要确定应用领域的功能和软件架构的结构之间的映射,然后要设计用于体现待评估质量属性的场景(即4+1视图中的场景),最后分析软件架构对场景的支持程度。要求评估人员即对领域熟悉,也对架构熟悉。从三个方面对场景进行设计:刺激(事件);环境(事件发生的环境);响应(架构响应刺激的过程)

在这里插入图片描述

2、基于场景的架构分析方法的三种方法
1、SAAM(了解即可)

◆基于场景的架构分析方法SAAM
SAAM是一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法,
◆特定目标。SAAM的目标是对描述应用程序属性的文档,验证基本的架构假设和原则。
◆质量属性。这一方法的基本特点是把任何形式的质量属性都具体化为场景,但可修改性是SAAM分析的主要质量属性。
◆架构描述。SAAM 用于架构的最后版本,但早于详细设计。架构的描述形式应当被所有参与者理解。
功能、结构和分配被定义为描述架构的3个主要方面。
◆方法活动。SAAM的主要输入是问题描述、需求声明和架构描述。下图描绘了SAAM分析活动的相关输入及评估过程。包括5个步骤,即场景开发、架构描述、单个场景评估、场景交互和总体评估。

在这里插入图片描述

2、ATAM(掌握)

◆架构权衡分析法ATAM,让架构师明确如何权衡多个质量目标,参与者有评估小组、项目决策者和其他项目相关人。
◆ATAM被分为四个主要的活动领域,分别是场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。整个评估过程强调以质量属性作为架构评估的核心概念。主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。

在这里插入图片描述

描述ATAM方法:描述规则;描述业务动机:描述需求;描述架构:描述架构;

生成质量属性效用树例子:

在这里插入图片描述

3、CBAM(了解即可)

◆成本效益分析法CBAM,用来对架构建立的成本来进行设计和建模,让决策者根据投资收益率来选择合适的架构,可以看做对ATAM的补充,在ATAM确定质量合理的基础上,再对效益进行分析。有下列步骤:
◆整理场景(确定场景,并确定优先级,选择三分之一优先级最高的场景进行分析)
◆对场景进行细化(对每个场景详细分析,确定最好、最坏的情况)
◆确定场景的优先级(项目干系人对场景投票,根据投票结果确定优先级)
◆分配效用(对场景响应级别确定效用表,建立策略、场景、响应级别的表格);
◆形成“策略-场景-响应级别的对应关系“
◆确定期望的质量属性响应级别的效用(根据效用表确定所对应的具体场景的效用表)
◆计算各架构策略的总收益;
◆根据受成本限制影响的投资报酬率选择架构策略(估算成本,用上一步的收益减去成本,得出收益,并选择收益最高的架构策略)

某公司欲开发一个在线交易网站,在架构设计阶段,公司的架构师识别出3个核心质量属性场景。"应该在3秒内完成"主要与(58)质量属性相关,通其中"网站正常运行时,用户发起的交易请来常 可采用(59 )架构策略实现该性;"在线交易主站宕机后,能够在3秒内自动切换至备用站点并恢 复正常运行"主要与(60 )质量属 性相关,通常可采(61)架构策略实现该属性;"系统应该具备一 定的安全保护措施,从而能够抵拦恶意的入侵破坏行为,并对所有针对网站的攻击行为进行报警和 记录“主要与(62)质量属性相关,通常可采用(63)架构策略实现该属性。

(58) A.可用性 B.性能 C.易用性 D.可修改性

(59) A.抽象接口 B.信息隐藏 C.主动冗余 D.资源调度

(60) A.可测试性 B.易用性 C.可用性 D.互操作性
(61) A.记录/回放 B.操作串行化 C.心跳 D.增加计算资源

(62) A.可用性 B.安全性 C.可测试性 D.可修改性

(63) A.追踪审计 B.Ping/Echo C.选举 D.维护现有接口

答案:A、D C、C B、A

架构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM)是一种系统架构评估方法,主要在系统开发之前,针对性能、(57)、安全性和可修改性等质量属性进行评价和折中。ATAM可以分为4个主要的活动阶段,包括需求收集、(58)描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以(59)作为架构评估的核心概念。某软件公司采用ATAM进行软件架构评估,在评估过程中识别出了多个关于质量属性的描述。其中,“系统在进行文件保存操作时应该与Windows系统的操作方式保持一致,主要与(60)质量属性相关;“系统应该提供一个开
放的API接口,支持远程对系统的行为进行控制与调试,主要与(61)质量属性相关。在识别出上述描述后,通常采用(62)对质量属性的描述进行刻画与排序。在评估过程中,(63)是一个会影响多个质量属性的架构设计决策

(57) A.可测试性 B.可移植性 C.可用性 D.易用性

(58) A.架构视图 B.架构排序 C.架构风格 D.架构策略

(59) A.用例 B.视图 C.属性 D.模型

(60) A.可测试性 B.互操作性 C.可移植性 D.易用性

(61) A.可测试性 B.互操作性 C.可移植性 D.易用性

(62) A.期望管理矩阵 B.决策表 C.优先队列 D.效用树
(63) A.风险点 B.决策点 C.权衡点 D.敏感点

答案:(57)C (58)A (59)C (60)D (61)A (62)D (63) C

4、其他评估方法(了解即可)

1、SAEM方法。将软件架构看作一个最终产品以及设计过程中的一个中间产品,从外部质量属性(用户定义的质量属性)和内部质量属性(开发者决定的质量属性)来评估。

2、SAABNet方法。是一种用来表达和使用定性知识以辅助架构的定性评估,来源于人工智能允许不确定、不完整知识的推理。

3、SACMM方法。是一种软件架构修改的度量方法。

4、ALRRA方法。是一种软件架构可靠性风险评估方法。

5、AHP(层次分析法)方法。是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。

7、COSMIC+UML方法。基于度量模型来评估软件架构可维护性的方法。

相关文章:

2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)

二、软件架构复用 ◆软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。 ◆软件架构…...

软件工程应试复习(考试折磨版)

针对学校软件工程考试,参考教材《软件工程导论(第6版)》1-8章 学习的艺术:不断地尝试,我一定会找到高效用的方法,让学习变成一门艺术,从应试备考中解救出我的时间同胞们。 好嘞!既然…...

Kafka可视化工具EFAK(Kafka-eagle)安装部署

Kafka Eagle是什么? Kafka Eagle是一款用于监控和管理Apache Kafka的开源系统,它提供了完善的管理页面,例如Broker详情、性能指标趋势、Topic集合、消费者信息等。 源代码地址:https://github.com/smartloli/kafka-eagle 前置条件…...

本地部署SenseVoice(包括离线设备操作)

Anaconda3 Anaconda Installers and Packages SenseVoice 魔搭社区 FFmpeg FFmpeg 安装Anaconda3(Windows) 下载完成后,自定义路径后安装。在开始菜单中出现Anaconda Prompt说明安装成功。 安装Anaconda3(Linux&#xff…...

sql server 复制从备份初始化数据

参考 : 从备份初始化订阅(事务) - SQL Server | Microsoft Learn sql server 复制默认是用快照初始化数据的,也支持从备份初始化数据,参考如上...

MySQL 复合索引

MySQL 复合索引详解 引言 在实际业务场景中,多条件组合查询是最常见的操作之一。例如,根据“用户ID 时间范围”查询订单,或根据“商品分类 价格区间”筛选商品。此时,单列索引可能无法满足性能需求,而**复合索引&am…...

蓝桥杯备赛(C/C++组)

README: 本笔记是自己的备考笔记,按照官网提纲进行复习!适合有基础,复习用。 一、总考点 试题考查选手解决实际问题的能力,对于结果填空题,选手可以使用手算、软件、编程等方法解决,对于编程大…...

人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式

一种模式是直觉模式,判断是基于条件反射,视觉感知 触发到 直接条件反射(从经历中沉淀形成的神经信息闭环),类似现在自动驾驶技术的传统AI模式。 另一种模式是物理时空图式推理模式,判断是基于预判预测&…...

C语言机试编程题

编写版本&#xff1a;vc2022 1.求最大/小值 #include<stdio.h> int main(){int a[50],n;int max, min;printf("请输入您要输入几个数");scanf_s("%d", &n);printf("请输入您要比较的%d个数\n",n);for (int i 0; i<n; i) {scanf_…...

SmartMediakit之音视频直播技术的极致体验与广泛应用

引言 在数字化时代&#xff0c;音视频直播技术已经深入到各个行业和领域&#xff0c;成为信息传递和交流的重要手段。视沃科技自2015年成立以来&#xff0c;一直致力于为传统行业提供极致体验的音视频直播技术解决方案&#xff0c;其旗下的大牛直播SDK凭借强大的功能和卓越的性…...

NVIDIA GEFORCE GTX1050显卡如何搭建AI人脸识别技术环境

NVIDIA GEFORCE GTX1050显卡如何搭建AI人脸识别技术环境!实际上,这个显卡虽然是入门级的,但是依然可以满足你的入门学习要求。 你的显卡是 NVIDIA GTX 1050,显存为 2GB,虽然它的性能不如高端显卡(如RTX 3060、3090等),但对于学习和研究 人脸识别技术,尤其是进行基础的…...

华为数通Datacom认证体系详解:从HCIA到HCIE的进阶路径

华为数通Datacom&#xff08;Data Communication&#xff09;课程是华为认证体系中的核心方向之一&#xff0c;聚焦企业网络通信与数据通信技术&#xff0c;适合从事网络规划、部署和运维的人员。 一、数通Datacom课程体系 华为数通Datacom认证分为 三个级别&#xff0c;逐级递…...

【运维】内网服务器借助通过某台可上外网的服务器实现公网访问

背景&#xff1a; 内网服务器无法连接公网,但是办公电脑可以连接内网服务器又可以连接公网。 安装软件 1、frp 2、ccproxy 配置 1、内网服务器 # 内网服务器启动frp服务配置文件参考vi frps.ini# frps.ini [common] bind_port 7000# 备注: bind_port端口可以随意配置。配置完…...

Spring之Bean的生命周期过程中调用的方法

1。这个部分除了6,9都在这了 package com.example.springbootdemo3.lifebeean;import org.springframework.beans.BeansException; import org.springframework.beans.factory.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.con…...

Vue 中动态实现进度条

在 Vue 中动态实现进度条&#xff0c;基本上有两种常见的方法&#xff1a;直接通过 Vue 数据绑定控制样式&#xff0c;或者利用外部库来实现更复杂的功能。我们会深入探讨这两种方式&#xff0c;并且详细说明每种方法的实现步骤、优缺点以及使用场景。 1. 使用 Vue 数据绑定来…...

Qt互斥锁(QMutex)的使用、QMutexLocker的使用

Qt互斥锁【QMutex】的使用、QMutexLocker的使用 Chapter1 Qt互斥锁(QMutex)的使用、QMutexLocker的使用一、QMutexLocker和QMutex实现示例图二、QMutex和QMutexLocker的关系&#xff08;个人理解&#xff09;三、QMutex使用和QMutexLocker使用1.QMutex的使用2.QMutexLocker的使…...

Python开发 Flask框架面试题及参考答案

目录 Flask 的核心设计理念是什么?与 Django 相比有哪些显著差异? 解释 Flask 框架的核心理念及其作为 “微框架” 的优缺点 Flask 的依赖库有哪些?简述 Werkzeug 和 Jinja2 的作用 什么是 WSGI?Flask 如何基于 WSGI 实现服务端与应用的交互 解释 RESTful API 的设计原…...

DeepSeek模型昇腾部署优秀实践

2024年12月26日&#xff0c;DeepSeek-V3横空出世&#xff0c;以其卓越性能备受瞩目。该模型发布即支持昇腾&#xff0c;用户可在昇腾硬件和MindIE推理引擎上实现高效推理&#xff0c;但在实际操作中&#xff0c;部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…...

【cv】vs2022配置opencv

release下配置包含目录和库目录 E:\sdk\sdk_cuda12.3\opencv490\include E:\sdk\sdk_cuda12.3\opencv490\include\opencv2 E:\sdk\sdk_cuda12.3\opencv490\lib release下配置包含链接器输入的依附依赖项 opencv_world490.lib release编译文件夹下需手动复制opencv_world49…...

RabbitMQ系列(五)基本概念之Queue

在 RabbitMQ 中&#xff0c;Queue&#xff08;队列&#xff09; 是存储消息的容器&#xff0c;也是消息传递的核心载体。以下是其核心特性与作用的全方位解析&#xff1a; 一、Queue 的定义与核心作用 消息存储容器 Queue 是 RabbitMQ 中实际存储消息的实体&#xff0c;生产者…...

从二维随机变量到多维随机变量

二维随机变量 设 X X X和 Y Y Y是定义在同一样本空间 Ω \varOmega Ω上的两个随机变量&#xff0c;称由它们组成的向量 ( X , Y ) (X, Y) (X,Y)为二维随机变量&#xff0c;亦称为二维随机向量&#xff0c;其中称 X X X和 Y Y Y是二维随机变量的分量。 采用多个随机变量去描述…...

IP-----动态路由OSPF

这只是IP的其中一块内容&#xff0c;IP还有更多内容可以查看IP专栏&#xff0c;前一章内容为GRE和MGRE &#xff0c;可通过以下路径查看IP-------GRE和MGRE-CSDN博客,欢迎指正 注意&#xff01;&#xff01;&#xff01;本部分内容较多所以分成了两部分在下一章 5.动态路由OS…...

RabbitMQ操作实战

1.RabbitMQ安装 RabbitMQ Windows 安装、配置、使用 - 小白教程-腾讯云开发者社区-腾讯云下载erlang&#xff1a;http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安装RabbitMQ及延时消息插件rabbitmq_delayed_message_exch…...

python-leetcode-不同路径

62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [1] * n # 仅保留一行for i in range(1, m):for j in range(1, n):dp[j] dp[j-1]return dp[-1]...

【react】快速上手基础教程

目录 一、React 简介 1.什么是 React 2.React 核心特性 二、环境搭建 1. 创建 React 项目 2.关键配置 三、核心概念 1. JSX 语法 表达式嵌入 样式处理 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 合成事件&#xff08;SyntheticEvent) 5. …...

【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

一周一个Unity小游戏2D反弹球游戏 - 移动的弹板(触屏版)

前言 上文中实现了用鼠标移动控制弹板的移动&#xff0c;本文将实现手指触屏时弹板跟随手指移动的功能&#xff0c;并通过使用Unity自带的Device Simulator Devices Package来验证和模拟触屏设备的使用场景。 安装Device Simulator Devices Package 打开Unity Package Manager&…...

深度学习-11.用于自然语言处理的循环神经网络

Deep Learning - Lecture 11 Recurrent Networks for Natural Language Processing 介绍文本表示用数字表示单词词嵌入(word embedding) 机械翻译编码器 - 解码器循环模型&#xff08;Encoder-decoder recurrent models&#xff09;双向循环网络 注意力机制&#xff08;方法&am…...

2025年软考报名费用是多少?全国费用汇总!

软考报名时间终于确定了&#xff01;想要参加2025年软考的同学们注意啦&#xff01;特别是那些一年只有一次考试机会的科目&#xff0c;千万不要错过哦&#xff01;这里为大家整理了各地的报名时间、科目、费用等信息&#xff0c;快来看看吧&#xff01; 一、2025年软考时间安…...

el-input实现金额输入

需求&#xff1a;想要实现一个输入金额的el-input&#xff0c;限制只能输入数字和一个小数点。失焦数字转千分位&#xff0c;聚焦转为数字&#xff0c;超过最大值&#xff0c;红字提示 效果图 失焦 聚焦 报错效果 // 组件limitDialog <template><el-dialog:visible.s…...

C++11相较于C++98的新特性介绍:列表初始化,右值引用与移动语义

一&#xff0c;列表初始化 1.1C98中传统的{} C98中一般数组和结构体可以使用{}进行初始化&#xff1a; struct Date {int _year;int _month;int _day; };int main() {int a[] { 1,2,3,4,5 };Date _date { 2025,2,27 };return 0; } 1.2C11中的{} C11以后想统一初始化方式&…...

ISIS(中间系统到中间系统)——基础

ISIS是一项通用的动态路由协议&#xff0c;其隶属于链路状态路由协议&#xff0c;最初运行与OSI七层的网络层&#xff0c;采用组播地址224.0.0.14和224.0.0.15两个组波段&#xff0c;由于其较高的拓展性与高速收敛&#xff0c;被大多数运营商网络所使用 起源 ISIS最初是由国际…...

如何使用useContext进行全局状态管理?

在 React 中&#xff0c;使用 useContext 进行全局状态管理是一种有效的方法&#xff0c;尤其在需要在多个组件之间共享状态时。useContext 允许你在组件树中传递数据&#xff0c;而无需通过每个组件的 props 逐层传递。以下是关于如何使用 useContext 进行全局状态管理的详细指…...

docker容器网络配置及常用操作

Linux内核实现名称空间的创建 ip netns&#xff08;网络名称空间&#xff09;命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作。ip netns命令来自于iproute安装包&#xff0c;一般系统会默认安装&#xff0c;如果没有的话&#xff0c;请自行安装。 注意&am…...

GMII(Gigabit Media Independent Interface)详解

一、GMII的定义与作用 GMII&#xff08;千兆介质无关接口&#xff09;是用于千兆以太网&#xff08;1Gbps&#xff09;的标准化接口&#xff0c;连接 MAC层&#xff08;数据链路层&#xff09;与 PHY芯片&#xff08;物理层&#xff09;。其核心目标是支持高速数据传输&#x…...

Wireshark Lua 插件教程

本⽂主要介绍 Lua 脚本在 Wireshark 中的应⽤, Lua 脚本可以在 Wireshark 中完成如下功能: 从⽹络包中提取数据, 或者统计⼀些数据包(Dumper) 需要解析⼀种 Wireshark 不提供原⽣⽀持的协议(Dissector) ⽰例 协议解析 VREP 协议是 NOGD 框架对于 TRIP 协议的⼀种延伸和扩展…...

【多模态大模型】GLM-4-Voice端到端语音交互机器人VoiceAI

写在前面&#xff1a;开源选手中最能打的 GLM-4-Voice&#xff0c;由智谱 AI 和清华大学共同研发&#xff0c;并发表论文 “GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot”&#xff0c;旨在打造智能且类人化的端到端语音聊天机器人。GLM-4-Voi…...

Unity 列表滚动到指定位置

使用场景 策划提出需求&#xff1a;当玩家打开领奖界面时&#xff0c;奖励列表需要自动滑动到可以领奖的奖励栏处或者正在进行的任务栏处。 思路 1、将Content设置好对齐方式和锚点 子物体的预制体和Content&#xff1a;pivot轴心点设置为(0,1),并且设置为左上角对齐。 2、主…...

使用Crawlee可破题js渲染采集数据

使用 Crawlee 实现自动化爬虫流程 1. Crawlee 简介 Crawlee 是一个强大的爬虫框架&#xff0c;用于快速构建和维护可靠的爬虫。它支持多种爬虫类型&#xff0c;包括基于 Cheerio 和 Playwright 的爬虫&#xff0c;能够高效处理静态和动态网页。 2. 项目目标 通过自动化脚本实…...

小红的字母游戏(A组)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小红有一个长度为 nnn 的字符串 sss&#xff0c;仅包含小写字母&#xff0c;小红可以选出 kkk 个字符&#xff0c;组成一个新的字符串 ttt&#xff0c;对于 ttt 的每一个字符 tit_it…...

MFC线程

创建线程 HANDLE m_hThread; m_hThread CreateThread(NULL, 0, save_snapshot, (LPVOID)this, 0, &iThreadId);开启线程循环等待 DWORD WINAPI save_snapshot(LPVOID pVoid) {while (true){//持续循环等待事件到达。接收到事件信号后才进入if。if (::WaitForSingleObjec…...

目标检测YOLO实战应用案例100讲-面向无人机图像的小目标检测

目录 知识储备 YOLO v8无人机拍摄视角小目标检测 数据集结构 环境部署说明 安装依赖 模型训练权重和指标可视化展示 训练 YOLOv8 PyQt5 GUI 开发 主窗口代码 main_window.py 使用说明 无人机目标跟踪 一、目标跟踪的基本原理 二、常用的目标跟踪算法 基于YOLOv…...

【Java分布式】Nacos注册中心

Nacos注册中心 SpringCloudAlibaba 也推出了一个名为 Nacos 的注册中心&#xff0c;相比 Eureka 功能更加丰富&#xff0c;在国内受欢迎程度较高。 官网&#xff1a;https://nacos.io/zh-cn/ 集群 Nacos就将同一机房内的实例划分为一个集群&#xff0c;一个服务可以包含多个集…...

VSCode轻松调试运行.Net 8.0 Web API项目

1.背景 我一直都是用VS来开发.NetCore项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行.Net 8.0 WebAPI项目。这篇文章是一个记录的过程…...

PageHelper新发现

PageHelper 背景解决reasonablepageSizeZero 背景 今天发现了一个很有趣的现象&#xff0c;接手一个很老的项目springmvc项目、使用PageHelper分页实现常见的后端接口分页功能。但是发现当页码参数大于实际的页码数时、正常不应该返回数据&#xff0c;但是目前确一直返回数据不…...

python编写liunx服务器登陆自动巡检脚本

前言&#xff1a; 用户需要一份用Python编写的Linux系统巡检脚本&#xff0c;检查内存、磁盘、CPU使用率&#xff0c;还有网络连通性。 首先&#xff0c;我得确定用户的使用场景。可能用户是系统管理员&#xff0c;需要定期监控服务器状态&#xff0c;确保系统正常运行。 或者…...

基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成

本教程的演示都将在 Flink CDC CLI 中进行&#xff0c;无需一行 Java/Scala 代码&#xff0c;也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业&#xff0c;包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...

数据结构——并查集

AcWing - 算法基础课 Acwing——合并集合 代码如下&#xff1a; #include <bits/stdc.h>using namespace std; #define fs first #define sc second #define endl \n #define all(x) x.begin(), x.end() typedef long long ll; typedef pair<int, int> PII;cons…...

详细解析d3dx9_27.dll丢失怎么办?如何快速修复d3dx9_27.dll

运行程序时提示“d3dx9_27.dll文件缺失”&#xff0c;通常由DirectX组件损坏或文件丢失引起。此问题可通过系统化修复方法解决&#xff0c;无需重装系统或软件。下文将详细说明具体步骤及注意事项。 一.d3dx9_27.dll缺失问题的本质解析 当系统提示“d3dx9_27.dll丢失”时&…...

【STL】4.<list>

list 前言list容器一.list初始化二.常用函数三.排序 总结 前言 stl系列主要讲述有关stl的文章&#xff0c;使用STL可以大大提高程序开发的效率和代码的可维护性&#xff0c;且在算法比赛中&#xff0c;STL可以帮助我们更方便地实现各种算法。提高我们的效率。 list容器 要使用…...