首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统架构设计师:系统质量属性与架构评估--ATAM方法架构评估实践阶段2-调查和分析

这是使用A T A M技术评估架构的第2阶段。在这个阶段,人们对评估期间需要重点关注的些关键问题进行彻底调查。这个阶段被细分为后边的3个步骤。

第4步:确定架构方法

这一步涉及能够理解系统关键需求的关键架构方法。在这一步中,架构团队解释了架构的流程控制,并提供了关于如何达成关键目标以及是否达到关键目标的适当解释。以下是与正在评估的两种体系结构有关的两种体系结构方法的讨论。

1)胡佛的架构

在此体系结构中,系统从闲置处理程序生成的命令提示符处接受输入。输入事件被传递给事件管理器,事件管理器将事件存储在事件队列中。主进程从事件队列中取出事件,并将其分派给事件管理器进行处理。事件管理器将事件绑定到其相应的事件处理程序。如果事件未被注册,则事件管理器丢弃该事件并将控制传递给主进程。下一个要处理的事件从事件队列中取出,并再次发送给事件管理器。如果没有要处理的事件,则会生成空闲事件,执行空闲等待,直到从系统用户接收到输入为止。如果事件在事件管理器事件注册表中已注册,则事件与正确的事件处理程序匹配。该处理程序执行该事件,可能导致系统状态的变化。从质量属性角度来看结构,可以提出以下几点。从图8-6中可以清楚地看出框架之外的应用。每个组件都可以独立出来并重新使用。因此,该架构具有高度的可修改性。另外,这些组件相互之间适当地进行交互并执行其预期的工作,实现功能的质量属性。由于应用程序构建器提供了明确的钩子接口,使得架构也可以扩展。

2)“银行”活动架构

在此体系结构中,系统由“开始”事件初始化,该事件在内部生成并处理。从空闲处理程序生成的命令提示符处接收输入。当输入事件输入时,IDLE_Handler检查它的有效性,将事件传递并存储在事件队列的主模块中,作为有效输入。处理事件时,首先从队列中提取事件并分派给事件管理器进一步处理。由于在初始阶段消除了有缺陷的输入,并且事件管理器知道应用程序处理程序会将相应的处理程序与事件进行匹配,并执行事件。如果事件队列中没有可处理的事件,则事件队列发送空闲事件。

关于这个架构中提到的质量属性,需要注意以下几点:

1)这种体系结构的一个明显缺陷是,事件管理器组件暴露给了应用程序,没有在框架中封装(见图8-7)。因此可修改性较差。

2)这些组件高度相互依赖,互相协同以完成特定功能。由于组件的相互依赖性,此架构的可重用性较差。

3)空闲事件的输入需要额外的处理空间,因为对其进行解析并消除任何有缺陷的输入,才能保证架构的可靠性。

第5步:生成质量属性效用树

在评估阶段,系统最重要的质量属性目标被确定,并确定优先次序和完善。这一步至关重要,因为它将所有利益相关方和评估人员的注意力集中在关系到体系成功至关重要的体系结构的不同方面。这是通过建立效用树来实现的。

效用树提供了一种使系统目标更加具体的方法,还提供了质量属性目标重要性的比较方式。因此,效用树表达了系统的整体“良好”程度。最重要的是,效用树包含了与系统有关的质量属性,以及对利益相关者重要的质量属性要求(称之为情景)。情景是一个说明利益相关者和系统之间的相互作用的陈述。这些情景用来判断架构的质量目标。此阶段完成的结果将成为A T A M评估步骤其余部分使用的情景优先列表。它缩小了在架构中探索的风险和架构的选择范围。因此,这一步在评估过程中是非常宝贵的。在这个项目中,Event系统有两个相互竞争的体系结构,在这一步中,将会有一个实用程序树代表系统的质量目标,这些场景是代表三个利益相关者生成的:最终用户、架构师和应用程序开发人员。如上所述,质量属性需求(场景)在这一步中是非常重要的。经过仔细地思考,利益相关者会提出可能的情景。

1)情景生成

情景生成是创建效用树之前的重要步骤。表8-9显示了与每个利益相关者有关的情景以及它所代表的质量属性。

2)质量属性效用树生成

