Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What qualifies as maintenance vs. adding new features?

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:

  • Bug fixing
  • API Adaptations (minor changes necessary for the client to continue to work with the server)
  • Optimization for identified performance problems

I would not expect to perform:

  • New development (adding new functionality)

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.

like image 574
Kaleb Pederson Avatar asked May 29 '09 19:05

Kaleb Pederson


2 Answers

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).

like image 72
Jon B Avatar answered Nov 22 '22 11:11

Jon B


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.

like image 44
Eric Petroelje Avatar answered Nov 22 '22 12:11

Eric Petroelje