Description
The “Missing Negative Case” is a process anti-pattern. It occurs when in a model, only the positive cases are considered, and the negative ones are disregarded.Only positive results are modeled in the EA Process.
Context
Derived from: “Missing negative”
BPM anti-pattern.
Consequences
As Murphy’s Law states, if there is a chance of failure, it will happen. If we do not model failure it leads to undefined behavior in case it happens.
Detection
We can detect the “Missing Negative Case” EA Smell in the ArchiMate analogous to BPM by looking for elements with positive phrases without having the corresponding negative case in the model.
Solution
The EA process should be enhanced with more process paths that lead to different outcomes.
Example
There is an element “Product ordered successfully,” but no corresponding element, that addresses the opposing case.
Cypher query
MATCH p=(m)<-[r:TriggeringRelationship|FlowRelationship]-(j) <br /> WHERE any (name in $positivePhrases <br /> where toLower(m.name) CONTAINS toLower(name)) <br /> AND not EXISTS ((m)<--(:Junction {type: "or"})) <br /> RETURN p <br /> UNION <br /> MATCH p= (m)<-[r:TriggeringRelationship|FlowRelationship]-(j:Junction {type: "or"}) <br /> WHERE any (name in $positivePhrases where toLower(m.name) CONTAINS toLower(name)) <br /> WITH p, m,j <br /> WHERE not exists { <br /> MATCH (j)-->(t) <br /> WHERE m<>t <br /> } <br /> RETURN pCypher count query
MATCH p=(m)<-[r:TriggeringRelationship|FlowRelationship]-(j) WHERE any (name in [ "successfully", "without errors", "in Time", "Develop"] where toLower(m.name) CONTAINS toLower(name)) AND not EXISTS ((m)<--(:Junction {type: "or"})) RETURN count (distinct m)Diagram

Tags
Understandability Problems, Process
Query parameters
[
{
"name": "positivePhrases",
"type": "list",
"default": [
"successfully",
"without errors",
"in Time",
"Develop"
],
"description": "positive phrase(s) for specifying the positive cases."
}
]