CN109947459A - 一种软件产品构建方法 - Google Patents
一种软件产品构建方法 Download PDFInfo
- Publication number
- CN109947459A CN109947459A CN201711371045.XA CN201711371045A CN109947459A CN 109947459 A CN109947459 A CN 109947459A CN 201711371045 A CN201711371045 A CN 201711371045A CN 109947459 A CN109947459 A CN 109947459A
- Authority
- CN
- China
- Prior art keywords
- component
- module
- software product
- version
- building
- 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.)
- Withdrawn
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件产品构建方法,涉及一种软件制作方法。该方法的特点是在软件产品制作过程中融入版本化管理方法,将软件产品版本化管理细化到每个构件,与其对应的源代码也做相应的版本化管理,有益于软件产品及构建的升级和维护。在软件产品的集成和构建过程中,借助分布式管理和云计算技术的资源共享和水平扩展能力,解决了在细化软件产品的版本化管理带来的资源消耗问题,有效的降低因环境问题导致构建失败的概率。
Description
技术领域
本发明涉及一种软件制作方法,具体地说是一种软件产品构建方法。
背景技术
软件的构建、集成在软件工程的整个过程中占有很大的比重,贯穿软件开发、测试、发布、部署、升级的整个过程;一个良好的软件构建、集成方法将有助于提高这些过程的效率和软件产品的质量。
现代软件具有规模大、功能数量多、组成结构复杂等特点,并且需要和各种系统通信,这样的软件开发、构建和调试的过程都极为复杂。改动一个极细小的地方,可能会影响到很多其他功能,可谓牵一发而动全身,这样每次改动都需要测试可能影响到的地方,工作量巨大,且往往不能保证质量。由此,出现了很多功能丰富的软件构建和软件集成工具,包括版本控制工具、持续集成工具、软件构建工具、项目管理工具,但是这些工具只是能够解决某一个领域的局部问题,它们对软件产品及其构件如何管理,发布以后如何有效的升级、维护,并没有给出明确的可行性方案。
发明内容
本发明的技术任务是针对上述现有技术的不足,提供一种准确、高效地软件产品构建方法。该方法从软件产品的模块划分,到模块的构建产出一个原子构件,再到由这些原子构件自由组合产出最终可交付使用的产品,在此过程中融入版本化管理方法。
本发明的技术任务是按以下方式实现的:一种软件产品构建方法,其特点是在软件产品制作过程中融入版本化管理方法,具体包括以下步骤:
(1)建立构件仓库和源代码仓库,用于管理所有版本的构件及其源代码;
(2)识别软件模块,将软件产品按业务逻辑进行模块划分,每个模块在物理结构上独立存放;
(3)规划统一的模块的目录结构,在每个模块中创建构建器;
(4)规划软件产品和软件模块的版本,内容包括软件产品和软件模块的功能模块、性能指标、要修复的问题,以及此版本的软件产品是由哪些版本的哪些软件模块产生的构件组成;
(5)开发软件产品的功能模块,或者修改软件产品及其功能模块中存在的问题;在开发过程中,可以随时执行构建,把功能模块构建为相应版本的构件,并发布快照版本,用于调试、测试;发布的内容为构件,及构件和其他构件之间的依赖关系;
(6)功能模块的代码提交后,自动触发该模块和该模块影响的模块(依赖此模块的模块)的构建,被影响的模块的构建还会继续触发这些模块影响的模块的构建,直至最终产品完成构建;
构件开发完成并测试通过后,可构建并发布正式版本,其过程为:
若软件的功能模块依赖的其它构件的版本发生变化,修改构建器对应的文件,提交到代码仓库;标记当前代码仓库中的源代码为待发布的版本,同时构建器也被标记为相应的版本;执行构建,并上传构件到构件仓库;正式版本发布后,仓库中对应的版本的构件将不允许再修改;根据项目的需要,选择不同构件的不同版本,进行组合构建,产出可交付的产品版本。
由于f中所述的构建过程,在产品规模较大、功能模块较多时,引发的构建任务数量巨大,在单服务器上构建耗时会很长,所以步骤f中引入了持续集成服务集群,由一个中心节点分配构建任务到各个子节点,各子节点完成任务后,通知中心节点;为方便集群扩展,引入了虚拟云计算环境,可克隆服务节点,并添加到集群中。
步骤h的构建过程中,要检查构件的依赖关系是否正确、构件的动态测试结果是否符合要求、构件的静态测试结果是否符合要求。
进一步的,步骤c中所述构建器由多个文件组成,定义该模块与其他模块间的依赖关系,包括编译时、运行时、测试时的依赖关系。
步骤f中,功能模块的构建也可以由定时任务触发,其后的构建过程与代码提交触发的构建一致。
本发明的软件产品构建方法与现有技术相比具有以下突出的有益效果:
(一)产品以及组成产品的每个构件的版本化,使发布的产品有明确的版本,有利于产品的升级和恢复;
(二)将代码和资源文件、构件、应用软件都存放到云端,屏蔽了软件产品构建、集成、发布产品过程中对物理资源的要求,能够有效的避免本地物理文件存储的弊端;
(三)通过每个模块中的构建器,能够达到随时随地构建的效果;
(四)产品模块间的依赖关系固化到构件中,使得在构建产品过程中选择构件时,只关心顶层的构件及版本,而不用去关心每一个构件及版本,有效的减小产品构建的复杂度,降低产品构建的出错概率;
(五)构建的快照版本与正式版本共存的方案,解决了主版本因日常化开发导致不稳定因素问题,能够随时获取最新的稳定版本或者其他稳定版本;
(六)构建过程的版本化实现,能够不依赖于已构建出的物理文件,还原产品的任一版本,提高构建系统的容灾能力。
附图说明
附图1是利用本发明方法构建应用软件版本1的示意图;
附图2是利用本发明方法构建应用软件版本2的示意图;
附图3为图1、图2中应用软件版本1与应用软件版本2的对比说明。
具体实施方式
参照说明书附图以具体实施例对本发明的软件产品构建方法作以下详细地说明。
实施例一(利用本发明方法构建应用软件版本1)
如附图1所示,构建方法具体为:
1、搭建出构件仓库系统和源代码版本仓库系统;
2、应用软件按照业务划分为模块a、模块b、模块c、模块d、模块e五个模块,每个模块在源代码仓库中独立存放;
3、为五个模块在源代码仓库中分别创建目录结构,包含源代码、相关的资源文件;为应用软件以及每个模块创建构建器;
4、在应用软件的构建器中描述应用软件(版本1)由构件1(版本1)、构件2(版本1)、构件3(版本1)、构件4(版本1)、构件5(版本1)组成。在每个模块的构建器中描述版本构件之间的依赖关系和性能指标、要修复的问题,构件(版本1)依赖构件2(版本1)和构件4(版本1);构件4(版本1)依赖构件5(版本1)
5、完成模块源代码的开发并提交至源代码仓库。在此过程中可能产生若干个快照版本;
6、测试通过后,在2012-07-0508:54:22时刻,从源代码仓库检出稳定版本,依次构建出构件5(版本1)、构件2(版本1)、构件3(版本1)、构件4(版本1)、构件1(版本1)。最终构建出应用软件(版本1)。
实施例二(利用本发明方法构建应用软件版本2)
实施例一所得软件在应用了一段时间之后,应用软件需求发生变更,需要去除模块c(构件3),并且构件1、构件4、构件5需要升级。
如附图2所示,构建方法具体为:
1、修改应用软件的构建器模块的构建器,在应用软件的构建器中描述应用软件(版本
2)由构件1(版本2)、构件2(版本1)、构件4(版本2)、构件5(版本2)组成;修改构件1的构建器,依赖构件2(版本1)、构件4(版本2);修改构件4的构建器,依赖构件5(版本2);
2、完成构件1、4、5对应模块源代码的开发并提交至源代码仓库。在此过程中可能产生若干个快照版本;
3、待构件1、4、5对应的模块代码测试通过后,在2012-07-1311:30:43时刻,从源代码仓库检出稳定版本,依次构建出构件5(版本2)、构件2(版本1)、构件4(版本2)、构件1(版本2)。最终构建出应用软件(版本2)。
应用软件版本1与应用软件版本2的代码版本及依赖模块、构件的比对如附图3所示。
Claims (6)
1.一种软件产品构建方法,其特征在于:在软件产品制作过程中融入版本化管理方法,对软件产品做模块识别、模块的构建职责下发、产品的构件仓库化管理、产品及构件的版本化管理、构件仓库的分布式管理以及软件产品云端构建方法,具体包括以下步骤:
1)建立构件仓库和源代码仓库,用于管理所有版本的构件及其源代码;
2)识别软件模块,将软件产品按业务逻辑进行模块划分,每个模块在物理结构上独立存放;
3)规划统一的模块的目录结构,在每个模块中创建构建器;
4)规划软件产品和软件模块的版本,内容包括软件产品和软件模块的功能模块、性能指标、要修复的问题,以及此版本的软件产品是由哪些版本的哪些软件模块产生的构件组成;
5)开发软件产品的功能模块,或者修改软件产品及其功能模块中存在的问题;在开发过程中,可以随时执行构建,把功能模块构建为相应版本的构件,并发布快照版本,用于调试、测试;发布的内容为构件,及构件和其他构件之间的依赖关系;
6)功能模块的代码提交后,自动触发该模块和该模块影响的模块的构建,被影响的模块的构建还会继续触发这些模块影响的模块的构建,直至最终产品完成构建。
2.根据权利要求1所述的软件产品构建方法,其特征在于,构件开发完成并测试通过后,可构建并发布正式版本,其过程为:若软件的功能模块依赖的其它构件的版本发生变化,修改构建器对应的文件,提交到代码仓库;标记当前代码仓库中的源代码为待发布的版本,同时构建器也被标记为相应的版本;执行构建,并上传构件到构件仓库;正式版本发布后,仓库中对应的版本的构件将不允许再修改;根据项目的需要,选择不同构件的不同版本,进行组合构建,产出可交付的产品版本。
3.根据权利要求1所述的软件产品构建方法,其特征在于,步骤f中包括持续集成服务集群,由一个中心节点分配构建任务到各个子节点,各子节点完成任务后,通知中心节点;虚拟云计算环境,可克隆服务节点,并添加到集群中。
4.根据权利要求1所述的软件产品构建方法,其特征在于,步骤h的构建过程中,要检查构件的依赖关系是否正确、构件的动态测试结果是否符合要求、构件的静态测试结果是否符合要求。
5.根据权利要求1、2或3所述的软件产品构建方法,其特征在于,步骤c中所述构建器由多个文件组成,定义该模块与其他模块间的依赖关系,包括编译时、运行时、测试时的依赖关系。
6.根据权利要求1、2或3所述的软件产品构建方法,其特征在于,步骤f中,功能模块的构建也可以由定时任务触发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711371045.XA CN109947459A (zh) | 2017-12-19 | 2017-12-19 | 一种软件产品构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711371045.XA CN109947459A (zh) | 2017-12-19 | 2017-12-19 | 一种软件产品构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947459A true CN109947459A (zh) | 2019-06-28 |
Family
ID=67004017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711371045.XA Withdrawn CN109947459A (zh) | 2017-12-19 | 2017-12-19 | 一种软件产品构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947459A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338686A (zh) * | 2020-02-12 | 2020-06-26 | 中国平安人寿保险股份有限公司 | 一种软件构建方法、设备、服务器及可读存储介质 |
CN112394942A (zh) * | 2020-11-24 | 2021-02-23 | 季明 | 基于云计算的分布式软件开发编译方法及软件开发平台 |
CN112632113A (zh) * | 2020-12-31 | 2021-04-09 | 北京九章云极科技有限公司 | 一种算子管理方法和算子管理系统 |
-
2017
- 2017-12-19 CN CN201711371045.XA patent/CN109947459A/zh not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338686A (zh) * | 2020-02-12 | 2020-06-26 | 中国平安人寿保险股份有限公司 | 一种软件构建方法、设备、服务器及可读存储介质 |
CN112394942A (zh) * | 2020-11-24 | 2021-02-23 | 季明 | 基于云计算的分布式软件开发编译方法及软件开发平台 |
CN112632113A (zh) * | 2020-12-31 | 2021-04-09 | 北京九章云极科技有限公司 | 一种算子管理方法和算子管理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968298A (zh) | 一种软件产品构建方法 | |
Athlur et al. | Varuna: scalable, low-cost training of massive deep learning models | |
CN107688999B (zh) | 一种基于区块链的并行交易执行方法 | |
US20200183896A1 (en) | Upgrade of heterogeneous multi-instance database clusters | |
CN104252481B (zh) | 主从数据库一致性的动态校验方法和装置 | |
US10235337B2 (en) | Distributed work flow using database replication | |
Poess et al. | TPC-DI: the first industry benchmark for data integration | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
CN105094851A (zh) | 一种基于Git随时发布代码的实现方法 | |
CN109117121B (zh) | 一种autosar软件架构实现方法 | |
CN106445536B (zh) | 自动化业务设计管理系统 | |
CN109947459A (zh) | 一种软件产品构建方法 | |
US11379226B2 (en) | Mission-based developer certification system and method | |
CN110362315A (zh) | 基于dag的软件系统调度方法及装置 | |
CN106445529A (zh) | 持续集成服务器的配置信息的备份方法及系统 | |
CN103197932A (zh) | 一种开发无模式文档型数据库应用的业务组件模型 | |
CN115080019A (zh) | 一种航空飞行器软件ebom结构构建方法 | |
US20170351721A1 (en) | Predicting index fragmentation caused by database statements | |
Sun et al. | Gallery: A Machine Learning Model Management System at Uber. | |
CN105975258A (zh) | 一种数据字典的管理方法及系统 | |
CN102902769A (zh) | 一种云计算平台数据库基准测试系统及其方法 | |
CN104881455B (zh) | 一种基于mysql的结构差异处理方法及系统 | |
Ovando-Leon et al. | A simulation tool for a large-scale nosql database | |
Camarasu-Pop et al. | Combining analytical modeling, realistic simulation and real experimentation for the optimization of Monte-Carlo applications on the European Grid Infrastructure | |
El Beggar et al. | Towards an MDA-oriented UML profiles for data warehouses design and development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190628 |