VDAD, first presented at EuroPLoP 20241, combines value-driven approaches with analysis and design practices in software engineering; we especially aim at bringing ethical thinking into domain-driven practices. As software engineers, we should build digitalized solutions that serve humanity - never the other way around. VDAD proposes seven steps that cover the whole development lifecycle and aim at illustrating how human and ethical values can be respected in all phases of the software development process.
The seven steps are:
Note: The VDAD process is not considered to be conducted in a linear, unidirectional way. Project teams have to iterate over the individual steps as well as the whole process. The page process continuation explains this incremental approach.
The following illustration visualizes the VDAD process with its steps as well as the input and output artifacts of the individual steps.
Note: Each step with its inputs and outputs is elaborated in detail on the corresponding pages linked above.
All value-driven approaches and processes that aim at treating values as first-class citizens (such as the IEEE-70002 or Value-Based Engineering3) require close and interdisciplinary collaboration between all stakeholders and human beings affected by a system.
One important goal of Domain-Driven Design (DDD) and Collaborative Modelling approaches (such as Event Storming, Domain Storytelling, etc.) is to find a common understanding and a ubiquitous language between engineers, domain experts, and any other stakeholders. Therefore, these practices and methods can help us in applying value-based engineering and establish the required communication between all human being involved in the process.
Modelling in general can help us to visualize the context of a system, interrelations between stakeholders and values, and conflicts that should be identified so that they can, hopefully, be solved.
The following overview lists all practices and artifacts that support you in the individual VDAD steps:
VDAD Step | Practices and Artifacts |
---|---|
Step 1: Aquire Domain Understanding | Use Cases, User Stories, Business Process Models, Domain Models (e.g. with Context Mapper) based on Domain-Driven Design (DDD) patterns, Collaborative Modelling (e.g. Event Storming, Domain Storytelling) |
Step 2: Identify Stakeholders | Stakeholder Mapping, Personas, Identify them in the artifacts produced in Step 1 (Use Cases, User Stories, etc.), Context Mapper DSL (CML) stakeholder model |
Step 3: Identify Values per Stakeholder | Stakeholder Mapping and Value Impact Mapping (VIM), Value Register2, ESE templates to model values, Context Mapper DSL (CML) value model |
Step 4: Prioritize Values | Value Register2, templates suggested in ESE Story Valuation, Context Mapper DSL (CML) value model with stakeholder priorities |
Step 5: Make Digitalization Decision | All inputs from steps before |
Step 6: Derive New and Adjust Existing Requirements | Use models and knowledge from previous steps to elicit and/or refine functional and non-functional requirements; formulate so-called Ethical Value Requirement (EVRs) according IEEE 7000 standard2, apply ESE Story Valuation to create EVRs |
Step 7: Design Software Architecture | Architecture Decision Records (ADRs), architecture documentation (e.g. filled-out arc42 template), Strategic and Tactic DDD (i.e., Bounded Contexts and Domain Models with Aggregates, Entities and other DDD patterns); use Context Mapper for modelling) for architecture and design, working software |