The purpose of this document is to explore suitable maintenance metrics for agile methods. Software maintenance defined as ‘the process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment’, comprises of four kinds of software maintenance, e.g.:
- Corrective maintenance corrects faults in hardware or software.
- Adaptive maintenance makes a computer programme usable in a changed environment.
- Perfective maintenance improves the performance, maintainability, or other attributes of a computer programme.
- Preventative maintenance prevents problems before they occur.
Relatively new, light weight software development methods and processes, Agile methods attempt to reduce the bureaucracy of the software development process, so as to minimize time to market.
Adaptive rather than predictive, agile methods welcome change and are people-oriented rather than process-oriented engineering methods. The Agile model is about small projects, bug reports and story cards, developer estimate, customer prioritisation of bugs, bug tracking database, QA test and writing functional acceptance and failing unit tests, fixing unit and functional tests, regression testing before release.
Designed to handle changing requirements, so that the product can be maintained right from the start, Agile maintenance methods have been successfully used. Since, maintainability is dependent on product environment; both product and documentation need to be maintained. And, as product structure predicts the effectiveness of a maintenance process, it proves itself to be a far more practical method, as internal measures are available earlier than external process measures.
Maintenance process is about making product changes i.e. to codes, documents, etc. whenever necessary, with maintenance done using agile methods validated, based on the same measures as other processes.
Being less dependent on documentation processes, Agile methods usually produce less documentation, making the development process more dynamic, with product design evolving during implementation. Therefore, it is but natural to doubt the maintainability of products produced using Agile methods. However, it has been proved that it is possible by offshore firms like AgileCollab and XCbia. With sufficient experience in using Agile methods in client projects, they know how to maintain end products these methods produce.