All the above contributions are laudable and basically linked. Hope this scenario simplifies and clarifies the basics. Updating
Updating as explained earlier implies keeping something up to date thus if the functionality of a particular program is to rectify errors from level 1 to say level 3, updating the program implies maintaining or igniting its efficiency to work effectively within the specified levels (level 1to 3).
But to upgradeupgrade the program implies increasing itits capacity and efficiency to enable it exceed or work beyond the previous lower levels i.e. levels 4,5 5 and upwards.