不确定性下的软件体系结构评估:系统性文献综述

不确定性下的软件体系结构评估:系统性文献综述

1 介绍

体系结构评估是决策过程中的一个里程碑。它旨在证明架构设计决策在多大程度上满足系统的质量需求,特别是在面对操作不确定性和不断变化的需求时。评估有助于早期识别和缓解设计风险;这项工作通常是为了节省集成、测试和演化成本。开创性工作的例子包括架构权衡分析法(ATAM)和成本效益分析法(CBAM)。

在动态和非静态环境(如物联网和云应用程序)中运行的软件架构需要在评估方式上进行根本性转变。这是由于可能影响评估的不可预见因素,包括(但不限于)QoS 波动、多租户、超连接、传感器老化效应等。

尽管现有的设计时的评估方法承诺在不确定情况下评估体系结构具有灵活性及其在实现变更方面可以有所响应,但在高度动态的环境中,这些方法往往受到限制,因为可能会出现架构师不能完全依赖设计时评估的新场景。此类场景需要运行时的评估来通知和校准设计时的决策。在这方面,更持续的做法将有利于评价进程。我们将连续软件体系结构评估定义为对软件体系结构的多个评估,这些评估从开发的早期阶段开始,并在软件系统的整个生命周期内定期重复执行。连续评估是连续或偶尔进行的,涵盖一个功能(如 QoS)或多个功能。

有许多研究旨在评估软件体系结构,以处理可能隐式或显式采用连续方法的不确定性。该领域吸引了广泛的研究人员和实践者。然而,持续评估并没有被视为软件体系结构研究中的一个关键领域。对于连续软件体系结构评估方法的要素,我们仍然缺乏清晰的愿景。

在过去的几年中,许多研究已经回顾了设计时体系结构评估方法,而一些研究试图回顾运行时方法,而没有从连续体系结构评估的背景下对其进行论述。特别是,到目前为止,还没有关于软件体系结构不确定性评估方法的系统文献综述,这些方法可能隐式或显式地采用连续方法。系统文献综述(SLR)是一种方法学手段,用于汇总实证研究、系统调查研究主题、回答具体研究问题,并最终确定研究主题的差距和研究方向。

本研究的目的是(i)提供一个基本的分类模式,对不确定性下的软件体系结构评估方法进行分类;(ii)根据该模式对当前用于评估软件体系结构的设计时和运行时方法进行分类;(iii)确定制定持续评价办法的必要准则;(iv)指出当前的差距和未来在具有不确定性的环境下的软件架构研究的方向,在不确定性环境下,我们考虑设计时和运行时评估,考虑系统将运行/正在运行的环境中可能存在的不确定性。具体来说,我们的目标是为以下研究问题提供答案:

(1) 如何对当前在不确定性下的软件体系结构评估研究进行分类,以及与此分类相关的当前最先进的方法是什么?目标是对不确定性下的现有架构评估方法进行分类,并在此分类下对最先进的方法进行分类。

(2) 这些架构评估方法采取了哪些措施来处理不确定性?本问题的目的是演示和讨论现有方法如何处理不确定性,以及这些行动是否是有助于开发更连续的方法。

(3) 软件体系结构不确定性评估的当前趋势和未来方向以及持续评估的考虑因素是什么?本问题旨在展示研究人员和实践者如何从现有方法中获益,从而在开发持续评估方法时从基本需求中获得灵感并解决问题。

2 系统文献回顾过程

在本节中,我们将讨论 SLR 协议,系统评审过程是如何进行的,最后讨论与标准和评审目标相关的现有架构评估方法。

2.1 单反协议

我们遵循了系统文献综述指南和程序以及参考文献的工作,制定了我们的综述方案。特别是,该方案确定了审查的目标、必要的背景、研究问题、纳入和排除标准、搜索策略、数据提取和收集数据的分析。一位作者制定了审查方案,然后其他作者对结果进行了修订,以限制偏见。

2.2 纳入和排除标准

我们在下面提供了包含和排除标准的摘要。如果出版物涵盖了第 2.2 节中的所有纳入标准,则会将其纳入在内。如果出版物符合第 2.2 节中的任何排除标准,则排除在外。

2.2.1 纳入标准。

?1990 年至 2020 年初发表的研究。

?软件体系结构评估领域的研究。特别是,该研究应将软件体系结构评估方法作为其贡献之一。

