基于耦合度的分布问题研究
【关键词】用户分布,功能分布,数据分布,耦合度,领域知识,自动构造
随着Client/Server结构应用系统复杂和扩大,其数据、功能和用户的分布问题变得日益突出。合理有效地设计MIS系统模型是MIS系统能否有效发挥效率的关键。通常处理这些问题都是软件开发人员根据其以往的开发经验,设计的好坏受人为因素影响很大,且方案因人而异。本文提出了基于耦合度的分布过程解决方案,并在此基础上实现了一个分布的自动生成工具。
一、 分布问题
当我们根据系统的需求信息来设计基于三层Client/Server模型的MIS系统的时候,一个很重要的工作就是需要确定MIS系统由多少个客户端、应用程序服务器和数据库服务器组成,用户、功能和数据是如何分布在客户端、应用程序服务器和数据库服务器上的。
对于一个MIS系统来说,我们都可以将它抽象分解为用户集 U={u1,u2,..,ul}、功能集F={f1,f2,..,fm}和数据集T={t1,t2,..,tn}。用户通过调用功能集中的一些功能模块,来存取数据集中的数据表。我们可以用图1说明它们之间的关系:
本文所要讨论的分布问题包括用户分布(User Distribution)、功能分布(Function Distribution)和数据分布(Data Distribution)。用户分布指的是根据系统的需求,决定如何在客户端各个平台上分配用户,即每个客户端允许哪些用户使用。功能分布也称处理(process)分布、事务(business)分布、逻辑(logic)分布,指的是如何在应用程序服务器各个平台上分配功能,即决定哪些功能适合在哪些平台上完成。数据分布的粒度大小可以是数据库、数据表、行、列等,我们这里讨论的数据分布逻辑单元是数据表(以下简称数据),数据分布指的是如何在数据库服务器各个平台上分配数据,即如何在服务器上组织这些数据。
二、耦合度的计算
在分布式MIS系统中,之所以有不同的客户端、应用程序服务器和数据库服务器,是因为用户之间、功能之间和数据之间也存在着一种类似的不同“吸引力”。我们将这种“吸引力”取名为耦合度(Coupling Degree)。我们将两个用户分在同一个客户端的可能性称之为用户耦合度,两个功能分在同一个应用程序服务器的可能性称之为功能耦合度,两个数据分在同一个数据库服务器的可能性称之为数据表耦合度。这里讨论耦合度,是因为耦合度是分布式MIS系统网络节点划分的依据。耦合度是不同种因素的函数。
耦合度=f(因素1,因素2,…,因素n)
用户耦合度 用户之间所属关系、距离和特殊要求等因素都可能影响用户耦合度大小。企业的部门和职务之间的所属关系构成一棵部门职务关系树或森林,叶结点为用户。直接同属一个部门的两个用户肯定比间接同属一个部门的两个用户分在同一个客户端的可能性要大。我们将两个用户到它们最近共同祖先的最大距离定义为两个用户之间的疏远度,当两个用户分属于两棵关系树时,它们的疏远度为¥ 。如图2所示的部门职务关系树中,用户u1(职务1)和u4(职务3)之间的疏远度为2,用户u1和u3(部门6)之间的疏远度为3 。疏远度越大其耦合度越小,我们给不同的疏远度以不同的权值,这样就可以折算为耦合度值。
两个用户相距400米以内肯定比两个用户相距1公里以上分在同一个客户端可能性要大。两个用户相距越近,其耦合度越大,用户相距远近给予不同的权值,以折算为耦合度值。针对企业的一些特殊要求,我们用程度词来说明两个用户分在同一个客户端的可能性,常见的程度词如必须、尽可能、不可能、不能等等,我们给不同的程度词以不同的权值,以折算为耦合度值。
功能耦合度 很明显,调用功能1的所有用户和调用功能2的所有用户之间的关系越紧密,这两个功能分在同一应用程序服务器的可能性就越大。这种用户调用功能的关系对功能耦合度影响较大,但其它因素也影响功能耦合度大小。
数据耦合度 功能存取数据的关系对数据耦合度影响较大。其它影响数据耦合度大小的因素包括数据库系统的特殊要求、MIS系统要求等。
三、 分布过程
用户、功能和数据分布主要是确立Client/Server系统结构。我们这里主要讨论基于耦合度的用户、功能和数据划分过程,用户、功能和数据耦合度是我们进行网络节点划分的依据。用户、功能、数据分布需要解决两个问题:1)MIS系统由多少个网络节点组成。2)用户、功能、数据是如何在这些网络节点上分配的。这两个问题的解决又是统一的,即如何进行网络节点的划分。下面我们以用户分布为例,来说明分布过程的具体步骤。
设企业的用户集合U={u1,u2,…um},Lu为客户端分组划分的用户耦合度下限。我们的目标是找出一个最小个数客户端集合C={C1, C2, C3,…, Ck},客户端C1, C2, C3,…, Ckí U,满足(1) C1,+C2+ C3+…+Ck =U。(2)任意Ci∈ C,Cj∈C,i≠j 有Ci∩Cj=φ。(3)若RF(ui,uj)>=Lu,则用户ui,uj 就在同一客户端。
具体步骤如下:
第一步,计算用户之间耦合度。这里RFd (ui,uj) 、RFc (ui,uj) 、RFs (ui,uj)分别表示用户ui和