对领域工程思想的体会(第一辑)

来源:互联网 发布:网络通的 无法共享文件 编辑:程序博客网 时间:2024/06/13 21:36

        最近看了一些关于领域特征建模的文章,对领域工程思想有了一点体会。

        国内对领域工程研究比较深入的是北大杨芙清院士及其门下的学者。现在看到的比较多的是梅宏教授的文章。记得我读硕士的时候,有一门软件体系结构课程,就是围绕梅宏教授在软件学报上的一篇文章展开的。

        领域工程思想的最终目的是解决“软件危机”,解决途径就是复用。领域工程就是围绕如何提高软件复用度而开展的研究(当然,这只是我对目前所接触到的领域工程思想的认识,可能存在偏差)。

        要了解领域工程,首先要了解领域的概念。

        领域工程所说的领域与我们对领域的一般理解不同,一般意义上的领域大多是讲的行业领域,比如教育、医疗等等。而领域工程所说的领域偏向于功能领域或者技术领域,目前比较统一的说法是:领域是一组具有相似软件需求的应用系统所覆盖的功能区域。

        前面提到,领域工程是为了提高软件的复用度。怎么提高呢?当然是把领域内共性的东西识别、提取出来,变成可以复用的软件资产。所以,领域工程思想的实施,就是识别领域内共性特征,并对其进行提取和固化的过程。

        怎么识别并利用领域内的共性特征?

 

        第一步工作就是领域分析(Domain Analysis)。领域分析就是识别领域的共性和个性(可变)特征,建立领域分析模型。这个模型可以是图形化表示的,也可以是其他形式表示的。我在梅宏教授的一个讲义里面也曾经看到,梅老师把领域分析的产物称之为领域需求模型(Domain Request Model DRM)。比如我们要做一辆汽车,那么我们可以对汽车进行分析,建立一个汽车的DRM。这个汽车DRM描述了一辆汽车基本特征,包括共性的和可变的。

        第二步工作就是在DRM的基础上进行领域设计(Domain Design)。领域设计的产物是领域软件共同具有的架构。还以上面的汽车为例,对汽车进行领域设计,产生的就是汽车的共同架构,比如:发动机、变速器、车轮、底盘、车厢、转向系统,发动机的动力通过变速器和其他传动装置传递到车轮。洗衣机的架构肯定不能在制造汽车的时候使用。领域设计的产物叫做(Domain-specific software architecture DSSA).

        第三步工作就是在DSSA的基础上去识别和提取可以在领域内复用的软件资产。继续以汽车为例,通过对汽车进行领域设计,我们可以识别到:发动机、变速器、车轮都是可以复用的,我们可以制定一个有关这些零部件的标准,把这些零部件先生产出来,而不必等生产每一辆汽车的时候临时去制造他们。这些通过领域工程识别并且生产出来的可复用的软件资产可以被称为领域构件。

 

        之所以拿汽车作为例子,一方面是我个人对汽车比较感兴趣,另一方面也是因为如果用软件作为例子,比较难说明白。

 

        那么以上那三步工作,有哪些是可以在具体的应用开发过程中进行复用的呢?三步都可以!

        首先DRM,在我们进行具体应用的需求分析的时候,可以以DRM为基础进行裁剪和补充。就好比我们有了一个一般的轿车的模型以后,可以在这个基础上添加一些豪华装置的需求,变成一辆具体的豪华轿车,也可以在这个基础上减去一些舒适性的东西,变成一辆经济型轿车。

        其次DSSA,我们具体的应用设计可以根据DSSA进行裁剪或补充。道理与DRM的复用是相同的。

        最后是领域构件,领域构件的复用不用说了,大家都应该明白。

 

 

        试想一下,如果可以保证这些领域构件的质量,是不是对整个应用系统的质量也会有很大的促进呢?

 

 

        以上是一点点体验,还有待继续深入的学习和研究。