Why Software Changes¶
Adding new features¶
Software solves dynamic and complex problems. To meet the changing needs of users, new features are added and existing features are continuously improved.
Removing low-value features¶
Each line of code adds complexity, and possibly additional resource burden, to the application. Parts of an application that no longer add significant value should be removed.
Fixing bugs¶
Even the best systems have unexpected bugs that need to be fixed.
Changing a technology implementation detail¶
Applications grow over time, and may need changes in hardware.
Third-party vendors (those providing software or hardward that don't directly work for your organization) may change terms, adjust prices, or go out of business.
Very often, technologies simply "age out". This may leave the system in a state where components are incompatible; part of the solution can no longer work well with another part.
Removing technical debt¶
Technical debt is the future costs associated with relying on shortcuts or suboptimal decisions made during software development. We will spend most of this book learning how to mitigate (prevent) and remediate (fix) techinical debt.