用于软件系统设计中的关键知识保护的方法和设备的制作方法

文档序号:6461338阅读:147来源:国知局
专利名称:用于软件系统设计中的关键知识保护的方法和设备的制作方法
技术领域
本发明涉及软件开发过程。更具体地说,本发明涉及软件开发过 程中的关键知识保护。
背景技术
企业通常拥有一些关键的知识(或称"机密知识"),使企业能够 保持对于竟争对手的核心竟争力。关键知识可以是创新性的商业理
念、业务功能、独特的商业流程、优化的IT体系结构等。由于这种 关键知识的重大意义,企业希望其作为企业内部的秘密或者是只有几 个核心成员知晓。
但是,由于种种原因,这种关键知识容易泄露,其中一个典型的 原因是企业通常利用外部资源来开发其软件系统。虽然这种外包机制 可以节约成本,使企业集中精力于其核心技术,但是关键知识存在泄 露给外部资源的风险。
大多数现有的关键知识保护可以被分为两类,即"物理途径" 和"法律途径"。对于"物理途径",制定规章制度来以物理方式防止未 授权人员将任何文档、源代码带出办公室。对于"法律途径",通常是 要求内部、外部开发者与企业签定不泄露协议(NDA)。 一旦开发者 在未经授权的情况下泄露任何关键知识,则企业有权对其泄露行为进 行起诉。
除了上述解决方案外,在文献"基于制造知识保护的供应商选择 模型与实证研究"(吴峰,李怀祖,中国机械工程第16巻第8期,2005 年4月)中也提出了一种相关方法。在该方法中,根据提供商的创新 能力(originality)和标准化对其进行分类、根据知识对企业竟争力的影响及其泄露可能性对外包策略进行分类,并且将提供商类型映射 到外包策略。
为了要保护关键知识,能够精确地将软件设计中所蕴含的关键知 识与一般知识区别开来是重要的前提条件。这样,可以只保护那些真 正重要的内容,并与开发者尽可能多地共享那些非关键的知识以便于 开发。但是,到目前为止,关键知识的识别和提取都是由软件系统设 计人员手动进行的,并且诸如关键知识在软件系统设计中所占比例之 类的参数也是由设计人员主观判断的,尚未见到有公开教导能用技术 手段来实现关键知识的识别和提取以及确定关键知识所占比重的手 段。采用人工方式本身就是费时费力的,而且准确性和效率都不理想。 另外,可以想象,当需要开发庞大的软件系统并且存在大量关鍵知识 时,通过人工方式进行所述识别、提取以及确定过程,其在准确性、 效率和资源消耗方面的问题可能对于开发过程而言是根本无法接受 的。
此外,目前对关键知识保护机制的选择也较为随意,缺乏科学的 分析和指导。
因此,需要一种更为有效的手段来识别和提取软件工件中蕴涵关 键知识、对其进行量化,并据此设计恰当的保护机制。

发明内容
考虑到现有技术的上述问题,提出了本发明的系统和方法,其能 够有效地识别和提取软件工件中蕴涵关键知识、对其进行量化,并据 此设计恰当的保护机制。
根据本发明的 一个方面,提供一种由计算机实施的在软件系统设 计过程中保护关键知识的方法,所述软件系统设计包括至少多个工
件,所述方法包括计算关键知识与软件系统设计之间的关联关系; 获取软件系统设计中各个工件之间的相互依赖关系;根据所述关联关 系和相互依赖关系确定用于各个工件的保护机制。
根据本发明的另 一方面,提供一种在软件系统设计过程中保护关键知识的系统,所述软件系统设计包括多个工件,所述系统包括计 算关键知识与软件系统设计之间的关联关系的关联计算部分;获取软 件系统设计中各个工件之间的相互依赖关系的依赖关系获取部分;根
机制设计部分。
本发明教导了一种系统化的方法和支持性工具,其能够有效地识 别和提取关键知识,并且据此设计系统的保护机制,从而帮助企业在 将软件开发任务交给那些未授权访问关键知识的开发者之前,前瞻性 地隐藏所述关键知识。


