Program Comprehension – Key Statements Analysis
The final technique for Program Comprehension I’m going to talk about is Key Statements Analysis (KSA). This is a process which requires some sort of automation as it involves a lot of computations. I am considering trying this out for Codelyzer. KSA basically works by evaluating a large number of a program’s Program Slices. One KSA method is done by using the backward program slicing technique and another method is done by using the forward program slicing technique. The KSA backward slice technique begins by identifying the set of variables that are output from the program plus...
read moreProgram Comprehension – Concept Assignment Part 3
Before I talk about Concept Assignment using Static Analysis, let me explain why I think this is important and worthwhile reading for any AS/400 RPG developers or managers doing maintenance work: I believe that the maintenance process can be significantly improved by anyone who makes the effort to understand what is actually going on in maintenance work. I think most people just say, “go make these changes,” and that’s as much instruction as anyone typically gets. But in fact, there are a great many ways the process can be improved – both speed and quality – and it...
read moreProgram Comprehension – Concept Assignment Part 2
Concept Assignment through the use of Dynamic Analysis (aka, Dynamic Searching, Software Reconnaissance) is a means of locating the code that implements a given concept (a feature), by examining trace results from program executions. In this type of analysis two runs of a program are executed. One run causes the sought after feature to be executed and the other run causes the feature to not be executed. The resulting sets of trace data are compared to find the statements that uniquely executed when the feature was run. For example, let’s say we want to find the code that...
read moreProgram Comprehension – Concept Assignment Part 1
Concept Assignment occurs when a programmer maps his or her real world knowledge to particular lines of source code. For example, a concept might be “we only give refunds for 30 days after the sale.” To perform concept assignment the programmer would take that concept and attempt to find all the code related to its implementation. Let me say at the outset, Concept Assignment is one the most poorly understood and developed areas of software maintenance and program comprehension. The problem is that to fully understand Concept Assignment means we must fully understand how people...
read moreProgram Comprehension – Three Techniques for Zeroing In
In the next few posts I’m going to cover in some detail three of the techniques that have been developed for zeroing in on functionality when maintaining programs. I think these techniques are all potentially useful to RPG maintenance programmers who must maintain large, complex RPG programs on the AS/400, iSeries they are not totally familiar with: Program Slicing Concept Assignment Key Statement Analysis Program slicing is the process of slicing away portions of the program you are not concerned with. The process usually begins once you have located a statement that sets a...
read moreWhat Happens During Software Maintenance? Anatomy of a Session – Part 2
If you followed Part 1 of this topic then you should understand that not only is it good to organize maintenance around changes rather than versions, but you might also see that doing so could provide a lot of information about how programmers go about their work. The authors of the study mentioned in Part 1 did some detailed investigation of maintenance programming sessions. They identified six types of sessions and used building maintenance as a metaphor (adapted here for RPG): Session Type Description Decoration The finest level of changes, such as changing individual ...
read more