diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Component.java b/src/main/java/kieker/analysis/domain/systemdependency/Component.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc89ed4ed0b59eee2c2c873b6097c2a7bfb5dda2
--- /dev/null
+++ b/src/main/java/kieker/analysis/domain/systemdependency/Component.java
@@ -0,0 +1,29 @@
+package kieker.analysis.domain.systemdependency;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class Component extends SystemEntity {
+
+	private final Container container;
+	private final Collection<Operation> operations = new ArrayList<>();
+
+	public Component(final String name, final Container container) {
+		super(name, container.getIdentifier() + ',' + name);
+		this.container = container;
+		container.addComponent(this);
+	}
+
+	public Container getContainer() {
+		return container;
+	}
+
+	public Collection<Operation> getOperations() {
+		return operations;
+	}
+
+	protected void addOperation(final Operation operation) {
+		this.operations.add(operation);
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Container.java b/src/main/java/kieker/analysis/domain/systemdependency/Container.java
new file mode 100644
index 0000000000000000000000000000000000000000..46f5764aa1490c6e8c2878c92d48e08f7cb76412
--- /dev/null
+++ b/src/main/java/kieker/analysis/domain/systemdependency/Container.java
@@ -0,0 +1,22 @@
+package kieker.analysis.domain.systemdependency;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class Container extends SystemEntity {
+
+	private final Collection<Component> components = new ArrayList<>();
+
+	public Container(final String name) {
+		super(name, name);
+	}
+
+	public Collection<Component> getComponents() {
+		return components;
+	}
+
+	protected void addComponent(final Component component) {
+		this.components.add(component);
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Operation.java b/src/main/java/kieker/analysis/domain/systemdependency/Operation.java
new file mode 100644
index 0000000000000000000000000000000000000000..5444c14d2371ecf225485cfb2d795250f8a8063f
--- /dev/null
+++ b/src/main/java/kieker/analysis/domain/systemdependency/Operation.java
@@ -0,0 +1,17 @@
+package kieker.analysis.domain.systemdependency;
+
+public class Operation extends SystemEntity {
+
+	private final Component component;
+
+	public Operation(final String name, final Component component) {
+		super(name, component.getIdentifier() + ',' + name);
+		this.component = component;
+		component.addOperation(this);
+	}
+
+	public Component getComponent() {
+		return component;
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/domain/systemdependency/SystemEntity.java b/src/main/java/kieker/analysis/domain/systemdependency/SystemEntity.java
new file mode 100644
index 0000000000000000000000000000000000000000..5583f163d71d767605108ab3c944fb74387121cc
--- /dev/null
+++ b/src/main/java/kieker/analysis/domain/systemdependency/SystemEntity.java
@@ -0,0 +1,68 @@
+package kieker.analysis.domain.systemdependency;
+
+public abstract class SystemEntity {
+
+	private final String name;
+
+	private final String identifier;
+
+	private long totalDuration;
+	private long medianDuration;
+	private long minDuration;
+	private long maxDuration;
+	private long meanDuration;
+
+	public SystemEntity(final String name, final String identifier) {
+		this.name = name;
+		this.identifier = identifier;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public String getIdentifier() {
+		return identifier;
+	}
+
+	public long getTotalDuration() {
+		return totalDuration;
+	}
+
+	public void setTotalDuration(final long totalDuration) {
+		this.totalDuration = totalDuration;
+	}
+
+	public long getMedianDuration() {
+		return medianDuration;
+	}
+
+	public void setMedianDuration(final long medianDuration) {
+		this.medianDuration = medianDuration;
+	}
+
+	public long getMinDuration() {
+		return minDuration;
+	}
+
+	public void setMinDuration(final long minDuration) {
+		this.minDuration = minDuration;
+	}
+
+	public long getMaxDuration() {
+		return maxDuration;
+	}
+
+	public void setMaxDuration(final long maxDuration) {
+		this.maxDuration = maxDuration;
+	}
+
+	public long getMeanDuration() {
+		return meanDuration;
+	}
+
+	public void setMeanDuration(final long meanDuration) {
+		this.meanDuration = meanDuration;
+	}
+
+}