Software Evolution - this term refers to the process of developing applications initially, then then timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities etc. The software must evolve to meet the changing customer needs.