So far
we have discussed what team can do
to extremely simplify versioning for the modules (assembly, jar, dll, exe, binaries in general).
What about
executables and web-applications, desktop applications, services and web-services?
Verioning and
tracking of breaking changhes are useful for changes that
affect the production environment, let's make some examples:
- When an application requires an upgrade to the db schema to work properly, the application and the db must be versioned properly !
- When there is an upgrade to a server application that makes changes to the client-server communication protocol, the client and servers applications must be versioned properly !
- When a module is a external thirdy party shrink-wrapped software, its version number is required to know wich version use and install in test and production environment.
So as you can see you needs versioning for apps when there are parts that have it's own autonomous indipendent development-release cycle. And unifing these cycles would be less flexible that dealing with versioning and traking breaking changes.
This series of posts come from experiences done on the field. If you are interested in the topic you should read also the book
Continuous Delivery.