Useful software is never a one shot development product. Rather over its lifetime new functions are added and it is adapted to new environments.
In the words of Lehman's law: A system that is used will be changed.
Such extensions and adaptations should be done with care.
Lehman's second laws states:
An evolving system increases its complexity, unless work is done to reduce it.
Software maintenance is concerned with correcting existing defects and adding extensions,
while keeping complexity low.
Evolution of large systems requires a systematic approach to software understanding,
since knowledge about the internals of a system evaporates over time.
FEAST project (Feedback, Evolution And Software Technology) of Lehman