Skip to content

Commit

Permalink
Version 1.0 of VDAD
Browse files Browse the repository at this point in the history
  • Loading branch information
stefan-ka committed Aug 30, 2024
1 parent 10edb03 commit bd5e7bc
Show file tree
Hide file tree
Showing 37 changed files with 1,558 additions and 2 deletions.
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Github page
_site
.sass-cache
.jekyll-metadata
*.gem
.bundle
vendor/bundle

Gemfile.lock

# IDEs
.idea/
**/*.iml

# Output dirs
**/out
**/bin
**/target
**/src-gen

20 changes: 20 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Contributing to VDAD

Contribution is always welcome! Here are some ways how you can contribute:

* Did you find a typo or smaller errors? Just create Pull Request (PR) in [this repository](https://github.com/ethical-se/value-driven-analysis-and-design).
* You want to suggest improvements or have ideas how to enhance to project? Feel free to [create a GitHub issue](https://github.com/ethical-se/value-driven-analysis-and-design/issues)!

## Getting in Touch

For anything else, such as discussing collaboration opportunities, [please contact us](https://www.ost.ch/de/person/stefan-kapferer-2046).

## License
This work is licensed under a
[Creative Commons Attribution 4.0 International License][cc-by].

[![CC BY 4.0][cc-by-image]][cc-by]

[cc-by]: http://creativecommons.org/licenses/by/4.0/
[cc-by-image]: https://i.creativecommons.org/l/by/4.0/88x31.png
[cc-by-shield]: https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
gem "github-pages", group: :jekyll_plugins
gem "webrick"
396 changes: 396 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

74 changes: 72 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,72 @@
# value-driven-analysis-and-design
Value Driven Analysis and Design (VDAD)
# Value-Driven Analysis and Design (VDAD)
[![CC BY 4.0][cc-by-shield]][cc-by]

_TL;DR:_ Technology should support humanity and avoid harming people and their values; we want to help engineers and technology creators create solutions that promote positive values and aim to reduce harm to our society and people. The Value-Driven Analysis and Design (VDAD) process aims to combine value-driven approaches with state-of-the-art software engineering practices such as Domain-Driven Design (DDD).

## Motivation and Vision

Digitalized solutions generally try to optimize all kinds of processes, make people's work easier and achieve economic goals. While economic values already receive a lot of attention, it is often forgotten that digitalizing our world "wherever we can" has potentially negative effects on human values as well.

The goal of this work is to enable all types of stakeholders in software-intensive projects to respect human/ethical values equally with economic and technical requirements throughout the life cycle of a project.

We aim to achieve this by providing:

1. Lean and "audience-centric" processes and novel work practices.
2. Knowledge structures, notation suggestions, and concrete examples.
3. Recommendations for appropriate tools that support the suggested work practices.

VDAD targets all roles and individuals engaged in digitalization projects. Every company or team engaged in the development of digital solutions has an influence on human beings, society, and our values. Technology creators who aspire to craft software and digital products that is both valuable and free from harm to humanity are invited to apply VDAD practices in their projects.

The [user stories](user-stories.md) page outlines the target audience of VDAD with concrete, exemplary user stories.

If you are interested in applying our practices in your projects, please [contact us](https://www.ost.ch/de/person/stefan-kapferer-2046). We are always happy to consult and/or collaborate on industry/research projects to see our ideas applied in the "real world" and to improve them based on the feedback collected.

## Repository Content

Value-Driven Analysis and Design (VDAD) describes an **iterative process** consisting of seven steps. Each step is described on a separate page and links to practices (activities and artifacts) along the process:

* [Process Overview](./process/README.md)
* [Domain-Driven Practices and Collaborative Modelling as Enabler for Value-Based Engineering](./process/README.md#domain-driven-practices-and-collaborative-modelling-as-enabler-for-value-based-engineering)
* [Overview of Practices and Tools](./process/README.md#overview-of-practices-and-tools)
* [Step 1: Aquire Domain Understanding](./process/step-1-aquire-domain-understanding.md)
* [Step 2: Identify Stakeholders](./process/step-2-identify-stakeholders.md)
* [Step 3: Identify Values per Stakeholder](./process/step-3-identify-values-per-stakeholder.md)
* [Step 4: Prioritize Values](./process/step-4-prioritize-values.md)
* [Step 5: Make Digitalization Decision](./process/step-5-make-digitalization-decision.md)
* [Step 6: Derive New and Adjust Existing Requirements](./process/step-6-derive-new-and-adjust-existing-requirements.md)
* [Step 7: Design Software Architecture](./process/step-7-design-software-architecture.md)
* [Process Continuation (Iterative Approach)](./process/step-infinity-process-continuation.md)

The [practices](./practices/README.md) folder contains the **practices supporting the VDAD process**:

* [Stakeholder Modeling](./practices/stakeholder-mapping.md)
* [Value Impact Mapping](./practices/value-impact-mapping.md)

**Additional files**:

* [User Stories](user-stories.md) that describe exemplary VDAD application scenarios.
* Selected [Tools](tools.md) that support the VDAD process and our project.
* [Project Background and Related Work](related-work.md)
* [Glossary](glossary.md)

## Contributing, Evaluation and Feedback
Any form of contribution is very welcome; please check [CONTRIBUTING.md](CONTRIBUTING.md) for contributions.

We further welcome any feedback on our processes and practices. Use GitHub issues to get in touch or [contact us](https://www.ost.ch/de/person/stefan-kapferer-2046). We are also happy to discuss potential collaborations for research and industry projects.

Contact: _[Stefan Kapferer](https://www.ost.ch/de/person/stefan-kapferer-2046), Eastern Switzerland University of Applied Sciences (OST)_

## Acknowledgments
Olaf Zimmermann and Mirko Stocker contributed to the VDAD repository content and related Context Mapper tooling via co-authoring, providing review feedback, experimentation and testing. Our shepherd for the EuroPLoP 2024 VDAD paper, as well as the attendees of the writer's workshop at the conference, provided valuable feedback on our proposed process pattern. Thank you all very much!

Version 1.0 of VDAD has been supported by the [Institute for Software (IFS)](https://www.ost.ch/ifs) at the [Eastern Switzerland University of Applied Sciences (OST)](https://www.ost.ch).

## License
This work is licensed under a
[Creative Commons Attribution 4.0 International License][cc-by].

[![CC BY 4.0][cc-by-image]][cc-by]

[cc-by]: http://creativecommons.org/licenses/by/4.0/
[cc-by-image]: https://i.creativecommons.org/l/by/4.0/88x31.png
[cc-by-shield]: https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg
6 changes: 6 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
remote_theme: pages-themes/[email protected]
plugins:
- jekyll-remote-theme

title: [Value-Driven Analysis and Design (VDAD)]
description: [Technology should support humanity and avoid harming people and their values; we want to help engineers and technology creators create solutions that promote positive values and aim to reduce harm to our society and people. The Value-Driven Analysis and Design (VDAD) process aims to combine value-driven approaches with state-of-the-art software engineering practices such as Domain-Driven Design (DDD).]
30 changes: 30 additions & 0 deletions _layouts/default.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: "en-US" }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

{% seo %}
<link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
{% include head-custom.html %}
</head>
<body>
<div class="container-lg px-3 my-5 markdown-body">
{% if site.title and site.title != page.title and page.url != "/" %}
<h1><a href="{{ "/" | absolute_url }}">{{ site.title }}</a></h1>
{% endif %}
<strong><a href="{{ "/process" | absolute_url }}">VDAD Process</a> | <a href="{{ "/practices" | absolute_url }}">Practices</a> | <a href="{{ "/user-stories" | absolute_url }}">Why VDAD? (User Stories)</a> | <a href="{{ "/tools" | absolute_url }}">Tools</a> | <a href="{{ "/related-work" | absolute_url }}">Background</a> | <a href="{{ "/glossary" | absolute_url }}">Glossary</a></strong>

{{ content }}


<div class="footer border-top border-gray-light mt-5 pt-3 text-left text-gray">
This work is open source and licensed under a <a href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>. <a href="https://github.com/ethical-se/value-driven-analysis-and-design"><strong>Open on GitHub</strong></a>.
</div>

</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.1.0/anchor.min.js" integrity="sha256-lZaRhKri35AyJSypXXs4o6OPFTbTmUoltBbDCbdzegg=" crossorigin="anonymous"></script>
<script>anchors.add();</script>
</body>
</html>
14 changes: 14 additions & 0 deletions future-work.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Future Work

This repository contains a version 1.0 of the Value-Driven Analysis and Design (VDAD) process and practices. We plan to further enhance and improve the project.

This list represents current ideas how to further improve the initiative:

* Extensions to (Domain-driven) practices for steps 4-6.
* Apply process in real projects to validate and improve it.
* This might lead to new patterns, practices and improvements to the process.
* Open up process and practices to management and strategic/business level.
* Monitoring of ethical issues in the long run.
* Many problems might only reveal themselves after years of productive experience wih a system.

If you have ideas, feedback or want to discuss potential collaboration in projects, [please contact us](https://www.ost.ch/de/person/stefan-kapferer-2046). Also check our [CONTRIBUTING.md](CONTRIBUTING.md) in case you want to contribute to VDAD.
5 changes: 5 additions & 0 deletions glossary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Glossary

Please refer to the [ESE glossary](https://github.com/ethical-se/ese-practices/blob/main/ESE-Glossary.md) and Clause 3 in IEEEE Standard 7000[^1] for the time being (the latter is available for free in IEEE Xplore, only a complimentary registration is required).

[^1]: IEEE Standard Model Process for Addressing Ethical Concerns during System Design, 2021, https://ieeexplore.ieee.org/document/9536679
Binary file added images/StakeholderMap-CM-generated.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ValueImpactMap-CM-generated.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/impact-mapping-sdd-example.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/impact-mapping-viz-template.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/stakeholder-mapping-miro-template.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/stakeholder-mapping-sdd-example.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/vdad-process.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
74 changes: 74 additions & 0 deletions models/meta-model.cml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@

BoundedContext ValueDrivenAnalysisAndDesign {

Module Common {

Entity Bounded_Context {
-- "creates positive value or harm >" @EthicalValue
-- "has >" @ProjectStakeholder

-- "implements >" @ArchitectureAndDesign
}

Entity ProjectStakeholder {
String name;
- StakeholderType ^type;

-- "is concerned by values >" @EthicalValue
-- "prioritizes values >" @StakeholderValuePriority
}

enum StakeholderType {
VISIBLE, INVISIBLE;
}

Entity EthicalValue {
-- "has different priority to different stakeholders >" @StakeholderValuePriority
}

Entity PositiveValue extends EthicalValue {

}

Entity Harm extends EthicalValue {

}

ValueObject StakeholderValuePriority {
- ProjectStakeholder ^stakeholder;
- EthicalValue value;
- Priority ^priority;
}

enum Priority {
H, M, L;
}

Entity HarmMitigation {
String ^description;
- ProjectStakeholder ^stakeholder;

-- "stakeholder requests mitigation for created harm >" @Harm
}

Entity DigitalizationDecision {
- DecisionForm form;
- List<StakeholderValuePriority> ^values -- "values influencing decision";
- List<HarmMitigation> mitigations -- "planned mitigations"
}

Entity NFR {
-- "are derived from defined mitigations >" @HarmMitigation
}

Entity ArchitectureAndDesign {
-- "is influenced by NFRs derived from values >" @NFR
}

enum DecisionForm {
ADR, Y_STATEMENT;
}

}

}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
71 changes: 71 additions & 0 deletions models/meta-model_BC_ValueDrivenAnalysisAndDesign.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
@startuml

skinparam componentStyle uml2

package Common {
class Bounded_Context <<(E,DarkSeaGreen) Entity>> {
}
class Stakeholder <<(E,DarkSeaGreen) Entity>> {
String name
StakeholderType type
}
enum StakeholderType {
VISIBLE
INVISIBLE
}
class Value <<(E,DarkSeaGreen) Entity>> {
}
class PositiveValue <<(E,DarkSeaGreen) Entity>> {
}
class Harm <<(E,DarkSeaGreen) Entity>> {
}
class StakeholderValuePriority <<(V,DarkSeaGreen) Value Object>> {
Stakeholder stakeholder
Value value
Priority priority
}
enum Priority {
H
M
L
}
class HarmMitigation <<(E,DarkSeaGreen) Entity>> {
String description
Stakeholder stakeholder
}
class DigitalizationDecision <<(E,DarkSeaGreen) Entity>> {
DecisionForm form
List<StakeholderValuePriority> values
List<HarmMitigation> mitigations
}
class NFR <<(E,DarkSeaGreen) Entity>> {
}
class ArchitectureAndDesign <<(E,DarkSeaGreen) Entity>> {
}
enum DecisionForm {
ADR
Y_STATEMENT
}
}
StakeholderValuePriority --> Value : value
Stakeholder --> StakeholderType : type
Bounded_Context -- Stakeholder : has >
NFR -- HarmMitigation : are derived from defined mitigations >
Value -- StakeholderValuePriority : has different priority to different stakeholders >
StakeholderValuePriority --> Stakeholder : stakeholder
DigitalizationDecision "1" o--> "*" HarmMitigation : planned mitigations
HarmMitigation -- Harm : stakeholder requests mitigation for created harm >
Bounded_Context -- ArchitectureAndDesign : implements >
Stakeholder -- Value : is concerned by values >
Bounded_Context -- Value : creates positive value or harm >
HarmMitigation --> Stakeholder : stakeholder
Stakeholder -- StakeholderValuePriority : prioritizes values >
StakeholderValuePriority --> Priority : priority
DigitalizationDecision "1" o--> "*" StakeholderValuePriority : values influencing decision
ArchitectureAndDesign -- NFR : is influenced by NFRs derived from values >
DigitalizationDecision --> DecisionForm : form
PositiveValue --|> Value
Harm --|> Value


@enduml
71 changes: 71 additions & 0 deletions models/meta-model_BC_ValueDrivenAnalysisAndDesign_Common.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
@startuml

skinparam componentStyle uml2

package Common {
class Bounded_Context <<(E,DarkSeaGreen) Entity>> {
}
class Stakeholder <<(E,DarkSeaGreen) Entity>> {
String name
StakeholderType type
}
enum StakeholderType {
VISIBLE
INVISIBLE
}
class Value <<(E,DarkSeaGreen) Entity>> {
}
class PositiveValue <<(E,DarkSeaGreen) Entity>> {
}
class Harm <<(E,DarkSeaGreen) Entity>> {
}
class StakeholderValuePriority <<(V,DarkSeaGreen) Value Object>> {
Stakeholder stakeholder
Value value
Priority priority
}
enum Priority {
H
M
L
}
class HarmMitigation <<(E,DarkSeaGreen) Entity>> {
String description
Stakeholder stakeholder
}
class DigitalizationDecision <<(E,DarkSeaGreen) Entity>> {
DecisionForm form
List<StakeholderValuePriority> values
List<HarmMitigation> mitigations
}
class NFR <<(E,DarkSeaGreen) Entity>> {
}
class ArchitectureAndDesign <<(E,DarkSeaGreen) Entity>> {
}
enum DecisionForm {
ADR
Y_STATEMENT
}
}
StakeholderValuePriority --> Value : value
Stakeholder --> StakeholderType : type
Bounded_Context -- Stakeholder : has >
NFR -- HarmMitigation : are derived from defined mitigations >
Value -- StakeholderValuePriority : has different priority to different stakeholders >
StakeholderValuePriority --> Stakeholder : stakeholder
DigitalizationDecision "1" o--> "*" HarmMitigation : planned mitigations
HarmMitigation -- Harm : stakeholder requests mitigation for created harm >
Bounded_Context -- ArchitectureAndDesign : implements >
Stakeholder -- Value : is concerned by values >
Bounded_Context -- Value : creates positive value or harm >
HarmMitigation --> Stakeholder : stakeholder
Stakeholder -- StakeholderValuePriority : prioritizes values >
StakeholderValuePriority --> Priority : priority
DigitalizationDecision "1" o--> "*" StakeholderValuePriority : values influencing decision
ArchitectureAndDesign -- NFR : is influenced by NFRs derived from values >
DigitalizationDecision --> DecisionForm : form
PositiveValue --|> Value
Harm --|> Value


@enduml
Loading

0 comments on commit bd5e7bc

Please sign in to comment.