failure-preventing recommendations
DESCRIPTION
In this talk I gave a brief outline about my PhD work and how I plan to help software developers to avoid introducing failures into software.TRANSCRIPT
![Page 1: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/1.jpg)
Failure-Preventing Recommendations
Adrian Schröter
Dr. Daniela Damian
![Page 2: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/2.jpg)
Motivation
http://www.nist.gov/public_affairs/releases/n02-10.htm
The US economy lost in 2002
60 billion dollar due to software defects
![Page 3: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/3.jpg)
Research Hypothesis
Hypothesis:“The Relation between Social and Technical Dimensions in Software
Development can be used to Create Failure-Preventing Recommendations.”
![Page 4: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/4.jpg)
Approach
Change
![Page 5: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/5.jpg)
Approach
Change
owns
![Page 6: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/6.jpg)
Approach
Change
owns
A.java
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
B.java
affects affectspackage ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
![Page 7: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/7.jpg)
Approach
Change
owns
owns owns
A.java
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
B.java
affects affectspackage ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
![Page 8: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/8.jpg)
Approach
Change
Dependent Dependentowns
owns owns
A.java
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
B.java
affects affectspackage ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
![Page 9: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/9.jpg)
Approach
Change
Dependent DependentTalke
d about Change
owns
owns owns
A.java
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
B.java
affects affectspackage ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
![Page 10: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/10.jpg)
Approach
Change
Dependent DependentTalke
d about Change
owns
owns owns
A.java
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
B.java
affects affectspackage ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;
import java.io.InputStream;import java.util.HashMap;
import ca.uvic.segal.jazz.extraction.datastructures.Instances;
import com.ibm.team.filesystem.common.IFileItem;import com.ibm.team.filesystem.common.IFileItemHandle;import com.ibm.team.repository.common.IContent;import com.ibm.team.repository.common.TeamRepositoryException;import com.ibm.team.scm.common.IChange;import com.ibm.team.scm.common.IFolder;import com.ibm.team.scm.common.IFolderHandle;import com.ibm.team.scm.common.IVersionableHandle;
public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances);
} return null;
![Page 11: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/11.jpg)
Evaluation
Fix Inducing None Fix Inducing
![Page 12: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/12.jpg)
Evaluation
Fix Inducing None Fix Inducing
![Page 13: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/13.jpg)
Evaluation
Fix Inducing None Fix Inducing
The difference is they didn’t talk
![Page 14: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/14.jpg)
Evaluation
Fix Inducing Fix
Fix addressed the dependency
![Page 15: Failure-Preventing Recommendations](https://reader037.vdocuments.site/reader037/viewer/2022103115/5583f0d9d8b42ab0278b54d1/html5/thumbnails/15.jpg)
Future Contributions
• modeling the coordination around changes
• a tool set to extract change centric socio-technical networks
• create actionable knowledge to guide developers