Jump to content

Software build

From Wikipedia, the free encyclopedia

Insoftware development,abuildis the process of convertingsource codefiles into standalonesoftware artifact(s)that can be run on a computer, or the result of doing so.[1]

Functions

[edit]

Building software is an end-to-end process that involves many distinct functions. Some of these functions are described below.

Version control

[edit]

Theversion controlfunction carries out activities such as workspace creation and updating, baselining and reporting. It creates an environment for the build process to run in and captures metadata about the inputs and output of the build process to ensure repeatability and reliability.

Tools such asGit,AccuRevorStarTeamhelp with these tasks by offering tools to tag specific points in history as being important, and more.

Code quality

[edit]

Also known asstatic program analysis/static code analysisthis function is responsible for checking that developers have adhered to the seven axes of code quality: comments, unit tests, duplication, complexity, coding rules, potential bugs and architecture & design.[2]

Ensuring a project has high-quality code results in fewer bugs and influences nonfunctional requirements such as maintainability, extensibility and readability; which have a direct impact on theROIfor a business.[3]

Compilation

[edit]

This is only a small feature of managing the build process. The compilation function turns source files into directly executable or intermediate objects. Not every project will require this function.

While for simple programs the process consists of a single file beingcompiled,for complex software the source code may consist of many files and may be combined in different ways to produce many different versions.

Linking

[edit]
An illustration of the linking process. Object files andstatic librariesare assembled into a new library or executable

Incomputing,alinkeror link editor is a computersystem programthat takes one or moreobject files(generated by acompileror anassembler) and combines them into a singleexecutablefile,libraryfile, or another "object" file.

A simpler version that writes itsoutputdirectly tomemoryis called theloader,thoughloadingis typically considered a separate process.[4][5]

Build tools

[edit]

The process of building acomputer programis usually managed by abuild tool,a program that coordinates and controls other programs. Examples of such a program aremake,Gradle,Ant,Maven,Rake,SConsand Phing. The build utility typically needs tocompilethe various files, in the correct order. If the source code in a particular file has not changed then it may not need to berecompiled( "may not" rather than "need not" because it may itself depend on other files that have changed). Sophisticated build utilities and linkers attempt to refrain from recompiling code that does not need it, to shorten the time required to complete the build. A more complex process may involve other programs producing code or data as part of the build process and software.

See also

[edit]

References

[edit]
  1. ^"What is Build?".Techopedia.Retrieved2020-04-04.
  2. ^"SonarQube™ software".Retrieved4 January2014.
  3. ^Muschko, Benjamin.Gradle in Action.Manning Pubns Co.ISBN9781617291302.
  4. ^IBM OS Linkage Editor and Loader(PDF).IBM Corporation.1972.Archived(PDF)from the original on 2020-03-06.Retrieved2020-03-07.
  5. ^Barron, David William(1978) [1971, 1969]. "5.7. Linkage editors and consolidators". Written atUniversity of Southampton,Southampton, UK. In Floretin, J. John (ed.).Assemblers and Loaders.Computer Monographs (3 ed.). New York, US:Elsevier North-Holland Inc.pp. 65–66.ISBN0-444-19462-2.LCCN78-19961.(xii+100 pages)