Property Models
User interfaces for modern applications must support a rich set of interactive features. It is commonplace to find applications with dependencies between values, conditionally enabled controls, and multiple controls or views attached to the same data. High quality interfaces go further, supporting features such as (script) record-ability and playback against different documents. Such functionality is costly to implement. Worse, it is typically not reusable, but is instead implemented as ad-hoc code in the event handlers of user interface widgets. A significant fraction of the application programming effort is devoted to such code. The application defect count is impacted even further.
Our hypothesis is that a large part of the functionality of a user interface is implemented as reusable generic algorithms. We study a declarative approach to programming user interfaces, where a concise “property model” captures the essential properties of the data manipulated by a user interface. Various user interface features are generic algorithms parametrized by a property model.
The project group is Jaakko Järvi, John Freeman, and Jacob Smith, in collaboration with Mat Marcus and Sean Parent from the Adobe Software Technology Lab.
For further information, please contact jarvi@cs.tamu.edu.
The approach is introduced in the paper “Property models: from incidental algorithms to reusable components,” which is an industrial strength implementation that is available from Adobe Software Libraries (ASL).
ASL provides an open source property model library and other supporting functionality that, together, enable full-scale UI implementations. Further, ASL offers two applications for experimenting with property models: Adobe Begin, which is a graphical front-end for the Adam and Eve engines; and, PM Eval, which is a command-line program for property models.
This page makes additional software artifacts available. This includes a prototype of the “core engine” for the property model library that can replace the one currently use in Adobe Begin and PM Eval. It is distributed as a set of patches over the code of these two applications.
Installing property models requires that you have Adobe's Begin software installed, in addition to the Boost libraries.
The Adobe software must be patched. Installations instructions follow:
Within adobe_root (the directory created by the net install script from Adobe), execute the following:
$ patch -p1 < propmod.patch $ cd adobe_source_libraries $ bjamNotes:When building the patched library, it will fail on the test for pmeval because default initialization is not done the same way. Default initialization is only used when (constant, input, and interface) variables are not explicitly given initializers.
Only the command line interface for the Adam library, pmeval, works with this patch. The graphical interface, Adobe Begin, should be available later this week.