Maintainability is often included as a component of software quality, and as with so many software quality components, there has been much effort expended on measuring. For me trying to measure “software quality” in any manner seems to mimic something that I might see on the TV show “Numbers”, it is WAY over my head. While I was looking into “software maintenance” via a recent Google search, I discovered an interesting paper titled “Can We Measure Maintainability?“. Once again I’ll leave these academic discussions for the “experts”, and just put out here my thoughts on the subject, right, wrong or somewhere in-between.
I recently had the opportunity to dig through some “old” code that I produced in an effort to determine the feasability of adding another “valid” value for a field. Now, this kind of maintenance is nothing out of the ordinary. The code is part of a legacy application program that has been in use for years. It’s not that something is broken, it’s just that this added functionality will provide value. Great!
Yet as I reviewed the code and programs which used the main table affected by this “addition”, I was keenly aware of the possibility that I could fail in my attempt to provide the change, and it would have nothing to do with the code itself, but rather the environment itself. For one thing, I no longer have the UNIX development system which created this application, and I have to depend on the DOS based system to compile the program. Fortunately this works — but it got me to thinking that given many other development environments, I would not be able to just move the resulting executable to the different platform and have it work as this does. That the compiled program will function on another platform is a good example of portability — another component of software quality by some standards.
The paper referenced above had me thinking about maintainability in a more complete way. In order to continue to provide changes to this program there are factors other than the code itself that can affect its maintainability. Things like operating environment availability for the development, and skill of the programmer needed to perform the maintenance affect the maintainability in particular. Whether the code is stellar, or a stellar example of poor code, without these two components the software is not maintainable.
How would you measure these? I certainly don’t have an answer! The simple fact regarding this application however is that it has been in operation well over 10 years — there must be some kind of quality built in!