Maintainability represents the ease in which the system can be changed after it has been delivered and is in use. Such changes could involve the simple correction of coding errors, through to the correction of design errors, the correction of specification errors, or the introduction of new system requirements.
Three different types of software maintenance exist, corrective, adaptive and perfective. Corrective maintenance deals with the fixing of errors within the software. The higher level the correction the more expensive it tends to be to fix. Adaptive maintenance deals with altering the software so that it can operate in a new environment, for example on a different hardware platform. Perfective maintenance deals with the implementation of new functional or non-functional requirements. These are normally generated when the nature of the end-users organisation of business changes.
One major issue with maintaining a P2P system is updating
the software on all the nodes of the network. This could be an automatic
update, or a manual one that is performed by the user. For the latter it cannot
be assumed that all users would perform the upgrade and so the system may have
to be able to cope with different versions of itself. Furthermore, the lack of
updating the system could be particularly important should the update patch a
security flaw within the system.