SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
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

Más contenido relacionado

Más de 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
 

Más de 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
 

Último

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
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
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Último (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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...
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

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