Your SlideShare is downloading. ×
  • Like
Studying the impact of Social Structures on Software Quality
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Studying the impact of Social Structures on Software Quality

  • 728 views
Published

Talk given at the ICPC'10: 18th IEEE International Conference on Program Comprehension, Braga, Portugal.

Talk given at the ICPC'10: 18th IEEE International Conference on Program Comprehension, Braga, Portugal.

Published in Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
728
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
27
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Studying the Impact of Social Structures on Software Quality Nicolas Bettenburg and Ahmed E. Hassan Queen’s University, Kingston, Canada 1
  • 2. “If software developers were angels, debugging would be unnecessary!” (in ‘Why programs fail’, Elsevier 2009) James Larus Microsoft Research 2
  • 3. Software errors cost companies millions of dollars each year! 3
  • 4. Where will the errors be? 4
  • 5. Measure the source code... complexity cohesion coupling churn ... bugs 5
  • 6. ...and create a Prediction Model 6
  • 7. New Source Code Measurements Risk of Bugs 7
  • 8. We can also use a prediction model to understand factors! We can look inside the Box and study the model! vs 8 8
  • 9. In this work: SOCIAL STRUCTURES 9
  • 10. CASE STUDY 10
  • 11. 300,000 Bug Reports (BugZilla) Linked through Change-Log Analysis 224,643 Transactions (CVS) 11
  • 12. Measure Measure Discussion Post-Release Metrics Bugs 6 months 6 months time Eclipse 3.0 12
  • 13. Discussion Social CONTENT STRUCTURES 4 Dimensions of Measures Measures of Communication WORKFLOW DYNAMICS 13
  • 14. Bug 137808 Summary: Exceptions from createFromString lock-up the editor Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com> Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com> Metadata Status: VERIFIED FIXED QA Contact: Severity: normal Priority: P3 CC: merks@ca.ibm.com Version: 2.2 Target Milestone: --- Hardware: PC OS: Windows XP Whiteboard: Opened: 2006-04-20 14:25 - Description: 0400 As discussed on the newsgroup under the Thread with the same name I am opening this bug entry. Here is a history of the thread. -- From Ed Merks Patrick, The value is checked before it's applied and can't be applied until it's valid. But this BigDecimal cases behaves oddly because the exception thrown by new BigDecimal("badvalue") Source Code has a null message and the property editor relies on returning a non-null message string to indicate there is an error. Please open a bugzilla which I'll fix like this: ### Eclipse Workspace Patch 1.0 #P org.eclipse.emf.edit.ui Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v retrieving revision 1.10 diff -u -r1.10 PropertyDescriptor.java --- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006 16:42:30 -0000 1.10 +++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
  • 15. 11:59:10 -0000 @@ -162,7 +162,8 @@ } catch (Exception exception) { - return exception.getMessage(); + String message = exception.getMessage(); + return message == null ? exception.toString() : message; } } Diagnostic diagnostic = Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value); Patrick Sodre wrote: Hi, It seems that if the user inputs an invalid parameter that gets created from "createFromString" the Editor locks-up until the user explicitly calls "restore Default Value". Is this the expected behavior or could something better be done? For instance if an exception is thrown restore the value back to what it was before Patch after displaying a pop-up error message. I understand that for DataTypes defined by the user he/she should take care of catching the exceptions but for the default ones like BigInteger/BigDecimal I think the EMF runtime could do some of the grunt work... If you think this is something worth pursuing I could post an entry in Bugzilla. Stack Trace Regards, Patrick Sodre Below is the stack trace that I got from the Editor... java.lang.NumberFormatException at java.math.BigDecimal.<init>(BigDecimal.java:368) at java.math.BigDecimal.<init>(BigDecimal.java:647) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116) at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183) at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449) at org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135) at org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249) at ------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 ------- The fix has been committed to CVS. Thanks for reporting this problem.
  • 16. Discussion Social CONTENT STRUCTURES 4 Dimensions of Measures Measures of Communication WORKFLOW DYNAMICS 16
  • 17. Bug 137808 Summary: Exceptions from createFromString lock-up the editor Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com> Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com> Status: VERIFIED FIXED QA Contact: # PARTICIPANTS IN Severity: normal Priority: P3 CC: merks@ca.ibm.com Version: 2.2 DISCUSSION Target Milestone: --- Hardware: PC OS: Windows XP Whiteboard: Opened: 2006-04-20 14:25 - Description: 0400 As discussed on the newsgroup under the Thread with the same name I am opening this bug entry. Here is a history of the thread. -- From Ed Merks Patrick, The value is checked before it's applied and can't be applied until it's valid. But this BigDecimal cases behaves oddly because the exception thrown by new BigDecimal("badvalue") has a null message and the property editor relies on returning a non-null message string to indicate there is an error. Please open a bugzilla which I'll fix like this: ### Eclipse Workspace Patch 1.0 ROLE OF #P org.eclipse.emf.edit.ui Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v PARTICIPANTS retrieving revision 1.10 diff -u -r1.10 PropertyDescriptor.java --- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006 16:42:30 -0000 1.10 +++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006 11:59:10 -0000 @@ -162,7 +162,8 @@ } catch (Exception exception) { - return exception.getMessage(); + String message = exception.getMessage(); + return message == null ? exception.toString() : message; } } Diagnostic diagnostic = REPUTATION Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value); Patrick Sodre wrote: Hi, It seems that if the user inputs an invalid parameter that gets created from "createFromString" the Editor locks-up until the user explicitly calls "restore Default Value". Is this the expected behavior or could something better be done? For instance if an exception is thrown restore the value back to what it was before after displaying a pop-up error message. I understand that for DataTypes defined by the user he/she should take care of catching the exceptions but for the default ones like BigInteger/BigDecimal I think the EMF runtime could do some of the grunt work... If you think this is something worth pursuing I could post an entry in Bugzilla. CENTRALITY Regards, Patrick Sodre Below is the stack trace that I got from the Editor... java.lang.NumberFormatException at java.math.BigDecimal.<init>(BigDecimal.java:368) at java.math.BigDecimal.<init>(BigDecimal.java:647) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116) at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183) at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449) at org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135) at org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249) at ------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 ------- The fix has been committed to CVS. Thanks for reporting this problem. 17
  • 18. Discussion Social CONTENT STRUCTURES 4 Dimensions of Measures Measures of Communication WORKFLOW DYNAMICS 18
  • 19. Bug 137808 Summary: Exceptions from createFromString lock-up the editor Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com> Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com> Status: VERIFIED FIXED QA Contact: Severity: normal Priority: P3 CC: merks@ca.ibm.com Version: 2.2 Target Milestone: --- Hardware: PC OS: Windows XP Whiteboard: Opened: 2006-04-20 14:25 - # MESSAGES Description: 0400 As discussed on the newsgroup under the Thread with the same name I am opening this bug entry. Here is a history of the thread. -- From Ed Merks Patrick, The value is checked before it's applied and can't be applied until it's valid. But this BigDecimal cases behaves oddly because the exception thrown by new BigDecimal("badvalue") has a null message and the property editor relies on returning a non-null message string to indicate there is an error. MESSAGE Please open a bugzilla which I'll fix like this: ### Eclipse Workspace Patch 1.0 #P org.eclipse.emf.edit.ui Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java LENGTH =================================================================== RCS file: /cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v retrieving revision 1.10 diff -u -r1.10 PropertyDescriptor.java --- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006 16:42:30 -0000 1.10 +++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006 11:59:10 -0000 @@ -162,7 +162,8 @@ } catch (Exception exception) { - return exception.getMessage(); + String message = exception.getMessage(); + return message == null ? exception.toString() : message; } REPLY TIME } Diagnostic diagnostic = Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value); Patrick Sodre wrote: Hi, It seems that if the user inputs an invalid parameter that gets created from "createFromString" the Editor locks-up until the user explicitly calls "restore Default Value". Is this the expected behavior or could something better be done? For instance if an exception is thrown restore the value back to what it was before after displaying a pop-up error message. I understand that for DataTypes defined by the user he/she should take care of catching the exceptions but for the default ones like BigInteger/BigDecimal I think the EMF runtime could do some of the grunt work... If you think this is something worth pursuing I could post an entry in Bugzilla. INTERESTINGNESS Regards, Patrick Sodre Below is the stack trace that I got from the Editor... java.lang.NumberFormatException at java.math.BigDecimal.<init>(BigDecimal.java:368) at java.math.BigDecimal.<init>(BigDecimal.java:647) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116) at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183) at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449) at org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135) at org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249) at ------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 ------- The fix has been committed to CVS. Thanks for reporting this problem. 19
  • 20. Bug 137808 Summary: Exceptions from createFromString lock-up the editor Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com> Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com> Status: VERIFIED FIXED QA Contact: Severity: normal Priority: P3 CC: merks@ca.ibm.com Version: 2.2 Target Milestone: --- Hardware: PC OS: Windows XP Whiteboard: Opened: 2006-04-20 14:25 - Description: 0400 As discussed on the newsgroup under the Thread with the same name I am opening this bug entry. Here is a history of the thread. -- From Ed Merks # MESSAGES Patrick, The value is checked before it's applied and can't be applied until it's valid. But this BigDecimal cases behaves oddly because the exception thrown by new BigDecimal("badvalue") has a null message and the property editor relies on returning a non-null message string to indicate there is an error. Please open a bugzilla which I'll fix like this: ### Eclipse Workspace Patch 1.0 #P org.eclipse.emf.edit.ui Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java =================================================================== MESSAGE LENGTH RCS file: /cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v retrieving revision 1.10 diff -u -r1.10 PropertyDescriptor.java --- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006 16:42:30 -0000 1.10 +++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006 11:59:10 -0000 @@ -162,7 +162,8 @@ } catch (Exception exception) { - return exception.getMessage(); + String message = exception.getMessage(); + return message == null ? exception.toString() : message; } } REPLY TIME Diagnostic diagnostic = Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value); Patrick Sodre wrote: Hi, It seems that if the user inputs an invalid parameter that gets created from "createFromString" the Editor locks-up until the user explicitly calls "restore Default Value". Is this the expected behavior or could something better be done? For instance if an exception is thrown restore the value back to what it was before after displaying a pop-up error message. I understand that for DataTypes defined by the user he/she should take care of catching the exceptions but for the default ones like BigInteger/BigDecimal I think the EMF runtime could do some of the grunt work... If you think this is something worth pursuing I could post an entry in Bugzilla. Regards, Patrick Sodre Below is the stack trace that I got from the Editor... java.lang.NumberFormatException INTERESTINGNESS at java.math.BigDecimal.<init>(BigDecimal.java:368) at java.math.BigDecimal.<init>(BigDecimal.java:647) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116) at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183) at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449) at org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135) at org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249) at ------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 ------- The fix has been committed to CVS. Thanks for reporting this problem. 20
  • 21. Bug 137808 Summary: Exceptions from createFromString lock-up the editor Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com> Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com> Status: VERIFIED FIXED QA Contact: Severity: normal Priority: P3 CC: merks@ca.ibm.com Version: 2.2 Target Milestone: --- Hardware: PC OS: Windows XP Whiteboard: Opened: 2006-04-20 14:25 - # MESSAGES Description: 0400 As discussed on the newsgroup under the Thread with the same name I am opening this bug entry. Here is a history of the thread. -- From Ed Merks Patrick, The value is checked before it's applied and can't be applied until it's valid. But this BigDecimal cases behaves oddly because the exception thrown by new BigDecimal("badvalue") has a null message and the property editor relies on returning a non-null message string to indicate there is an error. MESSAGE Please open a bugzilla which I'll fix like this: ### Eclipse Workspace Patch 1.0 #P org.eclipse.emf.edit.ui Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java LENGTH =================================================================== RCS file: /cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v retrieving revision 1.10 diff -u -r1.10 PropertyDescriptor.java --- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006 16:42:30 -0000 1.10 +++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006 11:59:10 -0000 @@ -162,7 +162,8 @@ } catch (Exception exception) { - return exception.getMessage(); + String message = exception.getMessage(); + return message == null ? exception.toString() : message; } REPLY TIME } Diagnostic diagnostic = Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value); Patrick Sodre wrote: Hi, It seems that if the user inputs an invalid parameter that gets created from "createFromString" the Editor locks-up until the user explicitly calls "restore Default Value". Is this the expected behavior or could something better be done? For instance if an exception is thrown restore the value back to what it was before after displaying a pop-up error message. I understand that for DataTypes defined by the user he/she should take care of catching the exceptions but for the default ones like BigInteger/BigDecimal I think the EMF runtime could do some of the grunt work... If you think this is something worth pursuing I could post an entry in Bugzilla. INTERESTINGNESS Regards, Patrick Sodre Below is the stack trace that I got from the Editor... java.lang.NumberFormatException at java.math.BigDecimal.<init>(BigDecimal.java:368) at java.math.BigDecimal.<init>(BigDecimal.java:647) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116) at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183) at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449) at org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135) at org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249) at ------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 ------- The fix has been committed to CVS. Thanks for reporting this problem. 21
  • 22. Bug 137808 Summary: Exceptions from createFromString lock-up the editor Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com> Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com> Status: VERIFIED FIXED QA Contact: Severity: normal Priority: P3 CC: merks@ca.ibm.com Version: 2.2 Target Milestone: --- Hardware: PC OS: Windows XP Whiteboard: Opened: 2006-04-20 14:25 - # MESSAGES Description: 0400 As discussed on the newsgroup under the Thread with the same name I am opening this bug entry. Here is a history of the thread. -- From Ed Merks Patrick, The value is checked before it's applied and can't be applied until it's valid. But this BigDecimal cases behaves oddly because the exception thrown by new BigDecimal("badvalue") has a null message and the property editor relies on returning a non-null message string to indicate there is an error. MESSAGE Please open a bugzilla which I'll fix like this: ### Eclipse Workspace Patch 1.0 #P org.eclipse.emf.edit.ui Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java LENGTH =================================================================== RCS file: /cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v retrieving revision 1.10 diff -u -r1.10 PropertyDescriptor.java --- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006 16:42:30 -0000 1.10 +++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006 11:59:10 -0000 @@ -162,7 +162,8 @@ } catch (Exception exception) { - return exception.getMessage(); + String message = exception.getMessage(); + return message == null ? exception.toString() : message; } REPLY TIME } Diagnostic diagnostic = Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value); Patrick Sodre wrote: Hi, It seems that if the user inputs an invalid parameter that gets created from "createFromString" the Editor locks-up until the user explicitly calls "restore Default Value". Is this the expected behavior or could something better be done? For instance if an exception is thrown restore the value back to what it was before after displaying a pop-up error message. I understand that for DataTypes defined by the user he/she should take care of catching the exceptions but for the default ones like BigInteger/BigDecimal I think the EMF runtime could do some of the grunt work... If you think this is something worth pursuing I could post an entry in Bugzilla. INTERESTINGNESS Regards, Patrick Sodre Below is the stack trace that I got from the Editor... java.lang.NumberFormatException at java.math.BigDecimal.<init>(BigDecimal.java:368) at java.math.BigDecimal.<init>(BigDecimal.java:647) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559) at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116) at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183) at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449) at org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135) at org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249) at ------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 ------- The fix has been committed to CVS. Thanks for reporting this problem. 22
  • 23. Discussion Social CONTENT STRUCTURES 4 Dimensions of Measures Measures of Communication WORKFLOW DYNAMICS 23
  • 24. 2.3 Life Cycle of Bug Reports FIXED WORKSFORME WONTFIX INVALID UNCONFIRMED DUPLICATE NEW / REOPEN ASSIGNED RESOLVED VERIFIED CLOSED 24
  • 25. REGRESSION MODEL the amount of post-release defects into relation of our pre- release measures. The complete linear regression model has the form ￿ Def ects = αi · ContentM easurei i ￿ + βj · StructuralM easurej j ￿ + γk · ComDynM easurek k ￿ + δl · W orkf lowM easurel + ￿ l Based on this model, we will investigate the statistical relationships between the social interaction measures, which are represented by the regression variables in the model, and post release defects, represented by the dependent variable 25
  • 26. REGRESSION MODEL Dependentamount of post-release defects into relation of our pre- the Variable (what is predicted) release measures. The complete linear regression model has the form ￿ Def ects = αi · ContentM easurei i ￿ + βj · StructuralM easurej j ￿ + γk · ComDynM easurek k ￿ + δl · W orkf lowM easurel + ￿ l Based on this model, we will investigate the statistical relationships between the social interaction measures, which are represented by the regression variables in the model, and post release defects, represented by the dependent variable 25
  • 27. REGRESSION MODEL Regression Dependentamount of post-release defects into relation of our pre- the Variable Coefficients (what is predicted) release measures. The complete linear regression model has the form ￿ Def ects = αi · ContentM easurei i ￿ + βj · StructuralM easurej j ￿ + γk · ComDynM easurek k ￿ + δl · W orkf lowM easurel + ￿ l Based on this model, we will investigate the statistical relationships between the social interaction measures, which are represented by the regression variables in the model, and post release defects, represented by the dependent variable 25
  • 28. REGRESSION MODEL Regression Independent Dependentamount of post-release defects into relation of our pre- Variable the Coefficients (what is predicted) Variables release measures. The complete linear regression model has the form ￿ Def ects = αi · ContentM easurei i ￿ + βj · StructuralM easurej j ￿ + γk · ComDynM easurek k ￿ + δl · W orkf lowM easurel + ￿ l Based on this model, we will investigate the statistical relationships between the social interaction measures, which are represented by the regression variables in the model, and post release defects, represented by the dependent variable 25
  • 29. APPROACH Hierarchical Analysis Successfully used in the past! (Cataldo, Mockus) Goal: Investigate the effect of each variable on the model. (1) Eliminate variables with high correlation. (2) Build linear model step-by-step, each time adding new independent variables. (3) At each step, evaluate how well the set of independent variables explains the data. 26
  • 30. APPROACH Hierarchical Analysis (1) Eliminate variables with high correlation. :0. :0 ;;; 4(1. ;;; ;;; 4(1 ;;; ;;; ;;; 63.(. ;;; ;;; ;; 63.( ;;; ;; ;;; ;;; ,./39. ;;; ;;; ;;; ;;; ,./39 ;; ;;; ;;; ;;; ;;; ;;; ;;; (!)8 ;;; ;;; ;;; ;;; ;;; ;;; ;;; !"## )(0-.(1 ; ;;; ;;; ;;; ;;; ;;; ;;; ;;; "<= =<> (+).,) ; ;;; ;;; ;;; ;;; ;;; ;; ;; ;;; !# =<= (6.7) ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; (/0,1 ; ;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; (34(5 ; ;;; ;;; ;;; ;;; ;;; ;; ;;; ; ;;; ;;; ;;; ;;; 1,0-.) ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; (1,0-. ; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ; (/01-2 ;;; ;; ;;; ;;; ;;; ;;; ;;; ;;; ()-*! ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ; ;;; ;;; ()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;; $%&' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;; :0. :0 4(1. 4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,) (6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,-. $%&' !" 27
  • 31. APPROACH Hierarchical Analysis (1) Eliminate variables with high correlation. :0. :0 ;;; 4(1. ;;; ;;; 4(1 ;;; ;;; ;;; 63.(. ;;; ;;; ;; 63.( ;;; ;; ;;; ;;; ,./39. ,./39 ;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; Correlogram shows (!)8 )(0-.(1 ; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; correlation “hotspots” !"## "<= =<> (+).,) ; ;;; ;;; ;;; ;;; ;;; ;; ;; ;;; !# =<= (6.7) ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; (/0,1 ; ;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; (34(5 ; ;;; ;;; ;;; ;;; ;;; ;; ;;; ; ;;; ;;; ;;; ;;; 1,0-.) ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; (1,0-. ; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ; (/01-2 ;;; ;; ;;; ;;; ;;; ;;; ;;; ;;; ()-*! ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ; ;;; ;;; ()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;; $%&' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;; :0. :0 4(1. 4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,) (6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,-. $%&' !" 27
  • 32. /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ; (/01-2 ()-*! ;;; ;;; ;;; ;;;APPROACH ;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ; ;;; ;;; ;;; Hierarchical Analysis ()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;; $%&' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;; :0. :0 4(1. (1) Eliminate variables with high correlation. 4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,) !" (6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,- igure 1. Pairwise correlations of social interaction measures with levels * p<0.05, ** p<0.01, *** p<0.001. Strength of correlatio olour intensities; negative correlations are marked with a dashed outline. Variance Inflation Factor model that have a variance inflation factor g log(Yi ) Model 1 Model 2 Model 3 (1) Build analysis with all We start our model with a regression mode NSOURCE NSCOM 3.38 3.34 3.38 3.34 3.40 3.36 independent variables all our variables. The variance inflation fa NPATCH 3.94 3.88 3.90 model are presented in Table II, Model 1. W PATCHS 3.84 3.82 3.84 variables that have a variance inflation facto 10. Measure VIF of each (2) We remove the highest one (NMSG) from NTRACE 4.62 4.60 4.57 TRACES 4.78 4.75 4.70 NLINK 2.24 2.22 1.90 model and recompute the variance inflation f independent variable NDEVS 9.32 9.27 1.91 reduced set of variables. The resulting mode NUSERS 4.55 4.54 2.30 SNACENT 10.66 10.65 — Table II) contains only one more variable w NMSG REPLY 11.63 1.17 — 1.17 — 1.17 (3) Remove variable remove the regre factor larger than 10. We with (SNACENT) from the model and recomput factors. highest VIF REPLYE 2.04 1.91 1.90 DLEN 4.21 1.91 1.87 In the resulting model (Model 3 in DLENE 4.65 1.98 1.96 variables have an inflation factor larger than 5 INT 2.82 2.82 2.60 our analysis of multicollinearity. INTE 1.71 1.71 1.71 WA WAE 2.26 2.08 1.99 2.06 1.96 2.02 Repeat until Analysis Design C. Hierarchical all VIF below threshold (t=10) After having determined the reduced set Table II variables with low multicollinearity, we pro S TEP - WISE ANALYSIS OF MULTICOLLINEARITY. 28
  • 33. /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ; (/01-2 ()-*! ;;; ;;; ;;; ;;;APPROACH ;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ; ;;; ;;; ;;; Hierarchical Analysis ()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;; $%&' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;; :0. :0 4(1. (1) Eliminate variables with high correlation. 4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,) !" (6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,- igure 1. Pairwise correlations of social interaction measures with levels * p<0.05, ** p<0.01, *** p<0.001. Strength of correlatio olour intensities; negative correlations are marked with a dashed outline. Variance Inflation Factor model that have a variance inflation factor g log(Yi ) Model 1 Model 2 Model 3 (1) Build analysis with all We start our model with a regression mode NSOURCE NSCOM 3.38 3.34 3.38 3.34 3.40 3.36 independent variables all our variables. The variance inflation fa NPATCH 3.94 3.88 3.90 model are presented in Table II, Model 1. W PATCHS 3.84 3.82 3.84 variables that have a variance inflation facto 10. Measure VIF of each (2) We remove the highest one (NMSG) from NTRACE 4.62 4.60 4.57 TRACES 4.78 4.75 4.70 NLINK 2.24 2.22 1.90 model and recompute the variance inflation f independent variable NDEVS 9.32 9.27 1.91 reduced set of variables. The resulting mode NUSERS 4.55 4.54 2.30 SNACENT 10.66 10.65 — Table II) contains only one more variable w NMSG REPLY 11.63 1.17 — 1.17 — 1.17 (3) Remove variable remove the regre factor larger than 10. We with (SNACENT) from the model and recomput factors. highest VIF REPLYE 2.04 1.91 1.90 DLEN 4.21 1.91 1.87 In the resulting model (Model 3 in DLENE 4.65 1.98 1.96 variables have an inflation factor larger than 5 INT 2.82 2.82 2.60 our analysis of multicollinearity. INTE 1.71 1.71 1.71 WA WAE 2.26 2.08 1.99 2.06 1.96 2.02 Repeat until Analysis Design C. Hierarchical all VIF below threshold (t=10) After having determined the reduced set Table II variables with low multicollinearity, we pro S TEP - WISE ANALYSIS OF MULTICOLLINEARITY. 28
  • 34. /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ; (/01-2 ()-*! ;;; ;;; ;;; ;;;APPROACH ;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ; ;;; ;;; ;;; Hierarchical Analysis ()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;; $%&' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;; :0. :0 4(1. (1) Eliminate variables with high correlation. 4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,) !" (6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,- igure 1. Pairwise correlations of social interaction measures with levels * p<0.05, ** p<0.01, *** p<0.001. Strength of correlatio olour intensities; negative correlations are marked with a dashed outline. Variance Inflation Factor model that have a variance inflation factor g log(Yi ) Model 1 Model 2 Model 3 (1) Build analysis with all We start our model with a regression mode NSOURCE NSCOM 3.38 3.34 3.38 3.34 3.40 3.36 independent variables all our variables. The variance inflation fa NPATCH 3.94 3.88 3.90 model are presented in Table II, Model 1. W PATCHS 3.84 3.82 3.84 variables that have a variance inflation facto 10. Measure VIF of each (2) We remove the highest one (NMSG) from NTRACE 4.62 4.60 4.57 TRACES 4.78 4.75 4.70 NLINK 2.24 2.22 1.90 model and recompute the variance inflation f independent variable NDEVS 9.32 9.27 1.91 reduced set of variables. The resulting mode NUSERS 4.55 4.54 2.30 SNACENT 10.66 10.65 — Table II) contains only one more variable w NMSG REPLY 11.63 1.17 — 1.17 — 1.17 (3) Remove variable remove the regre factor larger than 10. We with (SNACENT) from the model and recomput factors. highest VIF REPLYE 2.04 1.91 1.90 DLEN 4.21 1.91 1.87 In the resulting model (Model 3 in DLENE 4.65 1.98 1.96 variables have an inflation factor larger than 5 INT 2.82 2.82 2.60 our analysis of multicollinearity. INTE 1.71 1.71 1.71 WA WAE 2.26 2.08 1.99 2.06 1.96 2.02 Repeat until Analysis Design C. Hierarchical all VIF below threshold (t=10) After having determined the reduced set Table II variables with low multicollinearity, we pro S TEP - WISE ANALYSIS OF MULTICOLLINEARITY. 28
  • 35. APPROACH Hierarchical Analysis (2) Build linear models step-by-step log(Yi ) MB M1 M2 M3 M4 M5 CHURN 4.996 *** 4.631 *** 4.658 *** 5.303 *** 3.688 *** 4.470 *** NSOURCE 1.694 *** 1.698 *** 1.772 *** 1.769 *** 1.667 *** NTRACE 0.79 0.768 0.864 0.881 1.115 NPATCH 0.209 * 0.210 * 0.284 + 0.231 * 0.291 NSCOM 1.218 1.194 1.246 1.208 1.244 PATCHS TRACES 12.607 1.016 * 12.626 1.012 Baseline Model: * 11.200 * 1.004 * 12.736 0.989 18.207 0.975 ** Code Churn NLINK 1.764 *** 1.613 ** 1.600 ** ** 1.666 1.596 + NPART 2.481 2.888 4.480 4.542 NDEVS 0.475 0.582 0.385 0.274 NUSERS REPLY 0.749 (Ball, Naggapan) 0.803 1.019 0.692 0.986 0.792 0.982 REPLYE 0.117 *** 0.082 *** 0.044 *** DLEN 0.936 0.898 * 0.876 + DLENE 2.499 1.251 2.044 INT 0.829 ** 0.821 ** 0.963 INTE 1.109 1.013 1.306 WA 1.432 *** 1.224 + WAE 2.718 * 2.169 CON1-3 Fig. 2 *** χ2 559.01 *** 698.5 *** 700.15 731.5 *** 752.3 *** 1055.19 *** Dev. Expl. 10.71% 13.38 % 13.41 % 14.02 % 14.41 % 26.07 % ∆χ2 139.48 1.652 31.357 20.28 302.87 *** p<0.001, ** p<0.01, * p<0.05, + p <0.1 29
  • 36. APPROACH Hierarchical Analysis (2) Build linear models step-by-step log(Yi ) MB M1 M2 M3 M4 M5 CHURN 4.996 *** 4.631 *** 4.658 *** 5.303 *** 3.688 *** 4.470 *** NSOURCE 1.694 *** 1.698 *** 1.772 *** 1.769 *** 1.667 *** NTRACE 0.79 0.768 0.864 0.881 1.115 NPATCH 0.209 * 0.210 * 0.284 + 0.231 * 0.291 NSCOM PATCHS 1.218 12.607 * 1.194 12.626 Adding first dimension * * 1.246 11.200 * ** 1.208 12.736 1.244 18.207 ** Discussion Content TRACES 1.016 1.012 1.004 0.989 0.975 NLINK 1.764 *** 1.613 ** 1.600 ** + 1.666 1.596 NPART 2.481 2.888 4.480 4.542 NDEVS 0.475 0.582 0.385 0.274 NUSERS 0.749 0.803 0.692 0.792 REPLY REPLYE Increase in *** explanatory power 1.019 0.117 *** 0.986 0.082 *** 0.982 0.044 DLEN 0.936 * +0.898 0.876 DLENE INT statistically significant 2.499 0.829 ** ** 1.251 0.821 2.044 0.963 INTE 1.109 1.013 1.306 WA 1.432 *** 1.224 + WAE 2.718 * 2.169 CON1-3 Fig. 2 *** χ2 559.01 *** 698.5 *** 700.15 731.5 *** 752.3 *** 1055.19 *** Dev. Expl. 10.71% 13.38 % 13.41 % 14.02 % 14.41 % 26.07 % ∆χ2 139.48 1.652 31.357 20.28 302.87 *** p<0.001, ** p<0.01, * p<0.05, + p <0.1 30
  • 37. APPROACH Hierarchical Analysis (2) Build linear models step-by-step log(Yi ) MB M1 M2 M3 M4 M5 CHURN 4.996 *** 4.631 *** 4.658 *** 5.303 *** 3.688 *** 4.470 *** NSOURCE NTRACE 1.694 0.79 *** 1.698 0.768 *** 1.772 0.864 Adding second *** 1.769 0.881 *** 1.667 1.115 *** NPATCH 0.209 * 0.210 * 0.284 + 0.231 * 0.291 NSCOM PATCHS 1.218 12.607 * 1.194 12.626 * 1.246 11.200 * dimension ** 1.208 12.736 * 1.244 18.207 TRACES NLINK 1.016 1.764 *** 1.012 1.613 ** 1.004 1.600 Discussion Content ** 0.989 1.666 ** + 0.975 1.596 NPART 2.481 2.888 4.480 4.542 NDEVS 0.475 0.582 0.385 0.274 NUSERS 0.749 0.803 0.692 0.792 REPLY REPLYE 1.019 0.117 Increase in *** *** 0.986 0.082 *** 0.982 0.044 DLEN 0.936 0.898 * + 0.876 DLENE INT 2.499 0.829 explanatory power: ** 1.251 0.821 ** 2.044 0.963 INTE WA 1.109 not statistically+ 1.013 1.432 *** 1.306 1.224 WAE 2.718 * 2.169 CON1-3 χ2 559.01 *** 698.5 *** 700.15 731.5 *** significant! *** 752.3 *** 1055.19 *** Fig. 2 Dev. Expl. 10.71% 13.38 % 13.41 % 14.02 % 14.41 % 26.07 % ∆χ2 139.48 1.652 31.357 20.28 302.87 *** p<0.001, ** p<0.01, * p<0.05, + p <0.1 31
  • 38. APPROACH Hierarchical Analysis (2) Build linear models step-by-step log(Yi ) MB M1 M2 M3 M4 M5 CHURN 4.996 *** 4.631 *** 4.658 *** 5.303 *** 3.688 *** 4.470 *** NSOURCE NTRACE 1.694 0.79 *** 1.698 0.768 *** 1.772 0.864 *** 1.769 0.881 Adding *** 1.667 1.115 *** 0.209 0.210 0.284 0.231 third ** NPATCH * * + * 0.291 NSCOM 1.218 1.194 1.246 1.208 1.244 PATCHS 12.607 * 12.626 * 11.200 * 12.736 * 18.207 TRACES NLINK 1.016 1.764 *** 1.012 1.613 ** 1.004 1.600 ** dimension 0.989 1.666 ** + 0.975 1.596 NPART 2.481 2.888 4.480 4.542 NDEVS 0.475 0.582 0.385 0.274 NUSERS 0.749 0.803 0.692 0.792 REPLY REPLYE 1.019 0.117 *** 0.986 0.082Increase in *** 0.982 0.044 *** explanatory DLEN 0.936 0.898 * + 0.876 DLENE 2.499 1.251 2.044 INT 0.829 ** 0.821 ** 0.963 INTE WA 1.109 1.013 1.432 power + *** 1.306 1.224 WAE CON1-3 2.718 significant! * 2.169 Fig. 2 *** χ2 559.01 *** 698.5 *** 700.15 731.5 *** 752.3 *** 1055.19 *** Dev. Expl. 10.71% 13.38 % 13.41 % 14.02 % 14.41 % 26.07 % ∆χ2 139.48 1.652 31.357 20.28 302.87 *** p<0.001, ** p<0.01, * p<0.05, + p <0.1 32
  • 39. APPROACH Hierarchical Analysis (2) Build linear models step-by-step log(Yi ) MB M1 M2 M3 M4 M5 CHURN 4.996 *** 4.631 *** 4.658 *** 5.303 *** 3.688 *** 4.470 *** NSOURCE 1.694 *** 1.698 *** 1.772 *** 1.769 *** 1.667 *** NTRACE 0.79 0.768 0.864 0.881 1.115 NPATCH 0.209 * 0.210 * 0.284 + 0.231 * 0.291 NSCOM 1.218 1.194 1.246 1.208 1.244 PATCHS 12.607 * 12.626 * 11.200 * 12.736 * 18.207 ** TRACES 1.016 1.012 1.004 0.989 0.975 NLINK 1.764 *** 1.613 ** 1.600 ** 1.666 ** 1.596 + NPART 2.481 2.888 4.480 4.542 NDEVS 0.475 0.582 0.385 0.274 NUSERS 0.749 0.803 0.692 0.792 REPLY 1.019 0.986 0.982 REPLYE 0.117 *** 0.082 *** 0.044 *** DLEN 0.936 0.898 * 0.876 + DLENE 2.499 1.251 2.044 INT 0.829 ** 0.821 ** 0.963 INTE 1.109 1.013 1.306 WA 1.432 *** 1.224 + WAE 2.718 * 2.169 CON1-3 Fig. 2 *** χ2 559.01 *** 698.5 *** 700.15 731.5 *** 752.3 *** 1055.19 *** Dev. Expl. 10.71% 13.38 % 13.41 % 14.02 % 14.41 % 26.07 % ∆χ2 139.48 1.652 31.357 20.28 302.87 *** p<0.001, ** p<0.01, * p<0.05, + p <0.1 33
  • 40. Model based on 14.41% Variation Social Structures Explained Model based on 17.04% Variation Code Metrics Explained (Zimmermann 2007) 34
  • 41. Model based on 14.41% Variation Social Structures Explained What happens when we combine both? Model based on 17.04% Variation Code Metrics Explained (Zimmermann 2007) 34
  • 42. Model based on 14.41% Variation Social Structures Explained 30.77% Variation Combined Model Explained Traditional Model 17.04% Variation (Zimmermann, Explained PROMISE 2007) 35
  • 43. Size of Patches Workflow Code Churn # Code Examples Strongest # Links Variables (Odds Ratios) Length of the Discussion Interestigness of Report # Patches Reply Time 36
  • 44. Size of Patches Workflow Code Churn # Code,Examples Strongest io n t # Links la tion ! Variablesr o re sa C Ca u (Odds Ratios) o t Length of the Discussion n Interestigness of Report # Patches Reply Time 37
  • 45. 38
  • 46. 38
  • 47. 38
  • 48. 38
  • 49. 38