CN105760166A - 一种基于分层的源代码自动构建实现方法 - Google Patents
一种基于分层的源代码自动构建实现方法 Download PDFInfo
- Publication number
- CN105760166A CN105760166A CN201610098289.4A CN201610098289A CN105760166A CN 105760166 A CN105760166 A CN 105760166A CN 201610098289 A CN201610098289 A CN 201610098289A CN 105760166 A CN105760166 A CN 105760166A
- Authority
- CN
- China
- Prior art keywords
- layer
- code
- server
- build
- setting
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于分层的源代码自动构建实现方法,其具体实现过程为:定义代码的分层模型;搭建代码服务器环境,包括代码服务器搭建,将各个模块代码进行拆解,分配到对应分层模型中;搭建构建服务器,该构建服务器从代码服务器获取代码,进行每日构建;根据分层模型以及模块代码的拆解,配置每日构建编译的顺序,以便后续每日构建的进行。本发明的一种基于分层的源代码自动构建实现方法与现有技术相比,避免了传统开发方法带来的弊端,同时也有效的避免了自动构建的过程中出现循环依赖的情况,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态,实用性强,易于推广。
Description
技术领域
本发明涉及计算机技术领域,具体地说是一种基于分层的源代码自动构建实现方法。
背景技术
随着IT行业的不断发展,软件开发的复杂度也随着不断提高。与此同时,软件的开发团队也越来越庞大,而如何更好地协同整个团队进行高效准确的工作,从而确保软件开发的质量已经慢慢成为了开发过程中不可回避的问题。在软件开发中,不同的功能模块一般由不同的开发成员负责,同一功能模块的各层代码也可能是不同的开发成员编写,经验告诉我们,模块之间的问题是最难解决的,也是最耗费时间的。它需要多个开发人员相互协作找出问题,而协作过程中的沟通所消耗的时间成本是相当高的。而且还可能因为沟通的不足导致模块返工。
事实上,传统开发方法中常常出现这种情况:由不同程序员开发的单个小模块可以单独工作,但把它们集成为一个大的系统则可能失败。而且集成失败往往是把集成放在开发周期后期,甚至是在项目快结束前单列的一个“总装阶段”。众所周知,问题发现的越晚,其修复的成本也就越高,耗时越长,而且经过新的修复工作后可能诞生新的错误,因此整个系统需要再次进行集成和测试,从而导致整个软件的生产周期漫长且不可预知。传统开发方法带来的高集成成本和长开发周期将直接带来了显著的影响。
为了解决由传统开发方法带来的弊端,人们开始采用“早集成、常集成”的持续集成策略。但是仍然存在每日构建中,出现循环依赖、错误依赖等情况,直接影响了整个持续构建集成的过程。
基于此,现提供一种基于分层的源代码自动构建实现方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种基于分层的源代码自动构建实现方法。
一种基于分层的源代码自动构建实现方法,其实现过程为:
定义代码的分层模型;
搭建代码服务器环境,包括代码服务器搭建,将各个模块代码进行拆解,分配到对应分层模型中;
搭建构建服务器,该构建服务器从代码服务器获取代码,进行每日构建;
根据分层模型以及模块代码的拆解,配置每日构建编译的顺序,以便后续每日构建的进行。
代码的分层模型包括以下五层:
第一层为开发框架层Dev层,即DevelopFramewor层,包括底层框架;
第二层为基础服务层SF层,即ServiceFundation层,该层基于底层的框架,提供对外的服务接口;
第三层为公共模块层CM层,即CommonModules层,该层基于服务层,封装公共的模型,以便上层调用;
第四层为程序模块层AM层,即AddinModule层,该层为模块的主要逻辑实现层;
第五层为应用层Apps层,即Applications层,该层是基于程序模块层实现的应用。
搭建代码服务器环境的具体实现过程为:使用TFS的技术,搭建代码服务器,然后根据分层模型,建立对应的目录;将各个模块的代码,对应的拆分到对应的层次,同时保证新增的代码也符合定义的代码分层模型。
搭建构建服务器的步骤中,构建服务器与代码服务器进行连通,且该构建服务器进行每日构建时可及时的获取最新的代码。
配置每日构建的模块的执行顺序包括以下配置步骤:
触发器的设置,即每日构建的触发时机的设置;
源和生成默认值的设置,源的设置是指设置源代码的管理文件夹,生成默认值的设置是指设置生成的控制器以及生成的文件夹目录;
过程设置,包括设置构建前后的事件,以及构建过程中各个代码的构建顺序。
所述触发器的设置包括:手动方式的设置,即签入不触发时,使用手动触发;持续集成的设置,即生成每个签入;滚动生成的设置,即聚合签入直至上一个生成完成;封闭签入设置,即在成功合并和生成所提交的变更后接受签入;计划设置,即在每周的设置的日期和时间开始执行。
本发明的一种基于分层的源代码自动构建实现方法和现有技术相比,具有以下有益效果:
本发明在代码管理初期,就根据各个模块之间的依赖关系,在代码服务器中对代码进行了分层管理,保证了构建服务器中进行的每日构建能够正确的进行;通过采用这种方式,不仅避免了传统开发方法带来的弊端,同时也有效的避免了自动构建的过程中出现循环依赖的情况,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态,实用性强,易于推广。
附图说明
附图1为基于分层的源代码自动构建方法的流程图。
附图2为代码分层模型图。
附图3为实施的部署结构图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明的一种基于分层的源代码自动构建实现方法,该方法基于TeamFoundationServer(TFS),采用了代码分块分层的思想,来解决在每日构建中模块之间的依赖关系,在代码服务器中对代码进行了分层管理,保证了构建服务器中进行的每日构建能够正确的进行。
其实现过程为:
定义代码的分层模型;
搭建代码服务器环境,包括代码服务器搭建,将各个模块代码进行拆解,分配到对应分层模型中;
搭建构建服务器,该构建服务器从代码服务器获取代码,进行每日构建;
根据分层模型以及模块代码的拆解,配置每日构建编译的顺序,以便后续每日构建的进行。
代码的分层模型包括以下五层:
第一层为开发框架层Dev层,即DevelopFramewor层,包括底层框架;
第二层为基础服务层SF层,即ServiceFundation层,该层基于底层的框架,提供对外的服务接口;
第三层为公共模块层CM层,即CommonModules层,该层基于服务层,封装公共的模型,以便上层调用;
第四层为程序模块层AM层,即AddinModule层,该层为模块的主要逻辑实现层;
第五层为应用层Apps层,即Applications层,该层是基于程序模块层实现的应用。
搭建代码服务器环境的具体实现过程为:使用TFS的技术,搭建代码服务器,然后根据分层模型,建立对应的目录;将各个模块的代码,对应的拆分到对应的层次,同时保证新增的代码也符合定义的代码分层模型。
搭建构建服务器的步骤中,构建服务器与代码服务器进行连通,且该构建服务器进行每日构建时可及时的获取最新的代码。
配置每日构建的模块的执行顺序包括以下配置步骤:
触发器的设置,即每日构建的触发时机的设置;
源和生成默认值的设置,源的设置是指设置源代码的管理文件夹,生成默认值的设置是指设置生成的控制器以及生成的文件夹目录;
过程设置,包括设置构建前后的事件,以及构建过程中各个代码的构建顺序。
所述触发器的设置包括:手动方式的设置,即签入不触发时,使用手动触发;持续集成的设置,即生成每个签入;滚动生成的设置,即聚合签入直至上一个生成完成;封闭签入设置,即在成功合并和生成所提交的变更后接受签入;计划设置,即在每周的设置的日期和时间开始执行。
基于前面所述的代码分层的实现思路,在具体项目实施的过程中,其实施的部署图如图三所示,其主要步骤如下:
按照分层的模型,将代码结构进行拆分,将比如Dev控件之类的代码拆分到第一层中,将解耦框架等基础的服务拆分第二层中,将实现的扩展拆分到第三层中,将各个模块的实现,拆分到第四层中,将基于模块开发的应用拆分到第五层中;
搭建源代码服务器,比如设置其IP比如为10.11.12.10,按照定义好的层次模型,建立对应的目录,同时将其部署为TFS的代码服务器;
配置构件服务器,比如设置其IP为10.11.12.11,安装TFS每日构建软件,同时要保证与部署的构件服务器能够联通,以便后续的代码获取;
按照第一步拆分的模块层次,分别将各个模块的解决方案按照顺序设置到每日构建中,保证其在构建的过程中,不会出现循环依赖以及错误依赖的情况。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (6)
1.一种基于分层的源代码自动构建实现方法,其特征在于,其实现过程为:
定义代码的分层模型;
搭建代码服务器环境,包括代码服务器搭建,将各个模块代码进行拆解,分配到对应分层模型中;
搭建构建服务器,该构建服务器从代码服务器获取代码,进行每日构建;
根据分层模型以及模块代码的拆解,配置每日构建编译的顺序,以便后续每日构建的进行。
2.根据权利要求1所述的一种基于分层的源代码自动构建实现方法,其特征在于,代码的分层模型包括以下五层:
第一层为开发框架层Dev层,即DevelopFramewor层,包括底层框架;
第二层为基础服务层SF层,即ServiceFundation层,该层基于底层的框架,提供对外的服务接口;
第三层为公共模块层CM层,即CommonModules层,该层基于服务层,封装公共的模型,以便上层调用;
第四层为程序模块层AM层,即AddinModule层,该层为模块的主要逻辑实现层;
第五层为应用层Apps层,即Applications层,该层是基于程序模块层实现的应用。
3.根据权利要求1所述的一种基于分层的源代码自动构建实现方法,其特征在于,搭建代码服务器环境的具体实现过程为:使用TFS的技术,搭建代码服务器,然后根据分层模型,建立对应的目录;将各个模块的代码,对应的拆分到对应的层次,同时保证新增的代码也符合定义的代码分层模型。
4.根据权利要求1所述的一种基于分层的源代码自动构建实现方法,其特征在于,搭建构建服务器的步骤中,构建服务器与代码服务器进行连通,且该构建服务器进行每日构建时可及时的获取最新的代码。
5.根据权利要求1所述的一种基于分层的源代码自动构建实现方法,其特征在于,配置每日构建的模块的执行顺序包括以下配置步骤:
触发器的设置,即每日构建的触发时机的设置;
源和生成默认值的设置,源的设置是指设置源代码的管理文件夹,生成默认值的设置是指设置生成的控制器以及生成的文件夹目录;
过程设置,包括设置构建前后的事件,以及构建过程中各个代码的构建顺序。
6.根据权利要求5所述的一种基于分层的源代码自动构建实现方法,其特征在于,所述触发器的设置包括:手动方式的设置,即签入不触发时,使用手动触发;持续集成的设置,即生成每个签入;滚动生成的设置,即聚合签入直至上一个生成完成;封闭签入设置,即在成功合并和生成所提交的变更后接受签入;计划设置,即在每周的设置的日期和时间开始执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610098289.4A CN105760166B (zh) | 2016-02-23 | 2016-02-23 | 一种基于分层的源代码自动构建实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610098289.4A CN105760166B (zh) | 2016-02-23 | 2016-02-23 | 一种基于分层的源代码自动构建实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105760166A true CN105760166A (zh) | 2016-07-13 |
CN105760166B CN105760166B (zh) | 2019-02-15 |
Family
ID=56330227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610098289.4A Active CN105760166B (zh) | 2016-02-23 | 2016-02-23 | 一种基于分层的源代码自动构建实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760166B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729017A (zh) * | 2017-10-12 | 2018-02-23 | 北京元心科技有限公司 | 编译方法、装置及设备 |
CN108388445A (zh) * | 2018-03-09 | 2018-08-10 | 北京四方继保自动化股份有限公司 | 一种基于“平台+应用”模式的持续集成方法 |
CN108614768A (zh) * | 2016-12-14 | 2018-10-02 | 北京国双科技有限公司 | 一种分布式持续集成方法及装置 |
CN109408106A (zh) * | 2018-09-27 | 2019-03-01 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 敏捷软件开发持续集成方法及系统 |
CN109614081A (zh) * | 2018-11-26 | 2019-04-12 | Oppo广东移动通信有限公司 | 浏览器实现方法、装置及移动终端 |
CN112214203A (zh) * | 2020-09-28 | 2021-01-12 | 远光软件股份有限公司 | 一种对程序分层设计的方法、装置、终端及存储介质 |
CN112486481A (zh) * | 2020-12-03 | 2021-03-12 | 北京展心展力信息科技有限公司 | 多模块分层架构实现方法、装置、电子设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739259A (zh) * | 2010-01-04 | 2010-06-16 | 北京航空航天大学 | 服务化软件生产方法和装置 |
CN102063294A (zh) * | 2009-11-16 | 2011-05-18 | 中兴通讯股份有限公司 | 支持松耦合的软件构建方法、系统及该系统的实现方法 |
CN102156643A (zh) * | 2011-04-25 | 2011-08-17 | 青岛海信传媒网络技术有限公司 | 软件集成方法及系统 |
CN102968298A (zh) * | 2012-10-31 | 2013-03-13 | 山东浪潮齐鲁软件产业股份有限公司 | 一种软件产品构建方法 |
CN104536745A (zh) * | 2014-12-19 | 2015-04-22 | 用友金融信息技术有限公司 | 任务修改方法和任务修改装置 |
-
2016
- 2016-02-23 CN CN201610098289.4A patent/CN105760166B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063294A (zh) * | 2009-11-16 | 2011-05-18 | 中兴通讯股份有限公司 | 支持松耦合的软件构建方法、系统及该系统的实现方法 |
CN101739259A (zh) * | 2010-01-04 | 2010-06-16 | 北京航空航天大学 | 服务化软件生产方法和装置 |
CN102156643A (zh) * | 2011-04-25 | 2011-08-17 | 青岛海信传媒网络技术有限公司 | 软件集成方法及系统 |
CN102968298A (zh) * | 2012-10-31 | 2013-03-13 | 山东浪潮齐鲁软件产业股份有限公司 | 一种软件产品构建方法 |
CN104536745A (zh) * | 2014-12-19 | 2015-04-22 | 用友金融信息技术有限公司 | 任务修改方法和任务修改装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614768A (zh) * | 2016-12-14 | 2018-10-02 | 北京国双科技有限公司 | 一种分布式持续集成方法及装置 |
CN107729017A (zh) * | 2017-10-12 | 2018-02-23 | 北京元心科技有限公司 | 编译方法、装置及设备 |
CN107729017B (zh) * | 2017-10-12 | 2021-02-02 | 北京元心科技有限公司 | 编译方法、装置及设备 |
CN108388445A (zh) * | 2018-03-09 | 2018-08-10 | 北京四方继保自动化股份有限公司 | 一种基于“平台+应用”模式的持续集成方法 |
CN108388445B (zh) * | 2018-03-09 | 2021-06-08 | 北京四方继保自动化股份有限公司 | 一种基于“平台+应用”模式的持续集成方法 |
CN109408106A (zh) * | 2018-09-27 | 2019-03-01 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 敏捷软件开发持续集成方法及系统 |
CN109614081A (zh) * | 2018-11-26 | 2019-04-12 | Oppo广东移动通信有限公司 | 浏览器实现方法、装置及移动终端 |
CN109614081B (zh) * | 2018-11-26 | 2022-03-29 | Oppo广东移动通信有限公司 | 浏览器实现方法、装置及移动终端 |
CN112214203A (zh) * | 2020-09-28 | 2021-01-12 | 远光软件股份有限公司 | 一种对程序分层设计的方法、装置、终端及存储介质 |
CN112486481A (zh) * | 2020-12-03 | 2021-03-12 | 北京展心展力信息科技有限公司 | 多模块分层架构实现方法、装置、电子设备及介质 |
CN112486481B (zh) * | 2020-12-03 | 2024-03-19 | 北京展心展力信息科技有限公司 | 多模块分层架构实现方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105760166B (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760166A (zh) | 一种基于分层的源代码自动构建实现方法 | |
CN104573182B (zh) | 一种用于飞行器多模态控制系统的设计方法 | |
CN106843837A (zh) | openstack组件容器化的构建方法 | |
CN104090810B (zh) | 一种基于软件通信体系架构的核心框架集成方法 | |
CN102968298A (zh) | 一种软件产品构建方法 | |
CN105893050A (zh) | 一种基于PLMS、SVN和Jenkins进行软件项目全生命周期管理的方法 | |
CN106708597A (zh) | 一种基于Openstack创建集群环境的方法、装置及系统 | |
CN104267944A (zh) | 一种基于Spring的MVC模式优化系统 | |
CN103426192B (zh) | 一种可修改绑定方式的动画角色构建方法 | |
CN107463362A (zh) | 基于多个Jenkins的持续部署的方法和系统 | |
CN103019928A (zh) | 一种自动化测试方法和系统 | |
CN102147747A (zh) | 增强的升级路径 | |
CN107678946A (zh) | 一种基于模型的机载嵌入式软件测试环境构建方法 | |
CN102034152A (zh) | 基于soa架构的异构软件系统数据的集成整合方法与系统 | |
CN106484452B (zh) | 一种软件平台的统一配置管理方法和装置 | |
CN105786695A (zh) | 数据测试方法及系统 | |
WO2016062152A1 (zh) | 网元巡检方法及装置 | |
CN104267957A (zh) | 一种移动应用统一服务框架系统 | |
CN106569818A (zh) | 一种快速实现MVVM模式的框架BMVVMFramework | |
CN104462243A (zh) | 一种结合数据校验的etl调度系统及方法 | |
CN103902757A (zh) | 三维模型快速创建与交互系统及方法 | |
CN110489093A (zh) | 一种面向ai应用的持续构造方法、装置、终端及存储介质 | |
Darimont et al. | Deploying a template and pattern library for improved reuse of requirements across projects | |
CN101673200B (zh) | 用户输入模型的检测方法及装置 | |
CN105512418A (zh) | 一种通过复用系统级模型验证环境实现模块级验证的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |