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());
03

GUI

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