Software Maintainability – Traits of Good Maintainability – Processes
What makes software maintainable? Let me first clarify that my goal here is to discuss what can be done to make it more maintainable, it’s not to just analyze whether existing code is maintainable. I say that because a number of researchers have invested time in studying the maintainability of software as an after-the-fact question. These researchers typically focus on the wide variety of complexity measurements that have been developed, e.g., Halstead’s Volume measurement, COCOMO Cost Factors, Lines of Code, Module Cohesion, Cyclomatic Complexity, Comments Volume, Average...
read moreWhy Should You Calculate an RPG Program’s Complexity?
As described in my previous post, Codelyzer now has the ability to calculate several code metrics for RPG programs, probably most usefully, a maintainability index (MI). This algorithm was developed a couple decades ago and was used extensively by HP internally. It has also been used by many others over the years and has been refined based on common experience. While the algorithm is claimed to be language independent, I do not know of anyone who has used it for RPG. Based on my initial observations I think it may need some adjustments for RPG, but I think it is well worth using as...
read moreHow Do You Calculate an RPG Program’s Complexity?
I recently completed the initial implementation of some RPG code complexity measures in Codelyzer. It has been shown for years on other platforms that having a systematic way of evaluating a program’s complexity facilitates improved planning, estimating, designing, testing, and system maintainability. Based on the research I’ve done, I initially decided on four measures which seem to be the most widely recognized and referenced, and have been around for some time. While I’ve seen no references to these measures for RPG, they have been widely used for COBOL, C, Pascal, Java, ...
read moreSoftware Maintainability – Traits of Good Maintainability – Names as Beacons
What makes software maintainable? One of the long accepted beliefs about program comprehension is that as programmers attempt to learn about a program they use what are called “beacons.” Beacons can be anything that a programmer recognizes as a signal of something they’re looking for. Beacons are used for both a) trying comprehend what a program does and b) trying to locate a particular feature in the code. To make a quick example, if a programmer is tasked with changing a refund calculation, he or she may start by looking for a certain field known to be involved with...
read moreSoftware Maintainability – Traits of Good Maintainability – Delocalization
What makes software maintainable? Rather than continuing the discussion of how to measure a system’s maintainability, I’m going to jump to an attempt to define it in AS/400 iSeries RPG terms. I don’t think I have all the factors neatly gathered at this point in time, so I will being posting what I have and add further posts throughout the week and in the future as the concept continues to take shape. Don’t consider this complete. The standards I’m using to judge maintainability are based on the ISO 9126 standard for measuring maintainability of a...
read moreDoes Documentation Help Maintenance?
One of the truisms of IT is that there’s never enough documentation. But ask yourself, your scientific self, does documentation really help software maintenance, and if so, what kind exactly and how? These kinds of questions are very difficult to answer as it’s very difficult and costly to arrange controlled experiments. Some researchers, however, have managed to execute at least small scale experiments and one such example was reported in “The Impact of UML Documentation on Software Maintenance: An Experimental Evaluation” ($) by Erik Arisholm, et al. As is common in such...
read more