SlideShare a Scribd company logo
Failure-Preventing
Recommendations
                 Adrian
               Schröter

             Dr. Daniela
                 Damian
Motivation

  The US economy lost in 2002
    60 billion dollar
   due to software defects




        http://www.nist.gov/public_affairs/releases/n02-10.htm
Research Hypothesis

Hypothesis:
     “The Relation between Social and
     Technical Dimensions in Software
    Development can be used to Create
   Failure-Preventing Recommendations.”
Approach



  Change
Approach

     owns


  Change
Approach

                                                                                                                              owns


                                                                                                                           Change
                                                                                                                 affects            affects
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;                                                                       package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;

import java.io.InputStream;                                                                                                                   import java.io.InputStream;
import java.util.HashMap;                                                                                                                     import java.util.HashMap;

import ca.uvic.segal.jazz.extraction.datastructures.Instances;                                                                                import ca.uvic.segal.jazz.extraction.datastructures.Instances;

import com.ibm.team.filesystem.common.IFileItem;                                                                                              import com.ibm.team.filesystem.common.IFileItem;
import com.ibm.team.filesystem.common.IFileItemHandle;                                                                                        import com.ibm.team.filesystem.common.IFileItemHandle;
import com.ibm.team.repository.common.IContent;                                                                                               import com.ibm.team.repository.common.IContent;
import com.ibm.team.repository.common.TeamRepositoryException;                                                                                import com.ibm.team.repository.common.TeamRepositoryException;
import com.ibm.team.scm.common.IChange;                                                                                                       import com.ibm.team.scm.common.IChange;
import com.ibm.team.scm.common.IFolder;                                                                                                       import com.ibm.team.scm.common.IFolder;
import com.ibm.team.scm.common.IFolderHandle;                                                                                                 import com.ibm.team.scm.common.IFolderHandle;
import com.ibm.team.scm.common.IVersionableHandle;                                                                                            import com.ibm.team.scm.common.IVersionableHandle;

public class SimpleChange {                                                                                                                   public class SimpleChange {
	                   private String kind = null;                                                                                               	                   private String kind = null;
	                   private String changeSetId = null;                                                                                        	                   private String changeSetId = null;
	                                                                                                                                             	
	                   //private InputStream beforeFile = null;                                                                                  	                   //private InputStream beforeFile = null;
	                   private IFileItemHandle beforeFile = null;                                                                                	                   private IFileItemHandle beforeFile = null;
	                   private String beforeName = null;                                                                                         	                   private String beforeName = null;
	                   private String beforeFolder = null;                                                                                       	                   private String beforeFolder = null;
	                                                                                                                                             	
	                   //private InputStream afterFile = null;                                                                                   	                   //private InputStream afterFile = null;
	                   private IFileItemHandle afterFile = null;                                                                                 	                   private IFileItemHandle afterFile = null;
	                   private String afterName = null;                                                                                          	                   private String afterName = null;
	                   private String afterFolder = null;                                                                                        	                   private String afterFolder = null;
	                                                                                                                                             	
	                   //private String filename = null;                                                                                         	                   //private String filename = null;
	                   //private String folder = null;                                                                                           	                   //private String folder = null;
	                                                                                                                                             	
	                   private boolean isFile = true;                                                                                            	                   private boolean isFile = true;
	                                                                                                                                             	
	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();                                                  	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
	                                                                                                                                             	
	                   private Instances instances = null;                                                                                       	                   private Instances instances = null;
	                                                                                                                                             	
	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws                                       	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws
TeamRepositoryException {                                                                                                                     TeamRepositoryException {
	                                                                                                                                             	
	                   this.instances = instances;                                                                                               	                   this.instances = instances;
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");                                                                        	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");
	                                                                                                                                             	
	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");                                                                  	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
	                                                                                                                                             	
	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");                                                                  	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");
	                                                                                                                                             	
	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");                                                                      	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");
	                                                                                                                                             	
	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");                                                                  	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");
	                                                                                                                                             	
	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");                                                              	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {                                                            	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
	                                                                                                                                             	
	                                                                                                                                             	
	                   //this.beforeFile = this.getFile(change.beforeState(), instances);                                                        	                   //this.beforeFile = this.getFile(change.beforeState(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.beforeFile = (IFileItemHandle) change.beforeState();                                                                 	                   this.beforeFile = (IFileItemHandle) change.beforeState();
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);                                	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);                                	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                   //this.afterFile = this.getFile(change.afterState(), instances);                                                          	                   //this.afterFile = this.getFile(change.afterState(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.afterFile = (IFileItemHandle) change.afterState();                                                                   	                   this.afterFile = (IFileItemHandle) change.afterState();
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);                                  	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);                                  	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                                                                                                                                             	
	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);                                       	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);
	                                                                                                                                             	
	                                                                                                                                             	
	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);                                           	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);

	                                                                                                                                             	
	                  }                                                                                                                          	                  }
	                                                                                                                                             	
	                  return null;                                                                                                               	                  return null;




