Combinatorial Explosion

Written by

in

Description

A subtle form of Duplication, this smell exists when numerous elements do the same thing using different combinations of data or behavior.

Context

Derived from: “Combinatorial Explosion”

Cause

Lack of refactoring and awareness of changing concerns, making naive design decisions.

Detection

Services implement identical behavior but rely on different data sources. According to the ArchiMate specification, if two abstractions realize the same behavior, each can fully implement the behavior. However, both services provide identical functionality in this scenario while accessing separate data sources, leading to duplication.

Solution

Factor out strategies, such that the common functionality is provided once.

Example

The existence of “Combinatorial Explosion” in the EA domain may have different reasons. According to the graphical example, two services provide the same functionality but get the data from two different sources because the data can not be shared.

Cypher query

MATCH (a)-[r:RealizationRelationship]->(b) <br /> WITH b, COUNT (a) AS implCount <br /> MATCH p = (d)-[r1:AccessRelationship|AssociationRelationship]-(a)-[r:RealizationRelationship]->(b) <br /> WHERE implCount>1 <br /> RETURN p

Cypher count query

MATCH (a)-[r:RealizationRelationship]->(b) WITH b, COUNT (a) AS implCount MATCH p = (d)-[r1:AccessRelationship]-(a)-[r:RealizationRelationship]->(b) WHERE implCount>1 RETURN count (distinct a)

Diagram

Diagram for Combinatorial Explosion

Aliases

Missing Encapsulation

Tags

business, application, technology, The Dispensables, between elements, abstraction

Related smells

All smells