Unsolved Software Maintenance Problems – Measuring Program Comprehension
(This post is part of a general discussion of unsolved problems in software maintenance. The initial list of these problems is defined in this previous post.) Can the analysis process that maintenance programmers engage in, so called program comprehension, be measured? Is it important to measure it? If it can be measured, is it then possible to improve it? Some studies have shown that program comprehension takes from 40-60% of maintenance programmers’ time. That indicates pretty clearly that this is worth measuring and improving if there is a way. But is there a way? There ...
read moreUnsolved Software Maintenance Problems – Estimating
This post is part of a general discussion of unsolved problems in software maintenance. The initial list of these problems is defined in this previous post. There are a number of problems associated with estimating maintenance work (by which I mean enhancement projects as opposed to production support fixes.) A summary of these problems includes: In some cases analyzing the programming changes to be made can comprise half or more of the total programming work. How can reasonable estimates be made without doing half the work? There are no comprehensive measurements ...
read moreLaws of Software Evolution – and A Couple Other Notable Observations
The development of IBM’s OS/360 in the 1960’s was a seminal event for software engineering leading to the well known book, The Mythical Man-Month, and also The Laws of Software Evolution spearheaded by Professor Meir Lehman, University of London. These laws are worth understanding for AS/400 shops supporting legacy RPG systems, as they give some insight into how software seems to degrade over time. And there are hints of some possible lessons for going forward. So here is a summary of the eight laws. I will add notes where a given law is not reasonably self-explanatory, ...
read moreProgram Comprehension – Program Slicing Part 2
Following up from Part 1 of this topic, let me conclude the Program Slicing topic by making an RPG example that should make it very clear. In this very simple example of Backward Slicing two files have new records written; the naming conventions should be self-explanatory for which fields are in which file. After Step 2, the five red statements represent the backward program slice for the WRITE CUSTFMT statement. After Step 4, the three blue statements represent the backward program slice for the WRITE ITEMFMT ...
read moreProgram Comprehension – Program Slicing Part 1
Have you ever tried to understand a large program by mentally paring away portions you weren’t concerned with? If so, you were using Program Slicing. In its original conception this technique was the process of deleting (slicing) statements from a program that are not relevant for understanding a particular statement and its variables. In order to simplify the code being dealt with, the programmer sliced away unrelated statements for purposes of understanding a large or complex program. The slicing activity could take place in temporary versions of source or simply in the...
read more