1,a) 2 3 1 1 API Pockets Pockets Investigating the Model of Automatically Detecting Exploratory Programming Behaviors Erina Makihara 1,a) Hiroshi Igaki 2 Norihiro Yoshida 3 Kenji Fujiwara 1 Hajimu Iida 1 1. API [1] [2] [3] [2] [4] 1 Nara Institute of Science and Technology 2 Osaka Institute of Technology 3 Nagoya University a) makihara.erina.lx0@is.naist.jp [5] Pockets Pockets 1
2 3 Pockets 4 4 5 6 2. 2.1 2.2 Pockest 2.3 2.1 Java [6] API (Backtracking) 2 [7] [8] [3] i == 0 2.2 Pockets 2.1 C3PV web [9] Pockets [10]Pockets 1 3 C3PV SaveCompileRun C3PV SaveCompileRun SaveCompileRun 1 Pockest UI 2
(1)ID(2) (3) C3PV Pockets 1 2 3 C3PV SaveCompileRun 2.3 Sandberg[3] Myers [2] 1 Pockets Pockets 3. Pockets 3.1 3.2 3.3 Pockets 3.1 2.1 if { 1: public class Sample{ 2: public int foobar(){ 3: while(){ 4: int x; 5: 6: int y; 7: 8: 9: int z; 10: 11: 12: 13: void fizzbuzz(){ 14: 15: 2 3
if 2 0 1 2 3 Sample1 foobar2, fizzbuzz13 while3, for7 if8 6 x 2 while 3.2 3 1 1 2 3 4 5 6 7 3 2 3 Rev.n-1 Rev.n 2 2 1 1 2 1 6 3 Rev.n Rev.n+1 8 6 2 3.3 Pockets Pockets SaveCompileRun (1) (2) 2 Pockets 1 Pockets Save CompileRun 4
- - - -- -- - Rev.n-1 Rev.n Rev.n+1 ソースコードの編集履歴 Rev.n-1 - Rev.n 1 較する ソースコード - Rev.n -- -- - Rev.n+1 2 検変出更す箇る所を <diff> - <diff> - 変更箇所を特定したソースコード 3 ト クン化する 4 変更箇所の粒度を調べる 5 変更箇所を含むブロックを全て検出する class,a,{,,for,{,if,(,),{,<diff>,,,, class,a,{,,for,{,if,(,),{,<diff>,,,, トークン化された変更箇所の情報を含むソースコード 6 ブ深ロ度 がク最情も報深をい検出する 検出される情報 変更箇所の位置 変更箇所を含むブロックの深度や位置 if if 探索されたブロック情報 7 1 6 の作業を次のリビジョン間で う 8 探索されたブロックが 致するか 較する 3 4. 4 Pockets TC1 TC2 TC3 TC4 4.1 (a) (a) step 3.2 TC1: 4 (a) (b) step1 4 for 8 step2 5 x step3 6 if 7 TC2: 5 (a) (b) step1 5 foo step2 7 while 9 step3 8 bar 3: while(){ 3: while(){ 4: 4: 5: 5: int x; 6: 6: 7: 7: 8: 8: 9: 9: (a) (b) 4 5
TC3: 6 (a) (b) step1 6 System.out.println(y); step2 4 y step3 8 System.out.println(y); TC4: 7 (a) (b) step1 5 fizz step2 6 buzz step3 8 fizzbuzz 3: 3: 4: 4: 5: 5: int foo; 6: 6: 7: 7: while(){ 8: 8: double bar; 9: 9: 10: 10: (a) (b) 5 3: 3: 4: 4: int y 5: 5: 6: 6: System.out.print(y); 7: 7: 8: 8: System.out.print(y); 9: 9: (a) (b) 6 3: 3: 4: 4: 5: 5: int fizz; 6: 6: int buzz; 7: 7: 8: 8: double fizzbuzz; 9: 9: (a) (b) 7 1 TC step step1 2 while TC1 step2 3 for step3 3 for step1 3 if TC2 step2 2 for step3 3 while step1 3 if TC3 step2 2 for step3 2 for step1 3 if TC4 step2 3 if step3 2 if 4.2 1 4 1 step1 3 step1 step1 5. Pockets 5.1 5.2 5.1 6
TA TA Pockets TA TA 3 for if 6. Pockets Pockets 5.2 Pockets 1 6 5 if y if [1] Sheil, B.: Environments for exploratory programming, Datamation, Vol. 29, No. 7, pp. 131 144 (1983). [2] Carnegie Mellon University : Variations to Support Exploratory Programming, http://www.exploratoryprogramming.org/. [3] Sandberg, D. W.: Smalltalk and exploratory programming, ACM SIGPLAN Notices, Vol. 23, pp. 85 92 (1988). [4] IT 2014 (2014). [5] Vihavainen, A., Luukkainen, M. and Kurhila, J.: Using Students Programming Behavior to Predict Success in an Introductory Mathematics Course, Proc. of EDM, pp. 300 303 (2013). [6] 21 pp. 123 128 (2014). [7] Myers, B. A., Oney, S., Yoon, Y. and Brandt, J.: Creativity Support in Authoring and Backtracking, Proceedings of Workshop on Evaluation Methods for Creativity Support Environments at CHI, pp. 40 43 (2013). [8] Yoon, Y. S. and Myers, B. A.: Supporting Selective Undo in a Code Editor, Proceedings of the 37th International Conference on Software Engineering, pp. 223 233 (2015). [9] 7
C3PV Vol. 54, No. 1, pp. 330 339 (2013). [10] Pockets Vol. 57, No. 1, pp. 236 247 (2016). 8