FourD: “Do Developers Discuss Design?” Revisited
Abbas Shakiba Robert Green Rob
- ber
ert Dyer er Bowling Green State University
supported in part by the US National Science Foundation under CCF-15-18776 and CNS-15-12947
FourD: Do Developers Discuss Design? Revisited Abbas Shakiba - - PowerPoint PPT Presentation
FourD: Do Developers Discuss Design? Revisited Abbas Shakiba Robert Green Rob ober ert Dyer er Bowling Green State University supported in part by the US National Science Foundation under CCF-15-18776 and CNS-15-12947 Do developers
ert Dyer er Bowling Green State University
supported in part by the US National Science Foundation under CCF-15-18776 and CNS-15-12947
Getting etting Data ata (Boa)
Manual Manual Classification lassification (survey) (survey) Pre Pre- Processing Processing (W (Wek eka) a) Build uild Mod Models els (W (Wek eka) a) Test est Mod Models els (Wek eka) a) Analyze nalyze Results esults
COMMITS: output top(200)[string] of string weight float; ids := {"6176545", "6150849", "209281", "13151128", "1019785"}; isempty := function(s: string) : bool { s2 := trim(s); if (match(`^\s*$`, s2)) return true; if (match(`^no message$`, lowercase(s2))) return true; if (match(`^\*\*\* empty log message \*\*\*$`, lowercase(s2))) return true; return false; }; exists (i: int; input.id == ids[i]) visit(input, visitor { before rev: Revision -> if (!isempty(rev.log)) COMMITS[input.id] << rev.log weight rand(); });
Getting etting Data ata (B (Boa)
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey)
Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
“swapping the position of the input function <</>>” Classified: no
“reorganized a package structure to better reflect a layered approach” Classified: yes es
class: No Swapping 1 attributes: the 2 position 1
1 the 1 input 1 function 1 <</>> 1 class: Yes reorganized 1 attributes: package 1 structure 1 to 1 better 1 reflect 1 a 2 layered 1 approach 1
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey)
Pre Pre-Processing Processing (W (Wek eka) a)
Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
class: Yes reorganized 1 attributes: package 1 structure 1 to 1 better 1 reflect 1 a 2 layered 1 approach 1 class: No Swapping 1 attributes: the 2 position 1
1 the 1 input 1 function 1 <</>> 1
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey)
Pre Pre-Processing Processing (W (Wek eka) a)
Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
class: No Swapping 1 attributes: the 2 position 1
1 the 1 input 1 function 1 <</>> 1
class: Yes reorganized 1 attributes: package 1 structure 1 to 1 better 1 reflect 1 a 2 layered 1 approach 1
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey)
Pre Pre-Processing Processing (W (Wek eka) a)
Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
class: No Swap 1 attributes: input 1 pos 1 function 1 class: Yes
1 attributes: pack 1 struc 1 better 1 flect 1 layer 1 approach 1
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey)
Pre Pre-Processing Processing (W (Wek eka) a)
Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka)
Build ild Mod
els (Wek eka)
Tes est Mod
els (Wek eka) Analy lyze e Res esult lts
50 100 Dataset 1 Dataset 2
Different Data Distributions
Class: No Class: Yes
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka)
Test est Mod Models els (Wek eka) a)
Analy lyze e Res esult lts
Con
Pred edicted ed Yes es No No Ac Actual Yes es True e Pos
(T (TP) False e Neg egative (F (FN) N) No No False e Pos
(F (FP) True e Neg egative (T (TN) N)
𝐵𝑑𝑑𝑣𝑠𝑏𝑑𝑧'() = 𝑈𝑄 𝑈𝑄 + 𝐺𝑂 𝐵𝑑𝑑𝑣𝑠𝑏𝑑𝑧12 = 𝑈𝑂 𝑈𝑂 + 𝐺𝑄 𝐻4(56 = 𝐵𝑑𝑑𝑣𝑠𝑏𝑑𝑧'()×𝐵𝑑𝑑𝑣𝑠𝑏𝑑𝑧12
9𝑡𝑑𝑝𝑠𝑓 = 𝑄𝑠𝑓𝑑𝑗𝑡𝑗𝑝𝑜 ×𝑠𝑓𝑑𝑏𝑚𝑚
𝑄𝑠𝑓𝑑𝑗𝑡𝑗𝑝𝑜 + 𝑠𝑓𝑑𝑏𝑚𝑚 𝑄𝑠𝑓𝑑𝑗𝑡𝑗𝑝𝑜 = 𝑈𝑄 𝑈𝑄 + 𝐺𝑄 𝑆𝑓𝑑𝑏𝑚𝑚 = 𝑈𝑄 𝑈𝑄 + 𝐺𝑂
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka)
Test est Mod Models els (Wek eka) a)
Analy lyze e Res esult lts
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka)
Analyze nalyze Results esults
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka)
Analyze nalyze Results esults
Gi GitH tHub ub Sou
eFor
Get ettin ing Data (Boa
Manual l Cla lassif ific ication ion (survey ey) Pre Pre-Proc
essin ing (Wek eka) Build ild Mod
els (Wek eka) Tes est Mod
els (Wek eka)
Analyze nalyze Results esults
COMMITS: output top(200)[string] of string weight float; ids := {"6176545", "6150849", "209281", "13151128", "1019785"}; isempty := function(s: string) : bool { s2 := trim(s); if (match(`^\s*$`, s2)) return true; if (match(`^no message$`, lowercase(s2))) return true; if (match(`^\*\*\* empty log message \*\*\*$`, lowercase(s2))) return true; return false; }; exists (i: int; input.id == ids[i]) visit(input, visitor { before rev: Revision -> if (!isempty(rev.log)) COMMITS[input.id] << rev.log weight rand(); });
class: No Swap 1 attributes: input 1 pos 1 function 1 class: Yes
1 attributes: pack 1 struc 1 better 1 flect 1 layer 1 approach 1 Con
Ma Matri rix Pred edicted ed Yes es No No Ac Actual Yes es TP TP FN FN No No FP FP TN TN