Where should the line be drawn between maintenance and new features?
The Oxford English Dictionary defines maintenance as:
(7.a) The action of keeping something in working order, in repair, etc.; the keeping up of a building, institution, body of troops, etc., by providing means for equipment, etc.; the state or fact of being so kept up; means or provision for upkeep.
I'm working with a client-server application and maintaining the client. In line with the definition, I would expect to perform:
I would not expect to perform:
The Wikipedia Software Maintenance page references corrective, adaptive, perfective, and preventative maintenance, which seem to fall in line with what I'd expect, but the client-server nature complicates matters.
EDIT: With standalone applications that have no dependencies, if the software works it should continue to work. With client-server applications, the client may break when the server changes. Although this does not change the definition of maintenance it implies that there are more opportunities and occasions when changes to the client application will be necessary.
If two parties are to agree on a maintenance contract, a mutual understanding of what qualifies and maintenance and what qualifies as new features must be met, hence the question.
The line between bug fix and feature can get blurry. I would consider usability enhancements and minor features as maintenance. My rule of thumb: if it's not worth bragging about to your customers (or charging for), then it's maintenance.
As an example, adding a feature allowing the user to print would be new development. Modifying the feature to allow the user to print a certain range of pages would be maintenance (it's minor, and probably should have worked that way from the start).
I would say maintenance is anything that you do to ensure that the product works as originally designed.
The sticking point there is usually "designed". If you didn't start off with some form of detailed design document specifying what the software would and wouldn't do, things are up for interpretation. And when things are left up to interpretation, generally the customers interpretation will be that the software is supposed to do everything they want it to do rather than everything they paid for it to do.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With