CN106843857A - 基于srp实现代码库转换sdk的方法和装置 - Google Patents

基于srp实现代码库转换sdk的方法和装置 Download PDF

Info

Publication number
CN106843857A
CN106843857A CN201611252439.9A CN201611252439A CN106843857A CN 106843857 A CN106843857 A CN 106843857A CN 201611252439 A CN201611252439 A CN 201611252439A CN 106843857 A CN106843857 A CN 106843857A
Authority
CN
China
Prior art keywords
sdk
code
functional requirement
storehouse
object code
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
CN201611252439.9A
Other languages
English (en)
Other versions
CN106843857B (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 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology Co Ltd
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 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201611252439.9A priority Critical patent/CN106843857B/zh
Publication of CN106843857A publication Critical patent/CN106843857A/zh
Application granted granted Critical
Publication of CN106843857B publication Critical patent/CN106843857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种基于SRP实现代码库转换SDK的方法和装置,通过获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;将至少一个依赖代码库中的代码迁移到目标代码库;根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;根据抽离整合后的SDK的功能需求项对应的代码生成SDK,基于SRP实现将实现不能功能的代码库中的代码抽离整合到一个目标代码库中,生成SDK;可以根据实际需求生成不同功能组合的SDK,从而,满足调用者的功能需求。

Description

基于SRP实现代码库转换SDK的方法和装置
技术领域
本发明涉及计算机技术,尤其涉及一种基于单一职责原则(Singleresponsibility principle,简称:SRP)实现代码库转换软件开发工具包(SoftwareDevelopmenti Kit,简称:SDK)的方法和装置。
背景技术
随着计算机技术的飞速发展,很多项目都由若干个代码库组成,这些代码库之间有着不同程度的依赖,例如:登录代码库通常情况下不需要对存取cookie、定位以及跳转至web页面等功能支持。若要用到这些功能时,需要依赖通用代码库的存取cookie功能,定位代码库的定位功能和网络库的web页面跳转功能等。
然而,当将上述不同的代码库抽取成独立的SDK时,每个SDK不能依赖任何其他的代码库,而调用者需要SDK提供上述功能,因此,无法满足调用者的功能需求。
发明内容
本发明提供一种基于SRP实现代码库转换SDK的方法和装置,以满足调用者的功能需求。
第一方面,本发明提供一种基于SRP实现代码库转换SDK的方法,包括:
获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;
根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;
将至少一个依赖代码库中的代码迁移到目标代码库;
根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;
根据抽离整合后的SDK的功能需求项对应的代码生成SDK。
可选地,根据抽离整合后的SDK的功能需求项对应的代码生成SDK之前,还包括:
对目标代码库中的资源名和/或文件名进行重构。
可选地,根据SDK的功能需求项确定目标代码库和至少一个依赖代码库,包括:
确定目标代码库,获取目标代码库的功能项;
获取功能需求项中除去目标代码库的功能项之外的其余功能需求项;
获取候选代码库的功能项;
将候选代码库的功能项与其余功能需求项进行匹配,确定具有匹配项的候选代码库为匹配项对应的依赖代码库。
可选地,目标代码库和至少一个依赖代码库使用相同的编程语言。
第二方面,本发明提供一种基于SRP实现代码库转换SDK的装置,包括:
获取模块,用于获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;
处理模块,用于根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;
迁移模块,用于将至少一个依赖代码库中的代码迁移到目标代码库;
处理模块还用于根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;
处理模块,还用于根据抽离整合后的SDK的功能需求项对应的代码生成SDK。
可选地,处理模块还用于对目标代码库中的资源名和/或文件名进行重构。
可选地,处理模块具体用于确定目标代码库,获取目标代码库的功能项;获取功能需求项中除去目标代码库的功能项之外的其余功能需求项;获取候选代码库的功能项;将候选代码库的功能项与其余功能需求项进行匹配,确定具有匹配项的候选代码库为匹配项对应的依赖代码库。
可选地,目标代码库和至少一个依赖代码库使用相同的编程语言。
本发明提供的基于SRP实现代码库转换SDK的方法和装置,通过获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;将至少一个依赖代码库中的代码迁移到目标代码库;根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;根据抽离整合后的SDK的功能需求项对应的代码生成SDK,基于SRP实现将实现不能功能的代码库中的代码抽离整合到一个目标代码库中,生成SDK;可以根据实际需求生成不同功能组合的SDK,从而,满足调用者的功能需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于SRP实现代码库转换SDK的方法实施例一的流程示意图;
图2为本发明基于SRP实现代码库转换SDK的方法实施例二的流程示意图;
图3为本发明基于SRP实现代码库转换SDK的方法实施例三的流程示意图;
图4为本发明各基于SRP实现代码库转换SDK的装置实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明所用到的名词解释:
SRP:一个类应该只有一个发生变化的原因,如果它承担了多于一个的职责,则意味着引起变化的原因有多个。如果一个类承担的职责过多,那么就等同于把这些职责耦合在了一起。一个职责的变化可能会抑制到该类完成其他职责的能力,这样的耦合会导致类的脆弱。当变化发生时,类的功能会受到意向不到的破坏。
应用程序(Application,简称:App):电子设备软件,是安装在电子设备上的软件,完善原始系统的不足与个性化。
SDK:一般都是一些软件工程师为特定的软件包、软件框架、硬件平台或操作系统等建立应用程序时的开发工具的集合。
本发明通过获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;将至少一个依赖代码库中的代码迁移到目标代码库;根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;根据抽离整合后的SDK的功能需求项对应的代码生成SDK,基于SRP实现将实现不能功能的代码库中的代码抽离整合到一个目标代码库中,生成SDK;可以根据实际需求生成不同功能组合的SDK,从而,满足调用者的功能需求。并且,提高了SDK的生成效率,降低了开发成本,减小了SDK包的大小,提高了健壮性。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明基于SRP实现代码库转换SDK的方法实施例一的流程示意图,如下所示:
S101:获取软件开发工具包SDK的功能需求项。
其中,功能需求项中包含至少两个功能项。
功能需求项例如:可以包括:登录功能、定位功能、网络请求功能、通用设置功能、支付功能和Web页面调起等中的一种或多种。
S103:根据SDK的功能需求项确定目标代码库和至少一个依赖代码库。
目标代码库和至少一个依赖代码库使用相同的编程语言,编程语言例如可以是C语言或C++语言等,对此,本发明不作限制。
其中,目标代码库为登录库,依赖代码库;定位功能依赖定位服务库;网络请求功能依赖网络库;通用设置功能依赖通用组件库;支付功能依赖支付库;web页面调起功能依赖页面库。
其中,功能需求项与依赖代码库的映射关系表1所示:
表1
S105:将至少一个依赖代码库中的代码迁移到目标代码库。
例如:结合表1,将表1中需要SDK支持,且SDK未支持的功能项对应发的依赖代码库的功能迁移到目标代码库。即:将定位服务库、通用组件库和支付库的代码迁移到登录库。
S107:根据SRP从目标代码库中抽离整合SDK的功能需求项对应的代码。
即:只保留相关结构,删除其他无关内容。
S109:根据抽离整合后的SDK的功能需求项对应的代码生成SDK。
本实施例,通过获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;将至少一个依赖代码库中的代码迁移到目标代码库;根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;根据抽离整合后的SDK的功能需求项对应的代码生成SDK,基于SRP实现将实现不能功能的代码库中的代码抽离整合到一个目标代码库中,生成SDK;可以根据实际需求生成不同功能组合的SDK,从而,满足调用者的功能需求。
图2为本发明基于SRP实现代码库转换SDK的方法实施例二的流程示意图,图2是在图1所示实施例的基础上,可选地,在S109之前,还包括:
S108:对目标代码库中的资源名和/或文件名进行重构。
本实施例,通过对目标代码库中的资源名和/或文件名进行重构,以使资源名和文件名命名更加合理,更编译开发者理解其功能。
图3为本发明基于SRP实现代码库转换SDK的方法实施例三的流程示意图,图3是在图1或图2所示实施例的基础上,S103的一种可能的实现方式的描述:
S1031:确定目标代码库,获取目标代码库的功能项。
S1032:获取功能需求项中除去目标代码库的功能项之外的其余功能需求项。
S1033:获取候选代码库的功能项。
S1034:将候选代码库的功能项与其余功能需求项进行匹配,确定具有匹配项的候选代码库为匹配项对应的依赖代码库。
本实施例,通过确定目标代码库,获取目标代码库的功能项,获取功能需求项中除去目标代码库的功能项之外的其余功能需求项,获取候选代码库的功能项,将候选代码库的功能项与其余功能需求项进行匹配,确定具有匹配项的候选代码库为匹配项对应的依赖代码库,从而,实现目标代码库和依赖代码库的确定。
在上述各实施例中,若功能需求项中包含依赖代码库不能实现的功能需求项,则开发人员对该功能需求项进行开发,并基于SRP从目标代码库中抽离整合SDK的功能需求项对应的代码。
图4为本发明各基于SRP实现代码库转换SDK的装置实施例的结构示意图,如图4所示,本实施例的装置包括:获取模块401、处理模块402和迁移模块403,其中,获取模块401用于获取软件开发工具包SDK的功能需求项,功能需求项中包含至少两个功能项;处理模块402用于根据SDK的功能需求项确定目标代码库和至少一个依赖代码库;迁移模块403用于将至少一个依赖代码库中的代码迁移到目标代码库;处理模块402还用于根据单一职责原则SRP从目标代码库中抽离整合SDK的功能需求项对应的代码;处理模块402还用于根据抽离整合后的SDK的功能需求项对应的代码生成SDK。
其中,目标代码库和至少一个依赖代码库使用相同的编程语言。
本实施例的装置,对应的可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在图4中,处理模块402还用于对目标代码库中的资源名和/或文件名进行重构。
本实施例的装置,对应的可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在图4中,处理模块402具体用于确定目标代码库,获取目标代码库的功能项;获取功能需求项中除去目标代码库的功能项之外的其余功能需求项;获取候选代码库的功能项;将候选代码库的功能项与其余功能需求项进行匹配,确定具有匹配项的候选代码库为匹配项对应的依赖代码库。
本实施例的装置,对应的可用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种基于SRP实现代码库转换SDK的方法,其特征在于,包括:
获取软件开发工具包SDK的功能需求项,所述功能需求项中包含至少两个功能项;
根据所述SDK的功能需求项确定目标代码库和至少一个依赖代码库;
将所述至少一个依赖代码库中的代码迁移到所述目标代码库;
根据单一职责原则SRP从所述目标代码库中抽离整合所述SDK的功能需求项对应的代码;
根据所述抽离整合后的所述SDK的功能需求项对应的代码生成所述SDK。
2.根据权利要求1所述的方法,其特征在于,所述根据所述抽离整合后的所述SDK的功能需求项对应的代码生成所述SDK之前,还包括:
对所述目标代码库中的资源名和/或文件名进行重构。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述SDK的功能需求项确定目标代码库和至少一个依赖代码库,包括:
确定目标代码库,获取所述目标代码库的功能项;
获取所述功能需求项中除去所述目标代码库的功能项之外的其余功能需求项;
获取候选代码库的功能项;
将候选代码库的功能项与所述其余功能需求项进行匹配,确定具有匹配项的候选代码库为所述匹配项对应的依赖代码库。
4.根据权利要求3所述的方法,其特征在于,
所述目标代码库和所述至少一个依赖代码库使用相同的编程语言。
5.一种基于SRP实现代码库转换SDK的装置,其特征在于,包括:
获取模块,用于获取软件开发工具包SDK的功能需求项,所述功能需求项中包含至少两个功能项;
处理模块,用于根据所述SDK的功能需求项确定目标代码库和至少一个依赖代码库;
迁移模块,用于将所述至少一个依赖代码库中的代码迁移到所述目标代码库;
所述处理模块还用于根据单一职责原则SRP从所述目标代码库中抽离整合所述SDK的功能需求项对应的代码;
所述处理模块,还用于根据所述抽离整合后的所述SDK的功能需求项对应的代码生成所述SDK。
6.根据权利要求5所述的装置,其特征在于,所述处理模块还用于对所述目标代码库中的资源名和/或文件名进行重构。
7.根据权利要求5或6所述的装置,其特征在于,所述处理模块具体用于确定目标代码库,获取所述目标代码库的功能项;获取所述功能需求项中除去所述目标代码库的功能项之外的其余功能需求项;获取候选代码库的功能项;将候选代码库的功能项与所述其余功能需求项进行匹配,确定具有匹配项的候选代码库为所述匹配项对应的依赖代码库。
8.根据权利要求7所述的装置,其特征在于,所述目标代码库和所述至少一个依赖代码库使用相同的编程语言。
CN201611252439.9A 2016-12-30 2016-12-30 基于srp实现代码库转换sdk的方法和装置 Active CN106843857B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611252439.9A CN106843857B (zh) 2016-12-30 2016-12-30 基于srp实现代码库转换sdk的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611252439.9A CN106843857B (zh) 2016-12-30 2016-12-30 基于srp实现代码库转换sdk的方法和装置

Publications (2)

Publication Number Publication Date
CN106843857A true CN106843857A (zh) 2017-06-13
CN106843857B CN106843857B (zh) 2021-02-02

Family

ID=59113726

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611252439.9A Active CN106843857B (zh) 2016-12-30 2016-12-30 基于srp实现代码库转换sdk的方法和装置

Country Status (1)

Country Link
CN (1) CN106843857B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124526A (zh) * 2018-11-01 2020-05-08 北京奇虎科技有限公司 依赖库管理方法、装置、存储介质和计算机设备
CN111562928A (zh) * 2020-04-28 2020-08-21 北京字节跳动网络技术有限公司 资源提供方法及装置、资源下载方法及装置
CN111722851A (zh) * 2020-04-22 2020-09-29 深圳市伟文无线通讯技术有限公司 一种基于单片机的支持多云平台连接的装置和方法
WO2023207103A1 (zh) * 2022-04-28 2023-11-02 华为云计算技术有限公司 代码转换方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102082904A (zh) * 2010-12-29 2011-06-01 上海华勤通讯技术有限公司 手机摄像头驱动方法
CN105049532A (zh) * 2015-08-28 2015-11-11 北京奇艺世纪科技有限公司 一种sdk包的打包方法及装置和下载方法及装置
US9244664B1 (en) * 2014-04-28 2016-01-26 Visualon, Inc. System for video development kits with control of executable size
CN105573734A (zh) * 2014-10-17 2016-05-11 阿里巴巴集团控股有限公司 一种用于提供sdk文件的方法与设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102082904A (zh) * 2010-12-29 2011-06-01 上海华勤通讯技术有限公司 手机摄像头驱动方法
US9244664B1 (en) * 2014-04-28 2016-01-26 Visualon, Inc. System for video development kits with control of executable size
CN105573734A (zh) * 2014-10-17 2016-05-11 阿里巴巴集团控股有限公司 一种用于提供sdk文件的方法与设备
CN105049532A (zh) * 2015-08-28 2015-11-11 北京奇艺世纪科技有限公司 一种sdk包的打包方法及装置和下载方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124526A (zh) * 2018-11-01 2020-05-08 北京奇虎科技有限公司 依赖库管理方法、装置、存储介质和计算机设备
CN111722851A (zh) * 2020-04-22 2020-09-29 深圳市伟文无线通讯技术有限公司 一种基于单片机的支持多云平台连接的装置和方法
CN111562928A (zh) * 2020-04-28 2020-08-21 北京字节跳动网络技术有限公司 资源提供方法及装置、资源下载方法及装置
CN111562928B (zh) * 2020-04-28 2023-05-05 北京字节跳动网络技术有限公司 资源提供方法及装置、资源下载方法及装置
WO2023207103A1 (zh) * 2022-04-28 2023-11-02 华为云计算技术有限公司 代码转换方法和装置

Also Published As

Publication number Publication date
CN106843857B (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
CN104516783B (zh) 权限控制方法和装置
CN106716361B (zh) 用于运行时例程冗余跟踪的编译器高速缓存
CN106843857A (zh) 基于srp实现代码库转换sdk的方法和装置
Tavares et al. A gentle introduction to OSGi
CN106201481A (zh) 应用程序开发系统中的组件管理方法和装置
CN104272704B (zh) 用于描述云环境从属物的元应用程序
CN105224459A (zh) 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法
CN102467414A (zh) 一种状态机控制方法、装置及状态机系统
CN101794270A (zh) 用于基于资源角度选择冗余控制器的方法和系统
CN109446753A (zh) 检测盗版应用程序的方法、装置、计算机设备及存储介质
CN109683880A (zh) 网页交互方法、装置、设备和存储介质
US10387124B2 (en) System and method for creating domain specific language
CN106909429A (zh) 一种同步升级方法及装置
CN104166607A (zh) 用于备份数据库的数据处理方法及装置
CN109901985A (zh) 分布式测试装置及方法、存储介质和电子设备
US11315208B2 (en) Conceptual representation of business processes for cross-domain mapping
CN108345536A (zh) 一种持续集成环境的部署方法、装置及设备
CN102541544B (zh) 树形控件的处理方法、装置及系统
CN106921688A (zh) 分布式系统的服务提供方法及分布式系统
US8539496B1 (en) Method and apparatus for configuring network systems implementing diverse platforms to perform business tasks
CN105493033A (zh) 声明性配置元素
CN103577232A (zh) 面向应用的集群式部署it架构环境的方法及设备
CN110908573B (zh) 算法模型训练方法、装置、设备及存储介质
CN103246518A (zh) 一种基于服务组件架构的组态方法及装置
Reilly et al. Tutorial: parallel computing of simulation models for risk analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant