selecting a research topic: reflection and lessons …•i like finding bugs instead of writing...

38
Selecting a research topic: Reflection and Lessons from My Research Journey Shin Hwei Tan Southern University of Science and Technology

Upload: others

Post on 28-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Selecting a research topic: Reflection and Lessons from My Research Journey

Shin Hwei Tan

Southern University of Science and Technology

Page 2: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Shin Hwei TanWebsite: https://www.shinhwei.com/

Email: [email protected]

Research Interest:

• Automated Program Repair

• Software Testing

• Mobile Analysis

• Comment Analysis

• Search-Based Software Engineering

University of Illinois at Urbana-

Champaign (B.S. & M.S)

National University of

Singapore (PhD)Southern University of Science and

Technology (from June 2018)

Page 3: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

My Research Journey3

2012

2015

20182010

2011

Unit Testing

Research Topic:

Theories/Parameterized

tests for Junit.

Comment-Code

Inconsistency

Research Topic:

Testing Comment-

Code Inconsistencies

Repair broken

assertions

Research Topic:

Automated repair for

broken assertions

Automated

Program Repair

Research Topic:

Repairing software

regressions

Repair Android Apps

Research Topic:

Repairing crashes in

Android apps

D

Page 4: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

What is your research passion?

• Software Testing

• Program Analysis

• Android

• Data Mining

• Deep Learning

• Fuzzing

• Repair

4

ICSE 2019: (Basic) Analysis of Accepted Papers

Page 5: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

My passion

Cool Hackers Software Testers

5

Page 6: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Why software testing?6

It all started with some bug reports…

First step into the open-source community…

Page 7: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Passion is the first step, what’s next?How to select a topic?

Let’s have a personality test!

7

Page 8: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Let’s have a personality test!8

D• Do you like reading

comments and discussion in forums?

• Do you like reading paper?

• Do you like to code?• Do you like trying

different techniques and tools?

• Do you like reading comments

and discussion in forums?

T • Do you like trying different

techniques and tools?

• Do you like reading

research papers? R

• Do you like writing code for

big project? P

Page 9: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

• D for reading discussion

• R for reading papers

• P for coding projects

• T for trying tools

9

D• Do you like

reading comments and discussion in forums?

• Do you like reading paper?

• Do you like to code?

• Do you like trying different techniques and tools?

• Do you like reading

comments and discussion

in forums?

T • Do you like trying

different techniques

and tools?

• Do you like reading

research papers? R

• Do you like writing

code for big project? P

• D+R?

• P+T?

• R+P?

Page 10: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

10

• Read issues reported by developers in open-source project

• Read papers and answer the questions:

• What is the potential future improvement for this work?

• Identify frequently encountered problems during software development

• Identify the weakness of existing tools

Page 11: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Listening to the voices of developersHow to find a concrete problem?

GitHub IssuesGoogle Summer of Code

Project Description

11

Page 12: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:Theories/Parameterized tests for JUnitStarting from GitHub Issues

12

Page 13: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project: Theories/Parameterized tests for JUnit

Communicating with developers Creating Pull Request

Page 14: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

14

• Read issues reported by developers in open-source project

• Read papers and answer the questions:

• What is the potential future improvement for this work?

• Identify frequently encountered problems during software development

• Identify the weakness of existing tools

Page 15: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Reading paper is fun but it could be dangerous!

• You could be reading passively without thinking!

• You could end up being depressed thinking that all great researches have been conducted by someonelse!

15

Page 16: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Reading Papers

When reading papers, answer the following questions for each:

1) Is there any technical contribution (e.g., new algorithm) of the paper? If yes, what is the technical contribution?

2) What is the main novelty of the paper? Does it study a new domain or does it improve on existing solutions?

3) What are the challenges/problems that the paper tries to solve?

4) What are the good things ("Pros") about the paper? Gives 3 pros of the paper.

5) What are the bad things/ things to improve ("Cons") of the paper? Gives 3 cons of the paper.

6) Could you think about any possible future works that are not listed? Gives 3 future possible improvement for the paper.

16

Page 17: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:@tCommentStarting from Paper

17

Page 18: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:@tCommentWhat the problem and solution?

Problem: Inconsistent Code and Comment

Solution: Static analysis to detect inconsistencies

18

Page 19: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:@tCommentWhat is the possible future work?

My Passion

• Software Testing

• I like finding bugs instead of writing programs!

Current Paper that I read

• Comment –Code Inconsistencies

19

Page 20: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:@tCommentProposing a new idea

20

Page 21: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

21

• Read issues reported by developers in open-source project

• Read papers and answer the questions:

• What is the potential future improvement for this work?

• Identify frequently encountered problems during software development

• Identify the weakness of existing tools

Page 22: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

What are the problems you faced as a developer during software development?

22

ICSE 2019: (Basic) Analysis of Accepted Papers

?

Page 23: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

What are the problems that I faced as a developer during software development?

• How to find bugs?

• What happen if code evolves but comments are not updated?

• How to fix broken tests?

• What happen if code evolves but tests are not updated?

• How to fix bugs?

• What happen if we find a bug?

23

ICSE 2019: (Basic) Analysis of Accepted Papers

Page 24: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Identify frequently encountered problems

24

Test 1

Test 2while (cond) {…}

……

Test 3

Bug Fix

Page 25: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

+…

+…

Test 1

Test 2

Test 3

-while (cond) - {…}while (cond) {…}

How do developer repair regression?25

Repair Goal: Ensure all tests in the test suite passing after

the repair.

Program Changes Test Suite

Page 26: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:relifixRepairing Software Regression

26

Page 27: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

27

• Read issues reported by developers in open-source project

• Read papers and answer the questions:

• What is the potential future improvement for this work?

• Identify frequently encountered problems during software development

• Identify the weakness of existing tools

Page 28: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Identify Weakness of Existing Tools

28

GenProg

SPR

Page 29: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:Anti-patternsCollaborating with your advisor

29

There are pattern-based approaches like PAR while we are

looking at the opposite. Let’s call it anti-patterns!

Page 30: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Project:Anti-patterns in Search-Based Program Repair

30

Page 31: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

What is your secret of finding research idea?

31

• Read issues reported by developers in open-source project

• Read papers and answer the questions:

• What is the potential future improvement for this work?

• Identify frequently encountered problems during software development

• Identify the weakness of existing tools

Page 32: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

What is your research vision? What will the future of software development?

The power of imagination

32

Page 33: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

Let’s think for a minuteImagine that you are a programmer living in the year 2029How would programming in the future look likes?

33

Page 34: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

34

Programming in Toilet?

Programming in Bed?

Page 35: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

PROGRAMMING IN TOILET?35

Page 36: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

PROGRAMMING IN SLEEP?36

During daytime business hours it provides an overview and control for many

specialists to simultaneously schedule and observe the rehabilitation process

for multiple clients. However in the evening, after the last user logs out, it starts a

self-analysis based on the day’s recorded interactions. It generates test data from the recorded interactions for Genetic Improvement to fix any recorded

bugs that have raised exceptions.

Page 37: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

CommentCode

My Research Vision: Self-healing Software

37

Test 1 div(1,2)

Test 2 div(1,1)

Test 3 div(2,1)

/* This method multiply two numbers*/int div(int x, int y){

return x/y;}

divides

Self-healing

Mechanism

double

double(x)/double(y)

LearningTestCode

Learning

Page 38: Selecting a research topic: Reflection and Lessons …•I like finding bugs instead of writing programs! Current Paper that I read •Comment –Code Inconsistencies 19 Project:@tComment

v

38

How about your Research journey?