Value Registers

The CML language supports the modelling of stakeholders and their values that might be strengthened or harmed by digital systems. This feature has been introduced to support the Value-Driven Analysis and Design (VDAD) process. Context Mapper and the language concepts documented on this page therefore support the modelling of ethical concerns in software projects. For more information about the whole process we refer to the VDAD page.

Note: Some of the terminology of the language, such as value register or value cluster, is based on the IEEE Standard Model Process for Addressing Ethical Concerns during System Design (a.k.a. IEEE 7000 standard). Access to IEEE 7000 standard is free after registration for IEEE Xplore (click on “Access via Subscription”). However, you do not necessarily need to know that terminology; you can also simply model the values of your stakeholders within a ValueRegister block.

Value Register

If you are interested in reading more about the ideas of a value register, we refer to the IEEE 7000 standard or the ESE Glossary. However, if you just want to move on quickly and model the values of your stakeholders - just consider the value register a container object that allows to model values for a specific Bounded Context:

BoundedContext Online_Shop_Same_Day_Delivery

ValueRegister SDD_Stakeholder_Values for Online_Shop_Same_Day_Delivery {
  // model values inside value register
}

If you just want to start to model some values without separating by Bounded Contexts, you can create a ValueRegister without that reference:

ValueRegister SDD_Stakeholder_Values {
  // model values inside value register
}

Values

Inside a value register you can define the values important to your project, software and/or feature:

ValueRegister SDD_Stakeholder_Values {
  
  Value Privacy
  Value Respect
  Value Integrity
  Value Love
  // etc.

}

The following attributes that can be added, namely whether a value is a core value, value demonstrators, related values and opposing values, follow the terminology of the IEEE 7000 standard. We refer to the standard for a more detailed introduction into these terms; in CML the attributes are however not mandatory.

ValueRegister SDD_Stakeholder_Values {
  
  Value Privacy {
    isCore

    demonstrator = "right to be left alone"
    demonstrator = "the right to refuse sharing private data"
    relatedValue = "Intimacy"
    opposingValue = "Transparency"
    opposingValue = "Inclusiveness"
  }

}

As always in CML, the ‘equal’ (=) sign is optional:

