Patch vs. Upgrade
patch, upgrade
Solution
With respect to software versioning (especially semantic versioning), patching will upgrade a software's patch version number, and updates upgrade their minor version number. For applications that follow semantic versioning (in `MAJOR.MINOR.PATCH` format), a patch is defined as:
increment the [...] PATCH version when you make backwards-compatible bug fixes.
In most cases, patches update the third number, the maintenance version. Updates update the minor version number. Furthermore, patches usually fix problems while maintaining compatibility, whereas updates can both fix problems as well as add new features which may not be compatible with previous versions. One may additionally append a build or revision number past the patch number:
MAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH.BUILD
So a version number 2.1.3.089 is the second major version, first minor revision (so there has been one major update), third maintenance build (so three patches since version 2.1.0.X was released), and build 089 (no significance to builds/patches, can be thought of as additional metadata specifying a unique version ID/number).
The Wikipedia article on software versioning is an interesting read. The reason I specify the M.M.M.B style is that it is commonly used in Visual Studio during application development.
In some cases, however, the last number (build) is omitted - for end users, rarely is this ever needed. It's mostly for development purposes only.
Problem
How do you distinguish between a "patch" and an "upgrade"? Where do you draw the line? A certain specification says I need to do "X" whenever I release an upgrade to the product. I need to draw the line somewhere. I don't want to violate this spec, but I've never really explicitly defined it before.