功能模型

在软件开发中,功能模型是“功能”的软件产品线(SPL)所有产品的紧凑表示。特征模型在视觉上通过特征图表示。特征模型在整个产品线开发过程中被广泛使用,通常用作产生其他资产的输入,例如文档,体系结构定义或代码部分。

SPL是一个相关计划的家族。当计划构建的单位是功能或开发中的功能时,SPL中的每个程序都会通过功能的独特而法律的组合来确定,反之亦然。

首先,康(Kang)在1990年在面向功能的域分析(FODA)方法中首先引入了特征模型。此后,软件产品线社区已广泛采用了功能建模,并提出了许多扩展。

背景

“功能”定义为“软件系统或系统的突出或独特的用户可见方面,质量或特征”。 SPL开发的重点在于系统的有效创建类似程序。 FODA是一种用于识别域中特征以覆盖特定SPL的分析。

模型

特征模型是一个定义特征及其依赖项的模型,通常以特征图 +左侧(又称跨树)约束的形式。但这也可能是可能的组合表。

图表

功能图是特征模型的视觉符号,它基本上是一个和或树。存在其他扩展:红衣主教,特征克隆,特征属性,以下讨论。

配置

功能配置是一组功能,它描述了SPL的成员:该成员在且仅当功能处于其配置中时包含一个功能。功能模型允许功能配置在且仅当它不违反模型施加的约束时才允许。

特征树

特征树(有时也称为特征模型或特征图)是一个层次图,该层次图在视觉上以越来越多的细节级别的组形式描绘解决方案的特征。特征树是总结将包含在解决方案中的功能以及它们以简单的视觉方式相关的功能的好方法。

功能建模符号

当前的特征建模符号可以分为三个主要组,即:

  • 基本功能模型
  • 基于基数的功能模型
  • 扩展功能模型
代表可配置的电子购物机系统的功能图。

基本功能模型

父母功能及其子功能(或子功能)之间的关系被归类为:

  • 必须选择 - 必须选择儿童功能。
  • 可选 - 可以选择或未选择儿童功能。
  • 或 - 至少必须选择一个子功能。
  • 替代性(XOR) - 必须选择其中一种子功能之一。

除了特征之间的父母关系外,还允许跨树约束。最常见的是:

  • A要求B - 产品中的选择意味着选择B。
  • A排除B - A和B不能成为同一产品的一部分。

例如,右侧的图说明了如何使用功能模型来指定和构建可配置的在线购物系统。每个应用程序的软件由其提供的功能确定。根特征(即e-shop)标识SPL。每个购物系统都会实施目录,付款模块,安全策略以及可选的搜索工具。电子商店必须实施高或标准的安全策略(选择一个),并且可以提供不同的付款模块:银行转让,信用卡或两者。此外,跨树的约束迫使购物系统,包括信用卡支付模块,以实施高安全策略。

基于基数的功能模型

一些作者提出了具有形式[n,m]UML类型的扩展基本特征模型, n为下限, m上限为m。这些用于限制每当选择父时可以成为产品一部分的子功能的数量。

如果上限为m,则可以根据需要克隆多次(只要尊重其他约束)。该符号对于具有任意数量的组件可扩展的产品很有用。

扩展功能模型

其他人建议使用“属性”向功能添加功能外信息。这些主要由名称,域和值组成。

语义

功能模型的语义是特征模型允许的特征配置集。最常见的方法是使用数学逻辑来捕获特征图的语义。每个特征对应于布尔变量,语义被捕获为命题公式。该公式的令人满意的估值对应于功能图允许的特征配置。例如,如果是强制性的子功能 ,公式将包含约束

下表提供了基本原语的翻译。我们假设该图是一棵根有根的树 。整个图的语义是图中包含的元素翻译的结合。因此,如果所有元素均以连接的正常形式(CNF)编写,则可以很容易地将术语与逻辑结合在一起,并且整个逻辑表达式将保留在CNF中。

特征图原始 语义 语义以法线形式
是根特征
强制性子功能
可选的子功能
或子功能
替代(XOR)子功能
需要
排除

配置产品

通过根据用户的喜好选择或取消选择功能来声明SPL的产物。此类决策必须尊重特征模型施加的约束。 “配置器”是在配置过程中协助用户的工具。例如,通过自动选择或取消选择必须或不能选择必须成功完成配置的功能。当前的方法使用单位传播CSP求解器

属性和分析

对功能模型的分析针对模型的某些属性,这对于营销策略或技术决策很重要。文献中已经确定了许多分析。典型的分析确定特征模型是否无效(不代表产品),它是否包含死亡功能(无法属于任何产品的特征),还是该模型代表的软件产品线的产品数量。其他分析的重点是比较多种特征模型(例如,检查模型是对另一个模型的专业化还是重构概括)。

也可以看看