效用树以“效用”作为根结点,质量属性构成效用树的辅助级别。这些属性位于表8-9中的第3列。在每个质量属性中都会包含特定的质量属性说明,以提供对方案更精确的描述。后者形成了实用程序树中的叶节点。效用树沿着两个维度进行优先顺序:每个场景对系统成功的重要性以及对此场景实现(从架构师的角度来看)所带来的难易程度的估计。效用树中的优先级排名为高(H)、中(M)和低(L)。

第6步:分析体系结构方法

这是“调查和分析”阶段的最后一步。在这一步中,人们分析前一步生成的效用树的输出,并进行彻底调查和分析,找出处理相应质量属性架构的方法。人们根据这些质量属性分析这两种架构,并为它们提供适当的解释。这里还确定了每种架构方法的风险、非风险、敏感点和权衡点。

从步骤5的效用树中,提取高优先级场景。例如,请考虑步骤5中效用程序树的以下两个方案:

(L,M)所有操作都以最快的速度处理(性能)。

(H,M)应该处理系统中的用户错误(可靠性)。

场景旁边的(L,M)和(H,M)所示这些场景的优先级,从而决定选择哪个质量属性。在这个例子中,选择第2种方案是因为它对系统的成功和架构师的中等难度具有高度重要性。第1种情况不被考虑,因为它对系统的重要性不高。从效用树中获得的高优先级属性是可变性、可靠性、集成性(Conceptual Integrity)、功能性和可修改性。质量属性(如性能、可用性、安全性和可移植性)没有被赋予高优先级,因为它们对系统目标不那么重要。这一步可分为四个主要阶段:

调查架构方法。

创建分析问题。

分析问题的答案。

找出风险、非风险、敏感点和权衡点。

1)调查架构方法

在识别出对系统目标至关重要的质量属性后,我们分析两种架构并确定它们如何支持这些质量属性。我们对体系结构进行详细的调查,以了解这些质量属性要求是否得到满足。

(1)可变性。可变性是定义如何扩展或修改架构以生成新体系结构的属性。

胡佛架构。胡佛架构如图8-6所示,该框架非常灵活。Event框架维护一个队列,其独立于应用程序的处理程序和事件组件。由于该应用程序未嵌入许多组件,因此该系统具有高度可修改性。例如,如果架构团队希望包含主模块调用队列的新方案,则可以在稍后阶段完成。由于架构清楚地显示了所有组件的交五作用,因此可以重构任何组件,或者可以将任何新组件添加到架构中,而不会影响任何其他组件。因此,胡佛架构高度支持可变性。

银行体系结构。如图8-7所示,架构的组件是高度相互依赖的,并且许多组件包含特定于应用程序的信息。例如,如果主模块调用应用程序处理程序,则事件管理器会受到影响,因为后者包含特定于应用程序的信息。但是,架构的某些部分支持可变性。例如,如果事件队列更改为绑定到事件管理器,而不是当前体系结构中的主模块,则不会影响其他组件。因此,这种架构在一定程度上支持变化。

另外,这种架构的一个主要缺陷是事件管理器被排除在框架之外,因为它包含与应用程序相关的信息。事件管理器应该是框架内的核心组件。如果这种架构在未来得到扩展,这个缺陷将会造成很大的困难。一般而言,某些组件的更改或新组件的包含很可能会影响其他相关组件。

(2)可靠性。可靠性是决定系统响应故障的行为以及系统如何随时间运行的特性。

胡佛架构。在这个架构中的输入阶段,任何输入都是在没有消除任何“有缺陷”的输入的情况下处理的。传播有缺陷的输入直到事件绑定时的主要原因是,它是一个特定于应用程序的细节。因此,无论应用程序是否与之相关,框架保持不变。然而,最终在事件管理器组件中以适当的方式处理有缺陷的输入。因此,该体系结构支持可靠性。

银行体系结构。在此体系结构中,在空闲事件的输入活动中识别有缺陷的输入。因此,在事件存储到队列中之前,将检查类型和参数的有效性。请注意:这是一个特定于应用程序的细节。尽管这是一个与应用程序相关的活动,但系统在任何有缺陷的输入和可靠性得到满足后都会恢复。但是,如果任何其他应用程序挂钩到框架,则此验证过程必须更改。

