Property models: from incidental algorithms to reusable components.
ABSTRACT A user interface, such as a dialog, assists a user in synthesising a set of values, typically parameters for a command object. Code for "command parameter synthesis" is usually application-specific and non-reusable, consisting of validation logic in event handlers and code that controls how values of user interface elements change in response to a user's actions, etc. These software artifacts are incidental - they are not explicitly designed and their implementation emerges from a composition of locally defined behaviors. This article presents property models to capture explicitly the algorithms, validation, and interaction rules, arising from command parameter synthesis. A user interface's behavior can be derived from a declarative property model specification, with the assistance of a component akin to a constraint solver. This allows multiple interfaces, both human and programmatic, to reuse a single model along with associated validation logic and widget activation logic. The proposed technology is deployed in large commercial software application suites. Where we have applied property models, we have measured significant reductions in source-code size with equivalent or increased functionality; additional levels of reuse are apparent, both within single applications, and across product lines; and applications are able to provide more uniform access to functionality. There is potential for wide adoption: by our measurements command parameter synthesis comprises roughly one third of the code and notably more of the defects in desktop applications.
- [Show abstract] [Hide abstract]
ABSTRACT: This report describes some properties of a class of multi-way dataflow constraint systems with hierarchies. This class arises in realizing property models, an approach that enables a high level of reuse in programming user interfaces. We prove that a constraint system in this class has a unique solution if one exists; define a class of changes in a constraint hierarchy that are guaranteed to keep the solution of the constraint system unchanged; and deter- mine the extent to which other changes in a constraint hierarchy affect the solution of the constraint system.
Conference Paper: HotDrink: a library for web user interfaces[Show abstract] [Hide abstract]
Article: A Survey on Reactive Programming[Show abstract] [Hide abstract]