Why does software need to be “maintained”? What about it needs to be maintained?

388 viewsOtherTechnology

This is totally me just being naive, I don’t work in the software realm but do have an interest possibly one day, but if we have stuff that’s been able to run (seemingly) successfully for years, or maybe even decade, what maintenance needs to even be done on old programs? Is this simply for people discovering security vulnerabilities and patching them? Is there more to it than that?

In: Technology

31 Answers

Anonymous 0 Comments

Patching vulnerabilities is one aspect. Making sure it works on new devices/operating systems that didn’t exist when it was written is another. Improving scalability so that it still works even if 100x as many people are now using it. Adding features that are expected in modern software / are present in competing software. Making it run faster or with less memory. Making it able to use new file formats. Adding common use cases like exporting/sharing using media or websites that didn’t exist before.

Anonymous 0 Comments

Software maintenance is a bit like taking care of a car. Even if a car is running fine, you still need to do regular maintenance like oil changes, tire rotations, and replacing worn-out parts to keep it running smoothly and avoid bigger problems down the road.

Similarly, software needs ongoing maintenance for several reasons:

Fixing Bugs: Despite thorough testing, bugs (errors or flaws) can still be found in software after it’s released. These bugs can affect how the software functions, its security, or how it interacts with other software. Fixing these bugs is a part of maintenance.

Updating Security: New security vulnerabilities are discovered regularly. Hackers find new ways to exploit software, so developers need to update their software to patch these vulnerabilities and protect users’ data.Improving Performance: Over time, developers may find new methods or technologies that make the software run faster or more efficiently. Updating the software to incorporate these improvements can enhance user experience.

Compatibility Updates: As new operating systems, hardware, and other software are developed, older software may not work as well or at all with them. Maintenance can include updating the software to ensure it remains compatible with other evolving technologies.

Adding Features: To stay competitive and meet users’ needs, software often needs new features or enhancements to existing ones. This can include anything from new tools within an application to support for additional formats or languages.

Regulatory Compliance: For some software, especially those used in finance, healthcare, and other regulated industries, changes in laws and regulations may require updates to ensure the software complies with new rules.

Even software that seems to run successfully for years without changes might be slowly becoming less secure, less efficient, or less compatible with other technologies. Regular maintenance ensures that the software can continue to serve its purpose effectively, securely, and efficiently.

Anonymous 0 Comments

Security vulnerabilities are one.

But it’s also just the fact that other people are updating their software. Say you make a program for windows computers. Well you can only design for windows as it currently exists, you don’t know what kind of changes they will make in the future.

So maybe when to next windows update comes out, your program still works totally fine, or maybe your program now has some weird small bug because of some random change that windows made, or maybe your program doesn’t work at all anymore.

If you aren’t actively keeping up with it, there will be a day where your program no longer works as people update their computers

Anonymous 0 Comments

>  Is this simply for people discovering security vulnerabilities and patching them? 

That’s a big part of it, but also they need to make sure the software still works with everything else on the computer.  If there’s a Windows update, they need to make sure that that doesn’t break the software.

Also, implicit in maintaining software is that you’re maintaining customer service for that software.  When a company stops maintaining software, that’s when they also stop answering customer questions regarding it.

Anonymous 0 Comments

The foundations software is built on are continually being improved. C++ (a very common language used for programs that need to be fast), for example, releases a new version every few years with upgrades, new features, and security fixes. If you’re using C++ to write your software, it should be brought up to date to use the latest version and that’s about half of software maintenance.

The other half is fixing issues that have shown up in your code due to errors.

Anonymous 0 Comments

Security (patches against new threats and vulnerabilities)

Space (enterprise applications filling up with data that needs to be purged)

Compatibility (with new browsers / plugins / drivers)

Integration (with new systems)

Money (sometimes there’s nothing to maintain and you just need a way to extend billing cycles 🙂

Anonymous 0 Comments

I’ve been doing this professionally for 14 years. The biggest thing isn’t security vulnerabilities, though that does happen occasionally, every few months maybe. And it’s not compatibility updates, though that happens every once in a while. The biggest thing is *changing business needs*. So like – we have a program that takes a text file, reads the data, and puts it into a database. If that file ever changes, we need to update the code. If that file ever has an *error*, we need to decide whether we’re going to update the code to gracefully handle it, or we’re going to have a process to re-run the file, who gets notified if the file fails, etc. If that code was written with some assumptions – maybe the data would always be in ascii (when after some time it ends up with a unicode character we didn’t expect). Or maybe a field of data wasn’t expected to be more than 256 characters, but one day there’s legitimate data that’s 260 characters long. All those things lead to having to update and maintain the code.

And that’s ignoring things like improvements – maybe we have two processes run by two programs that do similar things, but we decide it’d be better to combine it into one overarching program. Or maybe a process takes an hour or two to run overnight and we want to improve on that performance – that kind of stuff is pretty common too.

Anonymous 0 Comments

They need to make it work with new hardware, new versions of the operating system, other software,…

They need to patch newly discovered vulnabirities

And from time to time they need to add new functionality

Anonymous 0 Comments

Imagine you have a bike, and it’s running really well. You just need to oil it up with SuperBike™ lubricant before every ride.

Eventually, the company that makes SuperBike™ lubricant announces that they’ve developed a new formula called UltraBike™ which is better and cheaper to make. As such they’re no longer making the old lubricant.

The problem is that your bike, as is, won’t work with the new lubricant. So if you want to keep using your bike, you need to do maintenance by installing a new chain.

Anonymous 0 Comments

Some of it is adding new features or making sure existing features keep working as other software/hardware changes. Some of it is fixing bugs that hadn’t been noticed before. Some is improving performance.