特征模型驱动的软件开发方法及相关技术研究
【摘要】:
计算机软硬件技术的不断发展开拓了人类文明新的前进步伐,极大地提高了整个社会的劳动生产力和自动化水平,软件产品及其生产技术和水平在实际应用中也得到了极大的发展。然而,随着应用范围的不断扩大及应用程度的不断深入,应用领域高度的复杂性也为软件生产的进一步发展带来了极强的阻滞作用。首先,领域内产品的多样性使得软件企业因为软件具体需求的不同而重新编写整个系统;其次,新的软件理论和技术的产生一方面加快了产品开发的质量和速度,另一方面却使得企业耦合于旧技术的前期投资失去其价值;最后,领域业务逻辑的演进也会导致在线软件产品价值的流失。为了解决这些软件生产中遇到的问题,出现了一系列新的理论和方法。领域驱动技术试图通过分析领域需求的通用性和可变性为全领域相似需求产品提供一致性的需求表示和组织方式,并通过对特征模型的配置选择具体产品的特定需求解决领域产品批量化生产的问题。模型驱动技术则瞄准系统表示,通过抽象系统层次,把面向代码的系统创建过程转变为面向模型的过程,将系统描述为不同层次、不同视角的模型,使得系统构建人员以更贴近于人的思维方式描绘系统并通过定义不同转换规则自动地将人的思维模式转换为不同的机器代码。由于系统模型更自然、更直观且与具体实现技术解耦,所以模型驱动技术的提出可以从根本上解决新的编程技术和平台以及领域业务逻辑的变更对既有投资造成的损失,以更经济的方式——模型的变更实现系统的演进。
本文结合领域驱动技术和模型驱动技术,对特征模型驱动的软件方法的设计和实现作了深入的研究,包括支持方法工具集的体系结构、方法应用的过程以及方法不同里程碑产生的软件制品。同时,为了支持方法的应用,本文还设计了特征模型的元模型,特征模型冲突检测算法,特征模型向模型构件及参考体系结构模型转换方法等。具体说来,本文的主要研究工作包括以下几个方面:
1、对特征模型驱动软件开发方法(FDSDM)的研究。保护软件产品投资的最好方式是软件制品的复用。通过吸收领域驱动技术的思想,FDSDM使用特征模型描述领域产品的共性和可变性,为领域产品提供一致的需求描述方式,并通过配置过程选择具体产品需求,形成单独产品需求模型,从而实现模型在不同需求间的复用;通过采用模型驱动的思想,将相对稳定的模型看做是第一类的软件制品,开发过程从代码编写转变为模型创建,屏蔽了实现技术和平台的不断变化导致的投资贬值,从而实现了模型在实现技术上的复用。详细地说,本文从整体上介绍了FDSDM的特点,给出了FDSDM工具集及其组织结构,描述了FDSDM定义的软件过程以及各软件过程里程碑产生的软件制品。
2、特征模型元模型的建立。为了准确无歧义地描述特征模型,方便不同层次、视角的系统模型的相互转换,本文基于OMG的MOF标准扩展出特征模型元模型。元模型形式化地给出了特征模型元素的抽象语法和具体语法,半形式化地给出了这些元素的语义。同时,形式化地定义了特征模型间导入和合并机制,给出了特征模型冲突检测算法,为特征模型的自动化操作奠定了基础。
3、特征模型与模型构件转换方法的研究。为了方便特征模型向模型构件的转换,引入了角色的概念,并通过角色的中介作用将CIM特征模型转换为PIM模型构件。转换过程依次进行特征操作化、角色分析模型建立和模型转换过程。特征操作化过程是根据对特征需求规约的分析将特征分解为面向计算的角色的过程,该过程通过人的参与以特征为单位将CIM转变为计算机可以识别的模型形式;角色分析模型同样以特征为单位进行角色交互的分析,建立角色间的关联,为模型构件的创建提供基础;转换过程使用特征-角色-构件映射算法,最终生成可复用的系统构件,完成CIM到PIM的变换。
4、特征模型向参考体系结构转换方法的研究。本文通过分析特征模型可变性与参考体系结构描述语言的关系,给出了参考体系结构描述可变性的层次和影响因子。并根据这些层次和因子给出了特征模型可变性向参考体系结构可变性转换的转换规则,给出了创建产品族体系结构模型的方法,从而实现了“大同构,小异构”产品族参考体系结构半自动化生成过程。
本文的创新之处主要体现在以下几个方面:
1、结合领域驱动技术和模型驱动技术提出了一种特征模型驱动的软件开发方法。为了实现软件开发过程的可控性,本文设计了一种特征模型驱动的软件开发方法FDSDM。FDSDM方法以特征模型作为系统开发的起点和系统族需求提取和表达方式,使用模型转换作为系统开发前进的驱动力,将不同阶段和视角的系统模型作为系统开发的里程碑,最终(半)自动化地产生最终产品。FDSDM方法充分利用领域驱动技术和模型驱动技术的理论和技术优势,使系统开发更大程度的符合人的思维模式而非计算机的表示,减少因思维转换而产生的歧义和错误;最大限度地减少人在开发过程的干预程度,实现软件开发工程化,从而提高了整个行业的生产效率以及产品质量。
2、定义了一种基于MOF的形式化特征模型元模型,并实现了特征模型自动化冲突检测算法。为了准确无歧义地描述特征模型,方便不同系统模型间的相互变换,我们基于标准MOF规范形式化地定义了特征模型元模型。形式化元模型从更高的抽象层次描述了特征模型概念,保证了模型的清晰与精确,消除了模型理解中可能存在的歧义,使得相关人员可以一致性地理解系统需求。同时,基于MOF的元模型描述方便了特征模型向其它遵守MDA规范的系统模型的横向与纵向转换,也使得特征模型可以利用其它基于MOF的模型转换引擎向其它系统模型进行模型转换,大大扩展了特征模型的应用范围。另外,特征模型自动化冲突检测算法的实现及特征模型导入合并机制的定义为特征模型及FDSDM方法实际应用于大规模、高复杂度的系统提供了坚实的基础,使得企业当前在线产品(族)能够得到有效地表示和融合,因而可以平稳地过渡企业当前开发过程,最大限度地保护企业既有资产的价值。
3、提出了一种从特征模型(计算无关模型)向模型构件(平台无关模型)的转换方法。目前模型转换领域的研究方向主要集中在PIM-PSM及PSM-代码间转换理论及规则定制上,对于如何实现系统需求(CIM)向系统模型(PIM)的转换却提之甚少。本文针对这种现状,结合FDSDM软件开发方法,提出了一种从产品族特征模型向模型构件的转换方法。该方法引入角色概念,并通过角色为中介者,利用特征-角色-构件模型算法将特征模型映射为模型构件,实现转换过程。在转换过程中,方法尽可能将人的活动限制在一个简单狭小的范围,最大限度地弥补人对复杂事物无法精确把握的缺陷,保证软件过程早期软件模型的正确性。本文提出的特征模型向模型构件的转换过程为CIM模型与PIM模型转换提供了一种可能的解决思路。
4、提出了一种从特征模型向产品族参考体系结构映射的模型变换规则。传统的软件体系结构描语言主要针对单一产品,很少有支持整个产品族的参考体系结构表示方法。为了解决产品族体系结构“大同构、小异构”的描述方法,本文分析了产品族特征模型可变性的来源和种类,将不同种类的特征模型可变性映射为体系结构概念中端口可变性和构件可变性两级,通过不同可变性的组合描述体系结构可变性。同时,针对不同的特征模型可变性给出了其产品族参考体系结构描述转换的规则,从而实现了特征模型向产品族参考体系结构描述的转换。
通过对开发方法和相关技术的研究,本文期望可以从思想和实践上为领域软件的开发寻找到一条经济、快捷的道路,有效解决领域复杂性与实现技术复杂性的高度耦合,提供软件产业的生产效率,实现软件生产的自动化,有效的保持和延长软件既有投资的价值。