(3)集成性(Conceptual Integrity)。该属性定义了统一各级系统设计的基础主题。架构应该是一致的,在执行架构的所有进程时使用最少的数据和控制机制。

胡佛架构。在这个架构中,事件在整个系统中以类似的方式处理。无论事件类型如何,主模块都将事件传递给事件管理器,后者将事件绑定到执行该过程的处理程序。在系统中执行任何操作都涉及很少的控制机制,并且后者以有效的方式执行。因此,概念完整性得以实现。

银行体系结构。在这个架构中,所有事件都以类似的方式处理,但所使用的控制机制的数量相当多。在这个体系结构中,事件从事件队列中提取并传递给事件管理器,事件管理器相对于某些特定于应用程序的细节处理事件。处理事件后,事件管理器通过调用应用程序处理程序将该事件传播到其处理程序,处理程序依次处理该事件。虽然类似的方法被用于架构中的所有事件,但是使用的控制机制的数量可以被最小化。因此,在这个架构中,概念完整性的属性没有得到妥善处理。

(4)功能性。此属性标识系统中组件之间的交五以及系统是否执行预期的任务。

胡佛架构。如前所述,在这个架构中,组件之间展示了适当的相互作用。该体系结构还以有效的方式执行事件处理的预期任务。组件之间的交五互是合理和适当的。事件队列保存事件,根据请求分派给事件管理器。另外,事件管理器与应用程序处理程序协调,并将事件绑定到相应的处理程序。因此,在这种架构中,功能的属性显然是需要关注的。

银行体系结构。在这种架构中,组件之间存在适当的交互,系统通常适当地执行预期的任务。尽管在系统的许多组件中都嵌入了特定于应用程序的细节,但组件协调也是合理的。因此,在这种架构中适度地解决了功能问题。

(5)可修改性。顾名思义,该属性验证系统是否能够以一种快速、经济、高效的方式进行修改。它验证了体系结构如何处理对组件所做的更改,以及是否可以将任何不同的应用程序挂接到框架。

胡佛架构。在此体系结构中,可修改性的程度很高,因为所有框架组件都与应用程序分离。如果要包含任何新的特定于应用程序的组件,该体系结构有能力以经济有效的方式适应这种修改。事件管理器组件维护一个事件类型的注册表,它将每个事件注册到它的处理程序。此注册表的内容不固定,但依赖于使用事件框架的应用程序。这确保了架构中的高度可修改性。

银行体系结构。在这种架构中,应用程序嵌入在许多组件中。因此,重新使用不同应用程序的框架或添加任何新的应用程序特定组件都会涉及很多困难和修改。因此修改过程可能不是成本有效的。鉴于这些观点,这种架构没有表现出足够的可修改性。

2)创建分析问题

本步骤的下一个阶段涉及收集上面讨论过的高优先级场景中产生的分析问题。在现实生活中,所有利益相关者都会收集分析问题。在这个项目中,我们只是简单地创建了优先场景中显著的示例问题。分析问题与上面讨论的每种架构方法相关联;并面向重要的质量属性。以下是分析问题列表和正在解决的属性:

架构的组件可以重复用于未来的项目吗?(变化性)

未来可以扩展框架以适应新的应用程序或新组件吗?(变化性)

系统会处理用户提供的任何输入并处理无效输入吗?(可靠性)

架构的行为是否一致?(概念完整)

是否可以将任何新的应用程序特定功能添加到架构中?(可修改性)

系统能否以短时间和成本效益的方式进行修改?(修改性)

组件是否正确交五?(功能性)

体系结构是否正确执行其事件处理任务?(功能)

3)分析问题的答案

这一步的第三阶段是根据两种评估架构对上述分析问题提供合理的解释或答案。以下是在每个架构中如何处理这些问题的讨论。

(1)胡佛架构。

架构的组件可以重复用于未来的项目吗?

如前所述,此体系结构中的每个组件都是相互独立的,并以适当的方式进行协调。例如,无论它链接到哪个组件,事件管理器都会在使用任何注册的事件类型调用时,将事件绑定到相应的处理程序。

