-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
37 changed files
with
1,558 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
gem "github-pages", group: :jekyll_plugins | ||
gem "webrick" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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).] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
71
models/meta-model_BC_ValueDrivenAnalysisAndDesign_Common.puml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.