A.java                                                                                                                                        B.java
Approach

                                                                                                                                     owns

owns                                                                                                                              Change                                                                                                                              owns

                                                                                                                        affects            affects
       package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;                                                                       package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;

       import java.io.InputStream;                                                                                                                   import java.io.InputStream;
       import java.util.HashMap;                                                                                                                     import java.util.HashMap;

       import ca.uvic.segal.jazz.extraction.datastructures.Instances;                                                                                import ca.uvic.segal.jazz.extraction.datastructures.Instances;

       import com.ibm.team.filesystem.common.IFileItem;                                                                                              import com.ibm.team.filesystem.common.IFileItem;
       import com.ibm.team.filesystem.common.IFileItemHandle;                                                                                        import com.ibm.team.filesystem.common.IFileItemHandle;
       import com.ibm.team.repository.common.IContent;                                                                                               import com.ibm.team.repository.common.IContent;
       import com.ibm.team.repository.common.TeamRepositoryException;                                                                                import com.ibm.team.repository.common.TeamRepositoryException;
       import com.ibm.team.scm.common.IChange;                                                                                                       import com.ibm.team.scm.common.IChange;
       import com.ibm.team.scm.common.IFolder;                                                                                                       import com.ibm.team.scm.common.IFolder;
       import com.ibm.team.scm.common.IFolderHandle;                                                                                                 import com.ibm.team.scm.common.IFolderHandle;
       import com.ibm.team.scm.common.IVersionableHandle;                                                                                            import com.ibm.team.scm.common.IVersionableHandle;

       public class SimpleChange {                                                                                                                   public class SimpleChange {
       	                   private String kind = null;                                                                                               	                   private String kind = null;
       	                   private String changeSetId = null;                                                                                        	                   private String changeSetId = null;
       	                                                                                                                                             	
       	                   //private InputStream beforeFile = null;                                                                                  	                   //private InputStream beforeFile = null;
       	                   private IFileItemHandle beforeFile = null;                                                                                	                   private IFileItemHandle beforeFile = null;
       	                   private String beforeName = null;                                                                                         	                   private String beforeName = null;
       	                   private String beforeFolder = null;                                                                                       	                   private String beforeFolder = null;
       	                                                                                                                                             	
       	                   //private InputStream afterFile = null;                                                                                   	                   //private InputStream afterFile = null;
       	                   private IFileItemHandle afterFile = null;                                                                                 	                   private IFileItemHandle afterFile = null;
       	                   private String afterName = null;                                                                                          	                   private String afterName = null;
       	                   private String afterFolder = null;                                                                                        	                   private String afterFolder = null;
       	                                                                                                                                             	
       	                   //private String filename = null;                                                                                         	                   //private String filename = null;
       	                   //private String folder = null;                                                                                           	                   //private String folder = null;
       	                                                                                                                                             	
       	                   private boolean isFile = true;                                                                                            	                   private boolean isFile = true;
       	                                                                                                                                             	
       	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();                                                  	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
       	                                                                                                                                             	
       	                   private Instances instances = null;                                                                                       	                   private Instances instances = null;
       	                                                                                                                                             	
       	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws                                       	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws
       TeamRepositoryException {                                                                                                                     TeamRepositoryException {
       	                                                                                                                                             	
       	                   this.instances = instances;                                                                                               	                   this.instances = instances;
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");                                                                        	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");
       	                                                                                                                                             	
       	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");                                                                  	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
       	                                                                                                                                             	
       	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");                                                                  	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");
       	                                                                                                                                             	
       	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");                                                                      	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");
       	                                                                                                                                             	
       	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");                                                                  	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");
       	                                                                                                                                             	
       	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");                                                              	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {                                                            	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   //this.beforeFile = this.getFile(change.beforeState(), instances);                                                        	                   //this.beforeFile = this.getFile(change.beforeState(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.beforeFile = (IFileItemHandle) change.beforeState();                                                                 	                   this.beforeFile = (IFileItemHandle) change.beforeState();
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);                                	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);                                	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   //this.afterFile = this.getFile(change.afterState(), instances);                                                          	                   //this.afterFile = this.getFile(change.afterState(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.afterFile = (IFileItemHandle) change.afterState();                                                                   	                   this.afterFile = (IFileItemHandle) change.afterState();
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);                                  	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);                                  	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);                                       	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);
       	                                                                                                                                             	
       	                                                                                                                                             	
       	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);                                           	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);

       	                                                                                                                                             	
       	                  }                                                                                                                          	                  }
       	                                                                                                                                             	
       	                  return null;                                                                                                               	                  return null;




       A.java                                                                                                                                        B.java
