第五章 软件架构
口袋应试:教材第五章软件架构是每年考试的重点,平均每年出题概率占20%以上,需要大家重点 学习,其中:5.3.1软件架构风格概述出现概率很高,DSSA也是每年大概率出题的要点,包括5.4.2 DSSA的基本活动、5.4.3参与DSSA的人员。 “5.5.1系统架构评估概述”中的质量属性几乎是每年必考题,必须掌握。1. SAAM和2. ATAM出题的概率也很高。(希赛的教程第四版)中的9.3.6 仓库风格出题的概率也很高,需要大家掌握。
5.3软件架构风格
口袋应试:软件架构风格参考资料:
常用的软件架构风格有:数据流风格、调用返回风格、独立构件风格、虚拟机、仓库风格、过程控制、C2 风格。
5.3.1软件架构风格概述
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一 些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和 子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。例如,如果某人把系统描述为“客户/服务器”模式,则不必给出设计细节,立刻就会明白系统是如何组织和工作的。
P137@5.3.1
出题概率:★★★
130143、140151、160149、160150、170148
5.3.2经典软件体系结构风格
1.管道和过滤器
在管道/过滤器风格的软件体系结构(见图5-7)中,每个构件都有一组输入和输出, 数据输入构件,经过内部处理,然后产生数据输出。因此,这里的构件被称为过滤器, 这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的 输入。
2.数据抽象和面向对象组织
抽象数据类型概念对软件系统有着重要作用,目前软件界己普遍转向使用面向对象 系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操 作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型 的实例。
3.事件驱动系统
事件驱动系统风格是构件不直接调用一个过程,而是触发或广播一个或多个事件。 系统中的其他构件中的过程在一个或多个事件中注册。当一个事件被触发,系统自动调 用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
6. C2风格
C2体系结构风格可以概括为:
通过连接件绑定在一起按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下。
①系统中的构件和连接件都有一个顶部和一个底部。
②构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部。而构件与构件之间的直接连接是不允许的。
③一个连接件可以和任意数目的其他构件和连接件连接。
④当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。
P139@5.3.2
出题概率:★★★
150116、160144、170153、170352、
5.4.2 DSSA的基本活动
1. 领域分析
这个阶段的主要目标是获得领域模型。领域模型描述领域中系统之间的共同的需求,即领域模型所描述的需求为领域需求。在这个阶段中首先要进行一些准备性的活动,包括定义领域的边界。从而明确分析的对象;识别信息源,整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等,在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。当领域中存在大量系统时,需要选择它们的一个子集作为样本系统。对样本系统需求的考察将显示领域需求的一个变化范围。一些需求对所有被考察的系统是共同的,一些需求是单个系统所独有的。很多需求位于这两个极端之间,即被部分系统共享。
2. 领域设计
这个阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案, 它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个髙层次的设计。
3.领域实现
这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用 信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。它们依据领域模型 和DSSA进行组织,也就是领域模型和DSSA定义了这些可重用信息的重用时机,从而 支持了系统化的软件重用。这个阶段也可以看作重用基础设施的实现阶段。
P145@5.4.2
出题概率:★★★
120154、120155、150155、160146、180145、180146
5.4.3参与DSSA的人员
参与DSSA的人员可以划分为四种角色:领城专家、领城分析师、领域设计人员和领域实现人员。
1、领域专家
领域专家可能包括该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。领域专家的主要任务包括提供关于领域中系统的需求规约和实现的知识,帮助组织规范的、一致的领域字典,帮助选择样本系统作为领域工程的依据,复审领域模型、DSSA等领域工程产品等。
领域专家应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向等。
2、领域分析人员
领域分析人员应由具有知识工程背景的有经验的系统分析员来担任。领域分析人员的主要任务包括控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中,根据现有系统、标准规范等验证领域模型的准确性和一致性,维护领域模型。
领域分析人员应熟悉软件重用和领域分析方法;熟悉进行知识获取和知识表示所需的技术、语言和工具;应具有一定的该领域的经验,以便于分析领域中的问题及与领域专家进行交互;应具有较高的进行抽象、关联和类比的能力;应具有较高的与他人交互和合作的能力。
3、领域设计人员
领域设计人员应由有经验的软件设计人员来担任。领域设计人员的主要任务包括控制核个软件设计过程,根据领域模型和现有的系统开发出DSSA,对DSSA的准确性和一致性进行验证,建立领域模型和DSSA之间的联系。
  领域设计人员应熟悉软件重用和领域设计方法;熟悉软件设计方法;应有一定的该领域的经验,以便于分析领域中的问题及与领域专家进行交互。
