Commercial Off the Shelf (COTS) are the readymade products which can be used in place of the in-house development. The use of COTS is mandated in many scenarios as they offer significant scenarios in procurement and maintenance.
A Typical COTS implementation on a project can reduce the development time by at least 50-60% depending on the availability, suitability.
In many scenarios, when there are less skilled workers who can develop a complex piece of the actual application, the COTS implementation can save the organization a lot in maintaining the desired quality of deliverables in the same or less duration with proper implementation of the COTS implementation.
Some of the key advantages of COTS implementation are
- Reduced cost
- Reduced development time
- Faster Time to Market (TTM)
- Performance and other standardization of implemented software
While the downside of the COTS implementation are
- Increased Complexity in the application
- Lot of Application Integration
- The COTS applications are not exactly same as the required software and need to have some amount of Customization depending upon their suitability of the current product.
- Often No/ Less Control of the Application
- Difficult to Debug in most of the cases
- Impossible to evolve the products as per your needs
- Obligations to upgrade the products and wrap the code to the newly implemented versions of the COTS implementation which can lead to a lot of changes especially in the cases when the COTS implementation is itself evolving.
While deciding between COTS vs. building In house Application, it is very important to do a feasibility analysis of the all the aspects of the COTS application and current application requirements.
Open Source Application (OSS) are one of the most favored applications for integrating with the current products and helps in reducing the development time and effort to a large extent. They also reduce the chances/ dependency on the specialist resources in a number of cases.
OSS based solutions are different from the COTS based implementation in the fact that they are freely available, there is an unlimited access to their source code, the application can be freely distributable and the end user can modify the application as per their application specific needs. There is additionally no discrimination on the basis of the users or the usage.
however, when it comes to COTS, there are numerous debates on including the OSS products into the COTS category among many researcher, developers, implementers.
Cots based software development (CBSD) adds more towards configuring software systems from pre built software applications and bought/sold at their market places.
OSS products affect software development further, by pushing developers towards software solutions that are freely available and may have visible source code and give rights to make relatively imaginary derivatives. The lack of standards and well defined COTS/OSS products identification, selection and evaluation approaches have led much organization to invest in poor product choices. There is a lot of confusion on the way the COTS/OSS products are marketed. This leads to poor information at the end user who in turn makes the selection from an arbitrary list of COTS/OSS products and then lands into a lot of problem in the later stages of either the software development / maintenance.
Some of the decisive factors which can affect the selection and implementation of COTS/OSS products are as follows:
| Decisive Factors | Description |
| Functionality | The ability of the COTS/OSS product to solve a business problem and help in the better integration and implementation of the product. The user should look into the functionality offered by the product, ability to tailor the product to their own requirements etc. needs to be verified |
| Price | The user needs to understand the cost associated with the product like the · Acquiring Cost · Licenses (Server and Client) · Upgrades cost |
| Environment | The user needs to understand all the software and the hardware components that are required for effective integration and implementation of a COTS / OSS based Software. |
| Support and Maintenance | The user also needs to understand all the sources available for technical and not technical support which may be required by the integrators / implementers of the solution from time to time. |
| Quality Assurance | The user should also look for the feedback and information available about such products to have a better understanding about their scalability, and stability of the application. |
The software architect needs to evaluate the following information in order to support a COTS based implementation:
· Organization Vision and Strategy: While supporting the case for COTS based software development (CBSD), one should acknowledge the organizational vision and strategy. Some of the organization have mission critical systems and find it very difficult to trust on the COTS/OSS based implementations. Additionally, it also change the focus of the organization, it may end up being a good integrator of one or more systems rather than developing them by themselves.
· Business and Market: The user must also look into the fact about the business and the market conditions. Some of the possible things to evaluate could be:
o Time To Market (TTM): In many cases, developing software could lead to a lot of time in implementing the software and a lot of expertise. However, an active integration with a COTS product can help in reduced time to market as the user effectively needs to integrate the product with their active suite rather than building them from the scratch.
o Net Value of the Products: In many cases, the COTS/OSS implementation is not exactly up to the requirements for the actual software requirement. A COTS implementer needs to understand the benefits and the sacrifices of the implementation. In case, if the COTS based products needs to be tailored as per the current requirement, then the user needs to understand the cost of modification for understanding the net value of the product. The user also needs to understand whether this is a onetime tailoring or whether it needs to be tailored for each possible implementation of the product.
o Control Points: This may be termed as the competitive advantage to the user on the implementation of COTS based software. If the COTS based implementation allows the user to integrate a solution which can bring them an edge over the other implementations in the market.
o Revenue Logic: The user also needs to understand the revenue logic. If the COTS based implementation has a onetime cost, then the cost gets distributed for all the implementations, however, if the cost is for each of the implementation, then the cost will be added to each of the implementation.
· Processes and Architecture: A number of things needs to be considered from the process and architecture of the end product:
o Technical evaluation of the product
o Commercial evaluation of the product from the cost benefit analysis
o Legal evaluation for the licenses and up gradations
o Make or buy decisions
o Integration complexities
Some of the variations of the COTS are
· MOTS (Modified – Of – the – Self) : This is a COTS based product which has been tailor made to buyer-specific requirements by the component vendor.