Software rot refers to the slow degradation in the performance of computer software. Such software shows diminished responsiveness, lacks updates, may become faulty overtime owing to changes in the operating system it is running on and thus may need upgrading.
Software rot is also known as software erosion, code rot, software entropy, bit rot or software decay.
Techopedia explains Software Rot
Software rot is generally categorized into two types:
Dormant rot: Software that is not used on a consistent basis may eventually become useless as the rest of the application transforms. Variations in software environment as well as user demands play a role in the deterioration as well.
Active rot: Without constant application of ideal mitigation procedures, software that has undergone constant modifications might lose its integrity gradually. However, most software requires constant updates as well as bug fixing. This may lead to an evolution process, which ultimately makes the program deviate from its original design. As a result of this constant evolution, the logic engineered by the original designers tends to be invalidated, presenting new bugs.
The main reasons behind software rot are as follows:
Seldomly updated code
Fixing software rot is challenging; however, the following are some measures that can prevent or at least minimize the intensity of the rot:
Introduce code reviews: Include code reviews as a compulsory step before the release. A clear set of coding guidelines, in addition to training coders for review using these guidelines, is essential.
Create documentation: Include rules regarding commenting code in the coding guidelines, and make it mandatory for usage. This would force programmers to structure their comments in a consistent manner. This leads to an increase in readability across the code base.
Mentor new programmers: When adding people to an existing team, make sure to appropriately initiate them in the code base.
Hire the right ones: Hire the right people with the right set of skills specific for the requirement.