Index: trunk/CrossPare/src/de/ugoe/cs/cpdp/Experiment.java
===================================================================
--- trunk/CrossPare/src/de/ugoe/cs/cpdp/Experiment.java	(revision 26)
+++ trunk/CrossPare/src/de/ugoe/cs/cpdp/Experiment.java	(revision 27)
@@ -2,4 +2,5 @@
 
 import java.io.File;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -90,4 +91,7 @@
 		}
 		
+		// sort versions
+		Collections.sort(versions);
+		
 		for( SoftwareVersion testVersion : versions ) {
 			if( isVersion(testVersion, config.getTestVersionFilters()) ) {
Index: trunk/CrossPare/src/de/ugoe/cs/cpdp/versions/SoftwareVersion.java
===================================================================
--- trunk/CrossPare/src/de/ugoe/cs/cpdp/versions/SoftwareVersion.java	(revision 26)
+++ trunk/CrossPare/src/de/ugoe/cs/cpdp/versions/SoftwareVersion.java	(revision 27)
@@ -7,5 +7,5 @@
  * @author Steffen Herbold
  */
-public class SoftwareVersion {
+public class SoftwareVersion implements Comparable<SoftwareVersion> {
 
 	/**
@@ -59,3 +59,20 @@
 		return new Instances(instances);
 	}
+
+	/** 
+	 * Compares first based on project name and then based on version. Only string comparisons are performed. 
+	 * @see java.lang.Comparable#compareTo(java.lang.Object)
+	 */
+	@Override
+	public int compareTo(SoftwareVersion o) {
+		int projectStrCmp = 0;
+		if( project!=null ) {
+			projectStrCmp = project.compareTo(o.project);
+		} 
+		if( projectStrCmp==0 && version!=null ) {
+			return version.compareTo(o.version);			
+		} else {
+			return projectStrCmp;
+		}
+	}
 }
