Build vs Version vs Revision vs Release vs Link vs Compile

In this section, I will cover what it means to build, version, revision, release, link, and compile in terms of what software engineers need to know; whether you are developer/programmer, or a QA Tester.

Compiling, Linking, Building the Software

First, think of the way pre-fabricated building sections might be built, and then assembled into a complete structure.

Pre-fab wall sections, door frames, window frames, and other parts might be built at different factories.  Because the builders of these parts need to make it possible to integrate the parts into a whole, they leave wiring and cables and so on dangling on the sides, ready to be hooked up with other parts.  This is analogous to compiling, which takes the human-readable source code, and creates object code.

Later on, a bunch of these pre-fab parts are assembled into a useable building.  At that time, the dangling wires and support beams and such are all connected together and made into a functional system.  This is analogous to the linking process, and the output of this will be the executable file or files, along with other bits that make up the usable software product.

The process of compiling and linking (that is, going from source code to a usable product) is called building.

So there you have compile, link and build.

Now, the terms version, revision and release are another matter.

Versioning & Revising the Software

Version and revision mean the same thing in a software engineering context that they do in just about any other context.  The iPhone 6 that’s coming out in a few weeks (in the U.S.) is something newer than the iPhone 5, which has been available for years.  The iPhone 6 will include newer technologies and improved software over the iPhone 5.  It will be slimmer than the iPhone 5, and yet have a larger screen.  These changes are Apple’s responses to changes in technology, user preferences, and other market forces.  In software engineering the same things happen.  Version X+1 of any software product is presumably going to be “better” than version X, in ways that respond to these pressures.

Revision usually means almost the same thing as version, only at a smaller scale.  Imagine that a few weeks after Apple releases the iPhone 6 to the public, a design defect is discovered that can be fixed with a minor change to the product.  Apple makes a change to the design specs for their phones, and future customers receive an iPhone 6 that includes this improvement.  Usually a model number or serial number in fine print somewhere will give a version number for the product with more digits than just the “6”.  Maybe it’s 6.101345 or whatever.  This is analogous to what revision usually means in software engineering.  A revision is a minor change to a version of the product.

Releasing the Software

A release is simply any specific build of the product that was at some point released to customers.  Often it’s important to be able to go back and reproduce some previous version of the product that was given to a customer.  Maybe the company has moved beyond, say, version 2 of their product.  Today, they’re working on version 5, but an important customer still uses version 2 and has reported a major issue.  So you need to be able to go back to the set of source code, object files and executable products that made up version 2.  Together, all of that is called a release.

And that about does it.  Hope this helps.

What's Your Opinion?