Description
The Vendor Lock-In is an anti-pattern when a product becomes strongly dependent on a technology provided by a vendor.
Context
Derived from: “Vendor Lock-In”
Standardization is a useful part of any technical domain, but standards are commonly set by large software vendors and do not focus on compatibility with other standards.
Cause
The tendency to standardize all technical aspects and dimensions leads to such an overstandardization.
Consequences
Being overly reliant on a vendor’s technology impacts the software quality, and the cost of switching to another technology becomes so high that the software is forced to stick with the current vendor.
Detection
ArchiMate has no clear distinction between external and internal services. Hence, it is reasonable to presume that a property or element’s designation should indicate the service as an external offering from a vendor. Therefore, we can assume a property or element’s name specifying the service as an external service or a product some vendor offers. If such an external service does not have an interface as an isolation layer, then the model could suffer from Vendor Lock-In EA Smell.
Solution
An Isolation layer is a solution to avoid such a strong coupling between the product and vendor’s implementation.
Cypher query
MATCH p = (n) <br /> WHERE n.name in $external <br /> AND NOT EXISTS{ <br /> (n)--(i) where toLower(i.ClassName) contains toLower('interface') <br /> } <br /> RETURN p <br /> UNION <br />MATCH p = (n) <br /> WHERE ANY (x in keys(n) WHERE n[x] IN $vendors OR toLower(x) IN $external) <br /> AND NOT EXISTS{ <br /> (n)--(i) where toLower(i.ClassName) contains toLower('interface') <br /> } <br /> RETURN pCypher count query
MATCH (n) <br /> WHERE ANY (x in keys(n) WHERE n[x] IN $vendors OR toLower(x) IN $external) <br /> AND NOT EXISTS{ <br /> (n)--(i) where toLower(i.ClassName) contains toLower('interface') <br /> } <br /> RETURN count(DISTINCT n)Diagram

Aliases
Standardization Paralysis, Product-Dependent Architecture
Tags
soa, application, technology, The Change Preventers
Query parameters
[
{
"name": "external",
"type": "list",
"default": [
"external",
"vendor"
],
"description": "The property of the element that marks it as external."
},
{
"name": "vendors",
"type": "list",
"default": [
"IBM",
"Microsoft",
"Amazon",
"Provision"
],
"description": "Vendors' name(s)."
}
]Related smells
- No Legacy (relates)
- Nanoservices (follows)
- Dead Component (precedes)