Approach

                                                                                                                               de nt            De
                                                                                                                                                   pen
                                                                                                                          p en                            den
                                                                                                                        De                owns               t

owns                                                                                                                                   Change                                                                                                                                     owns

                                                                                                                             affects            affects
       package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;                                                                                   package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;

       import java.io.InputStream;                                                                                                                               import java.io.InputStream;
       import java.util.HashMap;                                                                                                                                 import java.util.HashMap;

       import ca.uvic.segal.jazz.extraction.datastructures.Instances;                                                                                            import ca.uvic.segal.jazz.extraction.datastructures.Instances;

       import com.ibm.team.filesystem.common.IFileItem;                                                                                                          import com.ibm.team.filesystem.common.IFileItem;
       import com.ibm.team.filesystem.common.IFileItemHandle;                                                                                                    import com.ibm.team.filesystem.common.IFileItemHandle;
       import com.ibm.team.repository.common.IContent;                                                                                                           import com.ibm.team.repository.common.IContent;
       import com.ibm.team.repository.common.TeamRepositoryException;                                                                                            import com.ibm.team.repository.common.TeamRepositoryException;
       import com.ibm.team.scm.common.IChange;                                                                                                                   import com.ibm.team.scm.common.IChange;
       import com.ibm.team.scm.common.IFolder;                                                                                                                   import com.ibm.team.scm.common.IFolder;
       import com.ibm.team.scm.common.IFolderHandle;                                                                                                             import com.ibm.team.scm.common.IFolderHandle;
       import com.ibm.team.scm.common.IVersionableHandle;                                                                                                        import com.ibm.team.scm.common.IVersionableHandle;

       public class SimpleChange {                                                                                                                               public class SimpleChange {
       	                   private String kind = null;                                                                                                           	                   private String kind = null;
       	                   private String changeSetId = null;                                                                                                    	                   private String changeSetId = null;
       	                                                                                                                                                         	
       	                   //private InputStream beforeFile = null;                                                                                              	                   //private InputStream beforeFile = null;
       	                   private IFileItemHandle beforeFile = null;                                                                                            	                   private IFileItemHandle beforeFile = null;
       	                   private String beforeName = null;                                                                                                     	                   private String beforeName = null;
       	                   private String beforeFolder = null;                                                                                                   	                   private String beforeFolder = null;
       	                                                                                                                                                         	
       	                   //private InputStream afterFile = null;                                                                                               	                   //private InputStream afterFile = null;
       	                   private IFileItemHandle afterFile = null;                                                                                             	                   private IFileItemHandle afterFile = null;
       	                   private String afterName = null;                                                                                                      	                   private String afterName = null;
       	                   private String afterFolder = null;                                                                                                    	                   private String afterFolder = null;
       	                                                                                                                                                         	
       	                   //private String filename = null;                                                                                                     	                   //private String filename = null;
       	                   //private String folder = null;                                                                                                       	                   //private String folder = null;
       	                                                                                                                                                         	
       	                   private boolean isFile = true;                                                                                                        	                   private boolean isFile = true;
       	                                                                                                                                                         	
       	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();                                                              	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
       	                                                                                                                                                         	
       	                   private Instances instances = null;                                                                                                   	                   private Instances instances = null;
       	                                                                                                                                                         	
       	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws                                                   	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws
       TeamRepositoryException {                                                                                                                                 TeamRepositoryException {
       	                                                                                                                                                         	
       	                   this.instances = instances;                                                                                                           	                   this.instances = instances;
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");                                                                                    	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");
       	                                                                                                                                                         	
       	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");                                                                              	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
       	                                                                                                                                                         	
       	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");                                                                              	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");
       	                                                                                                                                                         	
       	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");                                                                                  	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");
       	                                                                                                                                                         	
       	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");                                                                              	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");
       	                                                                                                                                                         	
       	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");                                                                          	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {                                                                        	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   //this.beforeFile = this.getFile(change.beforeState(), instances);                                                                    	                   //this.beforeFile = this.getFile(change.beforeState(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.beforeFile = (IFileItemHandle) change.beforeState();                                                                             	                   this.beforeFile = (IFileItemHandle) change.beforeState();
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);                                            	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);                                            	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   //this.afterFile = this.getFile(change.afterState(), instances);                                                                      	                   //this.afterFile = this.getFile(change.afterState(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.afterFile = (IFileItemHandle) change.afterState();                                                                               	                   this.afterFile = (IFileItemHandle) change.afterState();
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);                                              	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);                                              	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);                                                   	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);
       	                                                                                                                                                         	
       	                                                                                                                                                         	
       	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);                                                       	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);

       	                                                                                                                                                         	
       	                  }                                                                                                                                      	                  }
       	                                                                                                                                                         	
       	                  return null;                                                                                                                           	                  return null;




       A.java                                                                                                                                               B.java
