Software maintenance is a very broad activity that includes correcting errors, improving capabilities, removing obsolete features, and optimization.