【技术实现步骤摘要】
实时协同编程环境下的语义冲突消解方法
本专利技术涉及计算机支持的协同工作
,尤其涉及一种实时协同编程环境下的语义冲突消解方法。
技术介绍
冲突消解是实时协同编程系统中的重要研究课题,是保证系统正确性和可用性的关键性技术。针对实时协同编程系统的冲突问题解决方法主要分为两大类:冲突消解方法和冲突避免方法。冲突消解方法允许协同编程过程中发生冲突,一旦有冲突发生则使用相应的策略来消除冲突,从而保证共享文档的一致性。近些年,冲突消解方法研究中最常用的一致性维护技术主要分为两大类:基于操作转换OT技术和基于地址转换(AddressSpaceTransformation)AST技术,其中包括Ellis和Gibbs在文献中提出的DOPT算法,Sun和Ellis在文献中提出的GOT和GOTO算法,Sun在文献中提出的COT算法以及Gu等人在文献中提出的AST算法等。冲突避免方法是指在冲突发生前避免冲突发生,该方法一般采用加锁的方式来避免冲突产生,即当用户对某对象进行操作时需要先申请加锁,只有申请成功的用户才能操作该对象。FAN和SUN在文献中提出的DAL技术,以动态加锁的方式实现实时协同编程环境的语义冲突避免,并采用Sharing-Lock的方法处理并发加锁的问题。该方法虽有效的避免了语义冲突的发生,但在一定程度上限制了协同编程的效率,且频繁的加锁与解锁会加大对系统资源的开销。针对语义冲突处理这一问题,Sun等人在文献提出基于OT技术采用多版本技术解决2D文档模型下垂直交叉的冲突,既维护了所有操作意愿,也维护了文档的一致性;Gao等人在文献中提出的CRSCM策略,实现 ...
【技术保护点】
1.一种实时协同编程环境下的语义冲突消解方法,其特征在于本方法包括如下步骤:步骤一、基本定义,基础域为一系列源代码组成的语义有意义且独立的代码域,开放域为基础域之外的所有代码域;依赖关系,若基础域A 依赖于基础域B, 表示为A‑>B,如存在A‑>B,B‑>C,则A‑>C,将A‑>B,B‑>C 称为直接依赖关系,A‑>C称为间接依赖关系;依赖图,每个基础域对应一个依赖图结点,采用Node‑>Node表示依赖图之间的依赖关系,依赖图结点之间的依赖关系与其对应的基础域之间的依赖关系一致,依赖图中记录的信息为对应基础域代码文本内容,基础域之间的依赖关系通过依赖派生机制实时分析,建立或取消基础域之间的依赖关系;步骤二、对每个基础域添加标识码,标识码为三维向量Tag(0,0,0),其中,左值表示为UpStreamTag(UST)、中值表示为DownStreamTag(DST)、右值表示为SelfAreaTag(SAT),依赖图结点的标识码为对应基础域的标识码;标识码Tag中, UpStreamTag表示对该基础域依赖的其它基础域的编辑操作会导致UpStreamTag自加,DownStreamTag ...
【技术特征摘要】
1.一种实时协同编程环境下的语义冲突消解方法,其特征在于本方法包括如下步骤:步骤一、基本定义,基础域为一系列源代码组成的语义有意义且独立的代码域,开放域为基础域之外的所有代码域;依赖关系,若基础域A依赖于基础域B,表示为A->B,如存在A->B,B->C,则A->C,将A->B,B->C称为直接依赖关系,A->C称为间接依赖关系;依赖图,每个基础域对应一个依赖图结点,采用Node->Node表示依赖图之间的依赖关系,依赖图结点之间的依赖关系与其对应的基础域之间的依赖关系一致,依赖图中记录的信息为对应基础域代码文本内容,基础域之间的依赖关系通过依赖派生机制实时分析,建立或取消基础域之间的依赖关系;步骤二、对每个基础域添加标识码,标识码为三维向量Tag(0,0,0),其中,左值表示为UpStreamTag(UST)、中值表示为DownStreamTag(DST)、右值表示为SelfAreaTag(SAT),依赖图结点的标识码为对应基础域的标识码;标识码Tag中,UpStreamTag表示对该基础域依赖的其它基础域的编辑操作会导致UpStreamTag自加,DownStreamTag表示对依赖于该基础域的其他所有基础域的编辑操作会引起DownStreamTag自加,SelfAreaTag表示编辑操作当前基础域执行后SelfAreaTag自加,且标识码只有在编辑操作成功执行后才能自加;标识码相同时表明该结点未被修改,否则可能存在语义冲突的情况;步骤三、设定基础域工作状态,且每个基础域都有一个相对应的工作状态,基础域工作状态分别为:editing:基础域处于编辑状态,resolving:基础域处于等待处理的编辑状态,completed:基础域处于完成编辑状态;步骤四、采用版本技术记录编辑操作,并通过版本覆盖的方式恢复代码,多余的版本被删除或保存,代码域版本以基础域为基本单位,每个基础域都有其对应的代码域版本,创建一个新的基础域或者在代码域成功执行的操作都会创建一个新的代码域版本并存储在本地,组成基础域的历史版本,代码域的版本号为其所对应的基础域的SelfAreaTag,若存在代码域版本恢复的情况,该基础域的标识码伴随着代码域版本恢复回退至原先值;步骤五、将编辑操作请求定义为一个二元组<s,NQ>,s(site)表示id,NQ(NodeQueue)={Node0,Node1,NodeN}表示用户完整编辑操作下各个结点的操作集合,其中Node为一个结构体包含以下信息:Id:结点id,用于在对端站点中找到该结点,并进行相应操作,Tag:结点标识码,用于判断语义冲突是否发生,EditType:基础域的编辑类型,新建一个基础域用1表示,删除基础域用-1表示,编辑基础域表示为0,RootNode:未编辑前,结点直接依赖的其它结点集合,用于判断依赖图结构是否发生变化,NewDepency:记录新增的依赖结点或减少的依赖结点,新增的结点表示为+Nodeid,减少的结点标识为-Nodeid,在依赖图结构发生变化时用于判断语义冲突是否...
【专利技术属性】
技术研发人员:高丽萍,游书伟,赵春芽,
申请(专利权)人:上海理工大学,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。