Tools for Value-Driven Design
Tools intended to help with modelling decisions in a value centric design process. The intent is to keep this as generic as possible, as some of this decision modelling is suited to generic decision-making, non-design activities with a little massaging.
Features
- Concept Design Analysis (CODA) method implementation
- Requirements weighting with a Binary Weighting Matrix
- Programmatic or Spreadsheet based model creation (via Excel workbooks or Google Sheets).
- Native JSON serialisation for both CODA models and Binary Weighting Matrices (human-readable, git-diff-friendly).
- Command-line interface for quick model inspection and interactive weighting
Install
pip install vdd
CLI
vdd ships with a command-line interface for the two core workflows.
Inspect a CODA model
Load a CODA model from an Excel file and print the overall design merit alongside a per-requirement satisfaction summary:
vdd coda path/to/model.xlsx
By default the compact Excel format is assumed. Pass --parser full for the
standard format:
vdd coda path/to/model.xlsx --parser full
Weight requirements interactively
Step through a pairwise comparison of requirements and print the resulting normalised scores:
vdd requirements weight "Lightweight" "Stiff" "Durable"
Questions are shuffled by default. Pass --no-shuffle to work through them
in a fixed order.
JSON model i/o
Both CODA models and Binary Weighting Matrices serialise to and from a flat, human-readable JSON format. This is handy for version-controlling models or moving them between the two tools.
from vdd.coda.models import CODA
from vdd.requirements.models import BinWM
# Weight requirements with a binary weighting matrix, then persist it.
bwm = BinWM('Stiffness', 'Friction', 'Weight')
bwm.prompt()
bwm.to_json('weights.json')
# Seed a CODA model directly from the weighting matrix scores.
coda = CODA()
coda.add_requirements_from(bwm)
# Round-trip a CODA model through JSON.
coda.to_json('model.json')
reloaded = CODA.read_json('model.json')
to_json() returns a string when no path is given. to_dict() /
from_dict() expose the same data as plain-python dicts. The BinWM
format ({"requirements": [...], "binary_matrix": [[...]]}) is the
same shape used by the bundled example fixtures.
Documentation
Currently just stored in the repo.
Development
In the repository root:
uv sync
Releases
Managed by Release Please with auto-versioning. Changes to default branch will be accumulated in a release PR based on Conventional Commits. Merging the release PR will automatically publish the versioned package to PyPI.
Roadmap
- Model sets for comparative work (rather than a single set of characteristic parameter values)
- Improved visualisation
- Export CODA models to Excel template
- House of Quality style requirement/characteristic weighting
- Pandas everywhere (v1.x)
References
Based on my own degree notes and open access literature:
- M.H. Eres et al, 2014. Mapping Customer Needs to Engineering Characteristics: An Aerospace Perspective for Conceptual Design - Journal of Engineering Design pp. 1-24 http://eprints.soton.ac.uk/id/eprint/361442
Release files for vdd 3.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vdd-3.1.0.tar.gz | 121.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vdd-3.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 194.9 kB
Release files / vdd-3.1.0.tar.gz
| Download URL | vdd-3.1.0.tar.gz |
|---|---|
| Size | 121.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0d1eb2eaa1bdb04614dbc59a77b537fe5cf407d042bbb1e260dfbce0a6fd48e
|
|
BLAKE2b-256 checksum How to use checksums |
4d2571a1f4008d991f141ba7915897458e0224432ef86e2bd67b9cb4ac149416
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / vdd-3.1.0-py3-none-any.whl
| Download URL | vdd-3.1.0-py3-none-any.whl |
|---|---|
| Size | 73.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f548d2821d7c9d63c3c7d1d39a16757b58b6160789abc3d2e371f6d4bc01ef2
|
|
BLAKE2b-256 checksum How to use checksums |
0f2bc0f542dccbf0b5b1b3b4d14d34f94578033f48a06b1bfe75797e2f57363f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|