ValueRegister SDD_Stakeholder_Values {
  
  Value Privacy {
    isCore

    demonstrator "right to be left alone"
    demonstrator "the right to refuse sharing private data"
    relatedValue "Intimacy"
    opposingValue "Transparency"
    opposingValue "Inclusiveness"
  }

}
Note: Just modelling values, as seen here, does not allow you to generate any visualization yet (at least for now). Continue with the section Stakeholder Priorisation, Impact & Consequences, to define how important these values are to individual stakeholders and how these stakeholders are affected. After that, you can generate a [Value Impact Map](https://ethical-se.github.io/value-driven-analysis-and-design/practices/value-impact-mapping) with the PlantUML generator.

Value Clusters

If one applies or follows the IEEE 7000 standard, values are clustered around core values. For example, the value confidentiality (a demonstrator could be: right to be left alone), is an enabler for the core value of privacy. Therefore the value confidentiality would be added to the value cluster with the core value privacy. This can be modelled in CML as follows:

ValueRegister SDD_Stakeholder_Values {
  
  ValueCluster Privacy {
    core PRIVACY

    Value Confidentiality {
      demonstrator = "right to be left alone"  
    }
  }

}

The core value can be modelled as shown above, by using the enumeration CML provides. That enumeration contains all core values according to the IEEE 7000 standard: AUTONOMY, CARE, CONTROL, FAIRNESS, INCLUSIVENESS, INNOVATION, PERFECTION, PRIVACY, RESPECT, SUSTAINABILITY, TRANSPARENCY, TRUST.

Alteratively, you can define the core value by a custom string:

ValueRegister SDD_Stakeholder_Values {
  
  ValueCluster MyCluster {
    core "Respect"
  }

}

Further note that the attributes demonstrator, relatedValue and opposingValue, as documented for the Value object already, can also be applied to value clusters:

ValueRegister SDD_Stakeholder_Values {
  
  ValueCluster Privacy {
    core PRIVACY

    demonstrator = "right to be left alone"
    demonstrator = "the right to refuse sharing private data"
    relatedValue = "Intimacy"
    opposingValue = "Transparency"
    opposingValue = "Inclusiveness"
  }

}

Generally, you can cluster values in CML but you do not necessarily have to.

Note: Just modelling values and value clusters as seen here does not yet allow you to generate any visualization (at least for now). Continue with the section Stakeholder Priorisation, Impact & Consequences, to define how important these values are to the individual stakeholders and how they are affected. After that step, you can generate a Value Impact Map with the PlantUML generator.

Stakeholder Prioritization, Impact & Consequences

Note that the following model snippets require stakeholder modelling as precondition; please check the page Stakeholders for the corresponding CML syntax.

The following example illustrates how you can assign the values ​​to the stakeholders who care about them. For each stakeholder you can define the PRIORITY this value has for the stakeholder, as well as the IMPACT. The consequences section allows you to model good, bad, and neutral consequences your system or feature has to the given value - from the perspective of the specific stakeholder:

BoundedContext SameDayDelivery

Stakeholders of SameDayDelivery {
  StakeholderGroup Customers_and_Shoppers
  StakeholderGroup Delivery_Staff_of_Suppliers
}

ValueRegister SD_Values for SameDayDelivery {  
  Value Freedom {
      Stakeholder Customers_and_Shoppers {
        priority HIGH
        impact MEDIUM
        consequences
          good "increased freedom"
      }
      Stakeholder Delivery_Staff_of_Suppliers {
        priority HIGH
        impact HIGH
        consequences
          bad "work-life-balance"
      }
    }
}

This is again possible on the level of a Value, but as well on a ValueCluster:

BoundedContext SameDayDelivery

Stakeholders of SameDayDelivery {
  StakeholderGroup Customers_and_Shoppers
  StakeholderGroup Delivery_Staff_of_Suppliers
}

ValueRegister SD_Values for SameDayDelivery {  
  ValueCluster Freedom {
      core AUTONOMY
      Stakeholder Customers_and_Shoppers {
        priority HIGH
        impact MEDIUM
        consequences
          good "increased freedom"
      }
      Stakeholder Delivery_Staff_of_Suppliers {
        priority HIGH
        impact HIGH
        consequences
          bad "work-life-balance"
      }
    }
}

Mitigation Actions

In case your system has negative impact on values, you might want to model the mitigation actions you consider to implement to reduce harm. The following example shows how to model such mitigation actions in CML:

BoundedContext SameDayDelivery

Stakeholders of SameDayDelivery {
  StakeholderGroup Drivers
}

ValueRegister SD_Values for SameDayDelivery {  
  Value WorkLifeBalance {
    demonstrator "Drivers value a healthy work-life-balance"
    Stakeholder Drivers {
      priority HIGH
      impact HIGH
      consequences
        bad "SDD will harm work-life-balance of drivers"
          action "hire more drivers" ACT
    }
  }
}

The action types can be ACT (actively do something to reduce harm to values), MONITOR (just monitor the issue; maybe to gather more information), or a custom string.

Example

For a complete example, we refer to the example repository. You can find a complete CML model for the “Same Day Delivery” example there.

Once you have modelled your values and stakeholder priorities and impact, you can generate a Value Impact Map (VDAD practice). The diagram is part of the PlantUML generator.

Exemplary Value Impact Map - Generated out of a CML model with the PlantUML generator

Stakeholders Export to CSV

In addition to the Value Impact Map visualization, you can export your modelled value register data as a CSV file. To do so, use the Freemarker temple here together with our Generic Generator (Freemarker Templating).

Additional ESE Formats

The following additional (experimental) CML features allow users to apply Story Valuation as proposed in the Ethical Software Engineering (ESE) practice repository. Three ESE notations are supported: Value Epic, Value Weighting and Value Narrative.

Note: These language features are experimental and currently not used by any generator. The modelled information can therefore not be visualized, except you use the Generic Generator (Templating with Freemarker) and process the data on your own.
Stakeholders {
  Stakeholder Conference_Participant
}

ValueRegister Conference_Management_Sample {  
  ValueEpic Data_Privacy {
    As a Conference_Participant
    I value "data privacy"
    as demonstrated in 
      realization of "confidentiality of sensitive personal information such as my passport number" 
      reduction of "efficiency of operations for conference mansagement staff"
  }

  ValueWeigthing Data_Privacy {
    In the context of the SOI,
    stakeholder Conference_Participant values "data privacy" more than "efficiency from a registration management staff point of view"
    expecting benefits such as "confidentiality of sensitive personal information"
    running the risk of harms such as "higher conference fees and a slower registration process."
  }
}

ValueRegister Same_Day_Delivery_Sample {
  ValueNarrative Sample_Narrative {
    When the SOI executes "the same say delivery epic (incl. split user stories that meet the INVEST criteria)",
    stakeholders expect it to promote, protect or create "freedom and quality of life",
    possibly degrading or prohibiting "work-life balance of suppliers and shopper privacy"
    with the following externally observable and/or internally auditable behavior:

    "Given: Shop is operational and suited suppliers and logistics firms are available. 
    When: Same day delivery is promised during order acceptance and confirmation. 
    Then: Order arrives at shipment address until 11:59pm on the same say."
  }
}

Transformations

Note that we offer several transformations that might help modelling stakeholders and their values according to VDAD (Value-Driven Analysis and Design) more efficiently. The transformations are documented on the following page: Stakeholder and Value Modelling Transformations.