Skip to main content

Command Palette

Search for a command to run...

Software maintenance

A necessity or a rip-off?

Updated
5 min read
Software maintenance

Introduction

We all understand that an internal combustion engine needs maintenance. The oil needs to be changed regularly, likewise the spark plugs and the timing belt. A failure to do so will most likely result in a higher consumption, lower engine performance, and in the end complete engine failure. Maintenance is necessary, because the engine has internal moving parts that wear out during its lifetime. It just comes down to physics.

If we take that analogy to software, one could argue that software does not need maintenance. It does not have any moving internal parts. So why is software maintenance even a thing?

The moving parts of software

With software, the “moving parts” are not on the inside of the program but on the outside.

Device OS

The device OS where the software is running on gets feature and security updates. It is not certain that the software will run flawlessly on a newer OS. It can be the features in the OS that change, but it can also be that the software is actively refused by the OS. Android nowadays prevents really old software to be run. Software compiled with older SDK’s are actively refused. That minimum SDK boundary rises automatically, with every new OS release.

Programming language

The app’s programming language evolves. The language gets new features and functions, but also some functions get deprecated and are eventually removed.

Libraries used

The libraries that the app uses are in motion. Some libraries are updated to follow the programming languages best practises and deprecation guidelines. Some libraries get new functionalities, and others are abandoned or superseded by competing libraries.

Programming tools

The programming tools evolve. The programming tools, like Android Studio, will support a lower boundary and an upper boundary of the programming language. To load an old project, an old version of Android Studio needs to be used.

Developers OS

The operating system of the developers laptop, changes. There comes a point in time when the developer is not able to start an old version of the development tools, like Android Studio.

CPU architecture developers OS

Eventually the developer gets a new laptop with a new processor architecture. Like in the past years where Apple made the transition from x86/x64 to arm64. I must admit that the backwards compatibility provided is pretty good, but it is for a fact that old x86/x64 virtual machine images are not usable on arm64. That means, that old windows software has to be able to run on the arm version of Windows, otherwise you are out of luck.

Security

If software maintenance is neglected, so is the security of the solution. The amount of vulnerabilities in software increases with time because of newly discovered vulnerabilities. Using unmaintained software is like driving a car without ever checking the tires.

Technical debt

The above shows that with software maintenance, everything is connected. The software itself does not change, of course, but it’s surroundings do. When software is not maintained it’s technical debt increases with time. If software maintenance is neglected long enough it might even become irreparable. Then the software is total loss, just like a car engine that snapped it’s timing belt.

Be sure that your software is maintained and kept up to date.

Technology Release Timeline (2013 - 2024+)

Technology201320142015201620172018201920202021202220232024+
ARM64 TransitionApple A7 Chip (1st 64-bit consumer ARM CPU)Windows 10 on ARM supportiOS drops 32-bit supportAWS Graviton (ARM in cloud)Play Store 64-bit mandate, Surface Pro X (ARM)Apple announces Mac transition, Apple M1 Chip releasedPlay Store 64-bit ONLY mandate, Apple M1 Pro/MaxApple M2 ChipApple M2/M3 families, Snapdragon X Elite announcedFirst Snapdragon X Elite PCs (Planned)
macOSMavericks (10.9)Yosemite (10.10)El Capitan (10.11)Sierra (10.12)High Sierra (10.13)Mojave (10.14)Catalina (10.15) (Drops 32-bit app support)Big Sur (11.0) (Native Apple Silicon support)Monterey (12.0)Ventura (13.0)Sonoma (14.0)Ongoing Releases
WindowsWindows 8.1Windows 10Windows 11 (Improved ARM support)
iOSiOS 7 (1st 64-bit support)iOS 8iOS 9iOS 10iOS 11iOS 12iOS 13iOS 14iOS 15iOS 16iOS 17Ongoing Releases
AndroidAndroid 5.0 Lollipop (1st ARM64 support)Android 6 MarshmallowAndroid 7 NougatAndroid 8 OreoAndroid 9 PieAndroid 10Android 11Android 12Android 13Android 14
Android StudioAS 1.0AS 1.1 - 1.5AS 2.0 - 2.2AS 2.3 - 3.0AS 3.1 - 3.3AS 3.4 - 3.6AS 4.0 - 4.1Arctic Fox, BumblebeeDolphin, Electric EelFlamingo, Giraffe, HedgehogOngoing Releases
DartDart 1.0Dart 2.0Dart 2.10 (Null Safety Beta)Dart 2.12 (Stable Null Safety)Dart 2.16-2.18Dart 3.0Ongoing Releases
Flutter"Sky" DemoAlphaFlutter 1.0Flutter 1.2xFlutter 2.0 (Stable Web)Flutter 3.0 (Stable Desktop)Flutter 3.7-3.16 (Impeller)Ongoing Releases