?讨论架构评估方法的研究,明确关注高层架构设计(例如,组件级、风格、架构设计决策和策略),包括设计、运行时和持续评估;我们排除了讨论低级结构设计(例如代码和类重构)的方法。

?报告定量分析/模型支持的软件体系结构评估的研究(例如,将效用理论作为 ATAM 的一部分;将成本效益分析作为 CBAM 的一部分)

2.2.2 排除标准。没有明确考虑架构评估的研究。例如,一些自适应系统研究可能利用架构评估来通知自适应,但可能没有明确地将其称为架构评估,所以这些研究被排除在外:

?非同行评审的研究。

?研究报告不是用英语编写的,也不能全文阅读。

2.3 搜索策略

执行搜索策略以通过以下方式确定研究:

(1) 应用初步搜索来确定当前的系统评价和绘图研究,从而确定显著相关的初步研究。

(2) 使用 Zhang 和 Babar 提出的“准黄金”标准的概念,我们对软件架构和软件工程领域进行了手动扫描,以交叉检查自动搜索结果。

(3) 使用来自审查主要目标的不同关键字组合(即,从公认的书目数据源自动搜索)进行多个试验。

(4) 执行额外的搜索以手动检查和分析相关参考文献(滚雪球法),以确保我们没有遗漏任何重要的研究,从而保证一组具有代表性的研究。

2.4 搜索执行

在此阶段,我们执行了图 1 中的搜索过程,实现了第 2.3 节中的程序。最初,我们手动搜索当前的系统评价和绘图研究,以确定显著相关的主要研究(13 个结果)。然后,我们进行手动搜索(17 个结果),以确定要与自动搜索列表(即“准黄金”标准)进行比较的研究集。之后,我们搜索了第 2.3 节中提到的所有搜索引擎和书目来源。

2.5 质量评估

为了评估研究结果的质量,我们采用了与参考文献所用标准类似的质量标准。在分析结果时,以下标准显示了单个研究的可信度:

(1) 这项研究为他们的实验评估和数据分析提供了证据或理论推理,而不是依赖于不合理或临时的陈述。

不确定性下的软件体系结构评估:系统性文献综述

图 1 搜索执行

(2) 这项研究描述了进行这项研究的背景。

(3) 研究的设计和实施与研究目标相符。

(4) 这项研究全面描述了他们的数据收集过程。

上述搜索中确定的所有 48 项研究均符合质量评估标准。

表 1 每个数据库的搜索结果和包含的研究摘要

不确定性下的软件体系结构评估:系统性文献综述

请注意,为每个数据库列出的纳入研究数量不包括已被前一个数据库纳入的研究。总共包括 48 项独特的研究。

表 2 数据提取标准

不确定性下的软件体系结构评估:系统性文献综述

2.6 数据提取过程

在此过程中,我们对 48 篇纳入的论文进行了彻底扫描,以提取相关数据,这些数据由 Excel 电子表格和书目管理工具 BibTeX 管理。48 项研究的数据提取由表 2 所示的形式和第 4.1 节中的分类框架驱动。对于数据分析,我们调查了提取的数据之间的关系。该过程的结果将在后续章节中给出。

3 所包括研究的概述

在这里,我们提供了所包括的研究的概述,这些研究在过去几年中沿着出版渠道的分布以及它们的排名。

3.1 通过出版渠道分发研究报告

大多数纳入的研究(即 48 项研究)发表在最知名和著名的期刊和会议上。在表 3 中,我们概述了所包括的研究的出版渠道和每个渠道的研究数量。我们已根据质量评估标准检查了纳入的研究,并确认它们确实符合第 2.5 节中介绍的质量标准。我们还在图 2 中绘制了与出版渠道(即会议、期刊等)相关的纳入研究的分布。从这些结果中,我们发现有大量的研究发表在会议上(约 62%),其次是较少的研究(19%)发表在期刊上。在研讨会(约 13%)和书籍(约 6%)上发表的研究有限。这表明体系结构评估方法是可行的。

表 3 包括的研究以及出版渠道的分布

不确定性下的软件体系结构评估:系统性文献综述

3.2 历年纳入研究的分布情况

通过按出版年份分析研究,如图 3 所示,我们观察到从 2003 年到 2013 年,软件体系结构评估领域呈现出不断增长的趋势(有一些振荡)。尽管在过去四年中,对架构评估的兴趣似乎有所下降,但最近的一些研究提供了新的架构评估方法,这些方法包括在本次调查中。

3.3 纳入研究的引用率

