Friday, January 03, 2014

I Believe there is a Need to Define the Concept of Software Upgrade

An issue I have with software companies is that what they call upgrades are light years from being upgrades. There should be some peoples law which defines an upgrade. Changing any of the following breaches the concept of upgrade:

  1. File format
  2. User Interface
  3. Reports generated

If I cannot generate the same reports with the software, then it is clearly a different product: the output expected from the product is no longer there and therefore it is clearly different. So if have engineering, accounting software or similar and the developers change the reports, then they have changed the product. If they retain the original reports and add more reports then can consider it to be an upgrade.

If the old program cannot read the file of the new program then its not an upgrade its a change of product. The file format should therefore be designed so that additional data can be added in future. Whilst the file parser/reader should be designed so that it can read what it needs and ignore the rest. Similarly the file writer should be designed so that it can update the data it uses, but otherwise doesn't touch and retains the data it doesn't use. Most old software isn't written such way, and therefore changing the file format would result in a change of product not an upgrade.

Changing the user interface is clearly a change of product. Replacing the popup menus with a ribbon bar, is not an upgrade. Changing the locations of commands in a menu is not an upgrade its a change of the product. Increasing necessity of a mouse and removal of keyboard commands is not an upgrade. Removing commands, renaming commands, none of this represents an upgrade.

Any change which results in a learning curve to get back up to speed with using the software is a change of product not an upgrade. The learning curve should only be for new features, and if don't need them don't need to upgrade, and don't need to learn how to use them.