failure-preventing recommendations

15
Failure-Preventing Recommendations Adrian Schröter Dr. Daniela Damian

Upload: adrian-schroeter

Post on 19-Jun-2015

310 views

Category:

Technology


0 download

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

Failure-Preventing Recommendations

Adrian Schröter

Dr. Daniela Damian

Page 2: Failure-Preventing Recommendations

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

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

Approach

Change

Page 5: Failure-Preventing Recommendations

Approach

Change

owns

Page 6: Failure-Preventing Recommendations

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

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

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

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

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

Evaluation

Fix Inducing None Fix Inducing

Page 12: Failure-Preventing Recommendations

Evaluation

Fix Inducing None Fix Inducing

Page 13: Failure-Preventing Recommendations

Evaluation

Fix Inducing None Fix Inducing

The difference is they didn’t talk

Page 14: Failure-Preventing Recommendations

Evaluation

Fix Inducing Fix

Fix addressed the dependency

Page 15: Failure-Preventing Recommendations

Future Contributions

• modeling the coordination around changes

• a tool set to extract change centric socio-technical networks

• create actionable knowledge to guide developers