modern commercial off the shelf software often has application programming interfaces (APIs) for extensibility - or occasionally, as in the case of Salesforce.com, a domain-specific language (DSL) - meaning that commercial off the shelf software packages can sometimes accommodate quite a wide variety of customisations without the need to access source code of the core commercial off the shelf software system. Additionally, commercial off the shelf software comes with upfront license costs which vary enormously, but sometimes run into the millions of US dollars. Furthermore, the big software houses that release commercial off the shelf software products revamp their product very frequently. Thus a particular customization may need to be upgraded for compatibility every two to four years. Given the cost of customization, such upgrades can also turn out to be expensive, as a dedicated product release cycle may have to be earmarked for them. However, in theory, the use of documented APIs and/or DSLs, as opposed to direct access to internal database tables and code modules, for customization can minimize the cost of these upgrades. This is because commercial off the shelf software vendors can opt to use techniques such as: making "under the hood" changes while retaining backward compatibility with customizations written for older API or DSL version(s) supporting old API version(s) and new API versions simultaneously in a new version of the software publishing guidance warning that support for old API or DSL versions is to be removed from the product in a subsequent version, to give customers more time to adapt customizations. The decision to build a custom software or go for a commercial off the shelf software implementation would usually rest on one or more of the following factors: Finances - both cost and benefit: The upfront license cost for commercial off the shelf software products mean that a thorough cost-benefit analysis of the business case needs to be done. However it is widely known that large custom software projects cannot fix all three of scope, time/cost and quality constant, so either the cost or the benefits of a custom software project will be subject to some degree of uncertainty - even disregarding the uncertainty around the business benefits of a feature that is successfully implemented. Supplier - In the case of commercial off the shelf software, is the supplier likely to remain in business long, and will there be adequate support and customisation available?