论文部分内容阅读
模型驱动开发一直是软件工程中软件开发模式的核心技术。目前的工业界和学术界往往还是关注于如何用传统的软件开发过程来完成目标软件。传统的软件开发对需求工程的关注度不高,伴随着软件工程的相关研究的深入,越来越多的人开始重视需求工程在软件开发当中的重要作用。同时在保证软件质量的前提下,如何提高软件生产效率也是软件工程的研究重点。软件的开发过程包括了需求分析、设计、开发、测试、维护这些基本的环节,通常软件开发人员在需求分析的过程中对软件系统进行了需求建模,由此得到的需求模型在后续工作中没有得到重视,甚至被完全抛弃。因此,有必要提出一种方法来帮助软件开发人员来规避这些问题。目前的软件开发工作还有很多需要人工去完成,本文从软件开发的角度,结合模型驱动的思想,研究如何从需求模型出发来得到目标软件的体系结构。这个研究的意义在于:首先软件的体系结构是否规范是后期工作当中代码的实现能否保证有序和完备的关键,其次以一种现实世界的约束来对软件进行编码也是一种被证明可以降低开发风险的有效方式。因此,本文主要研究内容为:①在基于软件行为的需求模型的前提下,抽取模型内容并转换为软件体系结构当中的结构元素来获得目标软件的体系结构;②考虑到需求模型易变更的特性,研究如何追踪需求的变更,并研究这种变更对软件体系结构的影响。论文的主要工作如下:(1)需求模型到软件体系结构的转换方法根据基于BDL (Behavioral Description Language)的建模方法来分析需求模型(以下简称BDL模型)的模型结构,关注其中每一个主体的层次和二元关系。通过分析BDL模型的模型结构,从系统层面、视点层面和场景层面分别对BDL模型的元素进行了形式化的描述。从层次化的角度,提出结构精化树的概念,用以描述BDL模型中抽象层次不同的需求元素在系统层面的定位。此方法中,首先是提取BDL模型的结构元素。因此需要定义BDL模型的场景单元为目标软件体系的基本构件,并根据BNF范式来提取BDL模型的结构元素。从特征上划分BDL模型,其中依赖特征成为结构元素的主要提取依据。由于需要描述提取出来的结构元素,故本文提出了一种基于架构描述方式的结构体(Architecture Description Struct,简称ADS)来刻画BDL模型当中的结构元素。然后,根据依赖特征,研究需求和需求之间的依赖关系这种依赖关系是基于结构精化树来进行讨论的。其次是研究如何将基于ADS刻画的结构元素映射到软件体系结构。该部分工作主要从两个方面进行研究:类型映射和结构映射。其中类型映射主要讨论的是如何将BDL模型当中的参数进行类型定义。结构映射是通过直接映射、分解映射和组合映射来完成BDL模型到目标软件体系结构的映射。(2)BDL模型的结构和软件体系结构的转换一致性证明从BDL模型结构到软件体系结构的转换类似于MDD (Model-Driven Development)的开发过程,经过了CIM (Computation Independent Model), PIM (Platform Independent Model), PSM (Platform specific Model)三个模型阶段。从理论上BDL模型是CIM, ADS构造描述的结构精化树是PIM,最终得到的软件的体系结构可以看成是PSM。本文主要研究PIM到PSM的转换过程,从行为语义一致性和结构语义一致性两个方面来保证转换的一致性。结构语义的一致性问题主要对工作(1)中的三种映射进行语义保持和一致性证明。行为语义的一致性问题主要从弱等价的理论出发来研究可观察行为的行为轨迹来证明两个模型是具有行为一致性的。(3)需求模型变更的追踪机制提出了基于BDL的需求模型的依赖分析方法,定义了对模型复杂度的计算方法,提出了模型变更的追踪机制。将原子需求本身可以看成是单一的个体,本文从这个角度提出了需求的操作法则,从不同的抽象层次上将需求的变更进行反馈。研究需求变更的过程化,从需求变更的识别开始讨论变更的追踪机制。并从需求模型的变更出发研究了需求完备性、冗余和缺失检测的重要性问题。最后,本文在已开发出的原型工具系统上,通过一个实例来阐述本文提出的方法。此外,本文还讨论了其他需求模型在本方法下进行转换的可能性。