第一章 引 言
本章主要介绍了本文研究的背景、相关理论与技术的基本概念以及本文的研究意义和主要工作,包括软件开发目前面临的问题,构件、构件组装、MDA、DSM、SA、SF等基本概念,MDA的局限性,DSM的先进性,以及构件组装的研究现状等,同时对本文的内容与组织结构做了详细的说明。
1.1软件开发目前面临的问题
社会经济迅猛发展,推动信息化建设进程加快,对软件的需求也迅速增长,但目前软件生产力却较为低下,原因多种多样。而通常将软件开发所面临的问题称为软件危机,它是指在软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有的软件都不同程度地存在这些问题。
概括地说,软件开发目前面临的问题主要包含下述两方面:
(1)如何开发软件,以满足对软件日益增长的需求;
(2)如何维护数量不断膨胀的已有软件。
问题(1),主要包括如何提高软件开发效率以及产品质量等问题。
问题(2),主要包括如何兼顾遗留系统以及遗留系统治理等问题。
1.2传统软件开发的生产能力
传统的软件开发不具备工业化生产能力,而工业化生产被认为是产业工程化、工业化的必由之路。分析传统工业及计算机硬件产业成功的模式可以发现,这些工业的发展模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装)【1】。软件产业要发展并形成规模经济,标准化的构件生产与组装是关键因素。构件组装(Component Composition)是提高软件开发效率与产品质量的有效途径。
近年来,构件组装取得长足发展,但目前构件组装的研究主要集中在软件体系结构SA(Software Architecture)与构件组装机制上,对于如何从高层的构件组装模型产生完整的程序代码尚没有系统化的指导方法。
1.3传统软件开发是预测型的
传统的软件开发是预测型的,分析、设计与实现分开进行,在分析、设计阶段制定详细的方案以指导后期的实现,试图减少和控制开发后期变更发生的可能,但在开发后期往往会变更分析、设计阶段制定的详细方案,而变更一旦产生,则需要重新制定或修改分析、设计方案,进而修改实现、回归测试等,开发效率与产品质量都无法得到有效的保证。
这种传统的、预测型的软件开发方法无法解决开发中经常发生变更的难题。
1.4 MDA存在的问题
模型驱动架构MDA(Model Driven Architecture)通过解耦描述业务功能的平台无关模型PIM(PlatformIndependent Model)与技术实现的平台相关模型PSM(Platform Specific Model),使得因技术变化而产生的对系统开发的影响减少,在一定程度上提高了开发效率,但MDA在实际应用中存在诸多问题。
1.4.1 UML特定领域建模的局限性
作为MDA的核心技术之一,统一建模语言UML(Unified Modeling Language),已逐渐成为软件开发中不可缺少的分析、设计工具,但随着应用的深入,作为一种通用的建模语言,UML已逐渐显现出无法满足特定领域的个性化建模问题,如工作流、数据仓库、软件过程、工艺流程等领域都需要专门的建模工具,在这些特定领域,相比较使用UML,专门的建模工具由于使用领域专有概念,其效率要高得多。
1.4.2 UML模型与代码“两边维护”
面向对象的软件开发方法的成功应用表明,在软件开发的各个阶段应尽量使用统一概念与描述方法,减少开发阶段间的语义断层,实现各开发阶段的平滑过渡。但从UML模型到程序代码的转换存在严重断层,因为UML通常只生成框架代码,需要开发人员手动添加具体的业务处理代码,由于这个阶段的开发人员通常是水平不高的程序员,很难将UML模型正确的翻译成程序代码,造成知识在开发阶段间传递转换时丢失,更导致UML模型与代码的“两边维护”,即UML模型与程序代码分别维护并保持同步,严重影响开发效率以及最终产品的质量。
上述均表明,通用建模语言在特定领域建模及代码生成方面都存在局限性。
1.5 DSM由MDA发展而来
近年来,针对MDA存在的问题,出现了特定领域建模DSM(Domain-Specific Modeling),并取得了一定的发展。DSM通过特定领域构件库、特定领域语言DSL(Domain-Specific Language)及DSL编辑器以及特定领域代码生成器自动生成100%的程序代码,大大提高了软件开发效率与产品质量。
DSM生成程序代码的快速性使得传统的预测型开发方法转变为敏捷的、适应型开发方法,用户在开发的分析、设计阶段即可看到系统外观并可初步试用系统功能,从而有助于获取并实现用户的真正需求,降低开发中的变更发生的机率。
1.6构件组装与DSM的结合
抽象程度决定着软件生产力【2】,但单独的建模语言对提高软件生产力的帮助并不明显。DSM强调生成100%的程序代码,期望通过积累形成新的程序语言,从根本上提高软件生产力。
DSL(模型)、DSL编辑器(建模工具)、代码生成(代码模板)分别通过符号化、图形化、模板化三个过程实现了抽象程度的提高。
对于构件组装来说,由于代码级构件无法直接在接口处显式定义组装【4】,所以构件组装模型是实现构件组装显式定义的辅助、也是必需的手段。
构件组装与DSM存在必然且完美的结合。借助DSM可较好的解决构件组装目前面临的“如何从高层的构件组装模型产生完整的程序代码”的问题。
1.7构件组装与SA及SF
软件架构SA(Software Architecture)为构件组装提供了一种自顶向下的系统化指导方法,但它同时还提供代码模板制作的基础,样例代码(Sample Code)。要实现生成100%的程序代码,实现从高层的构件组装模型产生完整的程序代码,必须参照完整的样例代码制作代码模板,即对样例代码整体模板化。
样例代码是面向业务、以SA为指导、以软件框架SF(Software Framework)为基础建立的完整可运行的程序代码。SF通常指系统底层API(Application Programming Interface)。
1.8构件组装与分形理论
分形理论(Fractal Theory)是研究非线性科学的前沿理论之一,是研究事物复杂性、从有限认识无限的特殊规律的学科,它反映了自然界中广泛存在的一类事物的基本属性:局部与局部、局部与整体在形态、功能、信息、时间与空间等方面具有统计意义上的自相似性。
构件是系统构成成分的标准形态,组装是构件演化的原则与方式,以及自底向上的系统构建方法。组装产生的构件又会被作为新的构件进行新的组装,所以,构件组装中存在着分形元,即具备组装特性的构件。构件在不同粒度、不同层次上均具有同样形态,即组装特性。
分形理论可作为构件组装的数学基础。
1.9本文的研究意义
构件组装是提高软件开发效率与产品质量的有效途径,但对于如何从高层的构件组装模型产生完整的程序代码尚没有系统化的指导方法。MDA使得因技术变化而产生的对系统开发的影响一定程度上减少,但在特定领域建模以及代码生成方面存在局限性。
本文通过研究发现,模型是实现构件组装显式定义的辅助、也是必需的手段,而DSM强调生成100%的程序代码,构件组装与DSM存在必然且完美的结合。借助DSM可较好的解决构件组装目前面临的“如何从高层的构件组装模型产生完整的程序代码”的问题,从而使得构件组装以及特定领域建模等相关技术在实际的软件开发中可以得到顺利运用,产生实效。
1.10本文的主要工作
本文的主要工作如下所示:
(1)提供了一种转变传统的、预测型的软件开发方法为敏捷的、适应型的软件开发方法的相关理论以及技术上的探索,并提出了相关实现方法。深入研究了构件组装相关理论及其数学基础、SOA相关技术标准、OSGi相关技术标准、模型驱动相关技术标准、代码生成相关概念与技术以及领域工程相关理论。
(2)重点分析并揭示了构件组装的本质,以及构件组装的数学基础,分形理论,并提出了一种普适性的构件组装机制,建立起了构件与连接件的元模型。
(3)提出了借助DSM来解决构件组装目前面临的“如何从高层的构件组装模型产生完整的程序代码”的问题,并重点总结、归纳了DSM的整体过程。
(4)提出以样例代码整体模板化来实现DSM生成100%的程序代码的方法,提出基于SA与SF创建覆盖不同业务类型的样例代码的方法与原则,提出根据特定领域元模型将样例代码制作成代码模板的方法与原则。
(5)建立起一个支持构件组装的开发环境,MyWebFw。
1.11本文的组织结构
本文的内容共分为六章,组织结构以及各章内容安排如下:
第一章 引言
本章主要介绍了本文研究的背景、相关理论与技术的基本概念以及本文的研究意义和主要工作,包括软件开发目前面临的问题,构件、构件组装、MDA、DSM、SA、SF等基本概念,MDA的局限性,DSM的先进性,以及构件组装的研究现状等,同时对本文的内容与组织结构做了详细的说明。
第二章 相关理论与技术
本章主要介绍本文研究的相关理论与技术,包括构件组装相关理论、SOA相关技术标准、OSGi相关技术标准、模型驱动相关技术标准、代码生成相关概念与技术以及领域工程相关理论,这些理论与技术构成了本文研究的基础。
第三章 特定领域建模与代码生成
本章首先归纳总结了创建特定领域元模型及其实现的方法与原则,介绍了使用GMF通过特定领域元模型快速定制生成特定领域建模工具的过程,并提出基于SA与SF创建覆盖不同业务类型的样例代码的方法与原则,然后总结归纳了特定领域建模与代码生成的整体过程,最后提出根据特定领域元模型将样例代码制作成代码模板的方法与原则,并介绍了通用代码生成引擎的组成部分以及代码生成的过程。本章提出的特定领域建模与代码生成的方法,可生成100%的程序代码,是提高软件开发效率与产品质量的有效途径。
第四章 模型驱动的构件组装
本章提出一种普适性的构件组装机制,建立起构件与连接件元模型,并对它们的性质进行了总结归纳,在此基础上建立起构件与连接件元模型的实现。基于DSM的构件组装,实现了从高层的构件组装建模到程序代码的完整映射。
第五章 支持构件组装的开发环境
本章以上述相关理论与技术研究为基础,实现了一个支持构件组装的开发环境,MyWebFw,并详细说明了MyWebFw实现的指导思想、环境构成、关键技术以及开发流程等内容。MyWebFw是基于DSM的支持构件组装的开发环境,在实际应用中,可明显的提高软件开发效率与产品质量。
第六章 总结与展望