The Operational Design Domain Modeling Environment (ODME) is a desktop application for authoring, validating, and managing Operational Design Domain (ODD) models for AI-based systems in safety-critical domains, with a strong focus on aviation use cases.
ODME uses the System Entity Structure (SES) formalism to model the operational conditions under which an AI or ML system is intended to function. From a single SES model, users can derive Pruned Entity Structures (PES) for concrete scenarios, attach variables and constraints, define behavior information, generate ODD views, and create scenario samples for downstream analysis.
The current codebase contains:
- a Swing desktop editor for domain and scenario modelling
- a behavior modelling editor for scenario-linked behaviors
- an ODD manager and sampling workflow
- execution and Python plugin support
- native packaging scripts for Windows, Linux, and macOS
- Overview
- What ODME Currently Supports
- Application Modes and Menus
- Getting Started
- Run ODME on Windows
- Run ODME from Git Bash
- Run Tests
- Example Project: Runway Sign Classifier
- Architecture
- Contributing
- License
| Area | Current functionality | Status |
|---|---|---|
| Domain Modelling | SES tree construction with synchronized graph view, node editing, variables, constraints, behaviors, distributions, XML/XSD generation | Stable |
| Scenario Modelling | Save scenarios, derive scenario-specific structures, generate scenarios from CSV input | Stable |
| Behavior Modelling | Sync behaviors from scenarios, build behavior trees and behavior graphs, decorator conditions, behavior attributes, XML export | Stable for core workflows |
| Operation Design Domain | Generate OD view and manage ODD data in the ODD Manager | Stable |
| Sampling | YAML-driven constrained sampling, Latin Hypercube Sampling, CSV export | Stable |
| Execution | Open the execution window for XML, YAML, and Python-oriented workflows | Available |
| Python Plugin Support | Run a Python plugin against the current project context | Available |
| Import From Cameo | Import external model data through the Cameo import flow | Available |
| Help System | Bundled user manual available from the Help menu | Stable |
The top-level menus in the current application are the clearest way to understand what ODME does. The README below mirrors the actual menu structure in the code.
Save: saves the current project and generated artifactsSave As: saves the project under a new project nameSave as PNG: exports the current graph canvas as an imageExit: closes the application
This is the main authoring mode for the SES model.
New Project: create a new ODME projectOpen: open an existing project folderImport Template: import a template projectSave as Template: export the current model as a templateImport From Cameo: start the Cameo import workflow
Typical work in this mode includes:
- building the SES structure in the graph and tree views
- adding entity variables
- adding and deleting behaviors on entity nodes
- editing constraints and metadata
- saving project XML and graph artifacts
This menu is used for scenario creation from the currently open domain model.
Save Scenario: create or save a scenario entryGenerate Scenario -> From CSV: create scenario files from CSV rows
This menu opens the separate behavior editor flow.
Sync Behaviour: open the scenario-linked behavior workflow
From there, the current code supports:
- selecting behavior leaves from the left tree
- placing them into the behavior graph
- adding selector, sequence, parallel, and decorator nodes
- editing decorator conditions
- attaching behavior attributes to behavior entities
- saving and exporting behavior graph data
This menu contains the ODD-specific workflow.
Generate OD: generate the current OD view from the modelODD Manager: inspect and manage ODD data, ranges, and exports
This menu groups downstream scenario tools.
Scenarios List: open saved scenariosExecution: open the execution windowFeedback Loop: reserved scenario workflow entry pointGenerate Samples: open the constrained sample generation panel
Some scenario-related actions stay disabled until a project is open.
Run Python Plugin...: run a Python script with access to the current project session
User Manual: open the bundled ODME user manualAbout: open the about dialog
- Java 17 or newer
- Maven 3.8 or newer
If you want to build a native desktop app image:
- use a full JDK that includes
jpackage
If you simply want to try the editor:
- clone the repository
- build the project
- launch the JAR or the packaged app
- open the bundled example project
examples/RunwaySignClassifier - review
Help -> User Manual
Clone command:
git clone https://github.com/aeronautical-informatics/ODME.git
cd ODMEThere are two common ways to run ODME on Windows.
From PowerShell:
cd C:\path\to\ODME
$env:MAVEN_OPTS='-Dmaven.repo.local=C:\path\to\ODME\build\.m2\repository -Dmaven.user.home=C:\path\to\ODME\build\.m2'
mvn clean package -DskipTests
java -jar .\target\SESEditor-2.0.0-SNAPSHOT.jarWhat this does:
- downloads dependencies
- builds the shaded application JAR
- launches the desktop application directly
From PowerShell:
cd C:\path\to\ODME
powershell -ExecutionPolicy Bypass -File .\launcher\build-windows-exe.ps1This creates:
dist\ODME\ODME.exe
Then run:
.\dist\ODME\ODME.exeImportant:
- the
distfolder does not exist until you build the native app image - keep the full
dist\ODMEfolder together when launching the packaged app
If you use Git Bash on Windows, the easiest source-based launch is:
cd /c/path/to/ODME
export MAVEN_OPTS="-Dmaven.repo.local=$PWD/build/.m2/repository -Dmaven.user.home=$PWD/build/.m2"
mvn clean package -DskipTests
java -jar target/SESEditor-2.0.0-SNAPSHOT.jarIf Git Bash does not find Maven on your PATH, try:
mvn.cmd clean package -DskipTestsIf you want the native Windows app from Git Bash, call the PowerShell packager:
cd /c/path/to/ODME
powershell.exe -ExecutionPolicy Bypass -File ./launcher/build-windows-exe.ps1
./dist/ODME/ODME.exeStandard test run:
mvn testUseful additional checks:
mvn jacoco:report
mvn spotbugs:check
mvn checkstyle:checkNotes:
mvn testruns unit tests and produces JaCoCo datamvn jacoco:reportwrites the HTML report totarget/site/jacoco/- SpotBugs and Checkstyle are configured in the current Maven build
ODME ships with a complete example based on:
K. Dmitriev et al., "Runway Sign Classifier: A DAL C Certifiable Machine Learning System,"
IEEE/AIAA 42nd DASC, Barcelona, 2023.
The example models an airborne DNN system for airport sign detection and classification, with:
- 23 leaf entities across environment, sensor, and system architecture branches
- 43 ODD parameters
- 21 continuous parameters suitable for LHS-based sampling
- 2,592 possible PES combinations derived from specialization choices
To open it after launching ODME:
- choose
Domain Modelling -> Open - select the folder
examples/RunwaySignClassifier - inspect the graph, variables, scenarios, and ODD workflow
For the example-specific details, see examples/RunwaySignClassifier/README.md.
ODME follows a mixed architecture:
- a modernized domain and application layer for testable core logic
- a legacy Swing and mxGraph-based desktop UI for interactive editing
- dedicated sampling, export, execution, and plugin flows layered around the editor
At a high level:
odme/
|-- domain/ core SES, scenario, validation, transformation, coverage
|-- application/ project services and plugin runner support
|-- sampling/ constrained sampling and CSV generation pipeline
|-- odmeeditor/ Swing desktop application and windows
|-- jtreetograph/ graph and tree synchronization logic
|-- behaviour/ behavior modelling editor support
Additional project documentation:
Contributions are welcome. Please see CONTRIBUTING.md for development and contribution guidelines.
ODME is released under the MIT License.