Approach
                                                                                                                                   ange
                                                                                                                                  h
                                                                                                                          ou tC
                                                                                                 d ab
          lke                                                                                                                   de nt            De
                                                                                                                                                    pen
       Ta                                                                                                                  p en                            den
                                                                                                                         De                owns               t

owns                                                                                                                                    Change                                                                                                                                     owns

                                                                                                                              affects            affects
        package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;                                                                                   package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;

        import java.io.InputStream;                                                                                                                               import java.io.InputStream;
        import java.util.HashMap;                                                                                                                                 import java.util.HashMap;

        import ca.uvic.segal.jazz.extraction.datastructures.Instances;                                                                                            import ca.uvic.segal.jazz.extraction.datastructures.Instances;

        import com.ibm.team.filesystem.common.IFileItem;                                                                                                          import com.ibm.team.filesystem.common.IFileItem;
        import com.ibm.team.filesystem.common.IFileItemHandle;                                                                                                    import com.ibm.team.filesystem.common.IFileItemHandle;
        import com.ibm.team.repository.common.IContent;                                                                                                           import com.ibm.team.repository.common.IContent;
        import com.ibm.team.repository.common.TeamRepositoryException;                                                                                            import com.ibm.team.repository.common.TeamRepositoryException;
        import com.ibm.team.scm.common.IChange;                                                                                                                   import com.ibm.team.scm.common.IChange;
        import com.ibm.team.scm.common.IFolder;                                                                                                                   import com.ibm.team.scm.common.IFolder;
        import com.ibm.team.scm.common.IFolderHandle;                                                                                                             import com.ibm.team.scm.common.IFolderHandle;
        import com.ibm.team.scm.common.IVersionableHandle;                                                                                                        import com.ibm.team.scm.common.IVersionableHandle;

        public class SimpleChange {                                                                                                                               public class SimpleChange {
        	                   private String kind = null;                                                                                                           	                   private String kind = null;
        	                   private String changeSetId = null;                                                                                                    	                   private String changeSetId = null;
        	                                                                                                                                                         	
        	                   //private InputStream beforeFile = null;                                                                                              	                   //private InputStream beforeFile = null;
        	                   private IFileItemHandle beforeFile = null;                                                                                            	                   private IFileItemHandle beforeFile = null;
        	                   private String beforeName = null;                                                                                                     	                   private String beforeName = null;
        	                   private String beforeFolder = null;                                                                                                   	                   private String beforeFolder = null;
        	                                                                                                                                                         	
        	                   //private InputStream afterFile = null;                                                                                               	                   //private InputStream afterFile = null;
        	                   private IFileItemHandle afterFile = null;                                                                                             	                   private IFileItemHandle afterFile = null;
        	                   private String afterName = null;                                                                                                      	                   private String afterName = null;
        	                   private String afterFolder = null;                                                                                                    	                   private String afterFolder = null;
        	                                                                                                                                                         	
        	                   //private String filename = null;                                                                                                     	                   //private String filename = null;
        	                   //private String folder = null;                                                                                                       	                   //private String folder = null;
        	                                                                                                                                                         	
        	                   private boolean isFile = true;                                                                                                        	                   private boolean isFile = true;
        	                                                                                                                                                         	
        	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();                                                              	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
        	                                                                                                                                                         	
        	                   private Instances instances = null;                                                                                                   	                   private Instances instances = null;
        	                                                                                                                                                         	
        	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws                                                   	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws
        TeamRepositoryException {                                                                                                                                 TeamRepositoryException {
        	                                                                                                                                                         	
        	                   this.instances = instances;                                                                                                           	                   this.instances = instances;
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");                                                                                    	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");                                                                              	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");                                                                              	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");                                                                                  	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");                                                                              	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");                                                                          	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {                                                                        	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.beforeFile = this.getFile(change.beforeState(), instances);                                                                    	                   //this.beforeFile = this.getFile(change.beforeState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.beforeFile = (IFileItemHandle) change.beforeState();                                                                             	                   this.beforeFile = (IFileItemHandle) change.beforeState();
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);                                            	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);                                            	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.afterFile = this.getFile(change.afterState(), instances);                                                                      	                   //this.afterFile = this.getFile(change.afterState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.afterFile = (IFileItemHandle) change.afterState();                                                                               	                   this.afterFile = (IFileItemHandle) change.afterState();
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);                                              	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);                                              	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);                                                   	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);                                                       	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);

        	                                                                                                                                                         	
        	                  }                                                                                                                                      	                  }
        	                                                                                                                                                         	
        	                  return null;                                                                                                                           	                  return null;




       A.java                                                                                                                                                B.java
