Replaceability occurs when software components are developed using open, well written, standard specifications, usually captured as an Application Programming Interface (API). The standards can be either technical (i.e., developed by a Standards Organization) or de facto (i.e., developed by a for-profit or Non-Profit Organization (NPO) corporation). Replaceability is also a key factor in preventing Vendor Lock-In.
Replaceability is not just about the ability to switch suppliers and avoid Vendor Lock-In1) of the components, it's also about managing risk to the target system. This is especially true because each component can have its own Lifecycle with its own End-of-life (EoL) timelines, independent of the target system. In addition to the components' lifecycle, many components are now Open Source Software (OSS), which can often have forks spawning newer and competing products with similar, but not identical APIs. A recent article describes the Best Message Queue (MQ) Software of 2020. It describes 30 of the “top” Message Queue(MQ) Message-Oriented Middleware (MOM) software products.2):
Obviously, not all these products have the same API. They definitely do not have the same Wire Protocol, so it is very difficult to “mix and match” Publishers and Subscribers. In a distributed system, this would require all the components within the system to upgrade at the same time, sometimes referred to as a “Reboot the World Problem”. And when the upgrades occur, each part of the system requires complete Regression Testing to make sure that all the parts of the system continue to operate and function according to the specifications.
Replaceability is closely related to Adaptability and the kinds of Installers Architecture and Software Adaptability. Whenever there is an architecture or software adaptability issue, there is probably a Replaceability issue as well. Additionally, the concepts of Installability and Replaceability overlap. The harder a system or a product is to install, the greater the probability it will also be hard to replace.
Competitive products within the same domain are ideal candidates for Replaceability. However, replacing products should not just be driven by the cost of acquisition (i.e., purchase price) but also on the Total Cost of Ownership (TCO), which considers the cost throughout the lifecycle of the target system or component including maintenance (see 4.3.3 Maintainability). This cost can be tied to other tangential products such as debuggers, performance monitors, loggers, or any of the Non-Functional Requirements.3)