Kevin Moran,
Cody Watson,
John Hoskins,
George Purnell, &
Denys Poshyvanyk
Detecting and Summarizing GUI
Changes in Evolving Mobile Apps
33rd International Conference
on Automated Software Engineering (ASE’18)
Thursday, September 6th, 2018
!3
!3
COMPREHENDING MOBILE GUIS
COMPREHENDING MOBILE GUIS
COMPREHENDING MOBILE GUIS
<PreferenceScreen	
				xmlns:android="http://schemas.android.com/apk/res/android"	
				xmlns:app="http://schemas.android.com/apk/res-auto"	
				android:key="main"	
				android:title="@string/account_settings_title_fmt">	
				<PreferenceScreen	
								android:key="account_settings"	
								android:title="@string/account_settings_general_title">	
								<com.takisoft.fix.support.v7.preference.AutoSummaryEditTextPreference	
												android:dialogTitle="@string/account_settings_description_label"	
												android:key="account_description"	
												android:title="@string/account_settings_description_label"	/>	
								<CheckBoxPreference	
												android:key="account_default"	
												android:summary="@string/account_settings_default_summary"	
												android:title="@string/account_settings_default_label"	/>	
								<com.fsck.k9.ui.settings.account.HoloColorPickerPreference	
												android:key="chip_color"	
												android:summary="@string/account_settings_color_summary"	
												android:title="@string/account_settings_color_label"	/>	
				</PreferenceScreen>
COMPREHENDING MOBILE GUIS
<PreferenceScreen	
				xmlns:android="http://schemas.android.com/apk/res/android"	
				xmlns:app="http://schemas.android.com/apk/res-auto"	
				android:key="main"	
				android:title="@string/account_settings_title_fmt">	
				<PreferenceScreen	
								android:key="account_settings"	
								android:title="@string/account_settings_general_title">	
								<com.takisoft.fix.support.v7.preference.AutoSummaryEditTextPreference	
												android:dialogTitle="@string/account_settings_description_label"	
												android:key="account_description"	
												android:title="@string/account_settings_description_label"	/>	
								<CheckBoxPreference	
												android:key="account_default"	
												android:summary="@string/account_settings_default_summary"	
												android:title="@string/account_settings_default_label"	/>	
								<com.fsck.k9.ui.settings.account.HoloColorPickerPreference	
												android:key="chip_color"	
												android:summary="@string/account_settings_color_summary"	
												android:title="@string/account_settings_color_label"	/>	
				</PreferenceScreen>
