Software maintenance can consume as much as 90 percent of all the total effort expended on a system in its lifetime. Some computer scientists prefer to use the term evolution rather than maintenance to indicate that a product normally and naturally evolves over time.
Many companies budget only for the cost of initial delivery of software and not the maintenance costs thereafter which then manifests into technical problems. These technical problems can lead to an application where no-one dares to carry out changes or changes are no longer in proportion to the costs they incur. This is often referred to as technical debt.
Software in any form needs maintenance. On premise software (also known as licenses software) often requires a maintenance contract. Set for a fixed percentage per year (around 22%) the owner of the software will receive updates, new features and any defects or imperfections will be repaired. A relevant question is whether these new features will actually be desirable. Often these are not used and usually do not come cheap.
Custom Software built for a specific service or application also needs maintenance. Unlike on-premise software, the client must agree on an annual maintenance contract with the supplier to ensure that necessary maintenance is executed.