diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Dependency.java b/src/main/java/kieker/analysis/domain/systemdependency/Dependency.java
new file mode 100644
index 0000000000000000000000000000000000000000..a3c7a9f64540e589523bcc490f947a1cc5c353ba
--- /dev/null
+++ b/src/main/java/kieker/analysis/domain/systemdependency/Dependency.java
@@ -0,0 +1,49 @@
+package kieker.analysis.domain.systemdependency;
+
+public class Dependency<E extends SystemEntity> {
+
+	private final E caller;
+	private final E callee;
+
+	private int calls;
+	private int failuredCalls;
+
+	public Dependency(final E caller, final E callee) {
+		super();
+		this.caller = caller;
+		this.callee = callee;
+	}
+
+	public E getCaller() {
+		return caller;
+	}
+
+	public E getCallee() {
+		return callee;
+	}
+
+	public int getCalls() {
+		return calls;
+	}
+
+	public void setCalls(final int calls) {
+		this.calls = calls;
+	}
+
+	public void addCalls(final int calls) {
+		this.calls += calls;
+	}
+
+	public int getFailuredCalls() {
+		return failuredCalls;
+	}
+
+	public void setFailuredCalls(final int failuredCalls) {
+		this.failuredCalls = failuredCalls;
+	}
+
+	public void addFailuredCalls(final int failuredCalls) {
+		this.failuredCalls += failuredCalls;
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java b/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java
new file mode 100644
index 0000000000000000000000000000000000000000..80b3a1938963816f3b8de28a28d435bf2c72cda5
--- /dev/null
+++ b/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java
@@ -0,0 +1,46 @@
+package kieker.analysis.domain.systemdependency;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class SoftwareSystem {
+
+	private Collection<Container> containers = new ArrayList<>();
+
+	private Collection<Dependency<Container>> containerDependencies = new ArrayList<>();
+	private Collection<Dependency<Component>> componentDependencies = new ArrayList<>();
+	private Collection<Dependency<Operation>> operationDependencies = new ArrayList<>();
+
+	public Collection<Container> getContainers() {
+		return containers;
+	}
+
+	public void setContainers(final Collection<Container> containers) {
+		this.containers = containers;
+	}
+
+	public Collection<Dependency<Container>> getContainerDependencies() {
+		return containerDependencies;
+	}
+
+	public void setContainerDependencies(final Collection<Dependency<Container>> containerDependencies) {
+		this.containerDependencies = containerDependencies;
+	}
+
+	public Collection<Dependency<Component>> getComponentDependencies() {
+		return componentDependencies;
+	}
+
+	public void setComponentDependencies(final Collection<Dependency<Component>> componentDependencies) {
+		this.componentDependencies = componentDependencies;
+	}
+
+	public Collection<Dependency<Operation>> getOperationDependencies() {
+		return operationDependencies;
+	}
+
+	public void setOperationDependencies(final Collection<Dependency<Operation>> operationDependencies) {
+		this.operationDependencies = operationDependencies;
+	}
+
+}