# Context-Aware End-User Development Review
## 4 Application Building Techniques
### Select/Demonstrate Rules  
Select/demonstrate rules [40] is a well-known approach for programming where end-users define condition \(\rightarrow\) action rules by selecting conditions/actions/services/commands from UI elements such as lists, menus, dialogs, widgets. Some of the previous approaches adopted the select rules method to augment the usability, e.g., Persona [51], OPEN [54], S-APIs [63], SITE [71], and EasyContext [77]. Persona allows end-users to select generated preferences from an options list (e.g., yes/no). OPEN extends its ontology language for non-technical users proposing a UI for modifying and parameterizing rules. S-APIs restrict the creation of flows (called goal-oriented applications) to a sequence of commands that define rules, e.g., if location changes, and I arrive home, then turn on the TV. SITE proposes a UI (based on LabVIEW) to abstract its language for defining fuzzy rules. The EasyContext Web tool presents actions and contextual clauses in cards (card metaphor). The cards are divided into categories (conditions, actions), and the cards' content is interactive, presenting dynamic values according to user inputs. In the following, we present other approaches that adopt the condition \(\rightarrow\) action rule pattern for a simplified specification of applications. Context Studio, presented by [PERSON] et al. [86], part of a context-aware framework [47], is a tool to program applications in small-screen mobile devices. Context Studio is a customization component to define rules based on input context (e.g., location, environment sound, RFID-based commands) and actions (e.g., set profile Silent, call a contact). According to a vocabulary hierarchy, it adopts the folder-file UI metaphor: context and actions as folders and subfolders. Then, a user navigates through the hierarchy and selects triggers and actions to configure rules. The UI allows us to create, edit, copy, activate/deactivate and delete rules and include visual icons representing rule states and options/menus to facilitate the navigation. Atomate, presented by [PERSON] et al. [53], is a tool for defining context-aware behaviors (rules) for web-based personal information management. The tool integrates web feeds to generate/update a world model that enables context-reactive automation based on rules. The world model includes information about the physical world (e.g., people, places, events), digital items (e.g., messages, articles, tweets, e-mails), and system information (i.e., rules, predicates, data sources). End-users can configure rules via direct manipulation in a UI based on a global address book metaphor representing the world model. The UI presents info by type, e.g., people, places, and events. Then, it allows us to select the desired type and define rules. The UI also allows us to explore the world model, allowing us to assign/edit properties and merge redundant items. Context Cloud, presented by [PERSON] et al. [60], is a platform to build context-aware applications for end-users. The platform provides a web front-end to facilitate programming, supported by a proposed methodology to guide situations identification and parameterization. The web front-end allows specifying providers, context models, mappings, areas (polygons on Google Maps), and rules. It consists of widgets and dialogs to define rules with priority, operations (e.g., equals, greater than), and a calendar option to define date ranges. [PERSON] et al. also improve Context Cloud UI to target domain-expert development [68]. The tool allows virtual geographical areas creation (indoors or outdoors) and proximity definition. The tool also includes widgets to specify date/time and a WYSIWYG editor for locales (Spanish, French, and English) notifications. Sensor service binder (SSB), presented by [PERSON] et al. [62], is a visual UI to orchestrate context-aware services in-home network systems (HNS). The aim is to facilitate end-users building applications based on Web technology implemented in their HNS service-oriented framework.