Description
Multiple systems within an EA model are designed independently at every level. It occurs when the interface of two components are different and yet the components themselves are quite similar. Subsystems are integrated in an ad hoc manner using multiple integration strategies and mechanisms.
Context
Derived from: “Stovepipe System”
Stovepipe is a popular term used to describe software systems with ad hoc architectures. It is a metaphor to the exhaust pipes of wood-burning stoves, so-called pot-bellied stoves. Since wood burning produces corrosive substances that erode metal, a stovepipe must be constantly maintained and repaired in order to avoid leakage. Often, the pipes are repaired with any materials at hand, thus wood-burning stovepipes quickly become a hodgepodge of ad hoc repairs – hence, the reference is used to describe the ad hoc structure of many systems.
Cause
Inexperience in developing multilayer architectures is one reason that can result in stovepipe systems. They can also be caused by insufficient team communication and a lack of design reviews.
Consequences
Technical and utility functions are implemented inconsistently. Development time of stovepipe services is considerably larger. Duplication and different implementations for the same functionality also has a negative impact on maintainability. Lack of commonality inhibits interoperability between systems, prevents reuse, and drives up cost; in addition, reinvented system architecture and services lack quality structure supporting adaptability.
Detection
Identical name or identical implementation. Stovepipe services typically have a large number of private implementations. Monolithic and undocumented architectures. In ArchiMate, we can detect this Smell by looking for services that provide similar functionality but have different names or interfaces. In order to detect a duplicate abstraction, one can be checked for identical implementations and terms in the model. We can not evaluate identical implementations within a graph because it requires much more low-level details. Therefore, a process manager is required to check for identical implementation between components. However, we can evaluate identical names by checking if two components have the same or similar names.
Solution
Refactor the common private features of all services into new technical services or utility components with a common interface. Coordination of technologies at several levels is essential to avoid a Stovepipe Enterprise. Initially, the selection of standards can be coordinated through the definition of a standards reference model.
Example
The components ‘Legal Expense CRM System’ and ‘General CRM System’ look similar, although having different interfaces.
Cypher query
MATCH p1=(a)--(b:ApplicationInterface|BusinessInterface|TechnologyInterface), p2=(c)--(d:ApplicationInterface|BusinessInterface|TechnologyInterface) <br /> WHERE a<>c and b<>d and apoc.text.jaroWinklerDistance (a.name, c.name) < $score <br /> UNWIND [p1,p2] as p <br /> RETURN pCypher count query
MATCH p1=(a)--(b:ApplicationInterface|BusinessInterface|TechnologyInterface), p2=(c)--(d:ApplicationInterface|BusinessInterface|TechnologyInterface) WHERE a<>c and b<>d and apoc.text.jaroWinklerDistance (a.name, c.name) < $score return COUNT (DISTINCT a)Diagram

Aliases
Alternative Components with Different Interfaces
Tags
soa, business, application, technology, ambiguity, The Object-Orientation Abusers, between elements
Query parameters
[
{
"name": "score",
"type": "range",
"default": 0.4,
"min": 0,
"max": 1,
"step": 0.1,
"description": "The similarity score ranges from zero to one, where zero indicates an exact match and one signifies no similarity between the strings."
}
]Related smells
- Scattered Parasitic Functionality (relates)
- Architecture by Implication (relates)
- Duplication (relates)