|The Personal Software Process: an Independent Study|
|Prev||Chapter 3. Lesson 3: Planning: Estimating software Size||Next|
Instructive lesson-- also the most painful so far.
One thing I have learned is that, no matter how simple the problem statement, parsing through source code with an all-hand-coded program is painful and error-prone. This job could have been made much easier by the application of parser generators (lex/yacc, flex/bison on the C++ side, and possible Gobo Eiffel Lex/Yacc on the Eiffel side). The development times for the C++ programs are significantly larger than for the Eiffel code, but much of this stems from the fact that C++ code is just more difficult to parse for these tools (features outside of class declarations, etc).
The second big lesson from lesson 3 is that it is extremely difficult when "in flow" to remember to "break out of flow" and log your defects. Particularly during the difficult parts, I would realize that I'd fixed 2-3 defects without logging them, so the numbers are suspect, unfortunately. Design is not getting a sufficient enough hit; many of the errors marked as "code injections" were probably design issues which should have been ironed out earlier.
The third big lesson is that the PSP, in order to de adopted as an everyday practice, doesn't need minor automation-- it requires a major infrastructure. Time spend doing defect analysis for report R4 was helped by evalpplog, which analyzed the defect logs to find cross-references by lesson, but the information still needed to be hand-collated for the report. Even the postmortem gathering of information takes a significant amount of time. I'll try to work on this, but unless the PSP can be very much more automated than it is now, it will probably be viewed as unworkable. Sorting through diff logs of source code to try and manually identify modified lines is annoying under personal development conditions and unacceptable in professional conditions.
However, much of the root information involved is located in the source code itself and the time/defect logs. It should be possible to write a set of scripts that could automate much of this, but such a project is probably beyond the scope of this independent study.