界面模式自动评估与软件架构质量属性偏好量化测量
1. 界面模式自动评估
在界面设计中,模式混乱是一个常见且影响用户体验的问题。为了解决这个问题,我们可以采用一系列的算法和方法来自动评估界面模式。
1.1 核心算法
-
冗余判断函数
redundant:该函数用于判断一个术语是否冗余。以下是其代码实现:
def redundant(term t):
red = false
for (c in EQC):
for (q in c):
if (not(q == rep(c)) and t == pq):
red = true
return red
-
新术语生成函数
newTerms:此函数用于生成新的术语。代码如下:
def newTerms(int n):
Seeds = Novel
Novel = {}
for (t in Seeds):
for (e in Unique):
if (not(redundant(t.e))):
classify(t.e)
-
等价类计算主算法
computeEquivClasses:该算法是计算等价类的核心,代码如下:
def computeEquivClasses(int n):
C = {Id}
r(C) = Id
EQC = {C}
Novel = {}
for (e in E):
classify(e)
Unique = Novel
if (n > 1):
i = 1
do:
newTerms(i)
i++
until:
(i > n) or Novel = {}
这个算法会对连续的
n
值进行计算,直到达到边界或者该循环不再引入新的术语。当不再引入新术语时,我们称等价类达到饱和状态,此时任何更大术语的分类都可以从现有分类中代数计算得出,进一步的分类就没有意义了。
1.2 模式识别
在计算出术语集的等价类后,我们可以生成定义动作模式的代数属性。具体来说,通过比较等价类对
C1
和
C2
,看是否存在一组状态
m
,使得
go(m).φ(C1) ≡ go(m).φ(C2)
,即
C1
和
C2
的矩阵在对应
m
状态的行上是等价的。如果满足这个条件,那么
m
就是由属性
φ(C1) ≡ φ(C2)
定义的动作模式。
然而,这个过程可能会为非平凡界面返回过多的模式,因此需要对潜在模式进行修剪。可以采取以下几种方法:
- 强制设置
m
的最小模式大小。
- 对属性大小设置边界(将相同事件的重复视为单个事件)。
- 将一组相似的模式泛化为单个模式。
- 设计师可以审查和过滤生成的模式,选择他们认为对进一步分析有用的模式。
2. 软件架构质量属性偏好的量化测量
软件架构在软件开发中变得越来越重要,它决定了早期的设计决策,对后续开发有重大影响。而质量属性在评估软件架构中起着关键作用,通过结合联合分析,我们可以更有效地分析软件架构中质量属性之间的权衡。
2.1 软件架构与 ATAM 方法
用户在软件开发中通常更关注功能需求,但软件质量属性(非功能需求)同样重要。软件架构是系统组件的组织方式,它给软件工程师带来了设计问题。
架构权衡分析方法(ATAM)由软件工程研究所开发,用于评估架构级设计,考虑多个质量属性,如可修改性、性能、可靠性和安全性,以确定架构是否能满足要求。然而,ATAM 缺乏对客户效用的定量测量。
2.2 联合分析
联合分析是一种通过产品和服务的效用权衡来测量客户偏好的技术。它可以将产品的效用表示为其属性效用的总和,公式如下:
[U = u_1(QA_1) + u_2(QA_2) + \cdots = \sum_{i\in attributes} u_i(QA_i)]
联合分析的优势在于它基于明确的数据收集过程,通过让客户对设计集进行排序或比较,揭示隐藏的客户偏好。其过程可以用以下 mermaid 流程图表示:
graph LR
A[质量属性选择] --> B[质量属性水平确定]
B --> C[质量属性组合确定]
C --> D[获取客户判断的方法确定]
D --> E[判断聚合方式确定]
E --> F[结果分析]
具体步骤如下:
1.
质量属性选择
:根据目标系统和目标确定合适的质量属性。例如,不同类型的系统(如基于 web 的系统或实时系统)可能需要不同的质量属性集。
2.
质量属性水平确定
:质量属性水平应相互排斥且全面,以充分代表质量属性。同时,要确保向客户呈现的场景具有现实性。
3.
质量属性组合确定
:为避免客户评估过多相似的架构配置文件而疲劳,通常使用分数阶乘设计和正交计划来确定质量属性组合。但正交性假设有时不现实,因此可能需要其他设计方案来检测属性之间的相关性。
4.
获取客户判断的方法确定
:可以通过评级、排序等方式获取客户的判断。常见的呈现方法包括向客户展示配置文件卡片、段落描述、图片材料或实际原型。
5.
判断聚合方式确定
:如果有多个受访者,需要确定如何收集和表示他们的判断。
通过联合分析,软件工程师可以识别和关注有用的质量属性,提高交付令客户满意的软件产品的机会。同时,它为选择架构风格和设计模式提供了新的框架。
界面模式自动评估与软件架构质量属性偏好量化测量
3. 联合分析在 ATAM 中的应用
联合分析在 ATAM 中起到了桥梁的作用,能够帮助架构师挖掘客户对架构的偏好。在 ATAM 中运用联合分析,需要以下四个关键组件:
|组件|描述|
|----|----|
|质量属性|是进行分析的基础,不同的目标系统和目标会影响质量属性的选择。|
|实验设计|基于质量属性制定合适的设计计划,以引出客户的架构偏好。|
|场景生成|将设计计划进行定制和细化,使其符合客户的口味。|
|分析|对客户的评估结果进行统计数据分析,揭示客户的架构偏好。|
3.1 联合分析的具体流程
联合分析的流程包含六个步骤,具体如下:
1.
质量属性选择
:这是联合分析的第一步,要定义质量属性。软件工程研究所对质量属性进行了研究,这些质量属性可作为联合分析的候选属性。目标系统的类型(如基于 web 的系统或实时系统)和目标会影响质量属性的选择。例如,实时 Java 为了提高性能去除了很多功能,这就导致性能和可维护性、可配置性等方面存在冲突。利用先验信息可以进行有效且高效的研究设计,减少后续的冗余任务。
2.
质量属性水平确定
:这一步要确定质量属性的水平。质量属性由质量属性水平组成,这些水平应相互排斥且全面,这样才能充分代表质量属性。以性能这个质量属性为例,它可以由能力、并发性和处理时间等水平构成。为了让客户准确识别偏好,质量属性水平可以有不同的定义方式。同时,向客户呈现的场景要具有现实性,相比基于原型的呈现方式,基于场景的呈现方式有一定的局限性,因此可以利用视觉图像、音视频媒体结合文本信息来克服这些局限,为客户提供更真实、详细的场景,帮助他们准确、轻松地揭示偏好。
graph LR
A[质量属性选择] --> B[质量属性水平确定]
B --> C[确定质量属性水平的具体方式]
C --> D[保证场景现实性]
D --> E[克服场景呈现局限性]
- 质量属性组合确定 :此步骤是确定质量属性的组合。如果让客户对过多的架构配置文件进行排序,他们会因为评估大量相似的配置文件而感到疲惫。为了避免这种情况,减少需要评估的场景数量,通常会使用分数阶乘设计和正交计划。根据帕累托层次排序原则,重要因素的数量较少,低阶因素比高阶因素更可能重要。所以,这种方法比较实用且相对简单。然而,正交性假设有时不现实,因为两个或三个质量属性可能存在相关性,对软件质量至关重要。因此,需要其他设计方案来检测这些模式。如果没有先验信息,可以先使用设计方案找出重要因素,再使用分数阶乘设计来研究质量属性之间的交互模式。这种两阶段设计策略有助于放宽正交假设,识别交互作用。
- 获取客户判断的方法确定 :有多种方法可以获取客户的判断,如评级、排序等。常见的呈现方法是向客户展示配置文件卡片或段落描述,也会经常使用图片材料或实际原型来增强产品特征呈现的现实性。配置文件通常不会包含所有属性,因此会使用分数阶乘设计,将属性进行仔细划分,使每个配置文件包含部分不同的属性。在计算机辅助的情况下,配对比较很常见,客户会被要求从两个候选对象中选择一个来揭示偏好,并重复这个过程。
- 判断聚合方式确定 :当有多个受访者时,需要确定如何收集和表示他们的判断。可以采用多种方式进行聚合,如加权平均、中位数等,具体的聚合方式要根据实际情况选择。
- 结果分析 :对客户的判断进行聚合后,要进行结果分析。通过统计分析等方法,可以得到每个质量属性的效用值,从而了解客户对不同质量属性的偏好程度。根据这些结果,软件工程师可以对软件架构进行优化,提高软件的质量和客户满意度。
4. 总结与展望
界面模式自动评估和软件架构质量属性偏好的量化测量为界面设计和软件开发提供了重要的方法和工具。界面模式自动评估的相关算法可以帮助设计师发现和解决模式混乱问题,提高界面的可用性。而软件架构质量属性偏好的量化测量通过联合分析,能够深入了解客户对质量属性的偏好,为软件架构的设计和选择提供科学依据。
在未来的研究和实践中,还可以从以下几个方面进行改进和拓展:
-
算法优化
:对于界面模式自动评估的算法,可以探索更高效的实现方式,以应对大规模系统的分析需求。例如,采用动态规划等方法来提高算法的效率,减少计算时间和资源消耗。
-
联合分析的深化
:进一步完善联合分析的过程,考虑更多的因素和场景,提高测量结果的准确性和可靠性。例如,研究如何更好地处理质量属性之间的交互作用,以及如何在不同的文化和用户群体中应用联合分析。
-
工具开发
:开发更实用的工具,将这些方法集成到软件设计和开发的流程中,为设计师和工程师提供更便捷的操作。例如,开发可视化工具,让设计师可以直观地看到不同质量属性的组合和效果,以及界面模式的评估结果。
-
用户体验研究
:结合用户体验研究,深入了解用户在实际使用中的需求和反馈,不断优化界面设计和软件架构。可以通过用户测试、问卷调查等方式收集用户的意见,将这些意见反馈到设计和开发过程中。
通过不断地研究和实践,这些方法和工具将能够更好地服务于界面设计和软件开发,提高软件的质量和用户满意度。
超级会员免费看
664

被折叠的 条评论
为什么被折叠?



