An app is written in four languages.
Only one is code.
≈1 in 4
developers call themselves mobile developers
Nearly a quarter of 100,000+ respondents · Stack Overflow survey, 2018
01
Natural language
“Tap Save to keep your note.”
02
Code
saveBtn.setOnClickListener(
v -> save());
04
Event sequences
tap(540, 1620)
→ onClick
→ NoteActivity
Developers translate between them.
Requirements to code. Code to pixels. Pixels to event traces. All day.
A vision for mobile program comprehension
Language
Dichotomies
The difficulty of reasoning across representations of one program.
Natural
language
Code
GUI
Event
sequences
DICHOTOMY
Language ↔ Code
- 01Feature location & traceability
- 02Bug & error reporting
DICHOTOMY
Code ↔ GUI
- 01Seeing how code changes affect the GUI
- 02Implementing GUIs from design mock-ups
- 03Augmented reality
DICHOTOMY
Language ↔ GUI
- 01Use-case-based testing
- 02Telling users how their data is used
DICHOTOMY
Events ↔ Language & Code
- 01Cross-platform & cross-device testing
- 02Tracking how use cases evolve
The roadmap
Close the gaps, not just the bugs.
LANGUAGE ↔ CODE
Reports beyond text
Video-based bug reports, sketch-based reviews and on-device data to remove ambiguity.
GUI ↔ CODE & LANGUAGE
Design once, test everywhere
Models that express an app across devices and platforms.
ALL FOUR
Documentation on demand
OD3 systems that link GUIs, code and event sequences.
Invited paper
Overcoming Language Dichotomies: Toward Effective Program Comprehension for Mobile App Development
Kevin Moran · Carlos Bernal-Cárdenas · Mario Linares-Vásquez · Denys Poshyvanyk
ICPC 2018 · IEEE/ACM International Conference on Program Comprehension