Browse Prior Art Database

A method and system for the build optimization of a software application Disclosure Number: IPCOM000239402D
Publication Date: 2014-Nov-05
Document File: 5 page(s) / 345K

Publishing Venue

The Prior Art Database


A method and system for the build optimization of a software application

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 45% of the total text.

Page 01 of 5

A method and system for the build optimization of a software application

    Large software projects are in general composed by several modules, optionally depending on each other, that contain different portions of the application source files.

    Such modules may have dependencies among them, and in some cases, to build a given module, a dependant module has to be build in advance.

    The build system, base on tools like Make, ant, and so on …, takes care of executing all the steps for building the modules in the right order and packaging the application.

    The typical way a build process of an application works is the following:

1) A user requests or starts a new build of the application 2) The build server initializes the new build request and assigns it to a build engine 3) The build engine receives the build request 4) Upon receiving such request, the source code of the application gets downloaded 5) Once the download completes, the build engine starts the execution of the build process and of any subsequent activity, such as test automation, leveraging one of the tools already mentioned before
(i.e. Make, ant, etc …).

    One of the elements that limits the overall build execution time is the fact that before starting the build execution, the build engine waits for the entire source tree to be completely downloaded. When the application's source code is very large (i.e. millions of lines of code) downloading the entire source tree maybe a time consuming operation that can contribute in a significant manner to overall build execution time.

    Even build tools that provide parallelization features (i.e. distcc) to speed-up the build process require for the entire source tree to have been completely downloaded.

    The system described in this disclosure aims at alleviating the drawbacks of a typical build system as described above. It is based upon the idea of starting the build execution before the entire source tree gets


Page 02 of 5

completely downloaded.

The system, analyzing the module inter-dependencies, creates and runs, for a given build configuration, a download plan and a build execution plan.

    This way the files download process is prioritized and the build process is able to start early and without waiting for the entire source code to be downloaded.

    This allows to reduce the overall build time by concurrently downloading the remaining source code and running the build activities for the already downloaded modules.

  The main requirements of this solution are: • Each application module can be separately downloaded from the source control system and has its own build specification file (i.e. a Makefile or a Ant build.xml file).

• Each application module has an associated dependency descriptor (whose format can be based for example on the one handled by Ivy dependency manager, but other formats are possible as well), that is part of a separate module (hereinafter called "root module") and that can be downloaded separately from the...