首页 理论教育软件工程中的领域工程及其重要性

软件工程中的领域工程及其重要性

【摘要】:“领域”在软件工程中的概念是一组需求相近或相似的应用系统即系统族所覆盖的功能区域。这些特征为进行领域分析研究和实践工作提供了理论基础。领域工程包括领域分析、领域设计、领域实现三个主要过程组件。领域模型明确表示了领域内软件系统的共性与差异性属性,包括属性的意义和差异性属性之间的依赖关系等。领域工程对软件复用的重要贡献就是建立了特征模型,它凝聚了一系列的合法特征组合,指导后续的应用工程。

“领域”(domain)在软件工程中的概念是一组需求相近或相似的应用系统即系统族所覆盖的功能区域。在软件复用中,领域主要有两种类型,即横向领域和纵向领域。横向领域表示根据软件部件内部功能性类别进行组织的领域,如标准函数库、工作流系统、元模型引擎。纵向领域是根据软件系统类别进行组织的领域,如学生管理系统、报表管理系统、图书管理系统。两种领域内的信息均具有可复用信息的领域特定性,具体体现在可复用性依赖于特定问题及其解决方法而存在,使我们必须面向特定领域进行对可复用信息的识别、获取和表示工作。此外,两种领域都具有问题领域的内聚性和稳定性,前者表明了解决整个领域问题的知识可从有限的可复用信息中获取,后者表示获取的信息可以在很长一段时间发挥作用。这些特征为进行领域分析研究和实践工作提供了理论基础。

领域工程(domain engineering)是对系统族进行复用的基础,它的目的是利用可重用资源快速、高质量、低成本地开发软件,涵盖了所有建立可复用软件构件的活动。领域工程包括领域分析、领域设计、领域实现三个主要过程组件。

(1)领域分析的含义是“识别、捕获和组织特定领域中一类相似系统内对象、操作等可复用信息的过程”,其目的是确定研究领域的范围,定义相关可复用的领域信息,收集领域信息以整合成一个一致的领域模型(domain model)。领域模型明确表示了领域内软件系统的共性与差异性属性,包括属性的意义和差异性属性之间的依赖关系等。领域模型主要包括领域定义、特征模型等组件。领域定义是指通过分析领域中目前已有的软件系统及领域外的软件系统,根据领域中软件包含或不包含的特性来定义领域的范围,描述领域的特性。特征模型是指对同一领域的软件系统定义可复用和可配置的业务需求。在特征模型中,需求被称为特征(feature)。领域工程对软件复用的重要贡献就是建立了特征模型,它凝聚了一系列的合法特征组合,指导后续的应用工程。

(2)领域设计的目的是设计开发用于领域中系统族的架构并指定制作计划。软件架构描述了软件系统中的子系统和组件,以及它们之间的交互、组合模式,此外还包括这些模式的限制信息。软件架构的实际目的就是对需求进行合理的解释,即通过什么方式或哪一部分的功能满足了所提出的需求。目前常用的软件架构模式包括MVC模式(model-view-controller)、微内核模式(microkernel pattern)、代理模式(broker pattern)、黑板模式(blackboard pattern)、管道过滤器模式(pipes and filters pattern)、层模式(layer pattern)等。在实际的架构设计中,通常会采用多种模式组合,根据系统不同部分的需要采取合适的架构模式。领域设计的第二个目标是得出生产计划,描述系统从架构和组件中开发出来的具体细节。组装过程有三种模式:手工组装、半自动组装和自动组装。产生式编程的目标是达到真正的自动组装,用户通过需求选取构件,在一系列工具的支持下自动完成软件系统的开发。

(3)领域实现是使用相关技术对架构、组件等可重用资源进行实现,并根据生产计划完成软件系统的最终开发。(www.chuimin.cn)

这三个阶段在实际应用时采用逐步求精的思想,随时根据需求的变化对已完成的成果进行修改和完善。

正如前文所述,领域分析是进行领域工程的基础,主要目标是获得特征模型。领域信息可从领域系统内已有的系统、系统的使用手册、客户市场的调研结果以及未来系统有关的已知需求中获取,也可询问相关的领域专家。利用可重用信息对领域进行范围的界定,定义领域术语,选择合适的建模方法对领域进行建模。梅宏院士团队提出了一种面向特征的领域建模方法FODM。该建模方法如图3-4所示,重点考虑领域中的服务、功能和行为特点等特征,对应地开展服务分析活动、功能分析活动、行为特点分析活动,与此同时,并发地进行领域术语分析、共性变化性分析、用例分析、质量需求分析,整个过程不断进行回溯求精,最终获得特征模型。本文后续的工作就以这种建模方法为基础。

图3-4 FODM建模方法