Many people don't realise how much work is involved in maintaining software and the reasons for it. In the "good old days," you'd build the software, test and bugfix, and it would work. Customers would purchase the software once, and times were good.

These days, there are many moving targets. Security is always a concern, and operating systems (OS), apps, transport methods, servers, and other links in the chain are regularly updated to patch the latest vunerability. New features are also added, which might be on the OS side or on the app side.

Sometimes an OS update will "break" an application. This may be due to different methods of doing a task in the new OS, deprecation of APIs or methods in the new OS, increased security requirements, or many other factors.

Sometimes an application will need to be updated, but the new app version will not support older OS versions. In the case where you are running these older OS versions, updating the app will "break" the app.

For these reasons, it is crucial to fully test all your new applications and fully test new firmware, before you roll out any upgrade.

Some real life examples:

(1) Mission-critical portable firmware updates

We are soon to be rolling out a firmware update for the Mission-Critical Portable. The device is built by Hytera, and we develop applications which run on the device for seamless PTT and radio operations. Hytera's firmware update makes a number of nice improvements which are important to further improve performance and stability of our mission-critical functionality.

Some of the most important functions of our applications stopped working when we tested with the new firmware. That's fine, we just need to update our application to do things slightly differently in accordance with the relevant changes in the firmware.

If we simply rolled out the new "upgrade" because it had some nice improvements, we would have found that nobody using this device was able to transmit any more - neither on UHF nor on PTT.

Obviously we thoroughly test all our software and devices before deploying them. In this case, are aware of the updates we need to make in our own software as a result; and are working quickly to achieve this. A thorough test programme will be completed before the firmware and application updates are then rolled out.

(2) Applications and OS

One customer of ours regularly finds that certain third party apps stop working. When we look at why, the app requires a simple update to the latest version. The developer appears to have changed communication protocols to the server due to security, OS, or other requirements, and updated their app accordingly. Since we have not been informed of the changes, the app stops working after the server changes are deployed, and we then test and deploy a new version to restore functionality.

It is easy to update your Facebook, Skype, or other apps on your own phone when you run into issues or do a firmware update, and get yourself running again quickly. However, when using smart devices for business-critical and mission-critical operations, an unexpected issue due to app or OS updates can be time consuming, costly, or even worse. Ensure your devices are locked down so you or your system administrator has control over the updating of apps and the OS, and make sure you always test updates before deploying them in a live environment or a wider scale.