我们在表 4 中列出了从谷歌获得的纳入研究的引用率,学者引用率并非用于比较研究;相反,我们用它来提供对论文质量的粗略估计。

不确定性下的软件体系结构评估:系统性文献综述

图 2 发布类型的分布

不确定性下的软件体系结构评估:系统性文献综述

图 3 各年出版物类型的分布情况

表 4 收录研究的引用率综述

不确定性下的软件体系结构评估:系统性文献综述

特别是,不到 10 个来源引用了近 5 项研究。其中两个是在 2004 年和 2010 年被引用的,因此,我们预计它们不会被进一步引用,而其他则相对较新。近 45%的研究(21 份出版物)被 10-50 个其他来源引用,5 项研究被引用 50-100 次。14 项研究的引用率非常高,超过 100 次,排名第一的研究被引用了近 1578 次。这表明,总体而言,纳入的研究被高度引用,这表明其质量和影响。在表 5 中,我们列出了被引用最多的出版物。第一项研究是一本书,其余的是期刊和会议论文。

表 5 收录了 100 个以上被引用次数最多的研究

不确定性下的软件体系结构评估:系统性文献综述

4 数据提取结果

本节旨在回答第一个和第二个研究问题:(1)如何对不确定性下的软件体系结构评估的当前研究进行分类,以及与此分类相关的当前最先进的方法是什么?(2) 这些架构评估方法采取了哪些措施来处理不确定性?我们对每项研究中涉及的研究主题的分析以及文献中发现的系统回顾和调查帮助我们制定了以下分类框架。这种分类有助于我们过滤、映射和理解体系结构评估领域。我们还讨论了包含的评估方法如何处理不确定性。

不确定性下的软件体系结构评估:系统性文献综述

图 4 所提出的体系结构评估方法的分类

4.1 分类框架

接下来,我们将详细解释图 4 所示的标准。

(1) 质量评估:架构评估通常作为一个里程碑式的评审来完成,旨在证明架构设计决策在多大程度上满足质量要求及其权衡。评估有助于早期识别和缓解设计风险。其重点是避免糟糕的决策,确定稳定的体系结构,从而节省集成、测试和演化成本,这些成本可归因于不适合满足变更的设计决策。我们回顾了评估阶段,包括设计阶段、运行阶段和持续阶段,以及评估方法,包括基于效用、基于场景、基于参数、基于搜索、基于经济学和基于学习的主要工作。

(2) 质量属性注意事项:我们的文献综述旨在展示所研究的软件体系结构评估方法如何处理质量属性(即,关注单个和多个 QA),以及支持的质量属性是什么。质量属性的例子有性能、可靠性、安全性、成本等等。质量属性的进一步监控和处理是需要讨论的一个重要方面,它可以为架构师和架构评估人员提供设计连续架构评估框架所需的元素。

(3) 自治级别:在软件架构评估中,自治级别是设计连续架构评估框架的一个重要方面。在这方面,我们将回顾这些研究如何管理利益相关者的输入和冲突需求之间的权衡。

(4) 不确定性管理:在这一类中,我们重点讨论不确定性的来源以及文献如何处理不确定性。

在第 4.2 节至第 4.5 节中,我们旨在为前面提到的审查研究问题提供答案。我们将架构评估方法分为设计时和运行时。在每个类别中,我们进一步分类并解释了与框架相关的现有架构评估方法(回答研究问题 1)。我们还讨论了这些体系结构评估方法处理不确定性所采取的行动(回答研究问题 2)。

4.2 质量评价

4.2.1 不确定性下的评估方法。架构评估方法可以采取多种形式:这些方法可以定制,为架构师提供阶段和系统指导,以评估架构在多大程度上能够满足其非功能性目标和权衡,例如 ATAM、CBAM 等。此外,架构师可以使用通用框架进行质量评估,这可以用于评估考虑中的任何人工制品,其中软件体系结构可以成为受益者。无论使用哪种评估类型,架构师都可以采用以下常用方法之一,在存在不确定性的情况下评估架构设计决策和选择。常用的方法可分为基于效用、基于情景、基于参数、基于搜索、基于经济学和基于学习的方法。

4.2.2.评价阶段。评估可以在设计时和/或运行时进行。设计时评估发生在系统部署之前,利益相关者更多地参与对所研究系统的推理,而运行时评估方法使用运行时模拟数据(例如,QoS)捕获不确定性下架构决策的动态行为,并在原型阶段或部署后使用这些信息来分析或评估设计决策。

