SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
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

Contenu connexe

Plus 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
 

Plus 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
 

Dernier

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
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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
 
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
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Dernier (20)

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
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

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