Approach
                                                                                                                                   ange
                                                                                                                                  h
                                                                                                                          ou tC
                                                                                                 d ab
          lke                                                                                                                   de nt            De
                                                                                                                                                    pen
       Ta                                                                                                                  p en                            den
                                                                                                                         De                owns               t

owns                                                                                                                                    Change                                                                                                                                     owns

                                                                                                                              affects            affects
        package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;                                                                                   package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;

        import java.io.InputStream;                                                                                                                               import java.io.InputStream;
        import java.util.HashMap;                                                                                                                                 import java.util.HashMap;

        import ca.uvic.segal.jazz.extraction.datastructures.Instances;                                                                                            import ca.uvic.segal.jazz.extraction.datastructures.Instances;

        import com.ibm.team.filesystem.common.IFileItem;                                                                                                          import com.ibm.team.filesystem.common.IFileItem;
        import com.ibm.team.filesystem.common.IFileItemHandle;                                                                                                    import com.ibm.team.filesystem.common.IFileItemHandle;
        import com.ibm.team.repository.common.IContent;                                                                                                           import com.ibm.team.repository.common.IContent;
        import com.ibm.team.repository.common.TeamRepositoryException;                                                                                            import com.ibm.team.repository.common.TeamRepositoryException;
        import com.ibm.team.scm.common.IChange;                                                                                                                   import com.ibm.team.scm.common.IChange;
        import com.ibm.team.scm.common.IFolder;                                                                                                                   import com.ibm.team.scm.common.IFolder;
        import com.ibm.team.scm.common.IFolderHandle;                                                                                                             import com.ibm.team.scm.common.IFolderHandle;
        import com.ibm.team.scm.common.IVersionableHandle;                                                                                                        import com.ibm.team.scm.common.IVersionableHandle;

        public class SimpleChange {                                                                                                                               public class SimpleChange {
        	                   private String kind = null;                                                                                                           	                   private String kind = null;
        	                   private String changeSetId = null;                                                                                                    	                   private String changeSetId = null;
        	                                                                                                                                                         	
        	                   //private InputStream beforeFile = null;                                                                                              	                   //private InputStream beforeFile = null;
        	                   private IFileItemHandle beforeFile = null;                                                                                            	                   private IFileItemHandle beforeFile = null;
        	                   private String beforeName = null;                                                                                                     	                   private String beforeName = null;
        	                   private String beforeFolder = null;                                                                                                   	                   private String beforeFolder = null;
        	                                                                                                                                                         	
        	                   //private InputStream afterFile = null;                                                                                               	                   //private InputStream afterFile = null;
        	                   private IFileItemHandle afterFile = null;                                                                                             	                   private IFileItemHandle afterFile = null;
        	                   private String afterName = null;                                                                                                      	                   private String afterName = null;
        	                   private String afterFolder = null;                                                                                                    	                   private String afterFolder = null;
        	                                                                                                                                                         	
        	                   //private String filename = null;                                                                                                     	                   //private String filename = null;
        	                   //private String folder = null;                                                                                                       	                   //private String folder = null;
        	                                                                                                                                                         	
        	                   private boolean isFile = true;                                                                                                        	                   private boolean isFile = true;
        	                                                                                                                                                         	
        	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();                                                              	                   private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
        	                                                                                                                                                         	
        	                   private Instances instances = null;                                                                                                   	                   private Instances instances = null;
        	                                                                                                                                                         	
        	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws                                                   	                   public SimpleChange(IChange change, String changeSetId, Instances instances) throws
        TeamRepositoryException {                                                                                                                                 TeamRepositoryException {
        	                                                                                                                                                         	
        	                   this.instances = instances;                                                                                                           	                   this.instances = instances;
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");                                                                                    	                   this.kindMap.put(new Integer(IChange.ADD), "ADD");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");                                                                              	                   this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");                                                                              	                   this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");                                                                                  	                   this.kindMap.put(new Integer(IChange.NONE), "NONE");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");                                                                              	                   this.kindMap.put(new Integer(IChange.RENAME), "RENAME");
        	                                                                                                                                                         	
        	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");                                                                          	                   this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {                                                                        	                   if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.beforeFile = this.getFile(change.beforeState(), instances);                                                                    	                   //this.beforeFile = this.getFile(change.beforeState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.beforeFile = (IFileItemHandle) change.beforeState();                                                                             	                   this.beforeFile = (IFileItemHandle) change.beforeState();
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);                                            	                   this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);                                            	                   this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.afterFile = this.getFile(change.afterState(), instances);                                                                      	                   //this.afterFile = this.getFile(change.afterState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.afterFile = (IFileItemHandle) change.afterState();                                                                               	                   this.afterFile = (IFileItemHandle) change.afterState();
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);                                              	                   this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);                                              	                   this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);                                                   	                   //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances);
        	                                                                                                                                                         	
        	                                                                                                                                                         	
        	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);                                                       	                   //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);

        	                                                                                                                                                         	
        	                  }                                                                                                                                      	                  }
        	                                                                                                                                                         	
        	                  return null;                                                                                                                           	                  return null;




       A.java                                                                                                                                                B.java
