Software Quality Glossary: Key Terms
Definition of Software rot
What is software rot?
Software rot, also known as code rot or software decay, describes the gradual decline in software performance, usability, and maintainability. It often occurs due to external factors, such as changes in operating systems, libraries, or hardware, or internal issues like poor coding practices.
Even software that remains untouched can become outdated as its dependencies evolve, creating compatibility issues. Deterioration can lead to bugs, inefficiencies, and increased difficulty in maintaining or extending the software. Without proactive measures, software rot can result in technical debt, reducing the system's lifespan and increasing costs.
What are the types of software rot?
Software rot can be categorized into three main types:
Active rot
- Occurs when frequent changes to the codebase (adding features or fixing bugs) degrade the software's structure.
- Symptoms include tangled code, reduced readability, and increased difficulty in maintenance.
- Often caused by skipping refactoring or failing to adhere to coding best practices.
Dormant rot
- Happens when software remains static but becomes outdated due to external changes.
- Examples include incompatibility with new operating systems, libraries, or hardware.
- Highlights the importance of maintaining dependencies and updating software regularly.
Conceptual rot
- Arises when the software's design no longer aligns with current user needs or business goals.
- Often seen when a system designed for a small user base struggles to scale effectively.
- Requires revisiting the architecture or re-engineering the software to stay relevant.
Understanding the types of software rot helps engineers prepare strategies to prevent or address them.
How do you spot software rot?
Several signals indicate the presence or potential of active and dormant software rot. These include:
- Increased bugs
- Slower development speed
- Degraded performance
- Frequent crashes
- High memory usage
- Delays in executing tasks
- Adding features or fixing issues becomes disproportionately time-consuming,
- Duplicated code
- Outdated dependencies
- Poor code structure
To identify conceptual rot, it is helpful to gather user feedback, which can highlight when the software no longer meets its intended purpose or user expectations. Enji helps teams track these indicators to notice rot early and address it effectively. Features that do this include:
- Code metrics: Monitor coding health and workflows to see where rot may have appeared.
- Summarizer: Receive concise, text-based updates on teams and projects to track performance and progress.
Key Takeaways
- Software rot refers to the gradual decline in software performance, usability, and maintainability.
- It typically occurs due to changes in operating systems, libraries, hardware, or poor coding practices.
- There are three types of software rot: active, dormant, and conceptual.
- Poor performance, an increase in bugs, slower speeds, and other signals indicate the presence of software rot.
- Enji's Code metrics and Summarizer features help teams stay informed about these indicators and monitor them to identify software rot early and address it.
Last updated in December 2024