论文部分内容阅读
软件产品线是当前最为成功且有效的系统化复用手段。软件产品线工程主要涵盖领域工程和应用系统工程这两个阶段,模型是这两个阶段中被生产和使用的最为重要的制品。在领域工程中涉及到的制品称为领域模型,在应用系统工程中涉及到的制品称为应用模型。前者以可变性为核心描述了软件产品线的需求与设计决策中的共性和可变性;而后者则是基于用户的实际需求对领域模型可变性进行定制的结果。领域模型和应用模型之间的一致性是保证软件产品线长期稳定与发展的重要原则。然而,在实际情况中,领域模型和应用模型通常是由不同的团队开发和维护的。这些模型往往会独立演化,一旦没有有效的机制保证模型间的一致性,则会使得模型间的差异日益增大,对软件产品线的成功实施造成负面影响。因此,能够支持各种类型的领域模型与应用模型之间同步演化的机制对于软件产品线的长期发展是至关重要的。然而,由于不同类型模型的结构类似且针对这些特定类型模型的同步操作也较为相近,因此为不同类型的模型分别开发同步机制可能会变成一件冗余且容易出错的工作。针对上述关注点,本文提出一种软件产品线领域模型与应用模型的通用同步演化方法。该方法的核心是一个被称为SPL-GSync的基于模型的通用同步框架。框架涵盖一个通用元模型,能够通过一种通用的描述方式表示不同种类的产鼎线模型的内容,尤其是领域模型所包含的可变性。基于该元模型并结合产品线通用同步演化场景,我们定义了一套可复用的同步规则集,这套规则集涵盖了从领域模型到应用模型的正向传播规则,以及从应用模型到领域模型的逆向反馈规则。使用这套框架,开发者只需定义不同类型的模型与通用模型之间的双向转换程序,SPL-GSync便能间接地实现不同类型的领域模型与应用模型之间的一致性同步。另外,同步过程会涉及模型的合并,而合并的过程可能会产生冲突,本文对可能出现的冲突场景进行分析,并提出了典型的冲突解决方案。最后,我们将SPL-GSync实现为遵循C/S架构的软件工具原型,并以特征模型以及UML类图为例展示了该工具原型在实现产品线领域模型与应用模型的同步演化过程中的实用性与通用性。