COMPREHENDING MOBILE GUIS
COMPREHENDING MOBILE GUIS
class	GeneralSettingsActivity	:	K9Activity(),	OnPreferenceStartScreenCallback	{	
				override	fun	onCreate(savedInstanceState:	Bundle?)	{	
								super.onCreate(savedInstanceState)	
								setContentView(R.layout.general_settings)	
								initializeActionBar()	
								if	(savedInstanceState	==	null)	{	
												fragmentTransaction	{	
																add(R.id.generalSettingsContainer,	GeneralSettingsFragment.create())	
												}	
								}	
			}	
				private	fun	initializeActionBar()	{	
								val	actionBar	=	supportActionBar	?:	throw		
RuntimeException("getSupportActionBar()	==	null”)	
								actionBar.setDisplayHomeAsUpEnabled(true)	
				}	
COMPREHENDING MOBILE GUIS
COMPREHENDING MOBILE GUIS
COMPREHENDING MOBILE GUIS
Video Source: Google
Video Source: Google
COMPLICATIONS OF FRAGMENTATION
https://opensignal.com/reports/2015/08/android-fragmentation/
Developers need support in
identifying and reasoning about GUI
related changes in mobile apps
EXISTING WORK
EXISTING WORK
Detecting
Presentation
Failures in
Web Apps
EXISTING WORK
Detecting
Presentation
Failures in
Web Apps
Automated
Source Code
Summarization
EXISTING WORK
Detecting
Presentation
Failures in
Web Apps
GUI
Differencing
Automated
Source Code
Summarization
EXISTING WORK
Detecting
Presentation
Failures in
Web Apps
GUI
Differencing
Automated
Source Code
Summarization
Cross
Browser
Testing
EXISTING WORK
Detecting
Presentation
Failures in
Web Apps
Detecting Design
Violations in
Mobile Apps
GUI
Differencing
Automated
Source Code
Summarization
Cross
Browser
Testing
CURRENT LIMITATIONS
CURRENT LIMITATIONS
• No approach combines:
CURRENT LIMITATIONS
• No approach combines:
• Automated dynamic analysis
CURRENT LIMITATIONS
• No approach combines:
• Automated dynamic analysis
• CV-based GUI analysis
CURRENT LIMITATIONS
• No approach combines:
• Automated dynamic analysis
• CV-based GUI analysis
• Automated summarization
PRELIMINARY INDUSTRIAL EMPIRICAL STUDY1
71Screens with
DesignViolations
1Moran, K., Li, B., Bernal-Cárdenas, C., Jelf, D., and Poshyvanyk, D., “Automated Reporting of GUI Design Violations for Mobile Apps”, (ICSE’18)
PRELIMINARY INDUSTRIAL EMPIRICAL STUDY1
71Screens with
DesignViolations
Authors
1Moran, K., Li, B., Bernal-Cárdenas, C., Jelf, D., and Poshyvanyk, D., “Automated Reporting of GUI Design Violations for Mobile Apps”, (ICSE’18)
PRELIMINARY INDUSTRIAL EMPIRICAL STUDY1
71Screens with
DesignViolations
Authors Open Coding
1Moran, K., Li, B., Bernal-Cárdenas, C., Jelf, D., and Poshyvanyk, D., “Automated Reporting of GUI Design Violations for Mobile Apps”, (ICSE’18)
PRELIMINARY INDUSTRIAL EMPIRICAL STUDY1
71Screens with
DesignViolations
Authors Open Coding
1Moran, K., Li, B., Bernal-Cárdenas, C., Jelf, D., and Poshyvanyk, D., “Automated Reporting of GUI Design Violations for Mobile Apps”, (ICSE’18)
PRELIMINARY INDUSTRIAL EMPIRICAL STUDY1
71Screens with
DesignViolations
Authors Open Coding
GUI-Change
Taxonomy
25%
1Moran, K., Li, B., Bernal-Cárdenas, C., Jelf, D., and Poshyvanyk, D., “Automated Reporting of GUI Design Violations for Mobile Apps”, (ICSE’18)
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI-CHANGE TAXONOMY
Change Category Specific Change
Text Changes
Text Content Change
Font Change
Font Color Change
Layout Changes
VerticalTranslation
HorizontalTranslation
Horizontal Size
Vertical Size
Resource Changes
Image Color Change
Removed Component
Added Component
Image Change
ComponentType Change
GUI CHANGE ANALYSIS TOOL (GCAT)
Git/CI
Integration
Project History
Virtual or Physical Device Pool
N1
N2
N3
N4
N5T7
T3
T17
T35
T12
T25
T42
T59
T29
T21
N6
CrashScope
Automated
Execution
Engine
Screenshot & Metadata
Pairs - Commit i
Screenshot & Metadata
Pairs - Commit i+n
Screen Matching
& Filtering
Activity/
Window
Comparator
Bipartite
Image
Comparison
GUI-Hierarchy for
Commit i
GUI-Hierarchy for
Commit i+n
Leaf Node Component
Detection and Matching
GUI Change Resolution
Perceptual Image
Differencing (PID)
GUI-Change Report
Layout Change
Detection
Text Change
Detection
Resource Change
Detection
NL Summary Generator
Checks:
<x>,<y>
Checks:
<width>,<height>
Normalized
String
Comparison
Image
Comparison
Analysis
Commit i
Commit i+1
Commit i+2
Commit i+n
GUI CHANGE ANALYSIS TOOL (GCAT)
1) CI/CD Integration
Git/CI
Integration
Project History
Virtual or Physical Device Pool
N1
N2
N3
N4
N5T7
T3
T17
T35
T12
T25
T42
T59
T29
T21
N6
CrashScope
Automated
Execution
Engine
Screenshot & Metadata
Pairs - Commit i
Screenshot & Metadata
Pairs - Commit i+n
Screen Matching
& Filtering
Activity/
Window
Comparator
Bipartite
Image
Comparison
GUI-Hierarchy for
Commit i
GUI-Hierarchy for
Commit i+n
Leaf Node Component
Detection and Matching
GUI Change Resolution
Perceptual Image
Differencing (PID)
GUI-Change Report
Layout Change
Detection
Text Change
Detection
Resource Change
Detection
NL Summary Generator
Checks:
<x>,<y>
Checks:
<width>,<height>
Normalized
String
Comparison
Image
Comparison
Analysis
Commit i
Commit i+1
Commit i+2
Commit i+n
GUI CHANGE ANALYSIS TOOL (GCAT)
1) CI/CD Integration
2) Automated GUI-based
Exploration
Git/CI
Integration
Project History
Virtual or Physical Device Pool
N1
N2
N3
N4
N5T7
T3
T17
T35
T12
T25
T42
T59
T29
T21
N6
CrashScope
Automated
Execution
Engine
Screenshot & Metadata
Pairs - Commit i
Screenshot & Metadata
Pairs - Commit i+n
Screen Matching
& Filtering
Activity/
Window
Comparator
Bipartite
Image
Comparison
GUI-Hierarchy for
Commit i
GUI-Hierarchy for
Commit i+n
Leaf Node Component
Detection and Matching
GUI Change Resolution
Perceptual Image
Differencing (PID)
GUI-Change Report
Layout Change
Detection
Text Change
Detection
Resource Change
Detection
NL Summary Generator
Checks:
<x>,<y>
Checks:
<width>,<height>
Normalized
String
Comparison
Image
Comparison
Analysis
Commit i
Commit i+1
Commit i+2
Commit i+n
GUI CHANGE ANALYSIS TOOL (GCAT)
1) CI/CD Integration
2) Automated GUI-based
Exploration
3) GUI Interpretation &
Change Detection
Git/CI
Integration
Project History
Virtual or Physical Device Pool
N1
N2
N3
N4
N5T7
T3
T17
T35
T12
T25
T42
T59
T29
T21
N6
CrashScope
Automated
Execution
Engine
Screenshot & Metadata
Pairs - Commit i
Screenshot & Metadata
Pairs - Commit i+n
Screen Matching
& Filtering
Activity/
Window
Comparator
Bipartite
Image
Comparison
GUI-Hierarchy for
Commit i
GUI-Hierarchy for
Commit i+n
Leaf Node Component
Detection and Matching
GUI Change Resolution
Perceptual Image
Differencing (PID)
GUI-Change Report
Layout Change
Detection
Text Change
Detection
Resource Change
Detection
NL Summary Generator
Checks:
<x>,<y>
Checks:
<width>,<height>
Normalized
String
Comparison
Image
Comparison
Analysis
Commit i
Commit i+1
Commit i+2
Commit i+n
STAGE 1: CI/CD INTEGRATION
Git/CI
Integration
Project History
Virtual or Physical Device Po
N1
N2
N3
N4
T7
T3
T17
T35
T12
T25
T42
T
T29
T21
N6
CrashScope
Automated
Execution
Engine
Commit i
Commit i+1
Commit i+2
Commit i+n
STAGE 1: CI/CD INTEGRATION
Git/CI
Integration
Project History
Virtual or Physical Device Po
N1
N2
N3
N4
T7
T3
T17
T35
T12
T25
T42
T
T29
T21
N6
CrashScope
Automated
Execution
Engine
Commit i
Commit i+1
Commit i+2
Commit i+n
STAGE 1: CI/CD INTEGRATION
Git/CI
Integration
Project History
Virtual or Physical Device Po
N1
N2
N3
N4
T7
T3
T17
T35
T12
T25
T42
T
T29
T21
N6
CrashScope
Automated
Execution
Engine
Commit i
Commit i+1
Commit i+2
Commit i+n
STAGE 2:AUTOMATED DYNAMIC ANALYSIS
STAGE 2:AUTOMATED DYNAMIC ANALYSIS
CrashScope1
Execution
Engine
1Moran, K., Linares-Vásquez, M., Bernal-Cárdenas, C., Vendome, C., and
Poshyvanyk, D., “Automatically Discovering, Reporting and Reproducing
Android Application Crashes”, ICST’16
STAGE 2:AUTOMATED DYNAMIC ANALYSIS
CrashScope1
Execution
Engine
Execution Engine
1Moran, K., Linares-Vásquez, M., Bernal-Cárdenas, C., Vendome, C., and
Poshyvanyk, D., “Automatically Discovering, Reporting and Reproducing
Android Application Crashes”, ICST’16
STAGE 2:AUTOMATED DYNAMIC ANALYSIS
CrashScope1
Execution
Engine
Execution Engine
1Moran, K., Linares-Vásquez, M., Bernal-Cárdenas, C., Vendome, C., and
Poshyvanyk, D., “Automatically Discovering, Reporting and Reproducing
Android Application Crashes”, ICST’16
STAGE 2:AUTOMATED DYNAMIC ANALYSIS
CrashScope1
Execution
Engine
Execution Engine
1Moran, K., Linares-Vásquez, M., Bernal-Cárdenas, C., Vendome, C., and
Poshyvanyk, D., “Automatically Discovering, Reporting and Reproducing
Android Application Crashes”, ICST’16
STAGE 2: SCREEN MATCHING AND FILTERING
Older Commit Newer Commit
STAGE 2: SCREEN MATCHING AND FILTERING
GUI Color
Histogram Analysis
Spatial GUI
Component
Analysis
Older Commit Newer Commit
Discard Non-Unique
Activity-Window Pairs
STAGE 2: SCREEN MATCHING AND FILTERING
GUI Color
Histogram Analysis
Spatial GUI
Component
Analysis
Older Commit Newer Commit
Discard Non-Unique
Activity-Window Pairs
STAGE 2: SCREEN MATCHING AND FILTERING
GUI Color
Histogram Analysis
Spatial GUI
Component
Analysis
Older Commit Newer Commit Matched Screen Pairs
≈
≈
≈
Discard Non-Unique
Activity-Window Pairs
STAGE3: GUI COMPREHENSION
Old Commit New Commit
STAGE3: GUI COMPREHENSION
Old Commit New CommitSpatial
Component
Matching
= (|xm xr| + |ym yr| + |wm wr| + |hm hr|)<latexit sha1_base64="Ht7153Xmi/4IY79Asy9xCp7Yq18=">AAACKHicdVDLSgMxFM3UV62vqks3wSIo4pCpr3YhFN24VLBaaMuQSdNOMJkZkox2aPs7bvwVNwoqbv0S03EEFb0QOI97ubnHizhTGqE3KzcxOTU9k58tzM0vLC4Vl1cuVRhLQusk5KFseFhRzgJa10xz2ogkxcLj9Mq7Phn7VzdUKhYGFzqJaFvgXsC6jGBtJLdYa/WwEBgewc1h3xVwB/ZdOYTbcJikLMnYbcpuM+anzDdsyy2WkF2uOPsHDkT2LkKHCBlQrh44lTJ0bJRWCWR15hafWp2QxIIGmnCsVNNBkW4PsNSMcDoqtGJFI0yucY82DQywoKo9SC8dwQ2jdGA3lOYFGqbq94kBFkolwjOdAmtf/fbG4l9eM9bdSnvAgijWNCCfi7oxhzqE49hgh0lKNE8MwEQy81dIfCwx0Sbcggnh61L4P6iX7aqNzvdKteMsjTxYA+tgEzjgENTAKTgDdUDAHXgAz+DFurcerVfr7bM1Z2Uzq+BHWe8fdYKjUQ==</latexit><latexit sha1_base64="Ht7153Xmi/4IY79Asy9xCp7Yq18=">AAACKHicdVDLSgMxFM3UV62vqks3wSIo4pCpr3YhFN24VLBaaMuQSdNOMJkZkox2aPs7bvwVNwoqbv0S03EEFb0QOI97ubnHizhTGqE3KzcxOTU9k58tzM0vLC4Vl1cuVRhLQusk5KFseFhRzgJa10xz2ogkxcLj9Mq7Phn7VzdUKhYGFzqJaFvgXsC6jGBtJLdYa/WwEBgewc1h3xVwB/ZdOYTbcJikLMnYbcpuM+anzDdsyy2WkF2uOPsHDkT2LkKHCBlQrh44lTJ0bJRWCWR15hafWp2QxIIGmnCsVNNBkW4PsNSMcDoqtGJFI0yucY82DQywoKo9SC8dwQ2jdGA3lOYFGqbq94kBFkolwjOdAmtf/fbG4l9eM9bdSnvAgijWNCCfi7oxhzqE49hgh0lKNE8MwEQy81dIfCwx0Sbcggnh61L4P6iX7aqNzvdKteMsjTxYA+tgEzjgENTAKTgDdUDAHXgAz+DFurcerVfr7bM1Z2Uzq+BHWe8fdYKjUQ==</latexit><latexit sha1_base64="Ht7153Xmi/4IY79Asy9xCp7Yq18=">AAACKHicdVDLSgMxFM3UV62vqks3wSIo4pCpr3YhFN24VLBaaMuQSdNOMJkZkox2aPs7bvwVNwoqbv0S03EEFb0QOI97ubnHizhTGqE3KzcxOTU9k58tzM0vLC4Vl1cuVRhLQusk5KFseFhRzgJa10xz2ogkxcLj9Mq7Phn7VzdUKhYGFzqJaFvgXsC6jGBtJLdYa/WwEBgewc1h3xVwB/ZdOYTbcJikLMnYbcpuM+anzDdsyy2WkF2uOPsHDkT2LkKHCBlQrh44lTJ0bJRWCWR15hafWp2QxIIGmnCsVNNBkW4PsNSMcDoqtGJFI0yucY82DQywoKo9SC8dwQ2jdGA3lOYFGqbq94kBFkolwjOdAmtf/fbG4l9eM9bdSnvAgijWNCCfi7oxhzqE49hgh0lKNE8MwEQy81dIfCwx0Sbcggnh61L4P6iX7aqNzvdKteMsjTxYA+tgEzjgENTAKTgDdUDAHXgAz+DFurcerVfr7bM1Z2Uzq+BHWe8fdYKjUQ==</latexit>
≊
≊
≊
≊
STAGE3: GUI COMPREHENSION
Old Commit New CommitSpatial
Component
Matching
Perceptual
Image
Differencing
(PID)
STAGE 3: GUI-CHANGE DETECTION
Perceptual
Image
Differencing
(PID)
STAGE 3: GUI-CHANGE DETECTION
Perceptual
Image
Differencing
(PID)
STAGE 3: GUI-CHANGE DETECTION
≊
≊
≊
≊
≊
STAGE 3: GUI-CHANGE DETECTION
≊
≊
≊
≊
≊
STAGE 3: GUI-CHANGE DETECTION
≊
≊
≊
≊
≊
STAGE 3: GUI-CHANGE DETECTION
List of Potential
GUI Changes
STAGE 3: GUI CHANGE RESOLUTION
List of Potential
GUI Changes
STAGE 3: GUI CHANGE RESOLUTION
List of Potential
GUI Changes
Layout Change Resolver
• <x,y>
• <height,width>
Text Change Resolver
• <image>
• <text> CHA + CQ
Resource Change Resolver
• <image>
• Missing/
Extra CHA + CQ
STAGE 3: GUI CHANGE RESOLUTION
GCAT REPORT
GVT REPORT
GVT REPORT
EMPIRICAL STUDY
EMPIRICAL STUDY
• RQ1: Performance of Screen Matching and Filtering?
EMPIRICAL STUDY
• RQ1: Performance of Screen Matching and Filtering?
• RQ2: GCAT Detecting and Classifying GUI-Changes?
EMPIRICAL STUDY
• RQ1: Performance of Screen Matching and Filtering?
• RQ2: GCAT Detecting and Classifying GUI-Changes?
EMPIRICAL STUDY
• RQ1: Performance of Screen Matching and Filtering?
• RQ2: GCAT Detecting and Classifying GUI-Changes?
• RQ3: Developers Detecting and Classifying GUI-Changes?
EMPIRICAL STUDY
• RQ1: Performance of Screen Matching and Filtering?
• RQ2: GCAT Detecting and Classifying GUI-Changes?
• RQ3: Developers Detecting and Classifying GUI-Changes?
• RQ4: Developer Utility?
STUDY CONTEXT
FDroid
31 Open Source Apps (62 Apks)
Screen Collection Methodology
STUDY CONTEXT
FDroid
• Compilable Subsequent
Commits?
31 Open Source Apps (62 Apks)
Screen Collection Methodology
STUDY CONTEXT
FDroid
• Compilable Subsequent
Commits?
• Compiled Commits run
on target Nexus 7 device?
31 Open Source Apps (62 Apks)
Screen Collection Methodology
STUDY CONTEXT
FDroid
• Compilable Subsequent
Commits?
• Compiled Commits run
on target Nexus 7 device?
• GUI Changes exist on at
least 2 screens?
31 Open Source Apps (62 Apks)
Screen Collection Methodology
RQ1 & RQ2: EFFECTIVENESS AND PERFORMANCE
31 Open Source Apps (62 Apks)
RQ1 & RQ2: EFFECTIVENESS AND PERFORMANCE
31 Open Source Apps (62 Apks)
CrashScope
Execution
Engine
RQ1 & RQ2: EFFECTIVENESS AND PERFORMANCE
31 Open Source Apps (62 Apks)
CrashScope
Execution
Engine
3,854
Extracted
Screens
RQ1 & RQ2: EFFECTIVENESS AND PERFORMANCE
3,854
Extracted
Screens
RQ1 & RQ2: EFFECTIVENESS AND PERFORMANCE
3,854
Extracted
Screens
GUI Color
Histogram Analysis
Spatial Analysis
Screen Matching & Filtering
Discard Non-Unique
Activity-Window Pairs
RQ1 & RQ2: EFFECTIVENESS AND PERFORMANCE
3,854
Extracted
Screens
Matched Screens
• High # of Changes
• Medium # of Changes
• Low # of Changes
GUI Color
Histogram Analysis
Spatial Analysis
Screen Matching & Filtering
Discard Non-Unique
Activity-Window Pairs
RQ1 & RQ2: RESULTS
% Filtered Screens Matching Precision
(3,538 screens)
91.8%
(134/151 pairs)
84.4%
Screen Filtering & Matching
RQ1 & RQ2: RESULTS
% Filtered Screens Matching Precision
(3,538 screens)
91.8%
(134/151 pairs)
84.4%
Screen Filtering & Matching
R
CP
DP
0 25 50 75 100
GUI Change Detection and Classification
Detection Precision (DP)
Classification Precision (CP)
Recall (R)
*Random
Sample
of 18
Screen Pairs
RQ2 & RQ3: DEVELOPER PERFORMANCE & UTILITY
Layout Changes
TextChanges
Resource Changes
20 Academic and
Industrial Developers
25%
CP, DP, R
Usability and
User Preference
Questions
RQ2 & RQ3: EFFECTIVENESS AND PERFORMANCE
31 Open Source Apps (62 Apks)
Manual
Author
Screen
Analysis
50 Screen Paris
Split Among High,
Medium and Low
# of changes
RQ2 & RQ3: RESULTS
R
CP
DP
0 25 50 75 100
Detection Precision (DP)
Classification Precision (CP)
Recall (R)
Developer Performance
RQ2 & RQ3: RESULTS
R
CP
DP
0 25 50 75 100
Detection Precision (DP)
Classification Precision (CP)
Recall (R)
Developer Performance
Easy to understand?
Reports were Useful?
Would Ike to use often?
Hard to Read?
Too Complex?
0 1.25 2.5 3.75 5
AgreeDisagree
Developer Utility
RQ2 & RQ3: RESULTS
“The detailed changes [are best], since they show the status of the
elements before/after the changes. ”
RQ2 & RQ3: RESULTS
“The detailed changes [are best], since they show the status of the
elements before/after the changes. ”
“Seeing how components moved with the highlighted red
boxes [was most helpful to me].”
RQ2 & RQ3: RESULTS
“The detailed changes [are best], since they show the status of the
elements before/after the changes. ”
“Seeing how components moved with the highlighted red
boxes [was most helpful to me].”
“The spanning tree, I like the way it describes
changes in tree structure to make it clear and
straightforward. ”
RQ2 & RQ3: RESULTS
“The detailed changes [are best], since they show the status of the
elements before/after the changes. ”
“A way to group the changes or a potential importance
(e.g., a new component may be more important as
compared to a 2px change).”
“Seeing how components moved with the highlighted red
boxes [was most helpful to me].”
“The spanning tree, I like the way it describes
changes in tree structure to make it clear and
straightforward. ”
RQ2 & RQ3: RESULTS
AVENUES FOR FUTURE WORK
• Develop Static AnalysisTechniques for integrating GUI code
information into change reports
AVENUES FOR FUTURE WORK
• Develop Static AnalysisTechniques for integrating GUI code
information into change reports
• Integrate GUI change information into IDEs to aid in program
comprehension
AVENUES FOR FUTURE WORK
• Develop Static AnalysisTechniques for integrating GUI code
information into change reports
• Integrate GUI change information into IDEs to aid in program
comprehension
• DevelopTechniques for effectively handling dynamic screen content
AVENUES FOR FUTURE WORK
• Develop Static AnalysisTechniques for integrating GUI code
information into change reports
• Integrate GUI change information into IDEs to aid in program
comprehension
• DevelopTechniques for effectively handling dynamic screen content
• Prioritizing the Importance of changes for more effective
summarization
AVENUES FOR FUTURE WORK
https://www.android-dev-tools.com/gcat/
Any Questions?
Thank you!
Kevin Moran
Post-Doctoral Fellow
College of William & Mary
@kevpmo
kpmoran@cs.wm.edu
https://www.kpmoran.com
ADDITIONAL SLIDES
GUI CHANGE AMBIGUITIES
a) Previous application menu bar
b) New application menu bar
The was replaced by the , the was replaced by the
and the was added to the GUI.
The and were shifted to the left, and the was added to the GUI.

Detecting and Summarizing GUI Changes in Evolving Mobile Apps