Skip to content

Commit

Permalink
v6.12 release docs (VDAD release) (#96)
Browse files Browse the repository at this point in the history
  • Loading branch information
stefan-ka authored Aug 30, 2024
1 parent 2392367 commit 76ba596
Show file tree
Hide file tree
Showing 24 changed files with 664 additions and 1 deletion.
7 changes: 7 additions & 0 deletions _data/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,15 @@
- tactic-ddd
- application-and-process-layer
- user-requirements
- stakeholders
- value-registers
- imports

- title: Analysis and Design Transformations
docs:
- rapid-ooad
- story-splitting
- stakeholder-and-value-modelling-transformations

- title: Architectural Refactorings (ARs)
docs:
Expand All @@ -50,6 +53,10 @@
- ar-change-shared-kernel-to-partnership
- ar-change-partnership-to-shared-kernel

- title: Value-Driven Analysis and Design
docs:
- vdad-support

- title: Service Cutter
docs:
- service-cutter-context-map-suggestions
Expand Down
1 change: 1 addition & 0 deletions _docs/generators/generic-freemarker-generator.md
Original file line number Diff line number Diff line change
Expand Up @@ -489,3 +489,4 @@ The project currently contains the following example templates:
* Ubiquitous language glossary written in Markdown (currently a full report)
* Currently a full report of the model. A future version of the template will generate a glossary only.
* [JHipster Domain Language (JDL)](https://www.jhipster.tech/jdl/) template to [generate Microservices from CML models](/docs/jhipster-microservice-generation/)
* CSV files to export stakeholder and value register data (as part of the [VDAD support](/docs/vdad-support/))
14 changes: 13 additions & 1 deletion _docs/generators/plant-uml.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,22 @@ Your CML models can define the lifecycle of Aggregates either in the [Aggregate
<a href="/img/QuoteRequestFlow_BC_InsuranceQuotes_QuoteRequestFlow_StateDiagram_with-end-States.png">![PlantUML State Diagram](/img/QuoteRequestFlow_BC_InsuranceQuotes_QuoteRequestFlow_StateDiagram_with-end-States.png)</a>

## UML Use Case Diagrams
CML also allows you to write Use Cases and User Stories. You can find the documentation about how to write such user requirements [here](/docs/user-requirements/). In case your CML model contains such user requirements, the PlantUML generator will also automatically generate a use case diagram for you. Here an example:
CML also allows you to write Use Cases and User Stories. You can find the documentation about how to write such user requirements [here](/docs/user-requirements/). In case your CML model contains such user requirements, the PlantUML generator will also automatically generate a use case diagram for you. Here is an example:

<a href="/img/plantuml-generation-use-case-diagram-example.png">![PlantUML Use Case Diagram](/img/plantuml-generation-use-case-diagram-example.png)</a>

## Stakeholder Maps
As documented [here](/docs/stakeholders/), CML allows you to model the stakeholders for a specific project, system or feature. In case your CML file contains such a `Stakeholders` section with stakeholders and stakeholder groups, the PlantUML generator will automatically generate a stakeholder map for you. An example:

<a href="/img/stakeholder-map-sdd-sample-simple.png">![PlantUML Stakeholder Map](/img/stakeholder-map-sdd-sample-simple.png)</a>

For more information about stakeholder maps and the idea behind them, we refer to the [Value-Driven Analysis and Design (VDAD)](https://ethical-se.github.io/value-driven-analysis-and-design) process.

## Value Impact Maps
In case you modelled a value register in CML, which you can do as documented [here](/docs/value-registers/), the PlantUML generator will automatically create a so-called "Value Impact Map", a [Value-Driven Analysis and Design (VDAD)](https://ethical-se.github.io/value-driven-analysis-and-design) practice. An exemplary output is:

<a href="/img/value-impact-map-sdd-sample.png">![PlantUML Value Impact Map](/img/value-impact-map-sdd-sample.png)</a>

## Generating the PlantUML Diagrams
The generators can be called from the context menus of the CML editors in VS Code or Eclipse. A documentation how to call the generators can also be found [here](/docs/generators/#using-the-generators).

Expand Down
113 changes: 113 additions & 0 deletions _docs/language-reference/stakeholders.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
title: Stakeholders
permalink: /docs/stakeholders/
---

The CML language supports the modelling of [stakeholders](https://en.wikipedia.org/wiki/Project_stakeholder) of (digital) solutions and/or projects. This feature has been introduced to support the [Value-Driven Analysis and Design (VDAD)](https://ethical-se.github.io/value-driven-analysis-and-design) process. One part of this process supporting ethical software engineering is the identification of all relevant stakeholders. For more information about the whole process we refer to the [VDAD page](https://ethical-se.github.io/value-driven-analysis-and-design). However, modelling stakeholders can support your requirements engineering process in different ways; no matter whether you apply VDAD practices or not.

**Note**: With our [PlantUML generator](/docs/plant-uml/) you can automatically generate [Stakeholder Maps](https://ethical-se.github.io/value-driven-analysis-and-design/practices/stakeholder-mapping), once you modelled all your stakeholders and stakeholder groups. See example below.

## Stakeholders Container
On the root level of a CML file, one first needs to create a `Stakeholders` container. This can be done as simply as follows:

<div class="highlight"><pre><span></span><span class="k">Stakeholders</span> {

<span class="c1">// add stakeholders and stakeholder groups here</span>

}
</pre></div>

However, if you want to model the stakeholders for a specific [Bounded Context](/docs/bounded-context/), you can declare that as follows:

<pre class="highlight"><span class="k">BoundedContext</span> ExampleContext

<span class="k">Stakeholders</span> <span class="k">of</span> ExampleContext {

<span class="c1">// add stakeholders and stakeholder groups here</span>

}
</pre>

## Stakeholders
Inside a `Stakeholders` container, you can define your stakeholders. This can be done with the `Stakeholder` keyword an the name of the stakeholder:

<div class="highlight"><div class="highlight"><pre><span></span><span class="k">BoundedContext</span> <span class="n">ExampleContext</span>

<span class="k">Stakeholders</span> <span class="k">of</span> <span class="n">ExampleContext</span> <span class="p">{</span>

<span class="k">Stakeholder</span> <span class="n">Shopper</span>

<span class="k">Stakeholder</span> <span class="n">Software_Engineer</span>

<span class="k">Stakeholder</span> <span class="n">Architect</span>

<span class="c1">// etc.</span>

<span class="p">}</span>
</pre></div>
</div>

In addition, you can provide additional information for a stakeholder using the `description`, `influence` and `interest` keywords:

<div class="highlight"><div class="highlight"><pre><span></span><span class="k">BoundedContext</span> <span class="n">ExampleContext</span>

<span class="k">Stakeholders</span> <span class="k">of</span> <span class="n">ExampleContext</span> <span class="p">{</span>

<span class="k">Stakeholder</span> <span class="n">Shopper</span> <span class="p">{</span>
<span class="k">description</span> <span class="s">&quot;Is using the shopping system to by everday goods.&quot;</span>

<span class="k">influence</span> <span class="k">MEDIUM</span>
<span class="k">interest</span> <span class="k">HIGH</span>
<span class="p">}</span>

<span class="p">}</span>
</pre></div>
</div>

The `description` just describes why and/or how the stakeholder uses the system or is impacted by the system. As suggested by many stakeholder mapping tutorials (see [Miro](https://miro.com/blog/stakeholder-mapping/) or [Mural](https://www.mural.co/blog/stakeholder-mapping)), you can define what the `influence` of the stakeholders is and how much they are interested (`interest`) in the new system or feature.

## Stakeholder Groups
Stakeholder maps often group stakeholders of similar roles or with similar interest together. This is also possible in CML with the `StakeholderGroup` keyword, which can again contain stakeholders with the `Stakeholder` keyword:

<div class="highlight"><div class="highlight"><pre><span></span><span class="k">BoundedContext</span> <span class="n">ExampleContext</span>

<span class="k">Stakeholders</span> <span class="k">of</span> <span class="n">ExampleContext</span> <span class="p">{</span>

<span class="k">StakeholderGroup</span> <span class="n">Online_Shopping_Company</span> <span class="p">{</span>
<span class="k">Stakeholder</span> <span class="n">Development_Team</span> <span class="p">{</span>
<span class="k">influence</span> <span class="k">MEDIUM</span>
<span class="k">interest</span> <span class="k">HIGH</span>
<span class="p">}</span>
<span class="k">Stakeholder</span> <span class="n">Product_Management</span> <span class="p">{</span>
<span class="k">influence</span> <span class="k">HIGH</span>
<span class="k">interest</span> <span class="k">HIGH</span>
<span class="p">}</span>
<span class="k">Stakeholder</span> <span class="n">Customer_Relationship_Manager</span> <span class="p">{</span>
<span class="k">influence</span> <span class="k">HIGH</span>
<span class="k">interest</span> <span class="k">MEDIUM</span>
<span class="p">}</span>
<span class="p">}</span>

<span class="k">Stakeholder</span> <span class="n">Shopper</span> <span class="p">{</span>
<span class="k">description</span> <span class="s">&quot;Is using the shopping system to by everday goods.&quot;</span>

<span class="k">influence</span> <span class="k">MEDIUM</span>
<span class="k">interest</span> <span class="k">HIGH</span>
<span class="p">}</span>

<span class="p">}</span>
</pre></div>
</div>

## Visualization: Stakeholder Map
Once your stakeholders are modelled in CML, you can generate a visual stakeholder map automatically. Here is an example:

![Sample Stakeholder Map (for a new 'same day delivery' feature for an online shop)](./../../img/stakeholder-map-sdd-sample-simple.png)

Check out our [PlantUML generator](/docs/plant-uml/) on how to generate such a diagram.

## Stakeholders Export to CSV
In addition to the Stakeholder Map visualization, you can export your modelled stakeholder data as a CSV file. To do so, use the Freemarker temple [here](https://raw.githubusercontent.com/ContextMapper/context-mapper-dsl/master/org.contextmapper.dsl.ui/samples/freemarker/csv-files/stakeholders.csv.ftl) together with our [Generic Generator (Freemarker Templating)](/docs/generic-freemarker-generator/).

## Transformations
Note that we offer several transformations that might help modelling stakeholders and their values according to [VDAD (Value-Driven Analysis and Design)](https://ethical-se.github.io/value-driven-analysis-and-design) more efficiently. The transformations are documented on the following page: [Stakeholder and Value Modelling Transformations](/docs/stakeholder-and-value-modelling-transformations/)
13 changes: 13 additions & 0 deletions _docs/language-reference/user-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,16 @@ First and foremost, a user story is an invitation to communicate and collaborate

*Note:* As you can see above, both variants allow users to specify multiple _interactions_ or _I want to_ parts in one use case or user story. You can see this as a way of
expressing related features, for instance those originating from splitting a larger story - or the steps in a use case scenario.

### Story Valuation
Since Context Mapper version 6.12.x, the user story syntax supports [story valuation](https://github.com/ethical-se/ese-practices/blob/main/practices/ESE-StoryValuation.md). A user story with the existing `As a`, `I want to` and `so that` parts can now be enhanced with promoted and harmed [ethical values](https://github.com/ethical-se/ese-practices/blob/v11/ESE-Glossary.md#ethical-value), as shown in the following example:

<div class="highlight"><div class="highlight"><pre><span></span><span class="k">UserStory</span> <span class="n">SampleStory</span> <span class="p">{</span>
<span class="k">As</span> <span class="k">a</span> <span class="s">&quot;prospective customer of Lakeside Mutual&quot;</span> <span class="c1">// a fictitious insurance company</span>
<span class="k">I</span> <span class="n">want</span> <span class="n">to</span> <span class="s">&quot;manage&quot;</span> <span class="n">the</span> <span class="s">&quot;PersonalDataProfile&quot;</span>
<span class="k">so that</span> <span class="s">&quot;I am offered a valid and fair insurance rate&quot;</span>
<span class="k">and that</span> <span class="s">&quot;data privacy&quot;</span> <span class="k">is promoted</span>
<span class="k">accepting that</span> <span class="s">&quot;accountability and auditability&quot;</span> <span class="k">are harmed</span>
<span class="p">}</span>
</pre></div>
</div>
Loading

0 comments on commit 76ba596

Please sign in to comment.