Commercial of the shelf (COTS) and the Internet of Services (IoS) – Recurring principles in Software Engineering

Surely, there are parallels between different visions or concepts in the field of computer science and much research in this field is about identifying these parallels to generate some learning outcome. However, today I had a discussion about the Internet of Services and the possibility to combine the different services to create mashup applications. In the discussion we compared this to the COTS principle.

Cardoso et al. introduce the USDL language so that services can be described on a business level. USDL supports a contract like definition for functionality. These services can be maintained by different publishes and can be combined, extended and easily swapped [1], which determines one of the key visions in the IoS domain.

Components in COTS represent existing functionality that can be used for free or after purchasing those. This components are then integrated in new software products. Li et al. describe the usage of components in the COTS principle which defines three phases for the component usage: selection, integration and maintenance [2].

However, IoS services are structured in internet-like networks. This approach is more flexible and dynamic than COTS. While components have to be selected at the beginning of the development phase, IoS tries to make “components” interchangeable allowing services to be changed dynamically. One huge problem regarding COTS is the replacement of similar components with the same functionality or a newer version. As soon as a new component is used software can behave unexpectedly due to changed execution paths. Often, they are put together to assemblies, which require specific versions. Therefore, the right management of components is important which is also the motivation for build manager like Maven which enables developers to specify the components that are required for a solution. [3]

So, it remains to be seen how IoS is going to handle these challenges.

[1] Cardoso, J.; Barros, A.; May, N.; Kylau, U.; , “Towards a Unified Service Description Language for the Internet of Services: Requirements and First Developments,” Services Computing (SCC), 2010 IEEE International Conference on , vol., no., pp.602-609, 5-10 July 2010
[2] Jingyue Li; Conradi, R.; Bunse, C.; Torchiano, M.; Slyngstad, O.; Morisio, M.; , “Development with Off-the-Shelf Components: 10 Facts,” Software, IEEE , vol.26, no.2, pp.80-87, March-April 2009
[3] Apache MAVEN,, accessed 15/02/2013