更新时间:2022-10-27 11:27
领域工程是在构造一个特定领域内的系统或者系统的某些部分时,以可重用方面的形式(也就是说,可重用的工作产物),收集、组织并保存过去的经验的活动,以及在构造新系统时,提供一种充分的方法来重用这些资源(也就是说,获取、限定、改造、装配等等)。
作为软件复用的核心技术之一。领域工程的主要目的是实现对特定领域中可复用成分的分析、生产和管理。领域工程的萌芽可以追溯到Parnas在1976年提出的“程序家族”(ProgramFamily)的概念。其基本思想是把一组具有显著共性的程序作为一个整体(或家族)并对其共性进行分析;其动机则是为了简化一组相似程序的开发和维护问题。后来,Neighbors在其博士论文中明确提出了“领域分析”的概念,用来指代“识别特定问题域中一组相似系统所包含的对象和操作的活动”。他还对领域分析和(软件)系统分析这两种活动进行了对比,提出了“领域分析员”的概念,并分析了在软件复用活动中领域分析的必要性和可行性。
对领域工程的研究和实施主要基于以下两个基本原则:
1.可复用信息的领域特定性
可复用性不是信息的一种孤立的属性,它依赖于特定的问题和特定问题的解决方法,即我们说某信息具有可复用性,是指当使用特定的方法解决特定的问题时,它是可复用的。基于这一基本认识,在识别、获取和表示可复用信息时,它采用面向领域的策略。
2.问题领域的内聚性和稳定性
人们长期以来观察的结果表明,在现实世界特定的领域中,问题的解决办法具有充分的内聚性和稳定性,这是获得和表示这些知识的前提和基础。基于此,使得人们可以通过一组有限的、相对较少的可复用信息来把握解决大量问题的知识。领域的稳定性,使得获取和表示这些信息所付出的代价,可以通过在一段较长的时间内多次复用它们来得到补偿。
从领域工程和应用工程的关系来看,领域工程的实施还需要遵循以下原则:
(1)来源于应用工程,服务于应用工程。
(2)将隐式的知识显式地表达出来。
(3)建立和维护可追踪性。
(4)过程的迭代性和逐渐精化性。
领域工程过程的5个阶段分别如l下。
(1)定义领域范围:本阶段的重点是确定什么在感兴趣的领域中以及本过程到何时结束。这个阶段的一个主要输出是领域中的应用需要满足的一系列用户的需求。
(2)定义领域特定的元素:本阶段的目标是编译领域字典和领域术语的同义词词典。存领域工程过程的前一个阶段产生的商层块图将被增加更多的细节,特别是识别领域中应用间的共同性和差异性。
(3)定义领域特定的设计和实现需求约束:本阶段的目标是描述解空间有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,要记录对处理这螳问题时产生的所有问题的讨论。
(4)定义领域模型和构架:本阶段的目标是产生一般的构架,并说明构成它们的模块或构件的语法和语义。
(5)产生、搜集可复用产品:本阶段的目标是为DSSA增加构件使得它可以被用来产生问题域中的新应用。
领域工程由3个过程组成:领域分析、领域设计和领域实现,而领域模型、DSSA和领域构件是它们相应的产品,即可复用资产。可复用资产由领域工程团队负责生产、维护和分类,具体包括:
1、领域分析。这个任务在于通过定义应用领域、分析应用领域来确定是否值得为该领域的应用系统进行定性、广泛、深入地分析,然后对该领域的这些应用系统的相同点和可变点进行分类,以便确定在这个领域进行开发所需的开销。
2、领域设计。如果领域分析阶段结束,则领域工程团队应该开始构建支持领域应用系统开发所需的复用基础设施。这包括通用体系结构、结构上的共同点,以及可复用资产的规格说明。该规格说明的重点是规定资产如何匹配体系结构,如何通过参数化适应在领域分析阶段确定的可变点的协议。
3、资产获取。这个阶段包括针对复用的开发,可能还包括某些可复用资产,诸如COTS产品的外部采购。复用的开发不同于传统的软件开发,这是因为其需要满足通用性、可靠性和可维护性。可见复用的开发成本要显著增加。
4、资产分类。资产分类是指数据库的管理,包括分类和存储可复用资产,以便应用工程团队检索和评估等。
5、资产维护。资产维护是指与配置管理和版本控制任务结合在一起,主要是构件的更正性维护和完善性维护,使用这些构件的应用系统可能也会受到影响,甚至需要修改。