I was reading, Facts and Fallacies of Software Engineering, which has a section of maintenance. Since, I'm have been a maintenance developer for years now, I was very interesting facts presented. Here's three.

  • Fact 41: Maintenance typically consumes 40 to 80 percent (average, 60 percent) of software costs. Therefore, it is probably the most important life cycle phase of software.
  • Fact 42: Enhancement is responsible for roughly 60 percent of software maintenance costs. Error correction is roughly 17 percent. Therefore, software maintenance is largely about adding new capability to old software, not fixing it.
  • Fact 45: Better software engineering development leads to more maintenance, not less.

This one was counter-intuitive, turns out that good software has more maintenance, because it's easy to change. Hence, it stays in use longer, leading to, yes, more changes.

Which paradigm (such as functional, object-oriented, procedural) has the best maintainability, and is there any research to back this up?

closed as not constructive by Morons, Tom Squires, Otávio Décio, yannis, ChrisF Dec 8 '11 at 23:25

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

  • I own a copy of Facts and Fallacies, and for each fact (and fallacy), there are citations for various publications that support it. I don't have a copy handy, but do any of those citations discuss the effect of the paradigm on maintenance? – Thomas Owens Dec 5 '11 at 16:01
  • The book was written in 2003, much of the conclusions are still relevant today. I was curious if people had any new studies on particular paradigms. Maintenance seems like an overlooked part of the discussion. – KaizenSoze Dec 5 '11 at 16:14
  • If any of the studies or publications cited in Facts and Fallacies are about the maintainability of a particular paradigm, one option would be to search the IEEE or ACM databases for other articles and papers that cite that paper. If you don't have access to the IEEE or ACM databases, I can look at my copy of the book when I get home and see if I can do such a search. Unfortunately, I'd only be able to get you names of other papers and not the papers themselves. – Thomas Owens Dec 5 '11 at 16:21

I think you will find that paradigms such as functional, OO, and procedural probably don't corellate with software maintainability in a meaningful way.

What you might find the following corellates much more clearly with software maintainability:

  • Level of requirements gathering and requirements engineering

  • Good development practices: (Loose coupling, High Cohesion, Unit testing, YAGNI...)

  • Skilled and qualified software engineers (They are worth 10 times as much as a moron)

  • Qualified and organized technical QA team

  • Good project management led by competent project managers (Even harder to find than skilled software developers IMHO)

  • Good Product Owners or application managers, strong leadership, good long-term direction, good feedback to the project teams, overall vision.

  • +1 I want to add good documentation to the list – treecoder Dec 5 '11 at 16:44
  • +1 Add "Value Focused" Process to the list. The process defines and drives whats done and not done. What the process measures is important, and what the process does not measure is unimportant. Especially true when the HR guys start filling seats with "morons". – mattnz Dec 5 '11 at 20:48

This one was counter-intuitive, turns out that good software has more maintenance, because it's easy to change. Hence, it stays in use longer, leading to, yes, more changes.

You seem to be viewing this from the amount of maintenance and not the percentage of cost. Good software that has more features added is just a larger amount of software. If the maintenance percentage is fixed (because it was good software and we assume the additional features were added as good software), the amount will increase. It's just a larger piece of pie with the same number of slices.

Based on what your asking, it matters whether the "good" software was written in: functional, OOP, or procedural code. Will giving someone a laser-guided power saw save on wood if the person doesn't know how to measure?

Not the answer you're looking for? Browse other questions tagged or ask your own question.