Evaluation


Fix Inducing      None Fix Inducing
Evaluation


Fix Inducing      None Fix Inducing
Evaluation


Fix Inducing                  None Fix Inducing




                 The difference
               is they didn’t talk
Evaluation


Fix Inducing                    Fix




                Fix addressed
               the dependency
Future Contributions

• modeling the coordination around changes
• a tool set to extract change centric socio-
  technical networks
• create actionable knowledge to guide
  developers

More Related Content

More from Adrian Schroeter

Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012
Adrian Schroeter
 
Predicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in JazzPredicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in Jazz
Adrian Schroeter
 
Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?
Adrian Schroeter
 
Candidacy
CandidacyCandidacy
Candidacy
Adrian Schroeter
 
MSA - building socio-technical networks
MSA - building socio-technical networksMSA - building socio-technical networks
MSA - building socio-technical networks
Adrian Schroeter
 
Boolean Games
Boolean GamesBoolean Games
Boolean Games
Adrian Schroeter
 
Mining Jazz: An Experience Report
Mining Jazz: An Experience ReportMining Jazz: An Experience Report
Mining Jazz: An Experience Report
Adrian Schroeter
 

More from Adrian Schroeter (7)

Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012
 
Predicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in JazzPredicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in Jazz
 
Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?
 
Candidacy
CandidacyCandidacy
Candidacy
 
MSA - building socio-technical networks
MSA - building socio-technical networksMSA - building socio-technical networks
MSA - building socio-technical networks
 
Boolean Games
Boolean GamesBoolean Games
Boolean Games
 
