Can Agile Methods Work for Software Maintenance? Part 2

If you read Part 1 of this post you’ll recall I reviewed the 12 original points of the Agile Manifesto and commented on their suitability for legacy enhancement projects (as opposed to production support work.)  Now I’d like to expand on the first of the points, one of the most essential points that makes Agile what it is: Early and continuous delivery of valuable software In my own experience this can be very problematic for sizeable legacy enhancement projects – it is possible, but I think only in the right circumstances.  What are the objectives of this anyway?  Why is it...

read more

Software Maintenance Measurements – An Inventory

In order to track and improve a software maintenance operation what should you measure?  One way to look at this is that from an organization’s point of view the objective is to maximize a system’s “maintainability”.  That’s maintainability in a very broad sense, for example as described in Maintaining Maintainability by Ramage and Bennet a number of factors influence maintainability: Users Processes Documentation Availability of software authors for consultations Skills of maintenance programmers Tools available to aid the maintenance process The software itself For each of...

read more

Interesting Statistics – Part 2

I’ve been considering adding a feature to Codelyzer to assist with calculating function points (FP) in RPG programs, and as part of that I’ve been reading “Applied Software Measurement, Global Analysis of Productivity and Quality” by Capers Jones.  As always, Mr. Jones writes very clearly and provides a great deal of interesting and to the point information. Much of the statistical reporting and analysis in the book is based on the function point unit of measure.  (For those of you not familiar with function points, I will write an explanation of them in the near future.) ...

read more

Goals of Software Maintenance

I have been digging around in a lot of areas regarding software maintenance, so I decided to step back and look at the bigger picture.  I thought it would useful to define the goals of software maintenance, so I surveyed a number of resources.  One list of goals I like can be found in “Critical Success Factors in Software Maintenance – A Case Study” ($) by Harry Sneed and Peter Brossler.  Here are the goals they define: Functionality – Existing functionality should be preserved (unless intentionally deprecated) and new functionality should be added as needed.  Typically the...

read more

Can Agile Methods Work for Software Maintenance? Part 1

The short answer is, yes, well, maybe no, or better yet, yes and no.  But let me first define this question a little more.  Software “maintenance” is an ambiguous term.  The ISO ($) defines four types of maintenance: Corrective maintenance: corrects discovered problems; Adaptive maintenance: adapts software to changing needs; Perfective maintenance: improves performance or maintainability; Preventive maintenance: corrects latent faults in the software before they become effective faults. The first, corrective maintenance is what we usually think of as bug fixes and production...

read more

What 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