4.3 质量属性注意事项

4.3.1 解决质量属性问题。有一些评估方法侧重于单个或多个质量属性。基于这些结果,我们发现大多数软件体系结构评估研究都涉及多个质量属性,例如,可移植性和可扩展性的可修改性,成本的稳定性。

4.3.2 支持的质量属性。我们将支持的质量属性分为一般属性和特定属性。一般而言,我们考虑讨论支持任何质量属性(如性能、可用性、可靠性等)的文献。

4.3.3 质量属性的监测和处理。该标准与运行时和连续评估方法相关,其中质量属性值通过运行时监控或预测确定。

4.4 自治级别

4.4.1 利益相关者参与评估的管理。这一类别被进一步分类为人类依赖型、半自主型和自主型。我们必须区分:(i)人类依赖性(即完全依赖于利益相关者来评估候选架构选项的行为);(ii)半自主的架构评估过程,例如,利益相关者和架构师在回路中进行交互评估;(iii)自主(即,评估是在没有人为干预的情况下自主进行的)。为了进一步澄清这些类别,我们考虑自适应系统(SAS)中的体系结构评估的情况:存在依赖于人类的架构设计决策(例如是否引入自适应机制),半自治(如人在环中参与自适应系统);以及自主架构设计决策(例如 SAS 在运行时将组件适配和部署到不同的服务器)。使用自主架构设计决策的另一个例子是将智能和学习机制、进化计算等结合起来,以协助决策的自动评估。持续架构评估可以监控 QA,并从候选选项库中重新配置,其中一些选项的技术可行性已经确定,但需要进一步分析和确认。

4.4.2 权衡管理。选择最佳架构决策的一个常见问题是权衡管理。例如,关于传感器的架构决策可以提供高响应时间,但能量效率较低。因此,一个目标可能是选择一个能够同时满足两个质量属性的架构决策。有两种折衷管理:手动和自动。手动管理表示采用需要人工干预的工具或技术,而自动管理表示使用参数化模型,自动选择或短名单权衡候选对象。

4.5 不确定性管理

4.5.1 不确定性的来源。架构可能经历两种不确定性来源:假设性和认知性。总结:不确定性的假设性概念是指不确定性源于随机事件可能实现的可变性,即每次在类似条件下运行实验时都可能出现未知和不同的结果;不确定性的认知概念是指由于对一个事实缺乏信心或缺乏对该事实的正确或错误的认识而导致的不确定性的上升。我们根据不确定性的来源对作品进行了分析。

4.5.2 不确定性的处理。在研究文献中,存在处理显性或隐性不确定性的方法。显式方法是考虑不确定性是主要焦点,而其他方法不提及不确定性,但它们的工具和技术可用于处理不确定性。

5 结论

我们进行了系统的文献回顾,以检查现有的架构评估方法,这些方法处理设计时或运行时的不确定性。我们还为开发和实施持续架构评估方法的必要元素提供了指南。我们自动和手动搜索著名的软件架构和工程、其他相关的系统评审和绘图研究以及重要的书目数据源。此外,我们采用滚雪球过程来收集我们的初步研究。

我们的研究结果如下:(a)设计时体系结构评估方法比运行时评估方法得到了更多的关注,尽管后者对于处理软件系统中的动态性和日益增加的复杂性越来越重要;(b) 缺乏证明如何实现和实施持续评估方法的实例;(c) 很少有方法关注在运行时管理收益和成本之间的权衡;(d) 很少有方法侧重于采用机器学习技术进行评估;(e) 大多数运行时方法往往是被动的。

总之,我们建议该领域未来的工作机会如下:(i)采用基于经济学的方法(即预测复杂架构决策的长期价值);(ii)在设计时评估方法(持续评估方法的初始阶段)中采用基于经济学的原则,因为它嵌入了不确定性下的灵活性;(iii)进行额外研究,分析机器学习技术的使用情况,以改进运行时的架构评估(持续评估方法的持续阶段);(iv)调查架构评估过程中主动性的发展;(v) 探索调整持续评估的输入参数(例如,对变化的敏感性、监测间隔、当前/过去数据的相对重要性)如何影响评估,以及哪些参数最适合改进决策;(vi)分析动态环境(如物联网和云系统)中连续架构评估的使用。

致谢

本文由南京大学软件学院 2021 级硕士研究生冯子扬翻译转述,肖媛审核。

来源:慕测科技

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月13日
下一篇 2022年1月13日

相关推荐