Mining Jazz: An Experience Report
Mining Jazz: An Experience ReportMining Jazz: An Experience Report
Mining Jazz: An Experience Report
 

Recently uploaded

National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 

Recently uploaded (20)

National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 

Failure-Preventing Recommendations

  • 1. Failure-Preventing Recommendations Adrian Schröter Dr. Daniela Damian
  • 2. Motivation The US economy lost in 2002 60 billion dollar due to software defects http://www.nist.gov/public_affairs/releases/n02-10.htm
  • 3. Research Hypothesis Hypothesis: “The Relation between Social and Technical Dimensions in Software Development can be used to Create Failure-Preventing Recommendations.”
  • 5. Approach owns Change
  • 6. Approach owns Change affects affects package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.io.InputStream; import java.util.HashMap; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { public class SimpleChange { private String kind = null; private String kind = null; private String changeSetId = null; private String changeSetId = null; //private InputStream beforeFile = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeName = null; private String beforeFolder = null; private String beforeFolder = null; //private InputStream afterFile = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterName = null; private String afterFolder = null; private String afterFolder = null; //private String filename = null; //private String filename = null; //private String folder = null; //private String folder = null; private boolean isFile = true; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { TeamRepositoryException { this.instances = instances; this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); } } return null; return null; A.java B.java
  • 7. Approach owns owns Change owns affects affects package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.io.InputStream; import java.util.HashMap; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { public class SimpleChange { private String kind = null; private String kind = null; private String changeSetId = null; private String changeSetId = null; //private InputStream beforeFile = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeName = null; private String beforeFolder = null; private String beforeFolder = null; //private InputStream afterFile = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterName = null; private String afterFolder = null; private String afterFolder = null; //private String filename = null; //private String filename = null; //private String folder = null; //private String folder = null; private boolean isFile = true; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { TeamRepositoryException { this.instances = instances; this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); } } return null; return null; A.java B.java
  • 8. Approach de nt De pen p en den De owns t owns Change owns affects affects package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.io.InputStream; import java.util.HashMap; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { public class SimpleChange { private String kind = null; private String kind = null; private String changeSetId = null; private String changeSetId = null; //private InputStream beforeFile = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeName = null; private String beforeFolder = null; private String beforeFolder = null; //private InputStream afterFile = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterName = null; private String afterFolder = null; private String afterFolder = null; //private String filename = null; //private String filename = null; //private String folder = null; //private String folder = null; private boolean isFile = true; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { TeamRepositoryException { this.instances = instances; this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); } } return null; return null; A.java B.java
  • 9. Approach ange h ou tC d ab lke de nt De pen Ta p en den De owns t owns Change owns affects affects package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.io.InputStream; import java.util.HashMap; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { public class SimpleChange { private String kind = null; private String kind = null; private String changeSetId = null; private String changeSetId = null; //private InputStream beforeFile = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeName = null; private String beforeFolder = null; private String beforeFolder = null; //private InputStream afterFile = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterName = null; private String afterFolder = null; private String afterFolder = null; //private String filename = null; //private String filename = null; //private String folder = null; //private String folder = null; private boolean isFile = true; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { TeamRepositoryException { this.instances = instances; this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); } } return null; return null; A.java B.java
  • 10. Approach ange h ou tC d ab lke de nt De pen Ta p en den De owns t owns Change owns affects affects package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.io.InputStream; import java.util.HashMap; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { public class SimpleChange { private String kind = null; private String kind = null; private String changeSetId = null; private String changeSetId = null; //private InputStream beforeFile = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeName = null; private String beforeFolder = null; private String beforeFolder = null; //private InputStream afterFile = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterName = null; private String afterFolder = null; private String afterFolder = null; //private String filename = null; //private String filename = null; //private String folder = null; //private String folder = null; private boolean isFile = true; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { TeamRepositoryException { this.instances = instances; this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); } } return null; return null; A.java B.java
  • 11. Evaluation Fix Inducing None Fix Inducing
  • 12. Evaluation Fix Inducing None Fix Inducing
  • 13. Evaluation Fix Inducing None Fix Inducing The difference is they didn’t talk
  • 14. Evaluation Fix Inducing Fix Fix addressed the dependency
  • 15. Future Contributions • modeling the coordination around changes • a tool set to extract change centric socio- technical networks • create actionable knowledge to guide developers