论文部分内容阅读
软件产品线是一种面向特定领域、以全面和系统的软件复用为基础的软件开发方法。软件产品线开发主要通过领域工程阶段面向领域的分析、设计和实现过程形成产品线核心资产集合,并以此为基础实现快速、高效、高质量的应用产品生产。现实中的软件产品线往往都是在一系列独立的领域应用基础上随着领域的逐渐成熟而出现的,很少从头开始构造。这些软件产品线一般都是在若干独立开发应用产品上取得初步的成功后,通过再工程,以增量演化的方法引入的。在此过程中,如何尽量复用已有遗留应用系统中的软件资源,以降低向软件产品线迁移的成本是一个现实问题。本文的研究主要关注于在多个已有的遗留应用系统基础上通过逆向工程方法提取软件产品线开发模型(主要是领域分析模型和设计模型)和领域构件。研究工作的主要目标是通过自动化或半自动化的方法及工具的辅助,帮助软件产品线开发人员抽取和提炼产品线特征模型、共性/可变性模型、领域框架、可复用构件等核心资产,以提高向产品线迁移的效率。面向软件产品线逆向工程与传统逆向工程的主要区别在于针对的分析对象是多个同属一个业务领域、实现相似需求的遗留应用系统。因此,相应的逆向工程过程除了模型和视图的抽取之外,还需要实现逆向的共性和可变性分析。这种逆向可变性分析的基础和前提是能够在不同系统逆向恢复的模型和视图之间建立起对应关系,而相应的实现方式与遗留应用产品的状况相关。本文对于不同遗留应用产品状况(如同构和异构应用)下,开发模型逆向抽取的问题进行了分析和探讨。在此基础上,本文首先针对异构遗留应用产品族,提出了一种基于数据语义和形式化概念分析的软件产品线领域特征模型逆向恢复方法,在数据语义的基础上恢复领域的特征模型。该方法以领域实体所代表的数据语义映射为分析基础,采用形式化概念分析的方法对代码进行聚类获得候选的功能特征,在此基础上通过可变性分析恢复领域特征模型。其次,针对软件产品族中同构遗产系统族,本文提出一种基于代码克隆分析和上下文相似度度量的产品线可变性分析方法。系统之间的可变性可能是由对部分代码的直接修改、或者条件判断、或者设计模式实现。通过对这类系统的逆向分析,获取共性/可变性模型,并将这些共性/可变性映射到代码实现。面向软件产品线的迁移还包括对遗产系统的集成和重构,因此本文还提出一种在逆向恢复得到特征模型及实现映射的指导下,进行面向适应性构件模型的领域体系结构恢复和构件提取的方法,从而达到更新软件产品线基础设施的目标。