You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merges two bounded contexts together. The result is one bounded context containing all the aggregates of the two input bounded
7
7
contexts.
8
8
9
+
<divclass="alert alert-custom">
10
+
<strong>Known limitation:</strong> Unfortunately, this AR does not work in <ahref="/docs/vs-code/">VS Code</a> and <ahref="/docs/online-ide/">online</a> in case the removed Bounded Context is referenced in a Context Map. This is due to <ahref="https://github.com/eclipse/xtext-core/issues/1494">a bug in the Xtext framework</a>.
11
+
</div>
12
+
9
13
## Context & Rationales
10
14
By decomposing a system into multiple bounded contexts we aim for loose coupling between the bounded context and a high cohesion
11
15
within them. However, sometimes a decomposition may be too fine-granular and merging bounded contexts with a high
Splits a bounded context by grouping those aggregates together into one bounded context which are used by the same features: use case(s) and/or user stories.
7
+
8
+
**Hint:** An aggregate in CML can belong to multiple use cases and/or user stories (therefore the plural _Features_ in the AR name).
9
+
10
+
## Context & Rationales
11
+
By decomposing a system into multiple bounded contexts we aim for loose coupling between the bounded context and a high cohesion
12
+
within them. One approach to achieve this and to decompose a system into components or (micro-) services is to split by use cases and/or user stories.
13
+
14
+
**See also:**
15
+
* Coupling criterion [Semantic Proximity](https://github.com/ServiceCutter/ServiceCutter/wiki/CC-2-Semantic-Proximity) of [ServiceCutter](https://servicecutter.github.io/)
16
+
*[How to decompose the application into services?](https://microservices.io/patterns/microservices.html#how-to-decompose-the-application-into-services) by [Chris Richardson](https://microservices.io/book)
In Context Mapper you can assign multiple use cases and/or user stories to an aggregate, which allows you to model by which features an aggregate
20
+
is used. Consult our [aggregate documentation page](https://contextmapper.github.io/docs/aggregate/#aggregate-use-cases) to see
21
+
how this can be modeled in CML. The [user requirements](/docs/user-requirements/) page documents how you specify your user stories and/or use cases.
22
+
23
+
## Goal
24
+
This Architectural Refactoring (AR) splits a bounded context by features (or _user requirements_). This means, it creates bounded contexts containing aggregates which are used by the same use cases and/or user stories. It can be applied if your model exhibits a bounded contexts with aggregates which are used by different cases/stories.
Splits a bounded context by grouping those aggregates together into one bounded context which are used by the same use case(s).
7
-
8
-
**Hint:** An aggregate in CML can belong to multiple use cases (therefore the plural _use cases_ in the AR name).
9
-
10
-
## Context & Rationales
11
-
By decomposing a system into multiple bounded contexts we aim for loose coupling between the bounded context and a high cohesion
12
-
within them. One approach to achieve this and to decompose a system into components or (micro-) services is to split by use cases.
13
-
14
-
**See also:**
15
-
* Coupling criterion [Semantic Proximity](https://github.com/ServiceCutter/ServiceCutter/wiki/CC-2-Semantic-Proximity) of [ServiceCutter](https://servicecutter.github.io/)
16
-
*[How to decompose the application into services?](https://microservices.io/patterns/microservices.html#how-to-decompose-the-application-into-services) by [Chris Richardson](https://microservices.io/book)
Copy file name to clipboardExpand all lines: _docs/architectural-refactorings/ar-suspend-partnership.md
+5
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,11 @@ relationship and replace it with another strategy how the two Bounded Contexts d
19
19
20
20
Since the two teams have to work very closely together, a solution might be to merge the teams and see them as one single Bounded Context.
21
21
This strategy basically calls the [AR-7 Merge Bounded Contexts](./../AR-7-Merge-Bounded-Contexts) refactoring to merge the two contexts.
22
+
23
+
<divclass="alert alert-custom">
24
+
<strong>Known limitation:</strong> Unfortunately, this strategy does not work in <ahref="/docs/vs-code/">VS Code</a> and <ahref="/docs/online-ide/">online</a> in case the removed Bounded Context is referenced in a Context Map. This is due to <ahref="https://github.com/eclipse/xtext-core/issues/1494">a bug in the Xtext framework</a>.
25
+
</div>
26
+
22
27
23
28
***b) Extract a new Bounded Context for commonalities and establish upstream-downstream relationships:**
Copy file name to clipboardExpand all lines: _docs/architectural-refactorings/architectural-refactorings.md
+2-6
Original file line number
Diff line number
Diff line change
@@ -6,10 +6,6 @@ image: /img/cm-og-image.png
6
6
7
7
This section provides a documentation of all [architectural refactorings (ARs)](https://www.infoq.com/articles/architectural-refactoring/) available in the Context Mapper tool.
8
8
9
-
<divclass="alert alert-custom">
10
-
<strong>Note:</strong> Architectural Refactorings (AR) are not yet supported in our new Visual Studio Code extension. We continuously work on the extension and will support them soon! To apply the ARs to your CML model you have to use the Eclipse plugin for now. You can find a feature support table for Eclipse and VS Code <ahref="/docs/ide/">here</a>.<br/><br/>The AR "Split Bounded Context by Owner" is already supported now (as an example to illustrate how they will be integrated to VS Code).
11
-
</div>
12
-
13
9
## Motivation: Why Refactoring?
14
10
The provided refactorings ensure that the result is always a correct CML model which compiles without errors.
15
11
If you perform similar changes manually, you also have to fix errors that occur manually within the [Context Map](/docs/context-map/).
@@ -31,7 +27,7 @@ We currently provide the following structural ARs:
|[**AR-1: Split Aggregate by Entities**](/docs/ar-split-aggregate-by-entities)| Aggregate | Splits an aggregate which contains multiple entities and produces one aggregate per entity. | 1 Aggregate | n Aggregates |
34
-
|[**AR-2: Split Bounded Context by Use Cases**<sup>1</sup>](/docs/ar-split-bounded-context-by-use-cases)| Bounded Context | Splits a bounded context by grouping those aggregates together into one bounded context which are used by the same use case(s). | 1 Bounded Context | n Bounded Contexts |
30
+
|[**AR-2: Split Bounded Context by Features**<sup>1</sup>](/docs/ar-split-bounded-context-by-features)| Bounded Context | Splits a bounded context by grouping those aggregates together into one bounded context which are used by the same use case(s) and/or user stories (features).| 1 Bounded Context | n Bounded Contexts |
35
31
|[**AR-3: Split Bounded Context by Owner**<sup>1</sup>](/docs/ar-split-bounded-context-by-owners)| Bounded Context | Splits a bounded context by grouping those aggregates together into one bounded context which belong to the same team. | 1 Bounded Context | n Bounded Contexts |
36
32
|[**AR-4: Extract Aggregates by Volatility**](/docs/ar-extract-aggregates-by-volatility)| Bounded Context | Extracts all aggregates from a bounded context by a given volatility, or likelihood for change (RARELY, NORMAL or OFTEN), and moves them to a separate context. | 1 Bounded Context | 2 Bounded Contexts |
37
33
|[**AR-5: Extract Aggregates by Cohesion**](/docs/ar-extract-aggregates-by-cohesion)| Bounded Context | Extracts a set of aggregates which are chosen by certain cohesion criteria and moves them to a separate bounded context. | 1 Bounded Context | 2 Bounded Contexts |
@@ -40,7 +36,7 @@ We currently provide the following structural ARs:
40
36
|[**AR-8: Extract Shared Kernel**](/docs/ar-extract-shared-kernel)| Shared Kernel relationship | Extracts a new bounded context for the common model parts of the Shared Kernel and establishes two upstream-downstream relationship between the new and the existing Bounded Contexts. | 1 Shared Kernel relationship | 1 New Bounded Context and 2 new upstream-downstream relationships |
41
37
|[**AR-9: Suspend Partnership**](/docs/ar-suspend-partnership)| Partnership relationship | Suspends a Partnership relationship and replaces it with another structure how the two Bounded Context can depend on each other. The AR provides three strategies to suspend the partnership. | 1 Partnership relationship |_Depends on the selected mode_|
42
38
43
-
<sup>1</sup>: An aggregate in CML can be used by **multiple** use cases and is owned by **one** owner (team).
39
+
<sup>1</sup>: An aggregate in CML can be used by **multiple**features (use cases and/or user stories) and is owned by **one** owner (team).
44
40
45
41
### Relationship Refactorings
46
42
The following ARs to change Context Map relationships are currently implemented:
0 commit comments