未来可以扩展框架以适应新的应用程序或新组件吗?是的。这个架构可以很容易地扩展以适应更多的组件和任何给定的应用程序。这是由于上个问题中给出的原因。

系统是否处理用户提供的任何输入并处理无效输入?虽然有缺陷的输入在稍后阶段被识别,但系统会处理用户给出的所有输入并处理任何无效输入。

架构的行为是否一致?

是的。胡佛的架构在处理所有事件时的行为是一致的。另外,它利用最少数量的控制机制来执行任何给定的任务。

是否可以将任何新的特定于应用程序的功能添加到架构中?由于应用程序完全独立于此框架组件。在这个体系结构中,可以将任何新功能添加到架构中,而不会影响其他组件。该应用程序被添加到框架中的“挂钩”,这在架构中有明确定义。

系统是否可以在短时间内以具有成本效益的方式进行修改?是的。因为应用程序没有嵌入到许多组件中,并且在极小的地方与框架链接,所以可以在更短的时间内以经济高效的方式进行修改。

组件是否正确交互?

正如上述架构方法的讨论中所解释的,此架构中的组件以协调的方式进行交互。

体系结构是否正确执行其事件处理任务?

胡佛的体系结构提供了所需的结果,因为事件处理的主要任务是通过系统中各组件之间的适当交五来处理的。

(2)银行体系结构。

架构的组件可以重复用于未来的项目吗?

这些组件可以重用,但会涉及一些重大更改,因为应用程序嵌入了许多组件。但是,像事件队列这样的组件可以被重用。

未来可以扩展框架以适应新的应用程序或新组件吗?使用框架来改变应用程序并不是一件容易的事情,因为必须对框架的主要部分进行重大更改。事件管理器组件在此体系结构中是高度特定于应用程序的,并且如果要添加任何应用程序,则必须对其进行修改。出于同样的原因,添加任何新功能都需要付出很大的努力。

系统是否处理用户提供的任何输入并处理无效输入?是的。系统处理系统用户给出的所有输入,并丢弃无效的输入事件。

架构的行为是否一致?

在这种体系结构中,一致性没有充分显示,因为控制权被转移到一系列组件中以执行任何任务。

是否可以将任何新的特定于应用程序的功能添加到架构中?即使涉及许多组件,也可以向系统添加任何新功能。

系统是否可以在短时间内以具有成本效益的方式进行修改?鉴于该应用程序嵌入到系统中涉及的许多组件中,所以修改需要更多时间,并且可能不具有成本效益优势。

组件是否正确交五?

这些组件以适当的方式进行交五(如上面在架构方法讨论中所述)。

体系结构是否正确执行其事件处理任务?

我们的体系结构提供了所需的结果,因为事件处理的主要任务得到处理,即使系统中还存在其他缺陷。

4)找出风险、非风险、敏感点和权衡点。

此步骤的最后阶段是确定风险、无风险、敏感点和权衡点。风险是架构中的一个问题点,后者不支持给定的优先级质量属性。非风险是体系结构的优势,后者实现特定的优先级质量属性。敏感点是一个或多个组件的属性,对于实现给定的质量属性至关重要。如果架构对多个属性敏感,那么该点称为权衡点。敏感点和权衡点的确切定义见8.2.1节。胡佛架构与银行体系结构的风险和非风险对比,如表8-10所示。

(1)敏感点。

这两种体系结构的敏感点:

更改体系结构的范围对应用程序嵌入到系统中的位置数量很敏感。

错误输入的处理对应用程序中事件类型的数量很敏感(因为在验证过程中,输入事件是针对已知事件进行验证的)。

系统一致性水平对用于处理流程的控制机制的数量很敏感。

从系统获取所需输出的过程,对组件协调的方式以及彼此之间的交互方式非常敏感。

向应用程序添加新功能的能力,对应用程序嵌入到系统中的位置数量很敏感。

(2)权衡点。

从敏感点可以清楚地看出,应用程序嵌入系统的地方,数量会影响变化性和可修改性质量属性。因此,这形成了一个权衡点。

基于这一观察,人们发现银行业务体系结构具有上述的权衡点,而胡佛的体系结构则没有。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OTC_V6zGh5uxcV2OWI3-jLAA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券