InterState: a language and environment for expressing interface behavior

InterState is a new programming language and environment that addresses the challenges of writing and reusing user interface code. InterState represents interactive behaviors clearly and concisely using a combination of novel forms of state machines and constraints. It also introduces new language features that allow programmers to easily modularize and reuse behaviors. InterState uses a new visual notation that allows programmers to better understand and navigate their code. InterState also includes a live editor that immediately updates the running application in response to changes in the editor and vice versa to help programmers understand the state of their program. Finally, InterState can interface with code and widgets written in other languages, for example to create a user interface in InterState that communicates with a database. We evaluated the understandability of InterState's programming primitives in a comparative laboratory study. We found that participants were twice as fast at understanding and modifying GUI components when they were implemented with InterState than when they were implemented in a conventional textual event-callback style. We evaluated InterState's scalability with a series of benchmarks and example applications and found that it can scale to implement complex behaviors involving thousands of objects and constraints.

[1]  Rob Miller,et al.  The Amulet Environment: New Models for Effective User Interface Software Development , 1997, IEEE Trans. Software Eng..

[2]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[3]  Olivier Barais,et al.  Specifying and running rich graphical components with Loa , 2012, EICS '12.

[4]  Roger B. Dannenberg,et al.  Garnet: comprehensive support for graphical, highly interactive user interfaces , 1990, Computer.

[5]  HeerJeffrey,et al.  D3 Data-Driven Documents , 2011 .

[6]  Daniel D. Hils,et al.  Visual languages and computing survey: Data flow visual programming languages , 1992, J. Vis. Lang. Comput..

[7]  Doug A. Bowman,et al.  Tiered Developer-Centric Representations for 3D Interfaces: Concept-Oriented Design in Chasm , 2008, 2008 IEEE Virtual Reality Conference.

[8]  Fabien André,et al.  Usability requirements for interaction-oriented development tools , 2010 .

[9]  Brad A. Myers,et al.  Integrating pointer variables into one-way constraint models , 1994, TCHI.

[10]  Mark Green,et al.  A survey of three dialogue models , 1986, TOGS.

[11]  Randall B. Smith,et al.  Directness and liveness in the morphic user interface construction environment , 1995, UIST '95.

[12]  Philip J. Guo,et al.  Opportunistic Programming: Writing Code to Prototype, Ideate, and Discover end-us e r soft war e e ngine e ring , 2009 .

[13]  Brad A. Myers,et al.  Taxonomies of visual programming and program visualization , 1990, J. Vis. Lang. Comput..

[14]  Brad A. Myers,et al.  Six Learning Barriers in End-User Programming Systems , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[15]  Sebastian Burckhardt,et al.  It's alive! continuous feedback in UI programming , 2013, PLDI.

[16]  Roger B. Dannenberg,et al.  Garnet: comprehensive support for graphical, highly interactive user interfaces , 1995 .

[17]  Kang Zhang,et al.  Visual languages and applications , 2007 .

[18]  Renaud Blanch,et al.  Programming rich interactions using the hierarchical state machine toolkit , 2006, AVI '06.

[19]  Colin Potts,et al.  Design of Everyday Things , 1988 .

[20]  Eric Barboni,et al.  ICOs: A model-based user interface description technique dedicated to interactive systems addressing usability, reliability and scalability , 2009, TCHI.

[21]  Ralph D. Hill,et al.  Supporting concurrency, communication, and synchronization in human-computer interaction—the Sassafras UIMS , 1986, TOGS.

[22]  Brad A. Myers,et al.  ConstraintJS: programming interactive behaviors for the web by integrating constraints and states , 2012, UIST '12.

[23]  Philip J. Guo,et al.  Writing Code to Prototype, Ideate, and Discover , 2009, IEEE Software.

[24]  Dan R. Olsen,et al.  User Interface Management Systems: Models and Algorithms , 1991 .

[25]  Margaret M. Burnett,et al.  Forms/3: A first-order visual language to explore the boundaries of the spreadsheet paradigm , 2001, Journal of Functional Programming.

[26]  Shriram Krishnamurthi,et al.  Flapjax: a programming language for Ajax applications , 2009, OOPSLA '09.

[27]  Martin R. Frank Model-based user interface design by demonstration and by interview , 1996 .

[28]  Jeffrey Heer,et al.  SpanningAspectRatioBank Easing FunctionS ArrayIn ColorIn Date Interpolator MatrixInterpola NumObjecPointI Rectang ISchedu Parallel Pause Scheduler Sequen Transition Transitioner Transiti Tween Co DelimGraphMLCon IData JSONCon DataField DataSc Dat DataSource Data DataUtil DirtySprite LineS RectSprite , 2011 .

[29]  Jonathan Aldrich,et al.  CZ: multiple inheritance without diamonds , 2009, OOPSLA 2009.

[30]  Brad A. Myers,et al.  Using HCI techniques to design a more usable programming system , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[31]  Brad A. Myers Separating application code from toolkits: eliminating the spaghetti of call-backs , 1991, UIST '91.

[32]  Stéphane Chatty,et al.  Revisiting visual interface programming: creating GUI tools for designers and programmers , 2004, UIST '04.

[33]  Michael Travers,et al.  Recursive interfaces for reactive objects , 1994, CHI '94.

[34]  Mitchel Resnick,et al.  Real-time programming and the big ideas of computational literacy , 2003 .

[35]  Brad A. Myers,et al.  Past, Present and Future of User Interface Software Tools , 2000, TCHI.

[36]  Brad A. Myers,et al.  Designers’ natural descriptions of interactive behaviors , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[37]  Bjørn N. Freeman-Benson,et al.  Kaleidoscope: mixing objects, constraints, and imperative programming , 1990, OOPSLA/ECOOP '90.

[38]  Scott E. Hudson,et al.  Extensible input handling in the subArctic toolkit , 2005, CHI.

[39]  Caroline Appert,et al.  SwingStates: adding state machines to Java and the Swing toolkit , 2008, Softw. Pract. Exp..

[40]  Craig Chambers,et al.  Organizing programs without classes , 1991, LISP Symb. Comput..