图1示出根据本发明的由计算机实施的在软件设计过程中保护 关键知识的方法的流程图。
图2示出根据本发明的由计算机实施的在软件设计过程中保护 关键知识的系统的方框图。
图3示出如图2所示的关联计算部分的具体操作方式。
图4示出如图2所示的机制设计部分的具体操作方式。
具体实施例方式
以下结合

本发明的优选实施方式。
图1示出了根据本发明的由计算机实施的在軟件系统设计过程 中保护关键知识的方法的流程图。该方法在步骤100中开始,随后进 入步骤110,其中计算关键知识与软件系统设计之间的关联关系。接 着,在步骤120中,获取软件系统设计中各个工件之间的相互依赖关 系。然后,在步骤130中,根据所述关联关系和相互依赖关系确定用 于各个工件的保护机制。最后,该方法在步骤140中结束。
图2是根据本发明的由计算机实施的在软件系统设计过程中保 护关键知识的系统的方框图。所述系统200包括关联计算部分210、 依赖关系获取部分220、机制设计部分230。其中,所述关联计算部分210用于计算关键知识与软件系统设计之间的关联关系;所述依赖 关系获取部分220用于获取软件系统设计中各个工件间的相互依赖关 系;所述机制设计部分230用于根据所述关联关系和相互依赖关系确 定用于各个工件的保护机制。
通过使用本发明的方法和系统,能够自动识别和量化关键知识, 并据此更加有效地对关键知识实施保护。
根据本发明,以"工件,,(artifact)为单位来把软件系统设计划 分为不同的部分。根据软件系统设计的需要,所述"工件,,可以是模块、 Java类、方法、包、文件等。
在下文中将参照图3描述关联计算部分210的具体操作方式。在 此之前,先来说明本发明使用的两个关键术语"知识曝光率" (Knowledge Exposure Rate: KER )和"工件相关率,,(Artifact Involving Rate: AIR)。"知识膝光率"是指软件系统设计工件中包 含的关键知识的百分比,"工件相关率"指真正与关键知识项相关的工 件的百分比。
本领域技术人员能够理解,关键知识可以包括业务功能、商业理 念、独特的商业流程、优化的IT体系结构等类型,并且可以具有多 种表达形式,例如自然语言文本、XML语言文本或本体等。另外, 软件系统设计类型通常为UML设计模型,其表现形式为XML文本。 不过,其他设计模型同样适用于本发明,只要该模型具有计算机可理 解的模型。
下面,我们将以业务功能类型的关键知识和UML类型的软件系 统设计模型为例对本发明的优选实施方式进行说明。如前所述,业务 功能类型的关键知识通常釆取自然语言文本描述的形式,而UML设 计模型通常采取XML文本描述的形式。本发明的方法利用了自然语 言文本和XML语言文本的词汇分割特性。
具体而言,本发明的方法如图3所示。该方法从步骤300开始, 随后进入步骤310,在这里,提取关键知识k中有意义的词汇(例如, 通过进行切词的方式),以得到词汇集合Wk{Wkl, Wk2,Wk3,...Wkl}。然后,在步骤320中,提取每个工件Ci中有意义的词 汇Wd{Wdil, Wdi2, ...,Wdim}。接下来,在步骤330,获得每个工件 Ci的词汇集与关键知识k的词汇集的交集,设这个交集大小为x,然
后计算
Ci对K的KER = x/1
Ci对K的AIR = x/m (1)。
图3的方法在步骤340中结束。
本领域技术人员能够理解,尽管以上以业务功能类型的关键知识 和UML类型的软件系统设计模型为例对本发明的优选实施方式进行 说明,但是本发明并不局限于此。事实上,只要能够提取出关键知识 中有意义的部分和设计工件中有意义的部分,并且对这二者求取交 集,从而对关键知识与设计工件的关系进行量化,任何类型的关键知 识和软件系统设计模型均可用于本发明。
以下通过一个简单的例子来说明图3的方法。
假定某客户需要开发一个金融软件,其中有关提款的业务功能是 其需要保护的关键知识。该业务功能可以用如下自然语言描述对f 炎款,^戶遂举辨戶、餘入金4l' #'^系鍵趁查辨戶余*, 义多W',况T戎存it《。
要设计的软件系统的模型如下
class提款{ 帐户int; 金额float;
boolean检查余额(); void执行交易();
对于该业务功能的语句而言,可通过执行切词提取出其有意义的 词汇。所述切词过程例如可包括先借助标点来将整个语句分割为不 同的分句,然后通过滤除介词、连词、助词等无具体含义的词来提取 语句当中有意义的词汇。通过对所述业务功能执行上述过程,可得到包含ii个有意义的词汇的集合提款、用户、选择、帐户、输入、 金额、系统、检查、余额、执行、交易。
对于该软件系统设计而言,可通过先从XML语言中提取出含有 命名的那些标记(tag)、然后再对提取出的命名进行切词,可得到包 含7个有意义的词汇的集合提款、帐户、金额、检查、余额、执行、 交易。
在得到上述两个集合后,对其求取交集,可以得到交集大小为7。 于是,可以按照前述公式(1)求取KER和AIR,即
KER = 7/11 AIR = 7/7。
另外,根据本发明的优选实施方式,在经过上述计算过程之后, 还可以提供一个修正部分,以便设计人员可以根据需要对自动计算的 KER和AIR进4亍1务正。
根据本发明的另一优选实施方式,在计算KER和AIR的过程中, 可根据关键知识的机密程度、类型、可理解性等因素,对各词汇进行 一定的加权。
以UML设计工具为例描述依赖关系获取部分220自动获取工件 间的关系的方式。当前主流的软件设计模型是UML,而UML模型通 常保存为XML文件,因此,只要使用XML文件解析程序就可以自 动获得UML模型中各工件之间的关系。换言之,只需要寻找存放 UML模型的XML文件中表达类、关联关系、继承关系、依赖关系的 节点就可以容易地得到类之间的关系。与获得各工件之间的关系有关 的技术是本领域中熟知的,这里不再详细描述。
以下将参照图4描述机制设计部分230选择适当的保护机制的方式。
众所周知,保留、伪装和拆分是三种直观的保护机制。保留 (reserving)是将软件工件保留在授权开发者那里,以便只有他们知 道关键知识。伪装(pretending)是在将软件工件传递给未授权开发 者之前先改头换面,以便隐藏关键知识。拆分(separation )将软件工件分发给多个未授权开发者,以便每个未授权开发者只能知道关键 知识的分解的片段。每个保护机制有其自身的应用条件和成本,但是 目前,对关键知识保护机制的选择较为随意,缺乏科学的分析和指导。
而本发明将根据关联计算部分210、依赖关系获取部分220输出的关 联关系和依赖关系来确定对软件工件应用怎样的保护机制,如图4所 示。
图4的方法开始于步骤400,随后进入步骤405,根据由依赖关 系获取部分220得到的工件的相互依赖性将工件分成不同的群集,并 且在步骤410中判断各群集的内聚度是否大于特定的阈值。能够理解, 在群集内聚度高时,如果将工件分配到几个开发者进行开发,则其紧 密的相互依赖性将需要较多的交流,而且会为综合到一起带来很多麻 烦。因此,最好让一个开发者开发高度内聚群集中的所有工件。如果 步骤410的判断为"是",则方法进入步骤415,以在其中计算群集的 知识曝光率(即,将群集中包括的各工件的知识曝光率相加)。然后, 在步骤410中判断群集的知识曝光率是否大于阈值?如果步骤420的 判断为"是,,,则方法进入步骤425,以决定为群集中的所有工件应用 "保留,,机制(即,在群集中知识曝光率高的情况下,应将软件开发任 务分配给被授权获得知识的那些开发者)。如果步骤420的判断为 "否,,,则方法进入步骤460,对软件开发任务采取拆分保护机制(但 考虑到高的群集内聚度,应尽量将软件开发任务分配给一个未授权开 发者)。
如果步骤410的判断为"否",即群集内聚度不大于特定阈值,则 方法进入步骤430,进一步判断工件的知识曝光率是否高于知识曝光 率阈值且工件相关率低于工件相关率阈值。如果"是",则方法进入步 骤435,对满足条件的工件应用"伪装"机制,并随后在步骤440中将 知识曝光率重设为"O",然后方法进入步骤445,以便对进行"伪装" 之后的知识应用拆分保护机制。如果步骤430的判断为"否",即,关 键知识和设计工件之间的关系不满足步骤430的条件,则方法直接进 入步骤445,以对知识应用拆分保护机制。最后,方法在步骤450中结束。
在选择适合于应用伪装机制的那些工件时,尽管伪装只能够通过 使工件改头换面而很好地保护关键知识,但是这种方式通常使工件变 得难以理解,而进行完整和有效的"伪装,,也需要昂贵的成本。因此, 建议对具有高知识曝光率和低工件相关率的关键知识应用伪装机制。 高知识膝光率意味着对工件进行伪装可以很好地保护该知识,而低工 件相关率意味着伪装所需成本会较低。
最后,将所有工件进行拆分(除了那些被保留的工件之外),以 便每组只保护较小的百分比的关键知识。这里,需要对拆分设置一定
的准则,例如,每个组可以拥有不超过每种关键知识的30% 。此外, 在计算组的总啄光率时,可以将伪装工件的膝光率视为"0"。
需要指出,在本发明的上述方法中,在不同的阶段或步骤中的各 阈值可根据软件系统设计的需要进行设定。
在机制设计部分230对不同的工件选择了适当的保护机制后,便 可以根据选择的保护机制来实施相应的机制,这包括替换可能泄露关 键知识的符号(对于"伪装"机制),将工件拆分为不同的组以满足设 置的拆分准则(对于"拆分,,机制),等等。随后,便可将处理后的软 件工件分别分发给授权和非授权开发人员进行开发。通过使用本发 明,可以较为准确、有效地提取和识别关键知识,并且能够自动地将 多种保护机制组合到一个具有理想费效比的保护解决方案中。
本领域技术人员会认识到,可以以方法、系统或计算机程序产品
的形式提供本发明的实施例。因此,本发明可采取全硬件实施例、全 软件实施例,或者组合软件和硬件的实施例的形式。硬件和软件的典 型的结合可以是带有计算机程序的通用计算机系统,当程序被加载并 被执行时,控制计算机系统,从而可以执行上述的方法。
本发明可以嵌入在计算机程序产品中,它包括使此处描述的方法 得以实施的所有特征。所述计算机程序产品被包含在一个或多个计算 机可读存储介质(包括,但不限于,磁盘存储器、CD-ROM、光学存 储器等)中,所述计算机可读存储介质具有包含于其中的计算机可读程序代码。
已参考根据本发明的方法、系统及计算机程序产品的流程图和/ 或方框图说明了本发明。流程图和/或方框图中的每个方框,以及流程 图和/或方框图中的方框的组合显然可由计算机程序指令实现。这些计 算机程序指令可被提供给通用计算机、专用计算机、嵌入式处理器或 者其他可编程的数据处理设备的处理器,以产生一台机器,从而指令 (所述指令通过计算机或者其他可编程数据处理设备的处理器)产生 用于实现在流程图和/或方框图的一个或多个方框中规定的功能的装 置。
这些计算机程序指令也可保存在一个或多个计算机的读存储器 中,每个这种存储器能够指挥计算机或者其他可编程数据处理设备按 照特定的方式发挥作用,从而保存在计算机可读存储器中的指令产生 一种制造产品,所述制造产品包括实现在流程图和/或方框图的 一个或 多个方框中规定的功能的指令装置。
计算机程序指令也可被加载到一个或多个计算机或者其他可编 程数据处理设备上,使得在所述计算机或者其他可编程数据处理设备 上执行一系列的操作步骤,从而在每个这样的设备上产生计算机实现 的过程,以致在该设备上执行的指令提供用于实现在流程图和/或方框 图的一个或多个方框中规定的步骤。
以上结合本发明的优选实施方式对本发明的原理进行了说明,但 这些说明只是示例性的,不应理解为对本发明的任何限制。本领域技 术人员可以对本发明进行各种改变和变形,而不会背离由随附权利要 求所限定的本发明的精神和范围。
权利要求
1. 一种由计算机实施的在软件系统设计过程中保护关键知识的方法,所述软件系统设计包括至少多个工件,所述方法包括计算关键知识与软件系统设计之间的关联关系;获取软件系统设计中各个工件之间的相互依赖关系;根据所述关联关系和相互依赖关系确定用于各个工件的保护机制。
2. 根据权利要求1所述的方法,其中所述计算关键知识与软件 系统设计之间的关联关系的步骤包括计算关键知识的知识曝光率和 工件相关率。
3. 根据权利要求2所述的方法,其中通过如下方式计算知识曝 光率和工件相关率知识曝光率-x/l; 工件相关率-x/m;其中l为关键知识中有意义的词汇的集合大小,m为工件中有 意义的词汇的集合大小,x为关键知识中有意义的词汇与工件中有意 义的词汇的交集的大小。
4. 根据权利要求1所述的方法,其中获取各个工件之间的相互 依赖关系的步骤包括根据与所述软件系统设计相对应的解析程序来获得所述软件系 统设计中各个工件之间的相互依赖关系。
5. 根据权利要求4所述的方法,其中根据所述相互依赖关系来 对工件划分群集,并且对群集内聚度大于阈值且群集知识曝光率大于 特定阈值的知识应用保留机制。
6. 根据权利要求4所述的方法,其中根据所述相互依赖关系来 对工件划分群集,并且对于群集内聚度不大于阈值的关键知识,如果 其知识膝光率大于知识曝光率阈值且工件相关率小于工件相关率阈 值,则对其应用伪装机制。
7. 根据权利要求6所述的方法,其中对于知识膝光率不大于知 识曝光率阈值且工件相关率不小于工件相关率阈值的关键知识应用 拆分机制。
8. —种在软件系统设计过程中保护关键知识的系统,所述软件 系统设计包括多个工件,所述系统包括计算关键知识与软件系统设计之间的关联关系的关联计算部分; 获取软件系统设计中各个工件之间的相互依赖关系的依赖关系 获取部分;根据所述关联关系和相互依赖关系确定对用于各个工件的保护 才/L制的;f;i制设计部分。
9. 根据权利要求8所述的系统,其中所述关联计算部分计算关 键知识的知识膝光率和工件相关率。
10. 根据权利要求9所述的系统,其中所述关联计算部分通过如下方式计算知识曝光率和工件相关率 知识啄光率-x/l; 工件相关率-x/m;其中l为关键知识中有意义的词汇的集合大小,m为工件中有 意义的词汇的集合大小,x为关键知识中有意义的词汇与工件中有意 义的词汇的交集的大小。
11. 根据权利要求l所述的系统,其中依赖关系获取部分根据与个工件之间的相互依赖关系。
12. 根据权利要求11所述的系统,其中根据所述相互依赖关系 来对设计工件划分群集,并且对群集内聚度大于内聚度阈值且群集知 识膝光率大于群集知识曝光率阈值的知识应用保留机制。
13. 根据权利要求11所述的系统,其中根据所述相互依赖关系 来对设计工件划分群集,并且对于群集内聚度不大于内聚度阈值的关 键知识,如果其知识膝光率大于知识曝光率阈值且工件相关率小于工 件相关率阈值,则对其应用伪装机制。
14.根据权利要求13所述的系统,其中对于知识膝光率不大于 知识啄光率阈值且工件相关率不小于工件相关率阔值的关键知识应 用拆分机制。
全文摘要
本发明提供了一种由计算机实施的在软件系统设计过程中保护关键知识的方法及系统,其中所述软件系统设计包括至少多个工件,所述方法包括计算关键知识与软件系统设计之间的关联关系;获取软件系统设计中各个工件之间的相互依赖关系;根据所述关联关系和相互依赖关系确定用于各个工件的保护机制。
文档编号G06F9/44GK101520727SQ200810082248
公开日2009年9月2日 申请日期2008年2月29日 优先权日2008年2月29日
发明者英 刘, 欣 周, 俊 朱, 辉 苏, 霍震中 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1