SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Mehr von 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 2012Adrian 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 JazzAdrian 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
 
MSA - building socio-technical networks
MSA - building socio-technical networksMSA - building socio-technical networks
MSA - building socio-technical networksAdrian Schroeter
 
Mining Jazz: An Experience Report
Mining Jazz: An Experience ReportMining Jazz: An Experience Report
Mining Jazz: An Experience ReportAdrian Schroeter
 

Mehr von 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
 

Kürzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Kürzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

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