4、领域实现人员
领域实现人员应由有经验的程序设计人员来担任。领域实现人员的主要任务包括根据领域模型和DSSA,或者从头开发可重用构件,或者利用再工程的技术从现有系统中提取可重用构件,对可重用构件进行验证,建立DSSA与可重用构件间的联系。
领域实现人员应熟悉软件重用、领域实现及软件再工程技术;熟悉程序设计;具有一定的该领域的经验。
P145@5.4.3
出题概率:★★★
140147、140148、160145
口袋应试:软件架构评估参考资料
质量属性
常用的质量属性有:性能、可用性、可修改性、安全性
主要质量属性的设计策略
敏感点、风险点、权衡点、非风险点
5.5.1系统架构评估概述
体系结构评估可以只针对一个体系结构,也可以针一对一组体系结构。在体系结构 评估过程中,评估人员所关注的是系统的质量属性,所有评估方法所普遍关注的质量属性有以下几个。
1. 性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出 响应,或者在某段事件内系统所能处理的事件的个数。经常用单位事件内所处理事务的 数量或系统完成某个事务处理所需的时间来对性能进行定量的表示。性能测试经常要使 用基准测试程序。
2. 可靠性
可靠性(reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况 下维持软件系统的功能特性的基本能力。可靠性是最重要的软件特性,通常用它衡量在 规定的条件和时间内,软件完成规定功能的能力。
3. 可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时 间长度或在出现故障时系统能够恢复正常的速度来表示。
4. 安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用 的企图或拒绝服务的能力。安全性是根据系统可能受到的安全威胁的类型来分类的。安 全性又可划分为机密性、完整性、不可否认性及可控性等特性。其中,机密性保证信息 不泄露给未授权的用户、实体或过程;完整性保证信息的完整和准确,防止信息被非法 修改:可控性保证对信息的传播及内容具有控制的能力,防止为非法者所用。
5. 可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能 力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。可修改性 包含以下4个方面。
(1) 可维护性(maintainability)
(2) 可扩展性(extendibility)
(3) 结构重组(reassemble)
(4) 可移植性(portability)
P148@5.5.1
出题概率:★★★★★
120156、120158、120160、151056、150157、150158、150159、150160、150161、160147、160158、160159、160160、160161、160162、180153、180152
5.5.3主要评估方法
1. SAAM
SAAM (Scenarios-based Architecture Analysis Method)是卡耐基梅隆大学软件工程 研究所(SEIatCMU)的Kazman等人于1983年提出的一种非功能质量属性的体系结构 分析方法,是最早形成文档并得到广泛使用的软件体系结构分析方法。最初它用于比较 不同的软件体系的体系结构,以分析SA的可修改性,后来实践证明也可用于其他的质 量属性如可移植性、可扩充性等,发展成了评估一个系统的体系结构。
(1) 特定目标:SAAM的目标是对描述应用程序属性的文档,验证基本的体系结构 假设和原则。此外,该分析方法有利于评估体系结构固有的风险。
(2) 评估技术:SAAM所使用的评估技术是场景技术。场景代表了描述体系结构属 性的基础,描述了各种系统必须支持的活动和将要发生的变化。
(3) 质量属性:这一方法的基本特点是把任何形式的质量属性都具体化为场景,但 可修改性是SAAM分析的主要质量属性。
(4) 风险承担者:SAAM协调不同参与者所感兴趣的方面,作为后续决策的基础, 提供了对体系结构的公共理解。
(5) 体系结构描述:SAAM用于体系结构的最后版本,但早于详细设计。体系结构 的描述形式应当被所有参与者理解。功能、结构和分配被定义为描述体系结构的三个主 要方面。
(6) 方法活动:SAAM的主要输入问题是问题描述、需求声明和体系结构描述。
2. ATAM
ATAM是在基于场景的架构分析方法(Scenarios-based Architecture Analysis Method,SAAM)基础之上发展起来的,主要包括场景和需求收集、架构视图和场景实现、属性模型构造和分析、属性模型折中等4个阶段。ATAM方法要求在系统开发之前,首先对这些质量属性进行评价和折中。
2. ATAM
体系结构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM)是在 SAAM 的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前, 对这些质量属性进行评价和折中。
(1) 特定目标
(2) 质量属性
(3) 风险承担者
(4) 体系结构描述
(5) 评估技术
(6)方法的活动:ATAM被分为4个主要的活动领域(或阶段),分别是场景和需 求收集、体系结构视图和场景实现、属性模型构造和分析、折中。整个评估过程强调以属性作为架构评估的核心概念。
P153@5.5.3
出题概率:★★★★★
120162、120163、130157、130158、130159、130160、130161、140162、140163、150162、150163、180148、180147
如果大家要在备考复习中进行分类测试练习,或者查找更详细的备考资料,可以使用“系统架构设计师口袋应试”小程序,或者关注我的个人公众号“跬步郎”来查找后续更新的内容。
教材外题点
(第四版)9.3.5 虚拟机风格
虚拟机风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性,虚拟机风格主要包括解释器和规则为中心两种架构风格。
1.解释器
  一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。
  具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。解释器通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异。其缺点是执行效率较低。典型的例子是专家系统。
2. 规则为中心
基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。
(第四版)@9.3.5
出题概率:★★★
130150、130151、160151、160152、180151
9.3.6 仓库风格
在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外购件间的相互作用在系统中会有大的变化。
仓库风格包括的子风格有:数据库系统、超文本系统、黑板风格。
......
对于特定应用问题,黑板系统可通过选取各种黑板、知识源和控制模块的构件来设计;也可以利用预先定制的黑板体系结构的编程环境。图 9-8 是黑板系统的组成。黑板系统的传统应用是信号处理领域,如语音和模式识别。另一应用是松耦合代理数据共享存取。
(第四版)9.3.6
出题概率:★★★★
140152、160153、180149、180150