第 l5卷 第 10期
1994年 lo月
,
小 型 微 型 计 算 机 系 统
M INI—M ICRo SYsTEM S
vo1.15.No.10
Oct.,1994
一
支持软件进化的界面结构
文贵华 丁月华
(华南 jj; i_柳所.广’H 5lo641)
弋
●- - I _ _- 。 — ’ 一 ● l
(南京航空航天太学计算机菜.21001~)
摘 要 本文提出j支特软件进化的界面结构,它能在不修改源程序的基础上实现界
面的动态演变。此结构按多又树组织,并提供相应的方法对此多又树 实施 实时管理,
这为软件的自适应、自我进化提供 7重要基础。同时它也为开放砷豪消息界面的进化
提供 1恰当的支特。
关键词量 进化-多叉树,开放对象- 隧
引 言
随着应用、特别是工程应用的逐渐深入,软件生成越来越复杂。一些复杂的工程数据要
求新的数据库能表达它们,并支持工程设计的反复、迭代和演化的动态过程 ,也就是支持动
态模式和临时数据库的使用,长的生成周期和适应于各种应用环境以及程序设计语言接口机
制强烈要求新的软件生成方法和数据模型“ 。工程设计过程中多版本共存和庞大的软件如何
高效率地去适应各种应用环境是另一个实在的问题。为此怍者提出了开放对象模型“。 ,以
使软件具有自适应、自我进化的能力。耍做到这一步,用户界面首先必须是开放的,允许对系
统功能实簏动态演变而无须惨改源程序和重新编译。现在的软件还未做到这一步,至多允许对
系统 已有的功能实施裁剪,但无法让用户加入任意的系统尚不具备的功能,因为它们没有提供
相应的接El去支持其它程序设计语言所编制的程序,从而无法实现系统的自我更新与进化。
尽管人机界面的研究十分活跃,并正向着图像化、智能化等方向发展,力图通过实例、
约束和推理去方便用户构造最好的界面 “ ,但它们仅仅是为用户构造尽可能好的界面提
供尽可能方便灵活的工具,而依然不能使构造好的软件具有自适应、自我进化的能力,因此
本文强调的不是如何帮助用户构造一个好的界面,而是如何使用户掏造好的软件具有自我进
化的能力。
2 设计思想
界面主要由菜单构成,菜单在交互式等软件生成中具有广泛的应用,很多系统软件不仅
收稿日期;1994--04--22.文量华,硬士 .主要研究救据库系统.人工智能和数理逻辑.丁旯革,高工 .主要占L事 控摹
坑·通讯菜坑的计算机应用与开发-#钧海,教授,主蔓从事数据库,知诅库系统·人工智胡方向的研究与教学工 作.
i
维普资讯 〔汪)
J
第 15卷第 10期
19臼年 10 月
小型磁型计算机系统
MlNI - MICRO SYSTEMS
. No‘ 10
Oct. ~1994 •
支持软件进化的界E结构
华山目川到了
J膀-a
华一情贵一睛文-E由用蝠 主主主ν 气节!
《南京戴室.天大学廿冀鲁L草. 210(16)
A 擒要本文提出?支持叫化约界面结构,它能在不修改源程序剑基磁主实现界
画传动态演变,此结构按J叉树担织,并提4是非自主主锦才法对此J 叉树实施实砖管理,
这为就停始自i!豆、自我进化,提供 7 重要基础,用对它也为开放对象消息J(..画约进化
提供丁恰当甜支持.
关键谓界窟.进化,多叉树,开放对象,数黯声:
-
战部 其主做~J
1 引言
随着应用电特别是工程应用的逐渐深入,软件生成越来越复杂.一些复杂的工程数据要
求新约数据库能表达官衍,并支持工程设计的反复、迭代和演化的动态过程.也就是支持动
态模式和临对数据库的使用. 1是部生成周期和适应予各神应用环捷以及程序设汁语言接口机
制强烈要求新的软件生成方法和数据模型CG. 工程设计过程中多极本共荐和庞大约软件如何
高效率地去适应各种应用环境是另一个实在的问题,为此律者提出了开放对象模型CI.缸,以
便软件具有自适应、窑我进化的能力.要做到这一步,用户界回首先必须是开放的,允许对系
统功能实施动态演变而无须修改源程序和重新编译.现在的软件还未做到这一步,至多允许对
系统已有的功能实施裁剪,但无法让用户加入任意约系统商不真备的功能,因为它们没有提供
相应约接口去支持其官程序设计语言所编制的程序,从而无法实现系统约自我更新与进化.
尽管人」豆豆的研究十分活跃,并正向着图像化、智能化等方向发展,为茵通过实僻、
约束和推理去方便m户梅造最好的界面(3....5.飞侄宫衍仅仅是为用户梅造尽jjJ能好的界îìii提
供尽可能方便灵活约工具,而依然不能使构造好的软件具有自适应、自我造化的能力,因此
本文强调的不是如何帮助用户构造一个好的界窟,而是如何使用户梅造好的软件具有自我进
化的能力.
z 设计患翠
界富主要由菜单掏成,菜单在交互式等软件生成中具有广泛部应用,很多系统软件不仅
植摘E 绍~ 1994一副-22. 文量华蠢事士,主要研究数握库革绽, λ工智能制数理歪幌.T月华.高工,主要丛事测控革
在.退1乳罩镜始计算愿与资1. 事本精海z 氨主置,主要丛事结提库/董Pl且库罩挠,人工曹篇穿起魏研究与墨学工悻.
lO期 丈贵华等 :支持软件进化的界面结构
提供一套系统操作菜单,而且还提供一些菜单生成工具 ,允许用户根据 自己的需要生成 自己
的应用级控制系统——实现父、子菜单之间的链接,实现菜单项与对应的可执行程序之间的
链接,这种菜单与程序相分离是实现软件开放、进化的必经之路。但正如前面提到的那样,
现在的系统软件仅仅是为旦户界面的生成提供尽可能方便的工具.而不能使生成后的软件具
有可进化性 ,每当要改变系统软件的功能时必须重新编译与链接 .因而不能解决诸如面向对
象数据库中的滞后联编之类的问题。但是菜单与程序相分离的思想是先进的,值得继承的。
在此基础上,作者将利用动态链接与激活技术去解决以上所面临的诸如滞后联编等之类的问
题。 。由于是 由软件本身提供的链接器将菜单与可执行程序(*.obj目标代码)动态相连 .
*.obj日标代码可由其它的编辑器和编译器实现,因而每当增加或删除系统功能时不必重新
编译与链接整个系统,它基本上实现了系统的低级演变
作为可进化软件系统的最初界面.它并不与当前最先进的界面生成工具相矛盾 ,实质上
它们是协 调一致的,比如为 让用 户对界面感到直 观、生动,可为 每个 菜单项增设 图标
(ICoN),井且它们是开放的,可由用户交互式设置。由于我们是把界面放于库中保存的,在
系统启动时装入内存,在系统退出时再将编辑修改后的界面保存入库中,因而始终能保持界
面动态编辑修改之后的状态,而且整个界面按多叉树组织,在任何时候系统都监视这棵树 ,
用户可交互式地动态调整这棵树,比如插入一个菜单项等 ,它们都能及时在屏幕上反映出
来,并且一旦插入就与其它的菜单项没有区别。
3 基本数据结构
菜单是按多叉树组织的 ,它涉及两个最基本的数据结构 Menu和 Menu Head.系统主要
提供对它们操纵的基本方法如对菜单项的设置、显示 、迭取和掩模等,但最有特色的是编辑 、
装载和保存。
3,1 基本数据结构
菜单结构中主要包括菜单标识,菜单名称.菜单子项内容和位置等信息.另一个最重要
的成分是指向相应方法函数的指针或方法名称。
Menu的结构定义如下:
ly~ d~f 8TTUC~M c
int Iopx}
LMt|opyI
[nt boDxI
int hopyI
char ∞ n[10)I
t{tle[20)I
inttx
●rn tyl
;nt attrlcolor~
;nt baekcolor
char metl-odCZOJ
void ’BubmenuI
MI~fllJ tI
}l
∥ 矩形座标
∥ 图标名
∥ 菜单项标题
∥ 菜单项标题的起始座标
∥ 菜单】页标题颜色
∥ 矩形颤色即菜单项背景色
∥ 菜单项对应的方溘或函教名
∥ 维向谖菜单项的于菜单
,,指向该菜单项的同辈菜单项
维普资讯
10 毒草 文贵华等 E 支持软件进化的界窟结梅 Z5
提供一套系统操作菜单,商豆还提供一些菜单生成工具,允许用户根据自己的需要生成窑己
部应用级控制系统一-实现父、子菜单之间的链续,实现菜单项与对应的可执行程序之翔的
链接,这种菜单与程序招分离是实现软件开放、进化的必经之路.但正如前面提到的那棒,
现在的系统软件仅仅是为且主皇军的生成提供尽可能方便的工具,商不能使生成后的软件具
有可进化性,每当要改变系统软件的功能时必须重新编译与链接,因而不能解决诸如洒向对
象数据库中的滞后联编之类的问题.但是菜单与程序相分离的思想是先进的,值得撞承的.
在此基础上,作者将利用动态链接与激活技术去解决以上所茵i隘的诸如滞后联编等之类的问
题臼飞由于是囱软件本身提供部链接器将菜单与可执行程序〈岳 .obj 目标代码〉动态招连,
卦 .obj l'3标代码可由其它的编草草器租编译器实现,因而每当增加或删除系统功能对不必重新
编译与链接整个系统,它基本上实现了系统的低级演变.
作为可进化软件系统的最初界茵 F 它并不与当前最先进的界国生成工具相矛盾,实质上
它们是协调一致的,比如为让用户对界离感到j 直观、生动,可为每个菜单项增设图标
(lcom,并且宫们是开放的,可由用户交互式设置.由于我们是把界茵放于库中保存的,在
系统启动时装入内存,在系统退出时再将编辑修改后泊异面保存入库中,困lIii始终能保持界
茵动态编辑修改之后的状态.商且整个界面接多叉树组织,在任何时候系统都监视这棵树,
用户可交互式地动态满整这棵树,比如插入一个菜单项等,它们都能及时在屏幕上反挟出
来,并且一旦插入就与其它的菜单项没有区别.
3 基本数据结掏
菜单是按多叉树组织的,它涉及两个最基本的数据结梅 Menu 和 Menu Head. 系统主要
提供对它们操纵创基本方法如对菜单项的设置、显示、迭取和掩琪等,但是有特色约是编辑、
装载和保存.
3 童基本数据结构
菜单结构中主要包括菜单标识,菜单名称,菜单子项内容和位置等信息.另一个最重要
刻成分是指向招应方法远数的指针或方法名称,
Menu 的结构定义如下:
町peòef struct Men组
int IOPXI 1/ 雹形座挥
'"τlopYJ
int boPXF
'"τbopy~
11m掠名
F 菜单项标111
chat' icon(I()),
cha誓言itle(2{)) ,
mtτ宽3 F 菜拳暖标题结起始座综
mtτy.
酣町tricolo盯 I! 粟第囔标题锺也
丽. bae\colOi /1 短事颜色到菜单项青噩包
chu metl田d(. I! 菜单项时应钱方法童画数名
咽id .8ubm回国 I! 推向读菜.项给予菜第
Menu 祖阳时 II 指!每读粟.项幸亏同辈革重在项
,
一唱一十一一一一一一一-
小 型 微 型 计 算 机 系 统
这里 ICON 图标仅仅是增强形象与直观,它本身是一幅图象数据,关于它的更详尽情况
则放于库中,在显示和编辑时取出。这里仅指出它的标识名称,用于在库中检索的依据。方
法 method使得菜单与它对应的功能联系起来,当这个菜单项被选中时执行它,同图标一样
这里仅指明它的名称。关于方法的基本结构定义如下 :
typedef BIrl t Medmd Node{
ehar meth—Il丑mc(10 //'方盛名
ehar t—IypeI //'返回类型
char arg圳 mI //参戢十戢小于1l
char ar8—0ype(107 F //'参戢类型
char markl ∥ 用于标毒方法是系班提供(O),用户提供(1),在薯盘(2)或内存(3)
void 。10methI //'指向方法体
Nietl~odNode rat xI F //指向下一十方法结点
)I
所有方法组成一个链,系统根据它去澈活一个被选中菜单项所对应的方法。关于方法的
激活与管理是另一个论题 ,这里略。
Iyp Pf 4truct M enu Head
int barcolorI
int iterm ‘
int ~ounl‘
Menu t PmenuI
)I
∥ 选中时的高亮度譬色值
∥ 选中的菜单项序号
∥ 总的莱单项戢
∥ 指向莱单项
这个结构说明菜单的总体情况,起全局控制作用,不难看出,如果将 Menu中的Sub.
menu强制转换成MenuHead类型.则菜单的定义是递归的,其图示如图l。
可见它是一个枝数可变的树,称
为多叉树,其每一个树结点不再保持 ]
固定的出度,而是由一个可变的链表 /二/ I 、\
组成,树结点部分展开如图0所示。 // f \
多叉树不但保持了一般树的特 l_
点,而且具有灵活的可变性。从而使 / I \
得按此组织的界面具有动态可变性。 / I \
由于系统是按此多叉树去了解并体现 。。’’ ’‘’、
系统的全部功能,因而多叉树的演变 图1 多叉树
时刻体现着系统的演变。为了保持系统的完整性,至少矗两个结点不能删除:菜单编辑和退
,
出系统。
3 2 多叉树的特点
a.入度为零 的树结点有且仅有一个 ,称为根。其余树结点的入度为l。
b.根结点的出度大于等于2。
c.树的其它结点的出度原则上不加限制,可动态演变。
d.树的深度可动态演变。
维普资讯
26 小型辙型廿算抗系统 E由4 年
这里 ICON 图标仅仅是培强形象与直观,宫本身是一幅图象致蟹,关于它的更详尽情况
且4放手库中,在显示和编辑时取出.这里仅指出艺的禄识名称,厨子在库中徨索部依据e 方
法回ethod 使得菜单与宫对应的功能联系起来,当这个菜单项被选中时执行宫,周围标-祥
这里仅指明它树名称.关于方法的基本结梅定义如下 z
ty_1 剖,回1 Method Node {
.h町 meth_nam雹主10);
char ret 町..,
.h町 arg_ ß lJml
arg 可pe (1 0) ,
.h盯 mark ,
却oid faT * pm西h 睡
Mt!thod~od君 1.τ. ne :;
h
F 古建S
F 逗酒菜'lI
ð .It今致,扣子11
f 垂It费窒
F 用于挥意万撞是矗统提供f的,黯户提供《日,在毒盘【自黄肉事臼】
F 指向古法体
11 指冉下-今方法结iI.
所有方法组成一个链,系统根据官去激活一个被选中菜单项Øf.;:f应的方法.关于方法部
激活与管理是另一个论题,这里略.
typedef .øtruct Menu Hearl {
Ínt ba罚。lor~
阳 lteTm J
二Ut cou伺t ,
Menu 11 pn四nu ,
11 选中时部离亮蜜意色僵
11 遗中iI'J菜单项il'号
11 且萄襄单项敷
11 指向菜尊项
这个结构说嚼菜单始总体情况,起金属控骂道fI'后,不难看忠,如果将 Menu 中的 Sub
menu 强制转换成 MenuHead 类型,到菜单的定义是递归剖,其图示如图1.
可见它是一个枝辈辈可变的树,称
为多叉树,其每一个树结点不再保持
固定的自度,而是出一个可变的链表
组成,树主主点部分晨开声目图213毫示.
多叉树不但保持了一般树的特出enuHe生生斗 巳enuHe生巳J 出2生生生
点,而豆具有灵活的可变诠.从而使 、
得按比组织的界题具有动态可变性.
由于系统悬挂此多叉树去了解并体现
系统的全部功能,因而多叉树的演变 图1 多主持
时刻体现着系统的演变.为τ保持系统始完整俭,至少紊两个结点不能删除 z 菜单编辑和退
出系统.
多叉树的转点
ι 入度为零的树结点有旦仅有一个,称为根.其余树结点的入度为1.
b. 根结点的出度大于等于L
C. 树的其它结点的出度原则上不加限制,可动态演变。
d. 事苦的深度可动态演变。
.
→一→一
lO期 文贵毕等 支持软件进化的界面结柑
4 多叉树的管理
多叉树代表着整个系统功能,系统时刻 监视并操纵它以实时将系统具有的功 能告之用
户,另外系统是将它当作开放对象存储和管理的,以下是它的基本方法。
图2 多X树结点展开示范
4.1 多叉捌的线序算法
为了能随时保存演变后的多叉树 .必须把它线序化后存放在库中,线序的原则是能够重
建它。我们按深度优先线序它 ,因为深度优先具有如下的特点.
[1]任何结点的所有子树结点都直接跟在它后面.
[ml任何结点的所有子树结点都聚集在一起,中间没有插入其它结点.
[3]任何结点紧跟在它后面的结点是它的第一个子树结点.
可以看出,这个线序反映了部分信息,但还不能重建它.为了重建多叉树,应将线序结
点设计成: talt I data I rlink
其中 ltag为标志位,若为0则其无子女,否则有 I data为多叉树结点的数据域 ·rllnk为
右指针,指向该结点的第一个右兄弟.
线序算法 L|neTree(T) //T为树
设pos为全局变量,记录每一个树结点在线序L中的相对位置,初值为0
LineTree(T)
/*返回树 T的总结点数 */
[13若 T为空,则 return(O)
[2]若T无子女,则
a.输出结点node=1 0 I T.data 1 0 l
b.L[pos++]=node
c.return (1)
[3]设T有 T -.'T 个子女(K≥1),则
a.count-= LineTree(T1)+⋯ -I-LineTree(TK)
b.若 T有右 兄弟,则 rl[nk=count+1
维普资讯
到那 文贵华等事支持软件进化的界富结稽 21
4 多叉弱的管理
多叉树代表着签个系统功能,系统对墨西监模并操纵官以实时将系统具有的功能告之用
户,另外系统是将官当作开放对象存储现管理的,以下是宫的基本方法 e
. . .
医2 多叉锦结点晨开示藩
多叉树岱线序算法
为了能黯E才保存演变后约多叉树,必须把艺线序化后存放在库中,线序的原则是能惨重
建官.我们按探度优先线序宫,因为深度优先具有如下约将点.
[1]任何结点的辟有子树结点都直接跟在它后圈.
[2J任何结点的所有子树结点都聚集在一起,中院没有插入其它结点
[3] 任何结点紧跟在宫后固的结点是官的第一个子树结点.
可以看出,这个线序反烧了部分信惠,但还不能重建官.为了重建多叉瓣,应将线序结
点设计成. I Ita辜 data r1 ink
其中 Itag 为标志泣,若为8则其无子女,否则有, data 为多叉树结点约数据埠, rlink 为
右指针,指向该结点的第一个右晃弟.
线1芋算法LineTree(T) IIT 为树
设 pos 为全局变量,记录每一个树结点在线序 L 中的相对位置,初值为O
LineTree(τ〉
/骨返回树 T的总结点敖骨/
[1]若 T 为空. J)!!J returnω〉
[2] 若T 无子女,则
a. 输出结点 nodε=1 o I T. data I 0
b. L岳阳++]=node
c. return (1)
[3] 设T 有 T1 , U~ , TK 个子女(K:;;目). J!lJ
a. count-LineTree(T.)+ ".+LineTree(T.>
b. 若 T 有右兄弟,贝,i r1ink=count+ 1
小 型 微 型 计 算 机 系 统
否则 rlink=0
c.输出线序结点node=1 l !: ! l些 l
d.L[pos++]=node
e.return(count)
[4]算法结束 一
例
图3 LineTree(Root)线序化为l
t · 0 1 2 3 4 5 6 7 8 9 10 ¨ l2 13 14 15
结点 | Root A D E F L M N O G H B C 【 J K
hag, 1 l 0 0 1 0 O 0 0 0 0 0 1 0 0 0
。 ic::::::::::}U “ 。
在线序中每个结点如 Root,它的 ltag=1说明它的
下 一个紧邻 结点 A为其 第一个子女 ,然后根据 A 的
rllnk能够访问它的所有子女,这就是重建算法的基础一
‘
4.2 多叉树的重建算法
∥}\
L M N O
在线序 L中,任意结点的所有子女都由rlink连在 圈。 实例多叉树
一 起,所以很容易重建。在多叉树 T中,它的结点是一个链表,如图4所示。令 T∞表示 T结
点的第i个子女。则
ReconsTree(pos,T)+
/*从 LCpos]开始重建多叉树 T*/
I-I]若L[pos]为空,贝!f返回。
[2]令 T.data—LEpos].data。
[33若 L[pos]:ltag=0,则返回。
[4]i一0。
Is]循环做以下几步.直到 L[pos].r/ink为空。
a.分配树结点T 。 ’
b.pos++且令 T∞指向Tl。
c.ReconsTree(pos, )。
d,pos=L[pos],rlink;i++
[6]算法结束
如果要重建整棵树 ,则首先分配根结点 Root,然后调用 ReconsTree(0,Root)ll[1可。
匝E卜毋 ⋯母
! ●
图4 树结点 T的结构
除线序和重建算法外,还有其它一些管理
方法,如 ShowMenu显示 菜单,SelectMenu
选 择菜单项 ,AddMenu增加菜单项.Delete—
Menu删除菜单项等等。所有这些方法均可用
鼠标或键盘操纵.体现为修改多叉树结点的出度,修改多叉树结点的内容 ,以及剪枝等。
维普资讯
2阜 小型徽型计算机系统
否则 rlink=O
C. 输出线序结点 node=1 1 T. å.t. I rlink I
d. L[pos -t-+ J=noåe
e. r也turn (count)
[4] 算法结束
俩
离 3 LineTree(泣。ot)线序化为 s
组置. 1234561 8: 51 10 11 12 13 14 15
结点 R∞在 ADEF I. MNOGHllC JK
hag. 1 0 0 1 0 争。 000010司。
r1ink I 0 11 :3 4, 51 , 1 8: 0 10 0
i j口 14 l~ 0
在线序中每个结点主Il Root. 它的 Itag= Ii且嘿它的
下一个紧邻结点 A 为其第一个子女,然后根据 A 的
rlink 能够访问它的须有子女,这就是重建算法的基础/
多叉树的重建算法
/l\
在线j茅 L 中,任意结点的所有子女董事也 r!ink 连在 撞事实钝多叉裙
岭94年
一起,所以很容易重建.在多叉树 T 中,它的结点是一个链表,如图4g哥示.令 T.,表示 τ 结
点的第 i 个子女,那
ReconsTree(po8. T) +
/善从 L(posJ开始重建多叉树 T 替 f
[1]若 L[pos]为空.J!II返回 a
[Z] 令 T. å".=L[pos]. d. ,..
[3J 若 L[=白,到返回.
<4J i=O.
[5J 循环做以下几步,直到 L[p05J. rlink 为空@
a. 分配树结点 Tîo
b. pOS十+旦令 T"J指向 T忡
c. ReconsTree(pos. T;λ
d. pos=L[pos]. rlínk , i +十 e
[6] 算法结束
如果要重建整幌树.则曹先分配根结点 Root. 然后演用 ReconsTr白白.R∞t) IlP可。
一-干~一~ ~一一、 除线序和重建算法外,还有其它一些管理
d..b I -→~ ,-r--...-, ,-啥时'口三L:....J -L牛.:.......J - -L•....J -方法,如 ShowMenu 显示菜单. SelectMenu
E E 选择菜单项. AååMe阳增翻菜单项. Delete-
图4 钳结点 T的结梅 Menu 删除菜单项等等.所有这些方法均可用
鼠标或键盘操纵,体现为修改多叉树结点的出度,修改多叉树结点的内容,以及剪枝等.
10期 文贵华等t支持软件进化的界面结构
5 结 论
对界面按多叉树组织能时刻体现系统功能的演变,而且将界面作为一个开放对象看待,
一 方面增强了概念的统一性 ,男一方面又继承了开放对象的设计思想,并可按开放对象来操
作,存储和 自我演变。总之具有如下可取之处 ;
1.为软件生成提供一种新舶方法,并使软件具有可进化性。
2.界面与实现相分离的生成方法可使其作为界面的通用生成工具,减少软件开发周期。
3.它不仅是开放对象模型在软件生成中的应用 ,而且也为开放对象模型的消息接 口奠
定基础。
4.多叉树的线序与重建使得可以高效率地有选择组织界面 ,即可以 自由选择一棵子树
而不必全部加载到内存。
5.界面可作为开放对象(线序后)存放在开放对象库 中,由开放对象库管理程序去管理
它,而不必特别管理。
现实的困难已使开放的思想成为当今软件生成最有魅力的指南,作者有理由相信本文的
工作必将对此产生积极的作用。
参 考 文 献
C 1] 文贵华.林镩海、开放对象的数学模型.第十届全国数据库学术会议论文集·1992、
C 2] 文贵华.林镩海.数据库开放对象的.二般结构和撮作.南京航空航天大学学报.Vol、t5 No、5.1993.
C 3] 丁茂麒.用户接 口与空互系统构造方法.科学出版杜.1992、
C 4 ] Singh G.Green M.Automating th芒1 i 1 and syntactic desigu of grahlcal u蚶 imerfaces g the U0fa-UIMS,ACM
Trans Graph,7‘1991) 2l3— 254、
C 5 ] Brad A.M 『$⋯U r—interlace toolat intr~MueHon a.d survey.IEEE So{tware Vo1.6 No、1(1989).
C 6 ] Brad A.Myer~.Cr阻1i gⅫ imedacea using pvogrammlng by ec~mpl~,vlaua]programlng aad cOl~etralnm-ACM
"frans on Programming Language and Syatcma 2(1990).page 143— 177、
AN INTERFACE STRUCTURE OF EVOLVING'SOFTWARE
W en Guihua Ding Yuehua
tI毗t;“她 of c‘嘲p曲 如 珏 正张 En~ eerlng.H~.a#an Univ~'ixty 3~i~nce t T~chnolog'j-G g=h船 510641)
Lin Junhai
(Dept. CmnputerScience andE,Ngineering.NanjLsgUNi.~r;stv Aero.auZics d AsronaaHcs·210016)
Abstract This paper presents an interface structure of evolving soft-ware,which supports
for dynamic evolution.of software without modifying the original program and recomplica—
tion.This structure is organized as multitree and managed by the corresponding methods.It
paves the way for software evotution and also open—obiect message interfaces.
Key words tnter[ace,Evolution-Mulitree,Open--object-Database
维普资讯
10 攘 文黄华等 z 支持软件进生的界面结梅 29
5 结论
对界面接多叉树组织能时刻体现系统功能的演变,而且将界窜作为一个开政对象看待,
一方面增强了概念的统一注,另一方面又继最了开放对象的设计思想,并可按开放对象来操
作,存德和自我演变.总之具有如下可取之处 z
1.为软件生成提供一种新的方法,并使软件具有可进化性.
2. 界面与实现相分离创生成方法可使其作为界面约通用生成工具,减少软件开发周叛-
3. 它不仅是开放对象模型在软件生成中的应用,而且也为开放对象模型的消怠接口奠
定基础,
4. 多叉树的线序与重建使得可以高效率地有选择组织界面,即可以自由选择一棵子树
而不必全部加载JlJ内存.
5. 界面可作为开就对象(线序后3存放在开放对象库中,自开放对象库管理程序去管理
它,而不必特别管理.
现实的困难己便开放的思想成为当今软件生成最有魅力的指南,作者有理由相信本文的
工作必将对此产生积极的作用,
参考文献
( 1 ) 立黄华,非纯海.开放时晕倒数字模盛.肇÷黯圭罢敷锯翠学幸告议论立集. 1992、
( 2 ) 宝贵辈,韩梅撵E 皇宫援军开直在对辈部-'-JI!主事辑费提悻,南京魏空舷天文学掌握.
( 3) Tl毒贩用户接口与交互革提构造章法,辑学出版柱. 1992、
( 4) Singh M. Autom.úng the luical and 町...时icdεsign of grahical uaer ìinterlac:eø.; the Uofa * U[M5. ACM
τTanlil Gral曲唱 1( 199丑胆F 213-25毒、
(5) B>窗d . Uaer-inten./lce t国181 introd出"四 .nd 四阿町. lEEE Software VoL6 No. Hl峙的a
(6) Brad 回事,白酶:t i1:l8 回er interlll田县回ing pTogramming by ~mple. "';&U<8] programl吨 and cOI:I8tn ,n.. , ACM
Trans (18 Pr<:司gr8mming Langua磊e And SY5ft!m量 2{199时. pBge 143-111、
AN INTEAFACE STAUCTUAE OF EVOLVING SOFTWARE
Wen Guìhua Ding Yuehua
{/ lUl. iw.ú of CIR细如tIr AÞþlicaJUm E咱国eering. H JUi ltíl. ll Univerist;歹 .f S阳7l&~ 4nd T fCnl'iølØD. G,剧rrK=nou 5100641>
Lin Junhai
( Cm7Jþ国erSâ韵和ce fJRd Engm剑':Ting. N iZnjiRg V副veriny 01 Auø组øutit:J and An-帽...缸. 210(16)
Abstract Thìs paper pres出ts an interfa四 structure of evolvì.ng 50f全ware... 曹hìch support.
for dyn.四ic evolutio良 of software 曹itho眩目。difying the original program and recómplica-
tìon. This structu目 is :d 碍耻dtÌ!ree ánd by the ∞ method.. It
paves the way for 5oft..are evolution .nd 81so open -object mεssage in悟rf.出s.
E可 words Interla白~ Evolution , Mu1itreε.. Ûpen-ohject. D时ab.回