CN101826014A - 一种软件工程源代码的分割方法 - Google Patents

一种软件工程源代码的分割方法 Download PDF

Info

Publication number
CN101826014A
CN101826014A CN 201010154002 CN201010154002A CN101826014A CN 101826014 A CN101826014 A CN 101826014A CN 201010154002 CN201010154002 CN 201010154002 CN 201010154002 A CN201010154002 A CN 201010154002A CN 101826014 A CN101826014 A CN 101826014A
Authority
CN
China
Prior art keywords
file
soft project
library
soft
project
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201010154002
Other languages
English (en)
Other versions
CN101826014B (zh
Inventor
张淼
徐国爱
曹斌
李洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN 201010154002 priority Critical patent/CN101826014B/zh
Publication of CN101826014A publication Critical patent/CN101826014A/zh
Application granted granted Critical
Publication of CN101826014B publication Critical patent/CN101826014B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

一种软件工程源代码的分割方法
技术领域
本发明涉及一种软件工程源代码的分割方法,属于软件复用与软件安全的复合交叉的技术领域。 
背景技术
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是本发明方法中在linux下动态链接库的调用操作流程图。
图5是利用本发明方法实现软件工程复用的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
参见图1,本发明是一种软件工程源代码的分割方法,该方法是将一个待分割的软件工程的源代码进行分割后,产生两个新的软件工程:第一个是从该待分割的软件工程中提取出来部分可重用的源代码所生成的链接库文件(其类型为由用户选择的动态链接库或静态链接库),以供重用在其他的软件工程而节约软件开发成本;第二个是将该待分割的软件工程分割后的剩余源代码与新生成的链接库文件(即第一个软件工程)合并得到的软件工程;第二个软件工程经过编译生成的可执行文件的类型与功能与分割前的待分割软件工程的类型与功能相同,但是将该待分割软件工程中的部分关键代码转化为链接库,实现了隐藏和保护源代码的目的。
本发明方法适用于使用C或C++程序语言编写的代码,由于操作系统和编译器的多样性,不可能囊括所有的编译环境,目前本发明方法只能够适用于当前主流的编译环境,例如linux操作系统下的GNU(GNU′s Not Unix)的C编译器GCC(GNU C Compiler)和GNU的C++编译器G++,以及微软公司的windows操作系统下的VC编译器(Microsoft Visual C++);以后可以进行扩充。GNU是一个自由软件的计划工程,代表一种开源的软件开发精神。
参见图2,介绍本发明方法的具体操作步骤:
(1)先分析用户指定的待分割软件工程是否为C或C++语言所编写,以及该待分割软件工程所适用的编译环境是否为该方法所支持;如果不是,则提示用户重新指定软件工程,或者结束该流程;如果是,则顺序执行步骤(2)。
(2)分析该待分割软件工程的语法,提取每个源文件中的类和函数,以供用户选择准备分割出去的软件工程的源文件;再对该源文件进行实时动态分析,使之满足编译依赖性,再由用户指定分割出去的软件工程类型为动态链接库或静态链接库;其中编译依赖性是一个源文件的编译要依赖于其他源文件的特性,例如:B依赖A,则用户选中A的同时,B也同时被选中了。
(3)开始分割:先选中要分割出来的目标源文件,找到其所在的路径及其依赖的头文件;再将其从所在文件夹内删除,并移至新建的链接库软件工程文件夹内。
(4)完成编译前的检测:对该新建的链接库软件工程进行完整性分析,如遇到缺失的全局变量、宏或资源文件等,或者该新建的链接库软件工程内需要用到待分割软件工程中的其他链接库文件时,都从该待分割软件工程中拷贝之。
(5)生成该链接库软件工程的配置文件和修改头文件,使该链接库软件工程成为分割后生成的第一个软件工程,且其中定义的函数和类都能够被外部其他软件工程调用。
根据不同的编译器,该步骤(5)包括下述两种不同的操作方法:
如果待分割的软件工程为VC软件工程,则执行下述操作步骤:
(501)生成配置文件:从该待分割的软件工程拷贝扩展名为.dsw的工作区文件至新的链接库软件工程,再根据用户选择的类型,将相应的扩展名为.dsp的库文件配置模板.dsp拷贝到该链接库软件工程的目录中;再将扩展名为.dsw和.dsp文件重命名为用户指定的软件工程名,搜索并替换扩展名为.dsp文件中所有软件工程名都为用户指定的软件工程名;然后,依照模板格式将该链接库软件工程中所有源文件、头文件和资源文件全部写入到该扩展名为dsp的配置文件的末尾。
(502)修改头文件:修改该链接库软件工程中的头文件,使定义的函数和类变为可输出;其具体操作内容为:若用户选择的软件工程类型为静态链接库LIB,则将所有类声明和函数声明都包含在关键词exterm“C”的括号内。
若用户选择的软件工程类型为动态链接库DLL,则在头文件中使用函数调用规范declspec引出输出函数,并包含在关键词extern”C”括号内,或者生成相应的DEF文件。
如果待分割的软件工程为GCC或G++软件工程,则执行下述操作步骤:
在新建的链接库软件工程内生成配置文件makefile,如果用户选择生成静态链接库,关键操作是将目标源文件中的函数生成静态链接库文件*.a;如果用户选择生成动态链接库,则要用-shared编译选项,以生成动态链接库*.so;如果用户选择生成动态链接库,还要修改头文件,若原来的函数声明为:返回值类型函数名(参数);则先改为:返回值类型(*函数名)(参数)的形式。
需要说明动态函数与静态函数的原型不同之处是,动态函数应使用(*函数名)的形式,以便引用其指针。若要引用文件中的动态函数说明,在原待分割软件工程的主文件中,用户应该定义一下SHARED宏,这样才能使用。
(6)对该新生成的链接库软件工程进行编译,将头文件和编译生成的库文件一并拷贝到所述待分割软件工程被分割后的剩余源代码中。
根据不同的编译器,该步骤(6)包括下述两种不同的操作步骤:
如果待分割的软件工程为VC软件工程,则执行下述操作步骤(参见图3):
(601)找到VC的安装目录%VCDIR%后,先设置VC环境变量,执行VC安装目录中的批处理文件VCVARS32.BAT;然后转到该链接库软件工程的目录下执行编译命令:msdev%PROJECTB%.dsp或MAKE″all-Win32 Release″。
(602)完成编译后,将生成的库文件和所有修改后的头文件都复制到分割后的第一个软件工程、即该链接库软件工程中;如果为静态链接库,则生成扩展名为.lib的文件,如果为动态链接库,则分别生成扩展名为.dll的文件和.Lib的文件;为方便调用,将扩展名为lib的文件也一同复制到该链接库软件工程中。
如果待分割的软件工程为GCC或G++软件工程,则执行下述操作步骤:
(611)对链接库软件工程进行编译,生成库文件;如果为静态链接库,就将生成扩展名为a的库文件*.a复制至该链接库软件工程,如果为动态链接库,则将生成扩展名为so的库文件*.so复制至linux系统的库文件目录/lib下,再将头文件拷贝回该链接库软件软件工程目录。
(7)对步骤(6)合并得到的第二个软件工程中的源文件进行修改,使其能够找到步骤(4)所生成的新建的链接库文件。
根据不同的编译器,该步骤(7)包括下述两种不同的操作步骤:
如果待分割的软件工程为VC软件工程,则执行下述操作步骤:
(701)用progma comment加载所生成的扩展名为LIB的库文件,如果步骤(5)所生成的为动态链接库,还要修改头文件,使其能正确引用该库文件中的函数。
(702)修改步骤(6)合并得到的第二个软件工程的配置文件,遍历“SOURCE=”行后面的文件名,查询它们是否都还存在,如果不存在,就删除已分割出去文件的文件名所对应的行。
如果待分割的软件工程为GCC或G++软件工程,则执行下述操作步骤:
(711)重写步骤(6)合并得到的第二个软件工程的makefile,删除已经分割出去文件的文件名所对应的行(即源文件的编译和链接);
如果步骤(6)生成的为静态链接库,则在主函数main( )生成可执行文件时,加上扩展名为a的静态链接库文件*.a,即加入cc-o main.o*.a命令,即可实现将静态链接库编译到对应的可执行文件中,执行对应的可执行文件,从而实现其原来的功能;只是将原先的部分函数做成了库文件。
如果步骤(6)生成的为动态链接库,则如图4所示,先在头文件中包含用于动态链接库管理的系统头文件dlfcn.h;
在对主函数的源代码中的变量进行定义后,就用dlopen函数打开动态链接库,在需要调用动态链接库中的函数时,用dlsym函数取得所要调用函数的动态地址,在主函数结束前,用dlclose函数关闭dp该动态链接库的指针。
(8)对步骤(6)合并得到的第二个软件工程进行编译,生成新的可执行文件。根据不同的编译器,该步骤(8)包括下述两种不同的操作步骤:
如果待分割的软件工程为VC软件工程,则采用编译命令为msdev%PROJECTB%.dsp/MAKE″all-Win32Release″,生成新的可执行文件;
如果待分割的软件工程为GCC或G++软件工程,则采用编译命令为make,生成新的可执行文件,且保持原来的功能不变。
本发明已经进行了实施试验,试验的结果是成功的,实现了发明目的。

Claims (7)

1.一种软件工程源代码的分割方法,其特征在于:该方法是将一个软件工程的源代码进行分割后,产生两个新的软件工程:第一个是从该软件工程中提取出来部分可重用的源代码所生成的链接库文件,以供重用在其他软件工程而节约软件开发成本;第二个是将该软件工程分割后的剩余源代码与所述新生成的链接库文件合并得到的软件工程,第二个软件工程经过编译生成的可执行文件的功能与分割前的该软件工程的功能相同,但是第二个软件工程中的部分关键代码转化为链接库,实现了隐藏和保护源代码的目的。
2.根据权利要求1所述的方法,其特征在于:所述方法适用于使用C或C++程序语言编写的代码,该方法所支持的编译环境包括linux操作系统下的GNU(GNU′s Not Unix)的C编译器GCC(GNU C Compiler)和GNU的C++编译器G++,以及微软公司的windows操作系统下的VC编译器(Microsoft Visual C++);所述GNU是一个自由软件的计划工程,代表一种开源的软件开发精神。
3.根据权利要求1所述的方法,其特征在于:所述方法包括下列操作步骤:
(1)先分析用户指定的待分割软件工程是否为C或C++语言所编写,以及该待分割软件工程所适用的编译环境是否为该方法所支持;如果不是,则提示用户重新指定软件工程,或者结束该流程;如果是,则顺序执行步骤(2);
(2)分析该待分割软件工程的语法,提取每个源文件中的类和函数,以供用户选择准备分割出去的软件工程的源文件;再对该源文件进行实时动态分析,使之满足编译依赖性,再由用户指定分割出去的软件工程类型为动态链接库或静态链接库;所述编译依赖性是一个源文件的编译要依赖于其他源文件的特性;
(3)开始分割:先选中要分割出来的目标源文件,找到其所在的路径及其依赖的头文件;再将其从所在文件夹内删除,并移至新建的链接库软件工程内;
(4)完成编译前的检测:对该链接库软件工程进行完整性分析,如遇到缺失的全局变量、宏或资源文件,或者该链接库软件工程内需要用到所述待分割软件工程中的其他链接库文件时,都从该待分割软件工程中拷贝之;
(5)生成该链接库软件工程的配置文件和修改头文件,使该链接库软件工程成为分割后的第一个软件工程,且其中定义的函数和类能够被外部其他软件工程调用;
(6)对该链接库软件工程进行编译,将头文件和编译生成的库文件一并拷贝到所述待分割软件工程被分割后的剩余源代码中;
(7)对步骤(6)合并得到的第二个软件工程中的源文件进行修改,使其能够找到步骤(4)所生成的链接库文件;
(8)对步骤(6)合并得到的第二个软件工程进行编译,生成新的可执行文件。
4.根据权利要求2或3所述的方法,其特征在于:根据不同的编译器,所述步骤(5)进一步包括下述两种不同的操作方法:
如果待分割的软件工程为VC软件工程,则执行下述操作步骤:
(501)生成配置文件:从所述待分割的软件工程拷贝扩展名为.dsw的工作区文件至链接库软件工程,再根据用户选择的类型,将相应的扩展名为.dsp的库文件配置模板拷贝到该链接库软件工程的目录中;再将扩展名为.dsw和.dsp文件重命名为用户指定的软件工程名,搜索并替换扩展名为.dsp文件中所有软件工程名为用户指定的软件工程名;依照模板的格式将软件工程中所有源文件、头文件和资源文件全部写入到该扩展名为dsp的配置文件中;
(502)修改头文件:修改链接库软件工程中的头文件,使定义的函数和类变为可输出;其具体操作内容为:若用户选择的软件工程类型为静态链接库LIB,则将所有类声明和函数声明都包含在关键词exterm“C”的括号内;若用户选择的软件工程类型为动态链接库DLL,则在头文件中使用函数调用规范declspec引出输出函数,并包含在关键词extern”C”括号内,或者生成相应的DEF文件;或
如果待分割的软件工程为GCC或G++软件工程,则执行下述操作步骤:
(511)在链接库软件工程内生成配置文件makefile,如果用户选择生成静态链接库,关键操作是将目标源文件中的函数生成静态链接库文件*.a;如果用户选择生成动态链接库,则要用-shared编译选项,以生成动态链接库*.so;
(512)如果用户选择生成动态链接库,还要修改头文件,若原来的函数声明为:返回值类型函数名(参数);则先改为:返回值类型(*函数名)(参数)的形式。
5.根据权利要求3所述的方法,其特征在于:根据不同的编译器,所述步骤(6)进一步包括下述两种不同的操作步骤:
如果待分割的软件工程为VC软件工程,则执行下述操作步骤:
(601)找到VC的安装目录%VCDIR%后,先执行VC安装目录中的批处理文件VCVARS32.BAT,设置VC环境变量;然后转到该链接库软件工程的目录下执行编译命令:msdev %PROJECTB%.dsp或MAKE″all-Win32 Release″;
(602)完成编译后,将生成的库文件和所有修改后的头文件都复制到分割后的第一个软件工程、即该链接库软件工程中;如果为静态链接库,则生成扩展名为.lib的文件,如果为动态链接库,则分别生成扩展名为.dll的文件和.Lib的文件;为方便调用,将扩展名为lib的文件也一同复制到该链接库软件工程中;或
如果待分割的软件工程为GCC或G++软件工程,则执行下述操作步骤:
(611)对链接库软件工程进行编译,生成库文件;如果为静态链接库,就将生成扩展名为a的库文件*.a复制至该链接库软件工程,如果为动态链接库,则将生成扩展名为so的库文件*.so复制至linux系统的库文件目录/lib下,再将头文件拷贝回该链接库软件软件工程目录。
6.根据权利要求3所述的方法,其特征在于:根据不同的编译器,所述步骤(7)进一步包括下述两种不同的操作步骤:
如果待分割的软件工程为VC软件工程,则执行下述操作步骤:
(701)用progma comment加载所生成的扩展名为LIB的库文件,如果步骤(5)所生成的为动态链接库,还要修改头文件,使其能正确引用该库文件中的函数;
(702)修改步骤(6)合并得到的第二个软件工程的配置文件,遍历“SOURCE=”行后面的文件名,查询它们是否都还存在,如果不存在,就删除已分割出去文件的文件名所对应的行;或
如果待分割的软件工程为GCC或G++软件工程,则执行下述操作步骤:
(711)重写步骤(6)合并得到的第二个软件工程的makefile,删除已经分割出去文件的的文件名所对应的行;
如果步骤(6)生成的为静态链接库,则在主函数main()生成可执行文件时,加上扩展名为a的静态链接库文件*.a,即加入cc-o main.o*.a命令,即可实现将静态链接库编译到对应的可执行文件中,执行对应的可执行文件,从而实现其原来的功能;只是将原先的部分函数做成了库文件;
如果步骤(6)生成的为动态链接库,则先在头文件中包含用于动态链接库管理的系统头文件dlfcn.h,在程序调用到动态链接库里的函数时,先取得所要调用函数的动态地址;在主函数结束前,关闭该动态链接库的指针。
7.根据权利要求3所述的方法,其特征在于:根据不同的编译器,所述步骤(8)进一步包括下述两种不同的操作步骤:
如果待分割的软件工程为VC软件工程,则采用编译命令为msdev%PROJECTB%.dsp/MAKE″aU-Win32 Release″,生成新的可执行文件;或
如果待分割的软件工程为GCC或G++软件工程,则采用编译命令为make,生成新的可执行文件,且保持原来的功能不变。
CN 201010154002 2010-04-20 2010-04-20 一种软件工程源代码的分割方法 Expired - Fee Related CN101826014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010154002 CN101826014B (zh) 2010-04-20 2010-04-20 一种软件工程源代码的分割方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010154002 CN101826014B (zh) 2010-04-20 2010-04-20 一种软件工程源代码的分割方法

Publications (2)

Publication Number Publication Date
CN101826014A true CN101826014A (zh) 2010-09-08
CN101826014B CN101826014B (zh) 2013-05-08

Family

ID=42689946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010154002 Expired - Fee Related CN101826014B (zh) 2010-04-20 2010-04-20 一种软件工程源代码的分割方法

Country Status (1)

Country Link
CN (1) CN101826014B (zh)

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102207884A (zh) * 2011-06-02 2011-10-05 深圳市茁壮网络股份有限公司 一种文件编译方法及装置
CN102523229A (zh) * 2011-12-23 2012-06-27 大唐移动通信设备有限公司 一种信息的访问方法和设备
CN103077039A (zh) * 2013-02-28 2013-05-01 福州昌晖自动化系统有限公司 一种嵌入式工控仪表软件开发平台
CN103092760A (zh) * 2013-01-30 2013-05-08 北京控制工程研究所 一种软件修正性在轨维护优化方法
CN103198244A (zh) * 2013-03-26 2013-07-10 北京深思数盾科技有限公司 保护动态链接库的方法
WO2013108161A1 (en) * 2012-01-16 2013-07-25 International Business Machines Corporation Manipulating source code patches
CN103279356A (zh) * 2013-06-04 2013-09-04 百度在线网络技术(北京)有限公司 Makefile文件的自动生成方法和装置
CN103500295A (zh) * 2013-10-10 2014-01-08 上海理工大学 一种通过动态识别id防止源代码拷贝的方法
CN103713933A (zh) * 2013-12-31 2014-04-09 华为技术有限公司 计算机程序中热点函数、变量的汇聚方法、装置及系统
CN103777963A (zh) * 2014-02-24 2014-05-07 武汉大学 一种实现软件重用的方法
CN103853660A (zh) * 2013-12-30 2014-06-11 中山大学深圳研究院 一种基于面向组件模型的软件构建及验证的方法
CN103870723A (zh) * 2014-03-20 2014-06-18 北京深思数盾科技有限公司 一种增强软件保护易用性的方法及装置
CN103886095A (zh) * 2014-04-03 2014-06-25 北京深思数盾科技有限公司 跨平台目标文件复用方法
CN104834513A (zh) * 2015-03-26 2015-08-12 北京煤科天玛自动化科技有限公司 一种综采工作面液压支架控制器软件自动生成的方法和系统
CN105893860A (zh) * 2016-05-05 2016-08-24 百度在线网络技术(北京)有限公司 关键代码保护方法以及代码生成装置和代码运行装置
CN106293864A (zh) * 2016-08-01 2017-01-04 惠州华阳通用电子有限公司 一种车载信息系统开发平台功能模块的移植方法
CN107291436A (zh) * 2016-04-13 2017-10-24 上海思立微电子科技有限公司 Sdk包产生方法、装置及终端
CN108399098A (zh) * 2018-03-01 2018-08-14 郑州云海信息技术有限公司 一种服务器bmc功能自适应调整方法及装置
CN109344230A (zh) * 2018-10-31 2019-02-15 任志颖 代码库文件生成、代码搜索、联结、优化以及移植方法
CN109388430A (zh) * 2017-08-02 2019-02-26 丰郅(上海)新能源科技有限公司 实现微处理器对外设硬件控制的方法
CN109460235A (zh) * 2018-10-09 2019-03-12 珠海格力电器股份有限公司 组态软件编译方法
CN110221821A (zh) * 2019-04-24 2019-09-10 深圳点猫科技有限公司 一种基于编程教育的项目函数解耦方法及电子设备
CN111580798A (zh) * 2020-03-30 2020-08-25 佛山职业技术学院 一种动态链接库实现方法、系统、计算机设备及存储介质
CN111859383A (zh) * 2020-06-08 2020-10-30 西安电子科技大学 软件自动分割方法、系统、存储介质、计算机设备、终端
CN111985055A (zh) * 2020-08-28 2020-11-24 北京世冠金洋科技发展有限公司 一种模型封装方法、装置及电子设备
CN112579470A (zh) * 2020-12-29 2021-03-30 中国科学院计算机网络信息中心 一种软件动态库调试的编译链接方法及系统
CN113535263A (zh) * 2021-07-07 2021-10-22 深圳市元征未来汽车技术有限公司 动态库调用方法、装置、计算机设备及存储介质
CN113641389A (zh) * 2021-08-31 2021-11-12 广东九联科技股份有限公司 基于OpenCPU的软件升级方法、装置及设备
US11200070B2 (en) 2018-08-03 2021-12-14 International Business Machines Corporation Dynamic-link library usage based on memory size
CN115167834A (zh) * 2022-09-08 2022-10-11 杭州新中大科技股份有限公司 一种基于代码数据化的源代码自动生成方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
CN1606027A (zh) * 2003-10-10 2005-04-13 深圳市派思数码科技有限公司 利用指纹进行软件版权保护的方法及其应用装置
CN101236590A (zh) * 2008-03-07 2008-08-06 北京邮电大学 一种基于门限密码体制的软件分割保护的实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
CN1606027A (zh) * 2003-10-10 2005-04-13 深圳市派思数码科技有限公司 利用指纹进行软件版权保护的方法及其应用装置
CN101236590A (zh) * 2008-03-07 2008-08-06 北京邮电大学 一种基于门限密码体制的软件分割保护的实现方法

Cited By (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102207884A (zh) * 2011-06-02 2011-10-05 深圳市茁壮网络股份有限公司 一种文件编译方法及装置
CN102523229A (zh) * 2011-12-23 2012-06-27 大唐移动通信设备有限公司 一种信息的访问方法和设备
WO2013108161A1 (en) * 2012-01-16 2013-07-25 International Business Machines Corporation Manipulating source code patches
GB2513058A (en) * 2012-01-16 2014-10-15 Ibm Manipulating Source Code Patches
CN103092760B (zh) * 2013-01-30 2015-11-11 北京控制工程研究所 一种软件修正性在轨维护优化方法
CN103092760A (zh) * 2013-01-30 2013-05-08 北京控制工程研究所 一种软件修正性在轨维护优化方法
CN103077039A (zh) * 2013-02-28 2013-05-01 福州昌晖自动化系统有限公司 一种嵌入式工控仪表软件开发平台
CN103077039B (zh) * 2013-02-28 2016-08-24 福州昌晖自动化系统有限公司 一种嵌入式工控仪表软件开发平台
CN103198244B (zh) * 2013-03-26 2016-06-29 北京深思数盾科技股份有限公司 保护动态链接库的方法
CN103198244A (zh) * 2013-03-26 2013-07-10 北京深思数盾科技有限公司 保护动态链接库的方法
CN103279356B (zh) * 2013-06-04 2019-01-25 百度在线网络技术(北京)有限公司 Makefile文件的自动生成方法和装置
CN103279356A (zh) * 2013-06-04 2013-09-04 百度在线网络技术(北京)有限公司 Makefile文件的自动生成方法和装置
CN103500295A (zh) * 2013-10-10 2014-01-08 上海理工大学 一种通过动态识别id防止源代码拷贝的方法
CN103853660A (zh) * 2013-12-30 2014-06-11 中山大学深圳研究院 一种基于面向组件模型的软件构建及验证的方法
CN103713933A (zh) * 2013-12-31 2014-04-09 华为技术有限公司 计算机程序中热点函数、变量的汇聚方法、装置及系统
CN103713933B (zh) * 2013-12-31 2017-03-08 华为技术有限公司 计算机程序中热点函数、变量的汇聚方法、装置及系统
CN103777963A (zh) * 2014-02-24 2014-05-07 武汉大学 一种实现软件重用的方法
CN103870723A (zh) * 2014-03-20 2014-06-18 北京深思数盾科技有限公司 一种增强软件保护易用性的方法及装置
CN103886095A (zh) * 2014-04-03 2014-06-25 北京深思数盾科技有限公司 跨平台目标文件复用方法
CN104834513B (zh) * 2015-03-26 2018-12-07 北京煤科天玛自动化科技有限公司 一种综采工作面液压支架控制器软件自动生成的方法和系统
CN104834513A (zh) * 2015-03-26 2015-08-12 北京煤科天玛自动化科技有限公司 一种综采工作面液压支架控制器软件自动生成的方法和系统
CN107291436B (zh) * 2016-04-13 2020-11-27 上海思立微电子科技有限公司 Sdk包产生方法、装置及终端
CN107291436A (zh) * 2016-04-13 2017-10-24 上海思立微电子科技有限公司 Sdk包产生方法、装置及终端
CN105893860A (zh) * 2016-05-05 2016-08-24 百度在线网络技术(北京)有限公司 关键代码保护方法以及代码生成装置和代码运行装置
CN106293864A (zh) * 2016-08-01 2017-01-04 惠州华阳通用电子有限公司 一种车载信息系统开发平台功能模块的移植方法
CN106293864B (zh) * 2016-08-01 2019-05-14 惠州华阳通用电子有限公司 一种车载信息系统开发平台功能模块的移植方法
CN109388430A (zh) * 2017-08-02 2019-02-26 丰郅(上海)新能源科技有限公司 实现微处理器对外设硬件控制的方法
CN108399098A (zh) * 2018-03-01 2018-08-14 郑州云海信息技术有限公司 一种服务器bmc功能自适应调整方法及装置
US11200070B2 (en) 2018-08-03 2021-12-14 International Business Machines Corporation Dynamic-link library usage based on memory size
CN109460235A (zh) * 2018-10-09 2019-03-12 珠海格力电器股份有限公司 组态软件编译方法
CN109344230A (zh) * 2018-10-31 2019-02-15 任志颖 代码库文件生成、代码搜索、联结、优化以及移植方法
CN110221821A (zh) * 2019-04-24 2019-09-10 深圳点猫科技有限公司 一种基于编程教育的项目函数解耦方法及电子设备
CN111580798A (zh) * 2020-03-30 2020-08-25 佛山职业技术学院 一种动态链接库实现方法、系统、计算机设备及存储介质
CN111580798B (zh) * 2020-03-30 2023-06-06 佛山职业技术学院 一种动态链接库实现方法、系统、计算机设备及存储介质
CN111859383A (zh) * 2020-06-08 2020-10-30 西安电子科技大学 软件自动分割方法、系统、存储介质、计算机设备、终端
CN111859383B (zh) * 2020-06-08 2021-08-06 西安电子科技大学 软件自动分割方法、系统、存储介质、计算机设备、终端
CN111985055A (zh) * 2020-08-28 2020-11-24 北京世冠金洋科技发展有限公司 一种模型封装方法、装置及电子设备
CN111985055B (zh) * 2020-08-28 2023-08-08 北京世冠金洋科技发展有限公司 一种模型封装方法、装置及电子设备
CN112579470A (zh) * 2020-12-29 2021-03-30 中国科学院计算机网络信息中心 一种软件动态库调试的编译链接方法及系统
CN113535263A (zh) * 2021-07-07 2021-10-22 深圳市元征未来汽车技术有限公司 动态库调用方法、装置、计算机设备及存储介质
CN113641389A (zh) * 2021-08-31 2021-11-12 广东九联科技股份有限公司 基于OpenCPU的软件升级方法、装置及设备
CN113641389B (zh) * 2021-08-31 2024-02-09 广东九联科技股份有限公司 基于OpenCPU的软件升级方法、装置及设备
CN115167834A (zh) * 2022-09-08 2022-10-11 杭州新中大科技股份有限公司 一种基于代码数据化的源代码自动生成方法及装置
CN115167834B (zh) * 2022-09-08 2022-12-23 杭州新中大科技股份有限公司 一种基于代码数据化的源代码自动生成方法及装置

Also Published As

Publication number Publication date
CN101826014B (zh) 2013-05-08

Similar Documents

Publication Publication Date Title
CN101826014B (zh) 一种软件工程源代码的分割方法
US10503634B1 (en) Semantic comparison of computer compiler traces
US11256523B2 (en) Modular co-versioning in a dynamically linked runtime environment
US8607208B1 (en) System and methods for object code hot updates
CN102141919B (zh) 模块化java应用软件在线更新系统及方法
US8996349B2 (en) Synchronizing an abstract model and source code
US7856621B2 (en) Method for synchronization of concurrently modified interdependent semi-derived artifacts
US9778921B2 (en) Method for creating, exporting, sharing, and installing graphics functional blocks
US8266588B2 (en) Creating projects in a rational application developer workspace
US8423971B2 (en) Generating an application software library
US20080276221A1 (en) Method and apparatus for relations planning and validation
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
US20110302565A1 (en) Implicit workspace dependencies
US20060200645A1 (en) Apparatus and method for employing cloning for software development
CN105022630A (zh) 一种组件管理系统及组件管理方法
US9535687B2 (en) Audited builds based upon separate class dependency records
Vujović et al. Comparative analysis of DSM graphical editor frameworks: Graphiti vs. Sirius
WO2023109648A1 (zh) 一种模型-代码同步方法
CN101571801A (zh) 业务扩展系统及方法
US8484629B2 (en) Programming model for modular development
US8510342B1 (en) Automatic conversion of build processes to use streaming input
US7966611B2 (en) Delayed production expansion by use of macros
Bagge Facts, Resources, and the IDE/Compiler Mind-Meld
Mosser et al. Web services composition: Mashups driven orchestration definition
Pasetti et al. Two novel concepts for systematic product line development

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130508

Termination date: 20140420