一种软件工程源代码的分割方法技术

技术编号:3976108 阅读:315 留言:0更新日期:2012-04-11 18:40
一种软件工程源代码的分割方法,是将一个软件工程的源代码进行分割后,产生两个新的软件工程:第一个是从该软件工程中提取出来部分可重用的源代码所生成的链接库文件,以供重用在其他软件工程而节约软件开发成本;第二个是将该软件工程分割后的剩余源代码与生成的链接库文件合并得到的新的软件工程;第二个软件工程经过编译生成的可执行文件功能与分割前的该软件工程功能相同,但是将第二个软件工程中的部分关键代码转化为链接库,实现了隐藏和保护源代码的目的。该方法操作步骤简单、容易,能够快速地将一个软件工程分割为可执行文件、静态链接库或动态链接库,既为软件复用创造条件,又将关键代码替换为链接库,为源代码的保护和隐藏作出贡献。

【技术实现步骤摘要】

本专利技术涉及,属于软件复用与软件安全的复合交叉的

技术介绍
20世纪60年代的“软件危机”使得程序设计人员明白了难于维护的软件成本极其 高昂。当软件的规模不断扩大时,庞大软件的综合成本可以说是没有人能够承受的,并且, 即使投入了高昂的研发资金,也难以得到可靠的产品。此时,产生的软件复用思想就成为解 决该问题的一种根本途径。软件复用(Soft Ware Reuse)是充分利用现有软件的各种相关知识,再用于研发 新的软件,以缩减软件开发和维护的经费。现在,软件复用已经成为提高软件生产力和质量 的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序。后来,逐渐 扩大到包括领域知识、开发经验、设计决定、体系结构、用户需求和涉及设计、代码与文档等 软件的所有方面。但是,软件复用注重的是从构件库中挑选构件,以组装完成一个完整的应用系统。 然而,目前对于构件是如何生成的,还缺乏一种可实施的自动化方案。而本专利技术关注的正是 这个难点从单个软件工程中提取部分源代码,生成一个动态链接库或静态链接库软件工 程,再将生成的链接库文件与原来剩余的代码组装合成一个完整的软件工程,这就要用到 软件分割技术。软件分割技术是将一个软件文本分割成两个或多个软件子文本的技术。目前的软 件分割技术包括文件分割,音、视频分割和图像分割等;但是,还没有一种软件源代码分割 的技术方案。文件分割和音、视频分割大都属于线性分割的范畴,这类分割的技术比较简 单,只需测试或识别片段的边界,并不关心其内部结构。图像分割则稍微复杂一些,要把图 像中具有特殊涵义的不同区域区分开来,而且这些区域是互不相交的,每个区域都要满足 特定区域的一致性。常见的图像分割方法有基于阀值的分割、基于边缘的分割和基于区域的分割等。 基于阀值的分割是将图像分为若干小块,再通过某种算法对每个小块计算得出一个具体数 值后,将该数值与特定的阀值相比较,大于阀值的归为一类,小于阀值的归为另一类。基于 边界的分割方法是利用不同区域间的像素灰度的不连续特点检测出区域间的边缘,从而实 现图像分割。基于区域的分割就是把具有某种相似性质的像素连通,从而构成最终的分割 区域。动态链接库DLL (Dynamic Link Library)是一个包含有可供多个程序同时使用的 代码和数据的库。它提供了一种使进程可以调用不属于其可执行代码的函数的方法。该函 数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进 程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL副本的内容。静态链接库是人们通常使用的扩展名为.lib的文件,因为库中的代码最后要连 接到可执行文件中,所以静态连接的可执行文件一般都比较大。它不同于扩展名为.dll 的动态链接库。在静态链接库里,函数和数据被编译到一个二进制文件(通常扩展名为LIB), 在链接过程中,Visual C++的编译器将从静态链接库中恢复这些函数和数据,并把 它们和应用程序中的其他模块组合在一起,生成可执行文件。这个过程称为“静态链接”。 此时,因为应用程序所需要的全部内容都是从库中复制出来的,所以静态链接库本身并不 需要与可执行文件一起发行。据申请人所掌握的材料,目前,还没有发现对软件工程的源代码直接进行分割。而 且,如果用人工直接对软件工程的源代码进行手工分割,既麻烦,又要花费很多时间。因此, 如何能够对软件工程的源代码实现自动分割,或者仅需与用户执行少量而友好的交互的相 关技术,就成为业内科技人员关注的热点。
技术实现思路
有鉴于此,本专利技术的目的是提供,该方法是对软 件工程的源代码直接进行分割,而且,操作步骤简单、容易,能够快速地将一个软件工程分 割为可执行文件、静态链接库或动态链接库,既为软件复用创造条件,又将关键代码替换为 链接库,为源代码的保护和隐藏作出贡献。为了达到上述目的,本专利技术提供了,其特征在于 该方法是将一个软件工程的源代码进行分割后,产生两个新的软件工程第一个是从该软 件工程中提取出来部分可重用的源代码所生成的链接库文件,以供重用在其他软件工程而 节约软件开发成本;第二个是将该软件工程分割后的剩余源代码与所述新生成的链接库文 件合并得到的软件工程,第二个软件工程经过编译生成的可执行文件的功能与分割前的该 软件工程的功能相同,但是第二个软件工程中的部分关键代码转化为链接库,实现了隐藏 和保护源代码的目的。本专利技术的特点是首创提出一种能够自动实现的对软件工程的源代码进行分割的 具体技术方案,本专利技术将一个待分割的C或C++软件工程分割为一个链接库软件工程A和 合并后的软件工程B (参见图1所示)。其中,第一个软件工程A是独立的动态链接库或静 态链接库的软件工程。在软件开发过程中,为节约成本而实现的软件复用,往往要从现有的 软件工程中提取出一部分可重用的源代码生成链接库文件,以便重用在其他软件中。第二 个软件工程B是将所生成的链接库文件替换分割出去的源代码而得到的,其功能与原来待 分割的的软件工程一致。由于链接库文件的种种优点,软件开发者需要将软件工程中的部 分代码转化为链接库的形式,或者出于代码保护的考虑,将关键代码替换为链接库,实现隐 藏源代码的目的。本专利技术方法的创新特点是该方法支持对编译环境的扩充,虽然目前的操作步骤 针对的是C或C++程序的代码,但是,众所周知,不同的编译环境的最大差异是配置文件和 编译过程,只要在其中有差异的地方进行选择处理,就可以实现所扩充的编译环境。所以, 本专利技术具有很好的扩充性能。本专利技术的分割方案必须先满足依赖关系,也就是,它是本专利技术 软件工程可执行分割的必要条件,然后,再在这些可行方案中选出可能的最优方案。另外, 本专利技术的分割方案是由用户定制的,具有一定的灵活性分割出去的软件工程的类型可以是动态链接库或静态链接库,而剩余的源代码与新建的动态链接库或静态链接库合并生成 的新的第二个软件工程的类型则与原来待分割的软件工程类型一致。本专利技术方法还对分割 后的软件工程进行了编译,生成相应的软件工程文件,为应用提供了便利。本专利技术方法适用性广,只要是进行软件开发的企业和个人,都能够利用该方法非 常简单、方便地从已经完成的软件工程中快速地提取可重用部分,以将生成的动态链接库 或静态链接库单独地用于其他软件工程项目,也可以用作构件库,如同图5所示那样,利用 本专利技术方式提取多个库文件构成构件库,以供实现软件复用时进行选择和组合使用。因此, 本专利技术有很好的推广应用前景。附图说明图1是本专利技术软件工程源代码的分割方法示意图。图2是本专利技术软件工程源代码的分割方法操作步骤流程图。图3是本专利技术方法中的调用VC编译器进行编译操作的步骤图。图4是本专利技术方法中在Iinux下动态链接库的调用操作流程图。图5是利用本专利技术方法实现软件工程复用的示意图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图对本专利技术作进一步 的详细描述。参见图1,本专利技术是,该方法是将一个待分割的软 件工程的源代码进行分割后,产生两个新的软件工程第一个是从该待分割的软件工程中 提取出来部分可重用的源代码所生成的链接库文件(其类型为由用户选择的动态链接库 或静态链接库),以供重用在其本文档来自技高网
...

【技术保护点】
一种软件工程源代码的分割方法,其特征在于:该方法是将一个软件工程的源代码进行分割后,产生两个新的软件工程:第一个是从该软件工程中提取出来部分可重用的源代码所生成的链接库文件,以供重用在其他软件工程而节约软件开发成本;第二个是将该软件工程分割后的剩余源代码与所述新生成的链接库文件合并得到的软件工程,第二个软件工程经过编译生成的可执行文件的功能与分割前的该软件工程的功能相同,但是第二个软件工程中的部分关键代码转化为链接库,实现了隐藏和保护源代码的目的。

【技术特征摘要】

【专利技术属性】
技术研发人员:张淼徐国爱曹斌李洋
申请(专利权)人:北京邮电大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1