Vendor Lock-In

Written by

in

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 p

Cypher 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

Diagram for Vendor Lock-In

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

All smells